<?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>148472</bug_id>
          
          <creation_ts>2015-08-26 02:06:32 -0700</creation_ts>
          <short_desc>Remove all uses of PassRefPtr in WebCore/svg</short_desc>
          <delta_ts>2015-09-09 19:16:38 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1120892</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-26 02:06:32 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120893</commentid>
    <comment_count>1</comment_count>
      <attachid>259940</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-26 02:07:14 -0700</bug_when>
    <thetext>Created attachment 259940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120916</commentid>
    <comment_count>2</comment_count>
      <attachid>259944</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-26 05:06:18 -0700</bug_when>
    <thetext>Created attachment 259944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121175</commentid>
    <comment_count>3</comment_count>
      <attachid>259944</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-26 20:17:28 -0700</bug_when>
    <thetext>Comment on attachment 259944
Patch

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

&gt; Source/WebCore/dom/Node.cpp:1874
&gt; +    if (!targetNode-&gt;EventTarget::addEventListener(eventType, WTF::move(listener), useCapture))

This is not correct because we reference listener later in this function (line 1892) and listener will be nullified on return of the implicitly invoked RefPtr move constructor. We should use listener.copyRef() here.

&gt; Source/WebCore/html/ImageDocument.cpp:242
&gt; +            window-&gt;addEventListener(&quot;resize&quot;, WTF::move(listener), false);

Similarly, we should use listener.copyRef() here.

&gt; Source/WebCore/html/shadow/MediaControlsApple.cpp:512
&gt; +    m_closedCaptionsContainer-&gt;addEventListener(eventNames().wheelEvent, WTF::move(listener), true);

Ditto.

&gt; Source/WebCore/html/shadow/MediaControlsApple.cpp:519
&gt; +    document().addEventListener(eventNames().clickEvent, WTF::move(listener), true);

Ditto.

&gt; Source/WebCore/html/shadow/MediaControlsApple.cpp:520
&gt; +    addEventListener(eventNames().clickEvent, WTF::move(listener), true);

Ditto.

&gt; Source/WebCore/page/DOMWindow.cpp:1697
&gt; +    if (!EventTarget::addEventListener(eventType, WTF::move(listener), useCapture))

We may want to consider using listener.copyRef() here to make using listener after this line less error prone given the length of this function.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:90
&gt; +        builder-&gt;appendEffectToEffectReferences(WTF::move(effect), element.renderer());

This is not correct since we dereference effect below. We should use effect.copyRef() here.

&gt; Source/WebCore/svg/SVGElement.cpp:579
&gt; +    if (!Node::addEventListener(eventType, WTF::move(listener), useCapture))

Similarly, we should use listener.copyRef() here.

&gt; Source/WebCore/svg/SVGElement.cpp:589
&gt; +        bool result = instance-&gt;Node::addEventListener(eventType, WTF::move(listener), useCapture);

Although not strictly necessary, I suggest we use listener.copyRef() here as well.

&gt; Source/WebCore/svg/SVGPathElement.cpp:362
&gt; +            appendSVGPathByteStreamFromSVGPathSeg(WTF::move(m_pathSegList.value.last()), m_pathByteStream.get(), UnalteredParsing);

We should use copyRef() here.

&gt; Source/WebCore/svg/SVGTRefElement.cpp:252
&gt; +        m_targetListener-&gt;attach(WTF::move(target));

This is not correct and will cause target.get() to return nullptr on line 254 because target will be nullified on return of the implicitly invoked RefPtr move constructor. We should use target.copyRef().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121209</commentid>
    <comment_count>4</comment_count>
      <attachid>259944</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-26 22:38:06 -0700</bug_when>
    <thetext>Comment on attachment 259944
Patch

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

&gt;&gt; Source/WebCore/dom/Node.cpp:1874
&gt;&gt; +    if (!targetNode-&gt;EventTarget::addEventListener(eventType, WTF::move(listener), useCapture))
&gt; 
&gt; This is not correct because we reference listener later in this function (line 1892) and listener will be nullified on return of the implicitly invoked RefPtr move constructor. We should use listener.copyRef() here.

Nice point out ! Fixed. Let me take care of this in upcoming patch.

&gt;&gt; Source/WebCore/html/ImageDocument.cpp:242
&gt;&gt; +            window-&gt;addEventListener(&quot;resize&quot;, WTF::move(listener), false);
&gt; 
&gt; Similarly, we should use listener.copyRef() here.

done.

&gt;&gt; Source/WebCore/html/shadow/MediaControlsApple.cpp:512
&gt;&gt; +    m_closedCaptionsContainer-&gt;addEventListener(eventNames().wheelEvent, WTF::move(listener), true);
&gt; 
&gt; Ditto.

done.

&gt;&gt; Source/WebCore/html/shadow/MediaControlsApple.cpp:520
&gt;&gt; +    addEventListener(eventNames().clickEvent, WTF::move(listener), true);
&gt; 
&gt; Ditto.

This line is last use of *listener*. Should we use copyRef() here as well ?

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:589
&gt;&gt; +        bool result = instance-&gt;Node::addEventListener(eventType, WTF::move(listener), useCapture);
&gt; 
&gt; Although not strictly necessary, I suggest we use listener.copyRef() here as well.

*listener* is used in this function lastly. Isn&apos;t it WTF::move() better ?

&gt;&gt; Source/WebCore/svg/SVGPathElement.cpp:362
&gt;&gt; +            appendSVGPathByteStreamFromSVGPathSeg(WTF::move(m_pathSegList.value.last()), m_pathByteStream.get(), UnalteredParsing);
&gt; 
&gt; We should use copyRef() here.

done.

&gt;&gt; Source/WebCore/svg/SVGTRefElement.cpp:252
&gt;&gt; +        m_targetListener-&gt;attach(WTF::move(target));
&gt; 
&gt; This is not correct and will cause target.get() to return nullptr on line 254 because target will be nullified on return of the implicitly invoked RefPtr move constructor. We should use target.copyRef().

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121210</commentid>
    <comment_count>5</comment_count>
      <attachid>260034</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-26 22:38:39 -0700</bug_when>
    <thetext>Created attachment 260034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122116</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-08-30 20:14:07 -0700</bug_when>
    <thetext>dydz, could you take a look again ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122582</commentid>
    <comment_count>7</comment_count>
      <attachid>260034</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-01 10:49:14 -0700</bug_when>
    <thetext>Comment on attachment 260034
Patch

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

&gt; Source/WebCore/dom/EventListenerMap.cpp:190
&gt; +        target-&gt;addEventListener(eventType, WTF::move((*listenerVector)[i].listener), (*listenerVector)[i].useCapture);

I’m concerned about this. Is this already how the code behaved, or is this new behavior? I don’t think a behavior change should be mixed in with the rest of the patch. At first this should be copyRef and then we could use WTF::move to optimize and think through whether that’s OK.

&gt; Source/WebCore/dom/EventTarget.cpp:79
&gt;      return ensureEventTargetData().eventListenerMap.add(eventType, listener, useCapture);

Do we need WTF::move here to avoid reference count churn?

&gt; Source/WebCore/dom/Node.cpp:1910
&gt;      return tryAddEventListener(this, eventType, listener, useCapture);

Do we need WTF::move here to avoid reference count churn?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5045
&gt; +bool HTMLMediaElement::addEventListener(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; listener, bool useCapture)

Do we need to add some WTF::move to this function to avoid reference count churn?

&gt; Source/WebCore/svg/SVGPathUtilities.cpp:142
&gt; +bool appendSVGPathByteStreamFromSVGPathSeg(RefPtr&lt;SVGPathSeg&gt;&amp;&amp; pathSeg, SVGPathByteStream* result, PathParsingMode parsingMode)

I think we need WTF::move below on the call to append to avoid adding reference count churn.

&gt; Source/WebCore/svg/SVGTRefElement.cpp:89
&gt; +void SVGTRefTargetEventListener::attach(RefPtr&lt;Element&gt;&amp;&amp; target)

Don’t we need WTF::move on the assignment to m_target below?

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:67
&gt;      RefPtr&lt;FilterEffect&gt; effect = prpEffect;

We need WTF::move here. Also seems this function is not taking advantage of the fact that we can take ownership of the effect passed in.

It’s not good to leave things named with a “prp” prefix when they are not using PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122727</commentid>
    <comment_count>8</comment_count>
      <attachid>260399</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-01 18:42:58 -0700</bug_when>
    <thetext>Created attachment 260399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122728</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-01 18:44:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 260034 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260034&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/EventListenerMap.cpp:190
&gt; &gt; +        target-&gt;addEventListener(eventType, WTF::move((*listenerVector)[i].listener), (*listenerVector)[i].useCapture);
&gt; 
&gt; I’m concerned about this. Is this already how the code behaved, or is this
&gt; new behavior? I don’t think a behavior change should be mixed in with the
&gt; rest of the patch. At first this should be copyRef and then we could use
&gt; WTF::move to optimize and think through whether that’s OK.
&gt; 
&gt; &gt; Source/WebCore/dom/EventTarget.cpp:79
&gt; &gt;      return ensureEventTargetData().eventListenerMap.add(eventType, listener, useCapture);
&gt; 
&gt; Do we need WTF::move here to avoid reference count churn?
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:1910
&gt; &gt;      return tryAddEventListener(this, eventType, listener, useCapture);
&gt; 
&gt; Do we need WTF::move here to avoid reference count churn?
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5045
&gt; &gt; +bool HTMLMediaElement::addEventListener(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; listener, bool useCapture)
&gt; 
&gt; Do we need to add some WTF::move to this function to avoid reference count
&gt; churn?
&gt; 
&gt; &gt; Source/WebCore/svg/SVGPathUtilities.cpp:142
&gt; &gt; +bool appendSVGPathByteStreamFromSVGPathSeg(RefPtr&lt;SVGPathSeg&gt;&amp;&amp; pathSeg, SVGPathByteStream* result, PathParsingMode parsingMode)
&gt; 
&gt; I think we need WTF::move below on the call to append to avoid adding
&gt; reference count churn.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGTRefElement.cpp:89
&gt; &gt; +void SVGTRefTargetEventListener::attach(RefPtr&lt;Element&gt;&amp;&amp; target)
&gt; 
&gt; Don’t we need WTF::move on the assignment to m_target below?
&gt; 
&gt; &gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:67
&gt; &gt;      RefPtr&lt;FilterEffect&gt; effect = prpEffect;
&gt; 
&gt; We need WTF::move here. Also seems this function is not taking advantage of
&gt; the fact that we can take ownership of the effect passed in.
&gt; 
&gt; It’s not good to leave things named with a “prp” prefix when they are not
&gt; using PassRefPtr.

Because this is first patch to reduce uses of PassRefPtr in argument, I had unclear understanding in some cases. If there is still wrong changes, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122826</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-02 09:28:58 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Because this is first patch to reduce uses of PassRefPtr in argument, I had
&gt; unclear understanding in some cases. If there is still wrong changes, please
&gt; let me know.

I won’t be able to answer all the questions from just reading the code. We may have to actually test things to make sure we are choosing the correct idioms before we make changes across the entire project!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122827</commentid>
    <comment_count>11</comment_count>
      <attachid>260399</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-02 09:34:53 -0700</bug_when>
    <thetext>Comment on attachment 260399
Patch

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

Some initial comments.

&gt; Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp:216
&gt; +    bool success = AudioNode::addEventListener(eventType, listener.copyRef(), useCapture);

This is not quite right. The old code passed the listener in without churning the reference count; that’s what passing a PassRefPtr to another function that also takes a PassRefPtr does. But the new code is doing a copyRef; the whole point of taking RefPtr&amp;&amp; is to be able to move the thing in and take ownership without churning the reference count. There are two ways to do this:

1) Use Ref&amp;&amp; or RefPtr&amp;&amp; so we can avoid churning the reference count.
2) Use &amp; or * so the caller doesn’t have to already hold the thing in a smart pointer.

But we should never take a Ref&amp;&amp; or RefPtr&amp;&amp; and then decide to unconditionally do a copyRef. That’s wasteful and even slightly misleading.

I’m pretty sure we need to use WTF::move, not copyRef, here. Or maybe we can pass without an explicit WTF::move. I’m not sure about that. What I do know is that we want the compiled code for this function to not change there reference count of listener at all.

&gt; Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp:278
&gt; +    bool success = AudioNode::addEventListener(eventType, listener.copyRef(), useCapture);

Same thing.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5051
&gt;          return Node::addEventListener(eventType, listener, useCapture);

Will this do the right thing without a call to WTF::move or not? We need to know before we land this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123021</commentid>
    <comment_count>12</comment_count>
      <attachid>260399</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-02 19:29:24 -0700</bug_when>
    <thetext>Comment on attachment 260399
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp:216
&gt;&gt; +    bool success = AudioNode::addEventListener(eventType, listener.copyRef(), useCapture);
&gt; 
&gt; This is not quite right. The old code passed the listener in without churning the reference count; that’s what passing a PassRefPtr to another function that also takes a PassRefPtr does. But the new code is doing a copyRef; the whole point of taking RefPtr&amp;&amp; is to be able to move the thing in and take ownership without churning the reference count. There are two ways to do this:
&gt; 
&gt; 1) Use Ref&amp;&amp; or RefPtr&amp;&amp; so we can avoid churning the reference count.
&gt; 2) Use &amp; or * so the caller doesn’t have to already hold the thing in a smart pointer.
&gt; 
&gt; But we should never take a Ref&amp;&amp; or RefPtr&amp;&amp; and then decide to unconditionally do a copyRef. That’s wasteful and even slightly misleading.
&gt; 
&gt; I’m pretty sure we need to use WTF::move, not copyRef, here. Or maybe we can pass without an explicit WTF::move. I’m not sure about that. What I do know is that we want the compiled code for this function to not change there reference count of listener at all.

Now I pretty feel that we should very take care of purging PassRefPtr in argument. To my understanding we should use copyRef() when the argument is used in multiple lines. If the argument is just passed to a new function or code calling RefPtr::release(), we need to pass the ownership to new function using WTF::move(),

for example,

void foo(RefPtr&lt;EventListener&gt;&amp;&amp; listener)
{
    aVar(listener.copyRef());
    ...
    bVar(listener.copyRef()); =&gt; I wonder what should we use in last use of function. copyRef() or WTF::move() ?
}


However we have to move ownership of the argument when function just passes the argument to new function even when RefPtr::release() is not used as below, right ?

