<?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>126536</bug_id>
          
          <creation_ts>2014-01-06 12:51:44 -0800</creation_ts>
          <short_desc>TileController can fail to receive exposedRect from the drawing area if set at the wrong time</short_desc>
          <delta_ts>2014-01-08 17:34:42 -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>126537</dependson>
    
    <dependson>126592</dependson>
          <blocked>126531</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philn</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964725</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-06 12:51:44 -0800</bug_when>
    <thetext>If something tries to update the view exposed rect before we have a TileController, the TileController won&apos;t get the exposed rect even when it is created.

I&apos;m going to flip this around to pull the exposed rect from FrameView, so it will always be valid, and do some cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964835</commentid>
    <comment_count>1</comment_count>
      <attachid>220478</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-06 18:07:32 -0800</bug_when>
    <thetext>Created attachment 220478
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964836</commentid>
    <comment_count>2</comment_count>
      <attachid>220478</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-06 18:13:26 -0800</bug_when>
    <thetext>Comment on attachment 220478
patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        TileController can fail to receive exposedRect from the drawing area if if set at the wrong time

if if.

&gt; Source/WebCore/platform/graphics/GraphicsLayerClient.h:100
&gt; +    virtual FloatRect exposedRect() const { return FloatRect(); }

I think this should return the infinite rect?

&gt; Source/WebCore/platform/graphics/ca/mac/TileController.mm:308
&gt; +void TileController::exposedRectChanged()

DidChange?

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:378
&gt; +    FloatRect visibleRect = m_rootLayer.get().frame;

[m_rootLayer frame];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965122</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-07 12:48:43 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/161447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965126</commentid>
    <comment_count>4</comment_count>
      <attachid>220478</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-07 12:57:58 -0800</bug_when>
    <thetext>Comment on attachment 220478
patch

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

&gt; Source/WebCore/page/FrameView.cpp:4384
&gt; +    m_exposedRect = exposedRect;
&gt; +
&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +    // FIXME: We should support clipping to the exposed rect for subframes as well.
&gt; +    if (m_frame-&gt;isMainFrame()) {
&gt; +        if (TiledBacking* tiledBacking = this-&gt;tiledBacking())
&gt; +            tiledBacking-&gt;exposedRectChanged();
&gt; +    }

This doesn&apos;t check if exposedRectChanged.

&gt; Source/WebCore/page/FrameView.h:636
&gt; +    FloatRect m_exposedRect;

Maybe a comment to say which flavor of &quot;exposed&quot;, and what coordinate system this is in.

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:2608
&gt; +FloatRect RenderLayerBacking::exposedRect() const
&gt; +{
&gt; +    // FIXME: We should support clipping to the exposed rect for subframes as well.
&gt; +    if (m_isMainFrameRenderViewLayer)
&gt; +        return owningLayer().renderer().view().frameView().exposedRect();
&gt; +
&gt; +    return FloatRect::infiniteRect();
&gt; +}

This makes me sad. Currently flushing graphics layers computes a visible rect (&apos;exposedness&quot;)  for each layer based on the rect passed into flushCompositingState().

You&apos;ve added an alternate way to get at the exposed rect, and one which is broken for all layers other than the main frame&apos;s layer.

Do we even need this, given that GraphicsLayerCA has FloatRect m_visibleRect; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965134</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-07 13:20:17 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 126592</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965143</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-07 13:42:32 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 220478 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=220478&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerBacking.cpp:2608
&gt; &gt; +FloatRect RenderLayerBacking::exposedRect() const
&gt; &gt; +{
&gt; &gt; +    // FIXME: We should support clipping to the exposed rect for subframes as well.
&gt; &gt; +    if (m_isMainFrameRenderViewLayer)
&gt; &gt; +        return owningLayer().renderer().view().frameView().exposedRect();
&gt; &gt; +
&gt; &gt; +    return FloatRect::infiniteRect();
&gt; &gt; +}
&gt; 
&gt; This makes me sad. Currently flushing graphics layers computes a visible rect (&apos;exposedness&quot;)  for each layer based on the rect passed into flushCompositingState().
&gt; 
&gt; You&apos;ve added an alternate way to get at the exposed rect, and one which is broken for all layers other than the main frame&apos;s layer.
&gt; 
&gt; Do we even need this, given that GraphicsLayerCA has FloatRect m_visibleRect; ?

After re-discussing http://trac.webkit.org/changeset/139822 and this patch, smfr sez &quot;so why not store it, as you are doing, then push it onto the TiledBacking when the TiledBacking is created? (and revert the confusing GraphicsLayerClient part)&quot;. Which I like better than this mess, so I&apos;m going to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965245</commentid>
    <comment_count>7</comment_count>
      <attachid>220568</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-07 16:36:04 -0800</bug_when>
    <thetext>Created attachment 220568
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965252</commentid>
    <comment_count>8</comment_count>
      <attachid>220568</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-07 16:49:50 -0800</bug_when>
    <thetext>Comment on attachment 220568
patch

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

&gt; Source/WebCore/page/FrameView.h:449
&gt; +    void setExposedRect(FloatRect);
&gt; +    FloatRect exposedRect() const { return m_exposedRect; }

Please add comments to say what &quot;exposed&quot; means and why it&apos;s different from visibleContentRect etc.

&gt; Source/WebCore/platform/graphics/ca/mac/TileController.mm:55
&gt; +    , m_exposedRect(FloatRect::infiniteRect())

Sad that this exposedRect only makes sense for the main TileController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965276</commentid>
    <comment_count>9</comment_count>
      <attachid>220568</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2014-01-07 17:52:43 -0800</bug_when>
    <thetext>Comment on attachment 220568
patch

Attachment 220568 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/6233419985977344</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965419</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-08 03:07:10 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 220568 [details])
&gt; Attachment 220568 [details] did not pass efl-wk2-ews (efl-wk2):
&gt; Output: http://webkit-queues.appspot.com/results/6233419985977344

c++: internal compiler error: Killed (program cc1plus)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965706</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-08 17:34:42 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/161530</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220478</attachid>
            <date>2014-01-06 18:07:32 -0800</date>
            <delta_ts>2014-01-07 16:36:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>zoom.diff</filename>
            <type>text/plain</type>
            <size>44222</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMDdiN2ViLi43NjE5NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTQg
QEAKIDIwMTQtMDEtMDYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgVGlsZUNvbnRyb2xsZXIgY2FuIGZhaWwgdG8gcmVjZWl2ZSBleHBvc2VkUmVjdCBm
cm9tIHRoZSBkcmF3aW5nIGFyZWEgaWYgaWYgc2V0IGF0IHRoZSB3cm9uZyB0aW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1MzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGV4cG9zZWRSZWN0
IHRvIEZyYW1lVmlldyBzbyBpdCBjYW4gYmUgcHVzaGVkIGluIGZyb20gV2ViS2l0IGJlZm9yZSB3
ZSBoYXZlCisgICAgICAgIGEgVGlsZWRCYWNraW5nLCBhbmQgY2FuIGJlIHJldHJpZXZlZCBieSB0
aGUgVGlsZWRCYWNraW5nIHdoZW4gaXQgbmVlZHMgdG8uCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgRXhwb3J0IHNvbWUgdGhpbmdzLgorCisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRFeHBvc2VkUmVjdCk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgU3RvcmUgdGhlIGV4cG9zZWQgcmVjdCBvbiBGcmFtZVZp
ZXcuIFdoZW4gaXQgY2hhbmdlcywgaWYgdGhlIG1haW4gZnJhbWUKKyAgICAgICAgaGFzIGEgVGls
ZWRCYWNraW5nLCBpbmZvcm0gaXQgb2YgdGhlIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDbGllbnQ6OmV4cG9zZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9UaWxlZEJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXJDbGllbnQuaDoKKyAgICAgICAgUGx1bWJpbmcgc28gdGhhdCBUaWxlQ29udHJvbGxlciBjYW4g
cmV0cmlldmUgdGhlIGV4cG9zZWRSZWN0IGZyb20gRnJhbWVWaWV3LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVD
b250cm9sbGVyOjpwbGF0Zm9ybUNBTGF5ZXJFeHBvc2VkUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlQ29udHJvbGxlcjo6dGlsZXNXb3VsZENoYW5nZUZvclZpc2libGVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpleHBvc2VkUmVjdENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNvbXB1dGVUaWxlQ292ZXJhZ2VSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpyZXZhbGlkYXRlVGlsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnVwZGF0ZVRpbGVDb3ZlcmFnZU1hcCk6CisgICAg
ICAgIERvbid0IHN0b3JlIHRoZSBleHBvc2VkIHJlY3Qgb3IgY2xpcHNUb0V4cG9zZWRSZWN0IG9u
IFRpbGVDb250cm9sbGVyLgorICAgICAgICBJbnN0ZWFkLCByZXRyaWV2ZSBpdCBmcm9tIG91ciBj
bGllbnQuCisgICAgICAgIE1ha2UgdXNlIG9mIHRoZSBmYWN0IHRoYXQgd2UgY2FuIHRlc3QgaWYg
YSByZWN0IGlzIGluZmluaXRlCisgICAgICAgIGluc3RlYWQgb2YgaGF2aW5nIGEgc2VwYXJhdGUg
Ym9vbGVhbiBwcm9wZXJ0eSBmb3IgdGhhdC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVRpbGVDb3ZlcmFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmV4cG9zZWRSZWN0KToKKyAg
ICAgICAgSGFuZCB0aGUgRnJhbWVWaWV3J3MgZXhwb3NlZFJlY3QgYmFjayB0byBvdXIgR3JhcGhp
Y3NMYXllci4KKyAgICAgICAgV2Ugb25seSBzdXBwb3J0IGNsaXBwaW5nIGZvciB0aGUgbWFpbiBm
cmFtZSBUaWxlQ29udHJvbGxlciBmb3Igbm93LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5oOgorCisyMDE0LTAxLTA2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCB7SW50UmVjdCwgRmxvYXRSZWN0fTo6aW5maW5p
dGVSZWN0KCkgYW5kIDo6aXNJbmZpbml0ZSgpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1MzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwMDky
OTE1Li5kZDZkMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTI2NCw2ICsxMjY0LDcgQEAg
X19aTjdXZWJDb3JlOUZyYW1lVmlldzEzcGFpbnRDb250ZW50c0VQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxM3NldE5vZGVUb0RyYXdF
UE5TXzROb2RlRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0YWRqdXN0Vmlld1NpemVFdgogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzE0aW52YWxpZGF0ZVJlY3RFUktOU183SW50UmVjdEUKK19fWk43
V2ViQ29yZTlGcmFtZVZpZXcxNHNldEV4cG9zZWRSZWN0RU5TXzlGbG9hdFJlY3RFCiBfX1pON1dl
YkNvcmU5RnJhbWVWaWV3MTRzZXROZWVkc0xheW91dEV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3
MTRzZXRUcmFuc3BhcmVudEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTVzZXRGb290ZXJIZWln
aHRFaQpAQCAtMTU3OSw2ICsxNTgwLDcgQEAgX19aTks3V2ViQ29yZTE1R3JhcGhpY3NMYXllckNB
MjFjYW5UaHJvdHRsZUxheWVyRmx1c2hFdgogX19aTks3V2ViQ29yZTE1R3JhcGhpY3NMYXllckNB
MjRkdW1wQWRkaXRpb25hbFByb3BlcnRpZXNFUk5TXzEwVGV4dFN0cmVhbUVpagogX19aTks3V2Vi
Q29yZTE1R3JhcGhpY3NMYXllckNBMjVzaG91bGRSZXBhaW50T25TaXplQ2hhbmdlRXYKIF9fWk5L
N1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTI2YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGVFdgor
X19aTks3V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMjZwbGF0Zm9ybUNBTGF5ZXJFeHBvc2VkUmVj
dEV2CiBfX1pOSzdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EzMHZpc2libGVSZWN0Q2hhbmdlUmVx
dWlyZXNGbHVzaEVSS05TXzlGbG9hdFJlY3RFCiBfX1pOSzdXZWJDb3JlMTVHcmFwaGljc0xheWVy
Q0EzMnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yRXYKIF9fWk5LN1dlYkNvcmUxNUdy
YXBoaWNzTGF5ZXJDQTMzcGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyRVBOU18xNVBs
YXRmb3JtQ0FMYXllckUKQEAgLTE4NTUsNiArMTg1Nyw3IEBAIF9fWlRobj8/P19ON1dlYkNvcmUx
NUdyYXBoaWNzTGF5ZXJDQTQwcGxhdGZvcm1DQUxheWVyU2V0TmVlZHNUb1JldmFsaWRhdGVUaWxl
c0V2CiBfX1pUaG4/Pz9fTks3V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMzJwbGF0Zm9ybUNBTGF5
ZXJEZXZpY2VTY2FsZUZhY3RvckV2CiBfX1pUaG4/Pz9fTks3V2ViQ29yZTE1R3JhcGhpY3NMYXll
ckNBMzNwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXJFUE5TXzE1UGxhdGZvcm1DQUxh
eWVyRQogX19aVGhuPz8/X05LN1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTQ5cGxhdGZvcm1DQUxh
eWVyQ29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlc0VQTlNfMTVQbGF0Zm9ybUNBTGF5
ZXJFCitfX1pUaG4/Pz9fTks3V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMjZwbGF0Zm9ybUNBTGF5
ZXJFeHBvc2VkUmVjdEV2CiBfZmlsZW5hbWVCeUZpeGluZ0lsbGVnYWxDaGFyYWN0ZXJzCiBfaGFz
Q2FzZUluc2Vuc2l0aXZlUHJlZml4CiBfaGFzQ2FzZUluc2Vuc2l0aXZlU3Vic3RyaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNDg2M2UzMC4uYmI1ZmM5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjAxLDYgKzIwMSw3IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3
KEZyYW1lJiBmcmFtZSkKICAgICAsIG1fZGVmZXJyZWRSZXBhaW50VGltZXIodGhpcywgJkZyYW1l
Vmlldzo6ZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZCkKICAgICAsIG1faXNUcmFja2luZ1JlcGFp
bnRzKGZhbHNlKQogICAgICwgbV9zaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbih0cnVlKQorICAg
ICwgbV9leHBvc2VkUmVjdChGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpKQogICAgICwgbV9kZWZl
clNldE5lZWRzTGF5b3V0cygwKQogICAgICwgbV9zZXROZWVkc0xheW91dFdhc0RlZmVycmVkKGZh
bHNlKQogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQzNzEsNCArNDM3MiwxNyBAQCB2b2lkIEZyYW1l
Vmlldzo6bm90aWZ5V2lkZ2V0cyhXaWRnZXROb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogICAg
ICAgICBwcm90ZWN0ZWRXaWRnZXRzW2ldLT5ub3RpZnlXaWRnZXQobm90aWZpY2F0aW9uKTsKIH0K
IAordm9pZCBGcmFtZVZpZXc6OnNldEV4cG9zZWRSZWN0KEZsb2F0UmVjdCBleHBvc2VkUmVjdCkK
K3sKKyAgICBtX2V4cG9zZWRSZWN0ID0gZXhwb3NlZFJlY3Q7CisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IGNsaXBwaW5n
IHRvIHRoZSBleHBvc2VkIHJlY3QgZm9yIHN1YmZyYW1lcyBhcyB3ZWxsLgorICAgIGlmIChtX2Zy
YW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFj
a2luZyA9IHRoaXMtPnRpbGVkQmFja2luZygpKQorICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5l
eHBvc2VkUmVjdENoYW5nZWQoKTsKKyAgICB9CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMWY0NTRiNC4uYWUxYTNlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC00NDUsNiArNDQ1LDkgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZGRUcmFja2VkUmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYpOwogCisgICAgdm9pZCBz
ZXRFeHBvc2VkUmVjdChGbG9hdFJlY3QpOworICAgIEZsb2F0UmVjdCBleHBvc2VkUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZXhwb3NlZFJlY3Q7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
Ym9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBj
b25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRS
ZWN0JiB1cGRhdGVSZWN0KSBPVkVSUklERTsKQEAgLTYzMCw2ICs2MzMsOCBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuOwogCisgICAgRmxvYXRSZWN0
IG1fZXhwb3NlZFJlY3Q7CisKICAgICB1bnNpZ25lZCBtX2RlZmVyU2V0TmVlZHNMYXlvdXRzOwog
ICAgIGJvb2wgbV9zZXROZWVkc0xheW91dFdhc0RlZmVycmVkOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKaW5kZXgg
OTBmOWU4Mi4uMDE4YTZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2ludDsKQEAgLTk1LDYgKzk3LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTa2lwTGF5ZXJJbkR1bXAoY29uc3Qg
R3JhcGhpY3NMYXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IHNob3VsZER1bXBQcm9wZXJ0eUZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBj
aGFyKikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCBGbG9hdFJlY3QgZXhw
b3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQorCiAjaWZuZGVmIE5ERUJV
RwogICAgIC8vIFJlbmRlckxheWVyQmFja2luZyBvdmVycmlkZXMgdGhpcyB0byB2ZXJpZnkgdGhh
dCBpdCBpcyBub3QKICAgICAvLyBjdXJyZW50bHkgcGFpbnRpbmcgY29udGVudHMuIEFuIEFTU0VS
VCBmYWlscywgaWYgaXQgaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UaWxlZEJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZy5oCmluZGV4IGEwNWRiZjkuLjAzY2U1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCkBAIC00Nyw5ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgdGlsZXNXb3VsZENoYW5nZUZvclZpc2libGVSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBvc2VkUmVjdChj
b25zdCBGbG9hdFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldENsaXBzVG9FeHBvc2Vk
UmVjdChib29sKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNsaXBzVG9FeHBvc2VkUmVjdCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhwb3NlZFJlY3RDaGFuZ2VkKCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHByZXBvcHVsYXRlUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmgKaW5kZXggMWMzN2QwMC4uYjJkMTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE4NCw3ICsxODQsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2
YWxpZGF0ZVRpbGVzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBmbG9hdCBwbGF0Zm9ybUNBTGF5
ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgZmxvYXQg
cGxhdGZvcm1DQUxheWVyQ29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlcyhQbGF0Zm9y
bUNBTGF5ZXIqKSBjb25zdCBPVkVSUklERTsKLQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IHBsYXRm
b3JtQ0FMYXllckV4cG9zZWRSZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jbGllbnQt
PmV4cG9zZWRSZWN0KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDb21taXR0aW5nQ2hhbmdlcygp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faXNDb21taXR0aW5nQ2hhbmdlczsgfQogCiAgICAg
dmlydHVhbCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXll
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyQ2xpZW50LmgKaW5kZXggYTIyM2YxNi4uZWJjMDEyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xp
ZW50LmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgcGxhdGZv
cm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBmbG9h
dCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c1NjYWxlTXVsdGlwbGllckZvck5ld1RpbGVzKFBsYXRm
b3JtQ0FMYXllciopIGNvbnN0IHsgcmV0dXJuIDE7IH0KIAorICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHBsYXRmb3JtQ0FMYXllckV4cG9zZWRSZWN0KCkgY29uc3QgPSAwOworCiAgICAgdmlydHVhbCBi
b29sIGlzQ29tbWl0dGluZ0NoYW5nZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvVGlsZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9UaWxlQ29udHJvbGxlci5oCmluZGV4IGY0NzVkYTkuLjlhOTE2NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJv
bGxlci5oCkBAIC0xMDIsOSArMTAyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaWxlZEJhY2tpbmcg
bWVtYmVyIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHRpbGVzV291bGRDaGFuZ2VG
b3JWaXNpYmxlUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RXhwb3NlZFJlY3QoY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIGNsaXBzVG9FeHBvc2VkUmVjdCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fY2xp
cHNUb0V4cG9zZWRSZWN0OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENsaXBzVG9FeHBvc2VkUmVj
dChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhwb3NlZFJlY3RDaGFuZ2VkKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHByZXBvcHVsYXRlUmVjdChjb25zdCBGbG9hdFJl
Y3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNJbldpbmRvdyhib29sKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGlsZUNvdmVyYWdlKFRpbGVDb3ZlcmFnZSkgT1ZF
UlJJREU7CkBAIC0xNDYsNiArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgT1ZFUlJJREUgeyB9CiAg
ICAgdmlydHVhbCBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgRmxvYXRSZWN0IHBsYXRmb3JtQ0FMYXllckV4cG9zZWRS
ZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICBJbnRSZWN0IGJvdW5kcygpIGNvbnN0OwogICAg
IEludFJlY3QgYm91bmRzV2l0aG91dE1hcmdpbigpIGNvbnN0OwpAQCAtMjAwLDcgKzE5OSw2IEBA
IHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3RpbGVTaXplOwogICAgIEZsb2F0UmVjdCBtX3Zpc2li
bGVSZWN0OwogICAgIEZsb2F0UmVjdCBtX3Zpc2libGVSZWN0QXRMYXN0UmV2YWxpZGF0ZTsKLSAg
ICBGbG9hdFJlY3QgbV9leHBvc2VkUmVjdDsgLy8gVGhlIGV4cG9zZWQgYXJlYSBvZiBjb250YWlu
aW5nIHBsYXRmb3JtIHZpZXdzLgogICAgIEludFJlY3QgbV9ib3VuZHNBdExhc3RSZXZhbGlkYXRl
OwogICAgIAogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fc2Vjb25kYXJ5VGlsZUNvdmVyYWdlUmVj
dHM7CkBAIC0yNDUsNyArMjQzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdW5wYXJlbnRzT2Zm
c2NyZWVuVGlsZXM7CiAgICAgYm9vbCBtX2FjY2VsZXJhdGVzRHJhd2luZzsKICAgICBib29sIG1f
dGlsZXNBcmVPcGFxdWU7Ci0gICAgYm9vbCBtX2NsaXBzVG9FeHBvc2VkUmVjdDsKICAgICBib29s
IG1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3I7IC8vIFVzZWQgdG8gbWFrZSBsb3ct
cmVzIHRpbGVzIHdoZW4gem9vbWluZy4KIAogICAgIENvbG9yIG1fdGlsZURlYnVnQm9yZGVyQ29s
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
VGlsZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvVGlsZUNvbnRyb2xsZXIubW0KaW5kZXggMDJmYjlmNy4uZTk3MzM5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJv
bGxlci5tbQpAQCAtNjcsNyArNjcsNiBAQCBUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIo
UGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1MYXllcikKICAgICAsIG1fdW5wYXJlbnRzT2Zm
c2NyZWVuVGlsZXMoZmFsc2UpCiAgICAgLCBtX2FjY2VsZXJhdGVzRHJhd2luZyhmYWxzZSkKICAg
ICAsIG1fdGlsZXNBcmVPcGFxdWUoZmFsc2UpCi0gICAgLCBtX2NsaXBzVG9FeHBvc2VkUmVjdChm
YWxzZSkKICAgICAsIG1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3IoZmFsc2UpCiAg
ICAgLCBtX3RpbGVEZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX2luZGljYXRvck1vZGUoQXN5
bmNTY3JvbGxpbmdJbmRpY2F0aW9uKQpAQCAtMjEwLDYgKzIwOSwxMSBAQCBib29sIFRpbGVDb250
cm9sbGVyOjpwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxheWVy
KikgY29uc3QKICAgICByZXR1cm4gb3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5
ZXJTaG93UmVwYWludENvdW50ZXIoMCk7CiB9CiAKK0Zsb2F0UmVjdCBUaWxlQ29udHJvbGxlcjo6
cGxhdGZvcm1DQUxheWVyRXhwb3NlZFJlY3QoKSBjb25zdAoreworICAgIHJldHVybiBvd25pbmdH
cmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckV4cG9zZWRSZWN0KCk7Cit9CisKIHZvaWQg
VGlsZUNvbnRyb2xsZXI6OnNldFNjYWxlKGZsb2F0IHNjYWxlKQogewogICAgIEFTU0VSVChvd25p
bmdHcmFwaGljc0xheWVyKCktPmlzQ29tbWl0dGluZ0NoYW5nZXMoKSk7CkBAIC0yNzcsOSArMjgx
LDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0VmlzaWJsZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiB2aXNpYmxlUmVjdCkKIGJvb2wgVGlsZUNvbnRyb2xsZXI6OnRpbGVzV291bGRDaGFuZ2VGb3JW
aXNpYmxlUmVjdChjb25zdCBGbG9hdFJlY3QmIG5ld1Zpc2libGVSZWN0KSBjb25zdAogewogICAg
IEZsb2F0UmVjdCB2aXNpYmxlUmVjdCA9IG5ld1Zpc2libGVSZWN0OwotCi0gICAgaWYgKG1fY2xp
cHNUb0V4cG9zZWRSZWN0KQotICAgICAgICB2aXNpYmxlUmVjdC5pbnRlcnNlY3QobV9leHBvc2Vk
UmVjdCk7CisgICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+
cGxhdGZvcm1DQUxheWVyRXhwb3NlZFJlY3QoKSk7CiAKICAgICBpZiAodmlzaWJsZVJlY3QuaXNF
bXB0eSgpIHx8IGJvdW5kcygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzAzLDI3ICszMDUsMTEgQEAgYm9vbCBUaWxlQ29udHJvbGxlcjo6dGlsZXNXb3VsZENoYW5nZUZv
clZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbmV3VmlzaWJsZVIKICAgICByZXR1cm4gY292
ZXJhZ2VSZWN0ICE9IG1fcHJpbWFyeVRpbGVDb3ZlcmFnZVJlY3Q7CiB9CiAKLXZvaWQgVGlsZUNv
bnRyb2xsZXI6OnNldEV4cG9zZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZXhwb3NlZFJlY3QpCit2
b2lkIFRpbGVDb250cm9sbGVyOjpleHBvc2VkUmVjdENoYW5nZWQoKQogewotICAgIGlmIChtX2V4
cG9zZWRSZWN0ID09IGV4cG9zZWRSZWN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2V4cG9z
ZWRSZWN0ID0gZXhwb3NlZFJlY3Q7CiAgICAgc2V0TmVlZHNSZXZhbGlkYXRlVGlsZXMoKTsKIH0K
IAotdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q2xpcHNUb0V4cG9zZWRSZWN0KGJvb2wgY2xpcHNU
b0V4cG9zZWRSZWN0KQotewotICAgIGlmIChtX2NsaXBzVG9FeHBvc2VkUmVjdCA9PSBjbGlwc1Rv
RXhwb3NlZFJlY3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpcHNUb0V4cG9zZWRSZWN0
ID0gY2xpcHNUb0V4cG9zZWRSZWN0OwotCi0gICAgLy8gR29pbmcgZnJvbSBub3QgY2xpcHBpbmcg
dG8gY2xpcHBpbmcsIHdlIGRvbid0IG5lZWQgdG8gcmV2YWxpZGF0ZSByaWdodCBhd2F5LgotICAg
IGlmIChjbGlwc1RvRXhwb3NlZFJlY3QpCi0gICAgICAgIHNldE5lZWRzUmV2YWxpZGF0ZVRpbGVz
KCk7Ci19Ci0KIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnByZXBvcHVsYXRlUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7CiAgICAgRmxvYXRSZWN0IHNjYWxlZFJlY3QocmVjdCk7CkBAIC00ODcs
OSArNDczLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6Z2V0VGlsZUluZGV4UmFuZ2VGb3JSZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QsIFRpbGVJbmRleCYgdG8KIEZsb2F0UmVjdCBUaWxlQ29udHJv
bGxlcjo6Y29tcHV0ZVRpbGVDb3ZlcmFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBwcmV2aW91c1Zp
c2libGVSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGN1cnJlbnRWaXNpYmxlUmVjdCkgY29uc3QKIHsK
ICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QgPSBjdXJyZW50VmlzaWJsZVJlY3Q7Ci0KLSAgICBp
ZiAobV9jbGlwc1RvRXhwb3NlZFJlY3QpCi0gICAgICAgIHZpc2libGVSZWN0LmludGVyc2VjdCht
X2V4cG9zZWRSZWN0KTsKKyAgICB2aXNpYmxlUmVjdC5pbnRlcnNlY3Qob3duaW5nR3JhcGhpY3NM
YXllcigpLT5wbGF0Zm9ybUNBTGF5ZXJFeHBvc2VkUmVjdCgpKTsKIAogICAgIC8vIElmIHRoZSBw
YWdlIGlzIG5vdCBpbiBhIHdpbmRvdyAoZm9yIGV4YW1wbGUgaWYgaXQncyBpbiBhIGJhY2tncm91
bmQgdGFiKSwgd2UgbGltaXQgdGhlIHRpbGUgY292ZXJhZ2UgcmVjdCB0byB0aGUgdmlzaWJsZSBy
ZWN0LgogICAgIGlmICghbV9pc0luV2luZG93KQpAQCAtNjg4LDggKzY3Miw3IEBAIHZvaWQgVGls
ZUNvbnRyb2xsZXI6OnJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlvblBvbGljeUZsYWdzIGZv
cmVncm91bmRWYWxpZGF0CiAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0ID0gbV92aXNpYmxlUmVj
dDsKICAgICBJbnRSZWN0IGJvdW5kcyA9IHRoaXMtPmJvdW5kcygpOwogCi0gICAgaWYgKG1fY2xp
cHNUb0V4cG9zZWRSZWN0KQotICAgICAgICB2aXNpYmxlUmVjdC5pbnRlcnNlY3QobV9leHBvc2Vk
UmVjdCk7CisgICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+
cGxhdGZvcm1DQUxheWVyRXhwb3NlZFJlY3QoKSk7CiAKICAgICBpZiAodmlzaWJsZVJlY3QuaXNF
bXB0eSgpIHx8IGJvdW5kcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTkzMiw5ICs5
MTUsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjp1cGRhdGVUaWxlQ292ZXJhZ2VNYXAoKQogICAg
IEZsb2F0UmVjdCBjb250YWluZXJCb3VuZHMgPSBib3VuZHMoKTsKICAgICBGbG9hdFJlY3Qgdmlz
aWJsZVJlY3QgPSB0aGlzLT52aXNpYmxlUmVjdCgpOwogCi0gICAgaWYgKG1fY2xpcHNUb0V4cG9z
ZWRSZWN0KQotICAgICAgICB2aXNpYmxlUmVjdC5pbnRlcnNlY3QobV9leHBvc2VkUmVjdCk7Ci0K
KyAgICB2aXNpYmxlUmVjdC5pbnRlcnNlY3Qob3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9y
bUNBTGF5ZXJFeHBvc2VkUmVjdCgpKTsKICAgICB2aXNpYmxlUmVjdC5jb250cmFjdCg0LCA0KTsg
Ly8gTGF5ZXIgaXMgcG9zaXRpb25lZCAycHggZnJvbSB0b3AgYW5kIGxlZnQgZWRnZXMuCiAKICAg
ICBmbG9hdCB3aWR0aFNjYWxlID0gMTsKQEAgLTk0OCw4ICs5MjksOCBAQCB2b2lkIFRpbGVDb250
cm9sbGVyOjp1cGRhdGVUaWxlQ292ZXJhZ2VNYXAoKQogICAgIEZsb2F0UmVjdCBtYXBCb3VuZHMg
PSBjb250YWluZXJCb3VuZHM7CiAgICAgbWFwQm91bmRzLnNjYWxlKGluZGljYXRvclNjYWxlLCBp
bmRpY2F0b3JTY2FsZSk7CiAKLSAgICBpZiAobV9jbGlwc1RvRXhwb3NlZFJlY3QpCi0gICAgICAg
IG1fdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllci0+c2V0UG9zaXRpb24obV9leHBvc2VkUmVj
dC5sb2NhdGlvbigpICsgRmxvYXRQb2ludCgyLCAyKSk7CisgICAgaWYgKCFvd25pbmdHcmFwaGlj
c0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckV4cG9zZWRSZWN0KCkuaXNJbmZpbml0ZSgpKQorICAg
ICAgICBtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXItPnNldFBvc2l0aW9uKG93bmluZ0dy
YXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVyRXhwb3NlZFJlY3QoKS5sb2NhdGlvbigpICsg
RmxvYXRQb2ludCgyLCAyKSk7CiAgICAgZWxzZQogICAgICAgICBtX3RpbGVkU2Nyb2xsaW5nSW5k
aWNhdG9yTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMiwgMikpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDk0MGVlMTMu
LjRhZDc5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGljIFRpbGVkQmFja2luZzo6VGlsZUNv
dmVyYWdlIGNvbXB1dGVUaWxlQ292ZXJhZ2UoUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW4KICAg
ICAgICAgICAgIGJhY2tpbmctPnNldERpZFN3aXRjaFRvRnVsbFRpbGVDb3ZlcmFnZUR1cmluZ0xv
YWRpbmcoKTsKICAgICB9CiAgICAgaWYgKCEodXNlTWluaW1hbFRpbGVzRHVyaW5nTG9hZGluZyB8
fCB1c2VNaW5pbWFsVGlsZXNEdXJpbmdMaXZlUmVzaXplKSkgewotICAgICAgICBib29sIGNsaXBz
VG9FeHBvc2VkUmVjdCA9IGJhY2tpbmctPnRpbGVkQmFja2luZygpLT5jbGlwc1RvRXhwb3NlZFJl
Y3QoKTsKKyAgICAgICAgYm9vbCBjbGlwc1RvRXhwb3NlZFJlY3QgPSAhZnJhbWVWaWV3LmV4cG9z
ZWRSZWN0KCkuaXNJbmZpbml0ZSgpOwogICAgICAgICBpZiAoZnJhbWVWaWV3Lmhvcml6b250YWxT
Y3JvbGxiYXJNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IGNsaXBzVG9FeHBvc2VkUmVj
dCkKICAgICAgICAgICAgIHRpbGVDb3ZlcmFnZSB8PSBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9y
SG9yaXpvbnRhbFNjcm9sbGluZzsKIApAQCAtMjU5OCw2ICsyNTk4LDE1IEBAIGRvdWJsZSBSZW5k
ZXJMYXllckJhY2tpbmc6OmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgY29uc3QKICAgICBy
ZXR1cm4gYmFja2luZ01lbW9yeTsKIH0KIAorRmxvYXRSZWN0IFJlbmRlckxheWVyQmFja2luZzo6
ZXhwb3NlZFJlY3QoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBj
bGlwcGluZyB0byB0aGUgZXhwb3NlZCByZWN0IGZvciBzdWJmcmFtZXMgYXMgd2VsbC4KKyAgICBp
ZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllcikKKyAgICAgICAgcmV0dXJuIG93bmluZ0xh
eWVyKCkucmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkuZXhwb3NlZFJlY3QoKTsKKworICAg
IHJldHVybiBGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggM2IzZjBiMTAu
LjcwMjQ1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmgKQEAgLTE4MCw2ICsxODAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFNraXBMYXllckluRHVtcChjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZER1bXBQcm9wZXJ0eUZvckxheWVyKGNvbnN0IEdyYXBoaWNz
TGF5ZXIqLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0IE9WRVJSSURFOwogCisgICAg
dmlydHVhbCBGbG9hdFJlY3QgZXhwb3NlZFJlY3QoKSBjb25zdCBPVkVSUklERTsKKwogI2lmbmRl
ZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5Tm90UGFpbnRpbmcoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDM2MzJjY2EuLjUwOTUyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBA
QAorMjAxNC0wMS0wNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBUaWxlQ29udHJvbGxlciBjYW4gZmFpbCB0byByZWNlaXZlIGV4cG9zZWRSZWN0IGZy
b20gdGhlIGRyYXdpbmcgYXJlYSBpZiBpZiBzZXQgYXQgdGhlIHdyb25nIHRpbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgX3VwZGF0ZVZpZXdFeHBvc2VkUmVjdF0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RHJhd2luZ0FyZWFQcm94eTo6RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OkRyYXdpbmdBcmVhUHJveHk6OnNldEV4cG9zZWRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWFQcm94eTo6ZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eTo6ZXhwb3NlZFJlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgTW92ZSBleHBvc2VkUmVjdCBzdHVmZiBmcm9tIFdl
YlBhZ2VQcm94eSB0byBEcmF3aW5nQXJlYVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToK
KyAgICAgICAgUHVzaCB0aGUgZXhwb3NlZFJlY3QgZG93biBpbnRvIFdlYkNvcmUuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4cG9zZWRSZWN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVNjcm9sbGVkRXhwb3Nl
ZFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6Y3JlYXRlUGFnZU92ZXJsYXlMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRDb21taXRDaGFuZ2VzRm9yTGF5
ZXIpOgorICAgICAgICBHZXQgcmlkIG9mICJjbGlwc1RvRXhwb3NlZFJlY3QiLCB3ZSBqdXN0IHVz
ZSBpbmZpbml0ZS1uZXNzIG9mIHRoZSByZWN0CisgICAgICAgIHRvIGluZGljYXRlIHRoYXQgbm93
LgorICAgICAgICBEb24ndCBzY3JvbGwgYW4gaW5maW5pdGUgcmVjdDsgaXQgd29uJ3Qgd29yay4K
KwogMjAxNC0wMS0wNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gW0NNYWtlXSBQYXJhbGxlbCBidWlsZHMgc3RpbGwgZmFpbCB3aGVuIGJ1
aWxkaW5nIFdlYktpdDIgR09iamVjdCBBUEkgdW5pdCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDhiNzE3YzMuLmNiNzRlMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTM5MCw3ICszOTAsNyBA
QCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAgICAgaWYgKF9k
YXRhLT5fdXNlQ29udGVudFByZXBhcmF0aW9uUmVjdEZvclZpc2libGVSZWN0KQogICAgICAgICBl
eHBvc2VkUmVjdCA9IE5TVW5pb25SZWN0KF9kYXRhLT5fY29udGVudFByZXBhcmF0aW9uUmVjdCwg
ZXhwb3NlZFJlY3QpOwogCi0gICAgX2RhdGEtPl9wYWdlLT52aWV3RXhwb3NlZFJlY3RDaGFuZ2Vk
KGV4cG9zZWRSZWN0LCBfZGF0YS0+X2NsaXBzVG9WaXNpYmxlUmVjdCA/IFdlYlBhZ2VQcm94eTo6
Q2xpcHNUb0V4cG9zZWRSZWN0OjpDbGlwIDogV2ViUGFnZVByb3h5OjpDbGlwc1RvRXhwb3NlZFJl
Y3Q6OkRvTm90Q2xpcCk7CisgICAgX2RhdGEtPl9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRFeHBv
c2VkUmVjdChfZGF0YS0+X2NsaXBzVG9WaXNpYmxlUmVjdCA/IEZsb2F0UmVjdChleHBvc2VkUmVj
dCkgOiBGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpKTsKIH0KIAogLSAodm9pZClzZXRGcmFtZVNp
emU6KE5TU2l6ZSlzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5jcHAKaW5kZXggMDU1YTdmYy4uNGNmMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKIAorI2luY2x1ZGUgIkRy
YXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHku
aCIKQEAgLTM4LDYgKzM5LDkgQEAgRHJhd2luZ0FyZWFQcm94eTo6RHJhd2luZ0FyZWFQcm94eShE
cmF3aW5nQXJlYVR5cGUgdHlwZSwgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHIKICAgICA6IG1fdHlw
ZSh0eXBlKQogICAgICwgbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQogICAgICwgbV9zaXpl
KHdlYlBhZ2VQcm94eS0+dmlld1NpemUoKSkKKyNpZiBQTEFURk9STShNQUMpCisgICAgLCBtX2V4
cG9zZWRSZWN0Q2hhbmdlZFRpbWVyKHRoaXMsICZEcmF3aW5nQXJlYVByb3h5OjpleHBvc2VkUmVj
dENoYW5nZWRUaW1lckZpcmVkKQorI2VuZGlmCiB7CiAgICAgbV93ZWJQYWdlUHJveHktPnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSwgKnRoaXMpOwogfQpAQCAt
NTgsNCArNjIsMjkgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5OjpzZXRTaXplKGNvbnN0IEludFNp
emUmIHNpemUsIGNvbnN0IEludFNpemUmIGxheWVyUG9zaXRpb24KICAgICBzaXplRGlkQ2hhbmdl
KCk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIERyYXdpbmdBcmVhUHJveHk6OnNldEV4
cG9zZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZXhwb3NlZFJlY3QpCit7CisgICAgaWYgKCFtX3dl
YlBhZ2VQcm94eS0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V4cG9zZWRS
ZWN0ID0gZXhwb3NlZFJlY3Q7CisKKyAgICBpZiAoIW1fZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9leHBvc2VkUmVjdENoYW5nZWRUaW1lci5zdGFydE9uZVNo
b3QoMCk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eTo6ZXhwb3NlZFJlY3RDaGFuZ2VkVGlt
ZXJGaXJlZChUaW1lcjxEcmF3aW5nQXJlYVByb3h5PiopCit7CisgICAgaWYgKCFtX3dlYlBhZ2VQ
cm94eS0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9leHBvc2VkUmVj
dCA9PSBtX2xhc3RTZW50RXhwb3NlZFJlY3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2Vi
UGFnZVByb3h5LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OlNldEV4cG9z
ZWRSZWN0KG1fZXhwb3NlZFJlY3QpLCBtX3dlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgIG1f
bGFzdFNlbnRFeHBvc2VkUmVjdCA9IG1fZXhwb3NlZFJlY3Q7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaAppbmRleCA0NTdkY2E1Li4yYjViZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTI5LDkgKzI5LDEwIEBACiAKICNpbmNsdWRlICJEcmF3
aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0Zsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxjaHJvbm8+CiAjaW5jbHVkZSA8
c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC03Miw2ICs3MywxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50
Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpIHsgfQogCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIHZvaWQgc2V0RXhwb3NlZFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Cisg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9leHBv
c2VkUmVjdDsgfQorICAgIHZvaWQgZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxEcmF3aW5nQXJlYVByb3h5PiopOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZSwgV2ViUGFnZVByb3h5Kik7
CiAKQEAgLTEwMCw2ICsxMDcsMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAg
dmlydHVhbCB2b2lkIGRpZFVwZGF0ZUdlb21ldHJ5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGlu
dHJpbnNpY0NvbnRlbnRTaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld0lu
dHJpbnNpY0NvbnRlbnRTaXplKSB7IH0KKworICAgIFdlYkNvcmU6OlRpbWVyPERyYXdpbmdBcmVh
UHJveHk+IG1fZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXI7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IG1fZXhwb3NlZFJlY3Q7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fbGFzdFNlbnRFeHBvc2Vk
UmVjdDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA2ZTQ4OTFhLi42Mzk5ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMzAyLDExICszMDIsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IFdlYgogICAgICwgbV9tZWRpYVZvbHVtZSgxKQogICAgICwgbV9tYXlTdGFydE1lZGlhV2hlbklu
V2luZG93KHRydWUpCiAgICAgLCBtX3dhaXRpbmdGb3JEaWRVcGRhdGVWaWV3U3RhdGUoZmFsc2Up
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgICwgbV9leHBvc2VkUmVjdENoYW5nZWRUaW1lcih0aGlz
LCAmV2ViUGFnZVByb3h5OjpleHBvc2VkUmVjdENoYW5nZWRUaW1lckZpcmVkKQotICAgICwgbV9j
bGlwc1RvRXhwb3NlZFJlY3QoQ2xpcHNUb0V4cG9zZWRSZWN0OjpEb05vdENsaXApCi0gICAgLCBt
X2xhc3RTZW50Q2xpcHNUb0V4cG9zZWRSZWN0KENsaXBzVG9FeHBvc2VkUmVjdDo6RG9Ob3RDbGlw
KQotI2VuZGlmCiAgICAgLCBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcihEb05vdFBpbikKIHsKICAg
ICB1cGRhdGVWaWV3U3RhdGUoKTsKQEAgLTU0NywxMCArNTQyLDYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNsb3NlKCkKICAgICBtX2NvbnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUoMCk7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKLSAgICBtX2V4cG9zZWRS
ZWN0Q2hhbmdlZFRpbWVyLnN0b3AoKTsKLSNlbmRpZgotCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1v
dmVXZWJQYWdlKG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlE
KTsKQEAgLTQ0MDAsMzEgKzQzOTEsNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGlu
bmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihw
aW5uaW5nKSwgbV9wYWdlSUQpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1MpCi12b2lkIFdlYlBhZ2VQcm94eTo6dmlld0V4cG9zZWRSZWN0Q2hhbmdlZChjb25zdCBGbG9h
dFJlY3QmIGV4cG9zZWRSZWN0LCBDbGlwc1RvRXhwb3NlZFJlY3QgY2xpcHNUb0V4cG9zZWRSZWN0
KQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2V4cG9z
ZWRSZWN0ID0gZXhwb3NlZFJlY3Q7Ci0gICAgbV9jbGlwc1RvRXhwb3NlZFJlY3QgPSBjbGlwc1Rv
RXhwb3NlZFJlY3Q7Ci0KLSAgICBpZiAoIW1fZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV9leHBvc2VkUmVjdENoYW5nZWRUaW1lci5zdGFydE9uZVNob3QoMCk7
Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5OjpleHBvc2VkUmVjdENoYW5nZWRUaW1lckZpcmVkKFRp
bWVyPFdlYlBhZ2VQcm94eT4qKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAobV9leHBvc2VkUmVjdCA9PSBtX2xhc3RTZW50RXhwb3NlZFJlY3QgJiYg
bV9jbGlwc1RvRXhwb3NlZFJlY3QgPT0gbV9sYXN0U2VudENsaXBzVG9FeHBvc2VkUmVjdCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZp
ZXdFeHBvc2VkUmVjdENoYW5nZWQobV9leHBvc2VkUmVjdCwgbV9jbGlwc1RvRXhwb3NlZFJlY3Qg
PT0gQ2xpcHNUb0V4cG9zZWRSZWN0OjpDbGlwKSwgbV9wYWdlSUQpOwotICAgIG1fbGFzdFNlbnRF
eHBvc2VkUmVjdCA9IG1fZXhwb3NlZFJlY3Q7Ci0gICAgbV9sYXN0U2VudENsaXBzVG9FeHBvc2Vk
UmVjdCA9IG1fY2xpcHNUb0V4cG9zZWRSZWN0OwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQ3Njk2
YzIuLjFlNzM4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTQ2NCwxMCArNDY0LDYgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQg
d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aWV3
RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBhY2Nl
c3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKTsKLSAgICBlbnVtIGNsYXNzIENsaXBzVG9FeHBvc2Vk
UmVjdCB7IERvTm90Q2xpcCwgQ2xpcCB9OwotICAgIHZvaWQgdmlld0V4cG9zZWRSZWN0Q2hhbmdl
ZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9zZWRSZWN0LCBDbGlwc1RvRXhwb3NlZFJl
Y3QpOwotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7IHJl
dHVybiBtX2V4cG9zZWRSZWN0OyB9Ci0gICAgdm9pZCBleHBvc2VkUmVjdENoYW5nZWRUaW1lckZp
cmVkKFdlYkNvcmU6OlRpbWVyPFdlYlBhZ2VQcm94eT4qKTsKICAgICB2b2lkIHNldE1haW5GcmFt
ZUlzU2Nyb2xsYWJsZShib29sKTsKIAogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJiB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGlu
ZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1aW50NjRfdCBzZWxlY3Rpb25FbmQsIHVpbnQ2
NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCk7
CkBAIC0xMzU4LDE0ICsxMzU0LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0ZvckRp
ZFVwZGF0ZVZpZXdTdGF0ZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXZWJDb3JlOjpUaW1l
cjxXZWJQYWdlUHJveHk+IG1fZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXI7Ci0gICAgV2ViQ29yZTo6
RmxvYXRSZWN0IG1fZXhwb3NlZFJlY3Q7Ci0gICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fbGFzdFNl
bnRFeHBvc2VkUmVjdDsKLSAgICBDbGlwc1RvRXhwb3NlZFJlY3QgbV9jbGlwc1RvRXhwb3NlZFJl
Y3Q7Ci0gICAgQ2xpcHNUb0V4cG9zZWRSZWN0IG1fbGFzdFNlbnRDbGlwc1RvRXhwb3NlZFJlY3Q7
Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBtX3RlbXBvcmFyeVBERkZpbGVzOwogI2VuZGlmCiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBhNTQxZTljLi4zY2MxODNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTIzOCw2ICsxMjM4LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAKICAgICBtX2Zy
YW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXRQcm9oaWJpdHNTY3JvbGxpbmcoc2hvdWxkRGlz
YWJsZVNjcm9sbGluZyk7CiAgICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+c2V0Vmlz
dWFsVXBkYXRlc0FsbG93ZWRCeUNsaWVudCghd2ViUGFnZS0+c2hvdWxkRXh0ZW5kSW5jcmVtZW50
YWxSZW5kZXJpbmdTdXBwcmVzc2lvbigpKTsKKyAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmll
dygpLT5zZXRFeHBvc2VkUmVjdCh3ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5leHBvc2VkUmVjdCgp
KTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+
c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHRydWUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGU0ZTZiYmEuLjNiOGM4OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRQb2ludC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwb3NlZFJl
Y3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENs
aXBzVG9FeHBvc2VkUmVjdChib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwb3NlZFJl
Y3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
RmxvYXRSZWN0IGV4cG9zZWRSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtYWlu
RnJhbWVTY3JvbGxhYmlsaXR5Q2hhbmdlZChib29sKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1RocmVhZGVkU2Nyb2xsaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbgppbmRleCBiZTQyMmJhLi4wMDNmODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0yOSw3
ICsyOSw4IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIExlZ2FjeVJlY2VpdmVyIHsKICAgICBV
cGRhdGVHZW9tZXRyeShXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplLCBXZWJDb3JlOjpJbnRTaXpl
IGxheWVyUG9zaXRpb24pCiAgICAgU2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCiAgICAgU2V0Q29sb3JTcGFjZShXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9y
U3BhY2UpCi0gICAgCisgICAgU2V0RXhwb3NlZFJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9z
ZWRSZWN0KQorCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKQogICAgIENvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxl
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDZjYjc0NzQuLmIzM2ZhNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMw
NjQsMTIgKzMwNjQsNiBAQCB2b2lkIFdlYlBhZ2U6OndpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2Vk
KGNvbnN0IEZsb2F0UmVjdCYgd2luZG93RnJhbWVJblNjcmVlbkNvbwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZTo6dmlld0V4cG9zZWRSZWN0Q2hhbmdlZChjb25zdCBGbG9hdFJlY3QmIGV4cG9z
ZWRSZWN0LCBib29sIGNsaXBzVG9FeHBvc2VkUmVjdCkKLXsKLSAgICBtX2RyYXdpbmdBcmVhLT5z
ZXRFeHBvc2VkUmVjdChleHBvc2VkUmVjdCk7Ci0gICAgbV9kcmF3aW5nQXJlYS0+c2V0Q2xpcHNU
b0V4cG9zZWRSZWN0KGNsaXBzVG9FeHBvc2VkUmVjdCk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6c2V0
TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKQogewogICAgIG1fbWFpbkZy
YW1lSXNTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZWVjYTE5ZC4uOTA5MTQ0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04MDMsNyArODAzLDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGRnJvbVBERkRvY3VtZW50KENHQ29udGV4
dFJlZiwgUERGRG9jdW1lbnQgKiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVp
bnQzMl90IGNvdW50KTsKICNlbmRpZgogCi0gICAgdm9pZCB2aWV3RXhwb3NlZFJlY3RDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZFJlY3QsIGJvb2wgY2xpcHNUb0V4cG9z
ZWRSZWN0KTsKICAgICB2b2lkIHNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sKTsKIAogICAg
IHZvaWQgdW5hcHBseUVkaXRDb21tYW5kKHVpbnQ2NF90IGNvbW1hbmRJRCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmlu
ZGV4IDE5YjhlMjUuLjI2ZGY4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yNjUsNyArMjY1LDYgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2VuZENvbXBsZXhUZXh0SW5w
dXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgU3Ry
aW5nIHRleHRJbnB1dCkKIAogICAgIFdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKFdlYkNvcmU6
OkZsb2F0UmVjdCB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIFdlYkNvcmU6OkZsb2F0
UmVjdCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMsIFdlYkNvcmU6OkZs
b2F0UmVjdCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpGbG9hdFBvaW50
IGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpCi0gICAgVmlld0V4cG9zZWRSZWN0Q2hhbmdl
ZChXZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZFJlY3QsIGJvb2wgY2xpcHNUb0V4cG9zZWRSZWN0
KQogICAgIFNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBS
ZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoSVBDOjpEYXRhUmVmZXJlbmNlIGVs
ZW1lblRva2VuLCBJUEM6OkRhdGFSZWZlcmVuY2Ugd2luZG93VG9rZW4pCiAgICAgR2V0U3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIC0+IChTdHJpbmcgc3RyaW5nVmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggOTgxYzIyZS4uZTRhOTM3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCkgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBvc2VkUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xp
cHNUb0V4cG9zZWRSZWN0KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IGV4cG9zZWRSZWN0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zY3JvbGxlZEV4
cG9zZWRSZWN0OyB9CiAKICAgICAvLyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CiAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciosIGRvdWJsZSB0aW1lKSBPVkVSUklERSB7IH0KQEAgLTg0LDcgKzg0LDYgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dDb21wb3NpdGluZ0xheWVyVmlzdWFsRGVncmFk
YXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICB2
b2lkIHVwZGF0ZU1haW5GcmFtZUNsaXBzVG9FeHBvc2VkUmVjdCgpOwogICAgIHZvaWQgdXBkYXRl
U2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwogCiAgICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJlZChX
ZWJDb3JlOjpUaW1lcjxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4qKTsKQEAgLTEwMSw3ICsx
MDAsNiBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZFJlY3Q7
CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fc2Nyb2xsZWRFeHBvc2VkUmVjdDsKLSAgICBib29s
IG1fY2xpcHNUb0V4cG9zZWRSZWN0OwogCiAgICAgV2ViQ29yZTo6VGltZXI8UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE+IG1fbGF5ZXJGbHVzaFRpbWVyOwogICAgIGJvb2wgbV9pc0ZsdXNoaW5n
U3VzcGVuZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggZmZk
ZDk5OC4uOTI5NmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBA
IC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0Fy
ZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCB3ZWJQYWdlKQogICAgICwgbV9yZW1vdGVMYXllclRyZWVD
b250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkp
Ci0gICAgLCBtX2NsaXBzVG9FeHBvc2VkUmVjdChmYWxzZSkKKyAgICAsIG1fZXhwb3NlZFJlY3Qo
RmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSkKKyAgICAsIG1fc2Nyb2xsZWRFeHBvc2VkUmVjdChG
bG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpKQogICAgICwgbV9sYXllckZsdXNoVGltZXIodGhpcywg
JlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpsYXllckZsdXNoVGltZXJGaXJlZCkKICAgICAs
IG1faXNGbHVzaGluZ1N1c3BlbmRlZChmYWxzZSkKICAgICAsIG1faGFzRGVmZXJyZWRGbHVzaChm
YWxzZSkKQEAgLTUyLDcgKzUzLDYgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFcKICAgICB3ZWJQ
YWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUp
OwogI2lmIFBMQVRGT1JNKElPUykKICAgICB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygp
LnNldERlbGVnYXRlc1BhZ2VTY2FsaW5nKHRydWUpOwotICAgIHNldENsaXBzVG9FeHBvc2VkUmVj
dCh0cnVlKTsKICNlbmRpZgogfQogCkBAIC0yMzIsMTggKzIzMiw4IEBAIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OnNldEV4cG9zZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZXhwb3Nl
ZFJlY3QpCiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwogfQogCi12b2lkIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRDbGlwc1RvRXhwb3NlZFJlY3QoYm9vbCBjbGlwc1Rv
RXhwb3NlZFJlY3QpCi17Ci0gICAgbV9jbGlwc1RvRXhwb3NlZFJlY3QgPSBjbGlwc1RvRXhwb3Nl
ZFJlY3Q7Ci0gICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwotICAgIHVwZGF0ZU1haW5G
cmFtZUNsaXBzVG9FeHBvc2VkUmVjdCgpOwotfQotCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4cG9zZWRSZWN0KCkKIHsKLSAgICBpZiAoIW1fY2xpcHNU
b0V4cG9zZWRSZWN0KQotICAgICAgICByZXR1cm47Ci0KICAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICgh
ZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CkBAIC0yNTEsMzAgKzI0MSwxOCBAQCB2b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4cG9zZWRSZWN0KCkKICAg
ICBtX3Njcm9sbGVkRXhwb3NlZFJlY3QgPSBtX2V4cG9zZWRSZWN0OwogCiAjaWYgIVBMQVRGT1JN
KElPUykKLSAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbldpdGhPcmlnaW4gPSBmcmFtZVZpZXct
PnNjcm9sbFBvc2l0aW9uKCkgKyB0b0ludFNpemUoZnJhbWVWaWV3LT5zY3JvbGxPcmlnaW4oKSk7
Ci0gICAgbV9zY3JvbGxlZEV4cG9zZWRSZWN0Lm1vdmVCeShzY3JvbGxQb3NpdGlvbldpdGhPcmln
aW4pOworICAgIGlmICghbV9leHBvc2VkUmVjdC5pc0luZmluaXRlKCkpIHsKKyAgICAgICAgSW50
UG9pbnQgc2Nyb2xsUG9zaXRpb25XaXRoT3JpZ2luID0gZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlv
bigpICsgdG9JbnRTaXplKGZyYW1lVmlldy0+c2Nyb2xsT3JpZ2luKCkpOworICAgICAgICBtX3Nj
cm9sbGVkRXhwb3NlZFJlY3QubW92ZUJ5KHNjcm9sbFBvc2l0aW9uV2l0aE9yaWdpbik7CisgICAg
fQogI2VuZGlmCiAKLSAgICBtYWluRnJhbWVUaWxlZEJhY2tpbmcoKS0+c2V0RXhwb3NlZFJlY3Qo
bV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKKyAgICBmcmFtZVZpZXctPnNldEV4cG9zZWRSZWN0KG1f
c2Nyb2xsZWRFeHBvc2VkUmVjdCk7CiAKLSAgICBmb3IgKGF1dG8gaXQgPSBtX3BhZ2VPdmVybGF5
TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBpZiAoVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcgPSBpdC0+
dmFsdWUtPnRpbGVkQmFja2luZygpKQotICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRFeHBv
c2VkUmVjdChtX3Njcm9sbGVkRXhwb3NlZFJlY3QpOworICAgIGZvciAoY29uc3QgYXV0byYgbGF5
ZXIgOiBtX3BhZ2VPdmVybGF5TGF5ZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChUaWxlZEJh
Y2tpbmcqIHRpbGVkQmFja2luZyA9IGxheWVyLT50aWxlZEJhY2tpbmcoKSkKKyAgICAgICAgICAg
IHRpbGVkQmFja2luZy0+ZXhwb3NlZFJlY3RDaGFuZ2VkKCk7CiAgICAgfQotfQotCi12b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVNYWluRnJhbWVDbGlwc1RvRXhwb3NlZFJl
Y3QoKQotewotICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IG1haW5GcmFtZVRp
bGVkQmFja2luZygpKQotICAgICAgICB0aWxlZEJhY2tpbmctPnNldENsaXBzVG9FeHBvc2VkUmVj
dChtX2NsaXBzVG9FeHBvc2VkUmVjdCk7Ci0KLSAgICBmb3IgKGF1dG8gaXQgPSBtX3BhZ2VPdmVy
bGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkKLSAgICAgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gaXQt
PnZhbHVlLT50aWxlZEJhY2tpbmcoKSkKLSAgICAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0Q2xp
cHNUb0V4cG9zZWRSZWN0KG1fY2xpcHNUb0V4cG9zZWRSZWN0KTsKLQotICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7Ci0g
ICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybjsKICAgICAKICAgICBmcmFtZVZpZXct
PmFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLmgKaW5kZXggMWU2ZDdkZS4uYzhhZTc4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtNzgsNyArNzgsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBtYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cG9zZWRSZWN0
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDbGlwc1RvRXhwb3NlZFJlY3QoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpGbG9hdFJlY3QgZXhwb3NlZFJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Njcm9s
bGVkRXhwb3NlZFJlY3Q7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1RocmVhZGVkU2Ny
b2xsaW5nKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZVNjcm9sbE9mZnNldEZvckFueUZyYW1lKCkgT1ZFUlJJREU7CkBAIC0xMTksNyArMTIw
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZURlYnVnSW5mb0xheWVyKGJvb2wgc2hvd0xh
eWVyKTsKIAogICAgIHZvaWQgdXBkYXRlSW50cmluc2ljQ29udGVudFNpemVUaW1lckZpcmVkKFdl
YkNvcmU6OlRpbWVyPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiopOwotICAgIHZvaWQg
dXBkYXRlTWFpbkZyYW1lQ2xpcHNUb0V4cG9zZWRSZWN0KCk7CiAgICAgdm9pZCB1cGRhdGVTY3Jv
bGxlZEV4cG9zZWRSZWN0KCk7CiAgICAgCiAgICAgdm9pZCBpbnZhbGlkYXRlQWxsUGFnZU92ZXJs
YXlzKCk7CkBAIC0xNDMsNyArMTQzLDYgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCBtX2V4cG9zZWRSZWN0OwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Njcm9sbGVkRXhw
b3NlZFJlY3Q7Ci0gICAgYm9vbCBtX2NsaXBzVG9FeHBvc2VkUmVjdDsKIAogICAgIFdlYkNvcmU6
OkludFNpemUgbV9sYXN0U2VudEludHJpbnNpY0NvbnRlbnRTaXplOwogICAgIFdlYkNvcmU6OlRp
bWVyPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3VwZGF0ZUludHJpbnNpY0NvbnRl
bnRTaXplVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpp
bmRleCAwMTljNThkLi5kNzljYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0KQEAgLTcxLDcgKzcxLDggQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UqIHdlYlBhZ2UsIGMKICAg
ICAsIG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihmYWxzZSkKICAgICAsIG1fbGF5ZXJGbHVzaFNj
aGVkdWxlcih0aGlzKQogICAgICwgbV9pc1BhaW50aW5nU3VzcGVuZGVkKCEocGFyYW1ldGVycy52
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSkpCi0gICAgLCBtX2NsaXBzVG9FeHBvc2Vk
UmVjdChmYWxzZSkKKyAgICAsIG1fZXhwb3NlZFJlY3QoRmxvYXRSZWN0OjppbmZpbml0ZVJlY3Qo
KSkKKyAgICAsIG1fc2Nyb2xsZWRFeHBvc2VkUmVjdChGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgp
KQogICAgICwgbV91cGRhdGVJbnRyaW5zaWNDb250ZW50U2l6ZVRpbWVyKHRoaXMsICZUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlSW50cmluc2ljQ29udGVudFNpemVUaW1lckZp
cmVkKQogICAgICwgbV90cmFuc2llbnRab29tU2NhbGUoMSkKIHsKQEAgLTM3NCw5ICszNzUsOCBA
QCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAg
ICAgIG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVyID0gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBJbnRSZWN0IHZpc2libGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3Jvb3RMYXllci5nZXQo
KS5mcmFtZSk7Ci0gICAgaWYgKG1fY2xpcHNUb0V4cG9zZWRSZWN0KQotICAgICAgICB2aXNpYmxl
UmVjdC5pbnRlcnNlY3QoZW5jbG9zaW5nSW50UmVjdChtX3Njcm9sbGVkRXhwb3NlZFJlY3QpKTsK
KyAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QgPSBtX3Jvb3RMYXllci5nZXQoKS5mcmFtZTsKKyAg
ICB2aXNpYmxlUmVjdC5pbnRlcnNlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKIAogICAgIGZv
ciAoUGFnZU92ZXJsYXlMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJz
LmJlZ2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGl0LT52YWx1ZS5nZXQoKTsKQEAg
LTQzMiwzMyArNDMyLDI5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
dEV4cG9zZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZXhwb3NlZFJlY3QpCiAgICAgdXBkYXRlU2Ny
b2xsZWRFeHBvc2VkUmVjdCgpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpzZXRDbGlwc1RvRXhwb3NlZFJlY3QoYm9vbCBjbGlwc1RvRXhwb3NlZFJlY3QpCi17Ci0g
ICAgbV9jbGlwc1RvRXhwb3NlZFJlY3QgPSBjbGlwc1RvRXhwb3NlZFJlY3Q7Ci0gICAgdXBkYXRl
U2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwotICAgIHVwZGF0ZU1haW5GcmFtZUNsaXBzVG9FeHBvc2Vk
UmVjdCgpOwotfQotCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVT
Y3JvbGxlZEV4cG9zZWRSZWN0KCkKIHsKLSAgICBpZiAoIW1fY2xpcHNUb0V4cG9zZWRSZWN0KQot
ICAgICAgICByZXR1cm47Ci0KICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFnZS0+
Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbldpdGhPcmlnaW4gPSBm
cmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkgKyB0b0ludFNpemUoZnJhbWVWaWV3LT5zY3JvbGxP
cmlnaW4oKSk7Ci0KICAgICBtX3Njcm9sbGVkRXhwb3NlZFJlY3QgPSBtX2V4cG9zZWRSZWN0Owot
ICAgIG1fc2Nyb2xsZWRFeHBvc2VkUmVjdC5tb3ZlQnkoc2Nyb2xsUG9zaXRpb25XaXRoT3JpZ2lu
KTsKIAotICAgIG1haW5GcmFtZVRpbGVkQmFja2luZygpLT5zZXRFeHBvc2VkUmVjdChtX3Njcm9s
bGVkRXhwb3NlZFJlY3QpOworI2lmICFQTEFURk9STShJT1MpCisgICAgaWYgKCFtX2V4cG9zZWRS
ZWN0LmlzSW5maW5pdGUoKSkgeworICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbldpdGhP
cmlnaW4gPSBmcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkgKyB0b0ludFNpemUoZnJhbWVWaWV3
LT5zY3JvbGxPcmlnaW4oKSk7CisgICAgICAgIG1fc2Nyb2xsZWRFeHBvc2VkUmVjdC5tb3ZlQnko
c2Nyb2xsUG9zaXRpb25XaXRoT3JpZ2luKTsKKyAgICB9CisjZW5kaWYKIAotICAgIGZvciAoUGFn
ZU92ZXJsYXlMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmJlZ2lu
KCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBpZiAoVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcgPSBpdC0+dmFsdWUtPnRpbGVk
QmFja2luZygpKQotICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRFeHBvc2VkUmVjdChtX3Nj
cm9sbGVkRXhwb3NlZFJlY3QpOworICAgIGZyYW1lVmlldy0+c2V0RXhwb3NlZFJlY3QobV9zY3Jv
bGxlZEV4cG9zZWRSZWN0KTsKKworICAgIGZvciAoY29uc3QgYXV0byYgbGF5ZXIgOiBtX3BhZ2VP
dmVybGF5TGF5ZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVk
QmFja2luZyA9IGxheWVyLT50aWxlZEJhY2tpbmcoKSkKKyAgICAgICAgICAgIHRpbGVkQmFja2lu
Zy0+ZXhwb3NlZFJlY3RDaGFuZ2VkKCk7CiAgICAgfQorICAgIAorICAgIGZyYW1lVmlldy0+YWRq
dXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6dXBkYXRlR2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnN0
IEludFNpemUmIGxheWVyUG9zaXRpb24pCkBAIC01NjUsMjIgKzU2MSw2IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKQogICAg
ICAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JTcGFjZS5nZXQo
KSk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZU1haW5G
cmFtZUNsaXBzVG9FeHBvc2VkUmVjdCgpCi17Ci0gICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRC
YWNraW5nID0gbWFpbkZyYW1lVGlsZWRCYWNraW5nKCkpCi0gICAgICAgIHRpbGVkQmFja2luZy0+
c2V0Q2xpcHNUb0V4cG9zZWRSZWN0KG1fY2xpcHNUb0V4cG9zZWRSZWN0KTsKLQotICAgIGZvciAo
UGFnZU92ZXJsYXlMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmJl
Z2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gaXQtPnZhbHVlLT50aWxl
ZEJhY2tpbmcoKSkKLSAgICAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0Q2xpcHNUb0V4cG9zZWRS
ZWN0KG1fY2xpcHNUb0V4cG9zZWRSZWN0KTsKLQotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
bV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCk7Ci0gICAgaWYgKCFmcmFt
ZVZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZyYW1lVmlldy0+YWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKLX0KLQogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ0FMYXllciAqbGF5ZXIpCiB7CiAgICAgQVNTRVJUKCFt
X2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pOwpAQCAtNTk5LDEyICs1NzksOCBAQCB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihDQUxheWVy
ICpsYXllcikKICAgICBmb3IgKFBhZ2VPdmVybGF5TGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9w
YWdlT3ZlcmxheUxheWVycy5iZWdpbigpLCBlbmQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIFttX3Jvb3RMYXllci5nZXQoKSBhZGRTdWJsYXll
cjppdC0+dmFsdWUtPnBsYXRmb3JtTGF5ZXIoKV07CiAKLSAgICBpZiAoVGlsZWRCYWNraW5nKiB0
aWxlZEJhY2tpbmcgPSBtYWluRnJhbWVUaWxlZEJhY2tpbmcoKSkgeworICAgIGlmIChUaWxlZEJh
Y2tpbmcqIHRpbGVkQmFja2luZyA9IG1haW5GcmFtZVRpbGVkQmFja2luZygpKQogICAgICAgICB0
aWxlZEJhY2tpbmctPnNldEFnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcyhtX3dlYlBhZ2UtPmNvcmVQ
YWdlKCktPnNldHRpbmdzKCkuYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKCkpOwotICAg
ICAgICB0aWxlZEJhY2tpbmctPnNldEV4cG9zZWRSZWN0KG1fc2Nyb2xsZWRFeHBvc2VkUmVjdCk7
Ci0gICAgfQotCi0gICAgdXBkYXRlTWFpbkZyYW1lQ2xpcHNUb0V4cG9zZWRSZWN0KCk7CiAKICAg
ICB1cGRhdGVEZWJ1Z0luZm9MYXllcihtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCku
c2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKCkpOwogCkBAIC02MjQsMTEgKzYwMCw2IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIo
UGFnZU92ZXJsYXkqIHBhZ2VPdmVyCiAKICAgICBtX3BhZ2VPdmVybGF5UGxhdGZvcm1MYXllcnMu
c2V0KGxheWVyLmdldCgpLCBsYXllci0+cGxhdGZvcm1MYXllcigpKTsKIAotICAgIGlmIChUaWxl
ZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IGxheWVyLT50aWxlZEJhY2tpbmcoKSkgewotICAgICAg
ICB0aWxlZEJhY2tpbmctPnNldEV4cG9zZWRSZWN0KG1fc2Nyb2xsZWRFeHBvc2VkUmVjdCk7Ci0g
ICAgICAgIHRpbGVkQmFja2luZy0+c2V0Q2xpcHNUb0V4cG9zZWRSZWN0KG1fY2xpcHNUb0V4cG9z
ZWRSZWN0KTsKLSAgICB9Ci0KICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJh
bnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIApAQCAtNjcyLDExICs2NDMsNiBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRDb21taXRDaGFuZ2VzRm9yTGF5
ZXIoY29uc3QgR3JhcGhpY3NMYXllcgogCiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIAot
ICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IGxheWVyLT50aWxlZEJhY2tpbmco
KSkgewotICAgICAgICB0aWxlZEJhY2tpbmctPnNldEV4cG9zZWRSZWN0KG1fc2Nyb2xsZWRFeHBv
c2VkUmVjdCk7Ci0gICAgICAgIHRpbGVkQmFja2luZy0+c2V0Q2xpcHNUb0V4cG9zZWRSZWN0KG1f
Y2xpcHNUb0V4cG9zZWRSZWN0KTsKLSAgICB9Ci0KICAgICBtX3BhZ2VPdmVybGF5UGxhdGZvcm1M
YXllcnMuc2V0KGxheWVyLCBsYXllci0+cGxhdGZvcm1MYXllcigpKTsKIH0KIAo=
</data>
<flag name="review"
          id="244189"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220568</attachid>
            <date>2014-01-07 16:36:04 -0800</date>
            <delta_ts>2014-01-07 17:52:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>zooming2.diff</filename>
            <type>text/plain</type>
            <size>40825</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmOWI1ZjgxLi41OTBjNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTQtMDEtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVGlsZUNvbnRyb2xsZXIgY2FuIGZhaWwgdG8gcmVjZWl2ZSBleHBvc2VkUmVjdCBm
