<?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>105978</bug_id>
          
          <creation_ts>2013-01-02 17:34:44 -0800</creation_ts>
          <short_desc>[EFL][Qt][WK2] We should consider a page scale factor in WebCore instead of our own scale factor.</short_desc>
          <delta_ts>2013-01-31 18:33:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>107361</dependson>
    
    <dependson>107424</dependson>
    
    <dependson>107653</dependson>
    
    <dependson>107760</dependson>
    
    <dependson>107802</dependson>
          <blocked>105187</blocked>
    
    <blocked>103105</blocked>
    
    <blocked>105766</blocked>
    
    <blocked>107656</blocked>
    
    <blocked>108561</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>abecsi</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>799127</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-02 17:34:44 -0800</bug_when>
    <thetext>Curruntly, Coordinated Graphics manages a duplicated scale. Remove code related to a duplicated scale.

There are two major changes.
1. Don&apos;t keep scale. Instead query the scale from WebPage[Proxy].
2. CoordinatedLayerTreeHost::SetVisibleContentsRect message does not send a scale anymore. Instead reuse IPC communication of WebPage, and callback mechanism of GraphicsLayer.

FYI, note what is effectiveScaleFactor.
effectiveScaleFactor is pageScaleFactor * deviceScaleFactor.
platform webview and pageViewportController know both pageScaleFactor and deviceScaleFactor.
But CoordinatedGraphicsLayer and TiledBackingStore need to know only effectiveScaleFactor.
CoordinatedGraphicsLayer would snap pixel alignment using effectiveScaleFactor, and TiledBackingStore paints contents using effectiveScaleFactor.

However, GraphicsLayerCA snaps pixel alignment using pageScaleFactor. I think it is a potential bug, but apple uses only 2 as a deviceScaleFactor, so this potential bug does not appear yet.
In conclusion, CoordinatedGraphicsLayer and TiledBackingStore need to know final scale for device, and it is effectiveScaleFactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799134</commentid>
    <comment_count>1</comment_count>
      <attachid>181120</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-02 17:40:34 -0800</bug_when>
    <thetext>Created attachment 181120
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799137</commentid>
    <comment_count>2</comment_count>
      <attachid>181120</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-02 17:42:54 -0800</bug_when>
    <thetext>Comment on attachment 181120
WIP Patch

Post WIP patch to clarify the direction.

I&apos;m not sure yet this code is correct in each platform specific code: webview, pageClient, pageViewportControllerClient. And I need more test.

I worked based on kenneth&apos;s xmaxpatch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799162</commentid>
    <comment_count>3</comment_count>
      <attachid>181120</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-02 18:36:24 -0800</bug_when>
    <thetext>Comment on attachment 181120
WIP Patch

Attachment 181120 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15639622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799291</commentid>
    <comment_count>4</comment_count>
      <attachid>181120</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-01-03 00:26:17 -0800</bug_when>
    <thetext>Comment on attachment 181120
WIP Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:114
&gt; +    WebKit::WebPageProxy* page() const { return m_pageProxy.get(); }

this method returns mutable pointer, so should not be const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799320</commentid>
    <comment_count>5</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-01-03 02:16:53 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Curruntly, Coordinated Graphics manages a duplicated scale. Remove code related to a duplicated scale.
&gt; 
&gt; There are two major changes.
&gt; 1. Don&apos;t keep scale. Instead query the scale from WebPage[Proxy].
&gt; 2. CoordinatedLayerTreeHost::SetVisibleContentsRect message does not send a scale anymore. Instead reuse IPC communication of WebPage, and callback mechanism of GraphicsLayer.
&gt; 
&gt; FYI, note what is effectiveScaleFactor.
&gt; effectiveScaleFactor is pageScaleFactor * deviceScaleFactor.
&gt; platform webview and pageViewportController know both pageScaleFactor and deviceScaleFactor.
&gt; But CoordinatedGraphicsLayer and TiledBackingStore need to know only effectiveScaleFactor.
&gt; CoordinatedGraphicsLayer would snap pixel alignment using effectiveScaleFactor, and TiledBackingStore paints contents using effectiveScaleFactor.
&gt; 
&gt; However, GraphicsLayerCA snaps pixel alignment using pageScaleFactor. I think it is a potential bug, but apple uses only 2 as a deviceScaleFactor, so this potential bug does not appear yet.
&gt; In conclusion, CoordinatedGraphicsLayer and TiledBackingStore need to know final scale for device, and it is effectiveScaleFactor.

I think this patch should be aligned with the work I do for Qt on retina display.
Since the coordinates in Qt are always logical and the device scale factor is applied on the backing store and during painting in QtWebPageSGNode, the device scale factor logic in PageViewportController is redundant and will be removed.
My patch for that also still needs testing, and I have to align the change with the way EFL is handling dpxr.

I&apos;m back from vacation on monday, please do not land this before next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799328</commentid>
    <comment_count>6</comment_count>
      <attachid>181120</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-01-03 04:44:05 -0800</bug_when>
    <thetext>Comment on attachment 181120
WIP Patch

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Curruntly, Coordinated Graphics manages a duplicated scale. Remove code about a

Spelling.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:507
&gt; +    return page()-&gt;pageScaleFactor() * page()-&gt;deviceScaleFactor();

Are you sure &apos;page()-&gt;pageScaleFactor()&apos; is initialized properly here?

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:50
&gt; +    , m_effectiveScaleFactor(1)

maybe renaming worth creating a separate patch?

&gt; Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.h:55
&gt; +    virtual void setContentsScale(float) { }

could this method be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799839</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-03 16:39:53 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 181120 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181120&amp;action=review

Thank Mikhail for review.
I rewrite the second WIP patch. I will apply your review :)

(In reply to comment #5)
&gt; (In reply to comment #0)
&gt; I think this patch should be aligned with the work I do for Qt on retina display.
What a coincidence! great.
&gt; Since the coordinates in Qt are always logical and the device scale factor is applied on the backing store and during painting in QtWebPageSGNode, the device scale factor logic in PageViewportController is redundant and will be removed.
Do you means TiledBackingStore must know both pageScale and deviceScale? However TileCache in Apple knows only effectiveScale ( = pageScale * deviceScale). And I think PageViewportController needs to know effectiveScale because PageViewportController must adjust scroll position to avoid noncompositing layer blurring.

&gt; My patch for that also still needs testing, and I have to align the change with the way EFL is handling dpxr.
&gt; 
&gt; I&apos;m back from vacation on monday, please do not land this before next week.

Ok, I wait for you. I found a lot of problems as made this bug. I need to cowork and discuss in depth. :)


As I mentioned, I encountered many problems. I list some of them.
1. delegating scroll : we sometimes change scrollPosition of ScrollView  (i.e. select text using mouse) and sometimes ignore (most cases). However, changing scrollPosition of WebCore does not make anything except for calling PageDidRequestScroll callback.
I think we will remove scroll delegating so that WebCore draws scroll bar and we use Scrolling thread. Am I right?
Page::setPageScaleFactor(float scale, const IntPoint&amp; origin) requires scroll position, but different scroll position arguments do not make difference on Coordinated Graphics.

2. page scale : Currently we never change page scale when using Minibrowser, but we can change via WK2 API. CoordiantedGraphicsLayer and TiledBackingStore seems to assume pageScale is always 1. We need to change CoordiantedGraphicsLayer and TiledBackingStore to get along with pageScale in WebCore.

3. There are complex and slow scroll position and scale communication routine related to PageViewportController.
For example, we need 4 times IPC communication to run wheel event.

      UI Process                      Message               Web Process
WebPageProxy                       (wheel -&gt;)                WebPage
PageViewportController    (&lt;- PageDidRequestScroll)   WebPage
PageViewportController    (setVisibleContentsRect -&gt;) CoordinatedLayerTree
PageViewportController        (&lt;- didRenderFrame)      CoordinatedLayerTree
LayerTreeRenderer::paint

Scale handling ditto.
We implemented PageViewportController runs drawing after receiving callback from Web Process. We need to change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801315</commentid>
    <comment_count>8</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-01-07 08:39:44 -0800</bug_when>
    <thetext>&gt; 2. page scale : Currently we never change page scale when using Minibrowser, but we can change via WK2 API. CoordiantedGraphicsLayer and TiledBackingStore seems to assume pageScale is always 1. We need to change CoordiantedGraphicsLayer and TiledBackingStore to get along with pageScale in WebCore.
&gt; 

https://bugs.webkit.org/show_bug.cgi?id=104374 is targeted to solve it.
However the solution would also require fix of the current bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801769</commentid>
    <comment_count>9</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-07 15:58:45 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; https://bugs.webkit.org/show_bug.cgi?id=104374 is targeted to solve it.
&gt; However the solution would also require fix of the current bug.

Aha, this bug was already created! I think both are duplicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803135</commentid>
    <comment_count>10</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-09 01:26:21 -0800</bug_when>
    <thetext>*** Bug 104374 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803138</commentid>
    <comment_count>11</comment_count>
      <attachid>181873</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-09 01:30:18 -0800</bug_when>
    <thetext>Created attachment 181873
WIP Patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803147</commentid>
    <comment_count>12</comment_count>
      <attachid>181873</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-09 01:44:37 -0800</bug_when>
    <thetext>Comment on attachment 181873
WIP Patch2

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

This is the first working patch, that means the first patch work abnormally :)

I post this patch to explain the direction.
We need prerequisite refactoring before this patch.
1. Decide whether transform include deviceScale as well as pageScale.
2. The size of WebPage (a.k.a nonCompositingLayer) is on viewport coordinated system, not contents coordinated system although the size of all GrahpicsLayer is on contents coordinated system.

TODO: As I mentioned, sending scroll and scall to Web Process is not efficient. We need to refactor further.

&gt; Source/WebCore/css/StyleResolver.cpp:1456
&gt; +//        documentStyle-&gt;setPageScaleTransform(frame ? frame-&gt;frameScaleFactor() : 1);

If we don&apos;t comment out, coordinated graphics draws with pageScale^2. It means if pageScale is 2, we can see 4 times scaled contents.

In addition, if we really want transform includes scale info, we should make transform include deviceRatioFactor and we should make GraphicsLayer not know about scale.
IMO current implementation is ambiguous.

&gt; Source/WebKit2/UIProcess/PageViewportController.h:112
&gt; +    float m_contentsScale; // Should always be cssScale * devicePixelRatio.

Define m_contentsScale that is cssScale * devicePixelRatio because GraphicsLayerCA and TiledBackingStore also use the contentsScale term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803157</commentid>
    <comment_count>13</comment_count>
      <attachid>181873</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 02:00:36 -0800</bug_when>
    <thetext>Comment on attachment 181873
WIP Patch2

Attachment 181873 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15763457

New failing tests:
fast/frames/frame-set-scaling-hit.html
fast/dom/window-scroll-scaling.html
compositing/layer-creation/fixed-position-out-of-view-scaled.html
fast/dom/Range/scale-page-client-rects.html
fast/dom/elementFromPoint-scaled-scrolled.html
inspector/elements/highlight-node-scaled.html
fast/frames/frame-set-rotation-hit.html
compositing/layer-creation/fixed-position-out-of-view-scaled-scroll.html
fast/dom/Element/scale-page-bounding-client-rect.html
fast/dom/Element/scale-page-client-rects.html
fast/events/page-scaled-mouse-click-iframe.html
fast/dom/Range/scale-page-bounding-client-rect.html
fast/transforms/selection-bounds-in-transformed-view.html
svg/as-image/image-respects-pageScaleFactor.html
compositing/tiling/tile-cache-zoomed.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804302</commentid>
    <comment_count>14</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-01-10 05:53:26 -0800</bug_when>
    <thetext>(In reply to comment #12)

&gt; In addition, if we really want transform includes scale info, we should make transform include deviceRatioFactor and we should make GraphicsLayer not know about scale.

Can you explain this a bit more - I don&apos;t really understand the comment. What I do know is that it&apos;s beneficial for the graphics context to know the scale factor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805923</commentid>
    <comment_count>15</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-12 19:39:45 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; 
&gt; &gt; In addition, if we really want transform includes scale info, we should make transform include deviceRatioFactor and we should make GraphicsLayer not know about scale.
&gt; 
&gt; Can you explain this a bit more - I don&apos;t really understand the comment. What I do know is that it&apos;s beneficial for the graphics context to know the scale factor.

That&apos;s good question! I should have explained well. Sorry for lazy comment.

GraphicsLayer should use final effective scale to draw contents on the device screen.
The effective scale is page scale * device scale.

Current WebCore slightly apply page scale to local transform of GraphicsLayer. But RenderLayerBacking notifies page scale and device scale to GraphicsLayer already. I think it is a bit confused that local transform include page scale. We must remember page scale and local transform are not orthogonal.
And if we really want local transform to include scale info, local transform should include device scale also.

I prefer local transform not to include scale info.

In addition, Page::pageScale() method causes style recalc. IMO it is only for applying page scale to local transform. If it is true, the style recalc can be avoidable as we don&apos;t change local transform.

And I don&apos;t fully understand why Page::pageScale() causes layout yet. Now, changing page scale causes layout after this patch. I&apos;m not sure whether it is acceptable or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810450</commentid>
    <comment_count>16</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-18 03:56:38 -0800</bug_when>
    <thetext>Are you going to update this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814078</commentid>
    <comment_count>17</comment_count>
      <attachid>184193</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-23 03:42:38 -0800</bug_when>
    <thetext>Created attachment 184193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814082</commentid>
    <comment_count>18</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-23 03:47:04 -0800</bug_when>
    <thetext>After this patch, we need to reset the results of many layout tests because we now change a page scale factor in WebCore.

I tested pinch zoom using QtMiniBrowser and device scale factor using -r option of EFLMiniBrowser. I think this patch is fine.

However, I&apos;m sure this patch makes new bugs that are not identified yet. We need to fix them gradually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814103</commentid>
    <comment_count>19</comment_count>
      <attachid>184193</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-23 04:53:45 -0800</bug_when>
    <thetext>Comment on attachment 184193
Patch

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

&gt; Source/WebKit2/ChangeLog:11
&gt; +        Currently, PageViewportController sends a page scale factor to Coordinated
&gt; +        Graphics System regardless of the page scale factor in WebCore. This patch makes
&gt; +        Coordinated Graphics System use the page scale factor in WebCore to match other
&gt; +        ports.

Exactly what we want, to be more inline with the other ports

&gt; Source/WebKit2/ChangeLog:15
&gt; +        WebCore is changed, CoordinatedGraphicsLayer can be notified via

gets? instead of can be

&gt; Source/WebKit2/ChangeLog:23
&gt; +        We set true to applyDeviceScaleFactorInCompositor and
&gt; +        ApplyPageScaleFactorInCompositor in Settings like chromium, because
&gt; +        TiledBackingStore that is a backing store of each GraphicsLayer applies the
&gt; +        scale to our raster graphics engines instead of applying the scale to the local
&gt; +        transform of each render object.

that sounds right. Then you dont need to relayout after changing scale

&gt; Source/WebKit2/ChangeLog:43
&gt; +        * UIProcess/API/efl/EwkViewImpl.cpp:
&gt; +        (EwkViewImpl::EwkViewImpl):
&gt; +        * UIProcess/API/qt/qquickwebview.cpp:
&gt; +        (QQuickWebViewPrivate::initialize):
&gt; +        (QQuickWebViewLegacyPrivate::updateViewportSize):
&gt; +        * UIProcess/API/qt/raw/qrawwebview.cpp:
&gt; +        (QRawWebView::setSize):
&gt; +        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:
&gt; +        (WebKit::CoordinatedLayerTreeHostProxy::CoordinatedLayerTreeHostProxy):
&gt; +        (WebKit::CoordinatedLayerTreeHostProxy::setVisibleContentsRect):
&gt; +        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
&gt; +        (CoordinatedLayerTreeHostProxy):
&gt; +        * UIProcess/DrawingAreaProxy.h:
&gt; +        (WebKit::DrawingAreaProxy::setVisibleContentsRect):
&gt; +        * UIProcess/DrawingAreaProxyImpl.cpp:

a bit of detailed info here would be useful

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:202
&gt; +        // FIXME : the contents position does not affect anything when delegates scrolling is enabled.
&gt; +        m_webPageProxy-&gt;scalePage(m_pageScaleFactor, roundedIntPoint(m_contentsPosition));

Why is that a FIXME? Should it?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1218
&gt;  
&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +    if (m_drawingArea-&gt;layerTreeHost())
&gt; +        m_drawingArea-&gt;layerTreeHost()-&gt;deviceOrPageScaleFactorChanged();
&gt; +#endif

smfr should probably look at this change

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1254
&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +    if (m_drawingArea-&gt;layerTreeHost())
&gt; +        m_drawingArea-&gt;layerTreeHost()-&gt;deviceOrPageScaleFactorChanged();
&gt; +#endif

diddo

&gt; Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm:165
&gt; -void LayerTreeHostMac::deviceScaleFactorDidChange()
&gt; +void LayerTreeHostCA::deviceOrPageScaleFactorChanged()

diddo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814286</commentid>
    <comment_count>20</comment_count>
      <attachid>184193</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-23 09:55:22 -0800</bug_when>
    <thetext>Comment on attachment 184193
Patch

Attachment 184193 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16080219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814320</commentid>
    <comment_count>21</comment_count>
      <attachid>184193</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-23 10:24:36 -0800</bug_when>
    <thetext>Comment on attachment 184193
Patch

Attachment 184193 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16063687</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814335</commentid>
    <comment_count>22</comment_count>
      <attachid>184193</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-23 10:34:13 -0800</bug_when>
    <thetext>Comment on attachment 184193
Patch

Attachment 184193 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16065585</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814487</commentid>
    <comment_count>23</comment_count>
      <attachid>184193</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-23 12:18:17 -0800</bug_when>
    <thetext>Comment on attachment 184193
Patch

Attachment 184193 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16067468</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814678</commentid>
    <comment_count>24</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-23 14:52:48 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 184193 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184193&amp;action=review
Thank you for review!

&gt; &gt; Source/WebKit2/ChangeLog:15
&gt; &gt; +        WebCore is changed, CoordinatedGraphicsLayer can be notified via
&gt; 
&gt; gets? instead of can be

yes

&gt; &gt; Source/WebKit2/ChangeLog:23
&gt; &gt; +        We set true to applyDeviceScaleFactorInCompositor and
&gt; &gt; +        ApplyPageScaleFactorInCompositor in Settings like chromium, because
&gt; &gt; +        TiledBackingStore that is a backing store of each GraphicsLayer applies the
&gt; &gt; +        scale to our raster graphics engines instead of applying the scale to the local
&gt; &gt; +        transform of each render object.
&gt; 
&gt; that sounds right. Then you dont need to relayout after changing scale

But we need to change Page::setPageScaleFactor to no relayout. I think putting &quot;if (ApplyPageScaleFactorInCompositor)&quot; in relevant place.

&gt; &gt; Source/WebKit2/ChangeLog:43
&gt; &gt; +        (WebKit::DrawingAreaProxy::setVisibleContentsRect):
&gt; &gt; +        * UIProcess/DrawingAreaProxyImpl.cpp:
&gt; 
&gt; a bit of detailed info here would be useful

I&apos;ll update.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.cpp:202
&gt; &gt; +        // FIXME : the contents position does not affect anything when delegates scrolling is enabled.
&gt; &gt; +        m_webPageProxy-&gt;scalePage(m_pageScaleFactor, roundedIntPoint(m_contentsPosition));
&gt; 
&gt; Why is that a FIXME? Should it?

I&apos;ll recomment without FIXME.
The comment is a bit irrelevant. What I really want to say is that Page::setPageScaleFactor is somewhat weird. I don&apos;t understand we really need updateLayout in  Page::setPageScaleFactor when delegatesScrolling is enabled.

void Page::setPageScaleFactor(float scale, const IntPoint&amp; origin)
{
    ...
    if (scale == m_pageScaleFactor) {
        if (view &amp;&amp; (view-&gt;scrollPosition() != origin || view-&gt;delegatesScrolling())) {
            document-&gt;updateLayoutIgnorePendingStylesheets();
            view-&gt;setScrollPosition(origin);
        }
        return;
    }
    ...
}

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1218
&gt; &gt;  
&gt; &gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; &gt; +    if (m_drawingArea-&gt;layerTreeHost())
&gt; &gt; +        m_drawingArea-&gt;layerTreeHost()-&gt;deviceOrPageScaleFactorChanged();
&gt; &gt; +#endif
&gt; 
&gt; smfr should probably look at this change

I&apos;ll separate this part in another bug so that smfr review conveniently :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814845</commentid>
    <comment_count>25</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-23 17:00:35 -0800</bug_when>
    <thetext>Build fail due to Bug 107742.
I fixed in Bug 107760</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815241</commentid>
    <comment_count>26</comment_count>
      <attachid>184438</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-24 01:44:08 -0800</bug_when>
    <thetext>Created attachment 184438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815251</commentid>
    <comment_count>27</comment_count>
      <attachid>184438</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-24 01:53:34 -0800</bug_when>
    <thetext>Comment on attachment 184438
Patch

Attachment 184438 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16076681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815256</commentid>
    <comment_count>28</comment_count>
      <attachid>184445</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-24 01:58:02 -0800</bug_when>
    <thetext>Created attachment 184445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820012</commentid>
    <comment_count>29</comment_count>
      <attachid>185449</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 02:47:50 -0800</bug_when>
    <thetext>Created attachment 185449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820017</commentid>
    <comment_count>30</comment_count>
      <attachid>185449</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-30 02:55:10 -0800</bug_when>
    <thetext>Comment on attachment 185449
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1276
&gt;      m_page-&gt;settings()-&gt;setFixedPositionCreatesStackingContext(fixed);
&gt; +    m_page-&gt;settings()-&gt;setApplyDeviceScaleFactorInCompositor(fixed);
&gt; +    m_page-&gt;settings()-&gt;setApplyPageScaleFactorInCompositor(fixed);
&gt;  #endif

I tihnk we are already setting these when creating our EwkView (or we should be)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820019</commentid>
    <comment_count>31</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 02:57:56 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 185449 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185449&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1276
&gt; &gt;      m_page-&gt;settings()-&gt;setFixedPositionCreatesStackingContext(fixed);
&gt; &gt; +    m_page-&gt;settings()-&gt;setApplyDeviceScaleFactorInCompositor(fixed);
&gt; &gt; +    m_page-&gt;settings()-&gt;setApplyPageScaleFactorInCompositor(fixed);
&gt; &gt;  #endif
&gt; 
&gt; I tihnk we are already setting these when creating our EwkView (or we should be)

we can not set in UI process because these api are not open via WebPreference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820025</commentid>
    <comment_count>32</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-30 03:03:54 -0800</bug_when>
    <thetext>LGTM, please have a WebKit2 owner review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820027</commentid>
    <comment_count>33</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-01-30 03:08:25 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; LGTM, please have a WebKit2 owner review
LGTM as well. A step forward towards having less home-brew code around...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820502</commentid>
    <comment_count>34</comment_count>
      <attachid>185449</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-30 13:46:06 -0800</bug_when>
    <thetext>Comment on attachment 185449
Patch

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

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:201
&gt; +        // FIXME : Page::setPageScaleFactor performs layout even if the scale is not changed.

Does that layout actually do any work though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820510</commentid>
    <comment_count>35</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 13:52:26 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 185449 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185449&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.cpp:201
&gt; &gt; +        // FIXME : Page::setPageScaleFactor performs layout even if the scale is not changed.
&gt; 
&gt; Does that layout actually do any work though?

Thank you for review!

after r141053 (Bug 107424) the comment became stale.
I mean that there is no layout with applyPageScaleInCompositor.

I&apos;ll get rid of the comment and the cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820511</commentid>
    <comment_count>36</comment_count>
      <attachid>185556</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 13:55:13 -0800</bug_when>
    <thetext>Created attachment 185556
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820527</commentid>
    <comment_count>37</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-30 14:10:23 -0800</bug_when>
    <thetext>Thank mikhail for cq+ :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820571</commentid>
    <comment_count>38</comment_count>
      <attachid>185556</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 14:29:25 -0800</bug_when>
    <thetext>Comment on attachment 185556
Patch for landing

Clearing flags on attachment: 185556

Committed r141310: &lt;http://trac.webkit.org/changeset/141310&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820572</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 14:29:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181120</attachid>
            <date>2013-01-02 17:40:34 -0800</date>
            <delta_ts>2013-01-09 01:30:11 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-105978-20130103103721.patch</filename>
            <type>text/plain</type>
            <size>57354</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGRlM2ZjZDU1OTQ0MGIy
YjI5NDBkOWY4ZTEzMjEyYWY0NDM2MzhmOS4uMWU4OWY4ZTIzNTA5ZWVhZjg2YzAxNTZmODJjZDc0
N2JiYjdhNDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxMy0wMS0wMiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogVXNlIGEgZGV2aWNlIGFuZCBwYWdlIHNjYWxlIGZhY3RvcnMgaW4gV2Vi
Q29yZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTk3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJ1bnRseSwgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgbWFuYWdlcyBhIGR1cGxpY2F0ZWQgc2NhbGUu
IFJlbW92ZSBjb2RlIGFib3V0IGEKKyAgICAgICAgZHVwbGljYXRlZCBzY2FsZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKEV3a1ZpZXdJ
bXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNj
ZW5lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZCk6CisgICAgICAg
IChFd2tWaWV3SW1wbDo6ZWZmZWN0aXZlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cGFnZSk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlOjp1cGRhdGVW
aWV3cG9ydFNpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3
X3BfcC5oOgorICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFSYXdXZWJW
aWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKERyYXdpbmdBcmVh
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5OjpzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6ZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1w
bDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHlJbXBsLmg6CisgICAgICAgIChEcmF3aW5nQXJlYVByb3h5SW1wbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFBhZ2VDbGllbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcik6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnBpeGVsQWxpZ25lZEZsb2F0UG9p
bnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpib3VuZENvbnRl
bnRzUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpk
aWRSZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6
OmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZURldmljZU9yUGFnZVNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnN5
bmNWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyOjp2aXNpYmxlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjp1cGRhdGVNaW5pbXVtU2NhbGVUb0ZpdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6Y3VycmVudENvbnRlbnRzU2NhbGUpOgor
ICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NhbGVQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJbnRyaW5zaWNEZXZpY2VTY2Fs
ZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tRGV2aWNl
U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRC
YXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50RGVmYXVsdElt
cGw6OmRpZENoYW5nZURldmljZU9yUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5oOgorICAgICAgICAoUGFnZUNsaWVudERlZmF1
bHRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudExlZ2FjeUltcGw6OnVwZGF0ZVZpZXdwb3J0
U2l6ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50TGVn
YWN5SW1wbDo6ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRM
ZWdhY3lJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmg6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmVmZmVjdGl2ZVNjYWxl
RmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50RGVm
YXVsdEltcGw6OmRpZENoYW5nZURldmljZU9yUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50Lmg6CisgICAgICAgIChRdFBhZ2VDbGllbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRl
bnRzU2NhbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlU2NhbGVG
YWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpwYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFJbXBsOjp1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2NhbGVQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0RGV2aWNl
U2NhbGVGYWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVI
b3N0Q0EuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Q0E6OmRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xh
eWVyVHJlZUhvc3RDQS5oOgorICAgICAgICAoTGF5ZXJUcmVlSG9zdENBKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oOgorICAg
ICAgICAoTGF5ZXJUcmVlSG9zdEd0ayk6CisKIDIwMTItMTItMjcgIEh1YW5nIERvbmdzdW5nICA8
bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1F0XVtFRkxdW0dUS11bVGV4TWFw
XSBSZWZhY3RvciBjb2RlIHJlbGF0ZWQgdG8gZGVidWcgYm9yZGVyIGFuZCByZXBhaW50IGNvdW50
LiBbMi8yXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuY3BwCmluZGV4IDY3YmY1MjRlYWMxMzNiNmQwZGQyZTRkMjJjZjMyNzk4NTlhMjc3ZWUuLmM0
MjI3NzViZDU2MzNjMzZiYzJlODM2YmY3NTAzNDMwNjM5Nzk0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTEzMCw5ICsxMzAs
NiBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQ
dHI8RXdrQ29udGV4dD4gY29udGV4dCwgUGFzcwogICAgICwgbV92aWJyYXRpb25DbGllbnQoVmli
cmF0aW9uQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAjZW5kaWYKICAgICAsIG1fYmFja0Zvcndh
cmRMaXN0KEV3a0JhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKHRvQVBJKG1fcGFnZVByb3h5LT5iYWNr
Rm9yd2FyZExpc3QoKSkpKQotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgICwgbV9z
Y2FsZUZhY3RvcigxKQotI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKEV3a1NldHRpbmdzOjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX2N1cnNvcklkZW50aWZpZXIoMCkKICAgICAsIG1fbW91c2VFdmVu
dHNFbmFibGVkKGZhbHNlKQpAQCAtMzAzLDcgKzMwMCw3IEBAIEFmZmluZVRyYW5zZm9ybSBFd2tW
aWV3SW1wbDo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKIAogI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQogICAgIC8vIE5vdGUgdGhhdCB0aGUgc2NhbGUgZmFjdG9yIGluY2wgcGFnZSBh
bmQgZGV2aWNlIHNjYWxlIGZvciBub3cuCi0gICAgdHJhbnNmb3JtLnNjYWxlKDEgLyBtX3NjYWxl
RmFjdG9yKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMSAvIGVmZmVjdGl2ZVNjYWxlRmFjdG9yKCkp
OwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUocGFnZVBvc2l0aW9uKCkueCgpLCBwYWdlUG9zaXRp
b24oKS55KCkpOwogI2VuZGlmCiAKQEAgLTQwNCw3ICs0MDEsNyBAQCB2b2lkIEV3a1ZpZXdJbXBs
OjpkaXNwbGF5VGltZXJGaXJlZChUaW1lcjxFd2tWaWV3SW1wbD4qKQogCiAgICAgICAgIFJlZlB0
cjxjYWlyb190PiBncmFwaGljc0NvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFj
ZS5nZXQoKSkpOwogICAgICAgICBjYWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgp
LCAtIHBhZ2VQb3NpdGlvbigpLngoKSwgLSBwYWdlUG9zaXRpb24oKS55KCkpOwotICAgICAgICBj
YWlyb19zY2FsZShncmFwaGljc0NvbnRleHQuZ2V0KCksIG1fc2NhbGVGYWN0b3IsIG1fc2NhbGVG
YWN0b3IpOworICAgICAgICBjYWlyb19zY2FsZShncmFwaGljc0NvbnRleHQuZ2V0KCksIGVmZmVj
dGl2ZVNjYWxlRmFjdG9yKCksIGVmZmVjdGl2ZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICByZW5k
ZXJlci0+cGFpbnRUb0dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQuZ2V0KCkpOwogICAg
ICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdlLCAwLCAwLCB2
aWV3cG9ydC53aWR0aCgpLCB2aWV3cG9ydC5oZWlnaHQoKSk7CiAgICAgfQpAQCAtNTA0LDYgKzUw
MSwxMSBAQCB2b2lkIEV3a1ZpZXdJbXBsOjppbmZvcm1Mb2FkQ29tbWl0dGVkKCkKIHsKICAgICBt
X3BhZ2VDbGllbnQtPmRpZENvbW1pdExvYWQoKTsKIH0KKworZmxvYXQgRXdrVmlld0ltcGw6OmVm
ZmVjdGl2ZVNjYWxlRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFnZSgpLT5wYWdlU2Nh
bGVGYWN0b3IoKSAqIHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KICNlbmRpZgogCiBJ
bnRTaXplIEV3a1ZpZXdJbXBsOjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCmluZGV4IDE4ZmE0OTU0NjM3YmRhYzdlNDM1YjI4
MDI2ODY2NmJkMzlkMGU4YTEuLjU2MmMwZTdkMzI3MTAyMDg4OTczM2NiY2I4ZGE0NTVkZjQyMzIz
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBFdmFzX09iamVjdCogdmlldygpIHsg
cmV0dXJuIG1fdmlldzsgfQogCiAgICAgV0tQYWdlUmVmIHdrUGFnZSgpOwotICAgIFdlYktpdDo6
V2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlUHJveHkuZ2V0KCk7IH0KKyAgICBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVByb3h5Lmdl
dCgpOyB9CiAgICAgRXdrQ29udGV4dCogZXdrQ29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQogICAgIEV3a1NldHRpbmdzKiBzZXR0aW5ncygpIHsgcmV0dXJuIG1fc2V0dGluZ3Mu
Z2V0KCk7IH0KICAgICBFd2tCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCgpIHsgcmV0
dXJuIG1fYmFja0ZvcndhcmRMaXN0LmdldCgpOyB9CkBAIC0yMDIsOCArMjAyLDcgQEAgcHVibGlj
OgogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFdlYktpdDo6UGFnZUNsaWVudEJh
c2UqIHBhZ2VDbGllbnQoKSB7IHJldHVybiBtX3BhZ2VDbGllbnQuZ2V0KCk7IH0KIAotICAgIHZv
aWQgc2V0U2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpIHsgbV9zY2FsZUZhY3RvciA9IHNj
YWxlRmFjdG9yOyB9Ci0gICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Nj
YWxlRmFjdG9yOyB9CisgICAgZmxvYXQgZWZmZWN0aXZlU2NhbGVGYWN0b3IoKSBjb25zdDsKIAog
ICAgIHZvaWQgc2V0UGFnZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0
aW9uKSB7IG1fcGFnZVBvc2l0aW9uID0gcG9zaXRpb247IH0KICAgICBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50IHBhZ2VQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVBvc2l0aW9uOyB9
CkBAIC0yNjYsNyArMjY1LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIE93blB0cjxFd2tCYWNr
Rm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRMaXN0OwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQotICAgIGZsb2F0IG1fc2NhbGVGYWN0b3I7CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBt
X3BhZ2VQb3NpdGlvbjsKICNlbmRpZgogICAgIE93blB0cjxFd2tTZXR0aW5ncz4gbV9zZXR0aW5n
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwCmluZGV4IDI1MDJhODFmNjUyODRmN2JjODAxZWM1OGJlYWFjZDI5NzI5YTczZTAuLjJjNWEx
OWY0M2M1ZmJjMTQ2YTNkMzc3YWMxYzY4M2Y0NmZmMmFmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtODM5LDcgKzgzOSw3
IEBAIHZvaWQgUVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgp
CiAgICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHZpZXdwb3J0U2l6ZS50
b1NpemUoKSwgSW50U2l6ZSgpKTsKICAgICAvLyBUaGUgYmFja2luZyBzdG9yZSBzY2FsZSBmYWN0
b3Igc2hvdWxkIGFscmVhZHkgYmUgc2V0IHRvIHRoZSBkZXZpY2UgcGl4ZWwgcmF0aW8KICAgICAv
LyBvZiB0aGUgdW5kZXJseWluZyB3aW5kb3csIHRodXMgd2Ugc2V0IHRoZSBlZmZlY3RpdmUgc2Nh
bGUgdG8gMSBoZXJlLgotICAgIHdlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUodmlld3BvcnRT
aXplKSksIDEsIEZsb2F0UG9pbnQoKSk7CisgICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgp
LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6
ZSh2aWV3cG9ydFNpemUpKSwgRmxvYXRQb2ludCgpKTsKIH0KIAogcXJlYWwgUVF1aWNrV2ViVmll
d0xlZ2FjeVByaXZhdGU6Onpvb21GYWN0b3IoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCmluZGV4IDJkZDQ1ZDBlZmZl
OWUwZjNmZmJhZDM2NDlkMzBlOTU3NmZiZjlkYzMuLjM2MWY3NGRhYjg1MWFkODk4ZWQzOWQyNzdh
N2E2ZjQ3OWIyNTk3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIFFSYXdXZWJW
aWV3OjpzZXRTaXplKGNvbnN0IFFTaXplJiBzaXplKQogICAgIGQtPm1fc2l6ZSA9IHNpemU7CiAK
ICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShkLT5tX3NpemUsIFdlYkNvcmU6OkludFNpemUoKSk7
Ci0gICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVj
dChXZWJDb3JlOjpJbnRQb2ludCgpLCBkLT5tX3NpemUpLCAxIC8qc2NhbGUqLywgV2ViQ29yZTo6
RmxvYXRQb2ludCgpKTsKKyAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChX
ZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIGQtPm1fc2l6ZSksIFdlYkNvcmU6
OkZsb2F0UG9pbnQoKSk7CiB9CiAKIFdLUGFnZVJlZiBRUmF3V2ViVmlldzo6cGFnZVJlZigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmll
d19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3
X3BfcC5oCmluZGV4IGVlZGQ0MDE1ODIwMmI3MTIxZGNlZDczNWI2OTcxNWI4MTU3NTlhYTMuLjEw
ZTM2MzM5ODVlMjhlMmRkNTQ2ZDFlNGYzZjgzYThhNTcxZGQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oCkBAIC0x
MDUsNiArMTA1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nl
c3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpOworI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3IoZmxvYXQgZWZmZWN0aXZlU2NhbGVGYWN0b3IpIHsgfQorI2VuZGlmCiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBlZjVlNDVmYTli
YzIzNzAxNDVjY2NkMWRjZjg4YzZiNDA1OGFhOWEzLi5kN2U2ZDk0MGY1MTA0OWIyMjRiNDZjZjZh
MzliMDk2OTEwZGUxYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC00MSw3ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5KERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhUHJveHkpCiAgICAgOiBt
X2RyYXdpbmdBcmVhUHJveHkoZHJhd2luZ0FyZWFQcm94eSkKICAgICAsIG1fcmVuZGVyZXIoYWRv
cHRSZWYobmV3IExheWVyVHJlZVJlbmRlcmVyKHRoaXMpKSkKLSAgICAsIG1fbGFzdFNlbnRTY2Fs
ZSgwKQogewogfQogCkBAIC0xODUsMTkgKzE4NCwxNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpzZXRBbmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQogICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpzZXRBbmltYXRpb25zTG9ja2VkLCBt
X3JlbmRlcmVyLmdldCgpLCBsb2NrZWQpKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rv
cikKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5
VmVjdG9yKQogewogICAgIC8vIEluZm9ybSB0aGUgcmVuZGVyZXIgdG8gYWRqdXN0IHZpZXdwb3J0
LWZpeGVkIGxheWVycy4KICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJl
cjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCwgbV9yZW5kZXJlci5nZXQoKSwgcmVjdCkpOwogCi0g
ICAgY29uc3QgZmxvYXQgZWZmZWN0aXZlU2NhbGUgPSBkZXZpY2VTY2FsZUZhY3RvcigpICogcGFn
ZVNjYWxlRmFjdG9yOwotCi0gICAgaWYgKHJlY3QgPT0gbV9sYXN0U2VudFZpc2libGVSZWN0ICYm
IGVmZmVjdGl2ZVNjYWxlID09IG1fbGFzdFNlbnRTY2FsZSAmJiB0cmFqZWN0b3J5VmVjdG9yID09
IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yKQorICAgIGlmIChyZWN0ID09IG1fbGFzdFNlbnRW
aXNpYmxlUmVjdCAmJiB0cmFqZWN0b3J5VmVjdG9yID09IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVj
dG9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlNldFZp
c2libGVDb250ZW50c1JlY3QocmVjdCwgZWZmZWN0aXZlU2NhbGUsIHRyYWplY3RvcnlWZWN0b3Ip
LCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOworICAgIG1fZHJhd2luZ0Fy
ZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6U2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5VmVjdG9y
KSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKICAgICBtX2xhc3RTZW50
VmlzaWJsZVJlY3QgPSByZWN0OwotICAgIG1fbGFzdFNlbnRTY2FsZSA9IGVmZmVjdGl2ZVNjYWxl
OwogICAgIG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yID0gdHJhamVjdG9yeVZlY3RvcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgK
aW5kZXggZjljYTE5MmMyYjA0MzIyNTlmODhjOWJiNWVjZTNlNDVhM2M4YTY3OS4uNzBmMjVjNGVl
MGIwMmIyNzI1NGU1NzlhNWYzMzcyNDI1MTM5NzYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsK
ICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAg
ICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAg
dm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZs
b2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9y
eVZlY3Rvcik7CisgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3Ip
OwogICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVu
dHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CiAgICAgdm9pZCBj
cmVhdGVUaWxlRm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZv
aWQgdXBkYXRlVGlsZUZvckxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlE
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKQEAg
LTEwMyw3ICsxMDMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0FyZWFQcm94eSogbV9kcmF3
aW5nQXJlYVByb3h5OwogICAgIFJlZlB0cjxMYXllclRyZWVSZW5kZXJlcj4gbV9yZW5kZXJlcjsK
ICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9sYXN0U2VudFZpc2libGVSZWN0OwotICAgIGZsb2F0
IG1fbGFzdFNlbnRTY2FsZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFq
ZWN0b3J5VmVjdG9yOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50MzJfdCAvKiBhdGxhc0lEICov
LCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiA+IFN1cmZhY2VNYXA7CiAgICAgU3VyZmFjZU1h
cCBtX3N1cmZhY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKaW5kZXggMWViMTgxOTUxYjBiZWJkMDgxNTg3YzlhY2M4NGI3YTI0NWUzYzQ1OS4uYjUzMDMy
MTg2ZjhiN2MzNzA4OWM0YzEwYTY3ZDljNjFhYmM4YjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgPSAwOwogCiAg
ICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2
b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKSB7IH0KQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB2aWV3cG9ydFZpc2libGVSZWN0KCkgY29uc3Qg
eyByZXR1cm4gY29udGVudHNSZWN0KCk7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qg
Y29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkq
IGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNp
YmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgLyogdmlzaWJsZUNvbnRl
bnRzUmVjdCAqLywgZmxvYXQgLyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IC8qIHRyYWplY3RvcnlWZWN0b3IgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxl
Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgLyogdmlzaWJsZUNvbnRlbnRz
UmVjdCAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgLyogdHJhamVjdG9yeVZlY3RvciAq
LykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIHsg
cmV0dXJuIG1fd2ViUGFnZVByb3h5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAppbmRleCA0Y2IzNGE0MmY0OGVjNWI5Y2NkZGFlYjA2
NzNiMDRjYzY0ZjIwZTdlLi5lNjQ5Y2NjZmM5MDZiNzMzOTIzOGVmMjUwOGUyNDVlZWRmMDMxNDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1w
bC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpzaXpl
RGlkQ2hhbmdlKCkKICAgICBiYWNraW5nU3RvcmVTdGF0ZURpZENoYW5nZShSZXNwb25kSW1tZWRp
YXRlbHkpOwogfQogCi12b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpkZXZpY2VTY2FsZUZhY3Rv
ckRpZENoYW5nZSgpCit2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpkZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckRpZENoYW5nZSgpCiB7CiAgICAgYmFja2luZ1N0b3JlU3RhdGVEaWRDaGFuZ2UoUmVz
cG9uZEltbWVkaWF0ZWx5KTsKIH0KQEAgLTM3MiwxMCArMzcyLDEwIEBAIHZvaWQgRHJhd2luZ0Fy
ZWFQcm94eUltcGw6OmRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3Nh
Z2UoQ29yZUlQCiAgICAgICAgIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHktPmRpZFJl
Y2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZUlELCBkZWNvZGVyKTsKIH0KIAotdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50
c1JlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5
VmVjdG9yKQordm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7CiAgICAgaWYgKG1fY29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkpCi0gICAgICAgIG1fY29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHktPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCwgc2Nh
bGUsIHRyYWplY3RvcnlWZWN0b3IpOworICAgICAgICBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3QsIHRyYWpl
Y3RvcnlWZWN0b3IpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKaW5kZXggNmNlZDIwN2I0Y2M2OThiN2QyYTVjM2Y2YTJi
N2RhM2NiYmIyMWZjYy4uYTcyMjdjZTljNDBkNjdlZmUyYzBiY2ZhNjg5OGY4OWVjYmFiMDY2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIERyYXdpbmdBcmVhUHJveHkKICAg
ICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VT
Y2FsZUZhY3RvckRpZENoYW5nZSgpOworICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckRpZENoYW5nZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBsYXllckhvc3Rp
bmdNb2RlRGlkQ2hhbmdlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaWJpbGl0
eURpZENoYW5nZSgpOwpAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhpdEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2NhbGUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnkpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJs
ZUNvbnRlbnRzUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeSk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJik7CiAjZW5kaWYKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCBlOTdkMmNiNjE3ZmQxMThkYzUwYWFiNDljMTg5ZTAyMmQ4NmQ1OTQxLi5mN2ZkYzcz
MGY0ZTgwYWU0MGUxZDQ5MTlmMTgwY2Q2MDQ0YzE0MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKQEAgLTE0MSw2ICsxNDEsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURldmljZU9yUGFnZVNj
YWxlRmFjdG9yKGZsb2F0IGVmZmVjdGl2ZVNjYWxlRmFjdG9yKSA9IDA7CisjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJh
Zyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBk
cmFnSW1hZ2UpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Vmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmll
d3BvcnRDb250cm9sbGVyLmNwcAppbmRleCA5NWU2OGUyNzE5OWZlMDBlYWJiMGU2ODBkNDY3NWY3
Y2U0ZjY5N2Q0Li44NjY2NmNiMzAyNmU2MWIyNzhmZDY1ZWJmZDAyY2E0NTdmNjIwYmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHByb3h5LCBQYWdlCiAgICAgLCBtX2lu
aXRpYWxseUZpdFRvVmlld3BvcnQodHJ1ZSkKICAgICAsIG1faGFzU3VzcGVuZGVkQ29udGVudChm
YWxzZSkKICAgICAsIG1faGFkVXNlckludGVyYWN0aW9uKGZhbHNlKQotICAgICwgbV9lZmZlY3Rp
dmVTY2FsZSgxKQorICAgICwgbV9lZmZlY3RpdmVTY2FsZUZhY3RvcigxKQogICAgICwgbV9wZW5k
aW5nUG9zaXRpb25DaGFuZ2UoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdTY2FsZUNoYW5nZShmYWxz
ZSkKIHsKQEAgLTk1LDE4ICs5NSwxOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnRlZ3JhbChm
bG9hdCB2YWx1ZSkKIEZsb2F0UG9pbnQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGl4ZWxBbGln
bmVkRmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50JiBmcmFtZVBvc2l0aW9uKQogewogI2lmIFBM
QVRGT1JNKEVGTCkKLSAgICBpZiAoIWlzSW50ZWdyYWwobV9lZmZlY3RpdmVTY2FsZSkpIHsKKyAg
ICBpZiAoIWlzSW50ZWdyYWwobV9lZmZlY3RpdmVTY2FsZUZhY3RvcikpIHsKICAgICAgICAgLy8g
VG8gYXZvaWQgYmx1cnJ5bmVzcywgbW9kaWZ5IHRoZSBwb3NpdGlvbiBzbyB0aGF0IGl0IG1hcHMg
aW50byBhIGRpc2NyZXRlIGRldmljZSBwb3NpdGlvbi4KICAgICAgICAgRmxvYXRQb2ludCBzY2Fs
ZWRQb3MoZnJhbWVQb3NpdGlvbik7CiAKICAgICAgICAgLy8gU2NhbGUgYnkgdGhlIGVmZmVjdGl2
ZSBzY2FsZSBmYWN0b3IgdG8gY29tcHV0ZSB0aGUgc2NyZWVuLXJlbGF0aXZlIHBvc2l0aW9uLgot
ICAgICAgICBzY2FsZWRQb3Muc2NhbGUobV9lZmZlY3RpdmVTY2FsZSwgbV9lZmZlY3RpdmVTY2Fs
ZSk7CisgICAgICAgIHNjYWxlZFBvcy5zY2FsZShtX2VmZmVjdGl2ZVNjYWxlRmFjdG9yLCBtX2Vm
ZmVjdGl2ZVNjYWxlRmFjdG9yKTsKIAogICAgICAgICAvLyBSb3VuZCB0byBpbnRlZ2VyIGJvdW5k
YXJpZXMuCiAgICAgICAgIEZsb2F0UG9pbnQgYWxpZ25lZFBvcyA9IHJvdW5kZWRJbnRQb2ludChz
Y2FsZWRQb3MpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYmFjayB0byBDU1MgY29vcmRpbmF0ZXMu
Ci0gICAgICAgIGFsaWduZWRQb3Muc2NhbGUoMSAvIG1fZWZmZWN0aXZlU2NhbGUsIDEgLyBtX2Vm
ZmVjdGl2ZVNjYWxlKTsKKyAgICAgICAgYWxpZ25lZFBvcy5zY2FsZSgxIC8gbV9lZmZlY3RpdmVT
Y2FsZUZhY3RvciwgMSAvIG1fZWZmZWN0aXZlU2NhbGVGYWN0b3IpOwogCiAgICAgICAgIHJldHVy
biBhbGlnbmVkUG9zOwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCBGbG9hdFBvaW50IFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OmJvdW5kQ29udGVudHNQb3NpdGlvbkF0U2NhbGUoY29uc3QgV2Vi
Q29yZTo6RgogCiBGbG9hdFBvaW50IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmJvdW5kQ29udGVu
dHNQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBmcmFtZVBvc2l0aW9uKQogewot
ICAgIHJldHVybiBib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKGZyYW1lUG9zaXRpb24sIG1f
ZWZmZWN0aXZlU2NhbGUpOworICAgIHJldHVybiBib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxl
KGZyYW1lUG9zaXRpb24sIG1fZWZmZWN0aXZlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQoKQpAQCAtMTg5LDcgKzE4OSw3IEBAIHZv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgSW50U2l6ZSYg
Y29udGVudHNTaXplLCBjb25zdCBJCiAKICAgICBpZiAobV9wZW5kaW5nU2NhbGVDaGFuZ2UpIHsK
ICAgICAgICAgbV9wZW5kaW5nU2NhbGVDaGFuZ2UgPSBmYWxzZTsKLSAgICAgICAgbV9jbGllbnQt
PnNldENvbnRlbnRzU2NhbGUobV9lZmZlY3RpdmVTY2FsZSk7CisgICAgICAgIG1fY2xpZW50LT5z
ZXRDb250ZW50c1NjYWxlKG1fZWZmZWN0aXZlU2NhbGVGYWN0b3IpOwogCiAgICAgICAgIC8vIFRo
ZSBzY2FsZSBjaGFuZ2VkLCB3ZSBoYXZlIHRvIHJlLXBpeGVsIGFsaWduLgogICAgICAgICBtX3Bl
bmRpbmdQb3NpdGlvbkNoYW5nZSA9IHRydWU7CkBAIC0yNTEsMTYgKzI1MSwxOSBAQCB2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZShjb25zdCBGbG9hdFNp
emUmIG5ld1NpemUpCiAgICAgbV93ZWJQYWdlUHJveHktPnNldFZpZXdwb3J0U2l6ZShyb3VuZGVk
SW50U2l6ZShuZXdTaXplKSk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlk
Q2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBmbG9h
dCBzY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewog
ICAgIGlmICghbV9wZW5kaW5nUG9zaXRpb25DaGFuZ2UpCiAgICAgICAgIG1fY29udGVudHNQb3Np
dGlvbiA9IHBvc2l0aW9uOwotICAgIGlmICghbV9wZW5kaW5nU2NhbGVDaGFuZ2UpCi0gICAgICAg
IG1fZWZmZWN0aXZlU2NhbGUgPSBzY2FsZTsKIAogICAgIHN5bmNWaXNpYmxlQ29udGVudHModHJh
amVjdG9yeVZlY3Rvcik7CiB9CiAKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hh
bmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IoZmxvYXQgZWZmZWN0aXZlU2NhbGVGYWN0b3IpCit7
CisgICAgYXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMoZWZmZWN0aXZlU2NhbGVGYWN0
b3IpOworfQorCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnN5bmNWaXNpYmxlQ29udGVu
dHMoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKICAgICBEcmF3aW5nQXJl
YVByb3h5KiBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOwpAQCAt
MjY5LDcgKzI3Miw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6c3luY1Zpc2libGVD
b250ZW50cyhjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjCiAKICAgICBGbG9hdFJlY3Qg
dmlzaWJsZUNvbnRlbnRzUmVjdChib3VuZENvbnRlbnRzUG9zaXRpb24obV9jb250ZW50c1Bvc2l0
aW9uKSwgdmlzaWJsZUNvbnRlbnRzU2l6ZSgpKTsKICAgICB2aXNpYmxlQ29udGVudHNSZWN0Lmlu
dGVyc2VjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX2NvbnRlbnRzU2l6ZSkpOwot
ICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1Jl
Y3QsIG1fZWZmZWN0aXZlU2NhbGUsIHRyYWplY3RvcnlWZWN0b3IpOworICAgIGRyYXdpbmdBcmVh
LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3QsIHRyYWplY3RvcnlW
ZWN0b3IpOwogCiAgICAgbV9jbGllbnQtPmRpZENoYW5nZVZpc2libGVDb250ZW50cygpOwogfQpA
QCAtMjk5LDcgKzMwMiw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdl
Vmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0CiAKIEZsb2F0U2l6ZSBQ
YWdlVmlld3BvcnRDb250cm9sbGVyOjp2aXNpYmxlQ29udGVudHNTaXplKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gRmxvYXRTaXplKG1fdmlld3BvcnRTaXplLndpZHRoKCkgLyBtX2VmZmVjdGl2ZVNj
YWxlLCBtX3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIG1fZWZmZWN0aXZlU2NhbGUpOworICAgIHJl
dHVybiBGbG9hdFNpemUobV92aWV3cG9ydFNpemUud2lkdGgoKSAvIG1fZWZmZWN0aXZlU2NhbGVG
YWN0b3IsIG1fdmlld3BvcnRTaXplLmhlaWdodCgpIC8gbV9lZmZlY3RpdmVTY2FsZUZhY3Rvcik7
CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6c3VzcGVuZENvbnRlbnQoKQpAQCAt
MzIyLDkgKzMyNSw5IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cmVzdW1lQ29udGVu
dCgpCiAgICAgbV93ZWJQYWdlUHJveHktPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVy
UmVuZGVyaW5nQ29udGVudHMoZmxvYXQgc2NhbGUpCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OmFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IGVmZmVjdGl2ZVNjYWxl
RmFjdG9yKQogewotICAgIG1fZWZmZWN0aXZlU2NhbGUgPSBzY2FsZTsKKyAgICBtX2VmZmVjdGl2
ZVNjYWxlRmFjdG9yID0gZWZmZWN0aXZlU2NhbGVGYWN0b3I7CiAgICAgbV9wZW5kaW5nU2NhbGVD
aGFuZ2UgPSB0cnVlOwogICAgIHN5bmNWaXNpYmxlQ29udGVudHMoKTsKIH0KQEAgLTM0MSw3ICsz
NDQsNyBAQCBib29sIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnVwZGF0ZU1pbmltdW1TY2FsZVRv
Rml0KGJvb2wgdXNlckluaXRpYXRlZFVwZGF0ZSkKICAgICBpZiAobV92aWV3cG9ydFNpemUuaXNF
bXB0eSgpIHx8IG1fY29udGVudHNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYm9vbCBjdXJyZW50bHlTY2FsZWRUb0ZpdCA9IGZ1enp5Q29tcGFyZShtX2VmZmVj
dGl2ZVNjYWxlLCB0b1ZpZXdwb3J0U2NhbGUobV9taW5pbXVtU2NhbGVUb0ZpdCksIDAuMDAwMSk7
CisgICAgYm9vbCBjdXJyZW50bHlTY2FsZWRUb0ZpdCA9IGZ1enp5Q29tcGFyZShtX2VmZmVjdGl2
ZVNjYWxlRmFjdG9yLCB0b1ZpZXdwb3J0U2NhbGUobV9taW5pbXVtU2NhbGVUb0ZpdCksIDAuMDAw
MSk7CiAKICAgICBmbG9hdCBtaW5pbXVtU2NhbGUgPSBXZWJDb3JlOjpjb21wdXRlTWluaW11bVNj
YWxlRmFjdG9yRm9yQ29udGVudENvbnRhaW5lZChtX3Jhd0F0dHJpYnV0ZXMsIFdlYkNvcmU6OnJv
dW5kZWRJbnRTaXplKG1fdmlld3BvcnRTaXplKSwgV2ViQ29yZTo6cm91bmRlZEludFNpemUobV9j
b250ZW50c1NpemUpLCBkZXZpY2VQaXhlbFJhdGlvKCkpOwogCkBAIC0zNTYsOCArMzU5LDggQEAg
Ym9vbCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjp1cGRhdGVNaW5pbXVtU2NhbGVUb0ZpdChib29s
IHVzZXJJbml0aWF0ZWRVcGRhdGUpCiAgICAgICAgICAgICAgICAgYXBwbHlTY2FsZUFmdGVyUmVu
ZGVyaW5nQ29udGVudHModG9WaWV3cG9ydFNjYWxlKG1fbWluaW11bVNjYWxlVG9GaXQpKTsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZWZmZWN0aXZl
IHNjYWxlIHN0YXlzIHdpdGhpbiBib3VuZHMuCi0gICAgICAgICAgICAgICAgZmxvYXQgYm91bmRl
ZFNjYWxlID0gaW5uZXJCb3VuZGVkVmlld3BvcnRTY2FsZShtX2VmZmVjdGl2ZVNjYWxlKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWZ1enp5Q29tcGFyZShib3VuZGVkU2NhbGUsIG1fZWZmZWN0aXZl
U2NhbGUsIDAuMDAwMSkpCisgICAgICAgICAgICAgICAgZmxvYXQgYm91bmRlZFNjYWxlID0gaW5u
ZXJCb3VuZGVkVmlld3BvcnRTY2FsZShtX2VmZmVjdGl2ZVNjYWxlRmFjdG9yKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWZ1enp5Q29tcGFyZShib3VuZGVkU2NhbGUsIG1fZWZmZWN0aXZlU2NhbGVG
YWN0b3IsIDAuMDAwMSkpCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5U2NhbGVBZnRlclJlbmRl
cmluZ0NvbnRlbnRzKGJvdW5kZWRTY2FsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oCmlu
ZGV4IDBmNDYxMjVhNDMxYzhlZDFmNTZiNjMzMTZhNWI2ZDY1OGU5MzEzZTguLmIzYjIxMTc4N2Y2
YmY0MTJhYzI2ZDY2NTliYzgyYjlmMzFiMzNhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaApAQCAtNjgsMTMgKzY4LDE0IEBAIHB1
YmxpYzoKICAgICBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3Q7CiAgICAgZmxvYXQgbWlu
aW11bUNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1TY2FsZVRvRml0OyB9
CiAgICAgZmxvYXQgbWF4aW11bUNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jhd0F0
dHJpYnV0ZXMubWF4aW11bVNjYWxlOyB9Ci0gICAgZmxvYXQgY3VycmVudENvbnRlbnRzU2NhbGUo
KSBjb25zdCB7IHJldHVybiBmcm9tVmlld3BvcnRTY2FsZShtX2VmZmVjdGl2ZVNjYWxlKTsgfQor
ICAgIGZsb2F0IGN1cnJlbnRDb250ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gZnJvbVZpZXdw
b3J0U2NhbGUobV9lZmZlY3RpdmVTY2FsZUZhY3Rvcik7IH0KIAogICAgIHZvaWQgc2V0SGFkVXNl
ckludGVyYWN0aW9uKGJvb2wgZGlkVXNlckludGVyYWN0KSB7IG1faGFkVXNlckludGVyYWN0aW9u
ID0gZGlkVXNlckludGVyYWN0OyB9CiAKICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20gdGhlIHZp
ZXdwb3J0LgogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgbmV3U2l6ZSk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHko
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yID0gV2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygp
KTsKKyAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvciA9
IFdlYkNvcmU6OkZsb2F0UG9pbnQ6Onplcm8oKSk7CisgICAgdm9pZCBkaWRDaGFuZ2VEZXZpY2VP
clBhZ2VTY2FsZUZhY3RvcihmbG9hdCBlZmZlY3RpdmVTY2FsZUZhY3Rvcik7CiAKICAgICAvLyBO
b3RpZmljYXRpb25zIGZyb20gdGhlIFdlYlByb2Nlc3MuCiAgICAgdm9pZCBkaWRDb21taXRMb2Fk
KCk7CkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgZnJvbVZpZXdwb3J0U2Nh
bGUoZmxvYXQgc2NhbGUpIGNvbnN0IHsgcmV0dXJuIHNjYWxlIC8gZGV2aWNlUGl4ZWxSYXRpbygp
OyB9CiAgICAgZmxvYXQgdG9WaWV3cG9ydFNjYWxlKGZsb2F0IHNjYWxlKSBjb25zdCB7IHJldHVy
biBzY2FsZSAqIGRldmljZVBpeGVsUmF0aW8oKTsgfQogICAgIHZvaWQgc3luY1Zpc2libGVDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50ICZ0cmFqZWN0b3J5VmVjdG9yID0gV2ViQ29y
ZTo6RmxvYXRQb2ludDo6emVybygpKTsKLSAgICB2b2lkIGFwcGx5U2NhbGVBZnRlclJlbmRlcmlu
Z0NvbnRlbnRzKGZsb2F0IHNjYWxlKTsKKyAgICB2b2lkIGFwcGx5U2NhbGVBZnRlclJlbmRlcmlu
Z0NvbnRlbnRzKGZsb2F0IGVmZmVjdGl2ZVNjYWxlRmFjdG9yKTsKICAgICB2b2lkIGFwcGx5UG9z
aXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBv
cyk7CiAgICAgYm9vbCB1cGRhdGVNaW5pbXVtU2NhbGVUb0ZpdChib29sIHVzZXJJbml0aWF0ZWRV
cGRhdGUpOwogCkBAIC0xMDgsNyArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpGbG9h
dFNpemUgbV9jb250ZW50c1NpemU7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fdmlld3BvcnRT
aXplOwogICAgIFdlYkNvcmU6OkludFNpemUgbV9jbGllbnRDb250ZW50c1NpemU7Ci0gICAgZmxv
YXQgbV9lZmZlY3RpdmVTY2FsZTsgLy8gU2hvdWxkIGFsd2F5cyBiZSBjc3NTY2FsZSAqIGRldmlj
ZVBpeGVsUmF0aW8uCisgICAgZmxvYXQgbV9lZmZlY3RpdmVTY2FsZUZhY3RvcjsgLy8gU2hvdWxk
IGFsd2F5cyBiZSBjc3NTY2FsZSAqIGRldmljZVBpeGVsUmF0aW8uCiAKICAgICBib29sIG1fcGVu
ZGluZ1Bvc2l0aW9uQ2hhbmdlOwogICAgIGJvb2wgbV9wZW5kaW5nU2NhbGVDaGFuZ2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ1ODBiY2Y0ZDdlMGRl
ZDVkZjMzNzQyZWQ4ZGI4Mzk0MWNhZTM1ZDYuLmQ5YzBmYTc0Mjc5ZmQxZDBhYThmNjA0NjI1MmQ3
NjUyMzU3YzAzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xNTE5LDYgKzE1MTksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZShkb3Vi
bGUgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlKHNjYWxlLCBvcmln
aW4pLCBtX3BhZ2VJRCk7CisKKyAgICBpZiAobV9wYWdlU2NhbGVGYWN0b3IgIT0gc2NhbGUpIHsK
KyAgICAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSBzY2FsZTsKKyAgICAgICAgZGV2aWNlT3JQYWdl
U2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKQEAgLTE1Mjgs
OCArMTUzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCBzY2FsZUZhY3RvcikKIAogICAgIG1faW50cmluc2ljRGV2aWNlU2NhbGVGYWN0
b3IgPSBzY2FsZUZhY3RvcjsKIAotICAgIGlmIChtX2RyYXdpbmdBcmVhKQotICAgICAgICBtX2Ry
YXdpbmdBcmVhLT5kZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpOworICAgIGRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQpAQCAtMTU2MCw3ICsx
NTY0LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21EZXZpY2VTY2FsZUZhY3Rvcihm
bG9hdCBjdXN0b21TY2FsZUZhY3RvcikKICAgICBtX2N1c3RvbURldmljZVNjYWxlRmFjdG9yID0g
Y3VzdG9tU2NhbGVGYWN0b3I7CiAKICAgICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IoKSAhPSBvbGRT
Y2FsZUZhY3RvcikKLSAgICAgICAgbV9kcmF3aW5nQXJlYS0+ZGV2aWNlU2NhbGVGYWN0b3JEaWRD
aGFuZ2UoKTsKKyAgICAgICAgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkK
K3sKKyAgICBpZiAobV9kcmF3aW5nQXJlYSkKKyAgICAgICAgbV9kcmF3aW5nQXJlYS0+ZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKKworI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShFRkwpCisgICAgbV9wYWdlQ2xpZW50LT5kaWRDaGFuZ2VEZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvcihwYWdlU2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOworI2VuZGlmCiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQpAQCAt
MTY2MSw3ICsxNjc1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMo
ZG91YmxlIGdhcCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VTY2FsZUZhY3RvckRpZENoYW5n
ZShkb3VibGUgc2NhbGVGYWN0b3IpCiB7CisgICAgaWYgKG1fcGFnZVNjYWxlRmFjdG9yID09IHNj
YWxlRmFjdG9yKQorICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSBzY2Fs
ZUZhY3RvcjsKKyAgICBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZSgpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoYm9vbCBt
ZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA4NWNhZDk3MTY3YjY4ZmZhNjRiNDllNzdjMTE5NDFkYzgxNTc4ZTk0
Li5mMzBhOWRiMDMyYTA4NjcyOGZkNzlhYjZmZmQ0NjA4MjIxMDEzNTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05MDAsNiArOTAwLDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7
CiAjZW5kaWYKIAorICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsK
KwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBuZWVkVG91Y2hFdmVudHMoYm9v
bCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJh
c2UuaAppbmRleCBkMzAyNTQyNjFiMWU0YmRkZmY5ZmVjZDhhYzlkNzAwZWRmMGRlZmE2Li5kZGU1
Y2RiNmRlNzZiNTc3YzNlNmU4YmM3ZDk2ZTg3YzMyNmY1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5oCkBAIC00Miw2ICs0Miw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVmlld3BvcnRTaXplKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VD
b250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURldmljZU9yUGFnZVNj
YWxlRmFjdG9yKGZsb2F0IGVmZmVjdGl2ZVNjYWxlRmFjdG9yKSA9IDA7CisjZW5kaWYKIAogICAg
IEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5jcHAKaW5kZXggNzRkMDBj
YmY4MTI5NjgyMmVjNWVhZDgxMzQ4NmRmMGFiMjZhZTYxMS4uZDVmMTlhNzY1ZWMyYTkwZGEwODlm
OWU5YTI2OTczZDY5YjYwYTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmNwcApAQCAtOTgsNiArOTgsMTQgQEAgdm9p
ZCBQYWdlQ2xpZW50RGVmYXVsdEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQogICAgIG1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8Q29udGVu
dHNTaXplQ2hhbmdlZD4oKS5jYWxsKHNpemUpOwogfQogCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQordm9pZCBQYWdlQ2xpZW50RGVmYXVsdEltcGw6OmRpZENoYW5nZURldmljZU9yUGFn
ZVNjYWxlRmFjdG9yKGZsb2F0IGVmZmVjdGl2ZVNjYWxlRmFjdG9yKQoreworICAgIEFTU0VSVCht
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+
ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IoZWZmZWN0aXZlU2NhbGVGYWN0b3IpOwor
fQorI2VuZGlmCisKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIHZvaWQgUGFnZUNsaWVu
dERlZmF1bHRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRp
b24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnREZWZhdWx0SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
RGVmYXVsdEltcGwuaAppbmRleCAzMWFlOTBkMGJlZDJjMjA0NDIwMTkyYjZmNDk5YWQ4NjAxOTM4
NTlmLi45OWQ0Y2VmNTM2NjU0ZjgwMjc1NDIyODYwNzNkNjIyMmI5N2Q1NDQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmgK
QEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VW
aWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJik7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VEZXZpY2VPclBhZ2VTY2FsZUZhY3RvcihmbG9hdCBlZmZlY3RpdmVTY2FsZUZhY3Rv
cik7CisjZW5kaWYKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2aXJ0dWFsIHZv
aWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVu
dHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCmlu
ZGV4IDgyYWJlNmVjMjcxYzM2ODMwYzgwN2EzMzk3OTQzNjE4NjIxNGU5YTcuLjA3YWM2MGIyZDBj
NjAyMmQxNjc0MjQyZDU2NzkzMmQ5ZjRjNWJlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIHZvaWQgUGFnZUNsaWVudExlZ2FjeUltcGw6OmRpZENvbW1pdExvYWQoKQogdm9pZCBQYWdl
Q2xpZW50TGVnYWN5SW1wbDo6dXBkYXRlVmlld3BvcnRTaXplKCkKIHsKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKLSAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNl
dFZpc2libGVDb250ZW50c1JlY3QoSW50UmVjdChyb3VuZGVkSW50UG9pbnQobV92aWV3SW1wbC0+
cGFnZVBvc2l0aW9uKCkpLCBtX3ZpZXdJbXBsLT5zaXplKCkpLCBtX3ZpZXdJbXBsLT5zY2FsZUZh
Y3RvcigpLCBGbG9hdFBvaW50KCkpOworICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2luZ0Fy
ZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChtX3Zp
ZXdJbXBsLT5wYWdlUG9zaXRpb24oKSksIG1fdmlld0ltcGwtPnNpemUoKSksIEZsb2F0UG9pbnQo
KSk7CiAjZW5kaWYKIH0KIApAQCAtODEsNiArODEsMTMgQEAgdm9pZCBQYWdlQ2xpZW50TGVnYWN5
SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
CiAgICAgbV92aWV3SW1wbC0+c21hcnRDYWxsYmFjazxDb250ZW50c1NpemVDaGFuZ2VkPigpLmNh
bGwoc2l6ZSk7CiB9CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCit2b2lkIFBhZ2VD
bGllbnRMZWdhY3lJbXBsOjpkaWRDaGFuZ2VEZXZpY2VPclBhZ2VTY2FsZUZhY3RvcihmbG9hdCkK
K3sKKyAgICBtX3ZpZXdJbXBsLT51cGRhdGUoKTsKK30KKyNlbmRpZgorCiAjaWYgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCiB2b2lkIFBhZ2VDbGllbnRMZWdhY3lJbXBsOjpwYWdlRGlkUmVxdWVz
dFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmgKaW5kZXggZWI5ZmJiMjlj
YTgwNTkxNWJhMTcwODgwNDJmMzE0MThjZGRkZWI4ZS4uMmRmYmUxYzYzZTlhODZjODUxZmI3ZDA2
MzIyMmVjNTA0ZDk2MjhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuaApAQCAtNTEsNiArNTEsOSBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3Jl
OjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVu
dHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURldmljZU9yUGFnZVNjYWxlRmFjdG9y
KGZsb2F0IGVmZmVjdGl2ZVNjYWxlRmFjdG9yKTsKKyNlbmRpZgogI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGNvdmVyZWRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCmluZGV4IDg4Njc3
ZDA0YzdiMjBhM2RiY2M0NmUxNDUzNDFjNjVkOGMzODBhMTIuLmViMzA0YmIwMDhkZjM5MDY3YTA2
NWNiYTYxYTMyYjQyMmFiZDMwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcApA
QCAtNzYsMjEgKzc2LDE2IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6
c2V0Vmlld3BvcnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvCiAgICAgbV9jb250ZW50
UG9zaXRpb24gPSBjb250ZW50c1BvaW50OwogCiAgICAgRmxvYXRQb2ludCBwb3MoY29udGVudHNQ
b2ludCk7Ci0gICAgcG9zLnNjYWxlKHNjYWxlRmFjdG9yKCksIHNjYWxlRmFjdG9yKCkpOworICAg
IHBvcy5zY2FsZShlZmZlY3RpdmVTY2FsZUZhY3RvcigpLCBlZmZlY3RpdmVTY2FsZUZhY3Rvcigp
KTsKICAgICBtX3ZpZXdJbXBsLT5zZXRQYWdlUG9zaXRpb24ocG9zKTsKIAotICAgIG1fY29udHJv
bGxlci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KG1fY29udGVudFBvc2l0aW9uLCBzY2Fs
ZUZhY3RvcigpKTsKLX0KLQotdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpz
ZXRDb250ZW50c1NjYWxlKGZsb2F0IG5ld1NjYWxlKQotewotICAgIG1fdmlld0ltcGwtPnNldFNj
YWxlRmFjdG9yKG5ld1NjYWxlKTsKKyAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRz
VmlzaWJpbGl0eShtX2NvbnRlbnRQb3NpdGlvbik7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKG1fY29u
dHJvbGxlcik7Ci0gICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHko
bV9jb250ZW50UG9zaXRpb24sIHNjYWxlRmFjdG9yKCkpOworICAgIG1fY29udHJvbGxlci0+ZGlk
Q2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KG1fY29udGVudFBvc2l0aW9uKTsKIH0KIAogdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAppbmRleCAyZTBhZjFjNmJjNWQwZGQ5ZTM2ZGMw
NWMwZjQyNmNiMTVlNGViM2E1Li5jNDAwM2IzZWI3MzNjZjk0MjlkZjEzMTVjYTFhN2I4MDAwYjIy
YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaApAQCAtNDUsMTQgKzQ1LDE0IEBAIHB1
YmxpYzoKIAogICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhKCkgY29uc3Q7CiAgICAg
V2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9Ci0g
ICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdJbXBsLT5zY2FsZUZh
Y3RvcigpOyB9CisgICAgZmxvYXQgZWZmZWN0aXZlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdJbXBsLT5lZmZlY3RpdmVTY2FsZUZhY3RvcigpOyB9CiAgICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBjb250ZW50UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRQb3NpdGlv
bjsgfQogCiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKICAgICB2b2lkIHNldFJlbmRl
cmVyQWN0aXZlKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdwb3J0UG9zaXRpb24o
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudHNQb2ludCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c1NjYWxlKGZsb2F0KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN1bWVDb250ZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCmluZGV4IGM5ZTIxYWVhNjM1ZDE5
OTQwNzc1MGE0MTE1NWFjZmIyN2IxM2M3ZTAuLjY4ZTQ3YTUzMjdhYmM4NTFjMmM4OWIxYzg0Yzky
Y2RiNmQwZGRjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmFuaW1hdGVDb250ZW50
UmVjdFZpc2libGUoY29uc3QgUVJlY3RGJiBjb24KIAogICAgIC8vIEluZm9ybSB0aGUgd2ViIHBy
b2Nlc3MgYWJvdXQgdGhlIHJlcXVlc3RlZCB2aXNpYmxlIGNvbnRlbnQgcmVjdCBpbW1lZGlhdGVs
eSBzbyB0aGF0IG5ldyB0aWxlcwogICAgIC8vIGFyZSByZW5kZXJlZCBhdCB0aGUgZmluYWwgZGVz
dGluYXRpb24gZHVyaW5nIHRoZSBhbmltYXRpb24uCi0gICAgbV9jb250cm9sbGVyLT5kaWRDaGFu
Z2VDb250ZW50c1Zpc2liaWxpdHkoY29udGVudFJlY3QudG9wTGVmdCgpLCB2aWV3cG9ydFNjYWxl
Rm9yUmVjdChjb250ZW50UmVjdCkpOworICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVu
dHNWaXNpYmlsaXR5KGNvbnRlbnRSZWN0LnRvcExlZnQoKSk7CiAKICAgICAvLyBTaW5jZSB3ZSBo
YXZlIHRvIGFuaW1hdGUgc2NhbGUgYW5kIHBvc2l0aW9uIGF0IHRoZSBzYW1lIHRpbWUgdGhlIHNj
YWxlIGFuaW1hdGlvbiBpbnRlcnBvbGF0ZXMKICAgICAvLyBmcm9tIHRoZSBjdXJyZW50IHZpZXdw
b3J0IHJlY3QgaW4gY29udGVudCBjb29yZGluYXRlcyB0byBhIHZpc2libGUgcmVjdCBvZiB0aGUg
Y29udGVudC4KQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRRdDo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCkKIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudFF0Ojp1cGRhdGVWaWV3cG9ydENvbnRyb2xsZXIoY29uc3QgUVBvaW50
RiYgdHJhamVjdG9yeSkKIHsKICAgICBGbG9hdFBvaW50IHZpZXdwb3J0UG9zID0gbV92aWV3cG9y
dEl0ZW0tPm1hcFRvV2ViQ29udGVudChRUG9pbnRGKCkpOwotICAgIG1fY29udHJvbGxlci0+ZGlk
Q2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KHZpZXdwb3J0UG9zLCBtX3BhZ2VJdGVtLT5jb250ZW50
c1NjYWxlKCksIHRyYWplY3RvcnkpOworICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVu
dHNWaXNpYmlsaXR5KHZpZXdwb3J0UG9zLCB0cmFqZWN0b3J5KTsKIH0KIAogdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNjYWxlQ29udGVudChxcmVhbCBpdGVtU2NhbGUsIGNv
bnN0IFFQb2ludEYmIGNlbnRlckluQ1NTQ29vcmRpbmF0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwCmluZGV4IDg5YTQwYzkyMzFhMTgxYjcwMTljMWUy
ZmExMmI2YjY4YjExNmIyNjEuLjlmYWNlMTk0YzhmOTgxODEwZjk4N2VhOTIxNmQ1ZTU4ZWNkZWE3
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwCkBA
IC0xMDUsNiArMTA1LDE1IEBAIHZvaWQgUXRQYWdlQ2xpZW50OjpkaWRDaGFuZ2VDb250ZW50c1Np
emUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgcHZjLT5kaWRDaGFuZ2VDb250ZW50
c1NpemUobmV3U2l6ZSk7CiB9CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCit2b2lk
IFF0UGFnZUNsaWVudDo6ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IoZmxvYXQgZWZm
ZWN0aXZlU2NhbGVGYWN0b3IpCit7CisgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciogcHZjID0g
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT52aWV3cG9ydENvbnRyb2xsZXIo
KTsKKyAgICBpZiAocHZjKQorICAgICAgICBwdmMtPmRpZENoYW5nZURldmljZU9yUGFnZVNjYWxl
RmFjdG9yKGVmZmVjdGl2ZVNjYWxlRmFjdG9yKTsKK30KKyNlbmRpZgorCiB2b2lkIFF0UGFnZUNs
aWVudDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0
QXR0cmlidXRlcyYgYXR0cikKIHsKICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2Vi
VmlldyktPmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhhdHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaAppbmRleCA2MTJlOGM5MTNjMzdlYWYyMmUzYjYz
MmQ4ZGExYzdlZmJhZGIzNWNiLi42NGE3Y2MxZGQ4MGE2OGUyZDIxMTdkMjU5Y2YzYzRkYjc2ODAx
OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oCkBAIC01
MCw2ICs1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHBh
Z2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Cisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VE
ZXZpY2VPclBhZ2VTY2FsZUZhY3RvcihmbG9hdCBlZmZlY3RpdmVTY2FsZUZhY3Rvcik7CisjZW5k
aWYKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAppbmRleCA2MGNmNjU5ZTc4NmNhNDM3N2I3YWJmM2Q5NGUxNzhkZTVmNTBhNDZkLi43YWNhMGZi
ZDQyMTc5ZTdhZTUxNWMyZmFjZDIyYjFhZmVmY2ExNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTEyMiw3
ICsxMjIsNiBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3BlbmRpbmdDb250ZW50
c1NjYWxlQWRqdXN0bWVudChmYWxzZSkKICAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0
bWVudChmYWxzZSkKICAgICAsIG1fY29vcmRpbmF0b3IoMCkKLSAgICAsIG1fY29udGVudHNTY2Fs
ZSgxKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fY2FudmFz
UGxhdGZvcm1MYXllcigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIodGhpcywgJkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCkBAIC02
NzcsMTYgKzY3NiwxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJs
ZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdAogICAgIHNldE5lZWRzVmlz
aWJsZVJlY3RBZGp1c3RtZW50KCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7Ci0gICAgbV9jb250ZW50
c1NjYWxlID0gc2NhbGU7CiAgICAgaWYgKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKICAgICAg
ICAgbV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQgPSB0cnVlOwogfQogCiBmbG9hdCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQogewotICAg
IHJldHVybiBzZWxmT3JBbmNlc3RvckhhdmVOb25BZmZpbmVUcmFuc2Zvcm1zKCkgPyAxIDogbV9j
b250ZW50c1NjYWxlOworICAgIHJldHVybiBzZWxmT3JBbmNlc3RvckhhdmVOb25BZmZpbmVUcmFu
c2Zvcm1zKCkgPyAxIDogZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2FsZUZhY3RvcigpOwog
fQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29udGVudHNTY2FsZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCmluZGV4IGUwZWQxMmJiMjliNTgwNjgwZWY0M2QzYjBiMTFjZDBmMmFhMjJjZjEuLjZh
YmM3MDNlMjUzYjQ2NDdkNDliNGIzMjdkNjY5NDRjZTMwZjQzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0xMjMs
NiArMTIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlz
cGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0
YXRlKGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENv
bXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQpAQCAtMTM3LDcgKzEzOCw2IEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IGNv
bXB1dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNlKCk7CiAgICAgdm9pZCBjb21wdXRlUGl4ZWxBbGln
bm1lbnQoRmxvYXRQb2ludCYgcG9zaXRpb24sIEZsb2F0U2l6ZSYsIEZsb2F0UG9pbnQzRCYgYW5j
aG9yUG9pbnQsIEZsb2F0U2l6ZSYgYWxpZ25tZW50T2Zmc2V0KTsKIAotICAgIHZvaWQgc2V0Q29u
dGVudHNTY2FsZShmbG9hdCk7CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0
b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyKGJv
b2wpOwpAQCAtMjM5LDcgKzIzOSw2IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJDbGllbnQqIG1fY29vcmRpbmF0b3I7CiAgICAgT3duUHRyPFRpbGVkQmFj
a2luZ1N0b3JlPiBtX21haW5CYWNraW5nU3RvcmU7CiAgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0
b3JlPiBtX3ByZXZpb3VzQmFja2luZ1N0b3JlOwotICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgTmF0aXZlSW1hZ2VQ
dHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCBjYTQ0NTdiYjEy
Yzk5MjgzNzI4NmRmNDc4YzEyZjg5OWFmMTI1MmNjLi40ZTgxMjYzMTg0ZWVhOWY5Zjk4Y2FiM2Vi
MjI2ZjZhM2UxNzFiZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTg2LDcgKzg2LDYgQEAgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFn
ZSkKICAgICAsIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcyhmYWxzZSkKICAgICAsIG1fd2FpdGlu
Z0ZvclVJUHJvY2Vzcyh0cnVlKQogICAgICwgbV9pc1N1c3BlbmRlZChmYWxzZSkKLSAgICAsIG1f
Y29udGVudHNTY2FsZSgxKQogICAgICwgbV9zaG91bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGUo
dHJ1ZSkKICAgICAsIG1fc2hvdWxkU3luY0ZyYW1lKGZhbHNlKQogICAgICwgbV9kaWRJbml0aWFs
aXplUm9vdENvbXBvc2l0aW5nTGF5ZXIoZmFsc2UpCkBAIC02NzgsMTIgKzY3NywyMSBAQCBQYXNz
T3duUHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3Jh
cGhpY3NMYXllcihHcmFwaGljcwogICAgIGxheWVyLT5zZXRDb29yZGluYXRvcih0aGlzKTsKICAg
ICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyKTsKICAgICBtX2xheWVyc1RvQ3JlYXRlLmFw
cGVuZChsYXllci0+aWQoKSk7Ci0gICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50
c1NjYWxlKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAg
ICBzY2hlZHVsZUxheWVyRmx1c2goKTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwogfQog
CitmbG9hdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOworfQorCitm
bG9hdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKIGJvb2wgTGF5
ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTc0NSwyNCArNzUzLDE4IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIGNvCiAg
ICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6U2V0TGF5ZXJBbmltYXRpb25zKGxheWVySUQsIGFjdGl2ZUFuaW1hdGlvbnMpKTsKIH0KIAot
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVj
dG9yeVZlY3RvcikKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVj
dG9yeVZlY3RvcikKIHsKLSAgICBib29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0g
bV92aXNpYmxlQ29udGVudHNSZWN0OwotICAgIGJvb2wgY29udGVudHNTY2FsZURpZENoYW5nZSA9
IHNjYWxlICE9IG1fY29udGVudHNTY2FsZTsKLQogICAgIC8vIEEgemVybyB0cmFqZWN0b3J5VmVj
dG9yIGluZGljYXRlcyB0aGF0IHRpbGVzIGFsbCBhcm91bmQgdGhlIHZpZXdwb3J0IGFyZSByZXF1
ZXN0ZWQuCiAgICAgdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLmdldCgpKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcih0
cmFqZWN0b3J5VmVjdG9yKTsKIAotICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UgfHwgY29u
dGVudHNTY2FsZURpZENoYW5nZSkgeworICAgIGJvb2wgY29udGVudHNSZWN0RGlkQ2hhbmdlID0g
cmVjdCAhPSBtX3Zpc2libGVDb250ZW50c1JlY3Q7CisgICAgaWYgKGNvbnRlbnRzUmVjdERpZENo
YW5nZSkgewogICAgICAgICBtX3Zpc2libGVDb250ZW50c1JlY3QgPSByZWN0OwotICAgICAgICBt
X2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsKIAogICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
ZW5kKCk7CiAgICAgICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoY29udGVudHNTY2FsZURpZENoYW5nZSkKLSAg
ICAgICAgICAgICAgICAoKml0KS0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7Ci0gICAgICAgICAg
ICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKQotICAgICAgICAgICAgICAgICgqaXQpLT5zZXRO
ZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOworICAgICAgICAgICAgKCppdCktPnNldE5lZWRz
VmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc3Nyw2ICs3
NzksMTQgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG8KICAgICAgICAgbV9zaG91bGRTZW5kU2Ny
b2xsUG9zaXRpb25VcGRhdGUgPSB0cnVlOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKK3sKKyAgICBtX3Jvb3RMYXll
ci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICBpZiAo
bV9wYWdlT3ZlcmxheUxheWVyKQorICAgICAgICBtX3BhZ2VPdmVybGF5TGF5ZXItPmRldmljZU9y
UGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworfQorCiBHcmFwaGljc0xheWVyRmFjdG9yeSogQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpncmFwaGljc0xheWVyRmFjdG9yeSgpCiB7CiAgICAgcmV0
dXJuIHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDllZTBkMWM0N2RhM2JiMzNmMDYzZGU3OTYwNDljYzNmMDI0
ZjE3NTcuLmIxZWNjNmJkNzk5ZmVhMDViOTg0OTRiNTg3YjBlMzUzYzAxMWUyNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5o
CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYXVzZVJlbmRl
cmluZygpIHsgbV9pc1N1c3BlbmRlZCA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
UmVuZGVyaW5nKCkgeyBtX2lzU3VzcGVuZGVkID0gZmFsc2U7IHNjaGVkdWxlTGF5ZXJGbHVzaCgp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRl
SW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UqKSBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzOyB9CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
TWVzc2FnZURlY29kZXImKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0
b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIE9WRVJSSURFOwogCkBAIC0xMjQsNiArMTI0LDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpOwogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50
aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKKyAgICB2aXJ0dWFs
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBm
bG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjpDb29yZGluYXRvcgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7CkBAIC0xOTUsNyAr
MTk3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvclVJUHJvY2VzczsKICAgICBi
b29sIG1faXNTdXNwZW5kZWQ7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlzaWJsZUNvbnRl
bnRzUmVjdDsKLSAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAgICAgYm9vbCBtX3Nob3VsZFNl
bmRTY3JvbGxQb3NpdGlvblVwZGF0ZTsKIAogICAgIExheWVyVHJlZUNvbnRleHQgbV9sYXllclRy
ZWVDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCmluZGV4IDAzN2JmNjlmOWNkYWVi
Y2MyZmViY2ExODg1ZDRkZWIxNmM5ODA1YjguLmNjNWVjZmZmMzkyYzY4ZDY1NjBiOTI1MWQxMmM2
OGZhZTA4MDZlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcg
QEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIG1lc3NhZ2VzIC0+IENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdCB7Ci0gICAgU2V0VmlzaWJsZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2NhbGUsIFdlYkNvcmU6OkZsb2F0
UG9pbnQgdHJhamVjdG9yeVZlY3RvcnkpCisgICAgU2V0VmlzaWJsZUNvbnRlbnRzUmVjdChXZWJD
b3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCwgV2ViQ29yZTo6RmxvYXRQb2ludCB0
cmFqZWN0b3J5VmVjdG9yeSkKICAgICBSZW5kZXJOZXh0RnJhbWUoKQogICAgIFB1cmdlQmFja2lu
Z1N0b3JlcygpCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApp
bmRleCA4NmM1M2IxODEwNzYyMTQzNTE4YmQyOTYzZWNjY2NmMWUyN2E2NTMwLi44ZTA1ZmNhNDIw
YmQ4MmUwNTI5NDFhYTUyNDQyY2U4MWUzMDVlNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtMzgwLDcgKzM4
MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjp1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50
NjRfdCBzdGF0ZUlELCBib29sIHJlc3BvbmRJbW1lCiAgICAgICAgIG1fd2ViUGFnZS0+c2Nyb2xs
TWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKHNjcm9sbE9mZnNldCk7CiAKICAgICAg
ICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewotICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5k
ZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICAgICAgICAgIC8vIFVzZSB0
aGUgcHJldmlvdXNseSBzZXQgcGFnZSBzaXplIGluc3RlYWQgb2YgdGhlIGFyZ3VtZW50LgogICAg
ICAgICAgICAgLy8gSXQgZ2V0cyBhZGp1c3RlZCBwcm9wZXJseSB3aGVuIHVzaW5nIHRoZSBmaXhl
ZCBsYXlvdXQgbW9kZS4KICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2l6ZURpZENoYW5n
ZShtX3dlYlBhZ2UtPnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCBlZDg5MTA1NGQzMjM5Mjg4ODZiZmY2MzYxYjY4
NTJjMTE4MTQ3Y2NmLi4wMDAzYzA2Y2ExOWEzNDhjMjI4NzcwZmNjZjdhYjhkYzY2ZGRhOTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0
LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFp
bnQoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8q
Y2FsbGJhY2tJRCovKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlk
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRJbnN0YWxsUGFnZU92ZXJsYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFVuaW5z
dGFsbFBhZ2VPdmVybGF5KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDdlMDQzZDgzN2JiNjFmZDI3MTFhZWExZDRmZjM2NmY2YzEw
ZDM2MTkuLjI0ZGVhZWY0YzhjZTZiY2M0YzAzMDhjODJlNmY0NDkyMzMzNTUzMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTExODksNiAr
MTE4OSw4IEBAIHZvaWQgV2ViUGFnZTo6c2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50
UG9pbnQmIG9yaWdpbikKICAgICBmb3IgKEhhc2hTZXQ8UGx1Z2luVmlldyo+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fcGx1Z2luVmlld3MuYmVnaW4oKSwgZW5kID0gbV9wbHVnaW5WaWV3cy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+cGFnZVNjYWxlRmFjdG9yRGlkQ2hh
bmdlKCk7CiAKKyAgICBtX2RyYXdpbmdBcmVhLT5sYXllclRyZWVIb3N0KCktPmRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2Uoc2NhbGUpKTsKIH0KIApAQCAtMTIxOSw2ICsxMjIx
LDggQEAgdm9pZCBXZWJQYWdlOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3Rv
cikKICAgICAgICAgbGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgbV9maW5kQ29udHJvbGxlci5k
ZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpOwogICAgIH0KKworICAgIG1fZHJhd2luZ0FyZWEt
PmxheWVyVHJlZUhvc3QoKS0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiB9CiAK
IGZsb2F0IFdlYlBhZ2U6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAK
aW5kZXggNDAyMzZmOGRmNDUyMGU5YzY3NmQwMGZkZWUxODFhYzRlMDZjYTdmOC4uNzZlOWI3ZGFi
ZGQ4MmRhM2JlOGYxZTc4N2QwMmU2NTRhYjlhNzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAKQEAgLTE1
MCw3ICsxNTAsNyBAQCB2b2lkIExheWVyVHJlZUhvc3RDQTo6c2l6ZURpZENoYW5nZShjb25zdCBJ
bnRTaXplJiBuZXdTaXplKQogICAgIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwogfQogCi12
b2lkIExheWVyVHJlZUhvc3RDQTo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKQordm9pZCBM
YXllclRyZWVIb3N0Q0E6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7CiAgICAg
Ly8gT3RoZXIgbGF5ZXJzIGxlYXJuIG9mIHRoZSBzY2FsZSBmYWN0b3IgY2hhbmdlIHZpYSBXZWJQ
YWdlOjpzZXREZXZpY2VTY2FsZUZhY3Rvci4KICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5oCmluZGV4IDIx
YjEzZGExYzI0OTJlM2QzZmU0NGFiODg4NGQ2OWZlZmIxY2EwYjguLmFkMmRkZDFjMDVmYjM3ZjQ3
YWM4NzVhZTJjODA5YmY3OGJmOTViZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5ZXJUcmVlSG9zdENBLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHJvdGVjdGVkOgogICAgIC8vIExheWVyVHJlZUhvc3QuCiAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBuZXdTaXplKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRD
aGFuZ2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2Vk
KCk7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuY3BwCmluZGV4IDA3ZmUxMjg1NWE3ZGE4MTlhODIzMWUwOTg1OWRiZWEyMzBlMGU5
N2QuLjFlOWQ2NzEyZTczYTU1Y2M4OGUxMjBjZTg2NDc1Yzc5MmYyOTY5YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2l6
ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgIGNvbXBvc2l0ZUxheWVyc1Rv
Q29udGV4dChGb3JSZXNpemUpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OmRldmljZVNj
YWxlRmFjdG9yRGlkQ2hhbmdlKCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNlT3JQYWdl
U2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKICAgICAvLyBPdGhlciBsYXllcnMgbGVhcm4gb2YgdGhl
IHNjYWxlIGZhY3RvciBjaGFuZ2UgdmlhIFdlYlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yLgog
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JD
aGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDg0MGFkYTgxM2E2NzBkNjBlZWJiOGU1YjQx
MzA4MmY2ODZmNGQwOGYuLjFlZGFkYmM0ODMwM2Q5Y2MyNzlmZTk1OTE3NDQ5MDEwMDEzOGI2MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJU
cmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
TGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC01Myw3ICs1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBM
YXllclRyZWVIb3N0LgogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdmlydHVh
bCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCk7CisgICAgdmlydHVh
bCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBmb3JjZVJlcGFpbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUxh
eWVyRmx1c2goKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181873</attachid>
            <date>2013-01-09 01:30:18 -0800</date>
            <delta_ts>2013-01-23 03:42:34 -0800</delta_ts>
            <desc>WIP Patch2</desc>
            <filename>bug-105978-20130109182703.patch</filename>
            <type>text/plain</type>
            <size>56766</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ4N2MyY2RiOWQ4ZmE3
MTdiZGY2YTgyNTBhODg3ODFiOWMwYjFkYS4uODUxYTg0NTlhNDk3NmUwNzY4YWRmMzM2ZDBmZTQw
YzQxZjFiMmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAxLTA5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtFRkxdW1dL
Ml0gV2Ugc2hvdWxkIGNvbnNpZGVyIGZyYW1lIGFuZCBkZXZpY2Ugc2NhbGUgZmFjdG9ycyBpbiBX
ZWJDb3JlIGluc3RlYWQgb2Ygc2NhbGluZyBvdXIgcmFzdGVyIGdyYXBoaWNzIGVuZ2luZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTk3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JEb2N1bWVudCk6CisKIDIwMTMtMDEtMDcg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1Rl
eE1hcF0gUmVuYW1lIGN1cnJlbnRbVHJhbnNmb3JtfE9wYWNpdHl8RmlsdGVyc10gaW4gVGV4dHVy
ZU1hcHBlckxheWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU3MmRiOTQwYWU5NTU1ODRjNjNjMTM5ODkyNjBh
ZWY4MjE5NzNjMDIuLjczMjlmMDBkMzBiMmYwNTJhYTk4NmVmY2M1ZDUzMDdhNGZiOGIxNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMTYgQEAKKzIwMTMtMDEtMDkgIEh1YW5nIERvbmdzdW5nICA8
bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW0VGTF1bV0syXSBXZSBzaG91bGQg
Y29uc2lkZXIgZnJhbWUgYW5kIGRldmljZSBzY2FsZSBmYWN0b3JzIGluIFdlYkNvcmUgaW5zdGVh
ZCBvZiBzY2FsaW5nIG91ciByYXN0ZXIgZ3JhcGhpY3MgZW5naW5lcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1OTc4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHA6CisgICAgICAgIChFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OnRyYW5zZm9ybUZyb21TY2VuZSk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6ZGlzcGxheVRpbWVyRmlyZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmg6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0Q29udGVudHNTY2FsZSk6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6Y29udGVudHNTY2FsZSk6CisgICAgICAgIChFd2tWaWV3SW1wbCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAg
KFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFSYXdX
ZWJWaWV3OjpzZXRTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vi
dmlld19wX3AuaDoKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRUmF3
V2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZURldmljZU9yUGFnZVNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHlJbXBsOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaDoKKyAgICAgICAgKERyYXdpbmdBcmVhUHJveHlJ
bXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoUGFnZUNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpQYWdlVmlld3BvcnRDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGl4ZWxB
bGlnbmVkRmxvYXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OmJvdW5kQ29udGVudHNQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6c3luY1Zpc2libGVDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OnZpc2libGVDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjphcHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50
cyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5UG9zaXRp
b25BZnRlclJlbmRlcmluZ0NvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6dXBkYXRlTWluaW11bVNjYWxlVG9GaXQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OmN1cnJlbnRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjYWxlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuaDoKKyAgICAgICAgKFBhZ2VDbGll
bnRCYXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50RGVmYXVs
dEltcGw6OmRpZENoYW5nZURldmljZU9yUGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5oOgorICAgICAgICAoUGFnZUNsaWVudERl
ZmF1bHRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudExlZ2FjeUltcGw6OnVwZGF0ZVZpZXdw
b3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
TGVnYWN5SW1wbDo6ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGll
bnRMZWdhY3lJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZFJlc3VtZUNvbnRl
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UXRQYWdlQ2xpZW50OjpkaWRDaGFuZ2VEZXZp
Y2VPclBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVu
dC5oOgorICAgICAgICAoUXRQYWdlQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpk
ZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFnZVNj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhSW1wbDo6dXBkYXRlQmFj
a2luZ1N0b3JlU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVI
b3N0Lmg6CisgICAgICAgIChMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNjYWxlUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5ZXJUcmVlSG9zdENBLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuaDoKKyAg
ICAgICAgKExheWVyVHJlZUhvc3RDQSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9MYXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0
azo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RH
dGspOgorCiAyMDEzLTAxLTA3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CiAKICAgICAgICAgW0Nvb3JkaW5hdGVkR3JhcGhpY3NdIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwOThlMGQ1N2MwYjdlMWQ3NGVkMTUwOGY3ZTkwMGQ1
MTZjMmU5NzBkLi5mYzZjMWI5NTZkN2ZjOWFmYzYyNjU4ZTQxYWU0ODcwOGE1MDI0NjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNDUyLDcgKzE0NTIsOCBAQCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCwgQ1NTRgogICAgIGlmICghc2VhbWxlc3NXaXRoUGFyZW50KSB7CiAgICAg
ICAgIGRvY3VtZW50U3R5bGUtPnNldFJUTE9yZGVyaW5nKGRvY3VtZW50LT52aXN1YWxseU9yZGVy
ZWQoKSA/IFZpc3VhbE9yZGVyIDogTG9naWNhbE9yZGVyKTsKICAgICAgICAgZG9jdW1lbnRTdHls
ZS0+c2V0Wm9vbShmcmFtZSAmJiAhZG9jdW1lbnQtPnByaW50aW5nKCkgPyBmcmFtZS0+cGFnZVpv
b21GYWN0b3IoKSA6IDEpOwotICAgICAgICBkb2N1bWVudFN0eWxlLT5zZXRQYWdlU2NhbGVUcmFu
c2Zvcm0oZnJhbWUgPyBmcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpIDogMSk7CisgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGFidXNlIG9mIHRyYW5zZm9ybS4KKy8vICAgICAgICBkb2N1bWVudFN0
eWxlLT5zZXRQYWdlU2NhbGVUcmFuc2Zvcm0oZnJhbWUgPyBmcmFtZS0+ZnJhbWVTY2FsZUZhY3Rv
cigpIDogMSk7CiAgICAgICAgIGRvY3VtZW50U3R5bGUtPnNldExvY2FsZShkb2N1bWVudC0+Y29u
dGVudExhbmd1YWdlKCkpOwogICAgIH0KICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhbnkgLXdlYmtp
dC11c2VyLW1vZGlmeSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IGlmcmFtZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAppbmRleCAwZWJl
NWY5YWI2M2NmNzAyNzgwNWFiZGZiMmFiY2JkZjQ5MDZiM2MyLi4wODZiZDIzNjE2MjNiMmU4NDFl
NmU0NmUxNzFkZjA3OGJiMDY4YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgRXdrVmlld0ltcGw6
OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a0NvbnRleHQ+IGNv
bnRleHQsIFBhc3MKICNlbmRpZgogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoRXdrQmFja0Zvcndh
cmRMaXN0OjpjcmVhdGUodG9BUEkobV9wYWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKSkpCiAj
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgLCBtX3NjYWxlRmFjdG9yKDEpCisgICAg
LCBtX2NvbnRlbnRzU2NhbGUoMSkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhFd2tTZXR0aW5n
czo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9jdXJzb3JJZGVudGlmaWVyKDApCkBAIC0zMDMsNyAr
MzAzLDcgQEAgQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXdJbXBsOjp0cmFuc2Zvcm1Gcm9tU2NlbmUo
KSBjb25zdAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgLy8gTm90ZSB0aGF0
IHRoZSBzY2FsZSBmYWN0b3IgaW5jbCBwYWdlIGFuZCBkZXZpY2Ugc2NhbGUgZm9yIG5vdy4KLSAg
ICB0cmFuc2Zvcm0uc2NhbGUoMSAvIG1fc2NhbGVGYWN0b3IpOworICAgIHRyYW5zZm9ybS5zY2Fs
ZSgxIC8gbV9jb250ZW50c1NjYWxlKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHBhZ2VQb3Np
dGlvbigpLngoKSwgcGFnZVBvc2l0aW9uKCkueSgpKTsKICNlbmRpZgogCkBAIC00MDQsNyArNDA0
LDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmlyZWQoVGltZXI8RXdrVmlld0lt
cGw+KikKIAogICAgICAgICBSZWZQdHI8Y2Fpcm9fdD4gZ3JhcGhpY3NDb250ZXh0ID0gYWRvcHRS
ZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UuZ2V0KCkpKTsKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRl
KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgLSBwYWdlUG9zaXRpb24oKS54KCksIC0gcGFnZVBvc2l0
aW9uKCkueSgpKTsKLSAgICAgICAgY2Fpcm9fc2NhbGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBt
X3NjYWxlRmFjdG9yLCBtX3NjYWxlRmFjdG9yKTsKKyAgICAgICAgY2Fpcm9fc2NhbGUoZ3JhcGhp
Y3NDb250ZXh0LmdldCgpLCBtX2NvbnRlbnRzU2NhbGUsIG1fY29udGVudHNTY2FsZSk7CiAgICAg
ICAgIHJlbmRlcmVyLT5wYWludFRvR3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dC5nZXQo
KSk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+aW1hZ2Us
IDAsIDAsIHZpZXdwb3J0LndpZHRoKCksIHZpZXdwb3J0LmhlaWdodCgpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBiY2Qx
YzVkZmQzMThjNDJhOGU5N2Q4NzFlMjAzZmVkZWQ1YTk1MGViLi4yNmVmN2MzM2ViYjkzZjU5ZjU1
MDNhNGM1MWQ0NTIwZjQyZDU0Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTE5OSw4ICsxOTksOCBAQCBwdWJsaWM6CiAjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgV2ViS2l0OjpQYWdlQ2xpZW50QmFzZSogcGFnZUNs
aWVudCgpIHsgcmV0dXJuIG1fcGFnZUNsaWVudC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRTY2Fs
ZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikgeyBtX3NjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7
IH0KLSAgICBmbG9hdCBzY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVGYWN0b3I7
IH0KKyAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGVGYWN0b3IpIHsgbV9jb250
ZW50c1NjYWxlID0gc2NhbGVGYWN0b3I7IH0KKyAgICBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CiAKICAgICB2b2lkIHNldFBhZ2VQb3NpdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3BhZ2VQb3NpdGlvbiA9
IHBvc2l0aW9uOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCBwYWdlUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VQb3NpdGlvbjsgfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICBPd25QdHI8RXdrQmFja0ZvcndhcmRMaXN0PiBtX2JhY2tGb3J3
YXJkTGlzdDsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBmbG9hdCBtX3NjYWxl
RmFjdG9yOworICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKICAgICBXZWJDb3JlOjpGbG9hdFBv
aW50IG1fcGFnZVBvc2l0aW9uOwogI2VuZGlmCiAgICAgT3duUHRyPEV3a1NldHRpbmdzPiBtX3Nl
dHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlldy5jcHAKaW5kZXggMjA1MzA3OWIwYjQyZWNlYjgxODJiZDBhOGU2NjcyOGM1OTkxOWUzMi4u
YTNhNjUzZmU3Y2JmMzdhNzg5ZmJkODJmOWY3YmNjYzBiOTNiOWI2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC04NDIsNyAr
ODQyLDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRT
aXplKCkKICAgICB3ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFNpemUodmlld3BvcnRT
aXplLnRvU2l6ZSgpLCBJbnRTaXplKCkpOwogICAgIC8vIFRoZSBiYWNraW5nIHN0b3JlIHNjYWxl
IGZhY3RvciBzaG91bGQgYWxyZWFkeSBiZSBzZXQgdG8gdGhlIGRldmljZSBwaXhlbCByYXRpbwog
ICAgIC8vIG9mIHRoZSB1bmRlcmx5aW5nIHdpbmRvdywgdGh1cyB3ZSBzZXQgdGhlIGVmZmVjdGl2
ZSBzY2FsZSB0byAxIGhlcmUuCi0gICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZSh2aWV3
cG9ydFNpemUpKSwgMSwgRmxvYXRQb2ludCgpKTsKKyAgICB3ZWJQYWdlUHJveHktPmRyYXdpbmdB
cmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxv
YXRTaXplKHZpZXdwb3J0U2l6ZSkpLCBGbG9hdFBvaW50KCkpOwogfQogCiBxcmVhbCBRUXVpY2tX
ZWJWaWV3TGVnYWN5UHJpdmF0ZTo6em9vbUZhY3RvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKaW5kZXggMmRkNDVk
MGVmZmU5ZTBmM2ZmYmFkMzY0OWQzMGU5NTc2ZmJmOWRjMy4uMzYxZjc0ZGFiODUxYWQ4OThlZDM5
ZDI3N2E3YTZmNDc5YjI1OTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgUVJh
d1dlYlZpZXc6OnNldFNpemUoY29uc3QgUVNpemUmIHNpemUpCiAgICAgZC0+bV9zaXplID0gc2l6
ZTsKIAogICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKGQtPm1fc2l6ZSwgV2ViQ29yZTo6SW50U2l6
ZSgpKTsKLSAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpJ
bnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIGQtPm1fc2l6ZSksIDEgLypzY2FsZSovLCBXZWJD
b3JlOjpGbG9hdFBvaW50KCkpOworICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNS
ZWN0KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwgZC0+bV9zaXplKSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCgpKTsKIH0KIAogV0tQYWdlUmVmIFFSYXdXZWJWaWV3OjpwYWdlUmVm
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3
ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dl
YnZpZXdfcF9wLmgKaW5kZXggMDI5OTU2ZTc3ZjI2MDBlMjIxMTZkY2Q3MDE2NjY2OTYwNzg4YTkw
My4uYTJhMmRmYzhjMmI2YTIyNDE3ZTU2N2E5YTIwM2MzNmQ4YjExNzM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgK
QEAgLTEwNiw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNo
UHJvY2VzcygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50
c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSk7CisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VEZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvcihmbG9hdCBjb250ZW50c1NjYWxlKSB7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggYmFhOGY2NTIzZGVi
ZmRlYmJjNGU1MjJiNDc1ZTE0Y2MxOGZkMmViNS4uNmEwODUyMTAxYzA3ZTJhYWE2MmYwNjdjMTU1
MjMxNmY3YzEwOGU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtNDEsNyArNDEsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eShEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYVByb3h5KQogICAgIDogbV9k
cmF3aW5nQXJlYVByb3h5KGRyYXdpbmdBcmVhUHJveHkpCiAgICAgLCBtX3JlbmRlcmVyKGFkb3B0
UmVmKG5ldyBMYXllclRyZWVSZW5kZXJlcih0aGlzKSkpCi0gICAgLCBtX2xhc3RTZW50U2NhbGUo
MCkKIHsKIH0KIApAQCAtNTUsMTEgKzU0LDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6dXBkYXRlVmlld3BvcnQoKQogICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+dXBkYXRl
Vmlld3BvcnQoKTsKIH0KIAotZmxvYXQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmRl
dmljZVNjYWxlRmFjdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kcmF3aW5nQXJlYVByb3h5
LT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHk6OmRpc3BhdGNoVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1
bmN0aW9uKQogewogICAgIG1fcmVuZGVyZXItPmFwcGVuZFVwZGF0ZShmdW5jdGlvbik7CkBAIC0x
ODUsMTkgKzE3OSwxNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRB
bmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxh
eWVyVHJlZVJlbmRlcmVyOjpzZXRBbmltYXRpb25zTG9ja2VkLCBtX3JlbmRlcmVyLmdldCgpLCBs
b2NrZWQpKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHBhZ2VTY2FsZUZh
Y3RvciwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewogICAgIC8v
IEluZm9ybSB0aGUgcmVuZGVyZXIgdG8gYWRqdXN0IHZpZXdwb3J0LWZpeGVkIGxheWVycy4KICAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6c2V0VmlzaWJsZUNvbnRl
bnRzUmVjdCwgbV9yZW5kZXJlci5nZXQoKSwgcmVjdCkpOwogCi0gICAgY29uc3QgZmxvYXQgZWZm
ZWN0aXZlU2NhbGUgPSBkZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZVNjYWxlRmFjdG9yOwotCi0g
ICAgaWYgKHJlY3QgPT0gbV9sYXN0U2VudFZpc2libGVSZWN0ICYmIGVmZmVjdGl2ZVNjYWxlID09
IG1fbGFzdFNlbnRTY2FsZSAmJiB0cmFqZWN0b3J5VmVjdG9yID09IG1fbGFzdFNlbnRUcmFqZWN0
b3J5VmVjdG9yKQorICAgIGlmIChyZWN0ID09IG1fbGFzdFNlbnRWaXNpYmxlUmVjdCAmJiB0cmFq
ZWN0b3J5VmVjdG9yID09IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlNldFZpc2libGVDb250ZW50c1JlY3Qo
cmVjdCwgZWZmZWN0aXZlU2NhbGUsIHRyYWplY3RvcnlWZWN0b3IpLCBtX2RyYXdpbmdBcmVhUHJv
eHktPnBhZ2UoKS0+cGFnZUlEKCkpOworICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5w
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6U2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5VmVjdG9yKSwgbV9kcmF3aW5nQXJlYVBy
b3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKICAgICBtX2xhc3RTZW50VmlzaWJsZVJlY3QgPSByZWN0
OwotICAgIG1fbGFzdFNlbnRTY2FsZSA9IGVmZmVjdGl2ZVNjYWxlOwogICAgIG1fbGFzdFNlbnRU
cmFqZWN0b3J5VmVjdG9yID0gdHJhamVjdG9yeVZlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggNzU5MWI4NDg1ZDM5
ODg2ZWQ3ZWQyY2QwNWQxMTYxM2ZlNjdmYWNkMy4uNjczYTZiODJiZjdmZDRhMWE3N2JmZWNjNjE5
MjAxYWM2NDA3Y2EzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0
ZUNvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNldFJvb3RD
b21wb3NpdGluZ0xheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRDb250ZW50
c1NpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
ciwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7CisgICAgdm9p
ZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIHZvaWQgZGlkUmVu
ZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CiAgICAgdm9pZCBjcmVhdGVUaWxlRm9yTGF5ZXIo
Q29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBkYXRlVGlsZUZvckxh
eWVyKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKQEAgLTk0LDE1ICs5NCwxMiBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYpOwogCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKLQogcHJv
dGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYp
OwogCiAgICAgRHJhd2luZ0FyZWFQcm94eSogbV9kcmF3aW5nQXJlYVByb3h5OwogICAgIFJlZlB0
cjxMYXllclRyZWVSZW5kZXJlcj4gbV9yZW5kZXJlcjsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3Qg
bV9sYXN0U2VudFZpc2libGVSZWN0OwotICAgIGZsb2F0IG1fbGFzdFNlbnRTY2FsZTsKICAgICBX
ZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yOwogICAgIHR5cGVk
ZWYgSGFzaE1hcDx1aW50MzJfdCAvKiBhdGxhc0lEICovLCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPiA+IFN1cmZhY2VNYXA7CiAgICAgU3VyZmFjZU1hcCBtX3N1cmZhY2VzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggMWViMTgxOTUxYjBiZWJk
MDgxNTg3YzlhY2M4NGI3YTI0NWUzYzQ1OS4uYmFkNjM4NGRlODZiZTA0ZjlmMWY3NTYwOTdlZmE4
NTc1NzE3OTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJl
Y3Qgdmlld3BvcnRWaXNpYmxlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzUmVjdCgpOyB9
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAg
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KiBjb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuZ2V0
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIC8qIHZpc2libGVDb250ZW50c1JlY3QgKi8sIGZsb2F0IC8qIHNjYWxl
ICovLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiAvKiB0cmFqZWN0b3J5VmVjdG9yICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIC8qIHZpc2libGVDb250ZW50c1JlY3QgKi8sIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIC8qIHRyYWplY3RvcnlWZWN0b3IgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7
CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBtX3dlYlBhZ2VQcm94eTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAK
aW5kZXggNjVmMWI5ZWI5NDVjNjExMWUyZWZlM2YzNGIxZDgwNTFmZDAwYmVmMy4uMTgzNGY5ZDBh
MjNjMGM0MjBiZGZjZmIyMTZkZDAxNGFhZjAwZTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCkBAIC0zNzYsMTAgKzM3NiwxMCBA
QCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHlNZXNzYWdlKENvcmVJUAogICAgICAgICBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LT5kaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgRHJhd2luZ0FyZWFQ
cm94eUltcGw6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZp
c2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVu
dHNSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewog
ICAgIGlmIChtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KQotICAgICAgICBtX2Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVD
b250ZW50c1JlY3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICAgICAgbV9jb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29u
dGVudHNSZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCmluZGV4IDZjZWQyMDdiNGNj
Njk4YjdkMmE1YzNmNmEyYjdkYTNjYmJiMjFmY2MuLmJhMzdlMGJkYmY2NGE5YzUwMjc3MGJmOGIw
NzNiZDYwZmQ1NzkxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5SW1wbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBEcmF3
aW5nQXJlYVByb3h5CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
bGF5ZXJIb3N0aW5nTW9kZURpZENoYW5nZSgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lk
IHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwogICAgIHZvaWQgdXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZs
b2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHZpc2libGVDb250ZW50c1JlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWpl
Y3RvcnkpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYpOwogI2VuZGlmCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKaW5kZXggZDA4Y2M5MWY2NDRkOWE5ZjhiYjg3M2ViNGZlODMxYjk5ODNmOGM2
Mi4uOWFhMWFkYzQ4ODRlNTZkZjg4OTllNTYxNGRmN2Q5MDc4MzFiZTY3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwogI2VuZGlmCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VEZXZp
Y2VPclBhZ2VTY2FsZUZhY3RvcihmbG9hdCBjb250ZW50c1NjYWxlKSA9IDA7CisjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBkcmFnSW1hZ2UpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Vmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCA5NWU2OGUyNzE5OWZlMDBlYWJiMGU2ODBkNDY3
NWY3Y2U0ZjY5N2Q0Li43Y2NlZmQ4YmFmNjk1OGQ4NGY3MWRmNGM3MjEzN2I1YWU2ODZiZDU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHByb3h5LCBQYWdlCiAgICAgLCBt
X2luaXRpYWxseUZpdFRvVmlld3BvcnQodHJ1ZSkKICAgICAsIG1faGFzU3VzcGVuZGVkQ29udGVu
dChmYWxzZSkKICAgICAsIG1faGFkVXNlckludGVyYWN0aW9uKGZhbHNlKQotICAgICwgbV9lZmZl
Y3RpdmVTY2FsZSgxKQorICAgICwgbV9jb250ZW50c1NjYWxlKDEpCiAgICAgLCBtX3BlbmRpbmdQ
b3NpdGlvbkNoYW5nZShmYWxzZSkKICAgICAsIG1fcGVuZGluZ1NjYWxlQ2hhbmdlKGZhbHNlKQog
ewpAQCAtOTUsMTggKzk1LDE4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ludGVncmFsKGZsb2F0
IHZhbHVlKQogRmxvYXRQb2ludCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwaXhlbEFsaWduZWRG
bG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGZyYW1lUG9zaXRpb24pCiB7CiAjaWYgUExBVEZP
Uk0oRUZMKQotICAgIGlmICghaXNJbnRlZ3JhbChtX2VmZmVjdGl2ZVNjYWxlKSkgeworICAgIGlm
ICghaXNJbnRlZ3JhbChtX2NvbnRlbnRzU2NhbGUpKSB7CiAgICAgICAgIC8vIFRvIGF2b2lkIGJs
dXJyeW5lc3MsIG1vZGlmeSB0aGUgcG9zaXRpb24gc28gdGhhdCBpdCBtYXBzIGludG8gYSBkaXNj
cmV0ZSBkZXZpY2UgcG9zaXRpb24uCiAgICAgICAgIEZsb2F0UG9pbnQgc2NhbGVkUG9zKGZyYW1l
UG9zaXRpb24pOwogCiAgICAgICAgIC8vIFNjYWxlIGJ5IHRoZSBlZmZlY3RpdmUgc2NhbGUgZmFj
dG9yIHRvIGNvbXB1dGUgdGhlIHNjcmVlbi1yZWxhdGl2ZSBwb3NpdGlvbi4KLSAgICAgICAgc2Nh
bGVkUG9zLnNjYWxlKG1fZWZmZWN0aXZlU2NhbGUsIG1fZWZmZWN0aXZlU2NhbGUpOworICAgICAg
ICBzY2FsZWRQb3Muc2NhbGUobV9jb250ZW50c1NjYWxlLCBtX2NvbnRlbnRzU2NhbGUpOwogCiAg
ICAgICAgIC8vIFJvdW5kIHRvIGludGVnZXIgYm91bmRhcmllcy4KICAgICAgICAgRmxvYXRQb2lu
dCBhbGlnbmVkUG9zID0gcm91bmRlZEludFBvaW50KHNjYWxlZFBvcyk7CiAKICAgICAgICAgLy8g
Q29udmVydCBiYWNrIHRvIENTUyBjb29yZGluYXRlcy4KLSAgICAgICAgYWxpZ25lZFBvcy5zY2Fs
ZSgxIC8gbV9lZmZlY3RpdmVTY2FsZSwgMSAvIG1fZWZmZWN0aXZlU2NhbGUpOworICAgICAgICBh
bGlnbmVkUG9zLnNjYWxlKDEgLyBtX2NvbnRlbnRzU2NhbGUsIDEgLyBtX2NvbnRlbnRzU2NhbGUp
OwogCiAgICAgICAgIHJldHVybiBhbGlnbmVkUG9zOwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBA
QCBGbG9hdFBvaW50IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmJvdW5kQ29udGVudHNQb3NpdGlv
bkF0U2NhbGUoY29uc3QgV2ViQ29yZTo6RgogCiBGbG9hdFBvaW50IFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXI6OmJvdW5kQ29udGVudHNQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBm
cmFtZVBvc2l0aW9uKQogewotICAgIHJldHVybiBib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxl
KGZyYW1lUG9zaXRpb24sIG1fZWZmZWN0aXZlU2NhbGUpOworICAgIHJldHVybiBib3VuZENvbnRl
bnRzUG9zaXRpb25BdFNjYWxlKGZyYW1lUG9zaXRpb24sIG1fY29udGVudHNTY2FsZSk7CiB9CiAK
IHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCgpCkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRSZW5kZXJGcmFtZShjb25z
dCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IEkKIAogICAgIGlmIChtX3BlbmRpbmdTY2Fs
ZUNoYW5nZSkgewogICAgICAgICBtX3BlbmRpbmdTY2FsZUNoYW5nZSA9IGZhbHNlOwotICAgICAg
ICBtX2NsaWVudC0+c2V0Q29udGVudHNTY2FsZShtX2VmZmVjdGl2ZVNjYWxlKTsKKyAgICAgICAg
bV9jbGllbnQtPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKIAogICAgICAgICAv
LyBUaGUgc2NhbGUgY2hhbmdlZCwgd2UgaGF2ZSB0byByZS1waXhlbCBhbGlnbi4KICAgICAgICAg
bV9wZW5kaW5nUG9zaXRpb25DaGFuZ2UgPSB0cnVlOwpAQCAtMjUxLDE2ICsyNTEsMjQgQEAgdm9p
ZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3cG9ydFNpemUoY29uc3QgRmxv
YXRTaXplJiBuZXdTaXplKQogICAgIG1fd2ViUGFnZVByb3h5LT5zZXRWaWV3cG9ydFNpemUocm91
bmRlZEludFNpemUobmV3U2l6ZSkpOwogfQogCi12b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6
OmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwg
ZmxvYXQgc2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShjb25zdCBG
bG9hdFBvaW50JiBwb3NpdGlvbiwgZmxvYXQgY29udGVudHNTY2FsZSwgY29uc3QgRmxvYXRQb2lu
dCYgdHJhamVjdG9yeVZlY3RvcikKIHsKICAgICBpZiAoIW1fcGVuZGluZ1Bvc2l0aW9uQ2hhbmdl
KQogICAgICAgICBtX2NvbnRlbnRzUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBpZiAoIW1fcGVu
ZGluZ1NjYWxlQ2hhbmdlKQotICAgICAgICBtX2VmZmVjdGl2ZVNjYWxlID0gc2NhbGU7CisgICAg
aWYgKCFtX3BlbmRpbmdTY2FsZUNoYW5nZSAmJiBtX2NvbnRlbnRzU2NhbGUgIT0gY29udGVudHNT
Y2FsZSkgeworICAgICAgICBtX2NvbnRlbnRzU2NhbGUgPSBjb250ZW50c1NjYWxlOworICAgICAg
ICAvLyBGSVhNRSA6IENoYW5nZSBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgIG1fd2ViUGFnZVBy
b3h5LT5zY2FsZVBhZ2UoZnJvbVZpZXdwb3J0U2NhbGUobV9jb250ZW50c1NjYWxlKSwgcm91bmRl
ZEludFBvaW50KG1fY29udGVudHNQb3NpdGlvbikpOworICAgIH0KIAogICAgIHN5bmNWaXNpYmxl
Q29udGVudHModHJhamVjdG9yeVZlY3Rvcik7CiB9CiAKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlcjo6ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IoZmxvYXQgY29udGVudHNTY2Fs
ZSkKK3sKKyAgICBhcHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhjb250ZW50c1NjYWxl
KTsKK30KKwogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRz
KGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7CiAgICAgRHJhd2luZ0FyZWFQ
cm94eSogZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKTsKQEAgLTI2
OSw3ICsyNzcsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnN5bmNWaXNpYmxlQ29u
dGVudHMoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlYwogCiAgICAgRmxvYXRSZWN0IHZp
c2libGVDb250ZW50c1JlY3QoYm91bmRDb250ZW50c1Bvc2l0aW9uKG1fY29udGVudHNQb3NpdGlv
biksIHZpc2libGVDb250ZW50c1NpemUoKSk7CiAgICAgdmlzaWJsZUNvbnRlbnRzUmVjdC5pbnRl
cnNlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9jb250ZW50c1NpemUpKTsKLSAg
ICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNSZWN0
LCBtX2VmZmVjdGl2ZVNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBkcmF3aW5nQXJlYS0+
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNSZWN0LCB0cmFqZWN0b3J5VmVj
dG9yKTsKIAogICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKIH0KQEAg
LTI5OSw3ICszMDcsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZp
ZXdwb3J0QXR0cmlidXRlcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydAogCiBGbG9hdFNpemUgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlcjo6dmlzaWJsZUNvbnRlbnRzU2l6ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIEZsb2F0U2l6ZShtX3ZpZXdwb3J0U2l6ZS53aWR0aCgpIC8gbV9lZmZlY3RpdmVTY2Fs
ZSwgbV92aWV3cG9ydFNpemUuaGVpZ2h0KCkgLyBtX2VmZmVjdGl2ZVNjYWxlKTsKKyAgICByZXR1
cm4gRmxvYXRTaXplKG1fdmlld3BvcnRTaXplLndpZHRoKCkgLyBtX2NvbnRlbnRzU2NhbGUsIG1f
dmlld3BvcnRTaXplLmhlaWdodCgpIC8gbV9jb250ZW50c1NjYWxlKTsKIH0KIAogdm9pZCBQYWdl
Vmlld3BvcnRDb250cm9sbGVyOjpzdXNwZW5kQ29udGVudCgpCkBAIC0zMjIsMTUgKzMzMCwyMSBA
QCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnJlc3VtZUNvbnRlbnQoKQogICAgIG1fd2Vi
UGFnZVByb3h5LT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQogCi12
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRl
bnRzKGZsb2F0IHNjYWxlKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjphcHBseVNjYWxl
QWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhmbG9hdCBjb250ZW50c1NjYWxlKQogewotICAgIG1fZWZm
ZWN0aXZlU2NhbGUgPSBzY2FsZTsKKyAgICBpZiAobV9jb250ZW50c1NjYWxlID09IGNvbnRlbnRz
U2NhbGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudHNTY2FsZSA9IGNvbnRlbnRz
U2NhbGU7CiAgICAgbV9wZW5kaW5nU2NhbGVDaGFuZ2UgPSB0cnVlOwogICAgIHN5bmNWaXNpYmxl
Q29udGVudHMoKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjphcHBseVBvc2l0
aW9uQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhjb25zdCBGbG9hdFBvaW50JiBwb3MpCiB7CisgICAg
aWYgKG1fY29udGVudHNQb3NpdGlvbiA9PSBwb3MpCisgICAgICAgIHJldHVybjsKKwogICAgIG1f
Y29udGVudHNQb3NpdGlvbiA9IHBvczsKICAgICBtX3BlbmRpbmdQb3NpdGlvbkNoYW5nZSA9IHRy
dWU7CiAgICAgc3luY1Zpc2libGVDb250ZW50cygpOwpAQCAtMzQxLDcgKzM1NSw3IEBAIGJvb2wg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dXBkYXRlTWluaW11bVNjYWxlVG9GaXQoYm9vbCB1c2Vy
SW5pdGlhdGVkVXBkYXRlKQogICAgIGlmIChtX3ZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkgfHwgbV9j
b250ZW50c1NpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29s
IGN1cnJlbnRseVNjYWxlZFRvRml0ID0gZnV6enlDb21wYXJlKG1fZWZmZWN0aXZlU2NhbGUsIHRv
Vmlld3BvcnRTY2FsZShtX21pbmltdW1TY2FsZVRvRml0KSwgMC4wMDAxKTsKKyAgICBib29sIGN1
cnJlbnRseVNjYWxlZFRvRml0ID0gZnV6enlDb21wYXJlKG1fY29udGVudHNTY2FsZSwgdG9WaWV3
cG9ydFNjYWxlKG1fbWluaW11bVNjYWxlVG9GaXQpLCAwLjAwMDEpOwogCiAgICAgZmxvYXQgbWlu
aW11bVNjYWxlID0gV2ViQ29yZTo6Y29tcHV0ZU1pbmltdW1TY2FsZUZhY3RvckZvckNvbnRlbnRD
b250YWluZWQobV9yYXdBdHRyaWJ1dGVzLCBXZWJDb3JlOjpyb3VuZGVkSW50U2l6ZShtX3ZpZXdw
b3J0U2l6ZSksIFdlYkNvcmU6OnJvdW5kZWRJbnRTaXplKG1fY29udGVudHNTaXplKSwgZGV2aWNl
UGl4ZWxSYXRpbygpKTsKIApAQCAtMzU2LDggKzM3MCw4IEBAIGJvb2wgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcjo6dXBkYXRlTWluaW11bVNjYWxlVG9GaXQoYm9vbCB1c2VySW5pdGlhdGVkVXBkYXRl
KQogICAgICAgICAgICAgICAgIGFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKHRvVmll
d3BvcnRTY2FsZShtX21pbmltdW1TY2FsZVRvRml0KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhlIGVmZmVjdGl2ZSBzY2FsZSBzdGF5cyB3aXRoaW4g
Ym91bmRzLgotICAgICAgICAgICAgICAgIGZsb2F0IGJvdW5kZWRTY2FsZSA9IGlubmVyQm91bmRl
ZFZpZXdwb3J0U2NhbGUobV9lZmZlY3RpdmVTY2FsZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFm
dXp6eUNvbXBhcmUoYm91bmRlZFNjYWxlLCBtX2VmZmVjdGl2ZVNjYWxlLCAwLjAwMDEpKQorICAg
ICAgICAgICAgICAgIGZsb2F0IGJvdW5kZWRTY2FsZSA9IGlubmVyQm91bmRlZFZpZXdwb3J0U2Nh
bGUobV9jb250ZW50c1NjYWxlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZ1enp5Q29tcGFyZShi
b3VuZGVkU2NhbGUsIG1fY29udGVudHNTY2FsZSwgMC4wMDAxKSkKICAgICAgICAgICAgICAgICAg
ICAgYXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMoYm91bmRlZFNjYWxlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Vmlld3BvcnRDb250cm9sbGVyLmgKaW5kZXggMGY0NjEyNWE0MzFjOGVkMWY1NmI2MzMxNmE1YjZk
NjU4ZTkzMTNlOC4uODc2NDY5N2IyN2FkZDA4MjE0YTdmZmRlZjBkYThmOGRlYmEyYmQyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5o
CkBAIC02OCwxMyArNjgsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGRldmljZVBpeGVsUmF0aW8o
KSBjb25zdDsKICAgICBmbG9hdCBtaW5pbXVtQ29udGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWluaW11bVNjYWxlVG9GaXQ7IH0KICAgICBmbG9hdCBtYXhpbXVtQ29udGVudHNTY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmF3QXR0cmlidXRlcy5tYXhpbXVtU2NhbGU7IH0KLSAgICBmbG9h
dCBjdXJyZW50Q29udGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIGZyb21WaWV3cG9ydFNjYWxl
KG1fZWZmZWN0aXZlU2NhbGUpOyB9CisgICAgZmxvYXQgY3VycmVudENvbnRlbnRzU2NhbGUoKSBj
b25zdCB7IHJldHVybiBmcm9tVmlld3BvcnRTY2FsZShtX2NvbnRlbnRzU2NhbGUpOyB9CiAKICAg
ICB2b2lkIHNldEhhZFVzZXJJbnRlcmFjdGlvbihib29sIGRpZFVzZXJJbnRlcmFjdCkgeyBtX2hh
ZFVzZXJJbnRlcmFjdGlvbiA9IGRpZFVzZXJJbnRlcmFjdDsgfQogCiAgICAgLy8gTm90aWZpY2F0
aW9ucyBmcm9tIHRoZSB2aWV3cG9ydC4KICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0U2l6ZShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG5ld1NpemUpOwotICAgIHZvaWQgZGlkQ2hhbmdlQ29u
dGVudHNWaXNpYmlsaXR5KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBmbG9hdCBzY2FsZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvciA9IFdlYkNvcmU6OkZs
b2F0UG9pbnQ6Onplcm8oKSk7CisgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHko
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IgPSBXZWJDb3JlOjpGbG9hdFBvaW50
Ojp6ZXJvKCkpOworICAgIHZvaWQgZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IoZmxv
YXQgY29udGVudHNTY2FsZSk7CiAKICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20gdGhlIFdlYlBy
b2Nlc3MuCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CkBAIC04OCw3ICs4OSw3IEBAIHByaXZh
dGU6CiAgICAgZmxvYXQgZnJvbVZpZXdwb3J0U2NhbGUoZmxvYXQgc2NhbGUpIGNvbnN0IHsgcmV0
dXJuIHNjYWxlIC8gZGV2aWNlUGl4ZWxSYXRpbygpOyB9CiAgICAgZmxvYXQgdG9WaWV3cG9ydFNj
YWxlKGZsb2F0IHNjYWxlKSBjb25zdCB7IHJldHVybiBzY2FsZSAqIGRldmljZVBpeGVsUmF0aW8o
KTsgfQogICAgIHZvaWQgc3luY1Zpc2libGVDb250ZW50cyhjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50ICZ0cmFqZWN0b3J5VmVjdG9yID0gV2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpKTsKLSAg
ICB2b2lkIGFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IHNjYWxlKTsKKyAg
ICB2b2lkIGFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IGNvbnRlbnRzU2Nh
bGUpOwogICAgIHZvaWQgYXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29udGVudHMoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zKTsKICAgICBib29sIHVwZGF0ZU1pbmltdW1TY2FsZVRv
Rml0KGJvb2wgdXNlckluaXRpYXRlZFVwZGF0ZSk7CiAKQEAgLTEwOCw3ICsxMDksNyBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKICAgICBXZWJDb3Jl
OjpGbG9hdFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NsaWVu
dENvbnRlbnRzU2l6ZTsKLSAgICBmbG9hdCBtX2VmZmVjdGl2ZVNjYWxlOyAvLyBTaG91bGQgYWx3
YXlzIGJlIGNzc1NjYWxlICogZGV2aWNlUGl4ZWxSYXRpby4KKyAgICBmbG9hdCBtX2NvbnRlbnRz
U2NhbGU7IC8vIFNob3VsZCBhbHdheXMgYmUgY3NzU2NhbGUgKiBkZXZpY2VQaXhlbFJhdGlvLgog
CiAgICAgYm9vbCBtX3BlbmRpbmdQb3NpdGlvbkNoYW5nZTsKICAgICBib29sIG1fcGVuZGluZ1Nj
YWxlQ2hhbmdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAzMGExNDc0NzI2ZjgzY2Q5NGYyMjJmMThkYWZhNGY3NDhmN2FiNzg5Li5jZjBmMzUyM2JmMzBj
ODI5OTI4ZWIzOWJlMGZlMDU1ZDA0N2JlN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTUyMCw2ICsxNTIwLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxl
UGFnZShzY2FsZSwgb3JpZ2luKSwgbV9wYWdlSUQpOworCisgICAgaWYgKG1fcGFnZVNjYWxlRmFj
dG9yICE9IHNjYWxlKSB7CisgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9yID0gc2NhbGU7CisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgICAgICBtX3BhZ2VDbGllbnQtPmRpZENoYW5n
ZURldmljZU9yUGFnZVNjYWxlRmFjdG9yKHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CisjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnRy
aW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKQEAgLTE1MzEsNiArMTUz
OCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQgc2NhbGVGYWN0b3IpCiAKICAgICBpZiAobV9kcmF3aW5nQXJlYSkKICAgICAgICAgbV9k
cmF3aW5nQXJlYS0+ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKKworI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKKyAgICBtX3BhZ2VDbGllbnQtPmRpZENoYW5nZURldmljZU9yUGFn
ZVNjYWxlRmFjdG9yKHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVGYWN0b3IoKSk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCkBAIC0xNTYyLDYgKzE1NzMsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGN1c3RvbVNjYWxlRmFj
dG9yKQogCiAgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yKCkgIT0gb2xkU2NhbGVGYWN0b3IpCiAg
ICAgICAgIG1fZHJhd2luZ0FyZWEtPmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCk7CisKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgbV9wYWdlQ2xpZW50LT5kaWRDaGFuZ2VE
ZXZpY2VPclBhZ2VTY2FsZUZhY3RvcihwYWdlU2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFj
dG9yKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91
dChib29sIGZpeGVkKQpAQCAtMTY2Miw3ICsxNjc3LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VT
Y2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0b3IpCiB7CisgICAgaWYgKG1fcGFn
ZVNjYWxlRmFjdG9yID09IHNjYWxlRmFjdG9yKQorICAgICAgICByZXR1cm47CiAgICAgbV9wYWdl
U2NhbGVGYWN0b3IgPSBzY2FsZUZhY3RvcjsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CisgICAgbV9wYWdlQ2xpZW50LT5kaWRDaGFuZ2VEZXZpY2VPclBhZ2VTY2FsZUZhY3RvcihwYWdl
U2NhbGVGYWN0b3IoKSAqIGRldmljZVNjYWxlRmFjdG9yKCkpOworI2VuZGlmCiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZChib29sIG1lbW9y
eUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9QYWdlQ2xpZW50QmFzZS5oCmluZGV4IDk3MGQ3YWZhOWMxMTAzMDc0NjUyZmVhM2ExYzQyZDVi
ZjdmMDBkZmIuLmY1MWFiMDYzMWQ4NjdmNzdiMmY4OTk0ZWUzMjY3YThlYmM0NWI2ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmgKQEAgLTQxLDYg
KzQxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
RGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IoZmxvYXQgY29udGVudHNTY2FsZSkgPSAwOworI2VuZGlm
CiAKICAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwCmluZGV4
IDc0ZDAwY2JmODEyOTY4MjJlYzVlYWQ4MTM0ODZkZjBhYjI2YWU2MTEuLjA3NTZkYjVkYTE3YmFh
NTE2YzZjNmY2NmUxOWI1ZWMxYjU5MTRkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5jcHAKQEAgLTk4LDYgKzk4LDE0
IEBAIHZvaWQgUGFnZUNsaWVudERlZmF1bHRJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICAgICBtX3ZpZXdJbXBsLT5zbWFydENhbGxiYWNr
PENvbnRlbnRzU2l6ZUNoYW5nZWQ+KCkuY2FsbChzaXplKTsKIH0KIAorI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKK3ZvaWQgUGFnZUNsaWVudERlZmF1bHRJbXBsOjpkaWRDaGFuZ2VEZXZp
Y2VPclBhZ2VTY2FsZUZhY3RvcihmbG9hdCBjb250ZW50c1NjYWxlKQoreworICAgIEFTU0VSVCht
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+
ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IoY29udGVudHNTY2FsZSk7Cit9CisjZW5k
aWYKKwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBQYWdlQ2xpZW50RGVmYXVs
dEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1
bHRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0
SW1wbC5oCmluZGV4IDMxYWU5MGQwYmVkMmMyMDQ0MjAxOTJiNmY0OTlhZDg2MDE5Mzg1OWYuLmQw
NGZlMDQwMWM0Zjk4Njg0NjlkMGFlMDAyOGVlMmIyZjhjZjc3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuaApAQCAtNTQs
NiArNTQsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0
UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZURldmljZU9yUGFnZVNjYWxlRmFjdG9yKGZsb2F0IGNvbnRlbnRzU2NhbGUpOworI2VuZGlmCiAj
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcAppbmRleCA4MmFiZTZlYzI3
MWMzNjgzMGM4MDdhMzM5Nzk0MzYxODYyMTRlOWE3Li4wN2FjNjBiMmQwYzYwMjJkMTY3NDI0MmQ1
Njc5MzJkOWY0YzViZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFBhZ2VD
bGllbnRMZWdhY3lJbXBsOjpkaWRDb21taXRMb2FkKCkKIHZvaWQgUGFnZUNsaWVudExlZ2FjeUlt
cGw6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgpCiB7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
Ci0gICAgbV92aWV3SW1wbC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVu
dHNSZWN0KEludFJlY3Qocm91bmRlZEludFBvaW50KG1fdmlld0ltcGwtPnBhZ2VQb3NpdGlvbigp
KSwgbV92aWV3SW1wbC0+c2l6ZSgpKSwgbV92aWV3SW1wbC0+c2NhbGVGYWN0b3IoKSwgRmxvYXRQ
b2ludCgpKTsKKyAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldFZpc2li
bGVDb250ZW50c1JlY3QoSW50UmVjdChyb3VuZGVkSW50UG9pbnQobV92aWV3SW1wbC0+cGFnZVBv
c2l0aW9uKCkpLCBtX3ZpZXdJbXBsLT5zaXplKCkpLCBGbG9hdFBvaW50KCkpOwogI2VuZGlmCiB9
CiAKQEAgLTgxLDYgKzgxLDEzIEBAIHZvaWQgUGFnZUNsaWVudExlZ2FjeUltcGw6OmRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogICAgIG1fdmlld0lt
cGwtPnNtYXJ0Q2FsbGJhY2s8Q29udGVudHNTaXplQ2hhbmdlZD4oKS5jYWxsKHNpemUpOwogfQog
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQordm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1w
bDo6ZGlkQ2hhbmdlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3IoZmxvYXQpCit7CisgICAgbV92aWV3
SW1wbC0+dXBkYXRlKCk7Cit9CisjZW5kaWYKKwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQogdm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5oCmluZGV4IGViOWZiYjI5Y2E4MDU5MTViYTE3MDg4
MDQyZjMxNDE4Y2RkZGViOGUuLmM5NjNhYjlkOWM4NDc4ZjIzMzY2NTJlZTFkNzNlYzVkMzJjMjE1
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExl
Z2FjeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRM
ZWdhY3lJbXBsLmgKQEAgLTUxLDYgKzUxLDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJik7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VEZXZpY2VPclBhZ2VTY2FsZUZhY3RvcihmbG9hdCBjb250ZW50
c1NjYWxlKTsKKyNlbmRpZgogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBj
b250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCmluZGV4IDg4Njc3ZDA0YzdiMjBhM2RiY2M0NmUxNDUz
NDFjNjVkOGMzODBhMTIuLjYwN2JhYTUwNjNhNzQ5ZjUxMDQ4NjFmMjQ4YjM3MjBkMzc5MjY4NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcApAQCAtNzYsMjEgKzc2LDIxIEBAIHZv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Vmlld3BvcnRQb3NpdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvCiAgICAgbV9jb250ZW50UG9zaXRpb24gPSBjb250ZW50c1Bv
aW50OwogCiAgICAgRmxvYXRQb2ludCBwb3MoY29udGVudHNQb2ludCk7Ci0gICAgcG9zLnNjYWxl
KHNjYWxlRmFjdG9yKCksIHNjYWxlRmFjdG9yKCkpOworICAgIHBvcy5zY2FsZShtX3ZpZXdJbXBs
LT5jb250ZW50c1NjYWxlKCksIG1fdmlld0ltcGwtPmNvbnRlbnRzU2NhbGUoKSk7CiAgICAgbV92
aWV3SW1wbC0+c2V0UGFnZVBvc2l0aW9uKHBvcyk7CiAKLSAgICBtX2NvbnRyb2xsZXItPmRpZENo
YW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX2NvbnRlbnRQb3NpdGlvbiwgc2NhbGVGYWN0b3IoKSk7
CisgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkobV9jb250ZW50
UG9zaXRpb24sIG1fdmlld0ltcGwtPmNvbnRlbnRzU2NhbGUoKSk7CiB9CiAKIHZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBuZXdTY2Fs
ZSkKIHsKLSAgICBtX3ZpZXdJbXBsLT5zZXRTY2FsZUZhY3RvcihuZXdTY2FsZSk7CisgICAgbV92
aWV3SW1wbC0+c2V0Q29udGVudHNTY2FsZShuZXdTY2FsZSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCgpCiB7CiAgICAgQVNTRVJU
KG1fY29udHJvbGxlcik7Ci0gICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2li
aWxpdHkobV9jb250ZW50UG9zaXRpb24sIHNjYWxlRmFjdG9yKCkpOworICAgIG1fY29udHJvbGxl
ci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KG1fY29udGVudFBvc2l0aW9uLCBtX3ZpZXdJ
bXBsLT5jb250ZW50c1NjYWxlKCkpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OmRpZENoYW5nZVZpc2libGVDb250ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbC5oCmluZGV4IDJlMGFmMWM2YmM1ZDBkZDllMzZkYzA1YzBmNDI2Y2IxNWU0ZWIzYTUuLjhk
Y2NhYWMyMTJkYzFhNzA0MWMxYjY2NTM3ZmQ0ODI0MzFiYmE0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbC5oCkBAIC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKIAogICAgIERyYXdpbmdBcmVh
UHJveHkqIGRyYXdpbmdBcmVhKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6
ZSgpIHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9Ci0gICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdJbXBsLT5zY2FsZUZhY3RvcigpOyB9CiAgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBjb250ZW50UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRQb3Np
dGlvbjsgfQogCiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAKaW5kZXggODlhNDBjOTIzMWExODFiNzAx
OWMxZTJmYTEyYjZiNjhiMTE2YjI2MS4uNTFjZmZiN2Q3NTBjMGIyZDlmNTNlNTgwYzI1MmNhNWMx
OTM3NzQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5j
cHAKQEAgLTEwNSw2ICsxMDUsMTUgQEAgdm9pZCBRdFBhZ2VDbGllbnQ6OmRpZENoYW5nZUNvbnRl
bnRzU2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBwdmMtPmRpZENoYW5nZUNv
bnRlbnRzU2l6ZShuZXdTaXplKTsKIH0KIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
K3ZvaWQgUXRQYWdlQ2xpZW50OjpkaWRDaGFuZ2VEZXZpY2VPclBhZ2VTY2FsZUZhY3RvcihmbG9h
dCBjb250ZW50c1NjYWxlKQoreworICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIHB2YyA9IFFR
dWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+dmlld3BvcnRDb250cm9sbGVyKCk7
CisgICAgaWYgKHB2YykKKyAgICAgICAgcHZjLT5kaWRDaGFuZ2VEZXZpY2VPclBhZ2VTY2FsZUZh
Y3Rvcihjb250ZW50c1NjYWxlKTsKK30KKyNlbmRpZgorCiB2b2lkIFF0UGFnZUNsaWVudDo6ZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYgYXR0cikKIHsKICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhhdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdFBhZ2VDbGllbnQuaAppbmRleCBiYzNlM2YxMmMzMGVjZjA3Zjc5ODVjZmJmN2IwNDIy
YTdhMWY1NTIxLi5hOTE1NDQwYmUwM2VjYzI2ZDQwNWE3YzZjNmVhZGMxZjVjZmU1ZmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oCkBAIC01MCw2ICs1MCw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdh
dG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VEZXZpY2VPclBh
Z2VTY2FsZUZhY3RvcihmbG9hdCBjb250ZW50c1NjYWxlKTsKKyNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRB
dHRyaWJ1dGVzJik7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDc0YzMyNWJh
MDdkMThmMTNiMTA1YTdlMmIxMzA1ZTgyZGIwY2NjYTQuLjY1YTllMDUzZWFjZDlkM2Q2NTRhZDcy
OGI3N2YxZGI0YWE3ZTgyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTIyLDcgKzEyMiw2IEBAIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5
ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1c3RtZW50
KGZhbHNlKQogICAgICwgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50KGZhbHNlKQogICAg
ICwgbV9jb29yZGluYXRvcigwKQotICAgICwgbV9jb250ZW50c1NjYWxlKDEpCiAgICAgLCBtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jYW52YXNQbGF0Zm9ybUxheWVyKDAp
CiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcih0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCkKQEAgLTY1NiwxNiArNjU1LDE1IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFq
ZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0CiAgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1l
bnQoKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzU2Nh
bGUoZmxvYXQgc2NhbGUpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKLSAgICBtX2NvbnRlbnRzU2NhbGUgPSBzY2FsZTsK
ICAgICBpZiAoc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpKQogICAgICAgICBtX3BlbmRpbmdDb250
ZW50c1NjYWxlQWRqdXN0bWVudCA9IHRydWU7CiB9CiAKIGZsb2F0IENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpCiB7Ci0gICAgcmV0dXJuIHNlbGZPckFu
Y2VzdG9ySGF2ZU5vbkFmZmluZVRyYW5zZm9ybXMoKSA/IDEgOiBtX2NvbnRlbnRzU2NhbGU7Cisg
ICAgcmV0dXJuIHNlbGZPckFuY2VzdG9ySGF2ZU5vbkFmZmluZVRyYW5zZm9ybXMoKSA/IDEgOiBk
ZXZpY2VTY2FsZUZhY3RvcigpICogcGFnZVNjYWxlRmFjdG9yKCk7CiB9CiAKIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjphZGp1c3RDb250ZW50c1NjYWxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNmM0
MzU4NWM3MGM4ZTAzMDY1ZTRkY2FhMjdlNGYwZGEyZmEzNjk0Ni4uNGM3NjZiNGFmODQ0YjE5MDM5
OTAxYTM2MmYxZjJjZDZjYjViZGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTExOSw2ICsxMTksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRS
ZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKSBPVkVSUklERTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkBAIC0x
MzMsNyArMTM0LDYgQEAgcHVibGljOgogICAgIEZsb2F0UG9pbnQgY29tcHV0ZVBvc2l0aW9uUmVs
YXRpdmVUb0Jhc2UoKTsKICAgICB2b2lkIGNvbXB1dGVQaXhlbEFsaWdubWVudChGbG9hdFBvaW50
JiBwb3NpdGlvbiwgRmxvYXRTaXplJiwgRmxvYXRQb2ludDNEJiBhbmNob3JQb2ludCwgRmxvYXRT
aXplJiBhbGlnbm1lbnRPZmZzZXQpOwogCi0gICAgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0
KTsKICAgICB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3Qg
RmxvYXRQb2ludCYpOwogCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoYm9vbCk7CkBAIC0yMzUsNyAr
MjM1LDYgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNs
aWVudCogbV9jb29yZGluYXRvcjsKICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fbWFp
bkJhY2tpbmdTdG9yZTsKICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fcHJldmlvdXNC
YWNraW5nU3RvcmU7Ci0gICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwogCiAgICAgUmVmUHRyPElt
YWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKICAgICBOYXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWRO
YXRpdmVJbWFnZVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IGJiOTk1NWVkODBiZDQzNTMxNDIxYmRkMTU0
ZWY4YzIxYjZjN2JmY2MuLjZkOWU3NjcxMTA4ZjI1MDkxMjVkYzhiODY1MWFmOTM0MmZiMjA1NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcApAQCAtODYsNyArODYsNiBAQCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKiB3ZWJQYWdlKQogICAgICwgbV9pc0Zs
dXNoaW5nTGF5ZXJDaGFuZ2VzKGZhbHNlKQogICAgICwgbV93YWl0aW5nRm9yVUlQcm9jZXNzKHRy
dWUpCiAgICAgLCBtX2lzU3VzcGVuZGVkKGZhbHNlKQotICAgICwgbV9jb250ZW50c1NjYWxlKDEp
CiAgICAgLCBtX3Nob3VsZFNlbmRTY3JvbGxQb3NpdGlvblVwZGF0ZSh0cnVlKQogICAgICwgbV9z
aG91bGRTeW5jRnJhbWUoZmFsc2UpCiAgICAgLCBtX2RpZEluaXRpYWxpemVSb290Q29tcG9zaXRp
bmdMYXllcihmYWxzZSkKQEAgLTIxNSw2ICsyMTQsNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKQog
ICAgIGlmIChtX3Jvb3RMYXllci0+c2l6ZSgpID09IG5ld1NpemUpCiAgICAgICAgIHJldHVybjsK
IAorICAgIC8vIEZJWE1FIDogbmV3U2l6ZSBpcyBvbiB2aWV3cG9ydCBjb29yZGluYXRlIHN5c3Rl
bSwgaW5zdGVhZCBvZiBjb250ZW50cyBjb29yZGluYXRlIHN5c3RlbS4KICAgICBtX3Jvb3RMYXll
ci0+c2V0U2l6ZShuZXdTaXplKTsKIAogICAgIC8vIElmIHRoZSBuZXdTaXplIGV4cG9zZXMgbmV3
IGFyZWFzIG9mIHRoZSBub24tY29tcG9zaXRlZCBjb250ZW50IGEgc2V0TmVlZHNEaXNwbGF5IGlz
IG5lZWRlZApAQCAtNjczLDEyICs2NzMsMjEgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAg
ICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFk
ZChsYXllcik7CiAgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwotICAg
IGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CiAgICAgbGF5ZXItPnNl
dE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7
CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIAorZmxvYXQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2Vi
UGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKworZmxvYXQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpwYWdlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2Ut
PnBhZ2VTY2FsZUZhY3RvcigpOworfQorCiBib29sIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZygpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03NDAsMjQgKzc0
OSwxOCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TGF5ZXJBbmltYXRpb25z
KENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCBjbwogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldExheWVyQW5pbWF0aW9ucyhs
YXllcklELCBhY3RpdmVBbmltYXRpb25zKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxv
YXQgc2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgYm9v
bCBjb250ZW50c1JlY3REaWRDaGFuZ2UgPSByZWN0ICE9IG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsK
LSAgICBib29sIGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UgPSBzY2FsZSAhPSBtX2NvbnRlbnRzU2Nh
bGU7Ci0KICAgICAvLyBBIHplcm8gdHJhamVjdG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0aWxl
cyBhbGwgYXJvdW5kIHRoZSB2aWV3cG9ydCBhcmUgcmVxdWVzdGVkLgogICAgIHRvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZp
c2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CiAKLSAg
ICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlIHx8IGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpIHsK
KyAgICBib29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVu
dHNSZWN0OworICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKICAgICAgICAgbV92aXNp
YmxlQ29udGVudHNSZWN0ID0gcmVjdDsKLSAgICAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7
CiAKICAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6
aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwogICAgICAgICBmb3IgKEhh
c2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0g
bV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgaWYgKGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpCi0gICAgICAgICAgICAgICAgKCppdCktPnNl
dENvbnRlbnRzU2NhbGUoc2NhbGUpOwotICAgICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENo
YW5nZSkKLSAgICAgICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1l
bnQoKTsKKyAgICAgICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC03NzIsNiArNzc1LDE0IEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvCiAgICAgICAgIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlID0gdHJ1
ZTsKIH0KIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxl
RmFjdG9yQ2hhbmdlZCgpCit7CisgICAgbV9yb290TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikKKyAg
ICAgICAgbV9wYWdlT3ZlcmxheUxheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQo
KTsKK30KKwogR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewogICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCA0
ODE4ZWQ5ZjAwMGY5Yjg0OGRlYWY2YTI2MzFiOWU3NjIwOGE2YmY3Li5lNWUzYmM3YWFhYjc5YTU5
ZjgwOWI3OTUyMzRmZDgyZDE2NjkzZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VSZW5kZXJpbmcoKSB7IG1faXNTdXNwZW5kZWQg
PSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVJlbmRlcmluZygpIHsgbV9pc1N1c3Bl
bmRlZCA9IGZhbHNlOyBzY2hlZHVsZUxheWVyRmx1c2goKTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
ZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdl
YkNvcmU6OkltYWdlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xh
eWVyQ2hhbmdlcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hh
bmdlczsgfQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBy
ZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3Rv
cnkoKSBPVkVSUklERTsKIApAQCAtMTIzLDYgKzEyMyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciosIGRvdWJsZSB0aW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkg
Y29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRp
bmF0b3IKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpIE9WRVJSSURFOwpAQCAtMTk0LDcgKzE5Niw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JVSVByb2Nlc3M7CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkOwogICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2libGVDb250ZW50c1JlY3Q7Ci0gICAgZmxvYXQgbV9j
b250ZW50c1NjYWxlOwogICAgIGJvb2wgbV9zaG91bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGU7
CiAKICAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5tZXNzYWdlcy5pbgppbmRleCAwMzdiZjY5ZjljZGFlYmNjMmZlYmNhMTg4NWQ0ZGViMTZjOTgw
NWI4Li5jYzVlY2ZmZjM5MmM2OGQ2NTYwYjkyNTFkMTJjNjhmYWUwODA2ZThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3QgewotICAg
IFNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50
c1JlY3QsIGZsb2F0IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5
KQorICAgIFNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVD
b250ZW50c1JlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQgdHJhamVjdG9yeVZlY3RvcnkpCiAgICAg
UmVuZGVyTmV4dEZyYW1lKCkKICAgICBQdXJnZUJhY2tpbmdTdG9yZXMoKQogI2lmIEVOQUJMRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5kZXggYTA3ZDczMmVlNzBkM2RkMjdi
MjJkYWU2NTY0NjYzNWE3OWYwMmNiYS4uNjRlNThkOGU2NDgwMGI4MWY4ODBkYzM5ZmMwZTRiMDgz
NWY1N2Y3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIERyYXdpbmdBcmVh
SW1wbDo6dXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3Qgc3RhdGVJRCwgYm9vbCByZXNw
b25kSW1tZQogICAgICAgICBtX3dlYlBhZ2UtPnNjcm9sbE1haW5GcmFtZUlmTm90QXRNYXhTY3Jv
bGxQb3NpdGlvbihzY3JvbGxPZmZzZXQpOwogCiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3Qp
IHsKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFu
Z2UoKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCk7CiAgICAgICAgICAgICAvLyBVc2UgdGhlIHByZXZpb3VzbHkgc2V0IHBhZ2Ug
c2l6ZSBpbnN0ZWFkIG9mIHRoZSBhcmd1bWVudC4KICAgICAgICAgICAgIC8vIEl0IGdldHMgYWRq
dXN0ZWQgcHJvcGVybHkgd2hlbiB1c2luZyB0aGUgZml4ZWQgbGF5b3V0IG1vZGUuCiAgICAgICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNpemVEaWRDaGFuZ2UobV93ZWJQYWdlLT5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhv
c3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgK
aW5kZXggMjA5NmMwYzgxOGEwNzMxMzZlMWUyYjVlZjU1YjJjZjg3NjRiN2M1Mi4uMTI0ZTRhOGVl
MTA1Y2YxYWRmODMzNzhjOTUwY2UyNzk1NDVhNDE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCAvKmNhbGxiYWNrSUQqLykgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBuZXdTaXplKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZVNjYWxlRmFjdG9y
RGlkQ2hhbmdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW5zdGFsbFBhZ2VPdmVybGF5
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRVbmluc3RhbGxQYWdlT3ZlcmxheSgpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4
NzgxZTcxN2I1ZWU1NTg3NzE2YmUwYWQ0MWEzNjNiNzliMTgyN2Y0Li5kYjUzYWU4NTFhYzhlMzIw
YzM3MDljMGUxODgwNTQxYWNhY2FlZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMTg0LDYgKzExODQsMTEgQEAgdm9pZCBXZWJQYWdl
OjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKQogICAgIGZv
ciAoSGFzaFNldDxQbHVnaW5WaWV3Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnaW5WaWV3
cy5iZWdpbigpLCBlbmQgPSBtX3BsdWdpblZpZXdzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAg
ICAgICAgICgqaXQpLT5wYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKIAorI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAobV9kcmF3aW5nQXJlYS0+bGF5ZXJUcmVlSG9z
dCgpKQorICAgICAgICBtX2RyYXdpbmdBcmVhLT5sYXllclRyZWVIb3N0KCktPmRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworI2VuZGlmCisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZShzY2FsZSkpOwogfQogCkBAIC0xMjE0
LDYgKzEyMTksMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBz
Y2FsZUZhY3RvcikKICAgICAgICAgbGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgbV9maW5kQ29u
dHJvbGxlci5kZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpOwogICAgIH0KKworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAobV9kcmF3aW5nQXJlYS0+bGF5ZXJUcmVl
SG9zdCgpKQorICAgICAgICBtX2RyYXdpbmdBcmVhLT5sYXllclRyZWVIb3N0KCktPmRldmljZU9y
UGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworI2VuZGlmCiB9CiAKIGZsb2F0IFdlYlBhZ2U6OmRl
dmljZVNjYWxlRmFjdG9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAKaW5kZXggNDAyMzZmOGRmNDUy
MGU5YzY3NmQwMGZkZWUxODFhYzRlMDZjYTdmOC4uNzZlOWI3ZGFiZGQ4MmRhM2JlOGYxZTc4N2Qw
MmU2NTRhYjlhNzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lk
IExheWVyVHJlZUhvc3RDQTo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQog
ICAgIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RD
QTo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKQordm9pZCBMYXllclRyZWVIb3N0Q0E6OmRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7CiAgICAgLy8gT3RoZXIgbGF5ZXJzIGxl
YXJuIG9mIHRoZSBzY2FsZSBmYWN0b3IgY2hhbmdlIHZpYSBXZWJQYWdlOjpzZXREZXZpY2VTY2Fs
ZUZhY3Rvci4KICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5oCmluZGV4IDIxYjEzZGExYzI0OTJlM2QzZmU0
NGFiODg4NGQ2OWZlZmIxY2EwYjguLmFkMmRkZDFjMDVmYjM3ZjQ3YWM4NzVhZTJjODA5YmY3OGJm
OTViZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9M
YXllclRyZWVIb3N0Q0EuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Y2EvTGF5ZXJUcmVlSG9zdENBLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJvdGVjdGVkOgogICAgIC8v
IExheWVyVHJlZUhvc3QuCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGZvcmNlUmVwYWludCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdM
YXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4
IDA3ZmUxMjg1NWE3ZGE4MTlhODIzMWUwOTg1OWRiZWEyMzBlMGU5N2QuLjFlOWQ2NzEyZTczYTU1
Y2M4OGUxMjBjZTg2NDc1Yzc5MmYyOTY5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtMjA3
LDcgKzIwNyw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5nZShjb25zdCBJ
bnRTaXplJiBuZXdTaXplKQogICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChGb3JSZXNpemUp
OwogfQogCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdl
KCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2Vk
KCkKIHsKICAgICAvLyBPdGhlciBsYXllcnMgbGVhcm4gb2YgdGhlIHNjYWxlIGZhY3RvciBjaGFu
Z2UgdmlhIFdlYlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yLgogICAgIG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RH
dGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5oCmluZGV4IDg0MGFkYTgxM2E2NzBkNjBlZWJiOGU1YjQxMzA4MmY2ODZmNGQwOGYuLjFl
ZGFkYmM0ODMwM2Q5Y2MyNzlmZTk1OTE3NDQ5MDEwMDEzOGI2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5o
CkBAIC01Myw3ICs1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBMYXllclRyZWVIb3N0LgogICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRl
dmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCk7CisgICAgdmlydHVhbCB2b2lkIGRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184193</attachid>
            <date>2013-01-23 03:42:38 -0800</date>
            <delta_ts>2013-01-24 01:44:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105978-20130123203926.patch</filename>
            <type>text/plain</type>
            <size>34842</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjJiOGE0MGY3MTQ2MDlh
ODEzOGM3Y2VjZDRiNGU0YTVmOGM2Yjc5ZS4uYWU5YTkwMmU5NWQ2MTcxNDRkYmEyNDVlMDNkYjk4
OGUxNGZlMWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkxIEBACiAyMDEzLTAxLTIzICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtFRkxdW1F0
XVtXSzJdIFdlIHNob3VsZCBjb25zaWRlciBhIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUg
aW5zdGVhZCBvZiBvdXIgb3duIHNjYWxlIGZhY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTk3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ciBzZW5kcyBhIHBhZ2Ugc2NhbGUgZmFjdG9yIHRvIENvb3JkaW5hdGVkCisgICAgICAgIEdyYXBo
aWNzIFN5c3RlbSByZWdhcmRsZXNzIG9mIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBXZWJDb3Jl
LiBUaGlzIHBhdGNoIG1ha2VzCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIFN5c3RlbSB1
c2UgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUgdG8gbWF0Y2ggb3RoZXIKKyAgICAg
ICAgcG9ydHMuCisKKyAgICAgICAgV2hlbiBpdCBpcyBuZWVkZWQgdG8gY2hhbmdlIGEgcGFnZSBz
Y2FsZSwgUGFnZVZpZXdwb3J0Q29udHJvbGxlciBzZW5kcyB0aGUgc2NhbGUKKyAgICAgICAgdG8g
UGFnZSBpbiBXZWIgUHJvY2VzcyB2aWEgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2UuIFdoZW4gdGhl
IHBhZ2Ugc2NhbGUgaW4KKyAgICAgICAgV2ViQ29yZSBpcyBjaGFuZ2VkLCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIgY2FuIGJlIG5vdGlmaWVkIHZpYQorICAgICAgICBkZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckNoYW5nZWQgY2FsbGJhY2suIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciB1c2VzIHRo
ZSBwYWdlCisgICAgICAgIHNjYWxlIGZhY3RvciBsaWtlIHByZXZpb3VzIG91ciBvd24gc2NhbGUg
ZmFjdG9yLgorCisgICAgICAgIFdlIHNldCB0cnVlIHRvIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IgYW5kCisgICAgICAgIEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9y
IGluIFNldHRpbmdzIGxpa2UgY2hyb21pdW0sIGJlY2F1c2UKKyAgICAgICAgVGlsZWRCYWNraW5n
U3RvcmUgdGhhdCBpcyBhIGJhY2tpbmcgc3RvcmUgb2YgZWFjaCBHcmFwaGljc0xheWVyIGFwcGxp
ZXMgdGhlCisgICAgICAgIHNjYWxlIHRvIG91ciByYXN0ZXIgZ3JhcGhpY3MgZW5naW5lcyBpbnN0
ZWFkIG9mIGFwcGx5aW5nIHRoZSBzY2FsZSB0byB0aGUgbG9jYWwKKyAgICAgICAgdHJhbnNmb3Jt
IG9mIGVhY2ggcmVuZGVyIG9iamVjdC4KKworICAgICAgICBUaGFuayBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbiBmb3IgaW1wbGVtZW50aW5nIHRoZSBiYXNlIHBhdGNoIG9mIHRoaXMgcGF0Y2gu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgorICAgICAgICAoRXdr
Vmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUp
OgorICAgICAgICAoUVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwOgorICAg
ICAgICAoUVJhd1dlYlZpZXc6OnNldFNpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAg
IChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZp
c2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkUmVuZGVyRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250
ZW50c1Zpc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVy
OjpzeW5jVmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29u
dHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjphcHBseVBvc2l0aW9uQWZ0ZXJSZW5kZXJpbmdD
b250ZW50cyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRMZWdhY3lJbXBsOjp1cGRhdGVWaWV3cG9y
dFNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVm
ZmVjdGl2ZUNvbnRlbnRzU2NhbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RHJhd2luZ0FyZWFJbXBsOjp1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKExheWVyVHJl
ZUhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2NhbGVQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RH
dGs6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmg6CisgICAgICAgIChMYXllclRyZWVIb3N0
R3RrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMu
aDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RNYWMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdENBOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgorCisyMDEzLTAxLTIzICBI
dWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtXSzJd
IEFkZCBhcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIGFuZCBhcHBseVBhZ2VTY2Fs
ZUZhY3RvckluQ29tcG9zaXRvciBBUElzIHRvIFdlYktpdDIgV0tQcmVmZXJlbmNlcy4KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzY1MwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKaW5kZXgg
NzVmYjFkNzA4ZDhhNzg4MTRmMjZlMjQ3ZDVjMTliNjgxNDQ5NmY4NS4uMGU4YjBjZTUwNjBhNmIw
MzUzNDc4YjM4ZTgzOTQ4OTQyYzFkMGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtMTQ5LDYgKzE0OSw4IEBAIEV3a1ZpZXdJ
bXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0cjxFd2tDb250ZXh0
PiBjb250ZXh0LCBQYXNzCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIG1fcGFn
ZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJl
bmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICBtX3BhZ2VQcm94eS0+
cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7CisgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNl
cygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKICNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgbV9wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5z
ZXRXZWJHTEVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDIwNTMwNzliMGI0MmVjZWI4MTgy
YmQwYThlNjY3MjhjNTk5MTllMzIuLmFkMGJiZDEzNmE3OWQyZmQ4NjkwMzYxYzkwOTdmMjk5Zjkw
YmQ0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3LmNwcApAQCAtMzIzLDYgKzMyMyw4IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6
OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAg
ICAgLy8gQW55IHBhZ2Ugc2V0dGluZyBzaG91bGQgcHJlZmVycmFibGUgYmUgc2V0IGJlZm9yZSBj
cmVhdGluZyB0aGUgcGFnZS4KICAgICB3ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJl
bmNlcygpLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKICAgICB3ZWJQ
YWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZSh0cnVlKTsKKyAgICB3ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygp
LT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlBh
Z2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKHRydWUpOwogICAgIHdlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnBy
ZWZlcmVuY2VzKCktPnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgd2ViUGFn
ZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0V2ViR0xFbmFibGVkKHRydWUp
OwogCkBAIC04NDIsNyArODQ0LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6
dXBkYXRlVmlld3BvcnRTaXplKCkKICAgICB3ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNl
dFNpemUodmlld3BvcnRTaXplLnRvU2l6ZSgpLCBJbnRTaXplKCkpOwogICAgIC8vIFRoZSBiYWNr
aW5nIHN0b3JlIHNjYWxlIGZhY3RvciBzaG91bGQgYWxyZWFkeSBiZSBzZXQgdG8gdGhlIGRldmlj
ZSBwaXhlbCByYXRpbwogICAgIC8vIG9mIHRoZSB1bmRlcmx5aW5nIHdpbmRvdywgdGh1cyB3ZSBz
ZXQgdGhlIGVmZmVjdGl2ZSBzY2FsZSB0byAxIGhlcmUuCi0gICAgd2ViUGFnZVByb3h5LT5kcmF3
aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IEZsb2F0U2l6ZSh2aWV3cG9ydFNpemUpKSwgMSwgRmxvYXRQb2ludCgpKTsKKyAgICB3ZWJQYWdl
UHJveHktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgRmxvYXRTaXplKHZpZXdwb3J0U2l6ZSkpLCBGbG9hdFBvaW50KCkpOwogfQog
CiBxcmVhbCBRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6em9vbUZhY3RvcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5j
cHAKaW5kZXggMmRkNDVkMGVmZmU5ZTBmM2ZmYmFkMzY0OWQzMGU5NTc2ZmJmOWRjMy4uMzYxZjc0
ZGFiODUxYWQ4OThlZDM5ZDI3N2E3YTZmNDc5YjI1OTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcApAQCAtMzU1LDcgKzM1
NSw3IEBAIHZvaWQgUVJhd1dlYlZpZXc6OnNldFNpemUoY29uc3QgUVNpemUmIHNpemUpCiAgICAg
ZC0+bV9zaXplID0gc2l6ZTsKIAogICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKGQtPm1fc2l6ZSwg
V2ViQ29yZTo6SW50U2l6ZSgpKTsKLSAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIGQtPm1fc2l6ZSksIDEg
LypzY2FsZSovLCBXZWJDb3JlOjpGbG9hdFBvaW50KCkpOworICAgIGRyYXdpbmdBcmVhLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwg
ZC0+bV9zaXplKSwgV2ViQ29yZTo6RmxvYXRQb2ludCgpKTsKIH0KIAogV0tQYWdlUmVmIFFSYXdX
ZWJWaWV3OjpwYWdlUmVmKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBiYWE4ZjY1MjNkZWJmZGViYmM0ZTUyMmI0NzVlMTRj
YzE4ZmQyZWI1Li42YTA4NTIxMDFjMDdlMmFhYTYyZjA2N2MxNTUyMzE2ZjdjMTA4ZTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3Bw
CkBAIC00MSw3ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHk6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KERyYXdpbmdB
cmVhUHJveHkqIGRyYXdpbmdBcmVhUHJveHkpCiAgICAgOiBtX2RyYXdpbmdBcmVhUHJveHkoZHJh
d2luZ0FyZWFQcm94eSkKICAgICAsIG1fcmVuZGVyZXIoYWRvcHRSZWYobmV3IExheWVyVHJlZVJl
bmRlcmVyKHRoaXMpKSkKLSAgICAsIG1fbGFzdFNlbnRTY2FsZSgwKQogewogfQogCkBAIC01NSwx
MSArNTQsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojp1cGRhdGVWaWV3
cG9ydCgpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT51cGRhdGVWaWV3cG9ydCgpOwogfQogCi1m
bG9hdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBj
b25zdAotewotICAgIHJldHVybiBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKLX0KLQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGlz
cGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCiB7CiAgICAgbV9y
ZW5kZXJlci0+YXBwZW5kVXBkYXRlKGZ1bmN0aW9uKTsKQEAgLTE4NSwxOSArMTc5LDE2IEBAIHZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldEFuaW1hdGlvbnNMb2NrZWQoYm9v
bCBsb2NrZWQpCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNl
dEFuaW1hdGlvbnNMb2NrZWQsIG1fcmVuZGVyZXIuZ2V0KCksIGxvY2tlZCkpOwogfQogCi12b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFBv
aW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7CiAgICAgLy8gSW5mb3JtIHRoZSByZW5kZXJl
ciB0byBhZGp1c3Qgdmlld3BvcnQtZml4ZWQgbGF5ZXJzLgogICAgIGRpc3BhdGNoVXBkYXRlKGJp
bmQoJkxheWVyVHJlZVJlbmRlcmVyOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0LCBtX3JlbmRlcmVy
LmdldCgpLCByZWN0KSk7CiAKLSAgICBjb25zdCBmbG9hdCBlZmZlY3RpdmVTY2FsZSA9IGRldmlj
ZVNjYWxlRmFjdG9yKCkgKiBwYWdlU2NhbGVGYWN0b3I7Ci0KLSAgICBpZiAocmVjdCA9PSBtX2xh
c3RTZW50VmlzaWJsZVJlY3QgJiYgZWZmZWN0aXZlU2NhbGUgPT0gbV9sYXN0U2VudFNjYWxlICYm
IHRyYWplY3RvcnlWZWN0b3IgPT0gbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3IpCisgICAgaWYg
KHJlY3QgPT0gbV9sYXN0U2VudFZpc2libGVSZWN0ICYmIHRyYWplY3RvcnlWZWN0b3IgPT0gbV9s
YXN0U2VudFRyYWplY3RvcnlWZWN0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZHJhd2lu
Z0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6U2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCBlZmZlY3RpdmVTY2Fs
ZSwgdHJhamVjdG9yeVZlY3RvciksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQo
KSk7CisgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpTZXRWaXNpYmxlQ29udGVudHNSZWN0KHJl
Y3QsIHRyYWplY3RvcnlWZWN0b3IpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlE
KCkpOwogICAgIG1fbGFzdFNlbnRWaXNpYmxlUmVjdCA9IHJlY3Q7Ci0gICAgbV9sYXN0U2VudFNj
YWxlID0gZWZmZWN0aXZlU2NhbGU7CiAgICAgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3IgPSB0
cmFqZWN0b3J5VmVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuaAppbmRleCA3NTkxYjg0ODVkMzk4ODZlZDdlZDJjZDA1ZDExNjEz
ZmU2N2ZhY2QzLi42NzNhNmI4MmJmN2ZkNGExYTc3YmZlY2M2MTkyMDFhYzY0MDdjYTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcihD
b29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ29v
cmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICB2b2lkIHNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgdHJhamVjdG9yeVZlY3Rvcik7CiAgICAgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVy
ZWRSZWN0KTsKICAgICB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihDb29yZGluYXRlZExheWVySUQs
IHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VV
cGRhdGVJbmZvJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXll
cklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJm
YWNlVXBkYXRlSW5mbyYpOwpAQCAtOTQsMTUgKzk0LDEyIEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKLSAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBk
aXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAKICAgICBEcmF3aW5nQXJl
YVByb3h5KiBtX2RyYXdpbmdBcmVhUHJveHk7CiAgICAgUmVmUHRyPExheWVyVHJlZVJlbmRlcmVy
PiBtX3JlbmRlcmVyOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJl
Y3Q7Ci0gICAgZmxvYXQgbV9sYXN0U2VudFNjYWxlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3I7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90
IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+ID4gU3VyZmFjZU1hcDsK
ICAgICBTdXJmYWNlTWFwIG1fc3VyZmFjZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaAppbmRleCAxZWIxODE5NTFiMGJlYmQwODE1ODdjOWFjYzg0YjdhMjQ1
ZTNjNDU5Li5iYWQ2Mzg0ZGU4NmJlMDRmOWYxZjc1NjA5N2VmYTg1NzU3MTc5NDc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTg2LDcgKzg2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB2aWV3cG9ydFZpc2libGVS
ZWN0KCkgY29uc3QgeyByZXR1cm4gY29udGVudHNSZWN0KCk7IH0KICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFJlY3QgY29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkqIGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KCkgY29uc3QgeyByZXR1
cm4gbV9jb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5nZXQoKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgLyog
dmlzaWJsZUNvbnRlbnRzUmVjdCAqLywgZmxvYXQgLyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIC8qIHRyYWplY3RvcnlWZWN0b3IgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgLyogdmlz
aWJsZUNvbnRlbnRzUmVjdCAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgLyogdHJhamVj
dG9yeVZlY3RvciAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKIAogICAgIFdlYlBhZ2VQcm94
eSogcGFnZSgpIHsgcmV0dXJuIG1fd2ViUGFnZVByb3h5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAppbmRleCA2NWYxYjllYjk0NWM2
MTExZTJlZmUzZjM0YjFkODA1MWZkMDBiZWYzLi4xODM0ZjlkMGEyM2MwYzQyMGJkZmNmYjIxNmRk
MDE0YWFmMDBlNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5SW1wbC5jcHAKQEAgLTM3NiwxMCArMzc2LDEwIEBAIHZvaWQgRHJhd2luZ0FyZWFQ
cm94eUltcGw6OmRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2Uo
Q29yZUlQCiAgICAgICAgIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHktPmRpZFJlY2Vp
dmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2Fn
ZUlELCBkZWNvZGVyKTsKIH0KIAotdm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1Jl
Y3QsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVj
dG9yKQordm9pZCBEcmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7CiAgICAgaWYgKG1fY29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkpCi0gICAgICAgIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHktPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCwgc2NhbGUs
IHRyYWplY3RvcnlWZWN0b3IpOworICAgICAgICBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3QsIHRyYWplY3Rv
cnlWZWN0b3IpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHlJbXBsLmgKaW5kZXggNmNlZDIwN2I0Y2M2OThiN2QyYTVjM2Y2YTJiN2Rh
M2NiYmIyMWZjYy4uNGFlNjAyMzFhYTI5MTIzYjJkNzU2NTg3MjJkNTdjZDM4ZjE5OGIzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKQEAg
LTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpOwogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnkpIE9WRVJSSURFOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogI2VuZGlmCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4IGY3MWMwM2MwMzNhYmUxYzUyMmU2ZDFmYzBiYTRl
MzQ2ZDk1NDU1YjEuLmUwYjNjMTUzZjQyNjZmYmMyMGU2M2M3ZDdmOGViZjg5MGQzZDYyMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ci5jcHAKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRp
ZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgSQogICAgICAg
ICBGbG9hdFBvaW50IGN1cnJlbnREaXNjcmV0ZVBvcyA9IHJvdW5kZWRJbnRQb2ludChtX2NvbnRl
bnRzUG9zaXRpb24pOwogICAgICAgICBGbG9hdFBvaW50IHBpeGVsQWxpZ25lZFBvcyA9IHBpeGVs
QWxpZ25lZEZsb2F0UG9pbnQoY3VycmVudERpc2NyZXRlUG9zKTsKICAgICAgICAgbV9jb250ZW50
c1Bvc2l0aW9uID0gYm91bmRDb250ZW50c1Bvc2l0aW9uKHBpeGVsQWxpZ25lZFBvcyk7CisKKyAg
ICAgICAgLy8gRklYTUUgOiB0aGUgY29udGVudHMgcG9zaXRpb24gZG9lcyBub3QgYWZmZWN0IGFu
eXRoaW5nIHdoZW4gZGVsZWdhdGVzIHNjcm9sbGluZyBpcyBlbmFibGVkLgorICAgICAgICBtX3dl
YlBhZ2VQcm94eS0+c2NhbGVQYWdlKG1fcGFnZVNjYWxlRmFjdG9yLCByb3VuZGVkSW50UG9pbnQo
bV9jb250ZW50c1Bvc2l0aW9uKSk7CiAgICAgfQogCiAgICAgLy8gVGhlcmUgbWlnaHQgYmUgcmVu
ZGVyZWQgZnJhbWVzIG5vdCBjb3ZlcmluZyBvdXIgcmVxdWVzdGVkIHBvc2l0aW9uIHlldCwgd2Fp
dCBmb3IgaXQuCkBAIC0yNTgsNyArMjYxLDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVy
OjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3QgRmxvYXRQb2ludCYgcG9zaXQKICAg
ICBpZiAoIW1fcGVuZGluZ1Bvc2l0aW9uQ2hhbmdlKQogICAgICAgICBtX2NvbnRlbnRzUG9zaXRp
b24gPSBwb3NpdGlvbjsKICAgICBpZiAoIW1fcGVuZGluZ1NjYWxlQ2hhbmdlKQotICAgICAgICBt
X3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOworICAgICAgICBhcHBseVNjYWxlQWZ0ZXJSZW5kZXJp
bmdDb250ZW50cyhzY2FsZSk7CiAKICAgICBzeW5jVmlzaWJsZUNvbnRlbnRzKHRyYWplY3RvcnlW
ZWN0b3IpOwogfQpAQCAtMjcxLDcgKzI3NCw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6c3luY1Zpc2libGVDb250ZW50cyhjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjCiAK
ICAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdChib3VuZENvbnRlbnRzUG9zaXRpb24o
bV9jb250ZW50c1Bvc2l0aW9uKSwgdmlzaWJsZUNvbnRlbnRzU2l6ZSgpKTsKICAgICB2aXNpYmxl
Q29udGVudHNSZWN0LmludGVyc2VjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX2Nv
bnRlbnRzU2l6ZSkpOwotICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZp
c2libGVDb250ZW50c1JlY3QsIG1fcGFnZVNjYWxlRmFjdG9yLCB0cmFqZWN0b3J5VmVjdG9yKTsK
KyAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNS
ZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKIAogICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VWaXNpYmxl
Q29udGVudHMoKTsKIH0KQEAgLTMyNiw2ICszMjksOSBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXI6OnJlc3VtZUNvbnRlbnQoKQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFw
cGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IHNjYWxlKQogeworICAgIGlmICht
X3BhZ2VTY2FsZUZhY3RvciA9PSBzY2FsZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9wYWdl
U2NhbGVGYWN0b3IgPSBzY2FsZTsKICAgICBtX3BlbmRpbmdTY2FsZUNoYW5nZSA9IHRydWU7CiAg
ICAgc3luY1Zpc2libGVDb250ZW50cygpOwpAQCAtMzMzLDYgKzMzOSw5IEBAIHZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMoZmxvYXQg
c2NhbGUpCiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlQb3NpdGlvbkFmdGVy
UmVuZGVyaW5nQ29udGVudHMoY29uc3QgRmxvYXRQb2ludCYgcG9zKQogeworICAgIGlmIChtX2Nv
bnRlbnRzUG9zaXRpb24gPT0gcG9zKQorICAgICAgICByZXR1cm47CisKICAgICBtX2NvbnRlbnRz
UG9zaXRpb24gPSBwb3M7CiAgICAgbV9wZW5kaW5nUG9zaXRpb25DaGFuZ2UgPSB0cnVlOwogICAg
IHN5bmNWaXNpYmxlQ29udGVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKaW5kZXggYTA4ZmU5NmRiY2Q4OGE5MGIy
M2ZiNDdiNjg3NTZhMTlhZWExYjVkNS4uYTA3Zjg1MDY2NjQ5ZTM1Mjk4MDQ1NmViMjFkNzE1ODBi
NTc2M2JmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xp
ZW50TGVnYWN5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
Q2xpZW50TGVnYWN5SW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBQYWdlQ2xpZW50TGVn
YWN5SW1wbDo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lkIFBhZ2VDbGllbnRMZWdhY3lJbXBsOjp1cGRh
dGVWaWV3cG9ydFNpemUoKQogewogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIG1f
dmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJ
bnRSZWN0KHJvdW5kZWRJbnRQb2ludChtX3ZpZXdJbXBsLT5wYWdlUG9zaXRpb24oKSksIG1fdmll
d0ltcGwtPnNpemUoKSksIG1fdmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpLCBGbG9hdFBvaW50
KCkpOworICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNv
bnRlbnRzUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChtX3ZpZXdJbXBsLT5wYWdlUG9zaXRp
b24oKSksIG1fdmlld0ltcGwtPnNpemUoKSksIEZsb2F0UG9pbnQoKSk7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQwYTQ4NDUyYTU1NTgyZjU3YmQzOS4u
OGZmNTEwZDc4ZTYzYzcyODcwZDAwZDFkYmMxMTU3MWE1NjM5Yjc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBA
IC0xMjIsNyArMTIyLDYgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAgICwgbV9wZW5kaW5n
Q29udGVudHNTY2FsZUFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdWaXNpYmxlUmVj
dEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCi0gICAgLCBtX2NvbnRl
bnRzU2NhbGUoMSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBt
X2NhbnZhc1BsYXRmb3JtTGF5ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKHRo
aXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVk
KQpAQCAtNjU2LDE2ICs2NTUsMTUgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXQKICAgICBzZXRO
ZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKK3ZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotICAgIG1f
Y29udGVudHNTY2FsZSA9IHNjYWxlOwogICAgIGlmIChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkp
CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1c3RtZW50ID0gdHJ1ZTsKIH0KIAog
ZmxvYXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKCkK
IHsKLSAgICByZXR1cm4gc2VsZk9yQW5jZXN0b3JIYXZlTm9uQWZmaW5lVHJhbnNmb3JtcygpID8g
MSA6IG1fY29udGVudHNTY2FsZTsKKyAgICByZXR1cm4gc2VsZk9yQW5jZXN0b3JIYXZlTm9uQWZm
aW5lVHJhbnNmb3JtcygpID8gMSA6IGRldmljZVNjYWxlRmFjdG9yKCkgKiBwYWdlU2NhbGVGYWN0
b3IoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRz
U2NhbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAppbmRleCA2YzQzNTg1YzcwYzhlMDMwNjVlNGRjYWEyN2U0ZjBkYTJmYTM2
OTQ2Li40Yzc2NmI0YWY4NDRiMTkwMzk5MDFhMzYyZjFmMmNkNmNiNWJkZTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApA
QCAtMTE5LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChj
b25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNO
ZWVkc0Rpc3BsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9z
aXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpIE9WRVJSSURFOwogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKQEAgLTEzMyw3ICsxMzQsNiBAQCBwdWJsaWM6CiAgICAgRmxvYXRQ
b2ludCBjb21wdXRlUG9zaXRpb25SZWxhdGl2ZVRvQmFzZSgpOwogICAgIHZvaWQgY29tcHV0ZVBp
eGVsQWxpZ25tZW50KEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBGbG9hdFNpemUmLCBGbG9hdFBvaW50
M0QmIGFuY2hvclBvaW50LCBGbG9hdFNpemUmIGFsaWdubWVudE9mZnNldCk7CiAKLSAgICB2b2lk
IHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0
VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICB2b2lkIHNldFJvb3RM
YXllcihib29sKTsKQEAgLTIzNSw3ICsyMzUsNiBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAgIE93blB0cjxU
aWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwogICAgIE93blB0cjxUaWxlZEJh
Y2tpbmdTdG9yZT4gbV9wcmV2aW91c0JhY2tpbmdTdG9yZTsKLSAgICBmbG9hdCBtX2NvbnRlbnRz
U2NhbGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1fY29tcG9zaXRlZEltYWdlOwogICAgIE5hdGl2
ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNzk3
YWVlMzUyYjBlYjA4MzI0ZjU4Y2E5YjNmZDIyZmJmNWNhZjk2YS4uMDBmYTQ3ZjhkYzI1ODliZTkw
Nzc5ZjJlYTQ3YWNjZGI2NDU2MTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC04Nyw3ICs4Nyw2IEBAIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2Uq
IHdlYlBhZ2UpCiAgICAgLCBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMoZmFsc2UpCiAgICAgLCBt
X3dhaXRpbmdGb3JVSVByb2Nlc3ModHJ1ZSkKICAgICAsIG1faXNTdXNwZW5kZWQoZmFsc2UpCi0g
ICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICAsIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9u
VXBkYXRlKHRydWUpCiAgICAgLCBtX3Nob3VsZFN5bmNGcmFtZShmYWxzZSkKICAgICAsIG1fZGlk
SW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVyKGZhbHNlKQpAQCAtNjc5LDEyICs2NzgsMjEg
QEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNy
ZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhp
cyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CiAgICAgbV9sYXllcnNUb0Ny
ZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwotICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1f
Y29udGVudHNTY2FsZSk7CiAgICAgbGF5ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50
KCk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVy
KTsKIH0KIAorZmxvYXQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VTY2FsZUZhY3Rv
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
K30KKworZmxvYXQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlU2NhbGVGYWN0b3IoKSBj
b25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOworfQorCiBi
b29sIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC03NTEsMjQgKzc1OSwxOCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6c2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklE
LCBjbwogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OlNldExheWVyQW5pbWF0aW9ucyhsYXllcklELCBhY3RpdmVBbmltYXRpb25zKSk7
CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQm
IHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Vmlz
aWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UG9pbnQm
IHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgYm9vbCBjb250ZW50c1JlY3REaWRDaGFuZ2UgPSBy
ZWN0ICE9IG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsKLSAgICBib29sIGNvbnRlbnRzU2NhbGVEaWRD
aGFuZ2UgPSBzY2FsZSAhPSBtX2NvbnRlbnRzU2NhbGU7Ci0KICAgICAvLyBBIHplcm8gdHJhamVj
dG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0aWxlcyBhbGwgYXJvdW5kIHRoZSB2aWV3cG9ydCBh
cmUgcmVxdWVzdGVkLgogICAgIHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlW
ZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CiAKLSAgICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdl
IHx8IGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpIHsKKyAgICBib29sIGNvbnRlbnRzUmVjdERpZENo
YW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVudHNSZWN0OworICAgIGlmIChjb250ZW50c1Jl
Y3REaWRDaGFuZ2UpIHsKICAgICAgICAgbV92aXNpYmxlQ29udGVudHNSZWN0ID0gcmVjdDsKLSAg
ICAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7CiAKICAgICAgICAgSGFzaFNldDxXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVk
TGF5ZXJzLmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKGNvbnRlbnRzU2NhbGVEaWRDaGFu
Z2UpCi0gICAgICAgICAgICAgICAgKCppdCktPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOwotICAg
ICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkKLSAgICAgICAgICAgICAgICAoKml0
KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKKyAgICAgICAgICAgICgqaXQpLT5z
ZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03
ODMsNiArNzg1LDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxl
Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvCiAgICAgICAgIG1fc2hvdWxk
U2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlID0gdHJ1ZTsKIH0KIAordm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCit7CisgICAgbV9y
b290TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworICAgIG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7Cisg
ICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikKKyAgICAgICAgbV9wYWdlT3ZlcmxheUxheWVyLT5k
ZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKK30KKwogR3JhcGhpY3NMYXllckZhY3Rv
cnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewog
ICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCAwMTAyMmIyY2M0ZTk4NDg4YTRkZjc4N2VhMzY5
MGI3MmFjY2ZmNzI5Li5lZmRkNmY3ZjA5YWRlMTM4MjExYWU3NWI0ZTNiZTI2OGJmMTk5Y2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF1
c2VSZW5kZXJpbmcoKSB7IG1faXNTdXNwZW5kZWQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHJlc3VtZVJlbmRlcmluZygpIHsgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOyBzY2hlZHVsZUxheWVy
Rmx1c2goKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+
IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsgfQpAQCAtODYsNyArODYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVj
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgc2NhbGUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNv
bnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBPVkVSUklERTsKIApAQCAtMTIzLDYg
KzEyMyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKTsKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
Kik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAg
dmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBD
b29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0b3IKICAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwpAQCAt
MTk0LDcgKzE5Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JVSVByb2Nlc3M7
CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2li
bGVDb250ZW50c1JlY3Q7Ci0gICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwogICAgIGJvb2wgbV9z
aG91bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGU7CiAKICAgICBMYXllclRyZWVDb250ZXh0IG1f
bGF5ZXJUcmVlQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgppbmRleCAwMzdiZjY5
ZjljZGFlYmNjMmZlYmNhMTg4NWQ0ZGViMTZjOTgwNWI4Li5jYzVlY2ZmZjM5MmM2OGQ2NTYwYjky
NTFkMTJjNjhmYWUwODA2ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0yMSw3
ICsyMSw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBtZXNzYWdlcyAtPiBD
b29yZGluYXRlZExheWVyVHJlZUhvc3QgewotICAgIFNldFZpc2libGVDb250ZW50c1JlY3QoV2Vi
Q29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBXZWJDb3Jl
OjpGbG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5KQorICAgIFNldFZpc2libGVDb250ZW50c1Jl
Y3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIFdlYkNvcmU6OkZsb2F0
UG9pbnQgdHJhamVjdG9yeVZlY3RvcnkpCiAgICAgUmVuZGVyTmV4dEZyYW1lKCkKICAgICBQdXJn
ZUJhY2tpbmdTdG9yZXMoKQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUlt
cGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5jcHAKaW5kZXggYTA3ZDczMmVlNzBkM2RkMjdiMjJkYWU2NTY0NjYzNWE3OWYwMmNiYS4uNjRl
NThkOGU2NDgwMGI4MWY4ODBkYzM5ZmMwZTRiMDgzNWY1N2Y3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTM4
MCw3ICszODAsNyBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6dXBkYXRlQmFja2luZ1N0b3JlU3Rh
dGUodWludDY0X3Qgc3RhdGVJRCwgYm9vbCByZXNwb25kSW1tZQogICAgICAgICBtX3dlYlBhZ2Ut
PnNjcm9sbE1haW5GcmFtZUlmTm90QXRNYXhTY3JvbGxQb3NpdGlvbihzY3JvbGxPZmZzZXQpOwog
CiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgICAgICAgICAv
LyBVc2UgdGhlIHByZXZpb3VzbHkgc2V0IHBhZ2Ugc2l6ZSBpbnN0ZWFkIG9mIHRoZSBhcmd1bWVu
dC4KICAgICAgICAgICAgIC8vIEl0IGdldHMgYWRqdXN0ZWQgcHJvcGVybHkgd2hlbiB1c2luZyB0
aGUgZml4ZWQgbGF5b3V0IG1vZGUuCiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNpemVE
aWRDaGFuZ2UobV93ZWJQYWdlLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXggMjA5NmMwYzgxOGEwNzMxMzZlMWUy
YjVlZjU1YjJjZjg3NjRiN2M1Mi4uMTI0ZTRhOGVlMTA1Y2YxYWRmODMzNzhjOTUwY2UyNzk1NDVh
NDE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJU
cmVlSG9zdC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZm9y
Y2VSZXBhaW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50
NjRfdCAvKmNhbGxiYWNrSUQqLykgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkSW5zdGFsbFBhZ2VPdmVybGF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRVbmluc3RhbGxQYWdlT3ZlcmxheSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5YTJmMjMxZThjMzA0NzUwYTI0NzlhNDhmODRl
YmY0YzM2MDM5N2ZkLi45Zjk1ZDQxNDQ0MDVjMTAwMzAwY2NkN2Y2NTFjZGQ4YzIxZTA1ODBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0x
MjEyLDYgKzEyMTIsMTEgQEAgdm9pZCBXZWJQYWdlOjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBj
b25zdCBJbnRQb2ludCYgb3JpZ2luKQogICAgIGZvciAoSGFzaFNldDxQbHVnaW5WaWV3Kj46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnaW5WaWV3cy5iZWdpbigpLCBlbmQgPSBtX3BsdWdpblZp
ZXdzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5wYWdlU2NhbGVGYWN0
b3JEaWRDaGFuZ2UoKTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBp
ZiAobV9kcmF3aW5nQXJlYS0+bGF5ZXJUcmVlSG9zdCgpKQorICAgICAgICBtX2RyYXdpbmdBcmVh
LT5sYXllclRyZWVIb3N0KCktPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworI2Vu
ZGlmCisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlBhZ2VTY2FsZUZhY3RvckRp
ZENoYW5nZShzY2FsZSkpOwogfQogCkBAIC0xMjQyLDYgKzEyNDcsMTEgQEAgdm9pZCBXZWJQYWdl
OjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKICAgICAgICAgbGF5b3V0
SWZOZWVkZWQoKTsKICAgICAgICAgbV9maW5kQ29udHJvbGxlci5kZXZpY2VTY2FsZUZhY3RvckRp
ZENoYW5nZSgpOwogICAgIH0KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAg
ICBpZiAobV9kcmF3aW5nQXJlYS0+bGF5ZXJUcmVlSG9zdCgpKQorICAgICAgICBtX2RyYXdpbmdB
cmVhLT5sYXllclRyZWVIb3N0KCktPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwor
I2VuZGlmCiB9CiAKIGZsb2F0IFdlYlBhZ2U6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVy
VHJlZUhvc3RHdGsuY3BwCmluZGV4IDA3ZmUxMjg1NWE3ZGE4MTlhODIzMWUwOTg1OWRiZWEyMzBl
MGU5N2QuLjFlOWQ2NzEyZTczYTU1Y2M4OGUxMjBjZTg2NDc1Yzc5MmYyOTY5YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRy
ZWVIb3N0R3RrLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6
c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgIGNvbXBvc2l0ZUxheWVy
c1RvQ29udGV4dChGb3JSZXNpemUpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OmRldmlj
ZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6ZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKICAgICAvLyBPdGhlciBsYXllcnMgbGVhcm4gb2Yg
dGhlIHNjYWxlIGZhY3RvciBjaGFuZ2UgdmlhIFdlYlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9y
LgogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDg0MGFkYTgxM2E2NzBkNjBlZWJiOGU1
YjQxMzA4MmY2ODZmNGQwOGYuLjFlZGFkYmM0ODMwM2Q5Y2MyNzlmZTk1OTE3NDQ5MDEwMDEzOGI2
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC01Myw3ICs1Myw3IEBAIHByb3RlY3RlZDoKICAgICAv
LyBMYXllclRyZWVIb3N0LgogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdmly
dHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSk7
Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCk7CisgICAgdmly
dHVhbCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBmb3JjZVJlcGFpbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5n
TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZUxheWVyRmx1c2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLmgKaW5kZXggNGQzMDY5ZjU1OTdiYzkyY2M2YzMw
OTIwYTRkYmZkNWEwODhiMjFhNC4uZTA5MmIyMzlhODU2YzVkNzBlNTBiNWFhN2ZmYzVhNzI1NTNj
NmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9M
YXllclRyZWVIb3N0TWFjLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9MYXllclRyZWVIb3N0TWFjLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1Np
emUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5n
ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnN0YWxsUGFnZU92ZXJs
YXkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVW5pbnN0YWxsUGFnZU92ZXJsYXko
KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbQppbmRleCA1MzU1MTAwNzdmYWI5OTM0ZDk0NGY0
NTgxZTAzYTkxNzUwMTUwMzYzLi41OTgwZDU2MDY4YWY2NjE4NDlmNjU4MTRjZDFmNTY5YWZhZmI2
NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xh
eWVyVHJlZUhvc3RNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9MYXllclRyZWVIb3N0TWFjLm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBMYXllclRy
ZWVIb3N0TWFjOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgW0NB
VHJhbnNhY3Rpb24gc3luY2hyb25pemVdOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RNYWM6OmRl
dmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdENBOjpkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewogICAgIC8vIE90aGVyIGxheWVycyBsZWFybiBv
ZiB0aGUgc2NhbGUgZmFjdG9yIGNoYW5nZSB2aWEgV2ViUGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0
b3IuCiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184438</attachid>
            <date>2013-01-24 01:44:08 -0800</date>
            <delta_ts>2013-01-24 01:57:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105978-20130124184052.patch</filename>
            <type>text/plain</type>
            <size>27646</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWEwMGY5MmNhOGYyYzI4
YjdmZGMyYWEzMmQ3YTMwNmZhYTQyYmRlMC4uMGUzYTMwOWM0YjVkMWE3ZTA1Y2IwZjk0ZmE2MDhi
ZmRkMTZhYjk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc5IEBACiAyMDEzLTAxLTI0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtFRkxdW1F0
XVtXSzJdIFdlIHNob3VsZCBjb25zaWRlciBhIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUg
aW5zdGVhZCBvZiBvdXIgb3duIHNjYWxlIGZhY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTk3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ciBzZW5kcyBhIHBhZ2Ugc2NhbGUgZmFjdG9yIHRvIENvb3JkaW5hdGVkCisgICAgICAgIEdyYXBo
aWNzIFN5c3RlbSByZWdhcmRsZXNzIG9mIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBXZWJDb3Jl
LiBUaGlzIHBhdGNoIG1ha2VzCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIFN5c3RlbSB1
c2UgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUgdG8gbWF0Y2ggb3RoZXIKKyAgICAg
ICAgcG9ydHMuCisKKyAgICAgICAgV2hlbiBpdCBpcyBuZWVkZWQgdG8gY2hhbmdlIGEgcGFnZSBz
Y2FsZSwgUGFnZVZpZXdwb3J0Q29udHJvbGxlciBzZW5kcyB0aGUgc2NhbGUKKyAgICAgICAgdG8g
UGFnZSBpbiBXZWIgUHJvY2VzcyB2aWEgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2UuIFdoZW4gdGhl
IHBhZ2Ugc2NhbGUgaW4KKyAgICAgICAgV2ViQ29yZSBpcyBjaGFuZ2VkLCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIgZ2V0cyBub3RpZmllZCB2aWEKKyAgICAgICAgZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkIGNhbGxiYWNrLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlcyB0aGUg
cGFnZQorICAgICAgICBzY2FsZSBmYWN0b3IgbGlrZSBwcmV2aW91cyBvdXIgb3duIHNjYWxlIGZh
Y3Rvci4KKworICAgICAgICBXZSBzZXQgdHJ1ZSB0byBhcHBseURldmljZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yIGFuZAorICAgICAgICBBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBp
biBTZXR0aW5ncyBsaWtlIGNocm9taXVtLCBiZWNhdXNlCisgICAgICAgIFRpbGVkQmFja2luZ1N0
b3JlIHRoYXQgaXMgYSBiYWNraW5nIHN0b3JlIG9mIGVhY2ggR3JhcGhpY3NMYXllciBhcHBsaWVz
IHRoZQorICAgICAgICBzY2FsZSB0byBvdXIgcmFzdGVyIGdyYXBoaWNzIGVuZ2luZXMgaW5zdGVh
ZCBvZiBhcHBseWluZyB0aGUgc2NhbGUgdG8gdGhlIGxvY2FsCisgICAgICAgIHRyYW5zZm9ybSBv
ZiBlYWNoIHJlbmRlciBvYmplY3QuCisKKyAgICAgICAgVGhhbmsgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4gZm9yIGltcGxlbWVudGluZyB0aGUgYmFzZSBwYXRjaCBvZiB0aGlzIHBhdGNoLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHA6CisgICAgICAgIChRUmF3V2ViVmll
dzo6c2V0U2l6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICAgICBEb2VzIG5vdCByZWNlaXZlIGEgcGFnZVNjYWxl
RmFjdG9yIGFyZ3VtZW50IGJlY2F1c2UKKyAgICAgICAgICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIgc2VuZHMgYSBwYWdlIHNjYWxlIGZhY3RvciB0byBQYWdlLgorICAgICAgICAgICAgSG93ZXZl
ciwgdGhpcyBtZXRob2Qgc3RpbGwgcmVjZWl2ZXMgYSBzY3JvbGwgcG9zaXRpb24gYmVjYXVzZSB3
ZQorICAgICAgICAgICAgZW5hYmxlIGRlbGVnYXRlcyBzY3JvbGxpbmcuCisgICAgICAgICogVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
aDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YVByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRS
ZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRp
ZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OnN5bmNWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyOjphcHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5UG9zaXRpb25BZnRl
clJlbmRlcmluZ0NvbnRlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRM
ZWdhY3lJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudExlZ2FjeUltcGw6OnVw
ZGF0ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGV2aWNlT3JQYWdl
U2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRl
bnRzUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2
aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0VXNlRml4ZWRMYXlvdXQpOgorCisyMDEzLTAxLTI0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtXSzJdIFJl
bmFtZSBmcm9tIGRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgdG8gZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCkgaW4gTGF5ZXJUcmVlSG9zdC4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzgwMgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCAyMDUzMDc5YjBiNDJl
Y2ViODE4MmJkMGE4ZTY2NzI4YzU5OTE5ZTMyLi5hM2E2NTNmZTdjYmYzN2E3ODlmYmQ4MmY5Zjdi
Y2NjMGI5M2I5YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKQEAgLTg0Miw3ICs4NDIsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdM
ZWdhY3lQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogICAgIHdlYlBhZ2VQcm94eS0+ZHJh
d2luZ0FyZWEoKS0+c2V0U2l6ZSh2aWV3cG9ydFNpemUudG9TaXplKCksIEludFNpemUoKSk7CiAg
ICAgLy8gVGhlIGJhY2tpbmcgc3RvcmUgc2NhbGUgZmFjdG9yIHNob3VsZCBhbHJlYWR5IGJlIHNl
dCB0byB0aGUgZGV2aWNlIHBpeGVsIHJhdGlvCiAgICAgLy8gb2YgdGhlIHVuZGVybHlpbmcgd2lu
ZG93LCB0aHVzIHdlIHNldCB0aGUgZWZmZWN0aXZlIHNjYWxlIHRvIDEgaGVyZS4KLSAgICB3ZWJQ
YWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKHZpZXdwb3J0U2l6ZSkpLCAxLCBGbG9hdFBvaW50KCkp
OworICAgIHdlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUodmlld3BvcnRTaXplKSksIEZsb2F0
UG9pbnQoKSk7CiB9CiAKIHFyZWFsIFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlOjp6b29tRmFj
dG9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cmF3L3FyYXd3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3
L3FyYXd3ZWJ2aWV3LmNwcAppbmRleCAyZGQ0NWQwZWZmZTllMGYzZmZiYWQzNjQ5ZDMwZTk1NzZm
YmY5ZGMzLi4zNjFmNzRkYWI4NTFhZDg5OGVkMzlkMjc3YTdhNmY0NzliMjU5NzMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3Bw
CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBRUmF3V2ViVmlldzo6c2V0U2l6ZShjb25zdCBRU2l6
ZSYgc2l6ZSkKICAgICBkLT5tX3NpemUgPSBzaXplOwogCiAgICAgZHJhd2luZ0FyZWEtPnNldFNp
emUoZC0+bV9zaXplLCBXZWJDb3JlOjpJbnRTaXplKCkpOwotICAgIGRyYXdpbmdBcmVhLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwg
ZC0+bV9zaXplKSwgMSAvKnNjYWxlKi8sIFdlYkNvcmU6OkZsb2F0UG9pbnQoKSk7CisgICAgZHJh
d2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVjdChXZWJDb3Jl
OjpJbnRQb2ludCgpLCBkLT5tX3NpemUpLCBXZWJDb3JlOjpGbG9hdFBvaW50KCkpOwogfQogCiBX
S1BhZ2VSZWYgUVJhd1dlYlZpZXc6OnBhZ2VSZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IDg3ZmIxNzE5MDQ0MzFlNDVj
NzBlYzQ0ZjM2NGE2NTI0NjE3Y2RiZTkuLmQyOTY4OGZjMGNkYmYzZDE3OWJjYWNiNDk3MTZjOTVl
MDc1MDhjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAKQEAgLTQxLDcgKzQxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkoRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWFQcm94eSkKICAgICA6IG1fZHJhd2lu
Z0FyZWFQcm94eShkcmF3aW5nQXJlYVByb3h5KQogICAgICwgbV9yZW5kZXJlcihhZG9wdFJlZihu
ZXcgTGF5ZXJUcmVlUmVuZGVyZXIodGhpcykpKQotICAgICwgbV9sYXN0U2VudFNjYWxlKDApCiB7
CiB9CiAKQEAgLTU1LDExICs1NCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk6OnVwZGF0ZVZpZXdwb3J0KCkKICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnVwZGF0ZVZpZXdw
b3J0KCk7CiB9CiAKLWZsb2F0IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZXZpY2VT
Y2FsZUZhY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFn
ZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotfQotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OjpkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlv
bikKIHsKICAgICBtX3JlbmRlcmVyLT5hcHBlbmRVcGRhdGUoZnVuY3Rpb24pOwpAQCAtMTg1LDE5
ICsxNzksMTYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0QW5pbWF0
aW9uc0xvY2tlZChib29sIGxvY2tlZCkKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRy
ZWVSZW5kZXJlcjo6c2V0QW5pbWF0aW9uc0xvY2tlZCwgbV9yZW5kZXJlci5nZXQoKSwgbG9ja2Vk
KSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKICAgICAvLyBJbmZv
cm0gdGhlIHJlbmRlcmVyIHRvIGFkanVzdCB2aWV3cG9ydC1maXhlZCBsYXllcnMuCiAgICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QsIG1fcmVuZGVyZXIuZ2V0KCksIHJlY3QpKTsKIAotICAgIGNvbnN0IGZsb2F0IGVmZmVjdGl2
ZVNjYWxlID0gZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2FsZUZhY3RvcjsKLQotICAgIGlm
IChyZWN0ID09IG1fbGFzdFNlbnRWaXNpYmxlUmVjdCAmJiBlZmZlY3RpdmVTY2FsZSA9PSBtX2xh
c3RTZW50U2NhbGUgJiYgdHJhamVjdG9yeVZlY3RvciA9PSBtX2xhc3RTZW50VHJhamVjdG9yeVZl
Y3RvcikKKyAgICBpZiAocmVjdCA9PSBtX2xhc3RTZW50VmlzaWJsZVJlY3QgJiYgdHJhamVjdG9y
eVZlY3RvciA9PSBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpTZXRWaXNpYmxlQ29udGVudHNSZWN0KHJlY3Qs
IGVmZmVjdGl2ZVNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5w
YWdlKCktPnBhZ2VJRCgpKTsKKyAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlNldFZpc2libGVD
b250ZW50c1JlY3QocmVjdCwgdHJhamVjdG9yeVZlY3RvciksIG1fZHJhd2luZ0FyZWFQcm94eS0+
cGFnZSgpLT5wYWdlSUQoKSk7CiAgICAgbV9sYXN0U2VudFZpc2libGVSZWN0ID0gcmVjdDsKLSAg
ICBtX2xhc3RTZW50U2NhbGUgPSBlZmZlY3RpdmVTY2FsZTsKICAgICBtX2xhc3RTZW50VHJhamVj
dG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4IDk0ZmE0NzZmMDkyYjRkZmRj
OGYzYTM0YTE4ZjFkZjFjMzFkZjM5ODIuLjgxZGFiYTM4YjQ2ZDM1NzdlMjIyNjg5ZDc3YWY5MjRi
YjZiMjUzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVDb21w
b3NpdGluZ0xheWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwogICAgIHZv
aWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lk
IHNldENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIHNl
dFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9y
KTsKKyAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7CiAgICAg
dm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKICAgICB2b2lkIGNyZWF0ZVRp
bGVGb3JMYXllcihDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7CiAgICAgdm9pZCB1cGRh
dGVUaWxlRm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwpAQCAtOTUsMTUg
Kzk1LDEyIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNv
bnN0OwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlv
bjx2b2lkKCk+Jik7CiAKICAgICBEcmF3aW5nQXJlYVByb3h5KiBtX2RyYXdpbmdBcmVhUHJveHk7
CiAgICAgUmVmUHRyPExheWVyVHJlZVJlbmRlcmVyPiBtX3JlbmRlcmVyOwogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7Ci0gICAgZmxvYXQgbV9sYXN0U2VudFNj
YWxlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3I7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+ID4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNlTWFwIG1fc3VyZmFjZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCAxZWIx
ODE5NTFiMGJlYmQwODE1ODdjOWFjYzg0YjdhMjQ1ZTNjNDU5Li5iYWQ2Mzg0ZGU4NmJlMDRmOWYx
Zjc1NjA5N2VmYTg1NzU3MTc5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UmVjdCB2aWV3cG9ydFZpc2libGVSZWN0KCkgY29uc3QgeyByZXR1cm4gY29udGVu
dHNSZWN0KCk7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3QgY29udGVudHNSZWN0KCkg
Y29uc3Q7CiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkqIGNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgLyogdmlzaWJsZUNvbnRlbnRzUmVjdCAqLywgZmxv
YXQgLyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIC8qIHRyYWplY3RvcnlW
ZWN0b3IgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgLyogdmlzaWJsZUNvbnRlbnRzUmVjdCAqLywgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgLyogdHJhamVjdG9yeVZlY3RvciAqLykgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIHsgcmV0dXJuIG1fd2ViUGFn
ZVByb3h5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHlJbXBsLmNwcAppbmRleCA2NWYxYjllYjk0NWM2MTExZTJlZmUzZjM0YjFkODA1MWZkMDBiZWYz
Li4xODM0ZjlkMGEyM2MwYzQyMGJkZmNmYjIxNmRkMDE0YWFmMDBlNDY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKQEAgLTM3Niwx
MCArMzc2LDEwIEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OmRpZFJlY2VpdmVDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2UoQ29yZUlQCiAgICAgICAgIG1fY29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHktPmRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAotdm9pZCBE
cmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9pZCBEcmF3aW5nQXJlYVByb3h5
SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZp
c2libGVDb250ZW50c1JlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlW
ZWN0b3IpCiB7CiAgICAgaWYgKG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpCi0gICAg
ICAgIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHktPnNldFZpc2libGVDb250ZW50c1Jl
Y3QodmlzaWJsZUNvbnRlbnRzUmVjdCwgc2NhbGUsIHRyYWplY3RvcnlWZWN0b3IpOworICAgICAg
ICBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0
KHZpc2libGVDb250ZW50c1JlY3QsIHRyYWplY3RvcnlWZWN0b3IpOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKaW5kZXgg
NmNlZDIwN2I0Y2M2OThiN2QyYTVjM2Y2YTJiN2RhM2NiYmIyMWZjYy4uNGFlNjAyMzFhYTI5MTIz
YjJkNzU2NTg3MjJkNTdjZDM4ZjE5OGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwogICAgIHZvaWQgdXBkYXRl
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNv
bnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3Qs
IGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRy
YWplY3RvcnkpIE9WRVJSSURFOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogI2VuZGlmCiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4
IGY3MWMwM2MwMzNhYmUxYzUyMmU2ZDFmYzBiYTRlMzQ2ZDk1NDU1YjEuLjg3N2UwNzVjMzdkZWI0
NjlkZTQ3MjBiYThmNDRjMjVkMzdiNzYwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUm
IGNvbnRlbnRzU2l6ZSwgY29uc3QgSQogICAgICAgICBGbG9hdFBvaW50IGN1cnJlbnREaXNjcmV0
ZVBvcyA9IHJvdW5kZWRJbnRQb2ludChtX2NvbnRlbnRzUG9zaXRpb24pOwogICAgICAgICBGbG9h
dFBvaW50IHBpeGVsQWxpZ25lZFBvcyA9IHBpeGVsQWxpZ25lZEZsb2F0UG9pbnQoY3VycmVudERp
c2NyZXRlUG9zKTsKICAgICAgICAgbV9jb250ZW50c1Bvc2l0aW9uID0gYm91bmRDb250ZW50c1Bv
c2l0aW9uKHBpeGVsQWxpZ25lZFBvcyk7CisKKyAgICAgICAgLy8gRklYTUUgOiBQYWdlOjpzZXRQ
YWdlU2NhbGVGYWN0b3IgcGVyZm9ybXMgbGF5b3V0IGV2ZW4gaWYgdGhlIHNjYWxlIGlzIG5vdCBj
aGFuZ2VkLgorICAgICAgICBtX3dlYlBhZ2VQcm94eS0+c2NhbGVQYWdlKG1fcGFnZVNjYWxlRmFj
dG9yLCByb3VuZGVkSW50UG9pbnQobV9jb250ZW50c1Bvc2l0aW9uKSk7CiAgICAgfQogCiAgICAg
Ly8gVGhlcmUgbWlnaHQgYmUgcmVuZGVyZWQgZnJhbWVzIG5vdCBjb3ZlcmluZyBvdXIgcmVxdWVz
dGVkIHBvc2l0aW9uIHlldCwgd2FpdCBmb3IgaXQuCkBAIC0yNTgsNyArMjYxLDcgQEAgdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXQKICAgICBpZiAoIW1fcGVuZGluZ1Bvc2l0aW9uQ2hhbmdlKQogICAg
ICAgICBtX2NvbnRlbnRzUG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBpZiAoIW1fcGVuZGluZ1Nj
YWxlQ2hhbmdlKQotICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOworICAgICAgICBh
cHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhzY2FsZSk7CiAKICAgICBzeW5jVmlzaWJs
ZUNvbnRlbnRzKHRyYWplY3RvcnlWZWN0b3IpOwogfQpAQCAtMjcxLDcgKzI3NCw3IEBAIHZvaWQg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6c3luY1Zpc2libGVDb250ZW50cyhjb25zdCBGbG9hdFBv
aW50JiB0cmFqZWN0b3J5VmVjCiAKICAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdChi
b3VuZENvbnRlbnRzUG9zaXRpb24obV9jb250ZW50c1Bvc2l0aW9uKSwgdmlzaWJsZUNvbnRlbnRz
U2l6ZSgpKTsKICAgICB2aXNpYmxlQ29udGVudHNSZWN0LmludGVyc2VjdChGbG9hdFJlY3QoRmxv
YXRQb2ludDo6emVybygpLCBtX2NvbnRlbnRzU2l6ZSkpOwotICAgIGRyYXdpbmdBcmVhLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3QsIG1fcGFnZVNjYWxlRmFjdG9y
LCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdCh2aXNpYmxlQ29udGVudHNSZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKIAogICAgIG1fY2xp
ZW50LT5kaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKIH0KQEAgLTMyNiw2ICszMjksOSBAQCB2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnJlc3VtZUNvbnRlbnQoKQogCiB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0
IHNjYWxlKQogeworICAgIGlmIChtX3BhZ2VTY2FsZUZhY3RvciA9PSBzY2FsZSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSBzY2FsZTsKICAgICBtX3BlbmRpbmdT
Y2FsZUNoYW5nZSA9IHRydWU7CiAgICAgc3luY1Zpc2libGVDb250ZW50cygpOwpAQCAtMzMzLDYg
KzMzOSw5IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVyUmVu
ZGVyaW5nQ29udGVudHMoZmxvYXQgc2NhbGUpCiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6YXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29udGVudHMoY29uc3QgRmxvYXRQb2ludCYg
cG9zKQogeworICAgIGlmIChtX2NvbnRlbnRzUG9zaXRpb24gPT0gcG9zKQorICAgICAgICByZXR1
cm47CisKICAgICBtX2NvbnRlbnRzUG9zaXRpb24gPSBwb3M7CiAgICAgbV9wZW5kaW5nUG9zaXRp
b25DaGFuZ2UgPSB0cnVlOwogICAgIHN5bmNWaXNpYmxlQ29udGVudHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKaW5k
ZXggYTA4ZmU5NmRiY2Q4OGE5MGIyM2ZiNDdiNjg3NTZhMTlhZWExYjVkNS4uYTA3Zjg1MDY2NjQ5
ZTM1Mjk4MDQ1NmViMjFkNzE1ODBiNTc2M2JmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgdm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lkIFBhZ2VD
bGllbnRMZWdhY3lJbXBsOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogewogI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQotICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChtX3ZpZXdJbXBsLT5w
YWdlUG9zaXRpb24oKSksIG1fdmlld0ltcGwtPnNpemUoKSksIG1fdmlld0ltcGwtPnBhZ2VTY2Fs
ZUZhY3RvcigpLCBGbG9hdFBvaW50KCkpOworICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2lu
Z0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRQb2ludCht
X3ZpZXdJbXBsLT5wYWdlUG9zaXRpb24oKSksIG1fdmlld0ltcGwtPnNpemUoKSksIEZsb2F0UG9p
bnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQw
YTQ4NDUyYTU1NTgyZjU3YmQzOS4uOGZmNTEwZDc4ZTYzYzcyODcwZDAwZDFkYmMxMTU3MWE1NjM5
Yjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMjIsNyArMTIyLDYgQEAgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xp
ZW50KQogICAgICwgbV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQoZmFsc2UpCiAgICAg
LCBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX2Nvb3JkaW5h
dG9yKDApCi0gICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlUHRyKDApCiAgICAgLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIoMCkKICAgICAsIG1fYW5p
bWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1h
dGlvblN0YXJ0ZWRUaW1lckZpcmVkKQpAQCAtNjU2LDE2ICs2NTUsMTUgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3Io
Y29uc3QgRmxvYXQKICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCi12
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2Fs
ZSkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKQogewotICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwogICAgIGlmIChzaG91
bGRIYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1
c3RtZW50ID0gdHJ1ZTsKIH0KIAogZmxvYXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjplZmZl
Y3RpdmVDb250ZW50c1NjYWxlKCkKIHsKLSAgICByZXR1cm4gc2VsZk9yQW5jZXN0b3JIYXZlTm9u
QWZmaW5lVHJhbnNmb3JtcygpID8gMSA6IG1fY29udGVudHNTY2FsZTsKKyAgICByZXR1cm4gc2Vs
Zk9yQW5jZXN0b3JIYXZlTm9uQWZmaW5lVHJhbnNmb3JtcygpID8gMSA6IGRldmljZVNjYWxlRmFj
dG9yKCkgKiBwYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2YzQzNTg1YzcwYzhlMDMw
NjVlNGRjYWEyN2U0ZjBkYTJmYTM2OTQ2Li40Yzc2NmI0YWY4NDRiMTkwMzk5MDFhMzYyZjFmMmNk
NmNiNWJkZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMTE5LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpIE9WRVJSSURFOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTEzMyw3ICsxMzQsNiBA
QCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCBjb21wdXRlUG9zaXRpb25SZWxhdGl2ZVRvQmFzZSgp
OwogICAgIHZvaWQgY29tcHV0ZVBpeGVsQWxpZ25tZW50KEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBG
bG9hdFNpemUmLCBGbG9hdFBvaW50M0QmIGFuY2hvclBvaW50LCBGbG9hdFNpemUmIGFsaWdubWVu
dE9mZnNldCk7CiAKLSAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwogICAgIHZvaWQg
c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7
CiAKICAgICB2b2lkIHNldFJvb3RMYXllcihib29sKTsKQEAgLTIzNSw3ICsyMzUsNiBAQCBwcml2
YXRlOgogICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3Jk
aW5hdG9yOwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3Jl
OwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9wcmV2aW91c0JhY2tpbmdTdG9yZTsK
LSAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1fY29tcG9z
aXRlZEltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggMGZjMWFmMmZkNGY0NzQxOGY1NjM3MzhjMmY1YzY2OGQ3ZGQ5Zjhh
OS4uNDAzOTUwMzdiNmU5MTc3YjQwY2Q2ODhkNDdjNmM1NzBjOTY5ZTI2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
CkBAIC04Nyw3ICs4Nyw2IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0KFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgLCBtX2lzRmx1c2hpbmdMYXllckNo
YW5nZXMoZmFsc2UpCiAgICAgLCBtX3dhaXRpbmdGb3JVSVByb2Nlc3ModHJ1ZSkKICAgICAsIG1f
aXNTdXNwZW5kZWQoZmFsc2UpCi0gICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICAsIG1fc2hv
dWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlKHRydWUpCiAgICAgLCBtX3Nob3VsZFN5bmNGcmFt
ZShmYWxzZSkKICAgICAsIG1fZGlkSW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVyKGZhbHNl
KQpAQCAtNjc3LDEyICs2NzYsMjEgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAgICBsYXll
ci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXll
cik7CiAgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwotICAgIGxheWVy
LT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CiAgICAgbGF5ZXItPnNldE5lZWRz
VmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiAgICAg
cmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIAorZmxvYXQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKworZmxvYXQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpwYWdlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UtPnBhZ2VT
Y2FsZUZhY3RvcigpOworfQorCiBib29sIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZygpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03NDksMjQgKzc1NywxOCBA
QCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TGF5ZXJBbmltYXRpb25zKENvb3Jk
aW5hdGVkTGF5ZXJJRCBsYXllcklELCBjbwogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldExheWVyQW5pbWF0aW9ucyhsYXllcklE
LCBhY3RpdmVBbmltYXRpb25zKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgc2Nh
bGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgYm9vbCBjb250
ZW50c1JlY3REaWRDaGFuZ2UgPSByZWN0ICE9IG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsKLSAgICBi
b29sIGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UgPSBzY2FsZSAhPSBtX2NvbnRlbnRzU2NhbGU7Ci0K
ICAgICAvLyBBIHplcm8gdHJhamVjdG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0aWxlcyBhbGwg
YXJvdW5kIHRoZSB2aWV3cG9ydCBhcmUgcmVxdWVzdGVkLgogICAgIHRvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZpc2libGVD
b250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CiAKLSAgICBpZiAo
Y29udGVudHNSZWN0RGlkQ2hhbmdlIHx8IGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpIHsKKyAgICBi
b29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVudHNSZWN0
OworICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKICAgICAgICAgbV92aXNpYmxlQ29u
dGVudHNSZWN0ID0gcmVjdDsKLSAgICAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7CiAKICAg
ICAgICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0
b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hTZXQ8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdp
c3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYg
KGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpCi0gICAgICAgICAgICAgICAgKCppdCktPnNldENvbnRl
bnRzU2NhbGUoc2NhbGUpOwotICAgICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkK
LSAgICAgICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsK
KyAgICAgICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC03ODEsNiArNzgzLDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvCiAgICAgICAgIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlID0gdHJ1ZTsKIH0K
IAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCgpCit7CisgICAgbV9yb290TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikKKyAgICAgICAg
bV9wYWdlT3ZlcmxheUxheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKK30K
KwogR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhp
Y3NMYXllckZhY3RvcnkoKQogewogICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCAwMTAyMmIy
Y2M0ZTk4NDg4YTRkZjc4N2VhMzY5MGI3MmFjY2ZmNzI5Li5lZmRkNmY3ZjA5YWRlMTM4MjExYWU3
NWI0ZTNiZTI2OGJmMTk5Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VSZW5kZXJpbmcoKSB7IG1faXNTdXNwZW5kZWQgPSB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVJlbmRlcmluZygpIHsgbV9pc1N1c3BlbmRlZCA9
IGZhbHNlOyBzY2hlZHVsZUxheWVyRmx1c2goKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VT
Y2FsZUZhY3RvckRpZENoYW5nZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VT
Y2FsZUZhY3RvckNoYW5nZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6
OkltYWdlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hh
bmdlcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsg
fQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJl
Y3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJO
ZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBP
VkVSUklERTsKIApAQCAtMTIzLDYgKzEyMyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRv
dWJsZSB0aW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYs
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwUmVjdCk7CisgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICAvLyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0b3IK
ICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQpIE9WRVJSSURFOwpAQCAtMTk0LDcgKzE5Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3dhaXRpbmdGb3JVSVByb2Nlc3M7CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkOwogICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCBtX3Zpc2libGVDb250ZW50c1JlY3Q7Ci0gICAgZmxvYXQgbV9jb250ZW50
c1NjYWxlOwogICAgIGJvb2wgbV9zaG91bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGU7CiAKICAg
ICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNz
YWdlcy5pbgppbmRleCAyYTEwNTllZThiYWRiMDM0ZjI0MTBjMGJlNTNkODM2ZTY2NWJjZmU0Li42
NjcxYjMyN2ZlYzZlMTRlMDc0MjY3NmQ5NDkwYjM4NGZmMWY5YWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3QgTGVnYWN5UmVjZWl2
ZXIgewotICAgIFNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3Rv
cnlWZWN0b3J5KQorICAgIFNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50c1JlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQgdHJhamVjdG9yeVZlY3Rv
cnkpCiAgICAgUmVuZGVyTmV4dEZyYW1lKCkKICAgICBQdXJnZUJhY2tpbmdTdG9yZXMoKQogI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5Zjk1ZDQxNDQ0MDVjMTAwMzAwY2NkN2Y2
NTFjZGQ4YzIxZTA1ODBjLi5hZjg1ZTczODNmOTkxNmQ1MmUxOGJmZDAwMGViNjNhZjZjYWUyZjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0xMjcwLDYgKzEyNzAsOCBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wg
Zml4ZWQpCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIG1fcGFnZS0+c2V0dGlu
Z3MoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkKGZp
eGVkKTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3Rh
Y2tpbmdDb250ZXh0KGZpeGVkKTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoZml4ZWQpOworICAgIG1fcGFnZS0+c2V0dGluZ3Mo
KS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoZml4ZWQpOwogI2VuZGlmCiAK
ICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgJiYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184445</attachid>
            <date>2013-01-24 01:58:02 -0800</date>
            <delta_ts>2013-01-30 02:47:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105978-20130124185447.patch</filename>
            <type>text/plain</type>
            <size>27650</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGFlYmYyODcwMTM3MjZh
MGJiOTIxNTQzY2E0NWQ3NDgzYWQ2OGRjOC4uMzY5ZTQ0MmQyM2M0NWE5MTI3MWY0NjdhNzNlMzEw
ZjgwMTI0OGEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc5IEBACiAyMDEzLTAxLTI0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtFRkxdW1F0
XVtXSzJdIFdlIHNob3VsZCBjb25zaWRlciBhIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUg
aW5zdGVhZCBvZiBvdXIgb3duIHNjYWxlIGZhY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTk3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ciBzZW5kcyBhIHBhZ2Ugc2NhbGUgZmFjdG9yIHRvIENvb3JkaW5hdGVkCisgICAgICAgIEdyYXBo
aWNzIFN5c3RlbSByZWdhcmRsZXNzIG9mIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBXZWJDb3Jl
LiBUaGlzIHBhdGNoIG1ha2VzCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIFN5c3RlbSB1
c2UgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUgdG8gbWF0Y2ggb3RoZXIKKyAgICAg
ICAgcG9ydHMuCisKKyAgICAgICAgV2hlbiBpdCBpcyBuZWVkZWQgdG8gY2hhbmdlIGEgcGFnZSBz
Y2FsZSwgUGFnZVZpZXdwb3J0Q29udHJvbGxlciBzZW5kcyB0aGUgc2NhbGUKKyAgICAgICAgdG8g
UGFnZSBpbiBXZWIgUHJvY2VzcyB2aWEgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2UuIFdoZW4gdGhl
IHBhZ2Ugc2NhbGUgaW4KKyAgICAgICAgV2ViQ29yZSBpcyBjaGFuZ2VkLCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIgZ2V0cyBub3RpZmllZCB2aWEKKyAgICAgICAgZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkIGNhbGxiYWNrLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlcyB0aGUg
cGFnZQorICAgICAgICBzY2FsZSBmYWN0b3IgbGlrZSBwcmV2aW91cyBvdXIgb3duIHNjYWxlIGZh
Y3Rvci4KKworICAgICAgICBXZSBzZXQgdHJ1ZSB0byBhcHBseURldmljZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yIGFuZAorICAgICAgICBBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBp
biBTZXR0aW5ncyBsaWtlIGNocm9taXVtLCBiZWNhdXNlCisgICAgICAgIFRpbGVkQmFja2luZ1N0
b3JlIHRoYXQgaXMgYSBiYWNraW5nIHN0b3JlIG9mIGVhY2ggR3JhcGhpY3NMYXllciBhcHBsaWVz
IHRoZQorICAgICAgICBzY2FsZSB0byBvdXIgcmFzdGVyIGdyYXBoaWNzIGVuZ2luZXMgaW5zdGVh
ZCBvZiBhcHBseWluZyB0aGUgc2NhbGUgdG8gdGhlIGxvY2FsCisgICAgICAgIHRyYW5zZm9ybSBv
ZiBlYWNoIHJlbmRlciBvYmplY3QuCisKKyAgICAgICAgVGhhbmsgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4gZm9yIGltcGxlbWVudGluZyB0aGUgYmFzZSBwYXRjaCBvZiB0aGlzIHBhdGNoLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHA6CisgICAgICAgIChRUmF3V2ViVmll
dzo6c2V0U2l6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICAgICBEb2VzIG5vdCByZWNlaXZlIGEgcGFnZVNjYWxl
RmFjdG9yIGFyZ3VtZW50IGJlY2F1c2UKKyAgICAgICAgICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIgc2VuZHMgYSBwYWdlIHNjYWxlIGZhY3RvciB0byBQYWdlLgorICAgICAgICAgICAgSG93ZXZl
ciwgdGhpcyBtZXRob2Qgc3RpbGwgcmVjZWl2ZXMgYSBzY3JvbGwgcG9zaXRpb24gYmVjYXVzZSB3
ZQorICAgICAgICAgICAgZW5hYmxlIGRlbGVnYXRlcyBzY3JvbGxpbmcuCisgICAgICAgICogVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
aDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YVByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRS
ZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRp
ZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OnN5bmNWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyOjphcHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5UG9zaXRpb25BZnRl
clJlbmRlcmluZ0NvbnRlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRM
ZWdhY3lJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudExlZ2FjeUltcGw6OnVw
ZGF0ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGV2aWNlT3JQYWdl
U2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRl
bnRzUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2
aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0VXNlRml4ZWRMYXlvdXQpOgorCisyMDEzLTAxLTI0ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtXSzJdIFJl
bmFtZSBmcm9tIGRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgdG8gZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCkgaW4gTGF5ZXJUcmVlSG9zdC4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzgwMgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCAyMDUzMDc5YjBiNDJl
Y2ViODE4MmJkMGE4ZTY2NzI4YzU5OTE5ZTMyLi5hM2E2NTNmZTdjYmYzN2E3ODlmYmQ4MmY5Zjdi
Y2NjMGI5M2I5YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKQEAgLTg0Miw3ICs4NDIsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdM
ZWdhY3lQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogICAgIHdlYlBhZ2VQcm94eS0+ZHJh
d2luZ0FyZWEoKS0+c2V0U2l6ZSh2aWV3cG9ydFNpemUudG9TaXplKCksIEludFNpemUoKSk7CiAg
ICAgLy8gVGhlIGJhY2tpbmcgc3RvcmUgc2NhbGUgZmFjdG9yIHNob3VsZCBhbHJlYWR5IGJlIHNl
dCB0byB0aGUgZGV2aWNlIHBpeGVsIHJhdGlvCiAgICAgLy8gb2YgdGhlIHVuZGVybHlpbmcgd2lu
ZG93LCB0aHVzIHdlIHNldCB0aGUgZWZmZWN0aXZlIHNjYWxlIHRvIDEgaGVyZS4KLSAgICB3ZWJQ
YWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKHZpZXdwb3J0U2l6ZSkpLCAxLCBGbG9hdFBvaW50KCkp
OworICAgIHdlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUodmlld3BvcnRTaXplKSksIEZsb2F0
UG9pbnQoKSk7CiB9CiAKIHFyZWFsIFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlOjp6b29tRmFj
dG9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cmF3L3FyYXd3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3
L3FyYXd3ZWJ2aWV3LmNwcAppbmRleCAyZGQ0NWQwZWZmZTllMGYzZmZiYWQzNjQ5ZDMwZTk1NzZm
YmY5ZGMzLi4zNjFmNzRkYWI4NTFhZDg5OGVkMzlkMjc3YTdhNmY0NzliMjU5NzMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3Bw
CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBRUmF3V2ViVmlldzo6c2V0U2l6ZShjb25zdCBRU2l6
ZSYgc2l6ZSkKICAgICBkLT5tX3NpemUgPSBzaXplOwogCiAgICAgZHJhd2luZ0FyZWEtPnNldFNp
emUoZC0+bV9zaXplLCBXZWJDb3JlOjpJbnRTaXplKCkpOwotICAgIGRyYXdpbmdBcmVhLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwg
ZC0+bV9zaXplKSwgMSAvKnNjYWxlKi8sIFdlYkNvcmU6OkZsb2F0UG9pbnQoKSk7CisgICAgZHJh
d2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVjdChXZWJDb3Jl
OjpJbnRQb2ludCgpLCBkLT5tX3NpemUpLCBXZWJDb3JlOjpGbG9hdFBvaW50KCkpOwogfQogCiBX
S1BhZ2VSZWYgUVJhd1dlYlZpZXc6OnBhZ2VSZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IDg3ZmIxNzE5MDQ0MzFlNDVj
NzBlYzQ0ZjM2NGE2NTI0NjE3Y2RiZTkuLmQyOTY4OGZjMGNkYmYzZDE3OWJjYWNiNDk3MTZjOTVl
MDc1MDhjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAKQEAgLTQxLDcgKzQxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkoRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWFQcm94eSkKICAgICA6IG1fZHJhd2lu
Z0FyZWFQcm94eShkcmF3aW5nQXJlYVByb3h5KQogICAgICwgbV9yZW5kZXJlcihhZG9wdFJlZihu
ZXcgTGF5ZXJUcmVlUmVuZGVyZXIodGhpcykpKQotICAgICwgbV9sYXN0U2VudFNjYWxlKDApCiB7
CiB9CiAKQEAgLTU1LDExICs1NCw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk6OnVwZGF0ZVZpZXdwb3J0KCkKICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnVwZGF0ZVZpZXdw
b3J0KCk7CiB9CiAKLWZsb2F0IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZXZpY2VT
Y2FsZUZhY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFn
ZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotfQotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OjpkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlv
bikKIHsKICAgICBtX3JlbmRlcmVyLT5hcHBlbmRVcGRhdGUoZnVuY3Rpb24pOwpAQCAtMTg1LDE5
ICsxNzksMTYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0QW5pbWF0
aW9uc0xvY2tlZChib29sIGxvY2tlZCkKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRy
ZWVSZW5kZXJlcjo6c2V0QW5pbWF0aW9uc0xvY2tlZCwgbV9yZW5kZXJlci5nZXQoKSwgbG9ja2Vk
KSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBwYWdlU2NhbGVGYWN0b3Is
IGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKICAgICAvLyBJbmZv
cm0gdGhlIHJlbmRlcmVyIHRvIGFkanVzdCB2aWV3cG9ydC1maXhlZCBsYXllcnMuCiAgICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QsIG1fcmVuZGVyZXIuZ2V0KCksIHJlY3QpKTsKIAotICAgIGNvbnN0IGZsb2F0IGVmZmVjdGl2
ZVNjYWxlID0gZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2FsZUZhY3RvcjsKLQotICAgIGlm
IChyZWN0ID09IG1fbGFzdFNlbnRWaXNpYmxlUmVjdCAmJiBlZmZlY3RpdmVTY2FsZSA9PSBtX2xh
c3RTZW50U2NhbGUgJiYgdHJhamVjdG9yeVZlY3RvciA9PSBtX2xhc3RTZW50VHJhamVjdG9yeVZl
Y3RvcikKKyAgICBpZiAocmVjdCA9PSBtX2xhc3RTZW50VmlzaWJsZVJlY3QgJiYgdHJhamVjdG9y
eVZlY3RvciA9PSBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpTZXRWaXNpYmxlQ29udGVudHNSZWN0KHJlY3Qs
IGVmZmVjdGl2ZVNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5w
YWdlKCktPnBhZ2VJRCgpKTsKKyAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlNldFZpc2libGVD
b250ZW50c1JlY3QocmVjdCwgdHJhamVjdG9yeVZlY3RvciksIG1fZHJhd2luZ0FyZWFQcm94eS0+
cGFnZSgpLT5wYWdlSUQoKSk7CiAgICAgbV9sYXN0U2VudFZpc2libGVSZWN0ID0gcmVjdDsKLSAg
ICBtX2xhc3RTZW50U2NhbGUgPSBlZmZlY3RpdmVTY2FsZTsKICAgICBtX2xhc3RTZW50VHJhamVj
dG9yeVZlY3RvciA9IHRyYWplY3RvcnlWZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4IDk0ZmE0NzZmMDkyYjRkZmRj
OGYzYTM0YTE4ZjFkZjFjMzFkZjM5ODIuLjgxZGFiYTM4YjQ2ZDM1NzdlMjIyNjg5ZDc3YWY5MjRi
YjZiMjUzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVDb21w
b3NpdGluZ0xheWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwogICAgIHZv
aWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAgICB2b2lk
IHNldENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIHNl
dFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9y
KTsKKyAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7CiAgICAg
dm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKICAgICB2b2lkIGNyZWF0ZVRp
bGVGb3JMYXllcihDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7CiAgICAgdm9pZCB1cGRh
dGVUaWxlRm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwpAQCAtOTUsMTUg
Kzk1LDEyIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNv
bnN0OwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlv
bjx2b2lkKCk+Jik7CiAKICAgICBEcmF3aW5nQXJlYVByb3h5KiBtX2RyYXdpbmdBcmVhUHJveHk7
CiAgICAgUmVmUHRyPExheWVyVHJlZVJlbmRlcmVyPiBtX3JlbmRlcmVyOwogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7Ci0gICAgZmxvYXQgbV9sYXN0U2VudFNj
YWxlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3I7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+ID4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNlTWFwIG1fc3VyZmFjZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCAxZWIx
ODE5NTFiMGJlYmQwODE1ODdjOWFjYzg0YjdhMjQ1ZTNjNDU5Li5iYWQ2Mzg0ZGU4NmJlMDRmOWYx
Zjc1NjA5N2VmYTg1NzU3MTc5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UmVjdCB2aWV3cG9ydFZpc2libGVSZWN0KCkgY29uc3QgeyByZXR1cm4gY29udGVu
dHNSZWN0KCk7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3QgY29udGVudHNSZWN0KCkg
Y29uc3Q7CiAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkqIGNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgLyogdmlzaWJsZUNvbnRlbnRzUmVjdCAqLywgZmxv
YXQgLyogc2NhbGUgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIC8qIHRyYWplY3RvcnlW
ZWN0b3IgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgLyogdmlzaWJsZUNvbnRlbnRzUmVjdCAqLywgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgLyogdHJhamVjdG9yeVZlY3RvciAqLykgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKTsKIAogICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIHsgcmV0dXJuIG1fd2ViUGFn
ZVByb3h5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHlJbXBsLmNwcAppbmRleCA2NWYxYjllYjk0NWM2MTExZTJlZmUzZjM0YjFkODA1MWZkMDBiZWYz
Li4xODM0ZjlkMGEyM2MwYzQyMGJkZmNmYjIxNmRkMDE0YWFmMDBlNDY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKQEAgLTM3Niwx
MCArMzc2LDEwIEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OmRpZFJlY2VpdmVDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2UoQ29yZUlQCiAgICAgICAgIG1fY29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHktPmRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIAotdm9pZCBE
cmF3aW5nQXJlYVByb3h5SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9pZCBEcmF3aW5nQXJlYVByb3h5
SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZp
c2libGVDb250ZW50c1JlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlW
ZWN0b3IpCiB7CiAgICAgaWYgKG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpCi0gICAg
ICAgIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHktPnNldFZpc2libGVDb250ZW50c1Jl
Y3QodmlzaWJsZUNvbnRlbnRzUmVjdCwgc2NhbGUsIHRyYWplY3RvcnlWZWN0b3IpOworICAgICAg
ICBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0
KHZpc2libGVDb250ZW50c1JlY3QsIHRyYWplY3RvcnlWZWN0b3IpOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKaW5kZXgg
NmNlZDIwN2I0Y2M2OThiN2QyYTVjM2Y2YTJiN2RhM2NiYmIyMWZjYy4uNGFlNjAyMzFhYTI5MTIz
YjJkNzU2NTg3MjJkNTdjZDM4ZjE5OGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwogICAgIHZvaWQgdXBkYXRl
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNv
bnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3Qs
IGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRy
YWplY3RvcnkpIE9WRVJSSURFOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogI2VuZGlmCiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4
IGY3MWMwM2MwMzNhYmUxYzUyMmU2ZDFmYzBiYTRlMzQ2ZDk1NDU1YjEuLjg3N2UwNzVjMzdkZWI0
NjlkZTQ3MjBiYThmNDRjMjVkMzdiNzYwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAgLTE5Nyw2ICsxOTcsOSBAQCB2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUm
IGNvbnRlbnRzU2l6ZSwgY29uc3QgSQogICAgICAgICBGbG9hdFBvaW50IGN1cnJlbnREaXNjcmV0
ZVBvcyA9IHJvdW5kZWRJbnRQb2ludChtX2NvbnRlbnRzUG9zaXRpb24pOwogICAgICAgICBGbG9h
dFBvaW50IHBpeGVsQWxpZ25lZFBvcyA9IHBpeGVsQWxpZ25lZEZsb2F0UG9pbnQoY3VycmVudERp
c2NyZXRlUG9zKTsKICAgICAgICAgbV9jb250ZW50c1Bvc2l0aW9uID0gYm91bmRDb250ZW50c1Bv
c2l0aW9uKHBpeGVsQWxpZ25lZFBvcyk7CisKKyAgICAgICAgLy8gRklYTUUgOiBQYWdlOjpzZXRQ
YWdlU2NhbGVGYWN0b3IgcGVyZm9ybXMgbGF5b3V0IGV2ZW4gaWYgdGhlIHNjYWxlIGlzIG5vdCBj
aGFuZ2VkLgorICAgICAgICBtX3dlYlBhZ2VQcm94eS0+c2NhbGVQYWdlKG1fcGFnZVNjYWxlRmFj
dG9yLCByb3VuZGVkSW50UG9pbnQobV9jb250ZW50c1Bvc2l0aW9uKSk7CiAgICAgfQogCiAgICAg
Ly8gVGhlcmUgbWlnaHQgYmUgcmVuZGVyZWQgZnJhbWVzIG5vdCBjb3ZlcmluZyBvdXIgcmVxdWVz
dGVkIHBvc2l0aW9uIHlldCwgd2FpdCBmb3IgaXQuCkBAIC0yNTgsNyArMjYxLDcgQEAgdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXQKICAgICBpZiAoIW1fcGVuZGluZ1Bvc2l0aW9uQ2hhbmdlKQogICAg
ICAgICBtX2NvbnRlbnRzUG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBpZiAoIW1fcGVuZGluZ1Nj
YWxlQ2hhbmdlKQotICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOworICAgICAgICBh
cHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhzY2FsZSk7CiAKICAgICBzeW5jVmlzaWJs
ZUNvbnRlbnRzKHRyYWplY3RvcnlWZWN0b3IpOwogfQpAQCAtMjcxLDcgKzI3NCw3IEBAIHZvaWQg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6c3luY1Zpc2libGVDb250ZW50cyhjb25zdCBGbG9hdFBv
aW50JiB0cmFqZWN0b3J5VmVjCiAKICAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdChi
b3VuZENvbnRlbnRzUG9zaXRpb24obV9jb250ZW50c1Bvc2l0aW9uKSwgdmlzaWJsZUNvbnRlbnRz
U2l6ZSgpKTsKICAgICB2aXNpYmxlQ29udGVudHNSZWN0LmludGVyc2VjdChGbG9hdFJlY3QoRmxv
YXRQb2ludDo6emVybygpLCBtX2NvbnRlbnRzU2l6ZSkpOwotICAgIGRyYXdpbmdBcmVhLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3QsIG1fcGFnZVNjYWxlRmFjdG9y
LCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdCh2aXNpYmxlQ29udGVudHNSZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKIAogICAgIG1fY2xp
ZW50LT5kaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKIH0KQEAgLTMyNiw2ICszMjksOSBAQCB2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnJlc3VtZUNvbnRlbnQoKQogCiB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0
IHNjYWxlKQogeworICAgIGlmIChtX3BhZ2VTY2FsZUZhY3RvciA9PSBzY2FsZSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSBzY2FsZTsKICAgICBtX3BlbmRpbmdT
Y2FsZUNoYW5nZSA9IHRydWU7CiAgICAgc3luY1Zpc2libGVDb250ZW50cygpOwpAQCAtMzMzLDYg
KzMzOSw5IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVyUmVu
ZGVyaW5nQ29udGVudHMoZmxvYXQgc2NhbGUpCiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6YXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29udGVudHMoY29uc3QgRmxvYXRQb2ludCYg
cG9zKQogeworICAgIGlmIChtX2NvbnRlbnRzUG9zaXRpb24gPT0gcG9zKQorICAgICAgICByZXR1
cm47CisKICAgICBtX2NvbnRlbnRzUG9zaXRpb24gPSBwb3M7CiAgICAgbV9wZW5kaW5nUG9zaXRp
b25DaGFuZ2UgPSB0cnVlOwogICAgIHN5bmNWaXNpYmxlQ29udGVudHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKaW5k
ZXggYTA4ZmU5NmRiY2Q4OGE5MGIyM2ZiNDdiNjg3NTZhMTlhZWExYjVkNS4uYTA3Zjg1MDY2NjQ5
ZTM1Mjk4MDQ1NmViMjFkNzE1ODBiNTc2M2JmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgdm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lkIFBhZ2VD
bGllbnRMZWdhY3lJbXBsOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogewogI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQotICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChtX3ZpZXdJbXBsLT5w
YWdlUG9zaXRpb24oKSksIG1fdmlld0ltcGwtPnNpemUoKSksIG1fdmlld0ltcGwtPnBhZ2VTY2Fs
ZUZhY3RvcigpLCBGbG9hdFBvaW50KCkpOworICAgIG1fdmlld0ltcGwtPnBhZ2UoKS0+ZHJhd2lu
Z0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRQb2ludCht
X3ZpZXdJbXBsLT5wYWdlUG9zaXRpb24oKSksIG1fdmlld0ltcGwtPnNpemUoKSksIEZsb2F0UG9p
bnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQw
YTQ4NDUyYTU1NTgyZjU3YmQzOS4uOGZmNTEwZDc4ZTYzYzcyODcwZDAwZDFkYmMxMTU3MWE1NjM5
Yjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMjIsNyArMTIyLDYgQEAgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xp
ZW50KQogICAgICwgbV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQoZmFsc2UpCiAgICAg
LCBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBtX2Nvb3JkaW5h
dG9yKDApCi0gICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlUHRyKDApCiAgICAgLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIoMCkKICAgICAsIG1fYW5p
bWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1h
dGlvblN0YXJ0ZWRUaW1lckZpcmVkKQpAQCAtNjU2LDE2ICs2NTUsMTUgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3Io
Y29uc3QgRmxvYXQKICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogfQogCi12
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2Fs
ZSkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKQogewotICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwogICAgIGlmIChzaG91
bGRIYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzU2NhbGVBZGp1
c3RtZW50ID0gdHJ1ZTsKIH0KIAogZmxvYXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjplZmZl
Y3RpdmVDb250ZW50c1NjYWxlKCkKIHsKLSAgICByZXR1cm4gc2VsZk9yQW5jZXN0b3JIYXZlTm9u
QWZmaW5lVHJhbnNmb3JtcygpID8gMSA6IG1fY29udGVudHNTY2FsZTsKKyAgICByZXR1cm4gc2Vs
Zk9yQW5jZXN0b3JIYXZlTm9uQWZmaW5lVHJhbnNmb3JtcygpID8gMSA6IGRldmljZVNjYWxlRmFj
dG9yKCkgKiBwYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2YzQzNTg1YzcwYzhlMDMw
NjVlNGRjYWEyN2U0ZjBkYTJmYTM2OTQ2Li40Yzc2NmI0YWY4NDRiMTkwMzk5MDFhMzYyZjFmMmNk
NmNiNWJkZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMTE5LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25s
eSgpIE9WRVJSSURFOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTEzMyw3ICsxMzQsNiBA
QCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCBjb21wdXRlUG9zaXRpb25SZWxhdGl2ZVRvQmFzZSgp
OwogICAgIHZvaWQgY29tcHV0ZVBpeGVsQWxpZ25tZW50KEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBG
bG9hdFNpemUmLCBGbG9hdFBvaW50M0QmIGFuY2hvclBvaW50LCBGbG9hdFNpemUmIGFsaWdubWVu
dE9mZnNldCk7CiAKLSAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwogICAgIHZvaWQg
c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7
CiAKICAgICB2b2lkIHNldFJvb3RMYXllcihib29sKTsKQEAgLTIzNSw3ICsyMzUsNiBAQCBwcml2
YXRlOgogICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3Jk
aW5hdG9yOwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3Jl
OwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9wcmV2aW91c0JhY2tpbmdTdG9yZTsK
LSAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1fY29tcG9z
aXRlZEltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggMGZjMWFmMmZkNGY0NzQxOGY1NjM3MzhjMmY1YzY2OGQ3ZGQ5Zjhh
OS4uNDAzOTUwMzdiNmU5MTc3YjQwY2Q2ODhkNDdjNmM1NzBjOTY5ZTI2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
CkBAIC04Nyw3ICs4Nyw2IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0KFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgLCBtX2lzRmx1c2hpbmdMYXllckNo
YW5nZXMoZmFsc2UpCiAgICAgLCBtX3dhaXRpbmdGb3JVSVByb2Nlc3ModHJ1ZSkKICAgICAsIG1f
aXNTdXNwZW5kZWQoZmFsc2UpCi0gICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICAsIG1fc2hv
dWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlKHRydWUpCiAgICAgLCBtX3Nob3VsZFN5bmNGcmFt
ZShmYWxzZSkKICAgICAsIG1fZGlkSW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVyKGZhbHNl
KQpAQCAtNjc3LDEyICs2NzYsMjEgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAgICBsYXll
ci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXll
cik7CiAgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwotICAgIGxheWVy
LT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CiAgICAgbGF5ZXItPnNldE5lZWRz
VmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiAgICAg
cmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIAorZmxvYXQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKworZmxvYXQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpwYWdlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UtPnBhZ2VT
Y2FsZUZhY3RvcigpOworfQorCiBib29sIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZygpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03NDksMjQgKzc1NywxOCBA
QCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TGF5ZXJBbmltYXRpb25zKENvb3Jk
aW5hdGVkTGF5ZXJJRCBsYXllcklELCBjbwogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldExheWVyQW5pbWF0aW9ucyhsYXllcklE
LCBhY3RpdmVBbmltYXRpb25zKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgc2Nh
bGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgYm9vbCBjb250
ZW50c1JlY3REaWRDaGFuZ2UgPSByZWN0ICE9IG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsKLSAgICBi
b29sIGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UgPSBzY2FsZSAhPSBtX2NvbnRlbnRzU2NhbGU7Ci0K
ICAgICAvLyBBIHplcm8gdHJhamVjdG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0aWxlcyBhbGwg
YXJvdW5kIHRoZSB2aWV3cG9ydCBhcmUgcmVxdWVzdGVkLgogICAgIHRvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZpc2libGVD
b250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CiAKLSAgICBpZiAo
Y29udGVudHNSZWN0RGlkQ2hhbmdlIHx8IGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpIHsKKyAgICBi
b29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVudHNSZWN0
OworICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKICAgICAgICAgbV92aXNpYmxlQ29u
dGVudHNSZWN0ID0gcmVjdDsKLSAgICAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7CiAKICAg
ICAgICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0
b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwogICAgICAgICBmb3IgKEhhc2hTZXQ8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdp
c3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYg
KGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpCi0gICAgICAgICAgICAgICAgKCppdCktPnNldENvbnRl
bnRzU2NhbGUoc2NhbGUpOwotICAgICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkK
LSAgICAgICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsK
KyAgICAgICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC03ODEsNiArNzgzLDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvCiAgICAgICAgIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlID0gdHJ1ZTsKIH0K
IAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCgpCit7CisgICAgbV9yb290TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikKKyAgICAgICAg
bV9wYWdlT3ZlcmxheUxheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKK30K
KwogR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhp
Y3NMYXllckZhY3RvcnkoKQogewogICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBmZGY4OTky
OGExZWYwMGY4NzY1OWUyYzZkNGZiZjViNmU4NTBhZjNhLi5lZmRkNmY3ZjA5YWRlMTM4MjExYWU3
NWI0ZTNiZTI2OGJmMTk5Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VSZW5kZXJpbmcoKSB7IG1faXNTdXNwZW5kZWQgPSB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVJlbmRlcmluZygpIHsgbV9pc1N1c3BlbmRlZCA9
IGZhbHNlOyBzY2hlZHVsZUxheWVyRmx1c2goKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJD
b3JlOjpJbWFnZSopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzRmx1c2hpbmdMYXll
ckNoYW5nZXMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzRmx1c2hpbmdMYXllckNoYW5n
ZXM7IH0KQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVu
ZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisgICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5
KCkgT1ZFUlJJREU7CiAKQEAgLTEyMyw2ICsxMjMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
LCBkb3VibGUgdGltZSk7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY2xpcFJlY3QpOworICAgIHZpcnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Io
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNv
bnN0IE9WRVJSSURFOwogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5h
dG9yCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEKSBPVkVSUklERTsKQEAgLTE5NCw3ICsxOTYsNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV93YWl0aW5nRm9yVUlQcm9jZXNzOwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsKICAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwotICAgIGZsb2F0IG1fY29u
dGVudHNTY2FsZTsKICAgICBib29sIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlOwog
CiAgICAgTGF5ZXJUcmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
bWVzc2FnZXMuaW4KaW5kZXggMmExMDU5ZWU4YmFkYjAzNGYyNDEwYzBiZTUzZDgzNmU2NjViY2Zl
NC4uNjY3MWIzMjdmZWM2ZTE0ZTA3NDI2NzZkOTQ5MGIzODRmZjFmOWFhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IExlZ2FjeVJl
Y2VpdmVyIHsKLSAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCB0cmFq
ZWN0b3J5VmVjdG9yeSkKKyAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3RvcnlW
ZWN0b3J5KQogICAgIFJlbmRlck5leHRGcmFtZSgpCiAgICAgUHVyZ2VCYWNraW5nU3RvcmVzKCkK
ICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOWY5NWQ0MTQ0NDA1YzEwMDMwMGNj
ZDdmNjUxY2RkOGMyMWUwNTgwYy4uYWY4NWU3MzgzZjk5MTZkNTJlMThiZmQwMDBlYjYzYWY2Y2Fl
MmYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTI3MCw2ICsxMjcwLDggQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dChi
b29sIGZpeGVkKQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBtX3BhZ2UtPnNl
dHRpbmdzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxl
ZChmaXhlZCk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRl
c1N0YWNraW5nQ29udGV4dChmaXhlZCk7CisgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRBcHBs
eURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGZpeGVkKTsKKyAgICBtX3BhZ2UtPnNldHRp
bmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGZpeGVkKTsKICNlbmRp
ZgogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpICYmIEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185449</attachid>
            <date>2013-01-30 02:47:50 -0800</date>
            <delta_ts>2013-01-30 13:52:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105978-20130130194434.patch</filename>
            <type>text/plain</type>
            <size>27431</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTI0Y2RkY2U0YmRkOTkw
MjVmNGE4ZTU1ZDQ3YWU0ZWM3OTU5NzVmMS4uMGNjNzU5MTAzMWM5ZDk1MGYwOGI2NzBmZmUzZDIz
NzcwOWU4NjgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAxLTMwICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtFRkxdW1F0
XVtXSzJdIFdlIHNob3VsZCBjb25zaWRlciBhIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUg
aW5zdGVhZCBvZiBvdXIgb3duIHNjYWxlIGZhY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTk3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ciBzZW5kcyBhIHBhZ2Ugc2NhbGUgZmFjdG9yIHRvIENvb3JkaW5hdGVkCisgICAgICAgIEdyYXBo
aWNzIFN5c3RlbSByZWdhcmRsZXNzIG9mIHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBXZWJDb3Jl
LiBUaGlzIHBhdGNoIG1ha2VzCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIFN5c3RlbSB1
c2UgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUgdG8gbWF0Y2ggb3RoZXIKKyAgICAg
ICAgcG9ydHMuCisKKyAgICAgICAgV2hlbiBpdCBpcyBuZWVkZWQgdG8gY2hhbmdlIGEgcGFnZSBz
Y2FsZSwgUGFnZVZpZXdwb3J0Q29udHJvbGxlciBzZW5kcyB0aGUgc2NhbGUKKyAgICAgICAgdG8g
UGFnZSBpbiBXZWIgUHJvY2VzcyB2aWEgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2UuIFdoZW4gdGhl
IHBhZ2Ugc2NhbGUgaW4KKyAgICAgICAgV2ViQ29yZSBpcyBjaGFuZ2VkLCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIgZ2V0cyBub3RpZmllZCB2aWEKKyAgICAgICAgZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkIGNhbGxiYWNrLiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgdXNlcyB0aGUg
cGFnZQorICAgICAgICBzY2FsZSBmYWN0b3IgbGlrZSBwcmV2aW91cyBvdXIgb3duIHNjYWxlIGZh
Y3Rvci4KKworICAgICAgICBXZSBzZXQgdHJ1ZSB0byBhcHBseURldmljZVNjYWxlRmFjdG9ySW5D
b21wb3NpdG9yIGFuZAorICAgICAgICBBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBp
biBTZXR0aW5ncyBsaWtlIGNocm9taXVtLCBiZWNhdXNlCisgICAgICAgIFRpbGVkQmFja2luZ1N0
b3JlIHRoYXQgaXMgYSBiYWNraW5nIHN0b3JlIG9mIGVhY2ggR3JhcGhpY3NMYXllciBhcHBsaWVz
IHRoZQorICAgICAgICBzY2FsZSB0byBvdXIgcmFzdGVyIGdyYXBoaWNzIGVuZ2luZXMgaW5zdGVh
ZCBvZiBhcHBseWluZyB0aGUgc2NhbGUgdG8gdGhlIGxvY2FsCisgICAgICAgIHRyYW5zZm9ybSBv
ZiBlYWNoIHJlbmRlciBvYmplY3QuCisKKyAgICAgICAgVGhhbmsgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4gZm9yIGltcGxlbWVudGluZyB0aGUgYmFzZSBwYXRjaCBvZiB0aGlzIHBhdGNoLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHA6CisgICAgICAgIChRUmF3V2ViVmll
dzo6c2V0U2l6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICAgICBEb2VzIG5vdCByZWNlaXZlIGEgcGFnZVNjYWxl
RmFjdG9yIGFyZ3VtZW50IGJlY2F1c2UKKyAgICAgICAgICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIgc2VuZHMgYSBwYWdlIHNjYWxlIGZhY3RvciB0byBQYWdlLgorICAgICAgICAgICAgSG93ZXZl
ciwgdGhpcyBtZXRob2Qgc3RpbGwgcmVjZWl2ZXMgYSBzY3JvbGwgcG9zaXRpb24gYmVjYXVzZSB3
ZQorICAgICAgICAgICAgZW5hYmxlIGRlbGVnYXRlcyBzY3JvbGxpbmcuCisgICAgICAgICogVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
aDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YVByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
SW1wbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRS
ZW5kZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRp
ZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OnN5bmNWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyOjphcHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5UG9zaXRpb25BZnRl
clJlbmRlcmluZ0NvbnRlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRM
ZWdhY3lJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudExlZ2FjeUltcGw6OnVw
ZGF0ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGV2aWNlT3JQYWdl
U2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6ZWZmZWN0aXZlQ29udGVudHNTY2FsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRl
bnRzUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2
aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0VXNlRml4ZWRMYXlvdXQpOgorCiAyMDEzLTAxLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBMYXllclRyZWVSZW5kZXJlciBtYW5hZ2VzIHRoZSBzdXJmYWNlIG9mIFVw
ZGF0ZUF0bGFzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAKaW5kZXggMTU2ZGVlZGYwMjExMTgzY2UxM2U0YmJiMzhjNzU2ODJhMGQ5Yjk3
Yy4uNmY1MzJjMjU4MmE0MTQzOTFjYTNmNDc4ODg5MDgxNGI4MWU2NDVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC04NDYs
NyArODQ2LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6dXBkYXRlVmlld3Bv
cnRTaXplKCkKICAgICB3ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFNpemUodmlld3Bv
cnRTaXplLnRvU2l6ZSgpLCBJbnRTaXplKCkpOwogICAgIC8vIFRoZSBiYWNraW5nIHN0b3JlIHNj
YWxlIGZhY3RvciBzaG91bGQgYWxyZWFkeSBiZSBzZXQgdG8gdGhlIGRldmljZSBwaXhlbCByYXRp
bwogICAgIC8vIG9mIHRoZSB1bmRlcmx5aW5nIHdpbmRvdywgdGh1cyB3ZSBzZXQgdGhlIGVmZmVj
dGl2ZSBzY2FsZSB0byAxIGhlcmUuCi0gICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5z
ZXRWaXNpYmxlQ29udGVudHNSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZSh2
aWV3cG9ydFNpemUpKSwgMSwgRmxvYXRQb2ludCgpKTsKKyAgICB3ZWJQYWdlUHJveHktPmRyYXdp
bmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
RmxvYXRTaXplKHZpZXdwb3J0U2l6ZSkpLCBGbG9hdFBvaW50KCkpOwogfQogCiBxcmVhbCBRUXVp
Y2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6em9vbUZhY3RvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKaW5kZXggMmRk
NDVkMGVmZmU5ZTBmM2ZmYmFkMzY0OWQzMGU5NTc2ZmJmOWRjMy4uMzYxZjc0ZGFiODUxYWQ4OThl
ZDM5ZDI3N2E3YTZmNDc5YjI1OTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQg
UVJhd1dlYlZpZXc6OnNldFNpemUoY29uc3QgUVNpemUmIHNpemUpCiAgICAgZC0+bV9zaXplID0g
c2l6ZTsKIAogICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKGQtPm1fc2l6ZSwgV2ViQ29yZTo6SW50
U2l6ZSgpKTsKLSAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChXZWJDb3Jl
OjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIGQtPm1fc2l6ZSksIDEgLypzY2FsZSovLCBX
ZWJDb3JlOjpGbG9hdFBvaW50KCkpOworICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVu
dHNSZWN0KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwgZC0+bV9zaXplKSwg
V2ViQ29yZTo6RmxvYXRQb2ludCgpKTsKIH0KIAogV0tQYWdlUmVmIFFSYXdXZWJWaWV3OjpwYWdl
UmVmKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcAppbmRleCBiZTNjNmFiZDU1Y2FhMDQxZDFiZTkzNzU4ZjU5M2U2NTBlOWVkYWM1Li4w
Y2MzNDI5OTU5NmExMWQ1YzU5M2ZkMTgyNzhmNTBmNGI3YzJkNGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC00MSw3ICs0
MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KERyYXdpbmdBcmVhUHJveHkqIGRy
YXdpbmdBcmVhUHJveHkpCiAgICAgOiBtX2RyYXdpbmdBcmVhUHJveHkoZHJhd2luZ0FyZWFQcm94
eSkKICAgICAsIG1fcmVuZGVyZXIoYWRvcHRSZWYobmV3IExheWVyVHJlZVJlbmRlcmVyKHRoaXMp
KSkKLSAgICAsIG1fbGFzdFNlbnRTY2FsZSgwKQogewogfQogCkBAIC01NSwxMSArNTQsNiBAQCB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojp1cGRhdGVWaWV3cG9ydCgpCiAgICAg
bV9kcmF3aW5nQXJlYVByb3h5LT51cGRhdGVWaWV3cG9ydCgpOwogfQogCi1mbG9hdCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAotewotICAg
IHJldHVybiBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
LX0KLQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGlzcGF0Y2hVcGRhdGUo
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCiB7CiAgICAgbV9yZW5kZXJlci0+YXBw
ZW5kVXBkYXRlKGZ1bmN0aW9uKTsKQEAgLTE4MSwxOSArMTc1LDE2IEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldEFuaW1hdGlvbnNMb2NrZWQoYm9vbCBsb2NrZWQpCiAg
ICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnNldEFuaW1hdGlvbnNM
b2NrZWQsIG1fcmVuZGVyZXIuZ2V0KCksIGxvY2tlZCkpOwogfQogCi12b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0
b3J5VmVjdG9yKQordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRy
YWplY3RvcnlWZWN0b3IpCiB7CiAgICAgLy8gSW5mb3JtIHRoZSByZW5kZXJlciB0byBhZGp1c3Qg
dmlld3BvcnQtZml4ZWQgbGF5ZXJzLgogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJl
ZVJlbmRlcmVyOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0LCBtX3JlbmRlcmVyLmdldCgpLCByZWN0
KSk7CiAKLSAgICBjb25zdCBmbG9hdCBlZmZlY3RpdmVTY2FsZSA9IGRldmljZVNjYWxlRmFjdG9y
KCkgKiBwYWdlU2NhbGVGYWN0b3I7Ci0KLSAgICBpZiAocmVjdCA9PSBtX2xhc3RTZW50VmlzaWJs
ZVJlY3QgJiYgZWZmZWN0aXZlU2NhbGUgPT0gbV9sYXN0U2VudFNjYWxlICYmIHRyYWplY3RvcnlW
ZWN0b3IgPT0gbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3IpCisgICAgaWYgKHJlY3QgPT0gbV9s
YXN0U2VudFZpc2libGVSZWN0ICYmIHRyYWplY3RvcnlWZWN0b3IgPT0gbV9sYXN0U2VudFRyYWpl
Y3RvcnlWZWN0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+
cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6U2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCBlZmZlY3RpdmVTY2FsZSwgdHJhamVjdG9y
eVZlY3RvciksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CisgICAgbV9k
cmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpTZXRWaXNpYmxlQ29udGVudHNSZWN0KHJlY3QsIHRyYWplY3Rv
cnlWZWN0b3IpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOwogICAgIG1f
bGFzdFNlbnRWaXNpYmxlUmVjdCA9IHJlY3Q7Ci0gICAgbV9sYXN0U2VudFNjYWxlID0gZWZmZWN0
aXZlU2NhbGU7CiAgICAgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5VmVj
dG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuaAppbmRleCAxOGIyZjg4NmFlNjNkZmY3ZTI4ZDhjMWZmNDUxNjU4YjM1NzI1MDM0Li4w
YWE4YjQ3ZmRmMThjMWM1MWIwMzc1MGFlN2MyOWNiOTNjZDJkNDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoY29uc3QgVmVjdG9y
PENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVy
KENvb3JkaW5hdGVkTGF5ZXJJRCk7CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7CisgICAgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
b3ZlcmVkUmVjdCk7CiAgICAgdm9pZCBjcmVhdGVUaWxlRm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXll
cklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJm
YWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBkYXRlVGlsZUZvckxheWVyKENvb3JkaW5hdGVk
TGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
U3VyZmFjZVVwZGF0ZUluZm8mKTsKQEAgLTk2LDE1ICs5NiwxMiBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCi0g
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKLQogcHJvdGVjdGVkOgogICAgIHZv
aWQgZGlzcGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogCiAgICAgRHJhd2lu
Z0FyZWFQcm94eSogbV9kcmF3aW5nQXJlYVByb3h5OwogICAgIFJlZlB0cjxMYXllclRyZWVSZW5k
ZXJlcj4gbV9yZW5kZXJlcjsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9sYXN0U2VudFZpc2li
bGVSZWN0OwotICAgIGZsb2F0IG1fbGFzdFNlbnRTY2FsZTsKICAgICBXZWJDb3JlOjpGbG9hdFBv
aW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggMWViMTgxOTUxYjBiZWJkMDgxNTg3Yzlh
Y2M4NGI3YTI0NWUzYzQ1OS4uYmFkNjM4NGRlODZiZTA0ZjlmMWY3NTYwOTdlZmE4NTc1NzE3OTQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC04
Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgdmlld3Bv
cnRWaXNpYmxlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzUmVjdCgpOyB9CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5KiBjb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuZ2V0KCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIC8qIHZpc2libGVDb250ZW50c1JlY3QgKi8sIGZsb2F0IC8qIHNjYWxlICovLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiAvKiB0cmFqZWN0b3J5VmVjdG9yICovKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIC8qIHZpc2libGVDb250ZW50c1JlY3QgKi8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IC8qIHRyYWplY3RvcnlWZWN0b3IgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKICAgICBX
ZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBtX3dlYlBhZ2VQcm94eTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKaW5kZXggNjVm
MWI5ZWI5NDVjNjExMWUyZWZlM2YzNGIxZDgwNTFmZDAwYmVmMy4uMTgzNGY5ZDBhMjNjMGM0MjBi
ZGZjZmIyMTZkZDAxNGFhZjAwZTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCkBAIC0zNzYsMTAgKzM3NiwxMCBAQCB2b2lkIERy
YXdpbmdBcmVhUHJveHlJbXBsOjpkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHlNZXNzYWdlKENvcmVJUAogICAgICAgICBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LT5kaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlKGNvbm5lY3Rp
b24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6
OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpYmxl
Q29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJh
amVjdG9yeVZlY3RvcikKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZpc2libGVDb250
ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewogICAgIGlmICht
X2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KQotICAgICAgICBtX2Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1Jl
Y3QsIHNjYWxlLCB0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICAgICAgbV9jb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNSZWN0
LCB0cmFqZWN0b3J5VmVjdG9yKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCmluZGV4IDZjZWQyMDdiNGNjNjk4YjdkMmE1
YzNmNmEyYjdkYTNjYmJiMjFmY2MuLjRhZTYwMjMxYWEyOTEyM2IyZDc1NjU4NzIyZDU3Y2QzOGYx
OThiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
SW1wbC5oCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGl0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCi0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeSk7CisgICAgdmlydHVhbCB2b2lkIHNldFZp
c2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVu
dHNSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5KSBPVkVSUklERTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKTsKICNlbmRpZgogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCBmNzFjMDNjMDMzYWJlMWM1MjJl
NmQxZmMwYmE0ZTM0NmQ5NTQ1NWIxLi44NzdlMDc1YzM3ZGViNDY5ZGU0NzIwYmE4ZjQ0YzI1ZDM3
Yjc2MDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXIuY3BwCkBAIC0xOTcsNiArMTk3LDkgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250
cm9sbGVyOjpkaWRSZW5kZXJGcmFtZShjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0
IEkKICAgICAgICAgRmxvYXRQb2ludCBjdXJyZW50RGlzY3JldGVQb3MgPSByb3VuZGVkSW50UG9p
bnQobV9jb250ZW50c1Bvc2l0aW9uKTsKICAgICAgICAgRmxvYXRQb2ludCBwaXhlbEFsaWduZWRQ
b3MgPSBwaXhlbEFsaWduZWRGbG9hdFBvaW50KGN1cnJlbnREaXNjcmV0ZVBvcyk7CiAgICAgICAg
IG1fY29udGVudHNQb3NpdGlvbiA9IGJvdW5kQ29udGVudHNQb3NpdGlvbihwaXhlbEFsaWduZWRQ
b3MpOworCisgICAgICAgIC8vIEZJWE1FIDogUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yIHBlcmZv
cm1zIGxheW91dCBldmVuIGlmIHRoZSBzY2FsZSBpcyBub3QgY2hhbmdlZC4KKyAgICAgICAgbV93
ZWJQYWdlUHJveHktPnNjYWxlUGFnZShtX3BhZ2VTY2FsZUZhY3Rvciwgcm91bmRlZEludFBvaW50
KG1fY29udGVudHNQb3NpdGlvbikpOwogICAgIH0KIAogICAgIC8vIFRoZXJlIG1pZ2h0IGJlIHJl
bmRlcmVkIGZyYW1lcyBub3QgY292ZXJpbmcgb3VyIHJlcXVlc3RlZCBwb3NpdGlvbiB5ZXQsIHdh
aXQgZm9yIGl0LgpAQCAtMjU4LDcgKzI2MSw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0CiAg
ICAgaWYgKCFtX3BlbmRpbmdQb3NpdGlvbkNoYW5nZSkKICAgICAgICAgbV9jb250ZW50c1Bvc2l0
aW9uID0gcG9zaXRpb247CiAgICAgaWYgKCFtX3BlbmRpbmdTY2FsZUNoYW5nZSkKLSAgICAgICAg
bV9wYWdlU2NhbGVGYWN0b3IgPSBzY2FsZTsKKyAgICAgICAgYXBwbHlTY2FsZUFmdGVyUmVuZGVy
aW5nQ29udGVudHMoc2NhbGUpOwogCiAgICAgc3luY1Zpc2libGVDb250ZW50cyh0cmFqZWN0b3J5
VmVjdG9yKTsKIH0KQEAgLTI3MSw3ICsyNzQsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OnN5bmNWaXNpYmxlQ29udGVudHMoY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlYwog
CiAgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoYm91bmRDb250ZW50c1Bvc2l0aW9u
KG1fY29udGVudHNQb3NpdGlvbiksIHZpc2libGVDb250ZW50c1NpemUoKSk7CiAgICAgdmlzaWJs
ZUNvbnRlbnRzUmVjdC5pbnRlcnNlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9j
b250ZW50c1NpemUpKTsKLSAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2
aXNpYmxlQ29udGVudHNSZWN0LCBtX3BhZ2VTY2FsZUZhY3RvciwgdHJhamVjdG9yeVZlY3Rvcik7
CisgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRz
UmVjdCwgdHJhamVjdG9yeVZlY3Rvcik7CiAKICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlVmlzaWJs
ZUNvbnRlbnRzKCk7CiB9CkBAIC0zMjYsNiArMzI5LDkgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250
cm9sbGVyOjpyZXN1bWVDb250ZW50KCkKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjph
cHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhmbG9hdCBzY2FsZSkKIHsKKyAgICBpZiAo
bV9wYWdlU2NhbGVGYWN0b3IgPT0gc2NhbGUpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcGFn
ZVNjYWxlRmFjdG9yID0gc2NhbGU7CiAgICAgbV9wZW5kaW5nU2NhbGVDaGFuZ2UgPSB0cnVlOwog
ICAgIHN5bmNWaXNpYmxlQ29udGVudHMoKTsKQEAgLTMzMyw2ICszMzksOSBAQCB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0
IHNjYWxlKQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5UG9zaXRpb25BZnRl
clJlbmRlcmluZ0NvbnRlbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHBvcykKIHsKKyAgICBpZiAobV9j
b250ZW50c1Bvc2l0aW9uID09IHBvcykKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb250ZW50
c1Bvc2l0aW9uID0gcG9zOwogICAgIG1fcGVuZGluZ1Bvc2l0aW9uQ2hhbmdlID0gdHJ1ZTsKICAg
ICBzeW5jVmlzaWJsZUNvbnRlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCmluZGV4IGViMDcyNjNlOGU4ZDkxODUy
Y2QxY2U2NjI3OWIxMjQ3ZTBlZjViMTMuLjk1ODMxYTI1ZTQ1ODY4ZDNhZjkwYWE3YmI5NTdkNDRj
Y2I2MjY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNs
aWVudExlZ2FjeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudExlZ2FjeUltcGwuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgUGFnZUNsaWVudExl
Z2FjeUltcGw6OmRpZENvbW1pdExvYWQoKQogdm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6dXBk
YXRlVmlld3BvcnRTaXplKCkKIHsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBt
X3ZpZXctPnBhZ2UoKS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRS
ZWN0KHJvdW5kZWRJbnRQb2ludChtX3ZpZXctPnBhZ2VQb3NpdGlvbigpKSwgbV92aWV3LT5zaXpl
KCkpLCBtX3ZpZXctPnBhZ2VTY2FsZUZhY3RvcigpLCBGbG9hdFBvaW50KCkpOworICAgIG1fdmll
dy0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KEludFJlY3Qo
cm91bmRlZEludFBvaW50KG1fdmlldy0+cGFnZVBvc2l0aW9uKCkpLCBtX3ZpZXctPnNpemUoKSks
IEZsb2F0UG9pbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGZmZDkyMzRjMWU4
ODM5NzljYmUxYTMyNGVhOTdmNTYxOGEwMDI1YS4uNDE4MzIzN2Y5NDdlNjZlYjAzNjgxOGY4NTMz
ZjIzZGZlNDZlYjk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMjIsNyArMTIyLDYgQEAgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNs
aWVudCogY2xpZW50KQogICAgICwgbV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQoZmFs
c2UpCiAgICAgLCBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQoZmFsc2UpCiAgICAgLCBt
X2Nvb3JkaW5hdG9yKDApCi0gICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAgICAsIG1fY29tcG9z
aXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIoMCkKICAg
ICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQpAQCAtNjg2LDE2ICs2ODUsMTUgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3Rv
cnlWZWN0b3IoY29uc3QgRmxvYXQKICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgp
OwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNTY2FsZShm
bG9hdCBzY2FsZSkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkZXZpY2VPclBhZ2VT
Y2FsZUZhY3RvckNoYW5nZWQoKQogewotICAgIG1fY29udGVudHNTY2FsZSA9IHNjYWxlOwogICAg
IGlmIChzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRz
U2NhbGVBZGp1c3RtZW50ID0gdHJ1ZTsKIH0KIAogZmxvYXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjplZmZlY3RpdmVDb250ZW50c1NjYWxlKCkKIHsKLSAgICByZXR1cm4gc2VsZk9yQW5jZXN0
b3JIYXZlTm9uQWZmaW5lVHJhbnNmb3JtcygpID8gMSA6IG1fY29udGVudHNTY2FsZTsKKyAgICBy
ZXR1cm4gc2VsZk9yQW5jZXN0b3JIYXZlTm9uQWZmaW5lVHJhbnNmb3JtcygpID8gMSA6IGRldmlj
ZVNjYWxlRmFjdG9yKCkgKiBwYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAogdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmFkanVzdENvbnRlbnRzU2NhbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA3ZWEzODFm
N2NmN2M3NWFkMzRkNDUzODc5MGEwZTMwMGM0NWYzYTQ4Li42Njg5YTlkODAwYTFiZGVlMDVjZjNj
MmNjMmMxMzFmNzMxNjNkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMTIzLDYgKzEyMyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3Qm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSgpIE9WRVJSSURFOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTEzNyw3
ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCBjb21wdXRlUG9zaXRpb25SZWxhdGl2
ZVRvQmFzZSgpOwogICAgIHZvaWQgY29tcHV0ZVBpeGVsQWxpZ25tZW50KEZsb2F0UG9pbnQmIHBv
c2l0aW9uLCBGbG9hdFNpemUmLCBGbG9hdFBvaW50M0QmIGFuY2hvclBvaW50LCBGbG9hdFNpemUm
IGFsaWdubWVudE9mZnNldCk7CiAKLSAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOwog
ICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9h
dFBvaW50Jik7CiAKICAgICB2b2lkIHNldFJvb3RMYXllcihib29sKTsKQEAgLTI0MSw3ICsyNDEs
NiBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50
KiBtX2Nvb3JkaW5hdG9yOwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFj
a2luZ1N0b3JlOwogICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9wcmV2aW91c0JhY2tp
bmdTdG9yZTsKLSAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+
IG1fY29tcG9zaXRlZEltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRyIG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmVhZjg2NWE0NDQyNzQwOTJkOGJmYWE5NzNlMDQ3
MDI3MDc0ODYwYS4uY2EzNzU2YWRjOTUyOTBlNTRiZWRkYmFiZDgxYmU2YzYxYjhlYjFhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCkBAIC04Nyw3ICs4Nyw2IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgLCBtX2lzRmx1c2hp
bmdMYXllckNoYW5nZXMoZmFsc2UpCiAgICAgLCBtX3dhaXRpbmdGb3JVSVByb2Nlc3ModHJ1ZSkK
ICAgICAsIG1faXNTdXNwZW5kZWQoZmFsc2UpCi0gICAgLCBtX2NvbnRlbnRzU2NhbGUoMSkKICAg
ICAsIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlKHRydWUpCiAgICAgLCBtX3Nob3Vs
ZFN5bmNGcmFtZShmYWxzZSkKICAgICAsIG1fZGlkSW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xh
eWVyKGZhbHNlKQpAQCAtNjgyLDEyICs2ODEsMjEgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVy
PiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MK
ICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJz
LmFkZChsYXllcik7CiAgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwot
ICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVudHNTY2FsZSk7CiAgICAgbGF5ZXIt
PnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNo
KCk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKGxheWVyKTsKIH0KIAorZmxvYXQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
d2ViUGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKworZmxvYXQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpwYWdlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBh
Z2UtPnBhZ2VTY2FsZUZhY3RvcigpOworfQorCiBib29sIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03NTQsMjQg
Kzc2MiwxOCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TGF5ZXJBbmltYXRp
b25zKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCBjbwogICAgIG1fd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldExheWVyQW5pbWF0aW9u
cyhsYXllcklELCBhY3RpdmVBbmltYXRpb25zKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgc2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCit2b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAg
Ym9vbCBjb250ZW50c1JlY3REaWRDaGFuZ2UgPSByZWN0ICE9IG1fdmlzaWJsZUNvbnRlbnRzUmVj
dDsKLSAgICBib29sIGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UgPSBzY2FsZSAhPSBtX2NvbnRlbnRz
U2NhbGU7Ci0KICAgICAvLyBBIHplcm8gdHJhamVjdG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0
aWxlcyBhbGwgYXJvdW5kIHRoZSB2aWV3cG9ydCBhcmUgcmVxdWVzdGVkLgogICAgIHRvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNl
dFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7CiAK
LSAgICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlIHx8IGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2Up
IHsKKyAgICBib29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29u
dGVudHNSZWN0OworICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKICAgICAgICAgbV92
aXNpYmxlQ29udGVudHNSZWN0ID0gcmVjdDsKLSAgICAgICAgbV9jb250ZW50c1NjYWxlID0gc2Nh
bGU7CiAKICAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIq
Pjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwogICAgICAgICBmb3Ig
KEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0
ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICAgICAgaWYgKGNvbnRlbnRzU2NhbGVEaWRDaGFuZ2UpCi0gICAgICAgICAgICAgICAgKCppdCkt
PnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOwotICAgICAgICAgICAgaWYgKGNvbnRlbnRzUmVjdERp
ZENoYW5nZSkKLSAgICAgICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVz
dG1lbnQoKTsKKyAgICAgICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVu
dCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03ODYsNiArNzg4LDE0IEBAIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgZmxvCiAgICAgICAgIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9uVXBkYXRlID0g
dHJ1ZTsKIH0KIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpCit7CisgICAgbV9yb290TGF5ZXItPmRldmljZU9yUGFnZVNjYWxl
RmFjdG9yQ2hhbmdlZCgpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikK
KyAgICAgICAgbV9wYWdlT3ZlcmxheUxheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5n
ZWQoKTsKK30KKwogR3JhcGhpY3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewogICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRl
eCAzYzUwYzU3MzVkMDllMWJmMGMwZWNlODg1YTA5YjhmMTgyZjQzOWNkLi4xNzc2MzgwOTc4OGFi
MDk3NWRkMTdiMzJjNGJlZjZmOWFmYWY0ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNzYsNyArNzYsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VSZW5kZXJpbmcoKSB7IG1faXNTdXNwZW5k
ZWQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVJlbmRlcmluZygpIHsgbV9pc1N1
c3BlbmRlZCA9IGZhbHNlOyBzY2hlZHVsZUxheWVyRmx1c2goKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5l
ZWRlZChXZWJDb3JlOjpJbWFnZSopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzRmx1
c2hpbmdMYXllckNoYW5nZXMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzRmx1c2hpbmdM
YXllckNoYW5nZXM7IH0KQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0
b3JlcygpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5
ZXJGYWN0b3J5KCkgT1ZFUlJJREU7CiAKQEAgLTEyNCw2ICsxMjQsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqLCBkb3VibGUgdGltZSk7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZsdXNoUmVx
dWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOworICAgIHZpcnR1YWwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZh
Y3RvcigpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6
OkNvb3JkaW5hdG9yCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKQEAgLTE5NSw3ICsxOTcsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV93YWl0aW5nRm9yVUlQcm9jZXNzOwogICAgIGJvb2wgbV9pc1N1c3BlbmRl
ZDsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwotICAgIGZs
b2F0IG1fY29udGVudHNTY2FsZTsKICAgICBib29sIG1fc2hvdWxkU2VuZFNjcm9sbFBvc2l0aW9u
VXBkYXRlOwogCiAgICAgTGF5ZXJUcmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QubWVzc2FnZXMuaW4KaW5kZXggMmExMDU5ZWU4YmFkYjAzNGYyNDEwYzBiZTUzZDgz
NmU2NjViY2ZlNC4uNjY3MWIzMjdmZWM2ZTE0ZTA3NDI2NzZkOTQ5MGIzODRmZjFmOWFhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
IExlZ2FjeVJlY2VpdmVyIHsKLSAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCB0cmFqZWN0b3J5VmVjdG9yeSkKKyAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNv
cmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IHRy
YWplY3RvcnlWZWN0b3J5KQogICAgIFJlbmRlck5leHRGcmFtZSgpCiAgICAgUHVyZ2VCYWNraW5n
U3RvcmVzKCkKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzA0M2JiNzIxM2Qw
NzY1MjA1YThlM2UwYTY1YjVmNzYwMTRkMjhlZi4uYTc0NGJiOTAzMTZkYTcwODgyYzBhZDQ3OGYy
NWRiNjc5NWU5ZDg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMTI3MSw2ICsxMjcxLDggQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhl
ZExheW91dChib29sIGZpeGVkKQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBt
X3BhZ2UtPnNldHRpbmdzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0
aW9uRW5hYmxlZChmaXhlZCk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRGaXhlZFBvc2l0
aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dChmaXhlZCk7CisgICAgbV9wYWdlLT5zZXR0aW5ncygp
LT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGZpeGVkKTsKKyAgICBtX3Bh
Z2UtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGZpeGVk
KTsKICNlbmRpZgogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpICYmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQo=
</data>
<flag name="review"
          id="204510"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="204511"
          type_id="3"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185556</attachid>
            <date>2013-01-30 13:55:13 -0800</date>
            <delta_ts>2013-01-30 14:29:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-105978-20130131065155.patch</filename>
            <type>text/plain</type>
            <size>27334</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTI0Y2RkY2U0YmRkOTkw
MjVmNGE4ZTU1ZDQ3YWU0ZWM3OTU5NzVmMS4uOGRlODZjOWRlNWI3MWUxMDVlNjdiN2NiZmIwZTI4
NmVhM2I4MzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAxLTMwICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtFRkxdW1F0
XVtXSzJdIFdlIHNob3VsZCBjb25zaWRlciBhIHBhZ2Ugc2NhbGUgZmFjdG9yIGluIFdlYkNvcmUg
aW5zdGVhZCBvZiBvdXIgb3duIHNjYWxlIGZhY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTk3OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KKworICAgICAgICBDdXJyZW50bHksIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIg
c2VuZHMgYSBwYWdlIHNjYWxlIGZhY3RvciB0byBDb29yZGluYXRlZAorICAgICAgICBHcmFwaGlj
cyBTeXN0ZW0gcmVnYXJkbGVzcyBvZiB0aGUgcGFnZSBzY2FsZSBmYWN0b3IgaW4gV2ViQ29yZS4g
VGhpcyBwYXRjaCBtYWtlcworICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljcyBTeXN0ZW0gdXNl
IHRoZSBwYWdlIHNjYWxlIGZhY3RvciBpbiBXZWJDb3JlIHRvIG1hdGNoIG90aGVyCisgICAgICAg
IHBvcnRzLgorCisgICAgICAgIFdoZW4gaXQgaXMgbmVlZGVkIHRvIGNoYW5nZSBhIHBhZ2Ugc2Nh
bGUsIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIgc2VuZHMgdGhlIHNjYWxlCisgICAgICAgIHRvIFBh
Z2UgaW4gV2ViIFByb2Nlc3MgdmlhIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlLiBXaGVuIHRoZSBw
YWdlIHNjYWxlIGluCisgICAgICAgIFdlYkNvcmUgaXMgY2hhbmdlZCwgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyIGdldHMgbm90aWZpZWQgdmlhCisgICAgICAgIGRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCBjYWxsYmFjay4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIHVzZXMgdGhlIHBh
Z2UKKyAgICAgICAgc2NhbGUgZmFjdG9yIGxpa2UgcHJldmlvdXMgb3VyIG93biBzY2FsZSBmYWN0
b3IuCisKKyAgICAgICAgV2Ugc2V0IHRydWUgdG8gYXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29t
cG9zaXRvciBhbmQKKyAgICAgICAgQXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IgaW4g
U2V0dGluZ3MgbGlrZSBjaHJvbWl1bSwgYmVjYXVzZQorICAgICAgICBUaWxlZEJhY2tpbmdTdG9y
ZSB0aGF0IGlzIGEgYmFja2luZyBzdG9yZSBvZiBlYWNoIEdyYXBoaWNzTGF5ZXIgYXBwbGllcyB0
aGUKKyAgICAgICAgc2NhbGUgdG8gb3VyIHJhc3RlciBncmFwaGljcyBlbmdpbmVzIGluc3RlYWQg
b2YgYXBwbHlpbmcgdGhlIHNjYWxlIHRvIHRoZSBsb2NhbAorICAgICAgICB0cmFuc2Zvcm0gb2Yg
ZWFjaCByZW5kZXIgb2JqZWN0LgorCisgICAgICAgIFRoYW5rIEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuIGZvciBpbXBsZW1lbnRpbmcgdGhlIGJhc2UgcGF0Y2ggb2YgdGhpcyBwYXRjaC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNr
V2ViVmlld0xlZ2FjeVByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwOgorICAgICAgICAoUVJhd1dlYlZpZXc6
OnNldFNpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVD
b250ZW50c1JlY3QpOgorICAgICAgICAgICAgRG9lcyBub3QgcmVjZWl2ZSBhIHBhZ2VTY2FsZUZh
Y3RvciBhcmd1bWVudCBiZWNhdXNlCisgICAgICAgICAgICBQYWdlVmlld3BvcnRDb250cm9sbGVy
IHNlbmRzIGEgcGFnZSBzY2FsZSBmYWN0b3IgdG8gUGFnZS4KKyAgICAgICAgICAgIEhvd2V2ZXIs
IHRoaXMgbWV0aG9kIHN0aWxsIHJlY2VpdmVzIGEgc2Nyb2xsIHBvc2l0aW9uIGJlY2F1c2Ugd2UK
KyAgICAgICAgICAgIGVuYWJsZSBkZWxlZ2F0ZXMgc2Nyb2xsaW5nLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6
CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQ
cm94eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUlt
cGw6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkUmVu
ZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRD
aGFuZ2VDb250ZW50c1Zpc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZp
ZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjphcHBseVBvc2l0aW9uQWZ0ZXJS
ZW5kZXJpbmdDb250ZW50cyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVn
YWN5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRMZWdhY3lJbXBsOjp1cGRh
dGVWaWV3cG9ydFNpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAg
ICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50
c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmlj
ZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
IChDb29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KToKKwogMjAxMy0wMS0xNyAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRl
ZCBHcmFwaGljczogTGF5ZXJUcmVlUmVuZGVyZXIgbWFuYWdlcyB0aGUgc3VyZmFjZSBvZiBVcGRh
dGVBdGxhcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXcuY3BwCmluZGV4IDE1NmRlZWRmMDIxMTE4M2NlMTNlNGJiYjM4Yzc1NjgyYTBkOWI5N2Mu
LjZmNTMyYzI1ODJhNDE0MzkxY2EzZjQ3ODg4OTA4MTRiODFlNjQ1ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtODQ2LDcg
Kzg0Niw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0
U2l6ZSgpCiAgICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHZpZXdwb3J0
U2l6ZS50b1NpemUoKSwgSW50U2l6ZSgpKTsKICAgICAvLyBUaGUgYmFja2luZyBzdG9yZSBzY2Fs
ZSBmYWN0b3Igc2hvdWxkIGFscmVhZHkgYmUgc2V0IHRvIHRoZSBkZXZpY2UgcGl4ZWwgcmF0aW8K
ICAgICAvLyBvZiB0aGUgdW5kZXJseWluZyB3aW5kb3csIHRodXMgd2Ugc2V0IHRoZSBlZmZlY3Rp
dmUgc2NhbGUgdG8gMSBoZXJlLgotICAgIHdlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUodmll
d3BvcnRTaXplKSksIDEsIEZsb2F0UG9pbnQoKSk7CisgICAgd2ViUGFnZVByb3h5LT5kcmF3aW5n
QXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZs
b2F0U2l6ZSh2aWV3cG9ydFNpemUpKSwgRmxvYXRQb2ludCgpKTsKIH0KIAogcXJlYWwgUVF1aWNr
V2ViVmlld0xlZ2FjeVByaXZhdGU6Onpvb21GYWN0b3IoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCmluZGV4IDJkZDQ1
ZDBlZmZlOWUwZjNmZmJhZDM2NDlkMzBlOTU3NmZiZjlkYzMuLjM2MWY3NGRhYjg1MWFkODk4ZWQz
OWQyNzdhN2E2ZjQ3OWIyNTk3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIFFS
YXdXZWJWaWV3OjpzZXRTaXplKGNvbnN0IFFTaXplJiBzaXplKQogICAgIGQtPm1fc2l6ZSA9IHNp
emU7CiAKICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShkLT5tX3NpemUsIFdlYkNvcmU6OkludFNp
emUoKSk7Ci0gICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6
SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBkLT5tX3NpemUpLCAxIC8qc2NhbGUqLywgV2Vi
Q29yZTo6RmxvYXRQb2ludCgpKTsKKyAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIGQtPm1fc2l6ZSksIFdl
YkNvcmU6OkZsb2F0UG9pbnQoKSk7CiB9CiAKIFdLUGFnZVJlZiBRUmF3V2ViVmlldzo6cGFnZVJl
ZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5jcHAKaW5kZXggYmUzYzZhYmQ1NWNhYTA0MWQxYmU5Mzc1OGY1OTNlNjUwZTllZGFjNS4uMGNj
MzQyOTk1OTZhMTFkNWM1OTNmZDE4Mjc4ZjUwZjRiN2MyZDRjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtNDEsNyArNDEs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eShEcmF3aW5nQXJlYVByb3h5KiBkcmF3
aW5nQXJlYVByb3h5KQogICAgIDogbV9kcmF3aW5nQXJlYVByb3h5KGRyYXdpbmdBcmVhUHJveHkp
CiAgICAgLCBtX3JlbmRlcmVyKGFkb3B0UmVmKG5ldyBMYXllclRyZWVSZW5kZXJlcih0aGlzKSkp
Ci0gICAgLCBtX2xhc3RTZW50U2NhbGUoMCkKIHsKIH0KIApAQCAtNTUsMTEgKzU0LDYgQEAgdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlVmlld3BvcnQoKQogICAgIG1f
ZHJhd2luZ0FyZWFQcm94eS0+dXBkYXRlVmlld3BvcnQoKTsKIH0KIAotZmxvYXQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci19
Ci0KIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmRpc3BhdGNoVXBkYXRlKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQogewogICAgIG1fcmVuZGVyZXItPmFwcGVu
ZFVwZGF0ZShmdW5jdGlvbik7CkBAIC0xODEsMTkgKzE3NSwxNiBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRBbmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQogICAg
IGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpzZXRBbmltYXRpb25zTG9j
a2VkLCBtX3JlbmRlcmVyLmdldCgpLCBsb2NrZWQpKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9y
eVZlY3RvcikKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFq
ZWN0b3J5VmVjdG9yKQogewogICAgIC8vIEluZm9ybSB0aGUgcmVuZGVyZXIgdG8gYWRqdXN0IHZp
ZXdwb3J0LWZpeGVkIGxheWVycy4KICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVS
ZW5kZXJlcjo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCwgbV9yZW5kZXJlci5nZXQoKSwgcmVjdCkp
OwogCi0gICAgY29uc3QgZmxvYXQgZWZmZWN0aXZlU2NhbGUgPSBkZXZpY2VTY2FsZUZhY3Rvcigp
ICogcGFnZVNjYWxlRmFjdG9yOwotCi0gICAgaWYgKHJlY3QgPT0gbV9sYXN0U2VudFZpc2libGVS
ZWN0ICYmIGVmZmVjdGl2ZVNjYWxlID09IG1fbGFzdFNlbnRTY2FsZSAmJiB0cmFqZWN0b3J5VmVj
dG9yID09IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yKQorICAgIGlmIChyZWN0ID09IG1fbGFz
dFNlbnRWaXNpYmxlUmVjdCAmJiB0cmFqZWN0b3J5VmVjdG9yID09IG1fbGFzdFNlbnRUcmFqZWN0
b3J5VmVjdG9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBh
Z2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OlNldFZpc2libGVDb250ZW50c1JlY3QocmVjdCwgZWZmZWN0aXZlU2NhbGUsIHRyYWplY3RvcnlW
ZWN0b3IpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOworICAgIG1fZHJh
d2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6U2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5
VmVjdG9yKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKICAgICBtX2xh
c3RTZW50VmlzaWJsZVJlY3QgPSByZWN0OwotICAgIG1fbGFzdFNlbnRTY2FsZSA9IGVmZmVjdGl2
ZVNjYWxlOwogICAgIG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yID0gdHJhamVjdG9yeVZlY3Rv
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmgKaW5kZXggMThiMmY4ODZhZTYzZGZmN2UyOGQ4YzFmZjQ1MTY1OGIzNTcyNTAzNC4uMGFh
OGI0N2ZkZjE4YzFjNTFiMDM3NTBhZTdjMjljYjkzY2QyZDQ4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3RvcjxD
b29yZGluYXRlZExheWVySUQ+Jik7CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihD
b29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOwotICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOworICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiB0cmFqZWN0b3J5VmVjdG9yKTsKICAgICB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292
ZXJlZFJlY3QpOwogICAgIHZvaWQgY3JlYXRlVGlsZUZvckxheWVyKENvb3JkaW5hdGVkTGF5ZXJJ
RCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFj
ZVVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHVwZGF0ZVRpbGVGb3JMYXllcihDb29yZGluYXRlZExh
eWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1
cmZhY2VVcGRhdGVJbmZvJik7CkBAIC05NiwxNSArOTYsMTIgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKIAotICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7Ci0KIHByb3RlY3RlZDoKICAgICB2b2lk
IGRpc3BhdGNoVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKIAogICAgIERyYXdpbmdB
cmVhUHJveHkqIG1fZHJhd2luZ0FyZWFQcm94eTsKICAgICBSZWZQdHI8TGF5ZXJUcmVlUmVuZGVy
ZXI+IG1fcmVuZGVyZXI7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fbGFzdFNlbnRWaXNpYmxl
UmVjdDsKLSAgICBmbG9hdCBtX2xhc3RTZW50U2NhbGU7CiAgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDFlYjE4MTk1MWIwYmViZDA4MTU4N2M5YWNj
ODRiN2EyNDVlM2M0NTkuLmJhZDYzODRkZTg2YmUwNGY5ZjFmNzU2MDk3ZWZhODU3NTcxNzk0NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtODYs
NyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHZpZXdwb3J0
VmlzaWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1JlY3QoKTsgfQogICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50UmVjdCBjb250ZW50c1JlY3QoKSBjb25zdDsKICAgICBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eSogY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoKSBjb25z
dCB7IHJldHVybiBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmdldCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiAvKiB2aXNpYmxlQ29udGVudHNSZWN0ICovLCBmbG9hdCAvKiBzY2FsZSAqLywgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgLyogdHJhamVjdG9yeVZlY3RvciAqLykgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiAvKiB2aXNpYmxlQ29udGVudHNSZWN0ICovLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiAv
KiB0cmFqZWN0b3J5VmVjdG9yICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogCiAgICAgV2Vi
UGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlUHJveHk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCmluZGV4IDY1ZjFi
OWViOTQ1YzYxMTFlMmVmZTNmMzRiMWQ4MDUxZmQwMGJlZjMuLjE4MzRmOWQwYTIzYzBjNDIwYmRm
Y2ZiMjE2ZGQwMTRhYWYwMGU0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcApAQCAtMzc2LDEwICszNzYsMTAgQEAgdm9pZCBEcmF3
aW5nQXJlYVByb3h5SW1wbDo6ZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
TWVzc2FnZShDb3JlSVAKICAgICAgICAgbV9jb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS0+
ZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZShjb25uZWN0aW9u
LCBtZXNzYWdlSUQsIGRlY29kZXIpOwogfQogCi12b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNv
bnRlbnRzUmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWpl
Y3RvcnlWZWN0b3IpCit2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpzZXRWaXNpYmxlQ29udGVu
dHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKICAgICBpZiAobV9j
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSkKLSAgICAgICAgbV9jb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNSZWN0
LCBzY2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7CisgICAgICAgIG1fY29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHktPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCwg
dHJhamVjdG9yeVZlY3Rvcik7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAppbmRleCA2Y2VkMjA3YjRjYzY5OGI3ZDJhNWMz
ZjZhMmI3ZGEzY2JiYjIxZmNjLi40YWU2MDIzMWFhMjkxMjNiMmQ3NTY1ODcyMmQ1N2NkMzhmMTk4
YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUlt
cGwuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnkpOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNp
YmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRz
UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeSkgT1ZFUlJJREU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJik7CiAjZW5kaWYKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKaW5kZXggZjcxYzAzYzAzM2FiZTFjNTIyZTZk
MWZjMGJhNGUzNDZkOTU0NTViMS4uNmZhOTRhMzkyMDAwM2Y1NjRjZWJkNjAyNzU1YzNjN2Q4NmIw
YWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRD
b250cm9sbGVyLmNwcApAQCAtMTk3LDYgKzE5Nyw4IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlcjo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBJ
CiAgICAgICAgIEZsb2F0UG9pbnQgY3VycmVudERpc2NyZXRlUG9zID0gcm91bmRlZEludFBvaW50
KG1fY29udGVudHNQb3NpdGlvbik7CiAgICAgICAgIEZsb2F0UG9pbnQgcGl4ZWxBbGlnbmVkUG9z
ID0gcGl4ZWxBbGlnbmVkRmxvYXRQb2ludChjdXJyZW50RGlzY3JldGVQb3MpOwogICAgICAgICBt
X2NvbnRlbnRzUG9zaXRpb24gPSBib3VuZENvbnRlbnRzUG9zaXRpb24ocGl4ZWxBbGlnbmVkUG9z
KTsKKworICAgICAgICBtX3dlYlBhZ2VQcm94eS0+c2NhbGVQYWdlKG1fcGFnZVNjYWxlRmFjdG9y
LCByb3VuZGVkSW50UG9pbnQobV9jb250ZW50c1Bvc2l0aW9uKSk7CiAgICAgfQogCiAgICAgLy8g
VGhlcmUgbWlnaHQgYmUgcmVuZGVyZWQgZnJhbWVzIG5vdCBjb3ZlcmluZyBvdXIgcmVxdWVzdGVk
IHBvc2l0aW9uIHlldCwgd2FpdCBmb3IgaXQuCkBAIC0yNTgsNyArMjYwLDcgQEAgdm9pZCBQYWdl
Vmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3QgRmxv
YXRQb2ludCYgcG9zaXQKICAgICBpZiAoIW1fcGVuZGluZ1Bvc2l0aW9uQ2hhbmdlKQogICAgICAg
ICBtX2NvbnRlbnRzUG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBpZiAoIW1fcGVuZGluZ1NjYWxl
Q2hhbmdlKQotICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOworICAgICAgICBhcHBs
eVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhzY2FsZSk7CiAKICAgICBzeW5jVmlzaWJsZUNv
bnRlbnRzKHRyYWplY3RvcnlWZWN0b3IpOwogfQpAQCAtMjcxLDcgKzI3Myw3IEBAIHZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlcjo6c3luY1Zpc2libGVDb250ZW50cyhjb25zdCBGbG9hdFBvaW50
JiB0cmFqZWN0b3J5VmVjCiAKICAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdChib3Vu
ZENvbnRlbnRzUG9zaXRpb24obV9jb250ZW50c1Bvc2l0aW9uKSwgdmlzaWJsZUNvbnRlbnRzU2l6
ZSgpKTsKICAgICB2aXNpYmxlQ29udGVudHNSZWN0LmludGVyc2VjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludDo6emVybygpLCBtX2NvbnRlbnRzU2l6ZSkpOwotICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNp
YmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3QsIG1fcGFnZVNjYWxlRmFjdG9yLCB0
cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dCh2aXNpYmxlQ29udGVudHNSZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKIAogICAgIG1fY2xpZW50
LT5kaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKIH0KQEAgLTMyNiw2ICszMjgsOSBAQCB2b2lk
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnJlc3VtZUNvbnRlbnQoKQogCiB2b2lkIFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXI6OmFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IHNj
YWxlKQogeworICAgIGlmIChtX3BhZ2VTY2FsZUZhY3RvciA9PSBzY2FsZSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgbV9wYWdlU2NhbGVGYWN0b3IgPSBzY2FsZTsKICAgICBtX3BlbmRpbmdTY2Fs
ZUNoYW5nZSA9IHRydWU7CiAgICAgc3luY1Zpc2libGVDb250ZW50cygpOwpAQCAtMzMzLDYgKzMz
OCw5IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVyUmVuZGVy
aW5nQ29udGVudHMoZmxvYXQgc2NhbGUpCiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6
YXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29udGVudHMoY29uc3QgRmxvYXRQb2ludCYgcG9z
KQogeworICAgIGlmIChtX2NvbnRlbnRzUG9zaXRpb24gPT0gcG9zKQorICAgICAgICByZXR1cm47
CisKICAgICBtX2NvbnRlbnRzUG9zaXRpb24gPSBwb3M7CiAgICAgbV9wZW5kaW5nUG9zaXRpb25D
aGFuZ2UgPSB0cnVlOwogICAgIHN5bmNWaXNpYmxlQ29udGVudHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKaW5kZXgg
ZWIwNzI2M2U4ZThkOTE4NTJjZDFjZTY2Mjc5YjEyNDdlMGVmNWIxMy4uOTU4MzFhMjVlNDU4Njhk
M2FmOTBhYTdiYjk1N2Q0NGNjYjYyNjliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
dm9pZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lkIFBhZ2VDbGll
bnRMZWdhY3lJbXBsOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogewogI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQotICAgIG1fdmlldy0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxl
Q29udGVudHNSZWN0KEludFJlY3Qocm91bmRlZEludFBvaW50KG1fdmlldy0+cGFnZVBvc2l0aW9u
KCkpLCBtX3ZpZXctPnNpemUoKSksIG1fdmlldy0+cGFnZVNjYWxlRmFjdG9yKCksIEZsb2F0UG9p
bnQoKSk7CisgICAgbV92aWV3LT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250
ZW50c1JlY3QoSW50UmVjdChyb3VuZGVkSW50UG9pbnQobV92aWV3LT5wYWdlUG9zaXRpb24oKSks
IG1fdmlldy0+c2l6ZSgpKSwgRmxvYXRQb2ludCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApp
bmRleCAwZmZkOTIzNGMxZTg4Mzk3OWNiZTFhMzI0ZWE5N2Y1NjE4YTAwMjVhLi40MTgzMjM3Zjk0
N2U2NmViMDM2ODE4Zjg1MzNmMjNkZmU0NmViOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTEyMiw3ICsx
MjIsNiBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3BlbmRpbmdDb250ZW50c1Nj
YWxlQWRqdXN0bWVudChmYWxzZSkKICAgICAsIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVu
dChmYWxzZSkKICAgICAsIG1fY29vcmRpbmF0b3IoMCkKLSAgICAsIG1fY29udGVudHNTY2FsZSgx
KQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fY2FudmFzUGxh
dGZvcm1MYXllcigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIodGhpcywgJkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCkBAIC02ODYs
MTYgKzY4NSwxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNv
bnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdAogICAgIHNldE5lZWRzVmlzaWJs
ZVJlY3RBZGp1c3RtZW50KCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7Ci0gICAgbV9jb250ZW50c1Nj
YWxlID0gc2NhbGU7CiAgICAgaWYgKHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSkKICAgICAgICAg
bV9wZW5kaW5nQ29udGVudHNTY2FsZUFkanVzdG1lbnQgPSB0cnVlOwogfQogCiBmbG9hdCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKQogewotICAgIHJl
dHVybiBzZWxmT3JBbmNlc3RvckhhdmVOb25BZmZpbmVUcmFuc2Zvcm1zKCkgPyAxIDogbV9jb250
ZW50c1NjYWxlOworICAgIHJldHVybiBzZWxmT3JBbmNlc3RvckhhdmVOb25BZmZpbmVUcmFuc2Zv
cm1zKCkgPyAxIDogZGV2aWNlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2FsZUZhY3RvcigpOwogfQog
CiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29udGVudHNTY2FsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IDdlYTM4MWY3Y2Y3Yzc1YWQzNGQ0NTM4NzkwYTBlMzAwYzQ1ZjNhNDguLjY2ODlh
OWQ4MDBhMWJkZWUwNWNmM2MyY2MyYzEzMWY3MzE2M2QzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0xMjMsNiAr
MTIzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0
UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxh
eSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRl
KGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQpAQCAtMTM3LDcgKzEzOCw2IEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IGNvbXB1
dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNlKCk7CiAgICAgdm9pZCBjb21wdXRlUGl4ZWxBbGlnbm1l
bnQoRmxvYXRQb2ludCYgcG9zaXRpb24sIEZsb2F0U2l6ZSYsIEZsb2F0UG9pbnQzRCYgYW5jaG9y
UG9pbnQsIEZsb2F0U2l6ZSYgYWxpZ25tZW50T2Zmc2V0KTsKIAotICAgIHZvaWQgc2V0Q29udGVu
dHNTY2FsZShmbG9hdCk7CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5
VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyKGJvb2wp
OwpAQCAtMjQxLDcgKzI0MSw2IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJDbGllbnQqIG1fY29vcmRpbmF0b3I7CiAgICAgT3duUHRyPFRpbGVkQmFja2lu
Z1N0b3JlPiBtX21haW5CYWNraW5nU3RvcmU7CiAgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3Jl
PiBtX3ByZXZpb3VzQmFja2luZ1N0b3JlOwotICAgIGZsb2F0IG1fY29udGVudHNTY2FsZTsKIAog
ICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7CiAgICAgTmF0aXZlSW1hZ2VQdHIg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCAyZWFmODY1YTQ0NDI3
NDA5MmQ4YmZhYTk3M2UwNDcwMjcwNzQ4NjBhLi5jYTM3NTZhZGM5NTI5MGU1NGJlZGRiYWJkODFi
ZTZjNjFiOGViMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTg3LDcgKzg3LDYgQEAgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkK
ICAgICAsIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcyhmYWxzZSkKICAgICAsIG1fd2FpdGluZ0Zv
clVJUHJvY2Vzcyh0cnVlKQogICAgICwgbV9pc1N1c3BlbmRlZChmYWxzZSkKLSAgICAsIG1fY29u
dGVudHNTY2FsZSgxKQogICAgICwgbV9zaG91bGRTZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGUodHJ1
ZSkKICAgICAsIG1fc2hvdWxkU3luY0ZyYW1lKGZhbHNlKQogICAgICwgbV9kaWRJbml0aWFsaXpl
Um9vdENvbXBvc2l0aW5nTGF5ZXIoZmFsc2UpCkBAIC02ODIsMTIgKzY4MSwyMSBAQCBQYXNzT3du
UHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhp
Y3NMYXllcihHcmFwaGljcwogICAgIGxheWVyLT5zZXRDb29yZGluYXRvcih0aGlzKTsKICAgICBt
X3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyKTsKICAgICBtX2xheWVyc1RvQ3JlYXRlLmFwcGVu
ZChsYXllci0+aWQoKSk7Ci0gICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1Nj
YWxlKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwogfQogCitm
bG9hdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOworfQorCitmbG9h
dCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fd2ViUGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKIGJvb2wgTGF5ZXJU
cmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkKIHsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTc1NCwyNCArNzYyLDE4IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIGNvCiAgICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
U2V0TGF5ZXJBbmltYXRpb25zKGxheWVySUQsIGFjdGl2ZUFuaW1hdGlvbnMpKTsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9y
eVZlY3RvcikKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVu
dHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9y
eVZlY3RvcikKIHsKLSAgICBib29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92
aXNpYmxlQ29udGVudHNSZWN0OwotICAgIGJvb2wgY29udGVudHNTY2FsZURpZENoYW5nZSA9IHNj
YWxlICE9IG1fY29udGVudHNTY2FsZTsKLQogICAgIC8vIEEgemVybyB0cmFqZWN0b3J5VmVjdG9y
IGluZGljYXRlcyB0aGF0IHRpbGVzIGFsbCBhcm91bmQgdGhlIHZpZXdwb3J0IGFyZSByZXF1ZXN0
ZWQuCiAgICAgdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyLmdldCgpKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcih0cmFq
ZWN0b3J5VmVjdG9yKTsKIAotICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UgfHwgY29udGVu
dHNTY2FsZURpZENoYW5nZSkgeworICAgIGJvb2wgY29udGVudHNSZWN0RGlkQ2hhbmdlID0gcmVj
dCAhPSBtX3Zpc2libGVDb250ZW50c1JlY3Q7CisgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5n
ZSkgewogICAgICAgICBtX3Zpc2libGVDb250ZW50c1JlY3QgPSByZWN0OwotICAgICAgICBtX2Nv
bnRlbnRzU2NhbGUgPSBzY2FsZTsKIAogICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5k
KCk7CiAgICAgICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoY29udGVudHNTY2FsZURpZENoYW5nZSkKLSAgICAg
ICAgICAgICAgICAoKml0KS0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7Ci0gICAgICAgICAgICBp
ZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKQotICAgICAgICAgICAgICAgICgqaXQpLT5zZXROZWVk
c1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOworICAgICAgICAgICAgKCppdCktPnNldE5lZWRzVmlz
aWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc4Niw2ICs3ODgs
MTQgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG8KICAgICAgICAgbV9zaG91bGRTZW5kU2Nyb2xs
UG9zaXRpb25VcGRhdGUgPSB0cnVlOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKK3sKKyAgICBtX3Jvb3RMYXllci0+
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICBpZiAobV9w
YWdlT3ZlcmxheUxheWVyKQorICAgICAgICBtX3BhZ2VPdmVybGF5TGF5ZXItPmRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworfQorCiBHcmFwaGljc0xheWVyRmFjdG9yeSogQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpncmFwaGljc0xheWVyRmFjdG9yeSgpCiB7CiAgICAgcmV0dXJu
IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCmluZGV4IDNjNTBjNTczNWQwOWUxYmYwYzBlY2U4ODVhMDliOGYxODJmNDM5
Y2QuLjE3NzYzODA5Nzg4YWIwOTc1ZGQxN2IzMmM0YmVmNmY5YWZhZjRkMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBA
IC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYXVzZVJlbmRlcmlu
ZygpIHsgbV9pc1N1c3BlbmRlZCA9IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVu
ZGVyaW5nKCkgeyBtX2lzU3VzcGVuZGVkID0gZmFsc2U7IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0
ZUltYWdlQmFja2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsgfQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250
ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFj
dG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBPVkVSUklERTsKIApAQCAtMTI0LDYgKzEyNCw4
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKTsKICAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgdmlydHVh
bCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
ZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBDb29yZGlu
YXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0b3IKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwpAQCAtMTk1LDcg
KzE5Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JVSVByb2Nlc3M7CiAgICAg
Ym9vbCBtX2lzU3VzcGVuZGVkOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2libGVDb250
ZW50c1JlY3Q7Ci0gICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwogICAgIGJvb2wgbV9zaG91bGRT
ZW5kU2Nyb2xsUG9zaXRpb25VcGRhdGU7CiAKICAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJU
cmVlQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgppbmRleCAyYTEwNTllZThiYWRi
MDM0ZjI0MTBjMGJlNTNkODM2ZTY2NWJjZmU0Li42NjcxYjMyN2ZlYzZlMTRlMDc0MjY3NmQ5NDkw
YjM4NGZmMWY5YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3
IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBtZXNzYWdlcyAtPiBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QgTGVnYWN5UmVjZWl2ZXIgewotICAgIFNldFZpc2libGVDb250ZW50
c1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxl
LCBXZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5KQorICAgIFNldFZpc2libGVD
b250ZW50c1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgdHJhamVjdG9yeVZlY3RvcnkpCiAgICAgUmVuZGVyTmV4dEZyYW1lKCkK
ICAgICBQdXJnZUJhY2tpbmdTdG9yZXMoKQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBjMDQzYmI3MjEzZDA3NjUyMDVhOGUzZTBhNjViNWY3NjAxNGQyOGVmLi5hNzQ0YmI5MDMx
NmRhNzA4ODJjMGFkNDc4ZjI1ZGI2Nzk1ZTlkODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMjcxLDYgKzEyNzEsOCBAQCB2b2lkIFdl
YlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkKGZpeGVkKTsKICAgICBtX3BhZ2UtPnNldHRpbmdz
KCktPnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGZpeGVkKTsKKyAgICBt
X3BhZ2UtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
Zml4ZWQpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IoZml4ZWQpOwogI2VuZGlmCiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkgJiYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>