void foo(RefPtr&lt;EventListener&gt;&amp;&amp; listener)
{
    aVar(WTF::move(listener));
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123022</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-02 19:33:18 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt;     bVar(listener.copyRef()); =&gt; I wonder what should we use in last use of
&gt; function. copyRef() or WTF::move() ?

Should use WTF::move, I think.

&gt; However we have to move ownership of the argument when function just passes
&gt; the argument to new function even when RefPtr::release() is not used as
&gt; below, right ?
&gt; 
&gt; void foo(RefPtr&lt;EventListener&gt;&amp;&amp; listener)
&gt; {
&gt;     aVar(WTF::move(listener));
&gt; }

I believe so, but I am not sure; might work without explicit WTF::move. Best way to find out would be to write some unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123026</commentid>
    <comment_count>14</comment_count>
      <attachid>260475</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-02 19:44:43 -0700</bug_when>
    <thetext>Created attachment 260475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123027</commentid>
    <comment_count>15</comment_count>
      <attachid>260475</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-02 19:49:37 -0700</bug_when>
    <thetext>Comment on attachment 260475
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5054
&gt; +    if (!Node::addEventListener(eventType, listener.copyRef(), useCapture))

I wonder what should we use here. Because here is last use of *listener*.

&gt; Source/WebCore/html/ImageDocument.cpp:243
&gt; +        imageElement-&gt;addEventListener(&quot;click&quot;, WTF::move(listener), false);

I believe we have to use WTF::move() since listener is released in original code.

&gt; Source/WebCore/html/shadow/MediaControlsApple.cpp:520
&gt; +    addEventListener(eventNames().clickEvent, listener.copyRef(), true);

ditto. Last use.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:94
&gt; +        builder-&gt;add(element.result(), WTF::move(effect));

.release() should be replaced with WTF::move() in order to pass an ownership.

&gt; Source/WebCore/svg/SVGPathUtilities.cpp:149
&gt; +    appendedItemList.append(pathSeg.copyRef());

Should we pass ownership of *pathSeg* when appending RefPtr&amp;&amp; ?

&gt; Source/WebCore/svg/SVGTRefElement.cpp:97
&gt; +    m_target = WTF::move(target);

I&apos;m not sure if we have to use WTF::move(). Isn&apos;t copyRef() correct ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123046</commentid>
    <comment_count>16</comment_count>
      <attachid>260480</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-02 20:22:49 -0700</bug_when>
    <thetext>Created attachment 260480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123047</commentid>
    <comment_count>17</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-02 20:23:19 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt;     bVar(listener.copyRef()); =&gt; I wonder what should we use in last use of
&gt; &gt; function. copyRef() or WTF::move() ?
&gt; 
&gt; Should use WTF::move, I think.
&gt; 
&gt; &gt; However we have to move ownership of the argument when function just passes
&gt; &gt; the argument to new function even when RefPtr::release() is not used as
&gt; &gt; below, right ?
&gt; &gt; 
&gt; &gt; void foo(RefPtr&lt;EventListener&gt;&amp;&amp; listener)
&gt; &gt; {
&gt; &gt;     aVar(WTF::move(listener));
&gt; &gt; }
&gt; 
&gt; I believe so, but I am not sure; might work without explicit WTF::move. Best
&gt; way to find out would be to write some unit tests.

Ok, let me prepare some unit tests for this issue soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124512</commentid>
    <comment_count>18</comment_count>
      <attachid>260480</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-08 18:58:04 -0700</bug_when>
    <thetext>Comment on attachment 260480
Patch

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

Looks like we missed something in Node.cpp according to iOS. Looks generally good but please consider my comments.

&gt; Source/WebCore/dom/EventListenerMap.cpp:190
&gt; +        target-&gt;addEventListener(eventType, ((*listenerVector)[i].listener).copyRef(), (*listenerVector)[i].useCapture);

I don’t think we need those extra parentheses.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5051
&gt; +        return Node::addEventListener(eventType, listener.copyRef(), useCapture);

This should be WTF::move, not copyRef.

&gt; Source/WebCore/page/DOMWindow.cpp:1697
&gt; +    if (!EventTarget::addEventListener(eventType, listener.copyRef(), useCapture))

This should be WTF::move, not copyRef. None of the code below uses listener.

&gt; Source/WebCore/svg/SVGElement.cpp:574
&gt; +bool SVGElement::addEventListener(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; prpListener, bool useCapture)

This could just be named listener. No need for the prpListener name.

&gt; Source/WebCore/svg/SVGElement.cpp:576
&gt;      RefPtr&lt;EventListener&gt; listener = prpListener;

Don’t need this local.

&gt; Source/WebCore/svg/SVGPathUtilities.cpp:149
&gt; +    appendedItemList.append(pathSeg.copyRef());

Seems to me that this should be WTF::move, not copyRef.

&gt; Source/WebCore/svg/SVGTRefElement.cpp:68
&gt; +    void attach(RefPtr&lt;Element&gt;&amp;&amp; target);

I think it’s a bit peculiar that this is RefPtr&lt;Element&gt;&amp;&amp; instead of just Element&amp;.

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:65
&gt; +void SVGFilterBuilder::appendEffectToEffectReferences(RefPtr&lt;FilterEffect&gt;&amp;&amp; filterEffect, RenderObject* object)

This should just be named &quot;effect&quot;.

&gt; Source/WebCore/svg/graphics/filters/SVGFilterBuilder.cpp:67
&gt; +    RefPtr&lt;FilterEffect&gt; effect = WTF::move(filterEffect);

No need for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124570</commentid>
    <comment_count>19</comment_count>
      <attachid>260480</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-08 23:40:01 -0700</bug_when>
    <thetext>Comment on attachment 260480
Patch

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:5051
&gt;&gt; +        return Node::addEventListener(eventType, listener.copyRef(), useCapture);
&gt; 
&gt; This should be WTF::move, not copyRef.

Right. Nice catch !

&gt;&gt; Source/WebCore/page/DOMWindow.cpp:1697
&gt;&gt; +    if (!EventTarget::addEventListener(eventType, listener.copyRef(), useCapture))
&gt; 
&gt; This should be WTF::move, not copyRef. None of the code below uses listener.

Thanks.

&gt;&gt; Source/WebCore/svg/SVGTRefElement.cpp:68
&gt;&gt; +    void attach(RefPtr&lt;Element&gt;&amp;&amp; target);
&gt; 
&gt; I think it’s a bit peculiar that this is RefPtr&lt;Element&gt;&amp;&amp; instead of just Element&amp;.

To change to use Element&amp;, it looks there are some additional changes. I would like to modify this in new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124571</commentid>
    <comment_count>20</comment_count>
      <attachid>260844</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-08 23:40:49 -0700</bug_when>
    <thetext>Created attachment 260844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124585</commentid>
    <comment_count>21</comment_count>
      <attachid>260848</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-09 01:31:10 -0700</bug_when>
    <thetext>Created attachment 260848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124592</commentid>
    <comment_count>22</comment_count>
      <attachid>260850</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-09 02:00:53 -0700</bug_when>
    <thetext>Created attachment 260850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124809</commentid>
    <comment_count>23</comment_count>
      <attachid>260850</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-09 19:16:33 -0700</bug_when>
    <thetext>Comment on attachment 260850
Patch

Clearing flags on attachment: 260850

Committed r189565: &lt;http://trac.webkit.org/changeset/189565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124810</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-09 19:16:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259940</attachid>
            <date>2015-08-26 02:07:14 -0700</date>
            <delta_ts>2015-08-26 05:06:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150826180703.patch</filename>
            <type>text/plain</type>
            <size>18663</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM5Zjc5ZDA2Mjk0MzY1
MjlkMjJjNmU3ZGIzN2FiNWRmODY0ZGU4OC4uNWRlYTI1YTUxODc1YjEzOGUzNTA4ZjllNjRiOTE4
YmEyNTIyNDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE1LTA4LTI2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0
ciBpbiBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29y
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBk
b20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRv
bS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoVXRpbGl0aWVzLmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVu
Y2VzKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6
CisKIDIwMTUtMDgtMjUgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBB
WDogRW5hYmxlIGFjY2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy5odG1sIHRlc3QgZm9yIG1hYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDcyM2I5ODhkOTRlYTE4YTllNDg4MGEzNDZkZDU5
ZTMxNWZkNDUzZmQuLmY4YTYzZjkzMzVjZjU0ODVlMTMzNDg4ZjA2MjgxZjc4MWY2OGY5Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkKICAgICB9CiB9CiAKLWJvb2wgQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUp
Citib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVu
dExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIGlmIChzdWNj
ZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZW5kZWRFdmVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5oCmluZGV4IDY4MGFmNDY3ODBjN2JmNzFiZDM2YjEzMzk2YmYxZmIzYzcwZDZmYjEuLjA5
NWE3NTk5M2M4MGVhZThmZDgzNzgwOWJiMjIzMTM3NDc3MzllZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgZG91
YmxlIFVua25vd25UaW1lOwogCiBwcml2YXRlOgotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwg
Ym9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmNwcAppbmRleCBmZWZkNmM2OWQyYjc1ZDM2NWYwNWI2ZjQzYTg4OTNmNzU5
ZDlhY2I4Li40ZWMyYjA3YjFlMDYxNDJjMGFjOGY5ZjIzZjBkOTE0NWNiYTc5YjRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6
bGF0ZW5jeVRpbWUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCk7CiB9CiAKLWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTY3JpcHRQcm9jZXNzb3JO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29s
IHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS5hdWRpb3Byb2Nlc3NFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggOTYxZjEyMTJhMjRiODhmMGU1
MzAxYjVjNzZiY2IyNzdhMGU1NjNmZS4uMWE2YzIyMmI0NjUyNjUwN2Q1Yjg3MDI3OTcyZGQxYmVi
OWFhNjQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCi0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29s
IHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAxZTUxNTc3NWM1NjJjNTNhZTFiZDc1Mzg1
MDNiMzFmNzcxNmFmYjIxLi5lMTg5NDdlNzgwMjE0YzI0ODNlNDdjMWJiNTY0MmY0Y2I4MDMwOWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBF
dmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCitib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKIHsKICAgICByZXR1cm4gZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0
ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCmluZGV4IDg2ZmUzYmM3Yzg2OGI1NTgyY2Y1ODk0ZmU5MGYwNmFkOWVk
YzA5YWYuLmVmODhiM2RiOTdmZmZlOGNmZThjNTI1ZjA1OWJjMTU3ZmY4ZTZlYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwogICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VQ
b3J0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1
cmUpOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcAppbmRleCAyZGJhYmU1OTc1NjIwOWFkZGQ2ZjIwNWY4MGY1YmY2ZDRmZjBmMDI2Li40Zjc2
MDg1MTRlOGMwMjIyMWM3NGU2MzA4NTI5Mzk2ZThhY2ZhOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRBcnJheT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udAog
ICAgIHJldHVybiBwb3J0QXJyYXk7CiB9CiAKLWJvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChsaXN0ZW5lciAm
JiBsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1l
c3NhZ2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5k
ZXggMTFmY2Y1NzNlYWNhYzMwM2Y4Y2ZkYmNmMjEzZjcwYzk2NTQ2NmE3MS4uNjM3M2M1NTRlNzE5
ZjI2NmU4ZDMyZWFjMDkxNGY0N2YzODU0Njk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgK
QEAgLTkzLDcgKzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBBIHBvcnQg
Z2V0cyBuZXV0ZXJlZCB3aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3IG93bmVyIHZpYSBw
b3N0TWVzc2FnZSgpLgogICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9lbnRh
bmdsZWRDaGFubmVsOyB9CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVz
ZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1lc3Nh
Z2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBlZWI5
MmE2YWQ5MzhiZDg1MjMxZmRiNTMwYmVkODk5ZTA4Y2Y1ZWFhLi4zNzZkNzliYzUyMGNiYzkxNzgw
YTgxMjIxMDM2YTRiNzZiYjIyMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xOTA1LDcgKzE5MDUs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXRO
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wg
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0
dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5MjllY2U0MmM4ZWI3YzJiNWE0MzhlNTlmNWUxNzc2
YWIxODlkMDY1Li4yMTgyYTE0YTNhOTM1ZGZjYjVlYzc3NGVjYzAzNjUzMDM4ZjljMGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOyAvLyBJbXBsZW1lbnRlZCBpbiBEb2N1bWVudC5oCiAKLSAg
ICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKIAogICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggOGJkM2FkNWQzMmZkYTczYWMwMjI1NDRk
Yjg0OWY0NjNjZmQxZGZiOC4uNjU4MzNmMWIzZDdlMDAyNWFhMjgxOTM5NzA3NTFhNTZjYmE5OWY5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01MDQyLDcg
KzUwNDIsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpkaXNwYXRjaEV2ZW50
KGV2ZW50KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChldmVudFR5cGUgIT0g
ZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50
KQogICAgICAgICByZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3Rl
bmVyLCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggMWIzOWE1N2YxZmJlMzg0YjhmY2VkNzJmMTQ3MjFjMzA4MWFmNjRjMS4uMjJjNDI5MzBiZjhj
MWQ0ODg1OGNmMTBlODBjMDRjNTg5NmQzZDIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKQEAgLTMzNSw3ICszMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgd2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKCk7Ci0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFi
bGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBm
ZTRiOWFmMDI1OTIyN2IzOTVjMTU2ZWYzOTYwNTMyOTM3OTZjZDM4Li44YTA1Yjg0MDQ0OWEyMzI0
MTFiZGYzZjM0ZWNlMWQ4MmE4ZWI3YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC0xNjkyLDcgKzE2OTIsNyBAQCBzdGF0aWMgdm9pZCBkaWRBZGRTdG9yYWdlRXZlbnRMaXN0ZW5l
cihET01XaW5kb3cqIHdpbmRvdykKICAgICB3aW5kb3ctPnNlc3Npb25TdG9yYWdlKElHTk9SRV9F
WENFUFRJT04pOwogfQogCi1ib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGY2ZDI4NWNiZTM0MDY4MzA4ZmYxODkw
MzYzODNlZThkMDhjYzZkMGMuLjQ0ZGM2ODY1NmU5Yjc5ODUzYzE0ZjExOGI5YTNmZGM5MmJiYjAw
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjczLDcgKzI3Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBFdmVudHMKICAgICAgICAgLy8gRXZlbnRUYXJnZXQg
QVBJCi0gICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1
cmUpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVz
ZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wg
dXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVu
dExpc3RlbmVycygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXgg
NTFmYzZmZWZiZmNlNDkyNzYxMjhjYzQ5NDc1MDJmNDVlYzMzMzJhYi4uYzM3ZTk0YTg5NmY1Mzk4
MTI1ZjU0OGIwYTFlMDAwZDcyM2ExZThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApA
QCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVz
b3VyY2VzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IHBycExpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNWR0VsZW1lbnQ6
OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBwcnBMaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHBycExpc3RlbmVyOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgKaW5kZXggMWViZjhjY2U2N2FlODA0MDM4YjU1ZDY5NTU4YzQyYWIzYmFiNGY1
OC4uOTA1M2ViY2NkNWQ5NDQ4MGIwNDE0NTkxNzZhODAxODg0NzI1ZjVkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDEsNyArMTQw
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291
cmNlcygpOwogCi0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNGb2N1c0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAppbmRleCA4ZmE2MjgwYTc1
MGE3YTdhNGU2OWJjMGI4NTE4ZTQzODMxMTZjMzk3Li5mM2RhYjYyNjYxOWI3YjUzYTVlNTMwNWZk
ZjM0OWNhMjQxY2E1MDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3Bw
CkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1Bh
dGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBsaXN0LCBTVkdQYXQKICAgICByZXR1cm4g
b2s7CiB9CiAKLWJvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhQYXNz
UmVmUHRyPFNWR1BhdGhTZWc+IHBhdGhTZWcsIFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQsIFBh
dGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKK2Jvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1G
cm9tU1ZHUGF0aFNlZyhSZWZQdHI8U1ZHUGF0aFNlZz4gcGF0aFNlZywgU1ZHUGF0aEJ5dGVTdHJl
YW0qIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQogewogICAgIEFTU0VSVChy
ZXN1bHQpOwogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU0MTIgLSBJbXBsZW1lbnQgbm9ybWFsaXplZCBwYXRoIHNlZ21lbnQgbGlzdHMhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAppbmRleCBiMDc4YTVlNzEwZGY0ZTQyZjBh
NWYwZjgyMTM0YzEwOTg1YWZjOGY0Li40MWE4YmIxMGI4NjAzM2NmZTQzNWU2YzAzZDE4NmRlMTQ1
OWFmMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKQEAgLTM4LDcgKzM4
LDcgQEAgYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIFBh
dGgmKTsKIAogLy8gU1ZHUGF0aFNlZ0xpc3QvU3RyaW5nIC0+IFNWR1BhdGhCeXRlU3RyZWFtCiBi
b29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0
aFNlZ0xpc3QmLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7Ci1ib29sIGFw
cGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
PiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01vZGUpOworYm9vbCBhcHBlbmRTVkdQ
YXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJlZlB0cjxTVkdQYXRoU2VnPiwgU1ZHUGF0aEJ5
dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01vZGUpOwogYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFt
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5n
TW9kZSk7CiAKIC8vIFNWR1BhdGhCeXRlU3RyZWFtL1NWR1BhdGhTZWdMaXN0IC0+IFN0cmluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZTNmYWQ4ZDU5MGM1NGRlNmJl
OTQ2NzljOTU3MTdiOTg1YWM3NGEyMS4uZTk4YmNkMzIwNmFkMWIwOGM1YTZhMjFkMDY5MWVmZTZj
NTU4ZDQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gU1ZHVFJl
ZlRhcmdldEV2ZW50TGlzdGVuZXJUeXBlID8gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHVFJlZlRhcmdl
dEV2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcikgOiBudWxscHRyOwogICAgIH0KIAotICAgIHZvaWQg
YXR0YWNoKFBhc3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KTsKKyAgICB2b2lkIGF0dGFjaChSZWZQ
dHI8RWxlbWVudD4gdGFyZ2V0KTsKICAgICB2b2lkIGRldGFjaCgpOwogICAgIGJvb2wgaXNBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAKQEAgLTg2LDcgKzg2LDcg
QEAgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVy
KFNWR1RSZWZFbGVtZW50JiB0cmVmRWxlbWUKIHsKIH0KIAotdm9pZCBTVkdUUmVmVGFyZ2V0RXZl
bnRMaXN0ZW5lcjo6YXR0YWNoKFBhc3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KQordm9pZCBTVkdU
UmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6YXR0YWNoKFJlZlB0cjxFbGVtZW50PiB0YXJnZXQpCiB7
CiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkpOwogICAgIEFTU0VSVCh0YXJnZXQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmNwcAppbmRleCAxOTMxMzIxNGU5YjJhN2YxMzNhNjg5ZTViYjViYTFjMDZlNDIw
M2MyLi42Zjc1OWY3NWVlNDE3NTE2MTZjZTA5MmIzMWZlOTUzOGNkZDA5MjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBGaWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6
OmdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4g
bV9uYW1lZEVmZmVjdHMuZ2V0KGlkKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBl
bmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHBycEVm
ZmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVu
ZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcnBFZmZlY3Qs
IFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dCA9IHBycEVmZmVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IDA4NjdkMjg5Y2IxOWE0NGY5OGUwZDJk
MjQ4MzZiZmQyNThiYTJkNTEuLmRkM2MyYzE2MDg1NTY2YWY5OGIxM2UzN2Y2N2FlNDQ5MTM5YTIx
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgRmls
dGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Owog
ICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVj
dC5nZXQoKTsgfQogCi0gICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+LCBSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGFwcGVuZEVm
ZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiwgUmVuZGVyT2JqZWN0
Kik7CiAKICAgICBpbmxpbmUgRmlsdGVyRWZmZWN0U2V0JiBlZmZlY3RSZWZlcmVuY2VzKEZpbHRl
ckVmZmVjdCogZWZmZWN0KQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259944</attachid>
            <date>2015-08-26 05:06:18 -0700</date>
            <delta_ts>2015-08-26 22:38:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150826210607.patch</filename>
            <type>text/plain</type>
            <size>26747</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM5Zjc5ZDA2Mjk0MzY1
MjlkMjJjNmU3ZGIzN2FiNWRmODY0ZGU4OC4uZDY1MDdkNzIxNjQwMWMwOWY3ZGIxYWFmNWE2ZDBk
NTRiYzgyOGE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA4LTI2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0
ciBpbiBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29y
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJn
ZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1h
Z2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVE
b2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3Nl
ZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0
aWVzLmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDE1LTA4
LTI1ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEVuYWJsZSBh
Y2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMuaHRtbCB0ZXN0IGZvciBtYWMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcAppbmRleCA3MjNiOTg4ZDk0ZWExOGE5ZTQ4ODBhMzQ2ZGQ1OWUzMTVmZDQ1M2Zk
Li5jNzhlNzYxYzhiZTQwMmFkYWEyZTU1ZDIyMWIyYTJiZGJkZmNmOGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUuY3BwCkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OmZpbmlzaCgpCiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCiB7Ci0gICAgYm9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgIGJvb2wgc3VjY2VzcyA9IEF1
ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciks
IHVzZUNhcHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkuZW5kZWRFdmVudCkKICAgICAgICAgbV9oYXNFbmRlZExpc3RlbmVyID0gaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpOwogICAgIHJldHVybiBzdWNjZXNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmgKaW5kZXggNjgwYWY0Njc4MGM3YmY3MWJkMzZiMTMzOTZiZjFmYjNjNzBk
NmZiMS4uMDk5MzBhMGMxNWRjODM0ZWVhMTVhZTBlODNhNzA3MDFlOTY4ZjA5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgVW5rbm93blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkg
b3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggZmVmZDZjNjlkMmI3NWQzNjVmMDViNmY0
M2E4ODkzZjc1OWQ5YWNiOC4uOTI5OGFlZDIyZTYwODI5MzZmMzlkNDQ0NDlhOGRiYThiYzc2NDEy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwCkBAIC0yNzMsOSArMjczLDkgQEAgZG91YmxlIFNjcmlwdFByb2Nl
c3Nvck5vZGU6OmxhdGVuY3lUaW1lKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6
OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0
UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
IHsKLSAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgYm9vbCBzdWNjZXNzID0gQXVkaW9Ob2Rl
OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2Fw
dHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRp
b3Byb2Nlc3NFdmVudCkKICAgICAgICAgbV9oYXNBdWRpb1Byb2Nlc3NMaXN0ZW5lciA9IGhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nlc3NFdmVudCk7CiAgICAgcmV0dXJu
IHN1Y2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2Ny
aXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDk2MWYxMjEyYTI0Yjg4ZjBlNTMwMWI1Yzc2YmNiMjc3
YTBlNTYzZmUuLjQ0MTIwNjlkNmM3OTEyNmM3YTg1NWE2OTIzY2M4Y2ExOTM3M2E3MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQcm9jZXNz
RXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSBv
dmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOwogICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKaW5kZXggZjA5YWJiZWFiMGYzZTEwNDJhMmQwNGQ2MWE3
MjgwZGMzMGVlODNiNy4uNTI0OTQ0YWVhZWJlMDY0YzA0YzMzOWVhODBkYTEyMjVkNGRiNzVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHN0YXRpYyB2b2lkIGNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJvbU1hcmt1cFRvVGFyZ2V0
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUCiAgICAgICAgIC8vIEV2ZW50IGxpc3RlbmVycyBj
cmVhdGVkIGZyb20gbWFya3VwIGhhdmUgYWxyZWFkeSBiZWVuIHRyYW5zZmVyZWQgdG8gdGhlIHNo
YWRvdyB0cmVlIGR1cmluZyBjbG9uaW5nLgogICAgICAgICBpZiAoKCpsaXN0ZW5lclZlY3Rvcilb
aV0ubGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKCpsaXN0ZW5l
clZlY3RvcilbaV0ubGlzdGVuZXIsICgqbGlzdGVuZXJWZWN0b3IpW2ldLnVzZUNhcHR1cmUpOwor
ICAgICAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUoKCps
aXN0ZW5lclZlY3RvcilbaV0ubGlzdGVuZXIpLCAoKmxpc3RlbmVyVmVjdG9yKVtpXS51c2VDYXB0
dXJlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDFlNTE1
Nzc1YzU2MmM1M2FlMWJkNzUzODUwM2IzMWY3NzE2YWZiMjEuLmYwYzkyYTk4YjZjMjc4NjIxZjNl
YmIwYjc5Y2JmNzZmNjk1Mjg1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAt
NzQsNyArNzQsNyBAQCBib29sIEV2ZW50VGFyZ2V0Ojppc01lc3NhZ2VQb3J0KCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVz
ZUNhcHR1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA4NmZlM2JjN2M4Njhi
NTU4MmNmNTg5NGZlOTBmMDZhZDllZGMwOWFmLi42ODhlNmZmNzBiOTJjYjY4OTNiYzk5ZGU3OTBm
MDY4OWQ3YTc5MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMTIwLDcgKzEyMCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNNZXNzYWdlUG9ydCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgdmlydHVhbCBib29sIGFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwg
Ym9vbCB1c2VDYXB0dXJlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoKTsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCAyZGJhYmU1OTc1NjIwOWFkZGQ2ZjIw
NWY4MGY1YmY2ZDRmZjBmMDI2Li4xMTYzYTA4OTBhYzA1OThlYmZmMDFmN2UxMTBiMzAxZGVmYjg5
Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTIyNCwxMSArMjI0LDExIEBA
IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cyhTY3JpcHRFeGVjdXRpb25Db250CiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIH0KIAotYm9v
bCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQorYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKIHsKICAgICBpZiAobGlzdGVuZXIgJiYgbGlzdGVuZXItPmlzQXR0cmlidXRlKCkgJiYg
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQpCiAgICAgICAgIHN0YXJ0KCk7
Ci0gICAgcmV0dXJuIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGE6OmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGE6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlz
dGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaAppbmRleCAxMWZjZjU3M2VhY2FjMzAzZjhjZmRiY2YyMTNmNzBjOTY1
NDY2YTcxLi43NDNkZTBmNGQ0N2QwM2RkZjUzNmM2NmNkZjM1ZDY0YjljZjBlYTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtOTMsNyArOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIEEgcG9ydCBnZXRzIG5ldXRlcmVkIHdoZW4gaXQgaXMgdHJhbnNmZXJyZWQg
dG8gYSBuZXcgb3duZXIgdmlhIHBvc3RNZXNzYWdlKCkuCiAgICAgICAgIGJvb2wgaXNOZXV0ZXJl
ZCgpIHsgcmV0dXJuICFtX2VudGFuZ2xlZENoYW5uZWw7IH0KIAotICAgICAgICBib29sIGFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50
TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBleHBsaWNpdCBNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKaW5kZXggZWViOTJhNmFkOTM4YmQ4NTIzMWZkYjUzMGJlZDg5OWUwOGNmNWVh
YS4uZmVjYjU3ODJkYzhmYzcyMzY2ZTRhMGFjNTZmZTQ4NTc0ODcyZWMzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcApAQCAtMTg3MSw3ICsxODcxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50
TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmUKIHsKICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcnBMaXN0ZW5lcjsKIAotICAgIGlm
ICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBs
aXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdldDo6
YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1
cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgp
LmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGV2ZW50VHlwZSk7CkBAIC0xOTA1LDcgKzE5MDUsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2Rl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICByZXR1
cm4gdHJ5QWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0
dXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDkyOWVjZTQyYzhlYjdjMmI1YTQzOGU1OWY1ZTE3NzZh
YjE4OWQwNjUuLjE4NDg3YTZlNTY5YWY0MzcyYTZiYTYyNzBiMDcxOWRjZWM0Yjc3OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtNTIxLDcgKzUyMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7IC8vIEltcGxlbWVudGVkIGluIERvY3VtZW50LmgKIAotICAg
IHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJp
ZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDhiZDNhZDVkMzJmZGE3M2FjMDIyNTQ0
ZGI4NDlmNDYzY2ZkMWRmYjguLjgyNjk1ZWE5OTBjYzk4NTVlZmZlODc5YzExMzNjYjgwMWQ2M2Rm
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTA0Miw3
ICs1MDQyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hFdmVu
dChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChldmVudFR5cGUg
IT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2
ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
aW5kZXggMWIzOWE1N2YxZmJlMzg0YjhmY2VkNzJmMTQ3MjFjMzA4MWFmNjRjMS4uNmUxZjU2ZjMy
OGIzZDg4MDI4OTFiZTM4YjE2N2M2OTFlNWYyZjlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKQEAgLTMzNSw3ICszMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgd2Via2l0U2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKCk7Ci0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNl
Q2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29s
IHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aXJlbGVzc1JvdXRlc0F2
YWlsYWJsZURpZENoYW5nZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKaW5kZXggODFiNWVlZWQ5NTUxYmZiNmUzMzNkNGMxZDliNzk2Y2Q3OWQ2MWZjYy4uYjdh
NDJjMTZkNGVmNmQ3OWVmNzgwNTFkNTJiMDJjN2NkNDQ5ZGUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBJbWFnZURvY3VtZW50
OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAjZWxzZQogICAgICAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CiAg
ICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IHRoaXMtPmRvbVdpbmRvdygpKQotICAgICAg
ICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lciwgZmFsc2Up
OworICAgICAgICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBXVEY6Om1v
dmUobGlzdGVuZXIpLCBmYWxzZSk7CiAgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBsaXN0ZW5lci5yZWxlYXNlKCksIGZhbHNlKTsKICNlbmRpZgogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CmluZGV4IDhmZGJhMGQwMzQ4NTAzYTJhNmU4ZTBkMGU4NjQ3ZTkzZjk2NjRmODMuLjkxZTIzN2Qx
ZmEzZTUxYWE2ZjQ3MzJkZWE5ZTI1N2ZlOGMzYmVlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtNTA5LDE1ICs1MDksMTUg
QEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KCkK
ICAgICBtX3BhbmVsLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9pbnRlckV2
ZW50cywgQ1NTVmFsdWVOb25lKTsKIAogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciA9IGV2ZW50TGlzdGVuZXIoKTsKLSAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7Cisg
ICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkud2hlZWxFdmVudCwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdHJ1ZSk7CiAKICAgICAvLyBUcmFj
ayBjbGljayBldmVudHMgaW4gdGhlIGNhcHR1cmUgcGhhc2UgYXQgdHdvIGxldmVscywgZmlyc3Qg
YXQgdGhlIGRvY3VtZW50IGxldmVsCiAgICAgLy8gc3VjaCB0aGF0IGEgY2xpY2sgb3V0c2lkZSBv
ZiB0aGUgPHZpZGVvPiBtYXkgZGlzbWlzcyB0aGUgdHJhY2sgbGlzdCwgc2Vjb25kIGF0IHRoZQog
ICAgIC8vIG1lZGlhIGNvbnRyb2xzIGxldmVsIHN1Y2ggdGhhdCBhIGNsaWNrIGFueXdoZXJlIG91
dHNpZGUgb2YgdGhlIHRyYWNrIGxpc3QgaGlkZXMgdGhlCiAgICAgLy8gdHJhY2sgbGlzdC4gVGhl
c2UgdHdvIGxldmVscyBhcmUgbmVjZXNzYXJ5IHNpbmNlIGl0IHdvdWxkIG5vdCBiZSBwb3NzaWJs
ZSB0byBnZXQgYQogICAgIC8vIHJlZmVyZW5jZSB0byB0aGUgdHJhY2sgbGlzdCB3aGVuIGhhbmRs
aW5nIHRoZSBldmVudCBvdXRzaWRlIG9mIHRoZSBzaGFkb3cgdHJlZS4KLSAgICBkb2N1bWVudCgp
LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVl
KTsKLSAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5l
ciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBXVEY6Om1vdmUobGlzdGVuZXIpLCB0cnVlKTsKKyAgICBhZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBXVEY6Om1vdmUobGlzdGVuZXIpLCB0cnVlKTsK
IH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmhpZGVDbG9zZWRDYXB0aW9uVHJhY2tMaXN0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBmZTRiOWFmMDI1OTIyN2IzOTVjMTU2
ZWYzOTYwNTMyOTM3OTZjZDM4Li5jMTBiNzE5OGUyMmQ0YzEwZjM0M2ZmOTRmZWI4ZWVkMTNiNWI2
NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNjkyLDkgKzE2OTIsOSBAQCBz
dGF0aWMgdm9pZCBkaWRBZGRTdG9yYWdlRXZlbnRMaXN0ZW5lcihET01XaW5kb3cqIHdpbmRvdykK
ICAgICB3aW5kb3ctPnNlc3Npb25TdG9yYWdlKElHTk9SRV9FWENFUFRJT04pOwogfQogCi1ib29s
IERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQor
Ym9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUp
CiB7Ci0gICAgaWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxp
c3RlbmVyLCB1c2VDYXB0dXJlKSkKKyAgICBpZiAoIUV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBmNmQyODVjYmUzNDA2ODMwOGZm
MTg5MDM2MzgzZWU4ZDA4Y2M2ZDBjLi43ZTZiNThmOTJjNmM1Mjk4NTIwMDI0ZjQ0ZWRlY2ZiM2Zh
OTE3MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gRXZlbnRzCiAgICAgICAgIC8vIEV2ZW50VGFy
Z2V0IEFQSQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lcios
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVB
bGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGUzMTg2
NWQ4MDNjMTNkMTUwYjU3MWI2MWRlMDc4NjFiMDIxNzExZmMuLjg3NzgxNTQ1YzYwZGQ4MWY3YjQx
OGUzOGE0OTAzZDc4NDdkN2MxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgICAgICAgICBidWlsZGVyLT5jbGVhckVmZmVj
dHMoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGJ1
aWxkZXItPmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QsIGVsZW1lbnQucmVu
ZGVyZXIoKSk7CisgICAgICAgIGJ1aWxkZXItPmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNl
cyhXVEY6Om1vdmUoZWZmZWN0KSwgZWxlbWVudC5yZW5kZXJlcigpKTsKICAgICAgICAgZWxlbWVu
dC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAgZWZmZWN0LT5z
ZXRFZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxlbWVudCwgZmlsdGVyRWxlbWVu
dCgpLnByaW1pdGl2ZVVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94KSk7CiAgICAgICAgIGVmZmVj
dC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3Zn
U3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ0lfTElORUFSUkdCID8gQ29s
b3JTcGFjZUxpbmVhclJHQiA6IENvbG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCmluZGV4IDUxZmM2ZmVmYmZjZTQ5Mjc2MTI4Y2M0OTQ3NTAyZjQ1ZWMzMzMyYWIu
LjllNWEwMDI5ZTE1ZjdlZTVlMjk4YzkwZjM0NmZiNjBlMWJmYTNmNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAKQEAgLTU3MSwxMiArNTcxLDEyIEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2
ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBT
VkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IHBycExpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUp
Citib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIHBycExpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCiB7CiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJwTGlzdGVu
ZXI7CiAgICAgCiAgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVyIHRvIHJlZ3VsYXIgRE9NIGVsZW1l
bnQKLSAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwg
dXNlQ2FwdHVyZSkpCisgICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
V1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChjb250YWluaW5nU2hhZG93Um9vdCgpKQpAQCAtNTg2LDcgKzU4Niw3IEBAIGJv
b2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVuCiAgICAgQVNTRVJUKCFpbnN0YW5jZVVwZGF0ZXNCbG9ja2Vk
KCkpOwogICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiBpbnN0YW5jZXMoKSkgewogICAgICAgICBB
U1NFUlQoaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgPT0gdGhpcyk7Ci0gICAgICAg
IGJvb2wgcmVzdWx0ID0gaW5zdGFuY2UtPk5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gaW5zdGFuY2Ut
Pk5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1
c2VDYXB0dXJlKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCAxZWJmOGNjZTY3YWU4MDQwMzhiNTVkNjk1
NThjNDJhYjNiYWI0ZjU4Li4zYzZiNWUyMTU3Zjg3NjhiNjM1ZDViZjRkZmQwM2RlNWViNWEzYzg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTE0MSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRl
ZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92
ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVudExp
c3RlbmVycygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRl
eCA1NDgyNTYxNjFmZjI0YmE4OTEzMTdmMDg2ZGZjODljYzA1ZWYxODJiLi5iNGM0NDQyYjYwZDQx
MTdkZWFlMDIzOWU5MDJmNDk1OTkyOTNiNzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXRoU2Vn
TGlzdENoYW5nZWQoU1ZHUGF0aFNlZ1JvbGUgcm9sZSwgTGlzdE1vZGlmaWNhdGlvbiBsaQogICAg
IGNhc2UgUGF0aFNlZ1VuYWx0ZXJlZFJvbGU6CiAgICAgICAgIGlmIChsaXN0TW9kaWZpY2F0aW9u
ID09IExpc3RNb2RpZmljYXRpb25BcHBlbmQpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9wYXRo
U2VnTGlzdC52YWx1ZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgYXBwZW5kU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3QoKSwgbV9wYXRoQnl0
ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAgICBhcHBlbmRTVkdQ
YXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFdURjo6bW92ZShtX3BhdGhTZWdMaXN0LnZhbHVl
Lmxhc3QoKSksIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0
aFNlZ0xpc3QobV9wYXRoU2VnTGlzdC52YWx1ZSwgbV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5h
bHRlcmVkUGFyc2luZyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhV
dGlsaXRpZXMuY3BwCmluZGV4IDhmYTYyODBhNzUwYTdhN2E0ZTY5YmMwYjg1MThlNDM4MzExNmMz
OTcuLjE0MjJkNGQ4MGYwNTY0OWMyYWZlZmE5NmMwNDVlN2UxZmIzODU2OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIGJ1
aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xp
c3QmIGxpc3QsIFNWR1BhdAogICAgIHJldHVybiBvazsKIH0KIAotYm9vbCBhcHBlbmRTVkdQYXRo
Qnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFBhc3NSZWZQdHI8U1ZHUGF0aFNlZz4gcGF0aFNlZywg
U1ZHUGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQor
Ym9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJlZlB0cjxTVkdQYXRo
U2VnPiYmIHBhdGhTZWcsIFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQsIFBhdGhQYXJzaW5nTW9k
ZSBwYXJzaW5nTW9kZSkKIHsKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEyIC0gSW1wbGVtZW50IG5v
cm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0
aWVzLmgKaW5kZXggYjA3OGE1ZTcxMGRmNGU0MmYwYTVmMGY4MjEzNGMxMDk4NWFmYzhmNC4uYzJk
MWYxNGMwNGVjMWE1NDI5OTNjZjhlYzc2MTNmOWFlMGQ2YjRmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFV0aWxpdGllcy5oCkBAIC0zOCw3ICszOCw3IEBAIGJvb2wgYnVpbGRQYXRoRnJvbUJ5
dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoJik7CiAKIC8vIFNWR1BhdGhTZWdMaXN0
L1N0cmluZyAtPiBTVkdQYXRoQnl0ZVN0cmVhbQogYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFt
RnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiwgU1ZHUGF0aEJ5dGVTdHJl
YW0qLCBQYXRoUGFyc2luZ01vZGUpOwotYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21T
VkdQYXRoU2VnKFBhc3NSZWZQdHI8U1ZHUGF0aFNlZz4sIFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0
aFBhcnNpbmdNb2RlKTsKK2Jvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNl
ZyhSZWZQdHI8U1ZHUGF0aFNlZz4mJiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01v
ZGUpOwogYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
LCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7CiAKIC8vIFNWR1BhdGhCeXRl
U3RyZWFtL1NWR1BhdGhTZWdMaXN0IC0+IFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxl
bWVudC5jcHAKaW5kZXggZTNmYWQ4ZDU5MGM1NGRlNmJlOTQ2NzljOTU3MTdiOTg1YWM3NGEyMS4u
MmVhMWRhNjNjMjMxNmExZDExYWQ1ZDA0NTYxNDA0YTVhNjc3Y2U3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXJUeXBl
ID8gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIqPihsaXN0ZW5l
cikgOiBudWxscHRyOwogICAgIH0KIAotICAgIHZvaWQgYXR0YWNoKFBhc3NSZWZQdHI8RWxlbWVu
dD4gdGFyZ2V0KTsKKyAgICB2b2lkIGF0dGFjaChSZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQpOwog
ICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4g
bV90YXJnZXQuZ2V0KCk7IH0KIApAQCAtODYsNyArODYsNyBAQCBTVkdUUmVmVGFyZ2V0RXZlbnRM
aXN0ZW5lcjo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIoU1ZHVFJlZkVsZW1lbnQmIHRyZWZF
bGVtZQogewogfQogCi12b2lkIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2goUGFz
c1JlZlB0cjxFbGVtZW50PiB0YXJnZXQpCit2b2lkIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVy
OjphdHRhY2goUmVmUHRyPEVsZW1lbnQ+JiYgdGFyZ2V0KQogewogICAgIEFTU0VSVCghaXNBdHRh
Y2hlZCgpKTsKICAgICBBU1NFUlQodGFyZ2V0LmdldCgpKTsKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIFNWR1RSZWZFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgLy8gZXhwZWN0
cyBldmVyeSBlbGVtZW50IGluc3RhbmNlIHRvIGhhdmUgYW4gYXNzb2NpYXRlZCBzaGFkb3cgdHJl
ZSBlbGVtZW50IC0gd2hpY2ggaXMgbm90IHRoZQogICAgIC8vIGNhc2Ugd2hlbiB3ZSBsYW5kIGhl
cmUgZnJvbSBTVkdVc2VFbGVtZW50OjpidWlsZFNoYWRvd1RyZWUoKS4KICAgICBpZiAoIWlzSW5T
aGFkb3dUcmVlKCkpCi0gICAgICAgIG1fdGFyZ2V0TGlzdGVuZXItPmF0dGFjaCh0YXJnZXQpOwor
ICAgICAgICBtX3RhcmdldExpc3RlbmVyLT5hdHRhY2goV1RGOjptb3ZlKHRhcmdldCkpOwogCiAg
ICAgdXBkYXRlUmVmZXJlbmNlZFRleHQodGFyZ2V0LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAK
aW5kZXggMTkzMTMyMTRlOWIyYTdmMTMzYTY4OWU1YmI1YmExYzA2ZTQyMDNjMi4uMzg1YmE3NzA0
NmM0NWU5MDMxYmU4ODJjMWY2ZDc5NDRjMmFkNGVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgRmlsdGVyRWZmZWN0KiBTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlk
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmFtZWRFZmZlY3Rz
LmdldChpZCk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZl
Y3RSZWZlcmVuY2VzKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcnBFZmZlY3QsIFJlbmRlck9i
amVjdCogb2JqZWN0KQordm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVj
dFJlZmVyZW5jZXMoUmVmUHRyPEZpbHRlckVmZmVjdD4mJiBwcnBFZmZlY3QsIFJlbmRlck9iamVj
dCogb2JqZWN0KQogewogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IHBycEVmZmVj
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5oCmluZGV4IDA4NjdkMjg5Y2IxOWE0NGY5OGUwZDJkMjQ4MzZiZmQyNThi
YTJkNTEuLjgwNDA4NmI1NTZkOGM1NjhkYmQ4ZjliODliNTcyNjA3ZjVhMGM5Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDQsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0KiBn
ZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogICAgIEZpbHRlckVm
ZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQog
Ci0gICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+LCBSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGFwcGVuZEVmZmVjdFRvRWZmZWN0
UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiYmLCBSZW5kZXJPYmplY3QqKTsKIAogICAg
IGlubGluZSBGaWx0ZXJFZmZlY3RTZXQmIGVmZmVjdFJlZmVyZW5jZXMoRmlsdGVyRWZmZWN0KiBl
ZmZlY3QpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260034</attachid>
            <date>2015-08-26 22:38:39 -0700</date>
            <delta_ts>2015-09-01 18:42:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150827143826.patch</filename>
            <type>text/plain</type>
            <size>26728</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjY2U5OTM2ZmYzNjIx
OTUzMTg2NGNkMDhlNWE0NTk5M2Y1ZDhlZi4uNzY2ZTY5YjM4OTViNWUyMmVjMjQ3NDg4YmJkNWY2
NThmZmFiZmE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA4LTI2ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0
ciBpbiBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29y
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJn
ZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1h
Z2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVE
b2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3Nl
ZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0
aWVzLmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDE1LTA4
LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICB3YXRjaGRvZyBt
X2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAKaW5kZXggNzIzYjk4OGQ5NGVhMThhOWU0ODgwYTM0NmRkNTllMzE1ZmQ0NTNmZC4uYzc4ZTc2
MWM4YmU0MDJhZGFhMmU1NWQyMjFiMmEyYmRiZGZjZjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmNwcApAQCAtMjExLDkgKzIxMSw5IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpm
aW5pc2goKQogICAgIH0KIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQog
ewotICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6
OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0
dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmVuZGVk
RXZlbnQpCiAgICAgICAgIG1faGFzRW5kZWRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2
ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKICAgICByZXR1cm4gc3VjY2VzczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5oCmluZGV4IDY4MGFmNDY3ODBjN2JmNzFiZDM2YjEzMzk2YmYxZmIzYzcwZDZmYjEuLjA5
OTMwYTBjMTVkYzgzNGVlYTE1YWUwZTgzYTcwNzAxZTk2OGYwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgZG91
YmxlIFVua25vd25UaW1lOwogCiBwcml2YXRlOgotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwg
Ym9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29s
IHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0
UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGZlZmQ2YzY5ZDJiNzVkMzY1ZjA1YjZmNDNhODg5M2Y3
NTlkOWFjYjguLjkyOThhZWQyMmU2MDgyOTM2ZjM5ZDQ0NDQ5YThkYmE4YmM3NjQxMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcApAQCAtMjczLDkgKzI3Myw5IEBAIGRvdWJsZSBTY3JpcHRQcm9jZXNzb3JOb2Rl
OjpsYXRlbmN5VGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKTsKIH0KIAotYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAg
Ym9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlz
dGVuZXIsIHVzZUNhcHR1cmUpOworICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwog
ICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNz
RXZlbnQpCiAgICAgICAgIG1faGFzQXVkaW9Qcm9jZXNzTGlzdGVuZXIgPSBoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZlbnQpOwogICAgIHJldHVybiBzdWNjZXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuaAppbmRleCA5NjFmMTIxMmEyNGI4OGYwZTUzMDFiNWM3NmJjYjI3N2EwZTU2M2Zl
Li40NDEyMDY5ZDZjNzkxMjZjN2E4NTVhNjkyM2NjOGNhMTkzNzNhNzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApA
QCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7
CiAKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7
CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAg
ICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVt
b3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TGlzdGVuZXJNYXAuY3BwCmluZGV4IGYwOWFiYmVhYjBmM2UxMDQyYTJkMDRkNjFhNzI4MGRjMzBl
ZTgzYjcuLjUyNDk0NGFlYWViZTA2NGMwNGMzMzllYTgwZGExMjI1ZDRkYjc1YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0
aWMgdm9pZCBjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VAogICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBm
cm9tIG1hcmt1cCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcmVkIHRvIHRoZSBzaGFkb3cgdHJl
ZSBkdXJpbmcgY2xvbmluZy4KICAgICAgICAgaWYgKCgqbGlzdGVuZXJWZWN0b3IpW2ldLmxpc3Rl
bmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICgqbGlzdGVuZXJWZWN0b3Ip
W2ldLmxpc3RlbmVyLCAoKmxpc3RlbmVyVmVjdG9yKVtpXS51c2VDYXB0dXJlKTsKKyAgICAgICAg
dGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKCgqbGlzdGVuZXJW
ZWN0b3IpW2ldLmxpc3RlbmVyKSwgKCpsaXN0ZW5lclZlY3RvcilbaV0udXNlQ2FwdHVyZSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAxZTUxNTc3NWM1NjJj
NTNhZTFiZDc1Mzg1MDNiMzFmNzcxNmFmYjIxLi5mMGM5MmE5OGI2YzI3ODYyMWYzZWJiMGI3OWNi
Zjc2ZjY5NTI4NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTc0LDcgKzc0
LDcgQEAgYm9vbCBFdmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCitib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKS5ldmVudExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggODZmZTNiYzdjODY4YjU1ODJjZjU4
OTRmZTkwZjA2YWQ5ZWRjMDlhZi4uNjg4ZTZmZjcwYjkyY2I2ODkzYmM5OWRlNzkwZjA2ODlkN2E3
OTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCk7CiAgICAgdmlydHVhbCBi
b29sIGlzTWVzc2FnZVBvcnQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4m
JiwgYm9vbCB1c2VDYXB0dXJlKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNl
Q2FwdHVyZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAg
ICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggMmRiYWJlNTk3NTYyMDlhZGRkNmYyMDVmODBmNWJm
NmQ0ZmYwZjAyNi4uMTE2M2EwODkwYWMwNTk4ZWJmZjAxZjdlMTEwYjMwMWRlZmI4OWNlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0yMjQsMTEgKzIyNCwxMSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2Ny
aXB0RXhlY3V0aW9uQ29udAogICAgIHJldHVybiBwb3J0QXJyYXk7CiB9CiAKLWJvb2wgTWVzc2Fn
ZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wg
TWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7
CiAgICAgaWYgKGxpc3RlbmVyICYmIGxpc3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50KQogICAgICAgICBzdGFydCgpOwotICAgIHJl
dHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwg
dXNlQ2FwdHVyZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmgKaW5kZXggMTFmY2Y1NzNlYWNhYzMwM2Y4Y2ZkYmNmMjEzZjcwYzk2NTQ2NmE3MS4u
NzQzZGUwZjRkNDdkMDNkZGY1MzZjNjZjZGYzNWQ2NGI5Y2YwZWExMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmgKQEAgLTkzLDcgKzkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBBIHBvcnQgZ2V0cyBuZXV0ZXJlZCB3aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3
IG93bmVyIHZpYSBwb3N0TWVzc2FnZSgpLgogICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJl
dHVybiAhbV9lbnRhbmdsZWRDaGFubmVsOyB9CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZXhwbGljaXQgTWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCmluZGV4IGVlYjkyYTZhZDkzOGJkODUyMzFmZGI1MzBiZWQ4OTllMDhjZjVlYWEuLmZmOWQy
YTRmZDMwZTJhZWU5ZDU4YjUwNzM4OTEwYzU3MzA4YmMyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTE4NzEsNyArMTg3MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVy
KE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlCiB7CiAgICAgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJwTGlzdGVuZXI7CiAKLSAgICBpZiAoIXRhcmdl
dE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIs
IHVzZUNhcHR1cmUpKQorICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmFkZExpc3Rl
bmVyVHlwZUlmTmVlZGVkKGV2ZW50VHlwZSk7CkBAIC0xOTA1LDcgKzE5MDUsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTm9kZTo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICByZXR1cm4gdHJ5QWRk
RXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCmluZGV4IDkyOWVjZTQyYzhlYjdjMmI1YTQzOGU1OWY1ZTE3NzZhYjE4OWQwNjUu
LjE4NDg3YTZlNTY5YWY0MzcyYTZiYTYyNzBiMDcxOWRjZWM0Yjc3OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApA
QCAtNTIxLDcgKzUyMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7IC8vIEltcGxlbWVudGVkIGluIERvY3VtZW50LmgKIAotICAgIHZpcnR1YWwg
Ym9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAg
ICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDhiZDNhZDVkMzJmZGE3M2FjMDIyNTQ0ZGI4NDlmNDYz
Y2ZkMWRmYjguLjgyNjk1ZWE5OTBjYzk4NTVlZmZlODc5YzExMzNjYjgwMWQ2M2RmNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTA0Miw3ICs1MDQyLDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IHBycEV2ZW50KQogICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChldmVudCk7
CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnRO
YW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQogICAg
ICAgICByZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1
c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMWIz
OWE1N2YxZmJlMzg0YjhmY2VkNzJmMTQ3MjFjMzA4MWFmNjRjMS4uNmUxZjU2ZjMyOGIzZDg4MDI4
OTFiZTM4YjE2N2M2OTFlNWYyZjlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKQEAgLTMzNSw3ICszMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgd2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KCk7Ci0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1
cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJl
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURp
ZENoYW5nZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5k
ZXggODFiNWVlZWQ5NTUxYmZiNmUzMzNkNGMxZDliNzk2Y2Q3OWQ2MWZjYy4uZDE1ZTJiOWMyY2Qy
ZDhiN2RiNDY1OWNhNTIzOTZjYTYyNjlhYWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVE
b2N1bWVudFN0cnVjdHVyZSgpCiAjZWxzZQogICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CiAgICAgICAgIGlm
IChET01XaW5kb3cqIHdpbmRvdyA9IHRoaXMtPmRvbVdpbmRvdygpKQotICAgICAgICAgICAgd2lu
ZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lciwgZmFsc2UpOworICAgICAg
ICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lci5jb3B5UmVm
KCksIGZhbHNlKTsKICAgICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIGxpc3RlbmVyLnJlbGVhc2UoKSwgZmFsc2UpOwogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKaW5kZXggOGZk
YmEwZDAzNDg1MDNhMmE2ZThlMGQwZTg2NDdlOTNmOTY2NGY4My4uNjE3YzQ3Zjk3OTM4NjdiYjVl
NGE1OTVkMTMyOGZkNDhlOGUxMWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCkBAIC01MDksMTUgKzUwOSwxNSBAQCB2b2lkIE1l
ZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3NlZENhcHRpb25UcmFja0xpc3QoKQogICAgIG1fcGFu
ZWwtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBDU1NW
YWx1ZU5vbmUpOwogCiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZXZlbnRM
aXN0ZW5lcigpOwotICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIGxpc3RlbmVyLCB0cnVlKTsKKyAgICBtX2Nsb3Nl
ZENhcHRpb25zQ29udGFpbmVyLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2
ZW50LCBsaXN0ZW5lci5jb3B5UmVmKCksIHRydWUpOwogCiAgICAgLy8gVHJhY2sgY2xpY2sgZXZl
bnRzIGluIHRoZSBjYXB0dXJlIHBoYXNlIGF0IHR3byBsZXZlbHMsIGZpcnN0IGF0IHRoZSBkb2N1
bWVudCBsZXZlbAogICAgIC8vIHN1Y2ggdGhhdCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlIDx2aWRl
bz4gbWF5IGRpc21pc3MgdGhlIHRyYWNrIGxpc3QsIHNlY29uZCBhdCB0aGUKICAgICAvLyBtZWRp
YSBjb250cm9scyBsZXZlbCBzdWNoIHRoYXQgYSBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRo
ZSB0cmFjayBsaXN0IGhpZGVzIHRoZQogICAgIC8vIHRyYWNrIGxpc3QuIFRoZXNlIHR3byBsZXZl
bHMgYXJlIG5lY2Vzc2FyeSBzaW5jZSBpdCB3b3VsZCBub3QgYmUgcG9zc2libGUgdG8gZ2V0IGEK
ICAgICAvLyByZWZlcmVuY2UgdG8gdGhlIHRyYWNrIGxpc3Qgd2hlbiBoYW5kbGluZyB0aGUgZXZl
bnQgb3V0c2lkZSBvZiB0aGUgc2hhZG93IHRyZWUuCi0gICAgZG9jdW1lbnQoKS5hZGRFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgYWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOwor
ICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwg
bGlzdGVuZXIuY29weVJlZigpLCB0cnVlKTsKKyAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lci5jb3B5UmVmKCksIHRydWUpOwogfQogCiB2b2lkIE1l
ZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCmluZGV4IGZlNGI5YWYwMjU5MjI3YjM5NWMxNTZlZjM5NjA1MzI5Mzc5
NmNkMzguLmZhMTA2ZGE5ZWI0ODA4ZDUyYTU0NGZiOWU0YzM0MjNlMGZhYTIzYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE2OTIsOSArMTY5Miw5IEBAIHN0YXRpYyB2b2lkIGRp
ZEFkZFN0b3JhZ2VFdmVudExpc3RlbmVyKERPTVdpbmRvdyogd2luZG93KQogICAgIHdpbmRvdy0+
c2Vzc2lvblN0b3JhZ2UoSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKLWJvb2wgRE9NV2luZG93Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIERPTVdpbmRv
dzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAo
IUV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpKQorICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKaW5kZXggZjZkMjg1Y2JlMzQwNjgzMDhmZjE4OTAzNjM4M2VlOGQw
OGNjNmQwYy4uN2U2YjU4ZjkyYzZjNTI5ODUyMDAyNGY0NGVkZWNmYjNmYTkxNzMxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0yNzMsNyArMjczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIC8vIEV2ZW50cwogICAgICAgICAvLyBFdmVudFRhcmdldCBBUEkKLSAgICAg
ICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJl
KSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1
cmUpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBlMzE4NjVkODAzYzEzZDE1MGI1
NzFiNjFkZTA3ODYxYjAyMTcxMWZjLi42MTgzMGNkMjFlZmRjZjUwY2NmZmVlMDU0MDkxODI1ZTE4
Yzg1ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtODcsNyArODcsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0
aXZlcyhTVkdGaQogICAgICAgICAgICAgYnVpbGRlci0+Y2xlYXJFZmZlY3RzKCk7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBidWlsZGVyLT5hcHBlbmRF
ZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LCBlbGVtZW50LnJlbmRlcmVyKCkpOworICAg
ICAgICBidWlsZGVyLT5hcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LmNvcHlS
ZWYoKSwgZWxlbWVudC5yZW5kZXJlcigpKTsKICAgICAgICAgZWxlbWVudC5zZXRTdGFuZGFyZEF0
dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFy
aWVzKFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxlbWVudCwgZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVu
aXRzKCksIHRhcmdldEJvdW5kaW5nQm94KSk7CiAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ0lfTElORUFSUkdCID8gQ29sb3JTcGFjZUxpbmVhclJH
QiA6IENvbG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4
IDUxZmM2ZmVmYmZjZTQ5Mjc2MTI4Y2M0OTQ3NTAyZjQ1ZWMzMzMyYWIuLjI4Nzc4MjIyMGM0YjEx
ZWJlMzljYWJhMWU3YzM0NmRlZjUxYzU2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
QEAgLTU3MSwxMiArNTcxLDEyIEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVk
UmVzb3VyY2VzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjphZGRF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IHBycExpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNWR0VsZW1l
bnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxFdmVudExpc3RlbmVyPiYmIHBycExpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJwTGlzdGVuZXI7CiAgICAgCiAgICAg
Ly8gQWRkIGV2ZW50IGxpc3RlbmVyIHRvIHJlZ3VsYXIgRE9NIGVsZW1lbnQKLSAgICBpZiAoIU5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisg
ICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJl
ZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGNvbnRh
aW5pbmdTaGFkb3dSb290KCkpCkBAIC01ODYsNyArNTg2LDcgQEAgYm9vbCBTVkdFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW4KICAgICBBU1NFUlQoIWluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSk7CiAgICAgZm9yIChh
dXRvKiBpbnN0YW5jZSA6IGluc3RhbmNlcygpKSB7CiAgICAgICAgIEFTU0VSVChpbnN0YW5jZS0+
Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA9PSB0aGlzKTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBp
bnN0YW5jZS0+Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VD
YXB0dXJlKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBpbnN0YW5jZS0+Tm9kZTo6YWRkRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSk7CiAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKaW5kZXggMWViZjhjY2U2N2FlODA0MDM4YjU1ZDY5NTU4YzQyYWIzYmFiNGY1OC4u
M2M2YjVlMjE1N2Y4NzY4YjYzNWQ1YmY0ZGZkMDNkZTVlYjVhM2M4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDEsNyArMTQwLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNl
cygpOwogCi0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNh
cHR1cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKICAgICBib29sIGhhc0ZvY3VzRXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggNTQ4MjU2MTYxZmYyNGJh
ODkxMzE3ZjA4NmRmYzg5Y2MwNWVmMTgyYi4uNmU4NDA1ZDZhMTc0MjJkYzQzODU1MmI5ZGJiNTI4
MDc2NmZhMWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC0zNTks
NyArMzU5LDcgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1Bh
dGhTZWdSb2xlIHJvbGUsIExpc3RNb2RpZmljYXRpb24gbGkKICAgICBjYXNlIFBhdGhTZWdVbmFs
dGVyZWRSb2xlOgogICAgICAgICBpZiAobGlzdE1vZGlmaWNhdGlvbiA9PSBMaXN0TW9kaWZpY2F0
aW9uQXBwZW5kKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0aFNlZ0xpc3QudmFsdWUuaXNF
bXB0eSgpKTsKLSAgICAgICAgICAgIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhT
ZWcobV9wYXRoU2VnTGlzdC52YWx1ZS5sYXN0KCksIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIFVu
YWx0ZXJlZFBhcnNpbmcpOworICAgICAgICAgICAgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9t
U1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3QoKS5jb3B5UmVmKCksIG1fcGF0aEJ5
dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QobV9wYXRoU2Vn
TGlzdC52YWx1ZSwgbV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CiAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4
IDhmYTYyODBhNzUwYTdhN2E0ZTY5YmMwYjg1MThlNDM4MzExNmMzOTcuLjE0MjJkNGQ4MGYwNTY0
OWMyYWZlZmE5NmMwNDVlN2UxZmIzODU2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0
aWxpdGllcy5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJl
YW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmIGxpc3QsIFNWR1BhdAog
ICAgIHJldHVybiBvazsKIH0KIAotYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQ
YXRoU2VnKFBhc3NSZWZQdHI8U1ZHUGF0aFNlZz4gcGF0aFNlZywgU1ZHUGF0aEJ5dGVTdHJlYW0q
IHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQorYm9vbCBhcHBlbmRTVkdQYXRo
Qnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJlZlB0cjxTVkdQYXRoU2VnPiYmIHBhdGhTZWcsIFNW
R1BhdGhCeXRlU3RyZWFtKiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKIHsK
ICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NDEyIC0gSW1wbGVtZW50IG5vcm1hbGl6ZWQgcGF0aCBzZWdt
ZW50IGxpc3RzIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKaW5kZXggYjA3OGE1
ZTcxMGRmNGU0MmYwYTVmMGY4MjEzNGMxMDk4NWFmYzhmNC4uYzJkMWYxNGMwNGVjMWE1NDI5OTNj
ZjhlYzc2MTNmOWFlMGQ2YjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5o
CkBAIC0zOCw3ICszOCw3IEBAIGJvb2wgYnVpbGRQYXRoRnJvbUJ5dGVTdHJlYW0oU1ZHUGF0aEJ5
dGVTdHJlYW0qLCBQYXRoJik7CiAKIC8vIFNWR1BhdGhTZWdMaXN0L1N0cmluZyAtPiBTVkdQYXRo
Qnl0ZVN0cmVhbQogYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0
KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01v
ZGUpOwotYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFBhc3NSZWZQ
dHI8U1ZHUGF0aFNlZz4sIFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKK2Jv
b2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhSZWZQdHI8U1ZHUGF0aFNl
Zz4mJiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01vZGUpOwogYm9vbCBidWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBTVkdQYXRoQnl0ZVN0cmVh
bSosIFBhdGhQYXJzaW5nTW9kZSk7CiAKIC8vIFNWR1BhdGhCeXRlU3RyZWFtL1NWR1BhdGhTZWdM
aXN0IC0+IFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZTNm
YWQ4ZDU5MGM1NGRlNmJlOTQ2NzljOTU3MTdiOTg1YWM3NGEyMS4uOTQ1MmNjZjI0MzE5MjJjZjc3
YzNjNDA0NWU4YzNlNTRiNGZiNzg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3RlbmVyLT50
eXBlKCkgPT0gU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXJUeXBlID8gc3RhdGljX2Nhc3Q8Y29u
c3QgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcikgOiBudWxscHRyOwogICAg
IH0KIAotICAgIHZvaWQgYXR0YWNoKFBhc3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KTsKKyAgICB2
b2lkIGF0dGFjaChSZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQpOwogICAgIHZvaWQgZGV0YWNoKCk7
CiAgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0K
IApAQCAtODYsNyArODYsNyBAQCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6U1ZHVFJlZlRh
cmdldEV2ZW50TGlzdGVuZXIoU1ZHVFJlZkVsZW1lbnQmIHRyZWZFbGVtZQogewogfQogCi12b2lk
IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2goUGFzc1JlZlB0cjxFbGVtZW50PiB0
YXJnZXQpCit2b2lkIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2goUmVmUHRyPEVs
ZW1lbnQ+JiYgdGFyZ2V0KQogewogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAgICBBU1NF
UlQodGFyZ2V0LmdldCgpKTsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50
OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgLy8gZXhwZWN0cyBldmVyeSBlbGVtZW50IGlu
c3RhbmNlIHRvIGhhdmUgYW4gYXNzb2NpYXRlZCBzaGFkb3cgdHJlZSBlbGVtZW50IC0gd2hpY2gg
aXMgbm90IHRoZQogICAgIC8vIGNhc2Ugd2hlbiB3ZSBsYW5kIGhlcmUgZnJvbSBTVkdVc2VFbGVt
ZW50OjpidWlsZFNoYWRvd1RyZWUoKS4KICAgICBpZiAoIWlzSW5TaGFkb3dUcmVlKCkpCi0gICAg
ICAgIG1fdGFyZ2V0TGlzdGVuZXItPmF0dGFjaCh0YXJnZXQpOworICAgICAgICBtX3RhcmdldExp
c3RlbmVyLT5hdHRhY2godGFyZ2V0LmNvcHlSZWYoKSk7CiAKICAgICB1cGRhdGVSZWZlcmVuY2Vk
VGV4dCh0YXJnZXQuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCAxOTMxMzIxNGU5YjJh
N2YxMzNhNjg5ZTViYjViYTFjMDZlNDIwM2MyLi4zODViYTc3MDQ2YzQ1ZTkwMzFiZTg4MmMxZjZk
Nzk0NGMyYWQ0ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBGaWx0ZXJF
ZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkKTsKIH0KIAotdm9p
ZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IHBycEVmZmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCit2b2lk
IFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8
RmlsdGVyRWZmZWN0PiYmIHBycEVmZmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gcHJwRWZmZWN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5k
ZXggMDg2N2QyODljYjE5YTQ0Zjk4ZTBkMmQyNDgzNmJmZDI1OGJhMmQ1MS4uODA0MDg2YjU1NmQ4
YzU2OGRiZDhmOWI4OWI1NzI2MDdmNWEwYzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMjUsNyArMjUs
NiBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NCw3
ICs0Myw3IEBAIHB1YmxpYzoKICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAgRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgpOyB9CiAKLSAgICB2b2lkIGFwcGVuZEVm
ZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4sIFJlbmRlck9i
amVjdCopOworICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+JiYsIFJlbmRlck9iamVjdCopOwogCiAgICAgaW5saW5lIEZpbHRlckVmZmVj
dFNldCYgZWZmZWN0UmVmZXJlbmNlcyhGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260399</attachid>
            <date>2015-09-01 18:42:58 -0700</date>
            <delta_ts>2015-09-02 19:44:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150902104239.patch</filename>
            <type>text/plain</type>
            <size>28067</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJkNmU1ZjBiZjI2M2Q5
MTA2MWY3Njc1ODBmZjdiMWQ4OTEzNDQ0OC4uM2IzYzA4ZDg4MmViZGU1YzFjYTk5OGM2MjdjYThm
ODVlNjVkY2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA5LTAxICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0
ciBpbiBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29y
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJn
ZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1h
Z2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVE
b2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3Nl
ZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0
aWVzLmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDE1LTA5
LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTm9kZUZpbHRl
ciBzaG91bGQgYmUgYSBjYWxsYmFjayBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApp
bmRleCA3MjNiOTg4ZDk0ZWExOGE5ZTQ4ODBhMzQ2ZGQ1OWUzMTVmZDQ1M2ZkLi5hOWY2NmMyOTU1
ZWEyMmZhYmU4ZjY2NTI2ZmMyN2MzM2NjZDQyNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
CkBAIC0yMTEsOSArMjExLDkgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlz
aCgpCiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0g
ICAgYm9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
bGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50
KQogICAgICAgICBtX2hhc0VuZGVkTGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVycyhldmVudE5h
bWVzKCkuZW5kZWRFdmVudCk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUu
aAppbmRleCA2ODBhZjQ2NzgwYzdiZjcxYmQzNmIxMzM5NmJmMWZiM2M3MGQ2ZmIxLi4wOTkzMGEw
YzE1ZGM4MzRlZWExNWFlMGU4M2E3MDcwMWU5NjhmMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgK
QEAgLTEwMyw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBV
bmtub3duVGltZTsKIAogcHJpdmF0ZToKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wg
dXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmNwcAppbmRleCBmZWZkNmM2OWQyYjc1ZDM2NWYwNWI2ZjQzYTg4OTNmNzU5ZDlh
Y2I4Li4zYmQxMjdmZTIwMjcyOGJhYzhlYTBlMjcxN2QxNTAyYWM1YzQ3ZjM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHAKQEAgLTI3Myw5ICsyNzMsOSBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0
ZW5jeVRpbWUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCk7CiB9CiAKLWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2Rl
OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LCB1c2VDYXB0dXJlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpOwogICAgIGlm
IChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZlbnQp
CiAgICAgICAgIG1faGFzQXVkaW9Qcm9jZXNzTGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZlbnQpOwogICAgIHJldHVybiBzdWNjZXNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaAppbmRleCA5NjFmMTIxMmEyNGI4OGYwZTUzMDFiNWM3NmJjYjI3N2EwZTU2M2ZlLi40NDEy
MDY5ZDZjNzkxMjZjN2E4NTVhNjkyM2NjOGNhMTkzNzNhNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNzMs
NyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAKLSAg
ICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlQWxs
RXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXJNYXAuY3BwCmluZGV4IGYwOWFiYmVhYjBmM2UxMDQyYTJkMDRkNjFhNzI4MGRjMzBlZTgzYjcu
LjM1YWY4MTEwNGUyN2JlOTU1ZjhkOTRjMzA3ZDFjOTRiNTM5NzNjZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgdm9p
ZCBjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VAogICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1h
cmt1cCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcmVkIHRvIHRoZSBzaGFkb3cgdHJlZSBkdXJp
bmcgY2xvbmluZy4KICAgICAgICAgaWYgKCgqbGlzdGVuZXJWZWN0b3IpW2ldLmxpc3RlbmVyLT53
YXNDcmVhdGVkRnJvbU1hcmt1cCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHRh
cmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICgqbGlzdGVuZXJWZWN0b3IpW2ldLmxp
c3RlbmVyLCAoKmxpc3RlbmVyVmVjdG9yKVtpXS51c2VDYXB0dXJlKTsKKyAgICAgICAgdGFyZ2V0
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKCgqbGlzdGVuZXJWZWN0b3IpW2ldLmxpc3Rl
bmVyKS5jb3B5UmVmKCksICgqbGlzdGVuZXJWZWN0b3IpW2ldLnVzZUNhcHR1cmUpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMWU1MTU3NzVjNTYyYzUzYWUx
YmQ3NTM4NTAzYjMxZjc3MTZhZmIyMS4uNzM4NDI5NjA0YzhkZDEyNDU0Yzg2YjNmOTFlYjFlY2U3
MmNlMDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC03NCw5ICs3NCw5IEBA
IGJvb2wgRXZlbnRUYXJnZXQ6OmlzTWVzc2FnZVBvcnQoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9v
bCB1c2VDYXB0dXJlKQorYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICByZXR1cm4gZW5zdXJlRXZlbnRUYXJnZXREYXRhKCku
ZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7Cisg
ICAgcmV0dXJuIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2
ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJvb2wgRXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oCmluZGV4IDg2ZmUzYmM3Yzg2OGI1NTgyY2Y1ODk0ZmU5MGYwNmFkOWVkYzA5
YWYuLjY4OGU2ZmY3MGI5MmNiNjg5M2JjOTlkZTc5MGYwNjg5ZDdhNzkyZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
RE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwogICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VQb3J0
KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSk7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIHZpcnR1YWwgYm9vbCBk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCmluZGV4IDJkYmFiZTU5NzU2MjA5YWRkZDZmMjA1ZjgwZjViZjZkNGZmMGYwMjYuLjExNjNh
MDg5MGFjMDU5OGViZmYwMWY3ZTExMGIzMDFkZWZiODljZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcApAQCAtMjI0LDExICsyMjQsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0QXJyYXk+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnQK
ICAgICByZXR1cm4gcG9ydEFycmF5OwogfQogCi1ib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE1lc3NhZ2VQb3J0OjphZGRF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChsaXN0ZW5l
ciAmJiBsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
Lm1lc3NhZ2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKLSAgICByZXR1cm4gRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VD
YXB0dXJlKTsKKyAgICByZXR1cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IDEx
ZmNmNTczZWFjYWMzMDNmOGNmZGJjZjIxM2Y3MGM5NjU0NjZhNzEuLjc0M2RlMGY0ZDQ3ZDAzZGRm
NTM2YzY2Y2RmMzVkNjRiOWNmMGVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBAIC05
Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQSBwb3J0IGdldHMg
bmV1dGVyZWQgd2hlbiBpdCBpcyB0cmFuc2ZlcnJlZCB0byBhIG5ldyBvd25lciB2aWEgcG9zdE1l
c3NhZ2UoKS4KICAgICAgICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fZW50YW5nbGVk
Q2hhbm5lbDsgfQogCi0gICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1lc3NhZ2VQ
b3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBlZWI5MmE2
YWQ5MzhiZDg1MjMxZmRiNTMwYmVkODk5ZTA4Y2Y1ZWFhLi4xNTQ5OTAyYWYxYmEyNjYxNmVmNmUy
NzMyOTcwYjEzOTVlNjVlYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODcxLDcgKzE4NzEsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2Rl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciA9IHBycExpc3RlbmVyOwogCi0gICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKKyAg
ICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChl
dmVudFR5cGUpOwpAQCAtMTkwNSw5ICsxOTA1LDkgQEAgc3RhdGljIGlubGluZSBib29sIHRyeUFk
ZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmUK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhp
cywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIHRyeUFkZEV2
ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0
dXJlKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9k
ZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5MjllY2U0MmM4
ZWI3YzJiNWE0MzhlNTlmNWUxNzc2YWIxODlkMDY1Li4xODQ4N2E2ZTU2OWFmNDM3MmE2YmE2Mjcw
YjA3MTlkY2VjNGI3Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOyAvLyBJbXBsZW1lbnRl
ZCBpbiBEb2N1bWVudC5oCiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9v
bCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3Bh
dGNoRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA3
NDkwNjE5ZjFhZWJlNGE3N2M1MWVjZmIxNmU2MGZjYjA5NGJjY2Y0Li42ZGVjMTg5MTc2MGY2YTNi
YTQzOGIxNjNiM2M2YjdlMGI2ODg4NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTUwNDUsNyArNTA0NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICByZXR1cm4gSFRN
TEVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgSFRN
TE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
IHsKICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3Rhcmdl
dGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDU2NGE2MGQ3Y2UyODA2ODUwN2Q4ODQwM2FlYWU3
MmE0ODZhNTFlMDUuLjBkOGI0ZWY0YzNhYjllMWFiZTZlNmFhN2Q0Y2ZkODMzM2I3YzRmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMzUsNyArMzM1LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lk
IHdlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpOwotICAgIHZpcnR1YWwgYm9vbCBhZGRF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9v
bCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDgxYjVlZWVkOTU1MWJmYjZlMzMzZDRj
MWQ5Yjc5NmNkNzlkNjFmY2MuLmQxNWUyYjljMmNkMmQ4YjdkYjQ2NTljYTUyMzk2Y2E2MjY5YWFj
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjM5LDcgKzIzOSw3
IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogI2Vsc2UK
ICAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3Rl
bmVyOjpjcmVhdGUoKnRoaXMpOwogICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSB0aGlz
LT5kb21XaW5kb3coKSkKLSAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVz
aXplIiwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0
ZW5lcigicmVzaXplIiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CiAgICAgICAgIGltYWdl
RWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBsaXN0ZW5lci5yZWxlYXNlKCksIGZh
bHNlKTsKICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDhmZGJhMGQwMzQ4NTAzYTJhNmU4ZTBkMGU4NjQ3
ZTkzZjk2NjRmODMuLjYxN2M0N2Y5NzkzODY3YmI1ZTRhNTk1ZDEzMjhmZDQ4ZThlMTFlYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cApAQCAtNTA5LDE1ICs1MDksMTUgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3dDbG9z
ZWRDYXB0aW9uVHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgQ1NTVmFsdWVOb25lKTsKIAogICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXIoKTsKLSAgICBtX2Nsb3NlZENh
cHRpb25zQ29udGFpbmVyLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50
LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbGlzdGVuZXIuY29weVJlZigpLCB0
cnVlKTsKIAogICAgIC8vIFRyYWNrIGNsaWNrIGV2ZW50cyBpbiB0aGUgY2FwdHVyZSBwaGFzZSBh
dCB0d28gbGV2ZWxzLCBmaXJzdCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwKICAgICAvLyBzdWNoIHRo
YXQgYSBjbGljayBvdXRzaWRlIG9mIHRoZSA8dmlkZW8+IG1heSBkaXNtaXNzIHRoZSB0cmFjayBs
aXN0LCBzZWNvbmQgYXQgdGhlCiAgICAgLy8gbWVkaWEgY29udHJvbHMgbGV2ZWwgc3VjaCB0aGF0
IGEgY2xpY2sgYW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgdHJhY2sgbGlzdCBoaWRlcyB0aGUKICAg
ICAvLyB0cmFjayBsaXN0LiBUaGVzZSB0d28gbGV2ZWxzIGFyZSBuZWNlc3Nhcnkgc2luY2UgaXQg
d291bGQgbm90IGJlIHBvc3NpYmxlIHRvIGdldCBhCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoZSB0
cmFjayBsaXN0IHdoZW4gaGFuZGxpbmcgdGhlIGV2ZW50IG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0
cmVlLgotICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgbGlzdGVuZXIsIHRydWUpOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVlKTsKKyAgICBkb2N1bWVudCgpLmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdHJ1ZSk7
CisgICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIu
Y29weVJlZigpLCB0cnVlKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmhpZGVDbG9z
ZWRDYXB0aW9uVHJhY2tMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBmZTRi
OWFmMDI1OTIyN2IzOTVjMTU2ZWYzOTYwNTMyOTM3OTZjZDM4Li5mYTEwNmRhOWViNDgwOGQ1MmE1
NDRmYjllNGMzNDIzZTBmYWEyM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0x
NjkyLDkgKzE2OTIsOSBAQCBzdGF0aWMgdm9pZCBkaWRBZGRTdG9yYWdlRXZlbnRMaXN0ZW5lcihE
T01XaW5kb3cqIHdpbmRvdykKICAgICB3aW5kb3ctPnNlc3Npb25TdG9yYWdlKElHTk9SRV9FWENF
UFRJT04pOwogfQogCi1ib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKKyAgICBpZiAoIUV2ZW50VGFy
Z2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VD
YXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKERvY3VtZW50KiBkb2N1
bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGY2
ZDI4NWNiZTM0MDY4MzA4ZmYxODkwMzYzODNlZThkMDhjYzZkMGMuLjdlNmI1OGY5MmM2YzUyOTg1
MjAwMjRmNDRlZGVjZmIzZmE5MTczMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjcz
LDcgKzI3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBFdmVudHMKICAg
ICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJCi0gICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIGJvb2wg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKaW5kZXggMDRlYWQxYThiZWE2NGE0YWYzNjMwNmFmZTc1OTE2YjlkMDdjODhlNy4uMjA3
ODViYzM3M2Q2ZjI2NmM4NWQ4ZDZlODU2OTUzNmFiZDM1ZmIwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkKICAgICAgICAgICAgIGJ1
aWxkZXItPmNsZWFyRWZmZWN0cygpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgYnVpbGRlci0+YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKGVm
ZmVjdCwgZWxlbWVudC5yZW5kZXJlcigpKTsKKyAgICAgICAgYnVpbGRlci0+YXBwZW5kRWZmZWN0
VG9FZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC5jb3B5UmVmKCksIGVsZW1lbnQucmVuZGVyZXIoKSk7
CiAgICAgICAgIGVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7CiAg
ICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0OjpyZXNv
bHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVsZW1l
bnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCkp
OwogICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJl
cigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENJ
X0xJTkVBUlJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA1MWZjNmZlZmJmY2U0OTI3NjEyOGNjNDk0
NzUwMmY0NWVjMzMzMmFiLi4yODc3ODIyMjBjNGIxMWViZTM5Y2FiYTFlN2MzNDZkZWY1MWM1Njdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC01NzEsMTIgKzU3MSwxMiBAQCBib29s
IFNWR0VsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBwcnBMaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBTVkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBwcnBMaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lciA9IHBycExpc3RlbmVyOwogICAgIAogICAgIC8vIEFkZCBldmVudCBsaXN0ZW5lciB0byBy
ZWd1bGFyIERPTSBlbGVtZW50Ci0gICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjb250YWluaW5nU2hhZG93Um9vdCgpKQpAQCAtNTg2
LDcgKzU4Niw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVuCiAgICAgQVNTRVJUKCFpbnN0YW5j
ZVVwZGF0ZXNCbG9ja2VkKCkpOwogICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiBpbnN0YW5jZXMo
KSkgewogICAgICAgICBBU1NFUlQoaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgPT0g
dGhpcyk7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gaW5zdGFuY2UtPk5vZGU6OmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2wgcmVz
dWx0ID0gaW5zdGFuY2UtPk5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDFlYmY4Y2NlNjdh
ZTgwNDAzOGI1NWQ2OTU1OGM0MmFiM2JhYjRmNTguLjNjNmI1ZTIxNTdmODc2OGI2MzVkNWJmNGRm
ZDAzZGU1ZWI1YTNjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMzQsNyArMzQsNiBA
QAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTQxLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBh
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBo
YXNGb2N1c0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwCmluZGV4IDU0ODI1NjE2MWZmMjRiYTg5MTMxN2YwODZkZmM4OWNjMDVlZjE4MmIu
LjZlODQwNWQ2YTE3NDIyZGM0Mzg1NTJiOWRiYjUyODA3NjZmYTFhMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgU1ZHUGF0aEVs
ZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSByb2xlLCBMaXN0TW9kaWZp
Y2F0aW9uIGxpCiAgICAgY2FzZSBQYXRoU2VnVW5hbHRlcmVkUm9sZToKICAgICAgICAgaWYgKGxp
c3RNb2RpZmljYXRpb24gPT0gTGlzdE1vZGlmaWNhdGlvbkFwcGVuZCkgewogICAgICAgICAgICAg
QVNTRVJUKCFtX3BhdGhTZWdMaXN0LnZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBhcHBl
bmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKG1fcGF0aFNlZ0xpc3QudmFsdWUubGFz
dCgpLCBtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBVbmFsdGVyZWRQYXJzaW5nKTsKKyAgICAgICAg
ICAgIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcobV9wYXRoU2VnTGlzdC52
YWx1ZS5sYXN0KCkuY29weVJlZigpLCBtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBVbmFsdGVyZWRQ
YXJzaW5nKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBidWlsZFNWR1BhdGhCeXRlU3Ry
ZWFtRnJvbVNWR1BhdGhTZWdMaXN0KG1fcGF0aFNlZ0xpc3QudmFsdWUsIG1fcGF0aEJ5dGVTdHJl
YW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAppbmRleCA4ZmE2MjgwYTc1MGE3YTdhNGU2OWJjMGI4
NTE4ZTQzODMxMTZjMzk3Li5hZWE1ZjUxNzY0MjhlOGY1OGM0MzViMjE5OTdmMjk5OWQzYWVmZjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCkBAIC0xMzksMTQgKzEz
OSwxNCBAQCBib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29u
c3QgU1ZHUGF0aFNlZ0xpc3QmIGxpc3QsIFNWR1BhdAogICAgIHJldHVybiBvazsKIH0KIAotYm9v
bCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFBhc3NSZWZQdHI8U1ZHUGF0
aFNlZz4gcGF0aFNlZywgU1ZHUGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2Rl
IHBhcnNpbmdNb2RlKQorYm9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2Vn
KFJlZlB0cjxTVkdQYXRoU2VnPiYmIHBhdGhTZWcsIFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQs
IFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKIHsKICAgICBBU1NFUlQocmVzdWx0KTsKICAg
ICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEy
IC0gSW1wbGVtZW50IG5vcm1hbGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAgIEFTU0VSVChw
YXJzaW5nTW9kZSA9PSBVbmFsdGVyZWRQYXJzaW5nKTsKIAogICAgIFNWR1BhdGhTZWdMaXN0IGFw
cGVuZGVkSXRlbUxpc3QoUGF0aFNlZ1VuYWx0ZXJlZFJvbGUpOwotICAgIGFwcGVuZGVkSXRlbUxp
c3QuYXBwZW5kKHBhdGhTZWcpOworICAgIGFwcGVuZGVkSXRlbUxpc3QuYXBwZW5kKFdURjo6bW92
ZShwYXRoU2VnKSk7CiAgICAgYXV0byBhcHBlbmRlZEJ5dGVTdHJlYW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVy
KiBidWlsZGVyID0gZ2xvYmFsU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKGFwcGVuZGVkQnl0ZVN0
cmVhbS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAppbmRleCBiMDc4
YTVlNzEwZGY0ZTQyZjBhNWYwZjgyMTM0YzEwOTg1YWZjOGY0Li5jMmQxZjE0YzA0ZWMxYTU0Mjk5
M2NmOGVjNzYxM2Y5YWUwZDZiNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVz
LmgKQEAgLTM4LDcgKzM4LDcgQEAgYm9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShTVkdQYXRo
Qnl0ZVN0cmVhbSosIFBhdGgmKTsKIAogLy8gU1ZHUGF0aFNlZ0xpc3QvU3RyaW5nIC0+IFNWR1Bh
dGhCeXRlU3RyZWFtCiBib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xp
c3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5n
TW9kZSk7Ci1ib29sIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUGFzc1Jl
ZlB0cjxTVkdQYXRoU2VnPiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01vZGUpOwor
Ym9vbCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJlZlB0cjxTVkdQYXRo
U2VnPiYmLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7CiBib29sIGJ1aWxk
U1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYsIFNWR1BhdGhCeXRlU3Ry
ZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKIAogLy8gU1ZHUGF0aEJ5dGVTdHJlYW0vU1ZHUGF0aFNl
Z0xpc3QgLT4gU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBl
M2ZhZDhkNTkwYzU0ZGU2YmU5NDY3OWM5NTcxN2I5ODVhYzc0YTIxLi4zYjU4NzhlMzhhYWRjMjE3
ZGE5ZDI4MWZlMjg2MDNjYjI5N2MxZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdGVuZXIt
PnR5cGUoKSA9PSBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lclR5cGUgPyBzdGF0aWNfY2FzdDxj
b25zdCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcio+KGxpc3RlbmVyKSA6IG51bGxwdHI7CiAg
ICAgfQogCi0gICAgdm9pZCBhdHRhY2goUGFzc1JlZlB0cjxFbGVtZW50PiB0YXJnZXQpOworICAg
IHZvaWQgYXR0YWNoKFJlZlB0cjxFbGVtZW50PiYmIHRhcmdldCk7CiAgICAgdm9pZCBkZXRhY2go
KTsKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsg
fQogCkBAIC04Niw3ICs4Niw3IEBAIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpTVkdUUmVm
VGFyZ2V0RXZlbnRMaXN0ZW5lcihTVkdUUmVmRWxlbWVudCYgdHJlZkVsZW1lCiB7CiB9CiAKLXZv
aWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFjaChQYXNzUmVmUHRyPEVsZW1lbnQ+
IHRhcmdldCkKK3ZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFjaChSZWZQdHI8
RWxlbWVudD4mJiB0YXJnZXQpCiB7CiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkpOwogICAgIEFT
U0VSVCh0YXJnZXQuZ2V0KCkpOwpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNWR1RSZWZUYXJnZXRF
dmVudExpc3RlbmVyOjphdHRhY2goUGFzc1JlZlB0cjxFbGVtZW50PiB0YXJnZXQpCiAKICAgICB0
YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2
ZW50LCB0aGlzLCBmYWxzZSk7CiAgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAg
bV90YXJnZXQgPSB0YXJnZXQ7CisgICAgbV90YXJnZXQgPSBXVEY6Om1vdmUodGFyZ2V0KTsKIH0K
IAogdm9pZCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6ZGV0YWNoKCkKQEAgLTI0OSw3ICsy
NDksNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAg
Ly8gZXhwZWN0cyBldmVyeSBlbGVtZW50IGluc3RhbmNlIHRvIGhhdmUgYW4gYXNzb2NpYXRlZCBz
aGFkb3cgdHJlZSBlbGVtZW50IC0gd2hpY2ggaXMgbm90IHRoZQogICAgIC8vIGNhc2Ugd2hlbiB3
ZSBsYW5kIGhlcmUgZnJvbSBTVkdVc2VFbGVtZW50OjpidWlsZFNoYWRvd1RyZWUoKS4KICAgICBp
ZiAoIWlzSW5TaGFkb3dUcmVlKCkpCi0gICAgICAgIG1fdGFyZ2V0TGlzdGVuZXItPmF0dGFjaCh0
YXJnZXQpOworICAgICAgICBtX3RhcmdldExpc3RlbmVyLT5hdHRhY2godGFyZ2V0LmNvcHlSZWYo
KSk7CiAKICAgICB1cGRhdGVSZWZlcmVuY2VkVGV4dCh0YXJnZXQuZ2V0KCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmNwcAppbmRleCAxOTMxMzIxNGU5YjJhN2YxMzNhNjg5ZTViYjViYTFjMDZlNDIwM2MyLi5j
Yzk5NTQ4OTg4OTRkMDNlN2YwMWRhNTIxMDk3NTQ0NTAwODY0NGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNw
cApAQCAtNjIsOSArNjIsOSBAQCBGaWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVm
ZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1l
ZEVmZmVjdHMuZ2V0KGlkKTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZl
Y3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHBycEVmZmVjdCwg
UmVuZGVyT2JqZWN0KiBvYmplY3QpCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVj
dFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiYmIGZpbHRlckVmZmVjdCwg
UmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gcHJwRWZmZWN0OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IFdURjo6bW92
ZShmaWx0ZXJFZmZlY3QpOwogCiAgICAgLy8gVGhlIGVmZmVjdCBtdXN0IGJlIGEgbmV3bHkgY3Jl
YXRlZCBmaWx0ZXIgZWZmZWN0LgogICAgIEFTU0VSVCghbV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRh
aW5zKGVmZmVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IDA4NjdkMjg5Y2IxOWE0NGY5OGUwZDJkMjQ4
MzZiZmQyNThiYTJkNTEuLjgwNDA4NmI1NTZkOGM1NjhkYmQ4ZjliODliNTcyNjA3ZjVhMGM5Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgRmlsdGVy
RWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogICAg
IEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5n
ZXQoKTsgfQogCi0gICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+LCBSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGFwcGVuZEVmZmVj
dFRvRWZmZWN0UmVmZXJlbmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiYmLCBSZW5kZXJPYmplY3Qq
KTsKIAogICAgIGlubGluZSBGaWx0ZXJFZmZlY3RTZXQmIGVmZmVjdFJlZmVyZW5jZXMoRmlsdGVy
RWZmZWN0KiBlZmZlY3QpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260475</attachid>
            <date>2015-09-02 19:44:43 -0700</date>
            <delta_ts>2015-09-02 20:22:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150903114442.patch</filename>
            <type>text/plain</type>
            <size>28730</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4MjUwYWM4Nzk0Y2Vh
MjU4NjA3MmJmNTcwZTMxMjQ4YzMyNDEzNi4uMGExMzhhMWIyNGU0MzNmNGQzZWJhNTg4OTIwMzlj
MzAxN2Q0ZGIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA5LTAyICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0
ciBpbiBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29y
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJn
ZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1h
Z2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVE
b2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3Nl
ZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0
aWVzLmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDE1LTA5
LTAyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc29tZSBI
b3VkaW5pIHNwZWNzIHRvIHRoZSBmZWF0dXJlcyBsaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAK
aW5kZXggNzIzYjk4OGQ5NGVhMThhOWU0ODgwYTM0NmRkNTllMzE1ZmQ0NTNmZC4uYzc4ZTc2MWM4
YmU0MDJhZGFhMmU1NWQyMjFiMmEyYmRiZGZjZjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNw
cApAQCAtMjExLDkgKzIxMSw5IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5p
c2goKQogICAgIH0KIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewot
ICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJl
KTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmVuZGVkRXZl
bnQpCiAgICAgICAgIG1faGFzRW5kZWRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50
TmFtZXMoKS5lbmRlZEV2ZW50KTsKICAgICByZXR1cm4gc3VjY2VzczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5oCmluZGV4IDY4MGFmNDY3ODBjN2JmNzFiZDM2YjEzMzk2YmYxZmIzYzcwZDZmYjEuLjA5OTMw
YTBjMTVkYzgzNGVlYTE1YWUwZTgzYTcwNzAxZTk2OGYwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUu
aApAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IFVua25vd25UaW1lOwogCiBwcml2YXRlOgotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9v
bCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVz
ZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwCmluZGV4IGZlZmQ2YzY5ZDJiNzVkMzY1ZjA1YjZmNDNhODg5M2Y3NTlk
OWFjYjguLjkyOThhZWQyMmU2MDgyOTM2ZjM5ZDQ0NDQ5YThkYmE4YmM3NjQxMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcApAQCAtMjczLDkgKzI3Myw5IEBAIGRvdWJsZSBTY3JpcHRQcm9jZXNzb3JOb2RlOjps
YXRlbmN5VGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKTsKIH0KIAotYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgYm9v
bCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOworICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogICAg
IGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZl
bnQpCiAgICAgICAgIG1faGFzQXVkaW9Qcm9jZXNzTGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZlbnQpOwogICAgIHJldHVybiBzdWNjZXNzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuaAppbmRleCA5NjFmMTIxMmEyNGI4OGYwZTUzMDFiNWM3NmJjYjI3N2EwZTU2M2ZlLi40
NDEyMDY5ZDZjNzkxMjZjN2E4NTVhNjkyM2NjOGNhMTkzNzNhNzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAt
NzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAK
LSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICBi
b29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3Zl
QWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXJNYXAuY3BwCmluZGV4IGYwOWFiYmVhYjBmM2UxMDQyYTJkMDRkNjFhNzI4MGRjMzBlZTgz
YjcuLjM1YWY4MTEwNGUyN2JlOTU1ZjhkOTRjMzA3ZDFjOTRiNTM5NzNjZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMg
dm9pZCBjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VAogICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9t
IG1hcmt1cCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcmVkIHRvIHRoZSBzaGFkb3cgdHJlZSBk
dXJpbmcgY2xvbmluZy4KICAgICAgICAgaWYgKCgqbGlzdGVuZXJWZWN0b3IpW2ldLmxpc3RlbmVy
LT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICgqbGlzdGVuZXJWZWN0b3IpW2ld
Lmxpc3RlbmVyLCAoKmxpc3RlbmVyVmVjdG9yKVtpXS51c2VDYXB0dXJlKTsKKyAgICAgICAgdGFy
Z2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKCgqbGlzdGVuZXJWZWN0b3IpW2ldLmxp
c3RlbmVyKS5jb3B5UmVmKCksICgqbGlzdGVuZXJWZWN0b3IpW2ldLnVzZUNhcHR1cmUpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMWU1MTU3NzVjNTYyYzUz
YWUxYmQ3NTM4NTAzYjMxZjc3MTZhZmIyMS4uNzM4NDI5NjA0YzhkZDEyNDU0Yzg2YjNmOTFlYjFl
Y2U3MmNlMDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC03NCw5ICs3NCw5
IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmlzTWVzc2FnZVBvcnQoKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICByZXR1cm4gZW5zdXJlRXZlbnRUYXJnZXREYXRh
KCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7
CisgICAgcmV0dXJuIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRk
KGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJvb2wg
RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCmluZGV4IDg2ZmUzYmM3Yzg2OGI1NTgyY2Y1ODk0ZmU5MGYwNmFkOWVk
YzA5YWYuLjY4OGU2ZmY3MGI5MmNiNjg5M2JjOTlkZTc5MGYwNjg5ZDdhNzkyZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwogICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VQ
b3J0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2Fw
dHVyZSk7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIHZpcnR1YWwgYm9v
bCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCmluZGV4IDJkYmFiZTU5NzU2MjA5YWRkZDZmMjA1ZjgwZjViZjZkNGZmMGYwMjYuLjEx
NjNhMDg5MGFjMDU5OGViZmYwMWY3ZTExMGIzMDFkZWZiODljZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcApAQCAtMjI0LDExICsyMjQsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VQb3J0QXJyYXk+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNv
bnQKICAgICByZXR1cm4gcG9ydEFycmF5OwogfQogCi1ib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE1lc3NhZ2VQb3J0Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChsaXN0
ZW5lciAmJiBsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1l
cygpLm1lc3NhZ2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKLSAgICByZXR1cm4gRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1
c2VDYXB0dXJlKTsKKyAgICByZXR1cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4
IDExZmNmNTczZWFjYWMzMDNmOGNmZGJjZjIxM2Y3MGM5NjU0NjZhNzEuLjc0M2RlMGY0ZDQ3ZDAz
ZGRmNTM2YzY2Y2RmMzVkNjRiOWNmMGVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBA
IC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQSBwb3J0IGdl
dHMgbmV1dGVyZWQgd2hlbiBpdCBpcyB0cmFuc2ZlcnJlZCB0byBhIG5ldyBvd25lciB2aWEgcG9z
dE1lc3NhZ2UoKS4KICAgICAgICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fZW50YW5n
bGVkQ2hhbm5lbDsgfQogCi0gICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1lc3Nh
Z2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmZGM3
ZmI1NTBkYTE1ZjNjNTllNTk2ZDU2MTNmNzMyNTJjOTUxOGJhLi4xNDUxNGJhNzNkMjM5ZTM0ZTY0
NTJjZGNkNGNlYTE0ZWIxYjE0MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODcxLDcgKzE4NzEs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXRO
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciA9IHBycExpc3RlbmVyOwogCi0gICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRh
cmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkK
KyAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5cGVJZk5lZWRl
ZChldmVudFR5cGUpOwpAQCAtMTkwNSw5ICsxOTA1LDkgQEAgc3RhdGljIGlubGluZSBib29sIHRy
eUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIo
dGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIHRyeUFk
ZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VD
YXB0dXJlKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIo
Tm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5MjllY2U0
MmM4ZWI3YzJiNWE0MzhlNTlmNWUxNzc2YWIxODlkMDY1Li4xODQ4N2E2ZTU2OWFmNDM3MmE2YmE2
MjcwYjA3MTlkY2VjNGI3Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOyAvLyBJbXBsZW1l
bnRlZCBpbiBEb2N1bWVudC5oCiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwg
Ym9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRp
c3BhdGNoRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA3NDkwNjE5ZjFhZWJlNGE3N2M1MWVjZmIxNmU2MGZjYjA5NGJjY2Y0Li44NTQzMmYyN2QzMTM2
ZGRjNTU0NGFjYjI3MWRjNDVjNzc4NTc3Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTUwNDUsMTMgKzUwNDUsMTMgQEAgYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIHJldHVy
biBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0
dXJlKQogewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNr
dGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQotICAgICAgICByZXR1cm4gTm9kZTo6YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICAgICAg
cmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVm
KCksIHVzZUNhcHR1cmUpOwogCiAgICAgYm9vbCBpc0ZpcnN0QXZhaWxhYmlsaXR5Q2hhbmdlZExp
c3RlbmVyID0gIWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3Rh
cmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCk7Ci0gICAgaWYgKCFOb2RlOjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVy
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpc0ZpcnN0QXZhaWxhYmlsaXR5
Q2hhbmdlZExpc3RlbmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IDU2NGE2MGQ3Y2UyODA2ODUwN2Q4ODQwM2FlYWU3MmE0ODZhNTFlMDUuLjBkOGI0ZWY0YzNh
YjllMWFiZTZlNmFhN2Q0Y2ZkODMzM2I3YzRmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC0zMzUsNyArMzM1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHdlYmtpdFNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcigpOwotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNl
Q2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFp
bGFibGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwCmluZGV4IDgxYjVlZWVkOTU1MWJmYjZlMzMzZDRjMWQ5Yjc5NmNkNzlkNjFmY2MuLjk4MGVh
NGVjZjFkNmY0YmRjYWI3ZGY3OTFiODNiZGQzNzkyNzY0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcApAQCAtMjM5LDggKzIzOSw4IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6
Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogI2Vsc2UKICAgICAgICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwogICAg
ICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSB0aGlzLT5kb21XaW5kb3coKSkKLSAgICAgICAg
ICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlzdGVuZXIsIGZhbHNlKTsK
LSAgICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGxpc3RlbmVy
LnJlbGVhc2UoKSwgZmFsc2UpOworICAgICAgICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVy
KCJyZXNpemUiLCBsaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKyAgICAgICAgaW1hZ2VFbGVt
ZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFdURjo6bW92ZShsaXN0ZW5lciksIGZhbHNl
KTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHAKaW5kZXggOGZkYmEwZDAzNDg1MDNhMmE2ZThlMGQwZTg2NDdl
OTNmOTY2NGY4My4uNjE3YzQ3Zjk3OTM4NjdiYjVlNGE1OTVkMTMyOGZkNDhlOGUxMWVhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CkBAIC01MDksMTUgKzUwOSwxNSBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3Nl
ZENhcHRpb25UcmFja0xpc3QoKQogICAgIG1fcGFuZWwtPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBDU1NWYWx1ZU5vbmUpOwogCiAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcigpOwotICAgIG1fY2xvc2VkQ2Fw
dGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
IGxpc3RlbmVyLCB0cnVlKTsKKyAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBsaXN0ZW5lci5jb3B5UmVmKCksIHRy
dWUpOwogCiAgICAgLy8gVHJhY2sgY2xpY2sgZXZlbnRzIGluIHRoZSBjYXB0dXJlIHBoYXNlIGF0
IHR3byBsZXZlbHMsIGZpcnN0IGF0IHRoZSBkb2N1bWVudCBsZXZlbAogICAgIC8vIHN1Y2ggdGhh
dCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlIDx2aWRlbz4gbWF5IGRpc21pc3MgdGhlIHRyYWNrIGxp
c3QsIHNlY29uZCBhdCB0aGUKICAgICAvLyBtZWRpYSBjb250cm9scyBsZXZlbCBzdWNoIHRoYXQg
YSBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSB0cmFjayBsaXN0IGhpZGVzIHRoZQogICAg
IC8vIHRyYWNrIGxpc3QuIFRoZXNlIHR3byBsZXZlbHMgYXJlIG5lY2Vzc2FyeSBzaW5jZSBpdCB3
b3VsZCBub3QgYmUgcG9zc2libGUgdG8gZ2V0IGEKICAgICAvLyByZWZlcmVuY2UgdG8gdGhlIHRy
YWNrIGxpc3Qgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnQgb3V0c2lkZSBvZiB0aGUgc2hhZG93IHRy
ZWUuCi0gICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
Y2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIuY29weVJlZigpLCB0cnVlKTsK
KyAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lci5j
b3B5UmVmKCksIHRydWUpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3Nl
ZENhcHRpb25UcmFja0xpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGZlNGI5
YWYwMjU5MjI3YjM5NWMxNTZlZjM5NjA1MzI5Mzc5NmNkMzguLmZhMTA2ZGE5ZWI0ODA4ZDUyYTU0
NGZiOWU0YzM0MjNlMGZhYTIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE2
OTIsOSArMTY5Miw5IEBAIHN0YXRpYyB2b2lkIGRpZEFkZFN0b3JhZ2VFdmVudExpc3RlbmVyKERP
TVdpbmRvdyogd2luZG93KQogICAgIHdpbmRvdy0+c2Vzc2lvblN0b3JhZ2UoSUdOT1JFX0VYQ0VQ
VElPTik7CiB9CiAKLWJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCitib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAoIUV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghRXZlbnRUYXJn
ZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVmKCksIHVzZUNh
cHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggZjZk
Mjg1Y2JlMzQwNjgzMDhmZjE4OTAzNjM4M2VlOGQwOGNjNmQwYy4uN2U2YjU4ZjkyYzZjNTI5ODUy
MDAyNGY0NGVkZWNmYjNmYTkxNzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0yNzMs
NyArMjczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEV2ZW50cwogICAg
ICAgICAvLyBFdmVudFRhcmdldCBBUEkKLSAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgYm9vbCBh
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVh
bCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAppbmRleCAwNGVhZDFhOGJlYTY0YTRhZjM2MzA2YWZlNzU5MTZiOWQwN2M4OGU3Li5jM2Vk
YTI5OWRiZTVhYTg0OTVjZDNlODdjY2ZlNGM4ODllNjg3MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApA
QCAtODcsMTEgKzg3LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgICAgICAgICBi
dWlsZGVyLT5jbGVhckVmZmVjdHMoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9Ci0gICAgICAgIGJ1aWxkZXItPmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhl
ZmZlY3QsIGVsZW1lbnQucmVuZGVyZXIoKSk7CisgICAgICAgIGJ1aWxkZXItPmFwcGVuZEVmZmVj
dFRvRWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QuY29weVJlZigpLCBlbGVtZW50LnJlbmRlcmVyKCkp
OwogICAgICAgICBlbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwog
ICAgICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVz
b2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVt
ZW50LCBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gp
KTsKICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVy
ZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBD
SV9MSU5FQVJSR0IgPyBDb2xvclNwYWNlTGluZWFyUkdCIDogQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgICAgIGJ1aWxkZXItPmFkZChlbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgp
KTsKKyAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURjo6bW92ZShlZmZl
Y3QpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKaW5kZXggY2FjNzZkNmIwMDg2OTBkZGU2MDZmMTlkMzQzMTNiMzE4ZmRmYTA3MS4uODEz
ZTI3YjcxNjExYTNiMTgyNDMzYTZiNGNmYmU3MGQzNjk4YWExYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcApAQCAtNTcxLDEyICs1NzEsMTIgQEAgYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9h
ZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR0Vs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gcHJwTGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jv
b2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgcHJwTGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcnBMaXN0ZW5lcjsK
ICAgICAKICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gcmVndWxhciBET00gZWxlbWVudAot
ICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VD
YXB0dXJlKSkKKyAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0
ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIFNW
R0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbgogICAgIEFTU0VSVCghaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpKTsK
ICAgICBmb3IgKGF1dG8qIGluc3RhbmNlIDogaW5zdGFuY2VzKCkpIHsKICAgICAgICAgQVNTRVJU
KGluc3RhbmNlLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpID09IHRoaXMpOwotICAgICAgICBib29s
IHJlc3VsdCA9IGluc3RhbmNlLT5Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlz
dGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICBib29sIHJlc3VsdCA9IGluc3RhbmNlLT5Ob2Rl
OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0
dXJlKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCAxZWJmOGNjZTY3YWU4MDQwMzhiNTVkNjk1NThjNDJh
YjNiYWI0ZjU4Li4zYzZiNWUyMTU3Zjg3NjhiNjM1ZDViZjRkZmQwM2RlNWViNWEzYzg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0
MSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVp
cmVkUmVzb3VyY2VzKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9v
bCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVudExpc3RlbmVy
cygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCA1NDgy
NTYxNjFmZjI0YmE4OTEzMTdmMDg2ZGZjODljYzA1ZWYxODJiLi42ZTg0MDVkNmExNzQyMmRjNDM4
NTUyYjlkYmI1MjgwNzY2ZmExYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5j
cHAKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENo
YW5nZWQoU1ZHUGF0aFNlZ1JvbGUgcm9sZSwgTGlzdE1vZGlmaWNhdGlvbiBsaQogICAgIGNhc2Ug
UGF0aFNlZ1VuYWx0ZXJlZFJvbGU6CiAgICAgICAgIGlmIChsaXN0TW9kaWZpY2F0aW9uID09IExp
c3RNb2RpZmljYXRpb25BcHBlbmQpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9wYXRoU2VnTGlz
dC52YWx1ZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1G
cm9tU1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3QoKSwgbV9wYXRoQnl0ZVN0cmVh
bS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAgICBhcHBlbmRTVkdQYXRoQnl0
ZVN0cmVhbUZyb21TVkdQYXRoU2VnKG1fcGF0aFNlZ0xpc3QudmFsdWUubGFzdCgpLmNvcHlSZWYo
KSwgbV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlz
dChtX3BhdGhTZWdMaXN0LnZhbHVlLCBtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBVbmFsdGVyZWRQ
YXJzaW5nKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGll
cy5jcHAKaW5kZXggOGZhNjI4MGE3NTBhN2E3YTRlNjliYzBiODUxOGU0MzgzMTE2YzM5Ny4uOTEz
OWVkODMwMmM3ZWJkNTc4NmMwZGE5MGYwZWI1ZDYzYWI3YjExMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtMTM5LDE0ICsxMzksMTQgQEAgYm9vbCBidWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBs
aXN0LCBTVkdQYXQKICAgICByZXR1cm4gb2s7CiB9CiAKLWJvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU1ZHUGF0aFNlZyhQYXNzUmVmUHRyPFNWR1BhdGhTZWc+IHBhdGhTZWcsIFNWR1Bh
dGhCeXRlU3RyZWFtKiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKK2Jvb2wg
YXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhSZWZQdHI8U1ZHUGF0aFNlZz4m
JiBwYXRoU2VnLCBTVkdQYXRoQnl0ZVN0cmVhbSogcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFy
c2luZ01vZGUpCiB7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBub3JtYWxp
emVkIHBhdGggc2VnbWVudCBsaXN0cyEKICAgICBBU1NFUlQocGFyc2luZ01vZGUgPT0gVW5hbHRl
cmVkUGFyc2luZyk7CiAKICAgICBTVkdQYXRoU2VnTGlzdCBhcHBlbmRlZEl0ZW1MaXN0KFBhdGhT
ZWdVbmFsdGVyZWRSb2xlKTsKLSAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChwYXRoU2VnKTsK
KyAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChwYXRoU2VnLmNvcHlSZWYoKSk7CiAgICAgYXV0
byBhcHBlbmRlZEJ5dGVTdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFt
PigpOwogCiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKiBidWlsZGVyID0gZ2xvYmFsU1ZH
UGF0aEJ5dGVTdHJlYW1CdWlsZGVyKGFwcGVuZGVkQnl0ZVN0cmVhbS5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAppbmRleCBiMDc4YTVlNzEwZGY0ZTQyZjBhNWYwZjgy
MTM0YzEwOTg1YWZjOGY0Li5jMmQxZjE0YzA0ZWMxYTU0Mjk5M2NmOGVjNzYxM2Y5YWUwZDZiNGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKQEAgLTM4LDcgKzM4LDcgQEAg
Ym9vbCBidWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGgmKTsK
IAogLy8gU1ZHUGF0aFNlZ0xpc3QvU3RyaW5nIC0+IFNWR1BhdGhCeXRlU3RyZWFtCiBib29sIGJ1
aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xp
c3QmLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7Ci1ib29sIGFwcGVuZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUGFzc1JlZlB0cjxTVkdQYXRoU2VnPiwgU1ZH
UGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01vZGUpOworYm9vbCBhcHBlbmRTVkdQYXRoQnl0
ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJlZlB0cjxTVkdQYXRoU2VnPiYmLCBTVkdQYXRoQnl0ZVN0
cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7CiBib29sIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYsIFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2Rl
KTsKIAogLy8gU1ZHUGF0aEJ5dGVTdHJlYW0vU1ZHUGF0aFNlZ0xpc3QgLT4gU3RyaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBlM2ZhZDhkNTkwYzU0ZGU2YmU5NDY3
OWM5NTcxN2I5ODVhYzc0YTIxLi4zYjU4NzhlMzhhYWRjMjE3ZGE5ZDI4MWZlMjg2MDNjYjI5N2Mx
ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdGVuZXItPnR5cGUoKSA9PSBTVkdUUmVmVGFy
Z2V0RXZlbnRMaXN0ZW5lclR5cGUgPyBzdGF0aWNfY2FzdDxjb25zdCBTVkdUUmVmVGFyZ2V0RXZl
bnRMaXN0ZW5lcio+KGxpc3RlbmVyKSA6IG51bGxwdHI7CiAgICAgfQogCi0gICAgdm9pZCBhdHRh
Y2goUGFzc1JlZlB0cjxFbGVtZW50PiB0YXJnZXQpOworICAgIHZvaWQgYXR0YWNoKFJlZlB0cjxF
bGVtZW50PiYmIHRhcmdldCk7CiAgICAgdm9pZCBkZXRhY2goKTsKICAgICBib29sIGlzQXR0YWNo
ZWQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQogCkBAIC04Niw3ICs4Niw3IEBA
IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcihT
VkdUUmVmRWxlbWVudCYgdHJlZkVsZW1lCiB7CiB9CiAKLXZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50
TGlzdGVuZXI6OmF0dGFjaChQYXNzUmVmUHRyPEVsZW1lbnQ+IHRhcmdldCkKK3ZvaWQgU1ZHVFJl
ZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFjaChSZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQpCiB7
CiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkpOwogICAgIEFTU0VSVCh0YXJnZXQuZ2V0KCkpOwpA
QCAtOTQsNyArOTQsNyBAQCB2b2lkIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2go
UGFzc1JlZlB0cjxFbGVtZW50PiB0YXJnZXQpCiAKICAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCB0aGlzLCBmYWxzZSk7CiAg
ICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEZy
b21Eb2N1bWVudEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgbV90YXJnZXQgPSB0YXJnZXQ7Cisg
ICAgbV90YXJnZXQgPSBXVEY6Om1vdmUodGFyZ2V0KTsKIH0KIAogdm9pZCBTVkdUUmVmVGFyZ2V0
RXZlbnRMaXN0ZW5lcjo6ZGV0YWNoKCkKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFNWR1RSZWZF
bGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgLy8gZXhwZWN0cyBldmVyeSBlbGVt
ZW50IGluc3RhbmNlIHRvIGhhdmUgYW4gYXNzb2NpYXRlZCBzaGFkb3cgdHJlZSBlbGVtZW50IC0g
d2hpY2ggaXMgbm90IHRoZQogICAgIC8vIGNhc2Ugd2hlbiB3ZSBsYW5kIGhlcmUgZnJvbSBTVkdV
c2VFbGVtZW50OjpidWlsZFNoYWRvd1RyZWUoKS4KICAgICBpZiAoIWlzSW5TaGFkb3dUcmVlKCkp
Ci0gICAgICAgIG1fdGFyZ2V0TGlzdGVuZXItPmF0dGFjaCh0YXJnZXQpOworICAgICAgICBtX3Rh
cmdldExpc3RlbmVyLT5hdHRhY2godGFyZ2V0LmNvcHlSZWYoKSk7CiAKICAgICB1cGRhdGVSZWZl
cmVuY2VkVGV4dCh0YXJnZXQuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCAxOTMxMzIx
NGU5YjJhN2YxMzNhNjg5ZTViYjViYTFjMDZlNDIwM2MyLi5jYzk5NTQ4OTg4OTRkMDNlN2YwMWRh
NTIxMDk3NTQ0NTAwODY0NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtNjIsOSArNjIsOSBAQCBG
aWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkKTsKIH0K
IAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMo
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHBycEVmZmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3Qp
Cit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhS
ZWZQdHI8RmlsdGVyRWZmZWN0PiYmIGZpbHRlckVmZmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3Qp
CiB7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gcHJwRWZmZWN0OworICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IFdURjo6bW92ZShmaWx0ZXJFZmZlY3QpOwogCiAg
ICAgLy8gVGhlIGVmZmVjdCBtdXN0IGJlIGEgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgZWZmZWN0Lgog
ICAgIEFTU0VSVCghbV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKGVmZmVjdCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRl
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRl
ci5oCmluZGV4IDA4NjdkMjg5Y2IxOWE0NGY5OGUwZDJkMjQ4MzZiZmQyNThiYTJkNTEuLjgwNDA4
NmI1NTZkOGM1NjhkYmQ4ZjliODliNTcyNjA3ZjVhMGM5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTI1
LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtNDQsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlk
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVm
ZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQogCi0gICAgdm9pZCBh
cHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+LCBS
ZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhS
ZWZQdHI8RmlsdGVyRWZmZWN0PiYmLCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGlubGluZSBGaWx0
ZXJFZmZlY3RTZXQmIGVmZmVjdFJlZmVyZW5jZXMoRmlsdGVyRWZmZWN0KiBlZmZlY3QpCiAgICAg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260480</attachid>
            <date>2015-09-02 20:22:49 -0700</date>
            <delta_ts>2015-09-08 23:40:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150903122247.patch</filename>
            <type>text/plain</type>
            <size>28732</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4MjUwYWM4Nzk0Y2Vh
MjU4NjA3MmJmNTcwZTMxMjQ4YzMyNDEzNi4uMGExMzhhMWIyNGU0MzNmNGQzZWJhNTg4OTIwMzlj
MzAxN2Q0ZGIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA5LTAyICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0
ciBpbiBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29y
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJn
ZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQu
aDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1h
Z2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVE
b2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3Nl
ZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpi
dWlsZFByaW1pdGl2ZXMpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0
aWVzLmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDE1LTA5
LTAyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc29tZSBI
b3VkaW5pIHNwZWNzIHRvIHRoZSBmZWF0dXJlcyBsaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAK
aW5kZXggNzIzYjk4OGQ5NGVhMThhOWU0ODgwYTM0NmRkNTllMzE1ZmQ0NTNmZC4uYzc4ZTc2MWM4
YmU0MDJhZGFhMmU1NWQyMjFiMmEyYmRiZGZjZjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNw
cApAQCAtMjExLDkgKzIxMSw5IEBAIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5p
c2goKQogICAgIH0KIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewot
ICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJl
KTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmVuZGVkRXZl
bnQpCiAgICAgICAgIG1faGFzRW5kZWRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50
TmFtZXMoKS5lbmRlZEV2ZW50KTsKICAgICByZXR1cm4gc3VjY2VzczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5oCmluZGV4IDY4MGFmNDY3ODBjN2JmNzFiZDM2YjEzMzk2YmYxZmIzYzcwZDZmYjEuLjA5OTMw
YTBjMTVkYzgzNGVlYTE1YWUwZTgzYTcwNzAxZTk2OGYwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUu
aApAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IFVua25vd25UaW1lOwogCiBwcml2YXRlOgotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9v
bCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVz
ZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuY3BwCmluZGV4IGZlZmQ2YzY5ZDJiNzVkMzY1ZjA1YjZmNDNhODg5M2Y3NTlk
OWFjYjguLjkyOThhZWQyMmU2MDgyOTM2ZjM5ZDQ0NDQ5YThkYmE4YmM3NjQxMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcApAQCAtMjczLDkgKzI3Myw5IEBAIGRvdWJsZSBTY3JpcHRQcm9jZXNzb3JOb2RlOjps
YXRlbmN5VGltZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKTsKIH0KIAotYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0
cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgYm9v
bCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOworICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogICAg
IGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZl
bnQpCiAgICAgICAgIG1faGFzQXVkaW9Qcm9jZXNzTGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkuYXVkaW9wcm9jZXNzRXZlbnQpOwogICAgIHJldHVybiBzdWNjZXNzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuaAppbmRleCA5NjFmMTIxMmEyNGI4OGYwZTUzMDFiNWM3NmJjYjI3N2EwZTU2M2ZlLi40
NDEyMDY5ZDZjNzkxMjZjN2E4NTVhNjkyM2NjOGNhMTkzNzNhNzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAt
NzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAK
LSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICBi
b29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3Zl
QWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXJNYXAuY3BwCmluZGV4IGYwOWFiYmVhYjBmM2UxMDQyYTJkMDRkNjFhNzI4MGRjMzBlZTgz
YjcuLjM1YWY4MTEwNGUyN2JlOTU1ZjhkOTRjMzA3ZDFjOTRiNTM5NzNjZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMg
dm9pZCBjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VAogICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9t
IG1hcmt1cCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcmVkIHRvIHRoZSBzaGFkb3cgdHJlZSBk
dXJpbmcgY2xvbmluZy4KICAgICAgICAgaWYgKCgqbGlzdGVuZXJWZWN0b3IpW2ldLmxpc3RlbmVy
LT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICgqbGlzdGVuZXJWZWN0b3IpW2ld
Lmxpc3RlbmVyLCAoKmxpc3RlbmVyVmVjdG9yKVtpXS51c2VDYXB0dXJlKTsKKyAgICAgICAgdGFy
Z2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKCgqbGlzdGVuZXJWZWN0b3IpW2ldLmxp
c3RlbmVyKS5jb3B5UmVmKCksICgqbGlzdGVuZXJWZWN0b3IpW2ldLnVzZUNhcHR1cmUpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMWU1MTU3NzVjNTYyYzUz
YWUxYmQ3NTM4NTAzYjMxZjc3MTZhZmIyMS4uNzM4NDI5NjA0YzhkZDEyNDU0Yzg2YjNmOTFlYjFl
Y2U3MmNlMDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC03NCw5ICs3NCw5
IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmlzTWVzc2FnZVBvcnQoKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICByZXR1cm4gZW5zdXJlRXZlbnRUYXJnZXREYXRh
KCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7
CisgICAgcmV0dXJuIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRk
KGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKIGJvb2wg
RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCmluZGV4IDg2ZmUzYmM3Yzg2OGI1NTgyY2Y1ODk0ZmU5MGYwNmFkOWVk
YzA5YWYuLjY4OGU2ZmY3MGI5MmNiNjg5M2JjOTlkZTc5MGYwNjg5ZDdhNzkyZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwogICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VQ
b3J0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2Fw
dHVyZSk7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIHZpcnR1YWwgYm9v
bCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCmluZGV4IDJkYmFiZTU5NzU2MjA5YWRkZDZmMjA1ZjgwZjViZjZkNGZmMGYwMjYuLjEx
NjNhMDg5MGFjMDU5OGViZmYwMWY3ZTExMGIzMDFkZWZiODljZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcApAQCAtMjI0LDExICsyMjQsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VQb3J0QXJyYXk+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNv
bnQKICAgICByZXR1cm4gcG9ydEFycmF5OwogfQogCi1ib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE1lc3NhZ2VQb3J0Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChsaXN0
ZW5lciAmJiBsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1l
cygpLm1lc3NhZ2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKLSAgICByZXR1cm4gRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1
c2VDYXB0dXJlKTsKKyAgICByZXR1cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4
IDExZmNmNTczZWFjYWMzMDNmOGNmZGJjZjIxM2Y3MGM5NjU0NjZhNzEuLjc0M2RlMGY0ZDQ3ZDAz
ZGRmNTM2YzY2Y2RmMzVkNjRiOWNmMGVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBA
IC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQSBwb3J0IGdl
dHMgbmV1dGVyZWQgd2hlbiBpdCBpcyB0cmFuc2ZlcnJlZCB0byBhIG5ldyBvd25lciB2aWEgcG9z
dE1lc3NhZ2UoKS4KICAgICAgICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fZW50YW5n
bGVkQ2hhbm5lbDsgfQogCi0gICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1lc3Nh
Z2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmZGM3
ZmI1NTBkYTE1ZjNjNTllNTk2ZDU2MTNmNzMyNTJjOTUxOGJhLi4xNDUxNGJhNzNkMjM5ZTM0ZTY0
NTJjZGNkNGNlYTE0ZWIxYjE0MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODcxLDcgKzE4NzEs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXRO
b2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciA9IHBycExpc3RlbmVyOwogCi0gICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRh
cmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkK
KyAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5cGVJZk5lZWRl
ZChldmVudFR5cGUpOwpAQCAtMTkwNSw5ICsxOTA1LDkgQEAgc3RhdGljIGlubGluZSBib29sIHRy
eUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIo
dGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIHRyeUFk
ZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VD
YXB0dXJlKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIo
Tm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5MjllY2U0
MmM4ZWI3YzJiNWE0MzhlNTlmNWUxNzc2YWIxODlkMDY1Li4xODQ4N2E2ZTU2OWFmNDM3MmE2YmE2
MjcwYjA3MTlkY2VjNGI3Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOyAvLyBJbXBsZW1l
bnRlZCBpbiBEb2N1bWVudC5oCiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwg
Ym9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRp
c3BhdGNoRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA3NDkwNjE5ZjFhZWJlNGE3N2M1MWVjZmIxNmU2MGZjYjA5NGJjY2Y0Li4xNWJlZmM2NmM3MzVm
NWM2ZDkwZTBlOGI0MDMwMDgyY2E1YjQ3NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTUwNDUsMTMgKzUwNDUsMTMgQEAgYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIHJldHVy
biBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0
dXJlKQogewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNr
dGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQotICAgICAgICByZXR1cm4gTm9kZTo6YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICAgICAg
cmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVm
KCksIHVzZUNhcHR1cmUpOwogCiAgICAgYm9vbCBpc0ZpcnN0QXZhaWxhYmlsaXR5Q2hhbmdlZExp
c3RlbmVyID0gIWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3Rh
cmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCk7Ci0gICAgaWYgKCFOb2RlOjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1
cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXNGaXJzdEF2YWlsYWJpbGl0
eUNoYW5nZWRMaXN0ZW5lcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA1NjRhNjBkN2NlMjgwNjg1MDdkODg0MDNhZWFlNzJhNDg2YTUxZTA1Li4wZDhiNGVmNGMz
YWI5ZTFhYmU2ZTZhYTdkNGNmZDgzMzNiN2M0ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtMzM1LDcgKzMzNSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCB3ZWJraXRTaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoKTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wg
dXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVz
ZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzUm91dGVzQXZh
aWxhYmxlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAppbmRleCA4MWI1ZWVlZDk1NTFiZmI2ZTMzM2Q0YzFkOWI3OTZjZDc5ZDYxZmNjLi45ODBl
YTRlY2YxZDZmNGJkY2FiN2RmNzkxYjgzYmRkMzc5Mjc2NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIzOSw4ICsyMzksOCBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICNlbHNlCiAgICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKICAg
ICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gdGhpcy0+ZG9tV2luZG93KCkpCi0gICAgICAg
ICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGxpc3RlbmVyLCBmYWxzZSk7
Ci0gICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBsaXN0ZW5l
ci5yZWxlYXNlKCksIGZhbHNlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5l
cigicmVzaXplIiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CisgICAgICAgIGltYWdlRWxl
bWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBXVEY6Om1vdmUobGlzdGVuZXIpLCBmYWxz
ZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDhmZGJhMGQwMzQ4NTAzYTJhNmU4ZTBkMGU4NjQ3
ZTkzZjk2NjRmODMuLjNmNDJhYmE3NWM0ZDJkOTdhZWJjMTIxZGI0OGI1YzgxNTgzYjA5Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cApAQCAtNTA5LDE1ICs1MDksMTUgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3dDbG9z
ZWRDYXB0aW9uVHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgQ1NTVmFsdWVOb25lKTsKIAogICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXIoKTsKLSAgICBtX2Nsb3NlZENh
cHRpb25zQ29udGFpbmVyLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50
LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbGlzdGVuZXIuY29weVJlZigpLCB0
cnVlKTsKIAogICAgIC8vIFRyYWNrIGNsaWNrIGV2ZW50cyBpbiB0aGUgY2FwdHVyZSBwaGFzZSBh
dCB0d28gbGV2ZWxzLCBmaXJzdCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwKICAgICAvLyBzdWNoIHRo
YXQgYSBjbGljayBvdXRzaWRlIG9mIHRoZSA8dmlkZW8+IG1heSBkaXNtaXNzIHRoZSB0cmFjayBs
aXN0LCBzZWNvbmQgYXQgdGhlCiAgICAgLy8gbWVkaWEgY29udHJvbHMgbGV2ZWwgc3VjaCB0aGF0
IGEgY2xpY2sgYW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgdHJhY2sgbGlzdCBoaWRlcyB0aGUKICAg
ICAvLyB0cmFjayBsaXN0LiBUaGVzZSB0d28gbGV2ZWxzIGFyZSBuZWNlc3Nhcnkgc2luY2UgaXQg
d291bGQgbm90IGJlIHBvc3NpYmxlIHRvIGdldCBhCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoZSB0
cmFjayBsaXN0IHdoZW4gaGFuZGxpbmcgdGhlIGV2ZW50IG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0
cmVlLgotICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgbGlzdGVuZXIsIHRydWUpOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVlKTsKKyAgICBkb2N1bWVudCgpLmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdHJ1ZSk7
CisgICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgV1RGOjptb3Zl
KGxpc3RlbmVyKSwgdHJ1ZSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpoaWRlQ2xv
c2VkQ2FwdGlvblRyYWNrTGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggZmU0
YjlhZjAyNTkyMjdiMzk1YzE1NmVmMzk2MDUzMjkzNzk2Y2QzOC4uZmExMDZkYTllYjQ4MDhkNTJh
NTQ0ZmI5ZTRjMzQyM2UwZmFhMjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAt
MTY5Miw5ICsxNjkyLDkgQEAgc3RhdGljIHZvaWQgZGlkQWRkU3RvcmFnZUV2ZW50TGlzdGVuZXIo
RE9NV2luZG93KiB3aW5kb3cpCiAgICAgd2luZG93LT5zZXNzaW9uU3RvcmFnZShJR05PUkVfRVhD
RVBUSU9OKTsKIH0KIAotYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgaWYgKCFFdmVudFRh
cmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNl
Q2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChEb2N1bWVudCogZG9j
dW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBm
NmQyODVjYmUzNDA2ODMwOGZmMTg5MDM2MzgzZWU4ZDA4Y2M2ZDBjLi43ZTZiNThmOTJjNmM1Mjk4
NTIwMDI0ZjQ0ZWRlY2ZiM2ZhOTE3MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI3
Myw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gRXZlbnRzCiAg
ICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwCmluZGV4IDA0ZWFkMWE4YmVhNjRhNGFmMzYzMDZhZmU3NTkxNmI5ZDA3Yzg4ZTcuLmMz
ZWRhMjk5ZGJlNWFhODQ5NWNkM2U4N2NjZmU0Yzg4OWU2ODcyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
CkBAIC04NywxMSArODcsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkKICAgICAgICAgICAg
IGJ1aWxkZXItPmNsZWFyRWZmZWN0cygpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KLSAgICAgICAgYnVpbGRlci0+YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2Vz
KGVmZmVjdCwgZWxlbWVudC5yZW5kZXJlcigpKTsKKyAgICAgICAgYnVpbGRlci0+YXBwZW5kRWZm
ZWN0VG9FZmZlY3RSZWZlcmVuY2VzKGVmZmVjdC5jb3B5UmVmKCksIGVsZW1lbnQucmVuZGVyZXIo
KSk7CiAgICAgICAgIGVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7
CiAgICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0Ojpy
ZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVs
ZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0Jv
eCkpOwogICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5k
ZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09
IENJX0xJTkVBUlJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIGVmZmVjdC5yZWxlYXNl
KCkpOworICAgICAgICBidWlsZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGOjptb3ZlKGVm
ZmVjdCkpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAppbmRleCBjYWM3NmQ2YjAwODY5MGRkZTYwNmYxOWQzNDMxM2IzMThmZGZhMDcxLi44
MTNlMjdiNzE2MTFhM2IxODI0MzNhNmI0Y2ZiZTcwZDM2OThhYTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCkBAIC01NzEsMTIgKzU3MSwxMiBAQCBib29sIFNWR0VsZW1lbnQ6OmhhdmVM
b2FkZWRSZXF1aXJlZFJlc291cmNlcygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1ZH
RWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBwcnBMaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQor
Ym9vbCBTVkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBwcnBMaXN0ZW5lciwgYm9vbCB1c2VDYXB0
dXJlKQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHBycExpc3RlbmVy
OwogICAgIAogICAgIC8vIEFkZCBldmVudCBsaXN0ZW5lciB0byByZWd1bGFyIERPTSBlbGVtZW50
Ci0gICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVz
ZUNhcHR1cmUpKQorICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxp
c3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChjb250YWluaW5nU2hhZG93Um9vdCgpKQpAQCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wg
U1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUGFzc1JlZlB0cjxFdmVuCiAgICAgQVNTRVJUKCFpbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkp
OwogICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiBpbnN0YW5jZXMoKSkgewogICAgICAgICBBU1NF
UlQoaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgPT0gdGhpcyk7Ci0gICAgICAgIGJv
b2wgcmVzdWx0ID0gaW5zdGFuY2UtPk5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBs
aXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gaW5zdGFuY2UtPk5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVmKCksIHVzZUNh
cHR1cmUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDFlYmY4Y2NlNjdhZTgwNDAzOGI1NWQ2OTU1OGM0
MmFiM2JhYjRmNTguLjNjNmI1ZTIxNTdmODc2OGI2MzVkNWJmNGRmZDAzZGU1ZWI1YTNjODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MTQxLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVx
dWlyZWRSZXNvdXJjZXMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4m
JiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lcios
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNGb2N1c0V2ZW50TGlzdGVu
ZXJzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmluZGV4IDU0
ODI1NjE2MWZmMjRiYTg5MTMxN2YwODZkZmM4OWNjMDVlZjE4MmIuLjZlODQwNWQ2YTE3NDIyZGM0
Mzg1NTJiOWRiYjUyODA3NjZmYTFhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0
Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSByb2xlLCBMaXN0TW9kaWZpY2F0aW9uIGxpCiAgICAgY2Fz
ZSBQYXRoU2VnVW5hbHRlcmVkUm9sZToKICAgICAgICAgaWYgKGxpc3RNb2RpZmljYXRpb24gPT0g
TGlzdE1vZGlmaWNhdGlvbkFwcGVuZCkgewogICAgICAgICAgICAgQVNTRVJUKCFtX3BhdGhTZWdM
aXN0LnZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVh
bUZyb21TVkdQYXRoU2VnKG1fcGF0aFNlZ0xpc3QudmFsdWUubGFzdCgpLCBtX3BhdGhCeXRlU3Ry
ZWFtLmdldCgpLCBVbmFsdGVyZWRQYXJzaW5nKTsKKyAgICAgICAgICAgIGFwcGVuZFNWR1BhdGhC
eXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcobV9wYXRoU2VnTGlzdC52YWx1ZS5sYXN0KCkuY29weVJl
ZigpLCBtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBVbmFsdGVyZWRQYXJzaW5nKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdM
aXN0KG1fcGF0aFNlZ0xpc3QudmFsdWUsIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJl
ZFBhcnNpbmcpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0
aWVzLmNwcAppbmRleCA4ZmE2MjgwYTc1MGE3YTdhNGU2OWJjMGI4NTE4ZTQzODMxMTZjMzk3Li45
MTM5ZWQ4MzAyYzdlYmQ1Nzg2YzBkYTkwZjBlYjVkNjNhYjdiMTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCkBAIC0xMzksMTQgKzEzOSwxNCBAQCBib29sIGJ1aWxk
U1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZ0xpc3QoY29uc3QgU1ZHUGF0aFNlZ0xpc3Qm
IGxpc3QsIFNWR1BhdAogICAgIHJldHVybiBvazsKIH0KIAotYm9vbCBhcHBlbmRTVkdQYXRoQnl0
ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFBhc3NSZWZQdHI8U1ZHUGF0aFNlZz4gcGF0aFNlZywgU1ZH
UGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2RlIHBhcnNpbmdNb2RlKQorYm9v
bCBhcHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFJlZlB0cjxTVkdQYXRoU2Vn
PiYmIHBhdGhTZWcsIFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBw
YXJzaW5nTW9kZSkKIHsKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDEyIC0gSW1wbGVtZW50IG5vcm1h
bGl6ZWQgcGF0aCBzZWdtZW50IGxpc3RzIQogICAgIEFTU0VSVChwYXJzaW5nTW9kZSA9PSBVbmFs
dGVyZWRQYXJzaW5nKTsKIAogICAgIFNWR1BhdGhTZWdMaXN0IGFwcGVuZGVkSXRlbUxpc3QoUGF0
aFNlZ1VuYWx0ZXJlZFJvbGUpOwotICAgIGFwcGVuZGVkSXRlbUxpc3QuYXBwZW5kKHBhdGhTZWcp
OworICAgIGFwcGVuZGVkSXRlbUxpc3QuYXBwZW5kKHBhdGhTZWcuY29weVJlZigpKTsKICAgICBh
dXRvIGFwcGVuZGVkQnl0ZVN0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJl
YW0+KCk7CiAKICAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxT
VkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoYXBwZW5kZWRCeXRlU3RyZWFtLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCmluZGV4IGIwNzhhNWU3MTBkZjRlNDJmMGE1ZjBm
ODIxMzRjMTA5ODVhZmM4ZjQuLmMyZDFmMTRjMDRlYzFhNTQyOTkzY2Y4ZWM3NjEzZjlhZTBkNmI0
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaApAQCAtMzgsNyArMzgsNyBA
QCBib29sIGJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0aCYp
OwogCiAvLyBTVkdQYXRoU2VnTGlzdC9TdHJpbmcgLT4gU1ZHUGF0aEJ5dGVTdHJlYW0KIGJvb2wg
YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2Vn
TGlzdCYsIFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKLWJvb2wgYXBwZW5k
U1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhQYXNzUmVmUHRyPFNWR1BhdGhTZWc+LCBT
VkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7Citib29sIGFwcGVuZFNWR1BhdGhC
eXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUmVmUHRyPFNWR1BhdGhTZWc+JiYsIFNWR1BhdGhCeXRl
U3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01v
ZGUpOwogCiAvLyBTVkdQYXRoQnl0ZVN0cmVhbS9TVkdQYXRoU2VnTGlzdCAtPiBTdHJpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4IGUzZmFkOGQ1OTBjNTRkZTZiZTk0
Njc5Yzk1NzE3Yjk4NWFjNzRhMjEuLjNiNTg3OGUzOGFhZGMyMTdkYTlkMjgxZmUyODYwM2NiMjk3
YzFlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0ZW5lci0+dHlwZSgpID09IFNWR1RSZWZU
YXJnZXRFdmVudExpc3RlbmVyVHlwZSA/IHN0YXRpY19jYXN0PGNvbnN0IFNWR1RSZWZUYXJnZXRF
dmVudExpc3RlbmVyKj4obGlzdGVuZXIpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICB2b2lkIGF0
dGFjaChQYXNzUmVmUHRyPEVsZW1lbnQ+IHRhcmdldCk7CisgICAgdm9pZCBhdHRhY2goUmVmUHRy
PEVsZW1lbnQ+JiYgdGFyZ2V0KTsKICAgICB2b2lkIGRldGFjaCgpOwogICAgIGJvb2wgaXNBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAKQEAgLTg2LDcgKzg2LDcg
QEAgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVy
KFNWR1RSZWZFbGVtZW50JiB0cmVmRWxlbWUKIHsKIH0KIAotdm9pZCBTVkdUUmVmVGFyZ2V0RXZl
bnRMaXN0ZW5lcjo6YXR0YWNoKFBhc3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KQordm9pZCBTVkdU
UmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6YXR0YWNoKFJlZlB0cjxFbGVtZW50PiYmIHRhcmdldCkK
IHsKICAgICBBU1NFUlQoIWlzQXR0YWNoZWQoKSk7CiAgICAgQVNTRVJUKHRhcmdldC5nZXQoKSk7
CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFj
aChQYXNzUmVmUHRyPEVsZW1lbnQ+IHRhcmdldCkKIAogICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsK
ICAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVk
RnJvbURvY3VtZW50RXZlbnQsIHRoaXMsIGZhbHNlKTsKLSAgICBtX3RhcmdldCA9IHRhcmdldDsK
KyAgICBtX3RhcmdldCA9IFdURjo6bW92ZSh0YXJnZXQpOwogfQogCiB2b2lkIFNWR1RSZWZUYXJn
ZXRFdmVudExpc3RlbmVyOjpkZXRhY2goKQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgU1ZHVFJl
ZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICAvLyBleHBlY3RzIGV2ZXJ5IGVs
ZW1lbnQgaW5zdGFuY2UgdG8gaGF2ZSBhbiBhc3NvY2lhdGVkIHNoYWRvdyB0cmVlIGVsZW1lbnQg
LSB3aGljaCBpcyBub3QgdGhlCiAgICAgLy8gY2FzZSB3aGVuIHdlIGxhbmQgaGVyZSBmcm9tIFNW
R1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93VHJlZSgpLgogICAgIGlmICghaXNJblNoYWRvd1RyZWUo
KSkKLSAgICAgICAgbV90YXJnZXRMaXN0ZW5lci0+YXR0YWNoKHRhcmdldCk7CisgICAgICAgIG1f
dGFyZ2V0TGlzdGVuZXItPmF0dGFjaCh0YXJnZXQuY29weVJlZigpKTsKIAogICAgIHVwZGF0ZVJl
ZmVyZW5jZWRUZXh0KHRhcmdldC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCmluZGV4IDE5MzEz
MjE0ZTliMmE3ZjEzM2E2ODllNWJiNWJhMWMwNmU0MjAzYzIuLmNjOTk1NDg5ODg5NGQwM2U3ZjAx
ZGE1MjEwOTc1NDQ1MDA4NjQ0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCkBAIC02Miw5ICs2Miw5IEBA
IEZpbHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGlkKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWQpOwog
fQogCi12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNl
cyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJwRWZmZWN0LCBSZW5kZXJPYmplY3QqIG9iamVj
dCkKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2Vz
KFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYgZmlsdGVyRWZmZWN0LCBSZW5kZXJPYmplY3QqIG9iamVj
dCkKIHsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBwcnBFZmZlY3Q7CisgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gV1RGOjptb3ZlKGZpbHRlckVmZmVjdCk7CiAK
ICAgICAvLyBUaGUgZWZmZWN0IG11c3QgYmUgYSBuZXdseSBjcmVhdGVkIGZpbHRlciBlZmZlY3Qu
CiAgICAgQVNTRVJUKCFtX2VmZmVjdFJlZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmgKaW5kZXggMDg2N2QyODljYjE5YTQ0Zjk4ZTBkMmQyNDgzNmJmZDI1OGJhMmQ1MS4uODA0
MDg2YjU1NmQ4YzU2OGRiZDhmOWI4OWI1NzI2MDdmNWEwYzljZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAt
MjUsNyArMjUsNiBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC00NCw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5
SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAgRmlsdGVyRWZmZWN0KiBsYXN0
RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgpOyB9CiAKLSAgICB2b2lk
IGFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4s
IFJlbmRlck9iamVjdCopOworICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2Vz
KFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYsIFJlbmRlck9iamVjdCopOwogCiAgICAgaW5saW5lIEZp
bHRlckVmZmVjdFNldCYgZWZmZWN0UmVmZXJlbmNlcyhGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKICAg
ICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260844</attachid>
            <date>2015-09-08 23:40:49 -0700</date>
            <delta_ts>2015-09-09 01:31:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150909154043.patch</filename>
            <type>text/plain</type>
            <size>28779</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg3OTllM2U0M2I0OTAw
ZGYxYWJjMjgyZTExNGU5Y2Q1MjcxM2NmMS4uNGFiZjRlZTcwM2ZhOTQ1ZGFiZTBhY2RjOWEyY2Fk
MDFiYTEzODhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA5LTA4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0ciBp
biBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQp
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6
CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3NlZENh
cHRpb25UcmFja0xpc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWls
ZFByaW1pdGl2ZXMpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1BhdGhC
eXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVz
Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDE1LTA5LTA4
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogTm8gbmVlZCBmb3IgW0N1c3RvbV0gSW1wbGVtZW50YXRpb24gb2Ygc29tZSBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDcy
M2I5ODhkOTRlYTE4YTllNDg4MGEzNDZkZDU5ZTMxNWZkNDUzZmQuLmM3OGU3NjFjOGJlNDAyYWRh
YTJlNTVkMjIxYjJhMmJkYmRmY2Y4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTIx
MSw5ICsyMTEsOSBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkKICAg
ICB9CiB9CiAKLWJvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBib29s
IHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSk7CisgICAgYm9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAg
aWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQogICAg
ICAgICBtX2hhc0VuZGVkTGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
ZW5kZWRFdmVudCk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAppbmRl
eCA2ODBhZjQ2NzgwYzdiZjcxYmQzNmIxMzM5NmJmMWZiM2M3MGQ2ZmIxLi4wOTkzMGEwYzE1ZGM4
MzRlZWExNWFlMGU4M2E3MDcwMWU5NjhmMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKQEAgLTEw
Myw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBVbmtub3du
VGltZTsKIAogcHJpdmF0ZToKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJl
KSBvdmVycmlkZTsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcAppbmRleCBmZWZkNmM2OWQyYjc1ZDM2NWYwNWI2ZjQzYTg4OTNmNzU5ZDlhY2I4Li45
Mjk4YWVkMjJlNjA4MjkzNmYzOWQ0NDQ0OWE4ZGJhOGJjNzY0MTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
QEAgLTI3Myw5ICsyNzMsOSBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRp
bWUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CiB9CiAKLWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGJvb2wgc3VjY2Vz
cyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VD
YXB0dXJlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3Vj
Y2VzcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmF1ZGlvcHJvY2Vzc0V2ZW50KQogICAg
ICAgICBtX2hhc0F1ZGlvUHJvY2Vzc0xpc3RlbmVyID0gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLmF1ZGlvcHJvY2Vzc0V2ZW50KTsKICAgICByZXR1cm4gc3VjY2VzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgK
aW5kZXggOTYxZjEyMTJhMjRiODhmMGU1MzAxYjVjNzZiY2IyNzdhMGU1NjNmZS4uNDQxMjA2OWQ2
Yzc5MTI2YzdhODU1YTY5MjNjYzhjYTE5MzczYTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKQEAgLTczLDcgKzcz
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCi0gICAgYm9v
bCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFw
LmNwcAppbmRleCBmMDlhYmJlYWIwZjNlMTA0MmEyZDA0ZDYxYTcyODBkYzMwZWU4M2I3Li42YWY3
YjUwM2U0ZjkxZTU4MjU5YjY2ODc1NDgyYzhkMGU4NDdiZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY29w
eUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFQKICAgICAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIGNyZWF0ZWQgZnJvbSBtYXJrdXAg
aGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJlZCB0byB0aGUgc2hhZG93IHRyZWUgZHVyaW5nIGNs
b25pbmcuCiAgICAgICAgIGlmICgoKmxpc3RlbmVyVmVjdG9yKVtpXS5saXN0ZW5lci0+d2FzQ3Jl
YXRlZEZyb21NYXJrdXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB0YXJnZXQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAoKmxpc3RlbmVyVmVjdG9yKVtpXS5saXN0ZW5l
ciwgKCpsaXN0ZW5lclZlY3RvcilbaV0udXNlQ2FwdHVyZSk7CisgICAgICAgIHRhcmdldC0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICgqbGlzdGVuZXJWZWN0b3IpW2ldLmxpc3RlbmVyLmNv
cHlSZWYoKSwgKCpsaXN0ZW5lclZlY3RvcilbaV0udXNlQ2FwdHVyZSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBkNjJmZTY3MTU3MjBhNWZhNWMyNDMyMmYx
Mzk0ZTg3NTkwYmE0NjNhLi44YjljZDQxZmJiYWJkOGIxYzcwMThiNmMwMWZkOTU4OTkxNDY2YWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgYm9vbCBF
dmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCitib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKQogewotICAgIHJldHVybiBlbnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVudExp
c3RlbmVyTWFwLmFkZChldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICByZXR1
cm4gZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBl
LCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAogYm9vbCBFdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKaW5kZXggODZmZTNiYzdjODY4YjU1ODJjZjU4OTRmZTkwZjA2YWQ5ZWRjMDlhZi4uNjg4
ZTZmZjcwYjkyY2I2ODkzYmM5OWRlNzkwZjA2ODlkN2E3OTJlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBET01XaW5k
b3cqIHRvRE9NV2luZG93KCk7CiAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZVBvcnQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUp
OworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5k
ZXggMmRiYWJlNTk3NTYyMDlhZGRkNmYyMDVmODBmNWJmNmQ0ZmYwZjAyNi4uMTE2M2EwODkwYWMw
NTk4ZWJmZjAxZjdlMTEwYjMwMWRlZmI4OWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCkBAIC0yMjQsMTEgKzIyNCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJh
eT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJl
dHVybiBwb3J0QXJyYXk7CiB9CiAKLWJvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKGxpc3RlbmVyICYmIGxp
c3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50KQogICAgICAgICBzdGFydCgpOwotICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggMTFmY2Y1NzNl
YWNhYzMwM2Y4Y2ZkYmNmMjEzZjcwYzk2NTQ2NmE3MS4uNzQzZGUwZjRkNDdkMDNkZGY1MzZjNjZj
ZGYzNWQ2NGI5Y2YwZWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTkzLDcgKzkz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBBIHBvcnQgZ2V0cyBuZXV0ZXJl
ZCB3aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3IG93bmVyIHZpYSBwb3N0TWVzc2FnZSgp
LgogICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9lbnRhbmdsZWRDaGFubmVs
OyB9CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGZkYzdmYjU1MGRhMTVm
M2M1OWU1OTZkNTYxM2Y3MzI1MmM5NTE4YmEuLjE0NTE0YmE3M2QyMzllMzRlNjQ1MmNkY2Q0Y2Vh
MTRlYjFiMTQzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE4NzEsNyArMTg3MSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlCiB7CiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
ID0gcHJwTGlzdGVuZXI7CiAKLSAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICgh
dGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0
ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGV2ZW50VHlw
ZSk7CkBAIC0xOTA1LDkgKzE5MDUsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRM
aXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJv
b2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKIHsKLSAgICByZXR1cm4gdHJ5QWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVu
dFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICByZXR1cm4gdHJ5QWRkRXZlbnRMaXN0
ZW5lcih0aGlzLCBldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwog
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJn
ZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDkyOWVjZTQyYzhlYjdjMmI1
YTQzOGU1OWY1ZTE3NzZhYjE4OWQwNjUuLjE4NDg3YTZlNTY5YWY0MzcyYTZiYTYyNzBiMDcxOWRj
ZWM0Yjc3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTIxLDcgKzUyMSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7IC8vIEltcGxlbWVudGVkIGluIERv
Y3VtZW50LmgKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNl
Q2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDc0MDlhNTFm
NjgyODkwZDZmMzYzMTZjZTdlNzY3MGE0MmU4NjQyMmMuLmI4NjgxNzcxOTQxOTRiNDVlNDNkOTMx
Njg3Y2U0ZTBhZWVkNzdmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcApAQCAtNTA0NiwxMyArNTA0NiwxMyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgcmV0dXJuIEhUTUxFbGVt
ZW50OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFp
bGFiaWxpdHljaGFuZ2VkRXZlbnQpCi0gICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICByZXR1cm4gTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNh
cHR1cmUpOwogCiAgICAgYm9vbCBpc0ZpcnN0QXZhaWxhYmlsaXR5Q2hhbmdlZExpc3RlbmVyID0g
IWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWls
YWJpbGl0eWNoYW5nZWRFdmVudCk7Ci0gICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghTm9kZTo6YWRkRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXNGaXJzdEF2YWlsYWJpbGl0eUNoYW5nZWRM
aXN0ZW5lcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA1NjRh
NjBkN2NlMjgwNjg1MDdkODg0MDNhZWFlNzJhNDg2YTUxZTA1Li4wZDhiNGVmNGMzYWI5ZTFhYmU2
ZTZhYTdkNGNmZDgzMzNiN2M0ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaApAQCAtMzM1LDcgKzMzNSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCB3ZWJraXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
KTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUp
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlk
Q2hhbmdlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCA4MWI1ZWVlZDk1NTFiZmI2ZTMzM2Q0YzFkOWI3OTZjZDc5ZDYxZmNjLi45ODBlYTRlY2YxZDZm
NGJkY2FiN2RmNzkxYjgzYmRkMzc5Mjc2NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTIzOSw4ICsyMzksOCBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURv
Y3VtZW50U3RydWN0dXJlKCkKICNlbHNlCiAgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgaWYg
KERPTVdpbmRvdyogd2luZG93ID0gdGhpcy0+ZG9tV2luZG93KCkpCi0gICAgICAgICAgICB3aW5k
b3ctPmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGxpc3RlbmVyLCBmYWxzZSk7Ci0gICAgICAg
IGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBsaXN0ZW5lci5yZWxlYXNl
KCksIGZhbHNlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXpl
IiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CisgICAgICAgIGltYWdlRWxlbWVudC0+YWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBXVEY6Om1vdmUobGlzdGVuZXIpLCBmYWxzZSk7CiAjZW5k
aWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQXBwbGUuY3BwCmluZGV4IDhmZGJhMGQwMzQ4NTAzYTJhNmU4ZTBkMGU4NjQ3ZTkzZjk2NjRm
ODMuLjNmNDJhYmE3NWM0ZDJkOTdhZWJjMTIxZGI0OGI1YzgxNTgzYjA5Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtNTA5
LDE1ICs1MDksMTUgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3dDbG9zZWRDYXB0aW9u
VHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5UG9pbnRlckV2ZW50cywgQ1NTVmFsdWVOb25lKTsKIAogICAgIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXIoKTsKLSAgICBtX2Nsb3NlZENhcHRpb25zQ29u
dGFpbmVyLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBsaXN0ZW5l
ciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbGlzdGVuZXIuY29weVJlZigpLCB0cnVlKTsKIAog
ICAgIC8vIFRyYWNrIGNsaWNrIGV2ZW50cyBpbiB0aGUgY2FwdHVyZSBwaGFzZSBhdCB0d28gbGV2
ZWxzLCBmaXJzdCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwKICAgICAvLyBzdWNoIHRoYXQgYSBjbGlj
ayBvdXRzaWRlIG9mIHRoZSA8dmlkZW8+IG1heSBkaXNtaXNzIHRoZSB0cmFjayBsaXN0LCBzZWNv
bmQgYXQgdGhlCiAgICAgLy8gbWVkaWEgY29udHJvbHMgbGV2ZWwgc3VjaCB0aGF0IGEgY2xpY2sg
YW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgdHJhY2sgbGlzdCBoaWRlcyB0aGUKICAgICAvLyB0cmFj
ayBsaXN0LiBUaGVzZSB0d28gbGV2ZWxzIGFyZSBuZWNlc3Nhcnkgc2luY2UgaXQgd291bGQgbm90
IGJlIHBvc3NpYmxlIHRvIGdldCBhCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoZSB0cmFjayBsaXN0
IHdoZW4gaGFuZGxpbmcgdGhlIGV2ZW50IG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0cmVlLgotICAg
IGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlz
dGVuZXIsIHRydWUpOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIGxpc3RlbmVyLCB0cnVlKTsKKyAgICBkb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdHJ1ZSk7CisgICAgYWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgV1RGOjptb3ZlKGxpc3RlbmVy
KSwgdHJ1ZSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpoaWRlQ2xvc2VkQ2FwdGlv
blRyYWNrTGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggZmU0YjlhZjAyNTky
MjdiMzk1YzE1NmVmMzk2MDUzMjkzNzk2Y2QzOC4uYzEwYjcxOThlMjJkNGMxMGYzNDNmZjk0ZmVi
OGVlZDEzYjViNjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTY5Miw5ICsx
NjkyLDkgQEAgc3RhdGljIHZvaWQgZGlkQWRkU3RvcmFnZUV2ZW50TGlzdGVuZXIoRE9NV2luZG93
KiB3aW5kb3cpCiAgICAgd2luZG93LT5zZXNzaW9uU3RvcmFnZShJR05PUkVfRVhDRVBUSU9OKTsK
IH0KIAotYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKK2Jvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKQogewotICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgaWYgKCFFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0g
dGhpcy0+ZG9jdW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggZjZkMjg1Y2Jl
MzQwNjgzMDhmZjE4OTAzNjM4M2VlOGQwOGNjNmQwYy4uN2U2YjU4ZjkyYzZjNTI5ODUyMDAyNGY0
NGVkZWNmYjNmYTkxNzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0yNzMsNyArMjcz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEV2ZW50cwogICAgICAgICAv
LyBFdmVudFRhcmdldCBBUEkKLSAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4s
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApp
bmRleCAwNGVhZDFhOGJlYTY0YTRhZjM2MzA2YWZlNzU5MTZiOWQwN2M4OGU3Li5jM2VkYTI5OWRi
ZTVhYTg0OTVjZDNlODdjY2ZlNGM4ODllNjg3MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtODcs
MTEgKzg3LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgICAgICAgICBidWlsZGVy
LT5jbGVhckVmZmVjdHMoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
Ci0gICAgICAgIGJ1aWxkZXItPmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhlZmZlY3Qs
IGVsZW1lbnQucmVuZGVyZXIoKSk7CisgICAgICAgIGJ1aWxkZXItPmFwcGVuZEVmZmVjdFRvRWZm
ZWN0UmVmZXJlbmNlcyhlZmZlY3QuY29weVJlZigpLCBlbGVtZW50LnJlbmRlcmVyKCkpOwogICAg
ICAgICBlbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwogICAgICAg
ICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJl
Y3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVtZW50LCBm
aWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpKTsKICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+
c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDSV9MSU5F
QVJSR0IgPyBDb2xvclNwYWNlTGluZWFyUkdCIDogQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
ICAgIGJ1aWxkZXItPmFkZChlbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKKyAg
ICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURjo6bW92ZShlZmZlY3QpKTsK
ICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
aW5kZXggY2FjNzZkNmIwMDg2OTBkZGU2MDZmMTlkMzQzMTNiMzE4ZmRmYTA3MS4uNWZjZDE1ZTI0
NDdjMDkzNjBjODJmZjU4YjYyZTlhNWE4ZTAwMjg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcApAQCAtNTcxLDEyICs1NzEsMTAgQEAgYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVkUmVx
dWlyZWRSZXNvdXJjZXMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR0VsZW1lbnQ6
OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gcHJwTGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKLXsKLSAgICBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcnBMaXN0ZW5lcjsKLSAgICAKK2Jvb2wg
U1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3sg
ICAKICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gcmVndWxhciBET00gZWxlbWVudAotICAg
IGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0
dXJlKSkKKyAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKQEAgLTU4Niw3ICs1ODQsNyBAQCBib29sIFNWR0Vs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQdHI8RXZlbgogICAgIEFTU0VSVCghaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpKTsKICAg
ICBmb3IgKGF1dG8qIGluc3RhbmNlIDogaW5zdGFuY2VzKCkpIHsKICAgICAgICAgQVNTRVJUKGlu
c3RhbmNlLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpID09IHRoaXMpOwotICAgICAgICBib29sIHJl
c3VsdCA9IGluc3RhbmNlLT5Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOworICAgICAgICBib29sIHJlc3VsdCA9IGluc3RhbmNlLT5Ob2RlOjph
ZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJl
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAppbmRleCAxZWJmOGNjZTY3YWU4MDQwMzhiNTVkNjk1NThjNDJhYjNi
YWI0ZjU4Li4zYzZiNWUyMTU3Zjg3NjhiNjM1ZDViZjRkZmQwM2RlNWViNWEzYzg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0MSw3
ICsxNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVk
UmVzb3VyY2VzKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJv
b2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29s
IHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVudExpc3RlbmVycygp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCA1NDgyNTYx
NjFmZjI0YmE4OTEzMTdmMDg2ZGZjODljYzA1ZWYxODJiLi42ZTg0MDVkNmExNzQyMmRjNDM4NTUy
YjlkYmI1MjgwNzY2ZmExYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAK
QEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5n
ZWQoU1ZHUGF0aFNlZ1JvbGUgcm9sZSwgTGlzdE1vZGlmaWNhdGlvbiBsaQogICAgIGNhc2UgUGF0
aFNlZ1VuYWx0ZXJlZFJvbGU6CiAgICAgICAgIGlmIChsaXN0TW9kaWZpY2F0aW9uID09IExpc3RN
b2RpZmljYXRpb25BcHBlbmQpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9wYXRoU2VnTGlzdC52
YWx1ZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9t
U1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3QoKSwgbV9wYXRoQnl0ZVN0cmVhbS5n
ZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAgICBhcHBlbmRTVkdQYXRoQnl0ZVN0
cmVhbUZyb21TVkdQYXRoU2VnKG1fcGF0aFNlZ0xpc3QudmFsdWUubGFzdCgpLmNvcHlSZWYoKSwg
bV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdCht
X3BhdGhTZWdMaXN0LnZhbHVlLCBtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBVbmFsdGVyZWRQYXJz
aW5nKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5j
cHAKaW5kZXggOGZhNjI4MGE3NTBhN2E3YTRlNjliYzBiODUxOGU0MzgzMTE2YzM5Ny4uYWVhNWY1
MTc2NDI4ZThmNThjNDM1YjIxOTk3ZjI5OTlkM2FlZmY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtMTM5LDE0ICsxMzksMTQgQEAgYm9vbCBidWlsZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdMaXN0JiBsaXN0
LCBTVkdQYXQKICAgICByZXR1cm4gb2s7CiB9CiAKLWJvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJl
YW1Gcm9tU1ZHUGF0aFNlZyhQYXNzUmVmUHRyPFNWR1BhdGhTZWc+IHBhdGhTZWcsIFNWR1BhdGhC
eXRlU3RyZWFtKiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkKK2Jvb2wgYXBw
ZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhSZWZQdHI8U1ZHUGF0aFNlZz4mJiBw
YXRoU2VnLCBTVkdQYXRoQnl0ZVN0cmVhbSogcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2lu
Z01vZGUpCiB7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBub3JtYWxpemVk
IHBhdGggc2VnbWVudCBsaXN0cyEKICAgICBBU1NFUlQocGFyc2luZ01vZGUgPT0gVW5hbHRlcmVk
UGFyc2luZyk7CiAKICAgICBTVkdQYXRoU2VnTGlzdCBhcHBlbmRlZEl0ZW1MaXN0KFBhdGhTZWdV
bmFsdGVyZWRSb2xlKTsKLSAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChwYXRoU2VnKTsKKyAg
ICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChXVEY6Om1vdmUocGF0aFNlZykpOwogICAgIGF1dG8g
YXBwZW5kZWRCeXRlU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4o
KTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGdsb2JhbFNWR1Bh
dGhCeXRlU3RyZWFtQnVpbGRlcihhcHBlbmRlZEJ5dGVTdHJlYW0uZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKaW5kZXggYjA3OGE1ZTcxMGRmNGU0MmYwYTVmMGY4MjEz
NGMxMDk4NWFmYzhmNC4uYzJkMWYxNGMwNGVjMWE1NDI5OTNjZjhlYzc2MTNmOWFlMGQ2YjRmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCkBAIC0zOCw3ICszOCw3IEBAIGJv
b2wgYnVpbGRQYXRoRnJvbUJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoJik7CiAK
IC8vIFNWR1BhdGhTZWdMaXN0L1N0cmluZyAtPiBTVkdQYXRoQnl0ZVN0cmVhbQogYm9vbCBidWls
ZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdMaXN0
JiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01vZGUpOwotYm9vbCBhcHBlbmRTVkdQ
YXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFBhc3NSZWZQdHI8U1ZHUGF0aFNlZz4sIFNWR1Bh
dGhCeXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKK2Jvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU1ZHUGF0aFNlZyhSZWZQdHI8U1ZHUGF0aFNlZz4mJiwgU1ZHUGF0aEJ5dGVTdHJl
YW0qLCBQYXRoUGFyc2luZ01vZGUpOwogYm9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7
CiAKIC8vIFNWR1BhdGhCeXRlU3RyZWFtL1NWR1BhdGhTZWdMaXN0IC0+IFN0cmluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZTNmYWQ4ZDU5MGM1NGRlNmJlOTQ2Nzlj
OTU3MTdiOTg1YWM3NGEyMS4uM2I1ODc4ZTM4YWFkYzIxN2RhOWQyODFmZTI4NjAzY2IyOTdjMWVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gU1ZHVFJlZlRhcmdl
dEV2ZW50TGlzdGVuZXJUeXBlID8gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHVFJlZlRhcmdldEV2ZW50
TGlzdGVuZXIqPihsaXN0ZW5lcikgOiBudWxscHRyOwogICAgIH0KIAotICAgIHZvaWQgYXR0YWNo
KFBhc3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KTsKKyAgICB2b2lkIGF0dGFjaChSZWZQdHI8RWxl
bWVudD4mJiB0YXJnZXQpOwogICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgYm9vbCBpc0F0dGFjaGVk
KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KIApAQCAtODYsNyArODYsNyBAQCBT
VkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIoU1ZH
VFJlZkVsZW1lbnQmIHRyZWZFbGVtZQogewogfQogCi12b2lkIFNWR1RSZWZUYXJnZXRFdmVudExp
c3RlbmVyOjphdHRhY2goUGFzc1JlZlB0cjxFbGVtZW50PiB0YXJnZXQpCit2b2lkIFNWR1RSZWZU
YXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2goUmVmUHRyPEVsZW1lbnQ+JiYgdGFyZ2V0KQogewog
ICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAgICBBU1NFUlQodGFyZ2V0LmdldCgpKTsKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6YXR0YWNoKFBh
c3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KQogCiAgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdGhpcywgZmFsc2UpOwogICAg
IHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRGcm9t
RG9jdW1lbnRFdmVudCwgdGhpcywgZmFsc2UpOwotICAgIG1fdGFyZ2V0ID0gdGFyZ2V0OworICAg
IG1fdGFyZ2V0ID0gV1RGOjptb3ZlKHRhcmdldCk7CiB9CiAKIHZvaWQgU1ZHVFJlZlRhcmdldEV2
ZW50TGlzdGVuZXI6OmRldGFjaCgpCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBTVkdUUmVmRWxl
bWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgIC8vIGV4cGVjdHMgZXZlcnkgZWxlbWVu
dCBpbnN0YW5jZSB0byBoYXZlIGFuIGFzc29jaWF0ZWQgc2hhZG93IHRyZWUgZWxlbWVudCAtIHdo
aWNoIGlzIG5vdCB0aGUKICAgICAvLyBjYXNlIHdoZW4gd2UgbGFuZCBoZXJlIGZyb20gU1ZHVXNl
RWxlbWVudDo6YnVpbGRTaGFkb3dUcmVlKCkuCiAgICAgaWYgKCFpc0luU2hhZG93VHJlZSgpKQot
ICAgICAgICBtX3RhcmdldExpc3RlbmVyLT5hdHRhY2godGFyZ2V0KTsKKyAgICAgICAgbV90YXJn
ZXRMaXN0ZW5lci0+YXR0YWNoKHRhcmdldC5jb3B5UmVmKCkpOwogCiAgICAgdXBkYXRlUmVmZXJl
bmNlZFRleHQodGFyZ2V0LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXggMTkzMTMyMTRl
OWIyYTdmMTMzYTY4OWU1YmI1YmExYzA2ZTQyMDNjMi4uOTY4ZmJmNzI1ZGY0NjdjMmY0NmRhMjVj
MzUzMzExMjFkY2JhMDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTYyLDEwICs2Miw4IEBAIEZp
bHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGlkKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWQpOwogfQog
Ci12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJwRWZmZWN0LCBSZW5kZXJPYmplY3QqIG9iamVjdCkK
K3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+JiYgZWZmZWN0LCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBwcnBFZmZlY3Q7Ci0KICAgICAvLyBUaGUg
ZWZmZWN0IG11c3QgYmUgYSBuZXdseSBjcmVhdGVkIGZpbHRlciBlZmZlY3QuCiAgICAgQVNTRVJU
KCFtX2VmZmVjdFJlZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0KSk7CiAgICAgQVNTRVJUKG9iamVj
dCAmJiAhbV9lZmZlY3RSZW5kZXJlci5jb250YWlucyhvYmplY3QpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRl
eCAwODY3ZDI4OWNiMTlhNDRmOThlMGQyZDI0ODM2YmZkMjU4YmEyZDUxLi44MDQwODZiNTU2ZDhj
NTY4ZGJkOGY5Yjg5YjU3MjYwN2Y1YTBjOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0yNSw3ICsyNSw2
IEBACiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ0LDcg
KzQzLDcgQEAgcHVibGljOgogICAgIEZpbHRlckVmZmVjdCogZ2V0RWZmZWN0QnlJZChjb25zdCBB
dG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QoKSBj
b25zdCB7IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KIAotICAgIHZvaWQgYXBwZW5kRWZm
ZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiwgUmVuZGVyT2Jq
ZWN0Kik7CisgICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMoUmVmUHRyPEZp
bHRlckVmZmVjdD4mJiwgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBpbmxpbmUgRmlsdGVyRWZmZWN0
U2V0JiBlZmZlY3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCogZWZmZWN0KQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260848</attachid>
            <date>2015-09-09 01:31:10 -0700</date>
            <delta_ts>2015-09-09 02:00:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150909173103.patch</filename>
            <type>text/plain</type>
            <size>29757</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg3OTllM2U0M2I0OTAw
ZGYxYWJjMjgyZTExNGU5Y2Q1MjcxM2NmMS4uYTZjMDY5NWQ3YmQ0MjkwOGE5MTMxMWFhMGZmMzlm
ZWE0Y2RkMTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA5LTA5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0ciBp
biBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQp
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6
CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3NlZENh
cHRpb25UcmFja0xpc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWls
ZFByaW1pdGl2ZXMpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1BhdGhC
eXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVz
Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDE1LTA5LTA4
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogTm8gbmVlZCBmb3IgW0N1c3RvbV0gSW1wbGVtZW50YXRpb24gb2Ygc29tZSBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDcy
M2I5ODhkOTRlYTE4YTllNDg4MGEzNDZkZDU5ZTMxNWZkNDUzZmQuLmM3OGU3NjFjOGJlNDAyYWRh
YTJlNTVkMjIxYjJhMmJkYmRmY2Y4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTIx
MSw5ICsyMTEsOSBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkKICAg
ICB9CiB9CiAKLWJvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBib29s
IHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSk7CisgICAgYm9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAg
aWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQogICAg
ICAgICBtX2hhc0VuZGVkTGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
ZW5kZWRFdmVudCk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAppbmRl
eCA2ODBhZjQ2NzgwYzdiZjcxYmQzNmIxMzM5NmJmMWZiM2M3MGQ2ZmIxLi4wOTkzMGEwYzE1ZGM4
MzRlZWExNWFlMGU4M2E3MDcwMWU5NjhmMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKQEAgLTEw
Myw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBVbmtub3du
VGltZTsKIAogcHJpdmF0ZToKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJl
KSBvdmVycmlkZTsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcAppbmRleCBmZWZkNmM2OWQyYjc1ZDM2NWYwNWI2ZjQzYTg4OTNmNzU5ZDlhY2I4Li45
Mjk4YWVkMjJlNjA4MjkzNmYzOWQ0NDQ0OWE4ZGJhOGJjNzY0MTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
QEAgLTI3Myw5ICsyNzMsOSBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRp
bWUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CiB9CiAKLWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGJvb2wgc3VjY2Vz
cyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VD
YXB0dXJlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3Vj
Y2VzcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmF1ZGlvcHJvY2Vzc0V2ZW50KQogICAg
ICAgICBtX2hhc0F1ZGlvUHJvY2Vzc0xpc3RlbmVyID0gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLmF1ZGlvcHJvY2Vzc0V2ZW50KTsKICAgICByZXR1cm4gc3VjY2VzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgK
aW5kZXggOTYxZjEyMTJhMjRiODhmMGU1MzAxYjVjNzZiY2IyNzdhMGU1NjNmZS4uNDQxMjA2OWQ2
Yzc5MTI2YzdhODU1YTY5MjNjYzhjYTE5MzczYTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKQEAgLTczLDcgKzcz
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCi0gICAgYm9v
bCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFw
LmNwcAppbmRleCBmMDlhYmJlYWIwZjNlMTA0MmEyZDA0ZDYxYTcyODBkYzMwZWU4M2I3Li42YWY3
YjUwM2U0ZjkxZTU4MjU5YjY2ODc1NDgyYzhkMGU4NDdiZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY29w
eUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFQKICAgICAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIGNyZWF0ZWQgZnJvbSBtYXJrdXAg
aGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJlZCB0byB0aGUgc2hhZG93IHRyZWUgZHVyaW5nIGNs
b25pbmcuCiAgICAgICAgIGlmICgoKmxpc3RlbmVyVmVjdG9yKVtpXS5saXN0ZW5lci0+d2FzQ3Jl
YXRlZEZyb21NYXJrdXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB0YXJnZXQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAoKmxpc3RlbmVyVmVjdG9yKVtpXS5saXN0ZW5l
ciwgKCpsaXN0ZW5lclZlY3RvcilbaV0udXNlQ2FwdHVyZSk7CisgICAgICAgIHRhcmdldC0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICgqbGlzdGVuZXJWZWN0b3IpW2ldLmxpc3RlbmVyLmNv
cHlSZWYoKSwgKCpsaXN0ZW5lclZlY3RvcilbaV0udXNlQ2FwdHVyZSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBkNjJmZTY3MTU3MjBhNWZhNWMyNDMyMmYx
Mzk0ZTg3NTkwYmE0NjNhLi44YjljZDQxZmJiYWJkOGIxYzcwMThiNmMwMWZkOTU4OTkxNDY2YWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgYm9vbCBF
dmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCitib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKQogewotICAgIHJldHVybiBlbnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVudExp
c3RlbmVyTWFwLmFkZChldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICByZXR1
cm4gZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBl
LCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAogYm9vbCBFdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKaW5kZXggODZmZTNiYzdjODY4YjU1ODJjZjU4OTRmZTkwZjA2YWQ5ZWRjMDlhZi4uNjg4
ZTZmZjcwYjkyY2I2ODkzYmM5OWRlNzkwZjA2ODlkN2E3OTJlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBET01XaW5k
b3cqIHRvRE9NV2luZG93KCk7CiAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZVBvcnQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUp
OworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5k
ZXggMmRiYWJlNTk3NTYyMDlhZGRkNmYyMDVmODBmNWJmNmQ0ZmYwZjAyNi4uMTE2M2EwODkwYWMw
NTk4ZWJmZjAxZjdlMTEwYjMwMWRlZmI4OWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCkBAIC0yMjQsMTEgKzIyNCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJh
eT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJl
dHVybiBwb3J0QXJyYXk7CiB9CiAKLWJvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKGxpc3RlbmVyICYmIGxp
c3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50KQogICAgICAgICBzdGFydCgpOwotICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggMTFmY2Y1NzNl
YWNhYzMwM2Y4Y2ZkYmNmMjEzZjcwYzk2NTQ2NmE3MS4uNzQzZGUwZjRkNDdkMDNkZGY1MzZjNjZj
ZGYzNWQ2NGI5Y2YwZWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTkzLDcgKzkz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBBIHBvcnQgZ2V0cyBuZXV0ZXJl
ZCB3aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3IG93bmVyIHZpYSBwb3N0TWVzc2FnZSgp
LgogICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9lbnRhbmdsZWRDaGFubmVs
OyB9CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGZkYzdmYjU1MGRhMTVm
M2M1OWU1OTZkNTYxM2Y3MzI1MmM5NTE4YmEuLmM2ZGIwNzNlNTE2OGMzZTEwOGQ3NDA1Nzg5NTAw
ZjI0N2FlZDZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE4NjcsMTEgKzE4NjcsOSBAQCB2b2lk
IE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKICAgICB9
CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdl
dE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IHBycExpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitzdGF0aWMgaW5saW5lIGJvb2wg
dHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQogewotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHBycExpc3Rl
bmVyOwotCi0gICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKKyAgICBpZiAoIXRhcmdldE5vZGUt
PkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJl
ZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdGFyZ2V0Tm9k
ZS0+ZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChldmVudFR5cGUpOwpAQCAtMTg4
OSw3ICsxODg3LDcgQEAgc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9k
ZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmUKICAgICAvLyBUaGlzIGNvZGUg
d2FzIGFkZGVkIHRvIGFkZHJlc3MgPHJkYXI6Ly9wcm9ibGVtLzU4NDY0OTI+IE9ub3JpZW50YXRp
b25jaGFuZ2UgZXZlbnQgbm90IHdvcmtpbmcgZm9yIGRvY3VtZW50LmJvZHkuCiAgICAgLy8gRm9y
d2FyZCB0aGlzIGNhbGwgdG8gYWRkRXZlbnRMaXN0ZW5lcigpIHRvIHRoZSB3aW5kb3cgc2luY2Ug
dGhlc2UgYXJlIHdpbmRvdy1vbmx5IGV2ZW50cy4KICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS5vcmllbnRhdGlvbmNoYW5nZUV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkucmVzaXplRXZlbnQpCi0gICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93
KCktPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7Cisg
ICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCktPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKGV2ZW50TmFtZXMoKS5pc1RvdWNoRXZlbnRUeXBl
KGV2ZW50VHlwZSkpCkBAIC0xOTA1LDkgKzE5MDMsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5
QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlz
dGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICByZXR1cm4gdHJ5QWRkRXZlbnRMaXN0ZW5lcih0
aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICByZXR1cm4gdHJ5QWRk
RXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNh
cHR1cmUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihO
b2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDkyOWVjZTQy
YzhlYjdjMmI1YTQzOGU1OWY1ZTE3NzZhYjE4OWQwNjUuLjE4NDg3YTZlNTY5YWY0MzcyYTZiYTYy
NzBiMDcxOWRjZWM0Yjc3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTIxLDcgKzUyMSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7IC8vIEltcGxlbWVu
dGVkIGluIERvY3VtZW50LmgKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4m
JiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lcios
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IDc0MDlhNTFmNjgyODkwZDZmMzYzMTZjZTdlNzY3MGE0MmU4NjQyMmMuLmI4NjgxNzcxOTQxOTRi
NDVlNDNkOTMxNjg3Y2U0ZTBhZWVkNzdmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtNTA0NiwxMyArNTA0NiwxMyBAQCBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgcmV0dXJu
IEhUTUxFbGVtZW50OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCiB7CiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0
YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCi0gICAgICAgIHJldHVybiBOb2RlOjphZGRF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICBy
ZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5l
ciksIHVzZUNhcHR1cmUpOwogCiAgICAgYm9vbCBpc0ZpcnN0QXZhaWxhYmlsaXR5Q2hhbmdlZExp
c3RlbmVyID0gIWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3Rh
cmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCk7Ci0gICAgaWYgKCFOb2RlOjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1
cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXNGaXJzdEF2YWlsYWJpbGl0
eUNoYW5nZWRMaXN0ZW5lcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA1NjRhNjBkN2NlMjgwNjg1MDdkODg0MDNhZWFlNzJhNDg2YTUxZTA1Li4wZDhiNGVmNGMz
YWI5ZTFhYmU2ZTZhYTdkNGNmZDgzMzNiN2M0ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtMzM1LDcgKzMzNSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCB3ZWJraXRTaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoKTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wg
dXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVz
ZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzUm91dGVzQXZh
aWxhYmxlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAppbmRleCA4MWI1ZWVlZDk1NTFiZmI2ZTMzM2Q0YzFkOWI3OTZjZDc5ZDYxZmNjLi45ODBl
YTRlY2YxZDZmNGJkY2FiN2RmNzkxYjgzYmRkMzc5Mjc2NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIzOSw4ICsyMzksOCBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICNlbHNlCiAgICAgICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKICAg
ICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gdGhpcy0+ZG9tV2luZG93KCkpCi0gICAgICAg
ICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGxpc3RlbmVyLCBmYWxzZSk7
Ci0gICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBsaXN0ZW5l
ci5yZWxlYXNlKCksIGZhbHNlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5l
cigicmVzaXplIiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CisgICAgICAgIGltYWdlRWxl
bWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBXVEY6Om1vdmUobGlzdGVuZXIpLCBmYWxz
ZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDhmZGJhMGQwMzQ4NTAzYTJhNmU4ZTBkMGU4NjQ3
ZTkzZjk2NjRmODMuLjNmNDJhYmE3NWM0ZDJkOTdhZWJjMTIxZGI0OGI1YzgxNTgzYjA5Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cApAQCAtNTA5LDE1ICs1MDksMTUgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3dDbG9z
ZWRDYXB0aW9uVHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgQ1NTVmFsdWVOb25lKTsKIAogICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXIoKTsKLSAgICBtX2Nsb3NlZENh
cHRpb25zQ29udGFpbmVyLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50
LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbGlzdGVuZXIuY29weVJlZigpLCB0
cnVlKTsKIAogICAgIC8vIFRyYWNrIGNsaWNrIGV2ZW50cyBpbiB0aGUgY2FwdHVyZSBwaGFzZSBh
dCB0d28gbGV2ZWxzLCBmaXJzdCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwKICAgICAvLyBzdWNoIHRo
YXQgYSBjbGljayBvdXRzaWRlIG9mIHRoZSA8dmlkZW8+IG1heSBkaXNtaXNzIHRoZSB0cmFjayBs
aXN0LCBzZWNvbmQgYXQgdGhlCiAgICAgLy8gbWVkaWEgY29udHJvbHMgbGV2ZWwgc3VjaCB0aGF0
IGEgY2xpY2sgYW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgdHJhY2sgbGlzdCBoaWRlcyB0aGUKICAg
ICAvLyB0cmFjayBsaXN0LiBUaGVzZSB0d28gbGV2ZWxzIGFyZSBuZWNlc3Nhcnkgc2luY2UgaXQg
d291bGQgbm90IGJlIHBvc3NpYmxlIHRvIGdldCBhCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoZSB0
cmFjayBsaXN0IHdoZW4gaGFuZGxpbmcgdGhlIGV2ZW50IG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0
cmVlLgotICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgbGlzdGVuZXIsIHRydWUpOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVlKTsKKyAgICBkb2N1bWVudCgpLmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdHJ1ZSk7
CisgICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgV1RGOjptb3Zl
KGxpc3RlbmVyKSwgdHJ1ZSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpoaWRlQ2xv
c2VkQ2FwdGlvblRyYWNrTGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggZmU0
YjlhZjAyNTkyMjdiMzk1YzE1NmVmMzk2MDUzMjkzNzk2Y2QzOC4uYzEwYjcxOThlMjJkNGMxMGYz
NDNmZjk0ZmViOGVlZDEzYjViNjU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAt
MTY5Miw5ICsxNjkyLDkgQEAgc3RhdGljIHZvaWQgZGlkQWRkU3RvcmFnZUV2ZW50TGlzdGVuZXIo
RE9NV2luZG93KiB3aW5kb3cpCiAgICAgd2luZG93LT5zZXNzaW9uU3RvcmFnZShJR05PUkVfRVhD
RVBUSU9OKTsKIH0KIAotYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgaWYgKCFFdmVudFRh
cmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVz
ZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoRG9jdW1lbnQqIGRv
Y3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXgg
ZjZkMjg1Y2JlMzQwNjgzMDhmZjE4OTAzNjM4M2VlOGQwOGNjNmQwYy4uN2U2YjU4ZjkyYzZjNTI5
ODUyMDAyNGY0NGVkZWNmYjNmYTkxNzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0y
NzMsNyArMjczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEV2ZW50cwog
ICAgICAgICAvLyBFdmVudFRhcmdldCBBUEkKLSAgICAgICAgdmlydHVhbCBib29sIGFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICAgICAgdmly
dHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcAppbmRleCAwNGVhZDFhOGJlYTY0YTRhZjM2MzA2YWZlNzU5MTZiOWQwN2M4OGU3Li5j
M2VkYTI5OWRiZTVhYTg0OTVjZDNlODdjY2ZlNGM4ODllNjg3MmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cApAQCAtODcsMTEgKzg3LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgICAgICAg
ICBidWlsZGVyLT5jbGVhckVmZmVjdHMoKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9Ci0gICAgICAgIGJ1aWxkZXItPmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNl
cyhlZmZlY3QsIGVsZW1lbnQucmVuZGVyZXIoKSk7CisgICAgICAgIGJ1aWxkZXItPmFwcGVuZEVm
ZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QuY29weVJlZigpLCBlbGVtZW50LnJlbmRlcmVy
KCkpOwogICAgICAgICBlbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkp
OwogICAgICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6
cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZl
bGVtZW50LCBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdC
b3gpKTsKICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVu
ZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9
PSBDSV9MSU5FQVJSR0IgPyBDb2xvclNwYWNlTGluZWFyUkdCIDogQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgICAgIGJ1aWxkZXItPmFkZChlbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QucmVsZWFz
ZSgpKTsKKyAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURjo6bW92ZShl
ZmZlY3QpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAKaW5kZXggY2FjNzZkNmIwMDg2OTBkZGU2MDZmMTlkMzQzMTNiMzE4ZmRmYTA3MS4u
NWZjZDE1ZTI0NDdjMDkzNjBjODJmZjU4YjYyZTlhNWE4ZTAwMjg3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcApAQCAtNTcxLDEyICs1NzEsMTAgQEAgYm9vbCBTVkdFbGVtZW50OjpoYXZl
TG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNW
R0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gcHJwTGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
LXsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcnBMaXN0ZW5lcjsKLSAg
ICAKK2Jvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKK3sgICAKICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gcmVndWxhciBET00gZWxl
bWVudAotICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LCB1c2VDYXB0dXJlKSkKKyAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKQEAgLTU4Niw3ICs1ODQsNyBAQCBi
b29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFBhc3NSZWZQdHI8RXZlbgogICAgIEFTU0VSVCghaW5zdGFuY2VVcGRhdGVzQmxvY2tl
ZCgpKTsKICAgICBmb3IgKGF1dG8qIGluc3RhbmNlIDogaW5zdGFuY2VzKCkpIHsKICAgICAgICAg
QVNTRVJUKGluc3RhbmNlLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpID09IHRoaXMpOwotICAgICAg
ICBib29sIHJlc3VsdCA9IGluc3RhbmNlLT5Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICBib29sIHJlc3VsdCA9IGluc3RhbmNl
LT5Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1
c2VDYXB0dXJlKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCAxZWJmOGNjZTY3YWU4MDQwMzhiNTVkNjk1
NThjNDJhYjNiYWI0ZjU4Li4zYzZiNWUyMTU3Zjg3NjhiNjM1ZDViZjRkZmQwM2RlNWViNWEzYzg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTE0MSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRl
ZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92
ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVudExp
c3RlbmVycygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRl
eCA1NDgyNTYxNjFmZjI0YmE4OTEzMTdmMDg2ZGZjODljYzA1ZWYxODJiLi42ZTg0MDVkNmExNzQy
MmRjNDM4NTUyYjlkYmI1MjgwNzY2ZmExYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXRoU2Vn
TGlzdENoYW5nZWQoU1ZHUGF0aFNlZ1JvbGUgcm9sZSwgTGlzdE1vZGlmaWNhdGlvbiBsaQogICAg
IGNhc2UgUGF0aFNlZ1VuYWx0ZXJlZFJvbGU6CiAgICAgICAgIGlmIChsaXN0TW9kaWZpY2F0aW9u
ID09IExpc3RNb2RpZmljYXRpb25BcHBlbmQpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9wYXRo
U2VnTGlzdC52YWx1ZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgYXBwZW5kU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3QoKSwgbV9wYXRoQnl0
ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgICAgICAgICBhcHBlbmRTVkdQ
YXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKG1fcGF0aFNlZ0xpc3QudmFsdWUubGFzdCgpLmNv
cHlSZWYoKSwgbV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRo
U2VnTGlzdChtX3BhdGhTZWdMaXN0LnZhbHVlLCBtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBVbmFs
dGVyZWRQYXJzaW5nKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0
aWxpdGllcy5jcHAKaW5kZXggOGZhNjI4MGE3NTBhN2E3YTRlNjliYzBiODUxOGU0MzgzMTE2YzM5
Ny4uYWVhNWY1MTc2NDI4ZThmNThjNDM1YjIxOTk3ZjI5OTlkM2FlZmY1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcApAQCAtMTM5LDE0ICsxMzksMTQgQEAgYm9vbCBi
dWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1BhdGhTZWdM
aXN0JiBsaXN0LCBTVkdQYXQKICAgICByZXR1cm4gb2s7CiB9CiAKLWJvb2wgYXBwZW5kU1ZHUGF0
aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhQYXNzUmVmUHRyPFNWR1BhdGhTZWc+IHBhdGhTZWcs
IFNWR1BhdGhCeXRlU3RyZWFtKiByZXN1bHQsIFBhdGhQYXJzaW5nTW9kZSBwYXJzaW5nTW9kZSkK
K2Jvb2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhSZWZQdHI8U1ZHUGF0
aFNlZz4mJiBwYXRoU2VnLCBTVkdQYXRoQnl0ZVN0cmVhbSogcmVzdWx0LCBQYXRoUGFyc2luZ01v
ZGUgcGFyc2luZ01vZGUpCiB7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMiAtIEltcGxlbWVudCBu
b3JtYWxpemVkIHBhdGggc2VnbWVudCBsaXN0cyEKICAgICBBU1NFUlQocGFyc2luZ01vZGUgPT0g
VW5hbHRlcmVkUGFyc2luZyk7CiAKICAgICBTVkdQYXRoU2VnTGlzdCBhcHBlbmRlZEl0ZW1MaXN0
KFBhdGhTZWdVbmFsdGVyZWRSb2xlKTsKLSAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChwYXRo
U2VnKTsKKyAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChXVEY6Om1vdmUocGF0aFNlZykpOwog
ICAgIGF1dG8gYXBwZW5kZWRCeXRlU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0
ZVN0cmVhbT4oKTsKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGds
b2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihhcHBlbmRlZEJ5dGVTdHJlYW0uZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgKaW5kZXggYjA3OGE1ZTcxMGRmNGU0MmYw
YTVmMGY4MjEzNGMxMDk4NWFmYzhmNC4uYzJkMWYxNGMwNGVjMWE1NDI5OTNjZjhlYzc2MTNmOWFl
MGQ2YjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCkBAIC0zOCw3ICsz
OCw3IEBAIGJvb2wgYnVpbGRQYXRoRnJvbUJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQ
YXRoJik7CiAKIC8vIFNWR1BhdGhTZWdMaXN0L1N0cmluZyAtPiBTVkdQYXRoQnl0ZVN0cmVhbQog
Ym9vbCBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGNvbnN0IFNWR1Bh
dGhTZWdMaXN0JiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01vZGUpOwotYm9vbCBh
cHBlbmRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnKFBhc3NSZWZQdHI8U1ZHUGF0aFNl
Zz4sIFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKK2Jvb2wgYXBwZW5kU1ZH
UGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhSZWZQdHI8U1ZHUGF0aFNlZz4mJiwgU1ZHUGF0
aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2luZ01vZGUpOwogYm9vbCBidWlsZFNWR1BhdGhCeXRlU3Ry
ZWFtRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmLCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJz
aW5nTW9kZSk7CiAKIC8vIFNWR1BhdGhCeXRlU3RyZWFtL1NWR1BhdGhTZWdMaXN0IC0+IFN0cmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggZTNmYWQ4ZDU5MGM1NGRl
NmJlOTQ2NzljOTU3MTdiOTg1YWM3NGEyMS4uM2I1ODc4ZTM4YWFkYzIxN2RhOWQyODFmZTI4NjAz
Y2IyOTdjMWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gU1ZH
VFJlZlRhcmdldEV2ZW50TGlzdGVuZXJUeXBlID8gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHVFJlZlRh
cmdldEV2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcikgOiBudWxscHRyOwogICAgIH0KIAotICAgIHZv
aWQgYXR0YWNoKFBhc3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KTsKKyAgICB2b2lkIGF0dGFjaChS
ZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQpOwogICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgYm9vbCBp
c0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KIApAQCAtODYsNyAr
ODYsNyBAQCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6U1ZHVFJlZlRhcmdldEV2ZW50TGlz
dGVuZXIoU1ZHVFJlZkVsZW1lbnQmIHRyZWZFbGVtZQogewogfQogCi12b2lkIFNWR1RSZWZUYXJn
ZXRFdmVudExpc3RlbmVyOjphdHRhY2goUGFzc1JlZlB0cjxFbGVtZW50PiB0YXJnZXQpCit2b2lk
IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2goUmVmUHRyPEVsZW1lbnQ+JiYgdGFy
Z2V0KQogewogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAgICBBU1NFUlQodGFyZ2V0Lmdl
dCgpKTsKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6
YXR0YWNoKFBhc3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KQogCiAgICAgdGFyZ2V0LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdGhpcywgZmFs
c2UpOwogICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgdGhpcywgZmFsc2UpOwotICAgIG1fdGFyZ2V0ID0gdGFy
Z2V0OworICAgIG1fdGFyZ2V0ID0gV1RGOjptb3ZlKHRhcmdldCk7CiB9CiAKIHZvaWQgU1ZHVFJl
ZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRldGFjaCgpCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBT
VkdUUmVmRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgIC8vIGV4cGVjdHMgZXZl
cnkgZWxlbWVudCBpbnN0YW5jZSB0byBoYXZlIGFuIGFzc29jaWF0ZWQgc2hhZG93IHRyZWUgZWxl
bWVudCAtIHdoaWNoIGlzIG5vdCB0aGUKICAgICAvLyBjYXNlIHdoZW4gd2UgbGFuZCBoZXJlIGZy
b20gU1ZHVXNlRWxlbWVudDo6YnVpbGRTaGFkb3dUcmVlKCkuCiAgICAgaWYgKCFpc0luU2hhZG93
VHJlZSgpKQotICAgICAgICBtX3RhcmdldExpc3RlbmVyLT5hdHRhY2godGFyZ2V0KTsKKyAgICAg
ICAgbV90YXJnZXRMaXN0ZW5lci0+YXR0YWNoKHRhcmdldC5jb3B5UmVmKCkpOwogCiAgICAgdXBk
YXRlUmVmZXJlbmNlZFRleHQodGFyZ2V0LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXgg
MTkzMTMyMTRlOWIyYTdmMTMzYTY4OWU1YmI1YmExYzA2ZTQyMDNjMi4uOTY4ZmJmNzI1ZGY0Njdj
MmY0NmRhMjVjMzUzMzExMjFkY2JhMDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTYyLDEwICs2
Miw4IEBAIEZpbHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25z
dCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAogICAgIHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQo
aWQpOwogfQogCi12b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVm
ZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJwRWZmZWN0LCBSZW5kZXJPYmplY3Qq
IG9iamVjdCkKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZl
cmVuY2VzKFJlZlB0cjxGaWx0ZXJFZmZlY3Q+JiYgZWZmZWN0LCBSZW5kZXJPYmplY3QqIG9iamVj
dCkKIHsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBwcnBFZmZlY3Q7Ci0KICAg
ICAvLyBUaGUgZWZmZWN0IG11c3QgYmUgYSBuZXdseSBjcmVhdGVkIGZpbHRlciBlZmZlY3QuCiAg
ICAgQVNTRVJUKCFtX2VmZmVjdFJlZmVyZW5jZXMuY29udGFpbnMoZWZmZWN0KSk7CiAgICAgQVNT
RVJUKG9iamVjdCAmJiAhbV9lZmZlY3RSZW5kZXJlci5jb250YWlucyhvYmplY3QpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuaAppbmRleCAwODY3ZDI4OWNiMTlhNDRmOThlMGQyZDI0ODM2YmZkMjU4YmEyZDUxLi44MDQw
ODZiNTU2ZDhjNTY4ZGJkOGY5Yjg5YjU3MjYwN2Y1YTBjOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0y
NSw3ICsyNSw2IEBACiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTQ0LDcgKzQzLDcgQEAgcHVibGljOgogICAgIEZpbHRlckVmZmVjdCogZ2V0RWZmZWN0QnlJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RF
ZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KIAotICAgIHZvaWQg
YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0Piwg
UmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCBhcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMo
UmVmUHRyPEZpbHRlckVmZmVjdD4mJiwgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBpbmxpbmUgRmls
dGVyRWZmZWN0U2V0JiBlZmZlY3RSZWZlcmVuY2VzKEZpbHRlckVmZmVjdCogZWZmZWN0KQogICAg
IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260850</attachid>
            <date>2015-09-09 02:00:53 -0700</date>
            <delta_ts>2015-09-09 19:16:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148472-20150909180047.patch</filename>
            <type>text/plain</type>
            <size>29755</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg3OTllM2U0M2I0OTAw
ZGYxYWJjMjgyZTExNGU5Y2Q1MjcxM2NmMS4uYTZjMDY5NWQ3YmQ0MjkwOGE5MTMxMWFhMGZmMzlm
ZWE0Y2RkMTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA5LTA5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgYWxs
IHVzZXMgb2YgUGFzc1JlZlB0ciBpbiBXZWJDb3JlL3N2ZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ2xlYW4gdXAgYWxsIHVzZXMgb2YgUGFzc1JlZlB0ciBp
biBXZWJDb3JlL3N2Zy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQp
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6
CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3NlZENh
cHRpb25UcmFja0xpc3QpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWls
ZFByaW1pdGl2ZXMpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFNWR1BhdGhC
eXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVXRpbGl0aWVz
Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorCiAyMDE1LTA5LTA4
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogTm8gbmVlZCBmb3IgW0N1c3RvbV0gSW1wbGVtZW50YXRpb24gb2Ygc29tZSBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDcy
M2I5ODhkOTRlYTE4YTllNDg4MGEzNDZkZDU5ZTMxNWZkNDUzZmQuLmM3OGU3NjFjOGJlNDAyYWRh
YTJlNTVkMjIxYjJhMmJkYmRmY2Y4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTIx
MSw5ICsyMTEsOSBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkKICAg
ICB9CiB9CiAKLWJvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBib29s
IHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSk7CisgICAgYm9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAg
aWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQogICAg
ICAgICBtX2hhc0VuZGVkTGlzdGVuZXIgPSBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
ZW5kZWRFdmVudCk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAppbmRl
eCA2ODBhZjQ2NzgwYzdiZjcxYmQzNmIxMzM5NmJmMWZiM2M3MGQ2ZmIxLi4wOTkzMGEwYzE1ZGM4
MzRlZWExNWFlMGU4M2E3MDcwMWU5NjhmMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKQEAgLTEw
Myw3ICsxMDMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBVbmtub3du
VGltZTsKIAogcHJpdmF0ZToKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJl
KSBvdmVycmlkZTsKICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcAppbmRleCBmZWZkNmM2OWQyYjc1ZDM2NWYwNWI2ZjQzYTg4OTNmNzU5ZDlhY2I4Li45
Mjk4YWVkMjJlNjA4MjkzNmYzOWQ0NDQ0OWE4ZGJhOGJjNzY0MTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
QEAgLTI3Myw5ICsyNzMsOSBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRp
bWUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCk7CiB9CiAKLWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGJvb2wgc3VjY2Vz
cyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VD
YXB0dXJlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3Vj
Y2VzcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmF1ZGlvcHJvY2Vzc0V2ZW50KQogICAg
ICAgICBtX2hhc0F1ZGlvUHJvY2Vzc0xpc3RlbmVyID0gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLmF1ZGlvcHJvY2Vzc0V2ZW50KTsKICAgICByZXR1cm4gc3VjY2VzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgK
aW5kZXggOTYxZjEyMTJhMjRiODhmMGU1MzAxYjVjNzZiY2IyNzdhMGU1NjNmZS4uNDQxMjA2OWQ2
Yzc5MTI2YzdhODU1YTY5MjNjYzhjYTE5MzczYTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKQEAgLTczLDcgKzcz
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCi0gICAgYm9v
bCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFw
LmNwcAppbmRleCBmMDlhYmJlYWIwZjNlMTA0MmEyZDA0ZDYxYTcyODBkYzMwZWU4M2I3Li42YWY3
YjUwM2U0ZjkxZTU4MjU5YjY2ODc1NDgyYzhkMGU4NDdiZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY29w
eUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFQKICAgICAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIGNyZWF0ZWQgZnJvbSBtYXJrdXAg
aGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJlZCB0byB0aGUgc2hhZG93IHRyZWUgZHVyaW5nIGNs
b25pbmcuCiAgICAgICAgIGlmICgoKmxpc3RlbmVyVmVjdG9yKVtpXS5saXN0ZW5lci0+d2FzQ3Jl
YXRlZEZyb21NYXJrdXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB0YXJnZXQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAoKmxpc3RlbmVyVmVjdG9yKVtpXS5saXN0ZW5l
ciwgKCpsaXN0ZW5lclZlY3RvcilbaV0udXNlQ2FwdHVyZSk7CisgICAgICAgIHRhcmdldC0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICgqbGlzdGVuZXJWZWN0b3IpW2ldLmxpc3RlbmVyLmNv
cHlSZWYoKSwgKCpsaXN0ZW5lclZlY3RvcilbaV0udXNlQ2FwdHVyZSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBkNjJmZTY3MTU3MjBhNWZhNWMyNDMyMmYx
Mzk0ZTg3NTkwYmE0NjNhLi44YjljZDQxZmJiYWJkOGIxYzcwMThiNmMwMWZkOTU4OTkxNDY2YWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgYm9vbCBF
dmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCitib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKQogewotICAgIHJldHVybiBlbnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVudExp
c3RlbmVyTWFwLmFkZChldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICByZXR1
cm4gZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBl
LCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAogYm9vbCBFdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKaW5kZXggODZmZTNiYzdjODY4YjU1ODJjZjU4OTRmZTkwZjA2YWQ5ZWRjMDlhZi4uNjg4
ZTZmZjcwYjkyY2I2ODkzYmM5OWRlNzkwZjA2ODlkN2E3OTJlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBET01XaW5k
b3cqIHRvRE9NV2luZG93KCk7CiAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZVBvcnQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUp
OworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5k
ZXggMmRiYWJlNTk3NTYyMDlhZGRkNmYyMDVmODBmNWJmNmQ0ZmYwZjAyNi4uMTE2M2EwODkwYWMw
NTk4ZWJmZjAxZjdlMTEwYjMwMWRlZmI4OWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCkBAIC0yMjQsMTEgKzIyNCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJh
eT4gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJl
dHVybiBwb3J0QXJyYXk7CiB9CiAKLWJvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKGxpc3RlbmVyICYmIGxp
c3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50KQogICAgICAgICBzdGFydCgpOwotICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworICAgIHJldHVybiBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggMTFmY2Y1NzNl
YWNhYzMwM2Y4Y2ZkYmNmMjEzZjcwYzk2NTQ2NmE3MS4uNzQzZGUwZjRkNDdkMDNkZGY1MzZjNjZj
ZGYzNWQ2NGI5Y2YwZWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTkzLDcgKzkz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBBIHBvcnQgZ2V0cyBuZXV0ZXJl
ZCB3aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3IG93bmVyIHZpYSBwb3N0TWVzc2FnZSgp
LgogICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9lbnRhbmdsZWRDaGFubmVs
OyB9CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGZkYzdmYjU1MGRhMTVm
M2M1OWU1OTZkNTYxM2Y3MzI1MmM5NTE4YmEuLjhhYTRhMWYyYTI0ZmMwZThmMWRlODY0YWNhY2Mx
ZTJkYzVkNmNhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE4NjcsMTEgKzE4NjcsOSBAQCB2b2lk
IE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKICAgICB9
CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdl
dE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IHBycExpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitzdGF0aWMgaW5saW5lIGJvb2wg
dHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKIHsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBwcnBMaXN0ZW5l
cjsKLQotICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgaWYgKCF0YXJnZXROb2RlLT5F
dmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYo
KSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHRhcmdldE5vZGUt
PmRvY3VtZW50KCkuYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKQEAgLTE4ODks
NyArMTg4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUq
IHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlCiAgICAgLy8gVGhpcyBjb2RlIHdh
cyBhZGRlZCB0byBhZGRyZXNzIDxyZGFyOi8vcHJvYmxlbS81ODQ2NDkyPiBPbm9yaWVudGF0aW9u
Y2hhbmdlIGV2ZW50IG5vdCB3b3JraW5nIGZvciBkb2N1bWVudC5ib2R5LgogICAgIC8vIEZvcndh
cmQgdGhpcyBjYWxsIHRvIGFkZEV2ZW50TGlzdGVuZXIoKSB0byB0aGUgd2luZG93IHNpbmNlIHRo
ZXNlIGFyZSB3aW5kb3ctb25seSBldmVudHMuCiAgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkub3JpZW50YXRpb25jaGFuZ2VFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LnJlc2l6ZUV2ZW50KQotICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRvbVdpbmRvdygp
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAg
ICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChldmVudE5hbWVzKCkuaXNUb3VjaEV2ZW50VHlwZShl
dmVudFR5cGUpKQpAQCAtMTkwNSw5ICsxOTAzLDkgQEAgc3RhdGljIGlubGluZSBib29sIHRyeUFk
ZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmUK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhp
cywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIHRyeUFkZEV2
ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0
dXJlKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9k
ZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5MjllY2U0MmM4
ZWI3YzJiNWE0MzhlNTlmNWUxNzc2YWIxODlkMDY1Li4xODQ4N2E2ZTU2OWFmNDM3MmE2YmE2Mjcw
YjA3MTlkY2VjNGI3Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOyAvLyBJbXBsZW1lbnRl
ZCBpbiBEb2N1bWVudC5oCiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9v
bCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3Bh
dGNoRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA3
NDA5YTUxZjY4Mjg5MGQ2ZjM2MzE2Y2U3ZTc2NzBhNDJlODY0MjJjLi5iODY4MTc3MTk0MTk0YjQ1
ZTQzZDkzMTY4N2NlNGUwYWVlZDc3Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTUwNDYsMTMgKzUwNDYsMTMgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogICAgIHJldHVybiBI
VE1MRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBI
VE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFy
Z2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQotICAgICAgICByZXR1cm4gTm9kZTo6YWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgcmV0
dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIp
LCB1c2VDYXB0dXJlKTsKIAogICAgIGJvb2wgaXNGaXJzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0
ZW5lciA9ICFoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJn
ZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpOwotICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKKyAgICBpZiAoIU5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzRmlyc3RBdmFpbGFiaWxpdHlD
aGFuZ2VkTGlzdGVuZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5k
ZXggNTY0YTYwZDdjZTI4MDY4NTA3ZDg4NDAzYWVhZTcyYTQ4NmE1MWUwNS4uMGQ4YjRlZjRjM2Fi
OWUxYWJlNmU2YWE3ZDRjZmQ4MzMzYjdjNGYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKQEAgLTMzNSw3ICszMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgd2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKCk7Ci0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVz
ZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWls
YWJsZURpZENoYW5nZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKaW5kZXggODFiNWVlZWQ5NTUxYmZiNmUzMzNkNGMxZDliNzk2Y2Q3OWQ2MWZjYy4uOTgwZWE0
ZWNmMWQ2ZjRiZGNhYjdkZjc5MWI4M2JkZDM3OTI3NjQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCkBAIC0yMzksOCArMjM5LDggQEAgdm9pZCBJbWFnZURvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAjZWxzZQogICAgICAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7CiAgICAg
ICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IHRoaXMtPmRvbVdpbmRvdygpKQotICAgICAgICAg
ICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lciwgZmFsc2UpOwot
ICAgICAgICBpbWFnZUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgbGlzdGVuZXIu
cmVsZWFzZSgpLCBmYWxzZSk7CisgICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIo
InJlc2l6ZSIsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOworICAgICAgICBpbWFnZUVsZW1l
bnQtPmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgZmFsc2Up
OwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sc0FwcGxlLmNwcAppbmRleCA4ZmRiYTBkMDM0ODUwM2EyYTZlOGUwZDBlODY0N2U5
M2Y5NjY0ZjgzLi4zZjQyYWJhNzVjNGQyZDk3YWViYzEyMWRiNDhiNWM4MTU4M2IwOWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAK
QEAgLTUwOSwxNSArNTA5LDE1IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpzaG93Q2xvc2Vk
Q2FwdGlvblRyYWNrTGlzdCgpCiAgICAgbV9wYW5lbC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMsIENTU1ZhbHVlTm9uZSk7CiAKICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBldmVudExpc3RlbmVyKCk7Ci0gICAgbV9jbG9zZWRDYXB0
aW9uc0NvbnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwg
bGlzdGVuZXIsIHRydWUpOworICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdHJ1
ZSk7CiAKICAgICAvLyBUcmFjayBjbGljayBldmVudHMgaW4gdGhlIGNhcHR1cmUgcGhhc2UgYXQg
dHdvIGxldmVscywgZmlyc3QgYXQgdGhlIGRvY3VtZW50IGxldmVsCiAgICAgLy8gc3VjaCB0aGF0
IGEgY2xpY2sgb3V0c2lkZSBvZiB0aGUgPHZpZGVvPiBtYXkgZGlzbWlzcyB0aGUgdHJhY2sgbGlz
dCwgc2Vjb25kIGF0IHRoZQogICAgIC8vIG1lZGlhIGNvbnRyb2xzIGxldmVsIHN1Y2ggdGhhdCBh
IGNsaWNrIGFueXdoZXJlIG91dHNpZGUgb2YgdGhlIHRyYWNrIGxpc3QgaGlkZXMgdGhlCiAgICAg
Ly8gdHJhY2sgbGlzdC4gVGhlc2UgdHdvIGxldmVscyBhcmUgbmVjZXNzYXJ5IHNpbmNlIGl0IHdv
dWxkIG5vdCBiZSBwb3NzaWJsZSB0byBnZXQgYQogICAgIC8vIHJlZmVyZW5jZSB0byB0aGUgdHJh
Y2sgbGlzdCB3aGVuIGhhbmRsaW5nIHRoZSBldmVudCBvdXRzaWRlIG9mIHRoZSBzaGFkb3cgdHJl
ZS4KLSAgICBkb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIGxpc3RlbmVyLCB0cnVlKTsKLSAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lci5jb3B5UmVmKCksIHRydWUpOwor
ICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIFdURjo6bW92ZShs
aXN0ZW5lciksIHRydWUpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3Nl
ZENhcHRpb25UcmFja0xpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGZlNGI5
YWYwMjU5MjI3YjM5NWMxNTZlZjM5NjA1MzI5Mzc5NmNkMzguLmMxMGI3MTk4ZTIyZDRjMTBmMzQz
ZmY5NGZlYjhlZWQxM2I1YjY1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE2
OTIsOSArMTY5Miw5IEBAIHN0YXRpYyB2b2lkIGRpZEFkZFN0b3JhZ2VFdmVudExpc3RlbmVyKERP
TVdpbmRvdyogd2luZG93KQogICAgIHdpbmRvdy0+c2Vzc2lvblN0b3JhZ2UoSUdOT1JFX0VYQ0VQ
VElPTik7CiB9CiAKLWJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCitib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAoIUV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgIGlmICghRXZlbnRUYXJn
ZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VD
YXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKERvY3VtZW50KiBkb2N1
bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGY2
ZDI4NWNiZTM0MDY4MzA4ZmYxODkwMzYzODNlZThkMDhjYzZkMGMuLjdlNmI1OGY5MmM2YzUyOTg1
MjAwMjRmNDRlZGVjZmIzZmE5MTczMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjcz
LDcgKzI3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBFdmVudHMKICAg
ICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJCi0gICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIGJvb2wg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKaW5kZXggMDRlYWQxYThiZWE2NGE0YWYzNjMwNmFmZTc1OTE2YjlkMDdjODhlNy4uYzNl
ZGEyOTlkYmU1YWE4NDk1Y2QzZTg3Y2NmZTRjODg5ZTY4NzJiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
QEAgLTg3LDExICs4NywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyhTVkdGaQogICAgICAgICAgICAg
YnVpbGRlci0+Y2xlYXJFZmZlY3RzKCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQotICAgICAgICBidWlsZGVyLT5hcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVyZW5jZXMo
ZWZmZWN0LCBlbGVtZW50LnJlbmRlcmVyKCkpOworICAgICAgICBidWlsZGVyLT5hcHBlbmRFZmZl
Y3RUb0VmZmVjdFJlZmVyZW5jZXMoZWZmZWN0LmNvcHlSZWYoKSwgZWxlbWVudC5yZW5kZXJlcigp
KTsKICAgICAgICAgZWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsK
ICAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRleHQ6OnJl
c29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxl
bWVudCwgZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94
KSk7CiAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRl
cmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0g
Q0lfTElORUFSUkdCID8gQ29sb3JTcGFjZUxpbmVhclJHQiA6IENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgICAgICBidWlsZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2Uo
KSk7CisgICAgICAgIGJ1aWxkZXItPmFkZChlbGVtZW50LnJlc3VsdCgpLCBXVEY6Om1vdmUoZWZm
ZWN0KSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCmluZGV4IGNhYzc2ZDZiMDA4NjkwZGRlNjA2ZjE5ZDM0MzEzYjMxOGZkZmEwNzEuLjVm
Y2QxNWUyNDQ3YzA5MzYwYzgyZmY1OGI2MmU5YTVhOGUwMDI4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKQEAgLTU3MSwxMiArNTcxLDEwIEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxv
YWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdF
bGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IHBycExpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCi17
Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJwTGlzdGVuZXI7Ci0gICAg
Citib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCit7ICAgCiAgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVyIHRvIHJlZ3VsYXIgRE9NIGVsZW1l
bnQKLSAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwg
dXNlQ2FwdHVyZSkpCisgICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
bGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCkBAIC01ODYsNyArNTg0LDcgQEAgYm9v
bCBTVkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPEV2ZW4KICAgICBBU1NFUlQoIWluc3RhbmNlVXBkYXRlc0Jsb2NrZWQo
KSk7CiAgICAgZm9yIChhdXRvKiBpbnN0YW5jZSA6IGluc3RhbmNlcygpKSB7CiAgICAgICAgIEFT
U0VSVChpbnN0YW5jZS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA9PSB0aGlzKTsKLSAgICAgICAg
Ym9vbCByZXN1bHQgPSBpbnN0YW5jZS0+Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBpbnN0YW5jZS0+
Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNl
Q2FwdHVyZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggMWViZjhjY2U2N2FlODA0MDM4YjU1ZDY5NTU4
YzQyYWIzYmFiNGY1OC4uM2M2YjVlMjE1N2Y4NzY4YjYzNWQ1YmY0ZGZkMDNkZTVlYjVhM2M4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xNDEsNyArMTQwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRS
ZXF1aXJlZFJlc291cmNlcygpOwogCi0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4s
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW1vdmVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVy
KiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICBib29sIGhhc0ZvY3VzRXZlbnRMaXN0
ZW5lcnMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXgg
NTQ4MjU2MTYxZmYyNGJhODkxMzE3ZjA4NmRmYzg5Y2MwNWVmMTgyYi4uNmU4NDA1ZDZhMTc0MjJk
YzQzODU1MmI5ZGJiNTI4MDc2NmZhMWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuY3BwCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xp
c3RDaGFuZ2VkKFNWR1BhdGhTZWdSb2xlIHJvbGUsIExpc3RNb2RpZmljYXRpb24gbGkKICAgICBj
YXNlIFBhdGhTZWdVbmFsdGVyZWRSb2xlOgogICAgICAgICBpZiAobGlzdE1vZGlmaWNhdGlvbiA9
PSBMaXN0TW9kaWZpY2F0aW9uQXBwZW5kKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0aFNl
Z0xpc3QudmFsdWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIGFwcGVuZFNWR1BhdGhCeXRlU3Ry
ZWFtRnJvbVNWR1BhdGhTZWcobV9wYXRoU2VnTGlzdC52YWx1ZS5sYXN0KCksIG1fcGF0aEJ5dGVT
dHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAgICAgICAgYXBwZW5kU1ZHUGF0
aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhtX3BhdGhTZWdMaXN0LnZhbHVlLmxhc3QoKS5jb3B5
UmVmKCksIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNl
Z0xpc3QobV9wYXRoU2VnTGlzdC52YWx1ZSwgbV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRl
cmVkUGFyc2luZyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGls
aXRpZXMuY3BwCmluZGV4IDhmYTYyODBhNzUwYTdhN2E0ZTY5YmMwYjg1MThlNDM4MzExNmMzOTcu
LmFlYTVmNTE3NjQyOGU4ZjU4YzQzNWIyMTk5N2YyOTk5ZDNhZWZmNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKQEAgLTEzOSwxNCArMTM5LDE0IEBAIGJvb2wgYnVp
bGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRoU2VnTGlz
dCYgbGlzdCwgU1ZHUGF0CiAgICAgcmV0dXJuIG9rOwogfQogCi1ib29sIGFwcGVuZFNWR1BhdGhC
eXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUGFzc1JlZlB0cjxTVkdQYXRoU2VnPiBwYXRoU2VnLCBT
VkdQYXRoQnl0ZVN0cmVhbSogcmVzdWx0LCBQYXRoUGFyc2luZ01vZGUgcGFyc2luZ01vZGUpCiti
b29sIGFwcGVuZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUmVmUHRyPFNWR1BhdGhT
ZWc+JiYgcGF0aFNlZywgU1ZHUGF0aEJ5dGVTdHJlYW0qIHJlc3VsdCwgUGF0aFBhcnNpbmdNb2Rl
IHBhcnNpbmdNb2RlKQogewogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MTIgLSBJbXBsZW1lbnQgbm9y
bWFsaXplZCBwYXRoIHNlZ21lbnQgbGlzdHMhCiAgICAgQVNTRVJUKHBhcnNpbmdNb2RlID09IFVu
YWx0ZXJlZFBhcnNpbmcpOwogCiAgICAgU1ZHUGF0aFNlZ0xpc3QgYXBwZW5kZWRJdGVtTGlzdChQ
YXRoU2VnVW5hbHRlcmVkUm9sZSk7Ci0gICAgYXBwZW5kZWRJdGVtTGlzdC5hcHBlbmQocGF0aFNl
Zyk7CisgICAgYXBwZW5kZWRJdGVtTGlzdC5hcHBlbmQoV1RGOjptb3ZlKHBhdGhTZWcpKTsKICAg
ICBhdXRvIGFwcGVuZGVkQnl0ZVN0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVT
dHJlYW0+KCk7CiAKICAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9i
YWxTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoYXBwZW5kZWRCeXRlU3RyZWFtLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5oCmluZGV4IGIwNzhhNWU3MTBkZjRlNDJmMGE1
ZjBmODIxMzRjMTA5ODVhZmM4ZjQuLmMyZDFmMTRjMDRlYzFhNTQyOTkzY2Y4ZWM3NjEzZjlhZTBk
NmI0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuaApAQCAtMzgsNyArMzgs
NyBAQCBib29sIGJ1aWxkUGF0aEZyb21CeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0
aCYpOwogCiAvLyBTVkdQYXRoU2VnTGlzdC9TdHJpbmcgLT4gU1ZHUGF0aEJ5dGVTdHJlYW0KIGJv
b2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TVkdQYXRoU2VnTGlzdChjb25zdCBTVkdQYXRo
U2VnTGlzdCYsIFNWR1BhdGhCeXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKLWJvb2wgYXBw
ZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhQYXNzUmVmUHRyPFNWR1BhdGhTZWc+
LCBTVkdQYXRoQnl0ZVN0cmVhbSosIFBhdGhQYXJzaW5nTW9kZSk7Citib29sIGFwcGVuZFNWR1Bh
dGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWcoUmVmUHRyPFNWR1BhdGhTZWc+JiYsIFNWR1BhdGhC
eXRlU3RyZWFtKiwgUGF0aFBhcnNpbmdNb2RlKTsKIGJvb2wgYnVpbGRTVkdQYXRoQnl0ZVN0cmVh
bUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgU1ZHUGF0aEJ5dGVTdHJlYW0qLCBQYXRoUGFyc2lu
Z01vZGUpOwogCiAvLyBTVkdQYXRoQnl0ZVN0cmVhbS9TVkdQYXRoU2VnTGlzdCAtPiBTdHJpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4IGUzZmFkOGQ1OTBjNTRkZTZi
ZTk0Njc5Yzk1NzE3Yjk4NWFjNzRhMjEuLjNiNTg3OGUzOGFhZGMyMTdkYTlkMjgxZmUyODYwM2Ni
Mjk3YzFlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0ZW5lci0+dHlwZSgpID09IFNWR1RS
ZWZUYXJnZXRFdmVudExpc3RlbmVyVHlwZSA/IHN0YXRpY19jYXN0PGNvbnN0IFNWR1RSZWZUYXJn
ZXRFdmVudExpc3RlbmVyKj4obGlzdGVuZXIpIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICB2b2lk
IGF0dGFjaChQYXNzUmVmUHRyPEVsZW1lbnQ+IHRhcmdldCk7CisgICAgdm9pZCBhdHRhY2goUmVm
UHRyPEVsZW1lbnQ+JiYgdGFyZ2V0KTsKICAgICB2b2lkIGRldGFjaCgpOwogICAgIGJvb2wgaXNB
dHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAKQEAgLTg2LDcgKzg2
LDcgQEAgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OlNWR1RSZWZUYXJnZXRFdmVudExpc3Rl
bmVyKFNWR1RSZWZFbGVtZW50JiB0cmVmRWxlbWUKIHsKIH0KIAotdm9pZCBTVkdUUmVmVGFyZ2V0
RXZlbnRMaXN0ZW5lcjo6YXR0YWNoKFBhc3NSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KQordm9pZCBT
VkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6YXR0YWNoKFJlZlB0cjxFbGVtZW50PiYmIHRhcmdl
dCkKIHsKICAgICBBU1NFUlQoIWlzQXR0YWNoZWQoKSk7CiAgICAgQVNTRVJUKHRhcmdldC5nZXQo
KSk7CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0
dGFjaChQYXNzUmVmUHRyPEVsZW1lbnQ+IHRhcmdldCkKIAogICAgIHRhcmdldC0+YWRkRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNl
KTsKICAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1v
dmVkRnJvbURvY3VtZW50RXZlbnQsIHRoaXMsIGZhbHNlKTsKLSAgICBtX3RhcmdldCA9IHRhcmdl
dDsKKyAgICBtX3RhcmdldCA9IFdURjo6bW92ZSh0YXJnZXQpOwogfQogCiB2b2lkIFNWR1RSZWZU
YXJnZXRFdmVudExpc3RlbmVyOjpkZXRhY2goKQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgU1ZH
VFJlZkVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICAvLyBleHBlY3RzIGV2ZXJ5
IGVsZW1lbnQgaW5zdGFuY2UgdG8gaGF2ZSBhbiBhc3NvY2lhdGVkIHNoYWRvdyB0cmVlIGVsZW1l
bnQgLSB3aGljaCBpcyBub3QgdGhlCiAgICAgLy8gY2FzZSB3aGVuIHdlIGxhbmQgaGVyZSBmcm9t
IFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93VHJlZSgpLgogICAgIGlmICghaXNJblNoYWRvd1Ry
ZWUoKSkKLSAgICAgICAgbV90YXJnZXRMaXN0ZW5lci0+YXR0YWNoKHRhcmdldCk7CisgICAgICAg
IG1fdGFyZ2V0TGlzdGVuZXItPmF0dGFjaCh0YXJnZXQuY29weVJlZigpKTsKIAogICAgIHVwZGF0
ZVJlZmVyZW5jZWRUZXh0KHRhcmdldC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCmluZGV4IDE5
MzEzMjE0ZTliMmE3ZjEzM2E2ODllNWJiNWJhMWMwNmU0MjAzYzIuLjk2OGZiZjcyNWRmNDY3YzJm
NDZkYTI1YzM1MzMxMTIxZGNiYTA0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCkBAIC02MiwxMCArNjIs
OCBAQCBGaWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlk
KTsKIH0KIAotdm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjphcHBlbmRFZmZlY3RUb0VmZmVjdFJlZmVy
ZW5jZXMoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHBycEVmZmVjdCwgUmVuZGVyT2JqZWN0KiBv
YmplY3QpCit2b2lkIFNWR0ZpbHRlckJ1aWxkZXI6OmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJl
bmNlcyhSZWZQdHI8RmlsdGVyRWZmZWN0PiYmIGVmZmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3Qp
CiB7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gcHJwRWZmZWN0OwotCiAgICAg
Ly8gVGhlIGVmZmVjdCBtdXN0IGJlIGEgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgZWZmZWN0LgogICAg
IEFTU0VSVCghbV9lZmZlY3RSZWZlcmVuY2VzLmNvbnRhaW5zKGVmZmVjdCkpOwogICAgIEFTU0VS
VChvYmplY3QgJiYgIW1fZWZmZWN0UmVuZGVyZXIuY29udGFpbnMob2JqZWN0KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmgKaW5kZXggMDg2N2QyODljYjE5YTQ0Zjk4ZTBkMmQyNDgzNmJmZDI1OGJhMmQ1MS4uODA0MDg2
YjU1NmQ4YzU2OGRiZDhmOWI4OWI1NzI2MDdmNWEwYzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMjUs
NyArMjUsNiBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC00NCw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQo
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAgRmlsdGVyRWZmZWN0KiBsYXN0RWZm
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgpOyB9CiAKLSAgICB2b2lkIGFw
cGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4sIFJl
bmRlck9iamVjdCopOworICAgIHZvaWQgYXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+JiYsIFJlbmRlck9iamVjdCopOwogCiAgICAgaW5saW5lIEZpbHRl
ckVmZmVjdFNldCYgZWZmZWN0UmVmZXJlbmNlcyhGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKICAgICB7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>