cm9tIHRoZSBkcmF3aW5nIGFyZWEgaWYgc2V0IGF0IHRoZSB3cm9uZyB0aW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1MzYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICBFeHBvcnQgc29tZSB0aGluZ3MuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OkZyYW1lVmlldyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNldEV4cG9zZWRSZWN0KToKKyAgICAgICAgU3RvcmUgdGhlIGV4
cG9zZWQgcmVjdCBvbiBGcmFtZVZpZXcuIFdoZW4gaXQgY2hhbmdlcywgaWYgdGhlIG1haW4gZnJh
bWUKKyAgICAgICAgaGFzIGEgVGlsZWRCYWNraW5nLCBpbmZvcm0gaXQgb2YgdGhlIGNoYW5nZS4K
KworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1Rp
bGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVD
b250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlc1dvdWxkQ2hh
bmdlRm9yVmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNv
bXB1dGVUaWxlQ292ZXJhZ2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVy
OjpyZXZhbGlkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnVw
ZGF0ZVRpbGVDb3ZlcmFnZU1hcCk6CisgICAgICAgIE1ha2UgdXNlIG9mIHRoZSBmYWN0IHRoYXQg
d2UgY2FuIHRlc3QgaWYgYSByZWN0IGlzIGluZmluaXRlCisgICAgICAgIGluc3RlYWQgb2YgaGF2
aW5nIGEgc2VwYXJhdGUgYm9vbGVhbiBwcm9wZXJ0eSBmb3IgdGhhdC4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjpSZW5kZXJMYXllckJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZVRpbGVDb3ZlcmFnZSk6CisgICAgICAgIFB1c2ggdGhlIEZyYW1lVmlldydzIGNhY2hlZCBl
eHBvc2VkIHJlY3QgZG93biBpbnRvIHRoZSBUaWxlZEJhY2tpbmcgd2hlbiBpdCBpcyBjcmVhdGVk
LgorICAgICAgICBXZSBvbmx5IHN1cHBvcnQgY2xpcHBpbmcgZm9yIHRoZSBtYWluIGZyYW1lIFRp
bGVDb250cm9sbGVyIGZvciBub3cuCisKIDIwMTQtMDEtMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUGxhdGZvcm1MYXllciBjb250YWluaW5nIHNjcm9sbGJh
cnMgZG9lcyBub3QgZGlzYXBwZWFyIHdoZW4gc2V0dGluZyBvdmVyZmxvdzpoaWRkZW4gb24gcGFn
ZSByb290LCB1bnRpbCByZXNpemUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDg2ZDc0OGYuLjU0
MWNkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMjY1LDYgKzEyNjUsNyBAQCBfX1pON1dl
YkNvcmU5RnJhbWVWaWV3MTNwYWludENvbnRlbnRzRVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEzc2V0Tm9kZVRvRHJhd0VQTlNfNE5v
ZGVFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTRhZGp1c3RWaWV3U2l6ZUV2CiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MTRpbnZhbGlkYXRlUmVjdEVSS05TXzdJbnRSZWN0RQorX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzE0c2V0RXhwb3NlZFJlY3RFTlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxNHNldE5lZWRzTGF5b3V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNHNldFRy
YW5zcGFyZW50RWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNXNldEZvb3RlckhlaWdodEVpCkBA
IC0xODU2LDYgKzE4NTcsNyBAQCBfX1pUaG4/Pz9fTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0E0
MHBsYXRmb3JtQ0FMYXllclNldE5lZWRzVG9SZXZhbGlkYXRlVGlsZXNFdgogX19aVGhuPz8/X05L
N1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTMycGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0
b3JFdgogX19aVGhuPz8/X05LN1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTMzcGxhdGZvcm1DQUxh
eWVyU2hvd1JlcGFpbnRDb3VudGVyRVBOU18xNVBsYXRmb3JtQ0FMYXllckUKIF9fWlRobj8/P19O
SzdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0E0OXBsYXRmb3JtQ0FMYXllckNvbnRlbnRzU2NhbGVN
dWx0aXBsaWVyRm9yTmV3VGlsZXNFUE5TXzE1UGxhdGZvcm1DQUxheWVyRQorX19aVGhuPz8/X05L
N1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTI2cGxhdGZvcm1DQUxheWVyRXhwb3NlZFJlY3RFdgog
X2ZpbGVuYW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycwogX2hhc0Nhc2VJbnNlbnNpdGl2ZVBy
ZWZpeAogX2hhc0Nhc2VJbnNlbnNpdGl2ZVN1YnN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDQ4NjNlMzAuLmU3YmJlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTIwMSw2ICsyMDEsNyBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAg
ICAgLCBtX2RlZmVycmVkUmVwYWludFRpbWVyKHRoaXMsICZGcmFtZVZpZXc6OmRlZmVycmVkUmVw
YWludFRpbWVyRmlyZWQpCiAgICAgLCBtX2lzVHJhY2tpbmdSZXBhaW50cyhmYWxzZSkKICAgICAs
IG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4odHJ1ZSkKKyAgICAsIG1fZXhwb3NlZFJlY3Qo
RmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSkKICAgICAsIG1fZGVmZXJTZXROZWVkc0xheW91dHMo
MCkKICAgICAsIG1fc2V0TmVlZHNMYXlvdXRXYXNEZWZlcnJlZChmYWxzZSkKICNpZiBQTEFURk9S
TShJT1MpCkBAIC00MzcxLDQgKzQzNzIsMjAgQEAgdm9pZCBGcmFtZVZpZXc6Om5vdGlmeVdpZGdl
dHMoV2lkZ2V0Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKICAgICAgICAgcHJvdGVjdGVkV2lk
Z2V0c1tpXS0+bm90aWZ5V2lkZ2V0KG5vdGlmaWNhdGlvbik7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3
OjpzZXRFeHBvc2VkUmVjdChGbG9hdFJlY3QgZXhwb3NlZFJlY3QpCit7CisgICAgaWYgKG1fZXhw
b3NlZFJlY3QgPT0gZXhwb3NlZFJlY3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZXhwb3Nl
ZFJlY3QgPSBleHBvc2VkUmVjdDsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgY2xpcHBpbmcgdG8gdGhlIGV4cG9zZWQg
cmVjdCBmb3Igc3ViZnJhbWVzIGFzIHdlbGwuCisgICAgaWYgKG1fZnJhbWUtPmlzTWFpbkZyYW1l
KCkpIHsKKyAgICAgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gdGhpcy0+dGls
ZWRCYWNraW5nKCkpCisgICAgICAgICAgICB0aWxlZEJhY2tpbmctPnNldEV4cG9zZWRSZWN0KGV4
cG9zZWRSZWN0KTsKKyAgICB9CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMWY0NTRiNC4uYWUxYTNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC00NDUsNiArNDQ1LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRU
cmFja2VkUmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYpOwogCisgICAgdm9pZCBzZXRFeHBvc2Vk
UmVjdChGbG9hdFJlY3QpOworICAgIEZsb2F0UmVjdCBleHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwb3NlZFJlY3Q7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzY3Jv
bGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRS
ZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRh
dGVSZWN0KSBPVkVSUklERTsKQEAgLTYzMCw2ICs2MzMsOCBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBtX3Nob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuOwogCisgICAgRmxvYXRSZWN0IG1fZXhwb3Nl
ZFJlY3Q7CisKICAgICB1bnNpZ25lZCBtX2RlZmVyU2V0TmVlZHNMYXlvdXRzOwogICAgIGJvb2wg
bV9zZXROZWVkc0xheW91dFdhc0RlZmVycmVkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCmluZGV4IGEwNWRiZjkuLmJjOGQzZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCkBAIC00
OCw4ICs0OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdGlsZXNXb3VsZENoYW5nZUZv
clZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRFeHBvc2VkUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldENsaXBzVG9FeHBvc2VkUmVjdChib29sKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNs
aXBzVG9FeHBvc2VkUmVjdCgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwb3B1bGF0ZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5oCmluZGV4IGY0NzVkYTku
LjgwZjc4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9UaWxlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5oCkBAIC0xMDMsOCArMTAzLDYgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZVJlY3QoY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIHRpbGVzV291bGRDaGFuZ2VGb3JWaXNpYmxlUmVjdChjb25z
dCBGbG9hdFJlY3QmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwb3Nl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNsaXBz
VG9FeHBvc2VkUmVjdCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fY2xpcHNUb0V4cG9zZWRSZWN0OyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldENsaXBzVG9FeHBvc2VkUmVjdChib29sKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgcHJlcG9wdWxhdGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRUaWxlQ292ZXJhZ2UoVGlsZUNvdmVyYWdlKSBPVkVSUklERTsKQEAg
LTI0NSw3ICsyNDMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91bnBhcmVudHNPZmZzY3JlZW5U
aWxlczsKICAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogICAgIGJvb2wgbV90aWxlc0Fy
ZU9wYXF1ZTsKLSAgICBib29sIG1fY2xpcHNUb0V4cG9zZWRSZWN0OwogICAgIGJvb2wgbV9oYXNU
aWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3RvcjsgLy8gVXNlZCB0byBtYWtlIGxvdy1yZXMgdGls
ZXMgd2hlbiB6b29taW5nLgogCiAgICAgQ29sb3IgbV90aWxlRGVidWdCb3JkZXJDb2xvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxl
Q29udHJvbGxlci5tbQppbmRleCAwMmZiOWY3Li40MTQyNDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDb250cm9sbGVyLm1t
CkBAIC01Miw2ICs1Miw3IEBAIFBhc3NPd25QdHI8VGlsZUNvbnRyb2xsZXI+IFRpbGVDb250cm9s
bGVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1MCiBUaWxlQ29udHJvbGxl
cjo6VGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1MYXllcikKICAg
ICA6IG1fdGlsZUNhY2hlTGF5ZXIocm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgLCBtX3RpbGVTaXpl
KGRlZmF1bHRUaWxlV2lkdGgsIGRlZmF1bHRUaWxlSGVpZ2h0KQorICAgICwgbV9leHBvc2VkUmVj
dChGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpKQogICAgICwgbV90aWxlUmV2YWxpZGF0aW9uVGlt
ZXIodGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAg
ICAsIG1fY29ob3J0UmVtb3ZhbFRpbWVyKHRoaXMsICZUaWxlQ29udHJvbGxlcjo6Y29ob3J0UmVt
b3ZhbFRpbWVyRmlyZWQpCiAgICAgLCBtX3NjYWxlKDEpCkBAIC02Nyw3ICs2OCw2IEBAIFRpbGVD
b250cm9sbGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0Zm9ybUxh
eWVyKQogICAgICwgbV91bnBhcmVudHNPZmZzY3JlZW5UaWxlcyhmYWxzZSkKICAgICAsIG1fYWNj
ZWxlcmF0ZXNEcmF3aW5nKGZhbHNlKQogICAgICwgbV90aWxlc0FyZU9wYXF1ZShmYWxzZSkKLSAg
ICAsIG1fY2xpcHNUb0V4cG9zZWRSZWN0KGZhbHNlKQogICAgICwgbV9oYXNUaWxlc1dpdGhUZW1w
b3JhcnlTY2FsZUZhY3RvcihmYWxzZSkKICAgICAsIG1fdGlsZURlYnVnQm9yZGVyV2lkdGgoMCkK
ICAgICAsIG1faW5kaWNhdG9yTW9kZShBc3luY1Njcm9sbGluZ0luZGljYXRpb24pCkBAIC0yNzcs
OSArMjc3LDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0VmlzaWJsZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiB2aXNpYmxlUmVjdCkKIGJvb2wgVGlsZUNvbnRyb2xsZXI6OnRpbGVzV291bGRDaGFu
Z2VGb3JWaXNpYmxlUmVjdChjb25zdCBGbG9hdFJlY3QmIG5ld1Zpc2libGVSZWN0KSBjb25zdAog
ewogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCA9IG5ld1Zpc2libGVSZWN0OwotCi0gICAgaWYg
KG1fY2xpcHNUb0V4cG9zZWRSZWN0KQotICAgICAgICB2aXNpYmxlUmVjdC5pbnRlcnNlY3QobV9l
eHBvc2VkUmVjdCk7CisgICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fZXhwb3NlZFJlY3QpOwog
CiAgICAgaWYgKHZpc2libGVSZWN0LmlzRW1wdHkoKSB8fCBib3VuZHMoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMiwxOCArMzEwLDYgQEAgdm9pZCBUaWxlQ29udHJv
bGxlcjo6c2V0RXhwb3NlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBleHBvc2VkUmVjdCkKICAgICBz
ZXROZWVkc1JldmFsaWRhdGVUaWxlcygpOwogfQogCi12b2lkIFRpbGVDb250cm9sbGVyOjpzZXRD
bGlwc1RvRXhwb3NlZFJlY3QoYm9vbCBjbGlwc1RvRXhwb3NlZFJlY3QpCi17Ci0gICAgaWYgKG1f
Y2xpcHNUb0V4cG9zZWRSZWN0ID09IGNsaXBzVG9FeHBvc2VkUmVjdCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9jbGlwc1RvRXhwb3NlZFJlY3QgPSBjbGlwc1RvRXhwb3NlZFJlY3Q7Ci0KLSAg
ICAvLyBHb2luZyBmcm9tIG5vdCBjbGlwcGluZyB0byBjbGlwcGluZywgd2UgZG9uJ3QgbmVlZCB0
byByZXZhbGlkYXRlIHJpZ2h0IGF3YXkuCi0gICAgaWYgKGNsaXBzVG9FeHBvc2VkUmVjdCkKLSAg
ICAgICAgc2V0TmVlZHNSZXZhbGlkYXRlVGlsZXMoKTsKLX0KLQogdm9pZCBUaWxlQ29udHJvbGxl
cjo6cHJlcG9wdWxhdGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBGbG9hdFJl
Y3Qgc2NhbGVkUmVjdChyZWN0KTsKQEAgLTQ4Nyw5ICs0NzMsNyBAQCB2b2lkIFRpbGVDb250cm9s
bGVyOjpnZXRUaWxlSW5kZXhSYW5nZUZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgVGlsZUlu
ZGV4JiB0bwogRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjpjb21wdXRlVGlsZUNvdmVyYWdlUmVj
dChjb25zdCBGbG9hdFJlY3QmIHByZXZpb3VzVmlzaWJsZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
Y3VycmVudFZpc2libGVSZWN0KSBjb25zdAogewogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCA9
IGN1cnJlbnRWaXNpYmxlUmVjdDsKLQotICAgIGlmIChtX2NsaXBzVG9FeHBvc2VkUmVjdCkKLSAg
ICAgICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fZXhwb3NlZFJlY3QpOworICAgIHZpc2libGVS
ZWN0LmludGVyc2VjdChtX2V4cG9zZWRSZWN0KTsKIAogICAgIC8vIElmIHRoZSBwYWdlIGlzIG5v
dCBpbiBhIHdpbmRvdyAoZm9yIGV4YW1wbGUgaWYgaXQncyBpbiBhIGJhY2tncm91bmQgdGFiKSwg
d2UgbGltaXQgdGhlIHRpbGUgY292ZXJhZ2UgcmVjdCB0byB0aGUgdmlzaWJsZSByZWN0LgogICAg
IGlmICghbV9pc0luV2luZG93KQpAQCAtNjg4LDggKzY3Miw3IEBAIHZvaWQgVGlsZUNvbnRyb2xs
ZXI6OnJldmFsaWRhdGVUaWxlcyhUaWxlVmFsaWRhdGlvblBvbGljeUZsYWdzIGZvcmVncm91bmRW
YWxpZGF0CiAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0ID0gbV92aXNpYmxlUmVjdDsKICAgICBJ
bnRSZWN0IGJvdW5kcyA9IHRoaXMtPmJvdW5kcygpOwogCi0gICAgaWYgKG1fY2xpcHNUb0V4cG9z
ZWRSZWN0KQotICAgICAgICB2aXNpYmxlUmVjdC5pbnRlcnNlY3QobV9leHBvc2VkUmVjdCk7Cisg
ICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fZXhwb3NlZFJlY3QpOwogCiAgICAgaWYgKHZpc2li
bGVSZWN0LmlzRW1wdHkoKSB8fCBib3VuZHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBA
IC05MzIsOSArOTE1LDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6dXBkYXRlVGlsZUNvdmVyYWdl
TWFwKCkKICAgICBGbG9hdFJlY3QgY29udGFpbmVyQm91bmRzID0gYm91bmRzKCk7CiAgICAgRmxv
YXRSZWN0IHZpc2libGVSZWN0ID0gdGhpcy0+dmlzaWJsZVJlY3QoKTsKIAotICAgIGlmIChtX2Ns
aXBzVG9FeHBvc2VkUmVjdCkKLSAgICAgICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fZXhwb3Nl
ZFJlY3QpOwotCisgICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fZXhwb3NlZFJlY3QpOwogICAg
IHZpc2libGVSZWN0LmNvbnRyYWN0KDQsIDQpOyAvLyBMYXllciBpcyBwb3NpdGlvbmVkIDJweCBm
cm9tIHRvcCBhbmQgbGVmdCBlZGdlcy4KIAogICAgIGZsb2F0IHdpZHRoU2NhbGUgPSAxOwpAQCAt
OTQ4LDcgKzkyOSw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnVwZGF0ZVRpbGVDb3ZlcmFnZU1h
cCgpCiAgICAgRmxvYXRSZWN0IG1hcEJvdW5kcyA9IGNvbnRhaW5lckJvdW5kczsKICAgICBtYXBC
b3VuZHMuc2NhbGUoaW5kaWNhdG9yU2NhbGUsIGluZGljYXRvclNjYWxlKTsKIAotICAgIGlmICht
X2NsaXBzVG9FeHBvc2VkUmVjdCkKKyAgICBpZiAoIW1fZXhwb3NlZFJlY3QuaXNJbmZpbml0ZSgp
KQogICAgICAgICBtX3RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXItPnNldFBvc2l0aW9uKG1f
ZXhwb3NlZFJlY3QubG9jYXRpb24oKSArIEZsb2F0UG9pbnQoMiwgMikpOwogICAgIGVsc2UKICAg
ICAgICAgbV90aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDIsIDIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKaW5kZXggMDE3ODk3NS4uZDA4MTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE0Miw2ICsxNDIsNyBAQCBSZW5k
ZXJMYXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyhSZW5kZXJMYXllciYgbGF5ZXIpCiAg
ICAgICAgIHRpbGVkQmFja2luZy0+c2V0SXNJbldpbmRvdyhwYWdlLT5pc0luV2luZG93KCkpOwog
CiAgICAgICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVyKSB7CisgICAgICAgICAg
ICB0aWxlZEJhY2tpbmctPnNldEV4cG9zZWRSZWN0KHJlbmRlcmVyKCkuZnJhbWUoKS52aWV3KCkt
PmV4cG9zZWRSZWN0KCkpOwogICAgICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRVbnBhcmVudHNP
ZmZzY3JlZW5UaWxlcyh0cnVlKTsKICAgICAgICAgICAgIGlmIChwYWdlLT5zZXR0aW5ncygpLmJh
Y2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkpCiAgICAgICAgICAgICAgICAgdGlsZWRC
YWNraW5nLT5zZXRUaWxlTWFyZ2lucyg1MTIsIDUxMiwgNTEyLCA1MTIpOwpAQCAtMjI4LDcgKzIy
OSw3IEBAIHN0YXRpYyBUaWxlZEJhY2tpbmc6OlRpbGVDb3ZlcmFnZSBjb21wdXRlVGlsZUNvdmVy
YWdlKFJlbmRlckxheWVyQmFja2luZyogYmFja2luCiAgICAgICAgICAgICBiYWNraW5nLT5zZXRE
aWRTd2l0Y2hUb0Z1bGxUaWxlQ292ZXJhZ2VEdXJpbmdMb2FkaW5nKCk7CiAgICAgfQogICAgIGlm
ICghKHVzZU1pbmltYWxUaWxlc0R1cmluZ0xvYWRpbmcgfHwgdXNlTWluaW1hbFRpbGVzRHVyaW5n
TGl2ZVJlc2l6ZSkpIHsKLSAgICAgICAgYm9vbCBjbGlwc1RvRXhwb3NlZFJlY3QgPSBiYWNraW5n
LT50aWxlZEJhY2tpbmcoKS0+Y2xpcHNUb0V4cG9zZWRSZWN0KCk7CisgICAgICAgIGJvb2wgY2xp
cHNUb0V4cG9zZWRSZWN0ID0gIWZyYW1lVmlldy5leHBvc2VkUmVjdCgpLmlzSW5maW5pdGUoKTsK
ICAgICAgICAgaWYgKGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpICE9IFNjcm9s
bGJhckFsd2F5c09mZiB8fCBjbGlwc1RvRXhwb3NlZFJlY3QpCiAgICAgICAgICAgICB0aWxlQ292
ZXJhZ2UgfD0gVGlsZWRCYWNraW5nOjpDb3ZlcmFnZUZvckhvcml6b250YWxTY3JvbGxpbmc7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4MjkwZTA5Li42YWQ2ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTQtMDEtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVGlsZUNvbnRyb2xsZXIgY2FuIGZhaWwgdG8gcmVjZWl2ZSBleHBvc2VkUmVjdCBm
cm9tIHRoZSBkcmF3aW5nIGFyZWEgaWYgc2V0IGF0IHRoZSB3cm9uZyB0aW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY1MzYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dl
YktpdDIueGNjb25maWc6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1ZpZXcgX3VwZGF0ZVZpZXdFeHBvc2VkUmVjdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0Fy
ZWFQcm94eTo6RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVh
UHJveHk6OnNldEV4cG9zZWRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94
eTo6ZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6ZXhw
b3NlZFJlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgTW92ZSBleHBvc2VkUmVjdCBzdHVmZiBmcm9tIFdlYlBhZ2VQcm94eSB0byBE
cmF3aW5nQXJlYVByb3h5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgUHVzaCB0
aGUgZXhwb3NlZFJlY3QgZG93biBpbnRvIFdlYkNvcmUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4cG9zZWRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToK
KyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVNjcm9sbGVkRXhwb3NlZFJlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Um9vdENvbXBvc2l0
aW5nTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6Y3JlYXRlUGFnZU92ZXJsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRDb21taXRDaGFuZ2VzRm9yTGF5ZXIpOgorICAgICAgICBH
ZXQgcmlkIG9mICJjbGlwc1RvRXhwb3NlZFJlY3QiLCB3ZSBqdXN0IHVzZSBpbmZpbml0ZS1uZXNz
IG9mIHRoZSByZWN0CisgICAgICAgIHRvIGluZGljYXRlIHRoYXQgbm93LgorICAgICAgICBEb24n
dCBzY3JvbGwgYW4gaW5maW5pdGUgcmVjdDsgaXQgd29uJ3Qgd29yay4KKwogMjAxNC0wMS0wNyAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE2MTQ0Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0
aW9ucy9XZWJLaXQyLnhjY29uZmlnCmluZGV4IDcyNmNiYjMuLmYwNjY5NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcKKysrIGIvU291
cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2NvbmZpZwpAQCAtMjksNyArMjks
NyBAQCBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiBJTlNUQUxMX1BBVEggPSAkKFdFQktJ
VDJfRlJBTUVXT1JLU19ESVIpOwogRFlMSUJfSU5TVEFMTF9OQU1FX0JBU0UgPSAkKE5PUk1BTF9X
RUJLSVQyX0ZSQU1FV09SS1NfRElSKTsKIAotRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1Mg
PSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1ld29yayBDYXJib24gLWZyYW1l
d29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJhbWV3b3JrIElPS2l0IC1mcmFt
ZXdvcmsgSmF2YVNjcmlwdENvcmUgLWxpY3Vjb3JlIC1mcmFtZXdvcmsgUXVhcnR6Q29yZSAtZnJh
bWV3b3JrIFdlYkNvcmUgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBJT1N1cmZhY2U7
CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9IC1mcmFtZXdvcmsgQXBwbGljYXRpb25T
ZXJ2aWNlcyAtZnJhbWV3b3JrIENhcmJvbiAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ29y
ZVNlcnZpY2VzIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtbGlj
dWNvcmUgLWZyYW1ld29yayBRdWFydHpDb3JlIC1mcmFtZXdvcmsgV2ViQ29yZSAtZnJhbWV3b3Jr
IENvcmVBdWRpbyAtZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIEFwcEtpdDsKIAogLy8g
UHJldmVudCBDKysgc3RhbmRhcmQgbGlicmFyeSBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhl
aXIgcmVsYXRlZCBleGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5
bWJvbHMuCiBVTkVYUE9SVEVEX1NZTUJPTF9MREZMQUdTID0gLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCAtV2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVElT
dDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDliYWRfYWxsb2Mg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53
bVB2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53bSAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sLCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVF
QzJFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklG
dk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzFFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
LCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFYVNF
RG4gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5LU3QzX18xOGZ1bmN0aW9uSUZ2TjdX
ZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVjbEVTMl8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVds
LF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRTRzd2FwRVJT
NF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dl
YkNvcmUxMlBvbGljeUFjdGlvbkVFRUMxRVJLUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1X
bCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVSS1M0
XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2Vi
Q29yZTEyUG9saWN5QWN0aW9uRUVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19a
TlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFRDJFdiAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9s
aWN5QWN0aW9uRUVFYVNFUktTNF87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0KaW5kZXggOGI3MTdjMy4uY2I3NGUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMzkwLDcgKzM5MCw3IEBAIHN0cnVjdCBXS1ZpZXdJ
bnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKICAgICBpZiAoX2RhdGEtPl91c2VDb250ZW50
UHJlcGFyYXRpb25SZWN0Rm9yVmlzaWJsZVJlY3QpCiAgICAgICAgIGV4cG9zZWRSZWN0ID0gTlNV
bmlvblJlY3QoX2RhdGEtPl9jb250ZW50UHJlcGFyYXRpb25SZWN0LCBleHBvc2VkUmVjdCk7CiAK
LSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdFeHBvc2VkUmVjdENoYW5nZWQoZXhwb3NlZFJlY3QsIF9k
YXRhLT5fY2xpcHNUb1Zpc2libGVSZWN0ID8gV2ViUGFnZVByb3h5OjpDbGlwc1RvRXhwb3NlZFJl
Y3Q6OkNsaXAgOiBXZWJQYWdlUHJveHk6OkNsaXBzVG9FeHBvc2VkUmVjdDo6RG9Ob3RDbGlwKTsK
KyAgICBfZGF0YS0+X3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNldEV4cG9zZWRSZWN0KF9kYXRhLT5f
Y2xpcHNUb1Zpc2libGVSZWN0ID8gRmxvYXRSZWN0KGV4cG9zZWRSZWN0KSA6IEZsb2F0UmVjdDo6
aW5maW5pdGVSZWN0KCkpOwogfQogCiAtICh2b2lkKXNldEZyYW1lU2l6ZTooTlNTaXplKXNpemUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCAw
NTVhN2ZjLi40Y2YwYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtMzgsNiArMzks
OSBAQCBEcmF3aW5nQXJlYVByb3h5OjpEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZSB0
eXBlLCBXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcgogICAgIDogbV90eXBlKHR5cGUpCiAgICAgLCBt
X3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCiAgICAgLCBtX3NpemUod2ViUGFnZVByb3h5LT52
aWV3U2l6ZSgpKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fZXhwb3NlZFJlY3RDaGFuZ2Vk
VGltZXIodGhpcywgJkRyYXdpbmdBcmVhUHJveHk6OmV4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyRmly
ZWQpCisjZW5kaWYKIHsKICAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCB3ZWJQYWdlUHJveHktPnBhZ2VJRCgpLCAqdGhpcyk7CiB9CkBAIC01OCw0ICs2MiwyOSBAQCB2
b2lkIERyYXdpbmdBcmVhUHJveHk6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3Qg
SW50U2l6ZSYgbGF5ZXJQb3NpdGlvbgogICAgIHNpemVEaWRDaGFuZ2UoKTsKIH0KIAorI2lmIFBM
QVRGT1JNKE1BQykKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eTo6c2V0RXhwb3NlZFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiBleHBvc2VkUmVjdCkKK3sKKyAgICBpZiAoIW1fd2ViUGFnZVByb3h5LT5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZXhwb3NlZFJlY3QgPSBleHBvc2VkUmVj
dDsKKworICAgIGlmICghbV9leHBvc2VkUmVjdENoYW5nZWRUaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICBtX2V4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9p
ZCBEcmF3aW5nQXJlYVByb3h5OjpleHBvc2VkUmVjdENoYW5nZWRUaW1lckZpcmVkKFRpbWVyPERy
YXdpbmdBcmVhUHJveHk+KikKK3sKKyAgICBpZiAoIW1fd2ViUGFnZVByb3h5LT5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2V4cG9zZWRSZWN0ID09IG1fbGFzdFNlbnRF
eHBvc2VkUmVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJQYWdlUHJveHktPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6U2V0RXhwb3NlZFJlY3QobV9leHBvc2Vk
UmVjdCksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisgICAgbV9sYXN0U2VudEV4cG9zZWRS
ZWN0ID0gbV9leHBvc2VkUmVjdDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDQ1N2Rj
YTUuLjJiNWJkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaApAQCAtMjksOSArMjksMTAgQEAKIAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2lu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9UaW1lci5oPgogI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTcyLDYgKzczLDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCkgeyB9CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBzZXRF
eHBvc2VkUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKKyAgICBXZWJDb3JlOjpGbG9h
dFJlY3QgZXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2V4cG9zZWRSZWN0OyB9CisgICAg
dm9pZCBleHBvc2VkUmVjdENoYW5nZWRUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPERyYXdpbmdB
cmVhUHJveHk+Kik7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IERyYXdpbmdB
cmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlLCBXZWJQYWdlUHJveHkqKTsKIApAQCAtMTAwLDYgKzEw
NywxMCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0dWFsIHZvaWQgZGlk
VXBkYXRlR2VvbWV0cnkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljQ29udGVudFNp
emVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3SW50cmluc2ljQ29udGVudFNp
emUpIHsgfQorCisgICAgV2ViQ29yZTo6VGltZXI8RHJhd2luZ0FyZWFQcm94eT4gbV9leHBvc2Vk
UmVjdENoYW5nZWRUaW1lcjsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9leHBvc2VkUmVjdDsK
KyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9sYXN0U2VudEV4cG9zZWRSZWN0OwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM1MjY4
MjkuLjAwM2MxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0zMDgsMTEgKzMwOCw2IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViCiAgICAgLCBtX21l
ZGlhVm9sdW1lKDEpCiAgICAgLCBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3codHJ1ZSkKICAg
ICAsIG1fd2FpdGluZ0ZvckRpZFVwZGF0ZVZpZXdTdGF0ZShmYWxzZSkKLSNpZiBQTEFURk9STShN
QUMpCi0gICAgLCBtX2V4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyKHRoaXMsICZXZWJQYWdlUHJveHk6
OmV4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyRmlyZWQpCi0gICAgLCBtX2NsaXBzVG9FeHBvc2VkUmVj
dChDbGlwc1RvRXhwb3NlZFJlY3Q6OkRvTm90Q2xpcCkKLSAgICAsIG1fbGFzdFNlbnRDbGlwc1Rv
RXhwb3NlZFJlY3QoQ2xpcHNUb0V4cG9zZWRSZWN0OjpEb05vdENsaXApCi0jZW5kaWYKICAgICAs
IG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKERvTm90UGluKQogewogICAgIHVwZGF0ZVZpZXdTdGF0
ZSgpOwpAQCAtNTYyLDEwICs1NTcsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAg
IG1fY29udGV4dE1lbnVDbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQotICAgIG1fZXhwb3NlZFJlY3RDaGFuZ2VkVGltZXIu
c3RvcCgpOwotI2VuZGlmCi0KICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNsb3NlKCksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UobV9wYWdl
SUQpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAtNDQyMCwzMSAr
NDQxMSw0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Ny
b2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHBpbm5pbmcpLCBtX3BhZ2VJ
RCk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKLXZvaWQgV2ViUGFn
ZVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkKGNvbnN0IEZsb2F0UmVjdCYgZXhwb3NlZFJl
Y3QsIENsaXBzVG9FeHBvc2VkUmVjdCBjbGlwc1RvRXhwb3NlZFJlY3QpCi17Ci0gICAgaWYgKCFp
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZXhwb3NlZFJlY3QgPSBleHBvc2Vk
UmVjdDsKLSAgICBtX2NsaXBzVG9FeHBvc2VkUmVjdCA9IGNsaXBzVG9FeHBvc2VkUmVjdDsKLQot
ICAgIGlmICghbV9leHBvc2VkUmVjdENoYW5nZWRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBt
X2V4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBXZWJQ
YWdlUHJveHk6OmV4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyRmlyZWQoVGltZXI8V2ViUGFnZVByb3h5
PiopCi17Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICht
X2V4cG9zZWRSZWN0ID09IG1fbGFzdFNlbnRFeHBvc2VkUmVjdCAmJiBtX2NsaXBzVG9FeHBvc2Vk
UmVjdCA9PSBtX2xhc3RTZW50Q2xpcHNUb0V4cG9zZWRSZWN0KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld0V4cG9zZWRSZWN0Q2hh
bmdlZChtX2V4cG9zZWRSZWN0LCBtX2NsaXBzVG9FeHBvc2VkUmVjdCA9PSBDbGlwc1RvRXhwb3Nl
ZFJlY3Q6OkNsaXApLCBtX3BhZ2VJRCk7Ci0gICAgbV9sYXN0U2VudEV4cG9zZWRSZWN0ID0gbV9l
eHBvc2VkUmVjdDsKLSAgICBtX2xhc3RTZW50Q2xpcHNUb0V4cG9zZWRSZWN0ID0gbV9jbGlwc1Rv
RXhwb3NlZFJlY3Q7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYzI5ZDMxOC4uMTViZGEzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDcyLDEwICs0NzIsNiBA
QCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCB3aW5kb3dBbmRWaWV3RnJh
bWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29v
cmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29v
cmRpbmF0ZXMpOwotICAgIGVudW0gY2xhc3MgQ2xpcHNUb0V4cG9zZWRSZWN0IHsgRG9Ob3RDbGlw
LCBDbGlwIH07Ci0gICAgdm9pZCB2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgZXhwb3NlZFJlY3QsIENsaXBzVG9FeHBvc2VkUmVjdCk7Ci0gICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3NlZFJl
Y3Q7IH0KLSAgICB2b2lkIGV4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyRmlyZWQoV2ViQ29yZTo6VGlt
ZXI8V2ViUGFnZVByb3h5PiopOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJv
b2wpOwogCiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0X3Qgc2Vs
ZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKTsKQEAgLTEzNzQsMTQgKzEz
NzAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV93YWl0aW5nRm9yRGlkVXBkYXRlVmlld1N0YXRl
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFdlYkNvcmU6OlRpbWVyPFdlYlBhZ2VQcm94eT4g
bV9leHBvc2VkUmVjdENoYW5nZWRUaW1lcjsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9leHBv
c2VkUmVjdDsKLSAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9sYXN0U2VudEV4cG9zZWRSZWN0Owot
ICAgIENsaXBzVG9FeHBvc2VkUmVjdCBtX2NsaXBzVG9FeHBvc2VkUmVjdDsKLSAgICBDbGlwc1Rv
RXhwb3NlZFJlY3QgbV9sYXN0U2VudENsaXBzVG9FeHBvc2VkUmVjdDsKLSNlbmRpZgotCi0jaWYg
UExBVEZPUk0oTUFDKQogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fdGVtcG9yYXJ5UERG
RmlsZXM7CiAjZW5kaWYKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGE1NDFlOWMuLjNjYzE4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0xMjM4LDYgKzEyMzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKIAogICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT52aWV3KCktPnNldFByb2hpYml0c1Njcm9sbGluZyhzaG91bGREaXNhYmxlU2Nyb2xsaW5nKTsK
ICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXRWaXN1YWxVcGRhdGVzQWxsb3dl
ZEJ5Q2xpZW50KCF3ZWJQYWdlLT5zaG91bGRFeHRlbmRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHBy
ZXNzaW9uKCkpOworICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnNldEV4cG9zZWRS
ZWN0KHdlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPmV4cG9zZWRSZWN0KCkpOwogI2lmIFBMQVRGT1JN
KElPUykKICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXREZWxlZ2F0ZXNTY3Jv
bGxpbmcodHJ1ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggODcwMjRkYy4uNjA4NTgzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNv
bnRleHQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlld1N0YXRlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTg2LDgg
Kzg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNv
bnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RXhwb3NlZFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNldENsaXBzVG9FeHBvc2VkUmVjdChib29sKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RXhwb3NlZFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9zZWRSZWN0KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBtYWluRnJhbWVTY3JvbGxhYmlsaXR5Q2hhbmdlZChib29sKSB7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jU2Nyb2xsaW5nKCkgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCBiZTQyMmJhLi4wMDNmODA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1l
c3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw4IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBVcGRhdGVHZW9tZXRyeShXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXpl
LCBXZWJDb3JlOjpJbnRTaXplIGxheWVyUG9zaXRpb24pCiAgICAgU2V0RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgU2V0Q29sb3JTcGFjZShXZWJLaXQ6OkNv
bG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpCi0gICAgCisgICAgU2V0RXhwb3NlZFJlY3QoV2ViQ29y
ZTo6RmxvYXRSZWN0IGV4cG9zZWRSZWN0KQorCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogICAgIENvbW1pdFRyYW5zaWVu
dFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDVm
Zjk2MDYuLjNiZmMxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTMwNzUsMTIgKzMwNzUsNiBAQCB2b2lkIFdlYlBhZ2U6OndpbmRvd0Fu
ZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IEZsb2F0UmVjdCYgd2luZG93RnJhbWVJblNjcmVlbkNv
bwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6dmlld0V4cG9zZWRSZWN0Q2hhbmdlZChjb25z
dCBGbG9hdFJlY3QmIGV4cG9zZWRSZWN0LCBib29sIGNsaXBzVG9FeHBvc2VkUmVjdCkKLXsKLSAg
ICBtX2RyYXdpbmdBcmVhLT5zZXRFeHBvc2VkUmVjdChleHBvc2VkUmVjdCk7Ci0gICAgbV9kcmF3
aW5nQXJlYS0+c2V0Q2xpcHNUb0V4cG9zZWRSZWN0KGNsaXBzVG9FeHBvc2VkUmVjdCk7Ci19Ci0K
IHZvaWQgV2ViUGFnZTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxl
KQogewogICAgIG1fbWFpbkZyYW1lSXNTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGYyYjM3Ny4uNDM3
ZDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC04MDIsNyArODAyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGRnJvbVBE
RkRvY3VtZW50KENHQ29udGV4dFJlZiwgUERGRG9jdW1lbnQgKiwgY29uc3QgUHJpbnRJbmZvJiwg
dWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50KTsKICNlbmRpZgogCi0gICAgdm9pZCB2aWV3
RXhwb3NlZFJlY3RDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZFJlY3Qs
IGJvb2wgY2xpcHNUb0V4cG9zZWRSZWN0KTsKICAgICB2b2lkIHNldE1haW5GcmFtZUlzU2Nyb2xs
YWJsZShib29sKTsKIAogICAgIHZvaWQgdW5hcHBseUVkaXRDb21tYW5kKHVpbnQ2NF90IGNvbW1h
bmRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDRhMWY4OTEuLjk3OWNlMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0y
NjgsNyArMjY4LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
U2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElu
cHV0SWRlbnRpZmllciwgU3RyaW5nIHRleHRJbnB1dCkKIAogICAgIFdpbmRvd0FuZFZpZXdGcmFt
ZXNDaGFuZ2VkKFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0
ZXMsIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRp
bmF0ZXMsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpCi0gICAgVmll
d0V4cG9zZWRSZWN0Q2hhbmdlZChXZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZFJlY3QsIGJvb2wg
Y2xpcHNUb0V4cG9zZWRSZWN0KQogICAgIFNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlz
U2Nyb2xsYWJsZSkKICAgICBSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoSVBD
OjpEYXRhUmVmZXJlbmNlIGVsZW1lblRva2VuLCBJUEM6OkRhdGFSZWZlcmVuY2Ugd2luZG93VG9r
ZW4pCiAgICAgR2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpIC0+IChTdHJpbmcgc3Ry
aW5nVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggOTYzZjAz
NC4uYTg3NjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtNzIs
NyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1
aW50NjRfdCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFeHBvc2VkUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2xpcHNUb0V4cG9zZWRSZWN0KGJvb2wpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9zZWRSZWN0KCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9zY3JvbGxlZEV4cG9zZWRSZWN0OyB9CiAKICAgICAvLyBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKSBPVkVSUklERSB7IH0KQEAg
LTg1LDcgKzg1LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dDb21wb3NpdGlu
Z0xheWVyVmlzdWFsRGVncmFkYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKLSAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZUNsaXBzVG9FeHBvc2VkUmVjdCgp
OwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwogCiAgICAgdm9pZCBsYXll
ckZsdXNoVGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YT4qKTsKQEAgLTEwMiw3ICsxMDEsNiBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IG1fZXhwb3NlZFJlY3Q7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fc2Nyb2xsZWRFeHBv
c2VkUmVjdDsKLSAgICBib29sIG1fY2xpcHNUb0V4cG9zZWRSZWN0OwogCiAgICAgV2ViQ29yZTo6
VGltZXI8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+IG1fbGF5ZXJGbHVzaFRpbWVyOwogICAg
IGJvb2wgbV9pc0ZsdXNoaW5nU3VzcGVuZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KaW5kZXggNDNlZTJmZC4uMWFmZGFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCkBAIC00Niw3ICs0Niw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBh
Z2UqIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKQogICAgIDogRHJh
d2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCB3ZWJQYWdlKQogICAgICwg
bV9yZW1vdGVMYXllclRyZWVDb250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVl
Q29udGV4dD4od2ViUGFnZSkpCi0gICAgLCBtX2NsaXBzVG9FeHBvc2VkUmVjdChmYWxzZSkKKyAg
ICAsIG1fZXhwb3NlZFJlY3QoRmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSkKKyAgICAsIG1fc2Ny
b2xsZWRFeHBvc2VkUmVjdChGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpKQogICAgICwgbV9sYXll
ckZsdXNoVGltZXIodGhpcywgJlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpsYXllckZsdXNo
VGltZXJGaXJlZCkKICAgICAsIG1faXNGbHVzaGluZ1N1c3BlbmRlZChmYWxzZSkKICAgICAsIG1f
aGFzRGVmZXJyZWRGbHVzaChmYWxzZSkKQEAgLTU0LDcgKzU1LDYgQEAgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UqIHdlYlBhZ2Us
IGNvbnN0IFcKICAgICB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29t
cG9zaXRpbmdNb2RlKHRydWUpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB3ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5zZXR0aW5ncygpLnNldERlbGVnYXRlc1BhZ2VTY2FsaW5nKHRydWUpOwotICAgIHNl
dENsaXBzVG9FeHBvc2VkUmVjdCh0cnVlKTsKICNlbmRpZgogfQogCkBAIC0yMzQsMTggKzIzNCw4
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldEV4cG9zZWRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgZXhwb3NlZFJlY3QpCiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgp
OwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRDbGlwc1RvRXhwb3Nl
ZFJlY3QoYm9vbCBjbGlwc1RvRXhwb3NlZFJlY3QpCi17Ci0gICAgbV9jbGlwc1RvRXhwb3NlZFJl
Y3QgPSBjbGlwc1RvRXhwb3NlZFJlY3Q7Ci0gICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgp
OwotICAgIHVwZGF0ZU1haW5GcmFtZUNsaXBzVG9FeHBvc2VkUmVjdCgpOwotfQotCiB2b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVTY3JvbGxlZEV4cG9zZWRSZWN0KCkKIHsK
LSAgICBpZiAoIW1fY2xpcHNUb0V4cG9zZWRSZWN0KQotICAgICAgICByZXR1cm47Ci0KICAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCku
dmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CkBAIC0yNTMsMzAg
KzI0MywxOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVTY3JvbGxl
ZEV4cG9zZWRSZWN0KCkKICAgICBtX3Njcm9sbGVkRXhwb3NlZFJlY3QgPSBtX2V4cG9zZWRSZWN0
OwogCiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbldpdGhP
cmlnaW4gPSBmcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkgKyB0b0ludFNpemUoZnJhbWVWaWV3
LT5zY3JvbGxPcmlnaW4oKSk7Ci0gICAgbV9zY3JvbGxlZEV4cG9zZWRSZWN0Lm1vdmVCeShzY3Jv
bGxQb3NpdGlvbldpdGhPcmlnaW4pOworICAgIGlmICghbV9leHBvc2VkUmVjdC5pc0luZmluaXRl
KCkpIHsKKyAgICAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb25XaXRoT3JpZ2luID0gZnJhbWVW
aWV3LT5zY3JvbGxQb3NpdGlvbigpICsgdG9JbnRTaXplKGZyYW1lVmlldy0+c2Nyb2xsT3JpZ2lu
KCkpOworICAgICAgICBtX3Njcm9sbGVkRXhwb3NlZFJlY3QubW92ZUJ5KHNjcm9sbFBvc2l0aW9u
V2l0aE9yaWdpbik7CisgICAgfQogI2VuZGlmCiAKLSAgICBtYWluRnJhbWVUaWxlZEJhY2tpbmco
KS0+c2V0RXhwb3NlZFJlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKKyAgICBmcmFtZVZpZXct
PnNldEV4cG9zZWRSZWN0KG1fc2Nyb2xsZWRFeHBvc2VkUmVjdCk7CiAKLSAgICBmb3IgKGF1dG8g
aXQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXll
cnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoVGlsZWRCYWNraW5nKiB0
aWxlZEJhY2tpbmcgPSBpdC0+dmFsdWUtPnRpbGVkQmFja2luZygpKQorICAgIGZvciAoY29uc3Qg
YXV0byYgbGF5ZXIgOiBtX3BhZ2VPdmVybGF5TGF5ZXJzLnZhbHVlcygpKSB7CisgICAgICAgIGlm
IChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IGxheWVyLT50aWxlZEJhY2tpbmcoKSkKICAg
ICAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0RXhwb3NlZFJlY3QobV9zY3JvbGxlZEV4cG9zZWRS
ZWN0KTsKICAgICB9Ci19Ci0KLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0
ZU1haW5GcmFtZUNsaXBzVG9FeHBvc2VkUmVjdCgpCi17Ci0gICAgaWYgKFRpbGVkQmFja2luZyog
dGlsZWRCYWNraW5nID0gbWFpbkZyYW1lVGlsZWRCYWNraW5nKCkpCi0gICAgICAgIHRpbGVkQmFj
a2luZy0+c2V0Q2xpcHNUb0V4cG9zZWRSZWN0KG1fY2xpcHNUb0V4cG9zZWRSZWN0KTsKLQotICAg
IGZvciAoYXV0byBpdCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuYmVnaW4oKSwgZW5kID0gbV9wYWdl
T3ZlcmxheUxheWVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpZiAoVGlsZWRC
YWNraW5nKiB0aWxlZEJhY2tpbmcgPSBpdC0+dmFsdWUtPnRpbGVkQmFja2luZygpKQotICAgICAg
ICAgICAgdGlsZWRCYWNraW5nLT5zZXRDbGlwc1RvRXhwb3NlZFJlY3QobV9jbGlwc1RvRXhwb3Nl
ZFJlY3QpOwotCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3dlYlBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIGZyYW1lVmlldy0+YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCAyYjIwODE0
Li4wOWE2MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBA
IC03OCw3ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNvbnRl
bnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RXhwb3NlZFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENsaXBzVG9FeHBvc2VkUmVjdChib29sKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkUmVjdCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fc2Nyb2xsZWRFeHBvc2VkUmVjdDsgfQorCiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzQXN5bmNTY3JvbGxpbmcoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yQW55RnJhbWUoKSBP
VkVSUklERTsKQEAgLTExOSw3ICsxMjAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlRGVi
dWdJbmZvTGF5ZXIoYm9vbCBzaG93TGF5ZXIpOwogCiAgICAgdm9pZCB1cGRhdGVJbnRyaW5zaWND
b250ZW50U2l6ZVRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE+Kik7Ci0gICAgdm9pZCB1cGRhdGVNYWluRnJhbWVDbGlwc1RvRXhwb3NlZFJlY3Qo
KTsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGVkRXhwb3NlZFJlY3QoKTsKICAgICAKICAgICB2b2lk
IGludmFsaWRhdGVBbGxQYWdlT3ZlcmxheXMoKTsKQEAgLTE0Myw3ICsxNDMsNiBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZFJlY3Q7CiAgICAgV2ViQ29yZTo6
RmxvYXRSZWN0IG1fc2Nyb2xsZWRFeHBvc2VkUmVjdDsKLSAgICBib29sIG1fY2xpcHNUb0V4cG9z
ZWRSZWN0OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3RTZW50SW50cmluc2ljQ29udGVu
dFNpemU7CiAgICAgV2ViQ29yZTo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+
IG1fdXBkYXRlSW50cmluc2ljQ29udGVudFNpemVUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDJiNjI3ZjMuLjkxNzg5N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtNzEsNyArNzEsOCBAQCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEo
V2ViUGFnZSogd2ViUGFnZSwgYwogICAgICwgbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuKGZhbHNl
KQogICAgICwgbV9sYXllckZsdXNoU2NoZWR1bGVyKHRoaXMpCiAgICAgLCBtX2lzUGFpbnRpbmdT
dXNwZW5kZWQoIShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkK
LSAgICAsIG1fY2xpcHNUb0V4cG9zZWRSZWN0KGZhbHNlKQorICAgICwgbV9leHBvc2VkUmVjdChG
bG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpKQorICAgICwgbV9zY3JvbGxlZEV4cG9zZWRSZWN0KEZs
b2F0UmVjdDo6aW5maW5pdGVSZWN0KCkpCiAgICAgLCBtX3VwZGF0ZUludHJpbnNpY0NvbnRlbnRT
aXplVGltZXIodGhpcywgJlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVJbnRy
aW5zaWNDb250ZW50U2l6ZVRpbWVyRmlyZWQpCiAgICAgLCBtX3RyYW5zaWVudFpvb21TY2FsZSgx
KQogewpAQCAtMzc0LDkgKzM3NSw4IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmZsdXNoTGF5ZXJzKCkKICAgICAgICAgbV9wZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIg
PSBudWxscHRyOwogICAgIH0KIAotICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KG1fcm9vdExheWVyLmdldCgpLmZyYW1lKTsKLSAgICBpZiAobV9jbGlwc1RvRXhwb3Nl
ZFJlY3QpCi0gICAgICAgIHZpc2libGVSZWN0LmludGVyc2VjdChlbmNsb3NpbmdJbnRSZWN0KG1f
c2Nyb2xsZWRFeHBvc2VkUmVjdCkpOworICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCA9IFttX3Jv
b3RMYXllciBmcmFtZV07CisgICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fc2Nyb2xsZWRFeHBv
c2VkUmVjdCk7CiAKICAgICBmb3IgKFBhZ2VPdmVybGF5TGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9wYWdlT3ZlcmxheUxheWVycy5iZWdpbigpLCBlbmQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgR3JhcGhpY3NMYXllciogbGF5ZXIgPSBp
dC0+dmFsdWUuZ2V0KCk7CkBAIC00MjcsMzMgKzQyNywyOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpzZXRFeHBvc2VkUmVjdChjb25zdCBGbG9hdFJlY3QmIGV4cG9zZWRS
ZWN0KQogICAgIHVwZGF0ZVNjcm9sbGVkRXhwb3NlZFJlY3QoKTsKIH0KIAotdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q2xpcHNUb0V4cG9zZWRSZWN0KGJvb2wgY2xpcHNU
b0V4cG9zZWRSZWN0KQotewotICAgIG1fY2xpcHNUb0V4cG9zZWRSZWN0ID0gY2xpcHNUb0V4cG9z
ZWRSZWN0OwotICAgIHVwZGF0ZVNjcm9sbGVkRXhwb3NlZFJlY3QoKTsKLSAgICB1cGRhdGVNYWlu
RnJhbWVDbGlwc1RvRXhwb3NlZFJlY3QoKTsKLX0KLQogdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6dXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpCiB7Ci0gICAgaWYgKCFtX2Ns
aXBzVG9FeHBvc2VkUmVjdCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKTsKICAgICBp
ZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UG9pbnQgc2Nyb2xsUG9z
aXRpb25XaXRoT3JpZ2luID0gZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpICsgdG9JbnRTaXpl
KGZyYW1lVmlldy0+c2Nyb2xsT3JpZ2luKCkpOwotCiAgICAgbV9zY3JvbGxlZEV4cG9zZWRSZWN0
ID0gbV9leHBvc2VkUmVjdDsKLSAgICBtX3Njcm9sbGVkRXhwb3NlZFJlY3QubW92ZUJ5KHNjcm9s
bFBvc2l0aW9uV2l0aE9yaWdpbik7CiAKLSAgICBtYWluRnJhbWVUaWxlZEJhY2tpbmcoKS0+c2V0
RXhwb3NlZFJlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKKyNpZiAhUExBVEZPUk0oSU9TKQor
ICAgIGlmICghbV9leHBvc2VkUmVjdC5pc0luZmluaXRlKCkpIHsKKyAgICAgICAgSW50UG9pbnQg
c2Nyb2xsUG9zaXRpb25XaXRoT3JpZ2luID0gZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpICsg
dG9JbnRTaXplKGZyYW1lVmlldy0+c2Nyb2xsT3JpZ2luKCkpOworICAgICAgICBtX3Njcm9sbGVk
RXhwb3NlZFJlY3QubW92ZUJ5KHNjcm9sbFBvc2l0aW9uV2l0aE9yaWdpbik7CisgICAgfQorI2Vu
ZGlmCiAKLSAgICBmb3IgKFBhZ2VPdmVybGF5TGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wYWdl
T3ZlcmxheUxheWVycy5iZWdpbigpLCBlbmQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5n
ID0gaXQtPnZhbHVlLT50aWxlZEJhY2tpbmcoKSkKKyAgICBmcmFtZVZpZXctPnNldEV4cG9zZWRS
ZWN0KG1fc2Nyb2xsZWRFeHBvc2VkUmVjdCk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGxheWVy
IDogbV9wYWdlT3ZlcmxheUxheWVycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoVGlsZWRCYWNr
aW5nKiB0aWxlZEJhY2tpbmcgPSBsYXllci0+dGlsZWRCYWNraW5nKCkpCiAgICAgICAgICAgICB0
aWxlZEJhY2tpbmctPnNldEV4cG9zZWRSZWN0KG1fc2Nyb2xsZWRFeHBvc2VkUmVjdCk7CiAgICAg
fQorCisgICAgZnJhbWVWaWV3LT5hZGp1c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwogfQogCiB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeShjb25zdCBJ
bnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJQb3NpdGlvbikKQEAgLTU2MCwy
MiArNTU2LDYgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlTGF5
ZXJIb3N0aW5nQ29udGV4dCgpCiAgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29s
b3JTcGFjZShjb2xvclNwYWNlLmdldCgpKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6dXBkYXRlTWFpbkZyYW1lQ2xpcHNUb0V4cG9zZWRSZWN0KCkKLXsKLSAgICBp
ZiAoVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcgPSBtYWluRnJhbWVUaWxlZEJhY2tpbmcoKSkK
LSAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRDbGlwc1RvRXhwb3NlZFJlY3QobV9jbGlwc1RvRXhw
b3NlZFJlY3QpOwotCi0gICAgZm9yIChQYWdlT3ZlcmxheUxheWVyTWFwOjppdGVyYXRvciBpdCA9
IG1fcGFnZU92ZXJsYXlMYXllcnMuYmVnaW4oKSwgZW5kID0gbV9wYWdlT3ZlcmxheUxheWVycy5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpZiAoVGlsZWRCYWNraW5nKiB0aWxlZEJh
Y2tpbmcgPSBpdC0+dmFsdWUtPnRpbGVkQmFja2luZygpKQotICAgICAgICAgICAgdGlsZWRCYWNr
aW5nLT5zZXRDbGlwc1RvRXhwb3NlZFJlY3QobV9jbGlwc1RvRXhwb3NlZFJlY3QpOwotCi0gICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZnJh
bWVWaWV3LT5hZGp1c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwotfQotCiB2b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihDQUxheWVyICps
YXllcikKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbik7CkBAIC01OTQs
MTIgKzU3NCw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RD
b21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKmxheWVyKQogICAgIGZvciAoUGFnZU92ZXJsYXlMYXll
ck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1f
cGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgW21fcm9v
dExheWVyLmdldCgpIGFkZFN1YmxheWVyOml0LT52YWx1ZS0+cGxhdGZvcm1MYXllcigpXTsKIAot
ICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZyA9IG1haW5GcmFtZVRpbGVkQmFja2lu
ZygpKSB7CisgICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gbWFpbkZyYW1lVGls
ZWRCYWNraW5nKCkpCiAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0QWdncmVzc2l2ZWx5UmV0YWlu
c1RpbGVzKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5hZ2dyZXNzaXZlVGlsZVJl
dGVudGlvbkVuYWJsZWQoKSk7Ci0gICAgICAgIHRpbGVkQmFja2luZy0+c2V0RXhwb3NlZFJlY3Qo
bV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKLSAgICB9Ci0KLSAgICB1cGRhdGVNYWluRnJhbWVDbGlw
c1RvRXhwb3NlZFJlY3QoKTsKIAogICAgIHVwZGF0ZURlYnVnSW5mb0xheWVyKG1fd2ViUGFnZS0+
Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5zaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoKSk7CiAK
QEAgLTYxOSwxMSArNTk1LDYgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
Y3JlYXRlUGFnZU92ZXJsYXlMYXllcihQYWdlT3ZlcmxheSogcGFnZU92ZXIKIAogICAgIG1fcGFn
ZU92ZXJsYXlQbGF0Zm9ybUxheWVycy5zZXQobGF5ZXIuZ2V0KCksIGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkpOwogCi0gICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gbGF5ZXItPnRp
bGVkQmFja2luZygpKSB7Ci0gICAgICAgIHRpbGVkQmFja2luZy0+c2V0RXhwb3NlZFJlY3QobV9z
Y3JvbGxlZEV4cG9zZWRSZWN0KTsKLSAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRDbGlwc1RvRXhw
b3NlZFJlY3QobV9jbGlwc1RvRXhwb3NlZFJlY3QpOwotICAgIH0KLQogICAgIFtDQVRyYW5zYWN0
aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwog
CkBAIC02NjcsMTEgKzYzOCw2IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OmRpZENvbW1pdENoYW5nZXNGb3JMYXllcihjb25zdCBHcmFwaGljc0xheWVyCiAKICAgICBbQ0FU
cmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5n
ID0gbGF5ZXItPnRpbGVkQmFja2luZygpKSB7Ci0gICAgICAgIHRpbGVkQmFja2luZy0+c2V0RXhw
b3NlZFJlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKLSAgICAgICAgdGlsZWRCYWNraW5nLT5z
ZXRDbGlwc1RvRXhwb3NlZFJlY3QobV9jbGlwc1RvRXhwb3NlZFJlY3QpOwotICAgIH0KLQogICAg
IG1fcGFnZU92ZXJsYXlQbGF0Zm9ybUxheWVycy5zZXQobGF5ZXIsIGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkpOwogfQogCg==
</data>
<flag name="review"
          id="244307"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="244317"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>