<?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>75780</bug_id>
          
          <creation_ts>2012-01-07 09:44:54 -0800</creation_ts>
          <short_desc>[Qt][WK2] Accelerated and non-accelerated animations need to be synchronized</short_desc>
          <delta_ts>2012-04-09 14:59:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>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>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82522</dependson>
    
    <dependson>82523</dependson>
    
    <dependson>82525</dependson>
    
    <dependson>82533</dependson>
    
    <dependson>82534</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531666</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-07 09:44:54 -0800</bug_when>
    <thetext>In order to avoid an overload of IPC messages during each animation frame, we&apos;ve moved the animation logic to the UI process. However, this makes the animation go out of sync when there&apos;s both an accelerated and a non-accelerated animation running at the same time.
The solution may include keeping the animation logic in the UI process, but moving the frame timers to the web-process, sending timed frame events to the UI process without the rest of the animation info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567979</commentid>
    <comment_count>1</comment_count>
      <attachid>129525</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-29 14:58:33 -0800</bug_when>
    <thetext>Created attachment 129525
Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590117</commentid>
    <comment_count>2</comment_count>
      <attachid>134331</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-03-28 10:39:32 -0700</bug_when>
    <thetext>Created attachment 134331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590260</commentid>
    <comment_count>3</comment_count>
      <attachid>134331</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-03-28 12:22:17 -0700</bug_when>
    <thetext>Comment on attachment 134331
Patch

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

&gt; Source/WebKit2/Shared/WebLayerTreeInfo.cpp:35
&gt; +    SimpleArgumentCoder&lt;WebLayerInfo&gt;::encode(encoder, *this);

Could you add a comment somewhere that this requires WebLayerInfo to be a POD type?

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:-128
&gt; -void WebLayerTreeRenderer::syncAnimations()

It would be very nice if the animation removal was a separate patch, or the other way around.

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:-176
&gt; -    bool needsToUpdateImageTiles = layerInfo.imageIsUpdated || (layerInfo.contentsRect != layer-&gt;contentsRect() &amp;&amp; layerInfo.imageBackingStoreID);

You could remove the imageIsUpdated flag from WebLayerInfo if you don&apos;t use it anymore.

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:169
&gt; +            child = createLayer(childID).leakPtr();

Is this layer deleted anywhere on destruction? Anyway this looks like moved code.

&gt; Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:279
&gt; +    QImage image = bitmap-&gt;createQImage();

Is this intentional?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:79
&gt; +    m_shouldUpdateVisibleRect = true;

I don&apos;t see this used anywhere, am I missing something?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:464
&gt; +    float scale = shouldUseTiledBackingStore() ? m_contentsScale : 1;

The way this function is used here is misleading, its name could be improved or a comment might help.
This could also go in a different patch.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:556
&gt;  void WebGraphicsLayer::updateContentBuffers()
&gt;  {
&gt; +    if (m_image) {
&gt; +        if (!m_layerInfo.imageBackingStoreID)
&gt; +            m_layerInfo.imageBackingStoreID = m_webGraphicsLayerClient-&gt;adoptImageBackingStore(m_image.get());
&gt; +    }
&gt; +

Is it voluntary to move it back there?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:645
&gt; +bool WebGraphicsLayer::selfOrAncestorMightHaveNonAffineTransforms()

I would remove &quot;Might&quot;.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:650
&gt; -    if (!m_transformAnimations.isEmpty())
&gt; +    if (!m_layerTransform.combined().isAffine())
&gt;          return true;
&gt;  
&gt; -    if (parent())
&gt; -        return toWebGraphicsLayer(parent())-&gt;selfOrAncestorHasActiveTransformAnimations();
&gt; -
&gt;      return false;

return !m_layerTranform.combined().isAffine()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590313</commentid>
    <comment_count>4</comment_count>
      <attachid>134331</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-03-28 12:55:40 -0700</bug_when>
    <thetext>Comment on attachment 134331
Patch

Separating to a few patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590501</commentid>
    <comment_count>5</comment_count>
      <attachid>134418</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-03-28 15:12:32 -0700</bug_when>
    <thetext>Created attachment 134418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591034</commentid>
    <comment_count>6</comment_count>
      <attachid>134418</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-03-29 04:32:40 -0700</bug_when>
    <thetext>Comment on attachment 134418
Patch

Much softer on the brain, thanks :)
This one LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591065</commentid>
    <comment_count>7</comment_count>
      <attachid>134418</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-03-29 05:07:13 -0700</bug_when>
    <thetext>Comment on attachment 134418
Patch

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

Sorry, forgot a small nitpick.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:642
&gt; -    if (!m_transformAnimations.isEmpty())
&gt; -        return true;
&gt; -
&gt;      if (!m_layerTransform.combined().isAffine())
&gt;          return true;

return !m_layerTransform.combined().isAffine(); would look better here. Same comment as before, so just tell me if you think it doesn&apos;t make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591127</commentid>
    <comment_count>8</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-03-29 06:42:48 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 134418 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134418&amp;action=review
&gt; 
&gt; Sorry, forgot a small nitpick.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:642
&gt; &gt; -    if (!m_transformAnimations.isEmpty())
&gt; &gt; -        return true;
&gt; &gt; -
&gt; &gt;      if (!m_layerTransform.combined().isAffine())
&gt; &gt;          return true;
&gt; 
&gt; return !m_layerTransform.combined().isAffine(); would look better here. Same comment as before, so just tell me if you think it doesn&apos;t make sense.

I agree, just missed that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594453</commentid>
    <comment_count>9</comment_count>
      <attachid>134418</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-04-03 07:09:01 -0700</bug_when>
    <thetext>Comment on attachment 134418
Patch

dont land before we have the whole feature reviewed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598426</commentid>
    <comment_count>10</comment_count>
      <attachid>136266</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-09 10:52:55 -0700</bug_when>
    <thetext>Created attachment 136266
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598649</commentid>
    <comment_count>11</comment_count>
      <attachid>136266</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 14:59:29 -0700</bug_when>
    <thetext>Comment on attachment 136266
Patch for landing

Clearing flags on attachment: 136266

Committed r113628: &lt;http://trac.webkit.org/changeset/113628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598650</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 14:59:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>129525</attachid>
            <date>2012-02-29 14:58:33 -0800</date>
            <delta_ts>2012-02-29 14:58:33 -0800</delta_ts>
            <desc>Test</desc>
            <filename>anim.html</filename>
            <type>text/html</type>
            <size>689</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIGRpdiB7CiAgICAg
ICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OwogICAgICAgICAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAg
ICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogNHM7CiAgICAgICAgICAgICAg
ICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDsKICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgLmFuaW0gI2EgeyBsZWZ0OiA1MDBweDsgdHJhbnNsYXRlWigwKTsgfQogICAgICAgICAg
ICAjYiB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsgfQogICAgICAg
ICAgICAuYW5pbSAjYiB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg1MDBweCwgMCwg
MCk7IH0KCgogICAgICAgIDwvc3R5bGU+CiAgICA8L2hlYWQ+CiAgICA8Ym9keSBvbmxvYWQ9ImRv
Y3VtZW50LmJvZHkuY2xhc3NOYW1lPSdhbmltJyI+CiAgICAgICAgPGRpdiBpZD0iYSI+PC9kaXY+
CiAgICAgICAgPGJyLz4KICAgICAgICA8ZGl2IGlkPSJiIj48L2Rpdj4KICAgIDwvYm9keT4KPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134331</attachid>
            <date>2012-03-28 10:39:32 -0700</date>
            <delta_ts>2012-03-28 15:12:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75780-20120328103925.patch</filename>
            <type>text/plain</type>
            <size>44701</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTVlZGNlN2IzOGIxOTVk
ODE2OTg0YTc4MWVmYzU1YzI3NmI2YzkwNC4uMDE4N2Q5YWRkZmIzZTk2NWJjODA1NjYxMjE1MTcy
M2FmY2QwOGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wMy0yOCAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1b
V0syXSBBY2NlbGVyYXRlZCBhbmQgbm9uLWFjY2VsZXJhdGVkIGFuaW1hdGlvbnMgbmVlZCB0byBi
ZSBzeW5jaHJvbml6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1NzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIG9yaWdpbmFsIHJlYXNvbmluZyBiZWhpbmQgbW92aW5nIGFuaW1hdGlvbnMgdG8g
dGhlIFVJIHByb2Nlc3Mgd2FzCisgICAgICAgIHRoYXQgSVBDIGR1cmluZyBhbmltYXRpb24gaXMg
c2xvdy4gSG93ZXZlciwgdGhpcyBjYXVzZXMgc3luY2hyb25pemF0aW9uCisgICAgICAgIHByb2Js
ZW1zIHdpdGggbm9uLXVpLXNpZGUgYW5pbWF0aW9ucywgc3VjaCBhcyBjc3MzIGFuaW1hdGlvbnMg
Zm9yCisgICAgICAgIHByb3BlcnRpZXMgb3RoZXIgdGhhbiB0cmFuc2Zvcm0vb3BhY2l0eSwgYXMg
d2VsbCBhcyBjYW52YXMgb3IgamF2YXNjcmlwdAorICAgICAgICBhbmltYXRpb25zLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggZ2V0cyByaWQgb2YgdGhlIFVJLXNpZGUgYW5pbWF0aW9ucywgYW5kIGlu
c3RlYWQgbWFrZXMgc3VyZQorICAgICAgICB0aGF0IHRoZSBJUEMgdHJhZmZpYyBkdXJpbmcgYW5p
bWF0aW9ucyBpcyBtaW5pbWFsLCBieSBwYXNzaW5nIG9ubHkgdGhlCisgICAgICAgIG5lY2Vzc2Fy
eSBiaXRzIGZvciBlYWNoIGxheWVyLgorCisgICAgICAgIFdlIGRvIHRoYXQgYnkgc2VwYXJhdGlu
ZyBnZW9tZXRyeSBjaGFuZ2VzLCB3aGljaCBhZmZlY3QgdGhlIGxheWVyIHN0YXRlCisgICAgICAg
IGFzIHdlbGwgYXMgcmVxdWlyZSBhIHZpc2libGUtcmVjdCBhZGp1c3RtZW50LCBsYXllci1zdGF0
ZSBjaGFuZ2VzIHRoYXQKKyAgICAgICAgZG9uJ3QgYWZmZWN0IGdlb21ldHJ5LCBjaGFuZ2VzIHRv
IHRoZSBsYXllciBjb250ZW50LCBhbmQgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgbGF5ZXIgaGll
cmFyY2h5LiBFYWNoIG9mIHRob3NlIGNoYW5nZXMgd291bGQgYmUgc2VudCB2aWEgSVBDIHNlcGFy
YXRlbHksCisgICAgICAgIHdoaWNoIG1lYW5zIHRoYXQgZHVyaW5nIGFuaW1hdGlvbiBhIGxvdCBs
ZXNzIHRyYWZmaWMgd2lsbCBiZSBuZWVkZWQuCisKKyAgICAgICAgVGhpcyB3YXMgdGVzdGVkIG9u
IHNldmVyYWwgcGxhdGZvcm1zLCBpbmNsdWRpbmcgZW1iZWRkZWQsIGFuZCBoYXMgc2hvd24KKyAg
ICAgICAgb25seSBtaWxkIHJlZ3Jlc3Npb25zIGluIGFuaW1hdGlvbiBwZXJmb3JtYW5jZSwgd2hp
Y2ggY2FuIGJlIGZpeGVkIGJ5CisgICAgICAgIGZ1cnRoZXIgcmVkdWNpbmcgSVBDIHRyYWZmaWMg
YW5kIGNoYW5naW5nIHRoZSBhbmltYXRpb24gdGltZXIgdG8gNjBGUFMuCisgICAgICAgIEl0IGRv
ZXMgbWFrZSBhbmltYXRpb25zIGJlIGNvcnJlY3QgYW5kIHN5bmNocm9uaXplZC4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbmZvOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckluZm86OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbmZvOjpXZWJMYXllckluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXllclRy
ZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OnNl
dENvbXBvc2l0aW5nTGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0UHJveHk6OnNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoTGF5ZXJU
cmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVJlbmRlcmVyOjpwYWludFRvQ3VycmVudEdM
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXll
ckNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJU
cmVlUmVuZGVyZXI6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
UmVuZGVyZXI6OmFzc2lnbkltYWdlVG9MYXllcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxh
eWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChXZWJMYXllclRyZWVSZW5kZXJlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmRpZENoYW5nZUxheWVyU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpz
ZXRTaG91bGRVcGRhdGVWaXNpYmxlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGlj
c0xheWVyOjpkaWRDaGFuZ2VHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGlj
c0xheWVyOjpXZWJHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNz
TGF5ZXI6OnNldENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6
OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxk
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEFi
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3cp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3Jh
cGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c2V0TWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGlj
c0xheWVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c2V0Q29udGVudHNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXll
cjo6c2V0Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVy
OjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0
UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXI6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6
c2V0Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6YWRqdXN0
Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzaG91
bGRVc2VUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xh
eWVyOjp0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnNlbGZPckFuY2VzdG9yTWlnaHRIYXZlTm9u
QWZmaW5lVHJhbnNmb3Jtcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJHcmFwaGljc0xheWVyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9x
dC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6
OnN5bmNMYXllclN0YXRlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUhvc3RRdDo6c3luY0xheWVyQ2hpbGRyZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RRdCk6
CisKIDIwMTItMDMtMjggIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtRdF0gRml4IFFXQVJOIGluIHRlc3RfbG9hZElnbm9yZUVtcHR5VXJsIEFQSSB0ZXN0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3BwCmluZGV4IGJiZjI2
Y2Q3NTFjMWI4MjM0NmM1MGQ4Mjg0MTBkZWEyYmIzYTM3OWYuLmZmZGVhNTIyYjM5ZDI2YzRmN2E1
MTE4OTFlNWRlY2I4NzA4ZDQ0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJMYXllclRyZWVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJU
cmVlSW5mby5jcHAKQEAgLTIyLDkgKzIyLDkgQEAKICNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElO
RykKICNpbmNsdWRlICJXZWJMYXllclRyZWVJbmZvLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5o
IgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
Q29yZUlQQzsKIApAQCAtMzIsNjcgKzMyLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lk
IFdlYkxheWVySW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rlcikg
Y29uc3QKIHsKLSAgICAvLyBXZSBoYXZlIHRvIGRpdmlkZSBpdCB0byBzZXZlcmFsIGxpbmVzLCBi
ZWNhdXNlIENvcmVJUEM6OkluL091dCB0YWtlcyBhIG1heGltdW0gb2YgMTAgYXJndW1lbnRzLgot
ICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihpZCwgbmFtZSwgcGFyZW50LCBjaGlsZHJl
biwgZmxhZ3MsIHJlcGxpY2EsIG1hc2ssIGltYWdlQmFja2luZ1N0b3JlSUQpKTsKLSAgICBlbmNv
ZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4ocG9zLCBzaXplLCB0cmFuc2Zvcm0sIG9wYWNpdHksIGFu
Y2hvclBvaW50LCBjaGlsZHJlblRyYW5zZm9ybSwgY29udGVudHNSZWN0LCBhbmltYXRpb25zKSk7
CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxXZWJMYXllckluZm8+OjplbmNvZGUoZW5jb2Rlciwg
KnRoaXMpOwogfQogCiBib29sIFdlYkxheWVySW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgV2ViTGF5ZXJJbmZvJiBpbmZvKQogewotICAgIC8vIFdlIGhhdmUg
dG8gZGl2aWRlIGl0IHRvIHNldmVyYWwgbGluZXMsIGJlY2F1c2UgQ29yZUlQQzo6SW4vT3V0IHRh
a2VzIGEgbWF4aW11bSBvZiAxMCBhcmd1bWVudHMuCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
Q29yZUlQQzo6T3V0KGluZm8uaWQsIGluZm8ubmFtZSwgaW5mby5wYXJlbnQsIGluZm8uY2hpbGRy
ZW4sIGluZm8uZmxhZ3MsIGluZm8ucmVwbGljYSwgaW5mby5tYXNrLCBpbmZvLmltYWdlQmFja2lu
Z1N0b3JlSUQpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKENvcmVJUEM6Ok91dChpbmZvLnBvcywgaW5mby5zaXplLCBpbmZvLnRyYW5zZm9ybSwgaW5m
by5vcGFjaXR5LCBpbmZvLmFuY2hvclBvaW50LCBpbmZvLmNoaWxkcmVuVHJhbnNmb3JtLCBpbmZv
LmNvbnRlbnRzUmVjdCwgaW5mby5hbmltYXRpb25zKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYkxheWVyVHJlZUluZm86OmVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlKENvcmVJUEM6OkluKGxheWVycywgcm9vdExheWVySUQsIGRlbGV0ZWRMYXllcklEcywg
Y29udGVudFNjYWxlKSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXJUcmVlSW5mbzo6ZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViTGF5ZXJUcmVlSW5mbyYgaW5mbykKLXsK
LSAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpbmZvLmxheWVycywgaW5m
by5yb290TGF5ZXJJRCwgaW5mby5kZWxldGVkTGF5ZXJJRHMsIGluZm8uY29udGVudFNjYWxlKSk7
Ci19Ci0KLXZvaWQgV2ViTGF5ZXJVcGRhdGVJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJ
bihsYXllcklELCByZWN0LCBiaXRtYXBIYW5kbGUpKTsKKyAgICByZXR1cm4gU2ltcGxlQXJndW1l
bnRDb2RlcjxXZWJMYXllckluZm8+OjpkZWNvZGUoZGVjb2RlciwgaW5mbyk7CiB9Ci0KLWJvb2wg
V2ViTGF5ZXJVcGRhdGVJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBXZWJMYXllclVwZGF0ZUluZm8mIGluZm8pCi17Ci0gICAgcmV0dXJuIGRlY29kZXItPmRl
Y29kZShDb3JlSVBDOjpPdXQoaW5mby5sYXllcklELCBpbmZvLnJlY3QsIGluZm8uYml0bWFwSGFu
ZGxlKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJBbmltYXRpb246OmVuY29kZShDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci0+ZW5jb2RlRW51bShv
cGVyYXRpb24pOwotICAgIGVuY29kZXItPmVuY29kZShrZXlmcmFtZUxpc3QpOwotICAgIGVuY29k
ZXItPmVuY29kZShDb3JlSVBDOjpJbihuYW1lLCBzdGFydFRpbWUsIGJveFNpemUpKTsKLQotICAg
IGlmIChvcGVyYXRpb24gPT0gV2ViTGF5ZXJBbmltYXRpb246OkFkZEFuaW1hdGlvbikKLSAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKGFuaW1hdGlvbik7Ci19Ci0KLWJvb2wgV2ViTGF5ZXJBbmltYXRp
b246OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkxheWVyQW5p
bWF0aW9uJiBpbmZvKQotewotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShpbmZvLm9wZXJh
dGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShp
bmZvLmtleWZyYW1lTGlzdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaW5mby5uYW1lLCBpbmZvLnN0YXJ0VGltZSwgaW5mby5i
b3hTaXplKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpbmZvLm9wZXJhdGlv
biA9PSBXZWJMYXllckFuaW1hdGlvbjo6QWRkQW5pbWF0aW9uKQotICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShpbmZvLmFuaW1hdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkxheWVyVHJlZUluZm8uaAppbmRleCA3MjNjYWZkNGVjMzBjMDA4ZjJhOTZmMDhlNmZlZTVjNGUw
MTM1ODMzLi4xYzRlYmJmNGMxMDdlZmJjZTZhNDVhNzAwODVkYTQyMmEwODg1YmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJbmZvLmgKQEAgLTM0LDU4ICszNCwxNSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHR5cGVkZWYgdWludDMyX3QgV2ViTGF5ZXJJRDsKIGVudW0geyBJ
bnZhbGlkV2ViTGF5ZXJJRCA9IDAgfTsKIAotc3RydWN0IFdlYkxheWVyVXBkYXRlSW5mbyB7Ci0g
ICAgV2ViTGF5ZXJVcGRhdGVJbmZvKCkgeyB9Ci0gICAgV2ViTGF5ZXJVcGRhdGVJbmZvKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHIpCi0gICAgICAgIDogbGF5ZXJJRChJbnZhbGlkV2ViTGF5ZXJJ
RCkKLSAgICAgICAgLCByZWN0KHIpIHsgfQotCi0gICAgV2ViTGF5ZXJJRCBsYXllcklEOwotICAg
IFdlYkNvcmU6OkludFJlY3QgcmVjdDsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRt
YXBIYW5kbGU7Ci0KLSAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBj
b25zdDsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
V2ViTGF5ZXJVcGRhdGVJbmZvJik7Ci19OwotCi1zdHJ1Y3QgV2ViTGF5ZXJBbmltYXRpb24gewot
ICAgIFdlYkxheWVyQW5pbWF0aW9uKCkKLSAgICAgICAgOiBvcGVyYXRpb24oSW52YWxpZEFuaW1h
dGlvbikKLSAgICAgICAgLCBrZXlmcmFtZUxpc3QoV2ViQ29yZTo6QW5pbWF0ZWRQcm9wZXJ0eUlu
dmFsaWQpCi0gICAgICAgICwgc3RhcnRUaW1lKDApIHsgfQotICAgIFdlYkxheWVyQW5pbWF0aW9u
KGNvbnN0IFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QpCi0gICAgICAgIDog
b3BlcmF0aW9uKEludmFsaWRBbmltYXRpb24pCi0gICAgICAgICwga2V5ZnJhbWVMaXN0KHZhbHVl
TGlzdCkKLSAgICAgICAgLCBzdGFydFRpbWUoMCkgeyB9Ci0KLSAgICBTdHJpbmcgbmFtZTsKLSAg
ICBlbnVtIE9wZXJhdGlvbiB7Ci0gICAgICAgIEFkZEFuaW1hdGlvbiwKLSAgICAgICAgUmVtb3Zl
QW5pbWF0aW9uLAotICAgICAgICBQYXVzZUFuaW1hdGlvbiwKLSAgICAgICAgSW52YWxpZEFuaW1h
dGlvbgotICAgIH0gb3BlcmF0aW9uOwotICAgIFdlYkNvcmU6OkludFNpemUgYm94U2l6ZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6QW5pbWF0aW9uPiBhbmltYXRpb247Ci0gICAgV2ViQ29yZTo6S2V5
ZnJhbWVWYWx1ZUxpc3Qga2V5ZnJhbWVMaXN0OwotICAgIGRvdWJsZSBzdGFydFRpbWU7Ci0KLSAg
ICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKLSAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV2ViTGF5ZXJBbmltYXRp
b24mKTsKLX07Ci0KIHN0cnVjdCBXZWJMYXllckluZm8gewogICAgIFdlYkxheWVySW5mbygpCi0g
ICAgICAgIDogaWQoSW52YWxpZFdlYkxheWVySUQpCi0gICAgICAgICwgcGFyZW50KEludmFsaWRX
ZWJMYXllcklEKQorICAgICAgICA6IHBhcmVudChJbnZhbGlkV2ViTGF5ZXJJRCkKICAgICAgICAg
LCByZXBsaWNhKEludmFsaWRXZWJMYXllcklEKQogICAgICAgICAsIG1hc2soSW52YWxpZFdlYkxh
eWVySUQpCiAgICAgICAgICwgaW1hZ2VCYWNraW5nU3RvcmVJRCgwKQogICAgICAgICAsIG9wYWNp
dHkoMCkKICAgICAgICAgLCBmbGFncygwKSB7IH0KIAotICAgIFN0cmluZyBuYW1lOwotICAgIFdl
YkxheWVySUQgaWQ7CiAgICAgV2ViTGF5ZXJJRCBwYXJlbnQ7CiAgICAgV2ViTGF5ZXJJRCByZXBs
aWNhOwogICAgIFdlYkxheWVySUQgbWFzazsKQEAgLTExMiwyOCArNjksMTEgQEAgc3RydWN0IFdl
YkxheWVySW5mbyB7CiAgICAgICAgIH07CiAgICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAg
ICB9OwotICAgIFZlY3RvcjxXZWJMYXllcklEPiBjaGlsZHJlbjsKLSAgICBWZWN0b3I8V2ViTGF5
ZXJBbmltYXRpb24+IGFuaW1hdGlvbnM7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gaW1h
Z2VCYWNraW5nU3RvcmU7CiAKICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXIqKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiwgV2ViTGF5ZXJJbmZvJik7CiB9OwogCi1zdHJ1Y3QgV2ViTGF5ZXJUcmVlSW5mbyB7Ci0g
ICAgV2ViTGF5ZXJUcmVlSW5mbygpCi0gICAgICAgIDogcm9vdExheWVySUQoSW52YWxpZFdlYkxh
eWVySUQpCi0gICAgICAgICwgY29udGVudFNjYWxlKDApIHsgfQotCi0gICAgVmVjdG9yPFdlYkxh
eWVySW5mbz4gbGF5ZXJzOwotICAgIFZlY3RvcjxXZWJMYXllcklEPiBkZWxldGVkTGF5ZXJJRHM7
Ci0gICAgV2ViTGF5ZXJJRCByb290TGF5ZXJJRDsKLSAgICBmbG9hdCBjb250ZW50U2NhbGU7Ci0K
LSAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKLSAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV2ViTGF5ZXJUcmVl
SW5mbyYpOwotfTsKLQogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApp
bmRleCBjMmY2MTYwMjk2YjAwNzM4OWJlYjg1MzQ3YWYzN2Y0YzczMGMyYTI0Li4yNDQ5YzMxMjYz
N2JkY2IxNzg5OTUxYTBlZDQwODAxOGJmOGNjYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtOTgsOSArOTgsMTQgQEAgdm9pZCBM
YXllclRyZWVIb3N0UHJveHk6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQgaWQp
CiAgICAgdXBkYXRlVmlld3BvcnQoKTsKIH0KIAotdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnN5
bmNDb21wb3NpdGluZ0xheWVyU3RhdGUoY29uc3QgV2ViTGF5ZXJJbmZvJiBpbmZvKQordm9pZCBM
YXllclRyZWVIb3N0UHJveHk6OnNldENvbXBvc2l0aW5nTGF5ZXJTdGF0ZShXZWJMYXllcklEIGlk
LCBjb25zdCBXZWJMYXllckluZm8mIGluZm8pCiB7Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgm
V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNMYXllclBhcmFtZXRlcnMsIG1fcmVuZGVyZXIuZ2V0
KCksIGluZm8pKTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJl
cjo6c2V0TGF5ZXJTdGF0ZSwgbV9yZW5kZXJlci5nZXQoKSwgaWQsIGluZm8pKTsKK30KKwordm9p
ZCBMYXllclRyZWVIb3N0UHJveHk6OnNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihXZWJMYXll
cklEIGlkLCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4mIGNoaWxkcmVuKQoreworICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJldlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuLCBt
X3JlbmRlcmVyLmdldCgpLCBpZCwgY2hpbGRyZW4pKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0
UHJveHk6OmRpZFJlbmRlckZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXll
clRyZWVIb3N0UHJveHkuaAppbmRleCAyNTg3YzFmMjFhOWJmZmRiOGYyNjEyODI4ZGE0YjM2NGNj
NTRhNDlmLi5hOTBjZTQwMjkyM2RiY2YzNWQ3ZmMxZDUzNjgyOTc4YjQ0YTAwZjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCkBAIC00Nyw3ICs0
Nyw4IEBAIGNsYXNzIExheWVyVHJlZUhvc3RQcm94eSB7CiBwdWJsaWM6CiAgICAgTGF5ZXJUcmVl
SG9zdFByb3h5KERyYXdpbmdBcmVhUHJveHkqKTsKICAgICB2aXJ0dWFsIH5MYXllclRyZWVIb3N0
UHJveHkoKTsKLSAgICB2b2lkIHN5bmNDb21wb3NpdGluZ0xheWVyU3RhdGUoY29uc3QgV2ViTGF5
ZXJJbmZvJik7CisgICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVyU3RhdGUoV2ViTGF5ZXJJRCwg
Y29uc3QgV2ViTGF5ZXJJbmZvJik7CisgICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVyQ2hpbGRy
ZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+Jik7CiAgICAgdm9pZCBkZWxl
dGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0
aW5nTGF5ZXIoV2ViTGF5ZXJJRCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9z
dFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDcwNDY1YjM1MDIxNzFlNzZjODhjMjJkNjBlZTg3ODU4
ZjkyZTgyNjguLjMwMTAzZTM1Y2Q4ZmRjY2U4YTFmY2RmMGU2NTE4YjQ4NjQ2ZmFhMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMTksNyArMTksOCBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKSAmJiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIG1lc3NhZ2VzIC0+IExheWVyVHJl
ZUhvc3RQcm94eSB7Ci0gICAgU3luY0NvbXBvc2l0aW5nTGF5ZXJTdGF0ZShXZWJLaXQ6OldlYkxh
eWVySW5mbyBsYXllckluZm8pCisgICAgU2V0Q29tcG9zaXRpbmdMYXllclN0YXRlKHVpbnQzMl90
IGlkLCBXZWJLaXQ6OldlYkxheWVySW5mbyBsYXllckluZm8pCisgICAgU2V0Q29tcG9zaXRpbmdM
YXllckNoaWxkcmVuKHVpbnQzMl90IGlkLCBWZWN0b3I8dWludDMyX3Q+IGNoaWxkcmVuKQogICAg
IFNldFJvb3RDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIERlbGV0ZUNvbXBvc2l0
aW5nTGF5ZXIodWludDMyX3QgaWQpCiAgICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxh
eWVySUQsIGludCB0aWxlSUQsIFdlYktpdDo6VXBkYXRlSW5mbyB1cGRhdGVJbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXgg
YzgwMWZhYzljZDBlMTMzNTRjYTNmZGM3MDgzY2MxOTAwZjhhZjJkMi4uOGE4NGUxYTU5ZDc3MGU5
ZTM0OTA4MDY3NDcwZTEwMjM3ZjA4ZjUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0xMjEsMTggKzEyMSw2IEBAIHZvaWQg
V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtCiAgICAgbGF5ZXItPnBhaW50KCk7CiAgICAgbV90ZXh0dXJlTWFw
cGVyLT5lbmRDbGlwKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygpOwotCi0g
ICAgc3luY0FuaW1hdGlvbnMoKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c3lu
Y0FuaW1hdGlvbnMoKQotewotICAgIFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIgPSB0b1RleHR1
cmVNYXBwZXJMYXllcihyb290TGF5ZXIoKSk7Ci0gICAgQVNTRVJUKGxheWVyKTsKLQotICAgIGxh
eWVyLT5zeW5jQW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7Ci0gICAgaWYgKGxheWVyLT5kZXNjZW5k
YW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpKQotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKGJpbmQoJldlYkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVWaWV3cG9ydCwgdGhpcykpOwog
fQogCiB2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpwYWludFRvR3JhcGhpY3NDb250ZXh0KFFQ
YWludGVyKiBwYWludGVyKQpAQCAtMTY3LDE1ICsxNTUsMzAgQEAgdm9pZCBXZWJMYXllclRyZWVS
ZW5kZXJlcjo6dXBkYXRlVmlld3BvcnQoKQogICAgICAgICBtX2xheWVyVHJlZUhvc3RQcm94eS0+
dXBkYXRlVmlld3BvcnQoKTsKIH0KIAotdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c3luY0xh
eWVyUGFyYW1ldGVycyhjb25zdCBXZWJMYXllckluZm8mIGxheWVySW5mbykKK3ZvaWQgV2ViTGF5
ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVj
dG9yPFdlYkxheWVySUQ+JiBjaGlsZElEcykKIHsKLSAgICBXZWJMYXllcklEIGlkID0gbGF5ZXJJ
bmZvLmlkOwogICAgIGVuc3VyZUxheWVyKGlkKTsKICAgICBMYXllck1hcDo6aXRlcmF0b3IgaXQg
PSBtX2xheWVycy5maW5kKGlkKTsKICAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGl0LT5zZWNv
bmQ7Ci0gICAgYm9vbCBuZWVkc1RvVXBkYXRlSW1hZ2VUaWxlcyA9IGxheWVySW5mby5pbWFnZUlz
VXBkYXRlZCB8fCAobGF5ZXJJbmZvLmNvbnRlbnRzUmVjdCAhPSBsYXllci0+Y29udGVudHNSZWN0
KCkgJiYgbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOworICAgIFZlY3RvcjxHcmFwaGlj
c0xheWVyKj4gY2hpbGRyZW47CiAKLSAgICBsYXllci0+c2V0TmFtZShsYXllckluZm8ubmFtZSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZElEcy5zaXplKCk7ICsraSkgeworICAg
ICAgICBXZWJMYXllcklEIGNoaWxkSUQgPSBjaGlsZElEc1tpXTsKKyAgICAgICAgR3JhcGhpY3NM
YXllciogY2hpbGQgPSBsYXllckJ5SUQoY2hpbGRJRCk7CisgICAgICAgIGlmICghY2hpbGQpIHsK
KyAgICAgICAgICAgIGNoaWxkID0gY3JlYXRlTGF5ZXIoY2hpbGRJRCkubGVha1B0cigpOworICAg
ICAgICAgICAgbV9sYXllcnMuYWRkKGNoaWxkSUQsIGNoaWxkKTsKKyAgICAgICAgfQorICAgICAg
ICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIH0KKyAgICBsYXllci0+c2V0Q2hpbGRyZW4o
Y2hpbGRyZW4pOworfQorCit2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRl
KFdlYkxheWVySUQgaWQsIGNvbnN0IFdlYkxheWVySW5mbyYgbGF5ZXJJbmZvKQoreworICAgIGVu
c3VyZUxheWVyKGlkKTsKKyAgICBMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX2xheWVycy5maW5k
KGlkKTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGl0LT5zZWNvbmQ7CiAKICAgICBsYXll
ci0+c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXJCeUlEKGxheWVySW5mby5yZXBsaWNhKSk7CiAg
ICAgbGF5ZXItPnNldE1hc2tMYXllcihsYXllckJ5SUQobGF5ZXJJbmZvLm1hc2spKTsKQEAgLTE5
MCw0NSArMTkzLDEyIEBAIHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNMYXllclBhcmFt
ZXRlcnMoY29uc3QgV2ViTGF5ZXJJbmZvJiBsYXllckluZm8pCiAgICAgbGF5ZXItPnNldENvbnRl
bnRzUmVjdChsYXllckluZm8uY29udGVudHNSZWN0KTsKICAgICBsYXllci0+c2V0RHJhd3NDb250
ZW50KGxheWVySW5mby5kcmF3c0NvbnRlbnQpOwogCi0gICAgaWYgKG5lZWRzVG9VcGRhdGVJbWFn
ZVRpbGVzKQotICAgICAgICBhc3NpZ25JbWFnZVRvTGF5ZXIobGF5ZXIsIGxheWVySW5mby5pbWFn
ZUJhY2tpbmdTdG9yZUlEKTsKKyAgICBhc3NpZ25JbWFnZVRvTGF5ZXIobGF5ZXIsIGxheWVySW5m
by5pbWFnZUJhY2tpbmdTdG9yZUlEKTsKIAogICAgIC8vIE5ldmVyIG1ha2UgdGhlIHJvb3QgbGF5
ZXIgY2xpcC4KICAgICBsYXllci0+c2V0TWFza3NUb0JvdW5kcyhsYXllckluZm8uaXNSb290TGF5
ZXIgPyBmYWxzZSA6IGxheWVySW5mby5tYXNrc1RvQm91bmRzKTsKICAgICBsYXllci0+c2V0T3Bh
Y2l0eShsYXllckluZm8ub3BhY2l0eSk7CiAgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKGxheWVy
SW5mby5wcmVzZXJ2ZXMzRCk7Ci0gICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiBjaGlsZHJlbjsK
LQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJJbmZvLmNoaWxkcmVuLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIFdlYkxheWVySUQgY2hpbGRJRCA9IGxheWVySW5mby5jaGlsZHJlbltp
XTsKLSAgICAgICAgR3JhcGhpY3NMYXllciogY2hpbGQgPSBsYXllckJ5SUQoY2hpbGRJRCk7Ci0g
ICAgICAgIGlmICghY2hpbGQpIHsKLSAgICAgICAgICAgIGNoaWxkID0gY3JlYXRlTGF5ZXIoY2hp
bGRJRCkubGVha1B0cigpOwotICAgICAgICAgICAgbV9sYXllcnMuYWRkKGNoaWxkSUQsIGNoaWxk
KTsKLSAgICAgICAgfQotICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOwotICAgIH0KLSAg
ICBsYXllci0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsYXllckluZm8uYW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBX
ZWJLaXQ6OldlYkxheWVyQW5pbWF0aW9uIGFuaW0gPSBsYXllckluZm8uYW5pbWF0aW9uc1tpXTsK
LQotICAgICAgICBzd2l0Y2ggKGFuaW0ub3BlcmF0aW9uKSB7Ci0gICAgICAgIGNhc2UgV2ViS2l0
OjpXZWJMYXllckFuaW1hdGlvbjo6QWRkQW5pbWF0aW9uOiB7Ci0gICAgICAgICAgICBjb25zdCBJ
bnRTaXplIGJveFNpemUgPSBhbmltLmJveFNpemU7Ci0gICAgICAgICAgICBsYXllci0+YWRkQW5p
bWF0aW9uKGFuaW0ua2V5ZnJhbWVMaXN0LCBib3hTaXplLCBhbmltLmFuaW1hdGlvbi5nZXQoKSwg
YW5pbS5uYW1lLCBhbmltLnN0YXJ0VGltZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFdlYktpdDo6V2ViTGF5ZXJBbmltYXRpb246OlJlbW92ZUFuaW1hdGlv
bjoKLSAgICAgICAgICAgIGxheWVyLT5yZW1vdmVBbmltYXRpb24oYW5pbS5uYW1lKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYktpdDo6V2ViTGF5ZXJBbmltYXRpb246OlBh
dXNlQW5pbWF0aW9uOgotICAgICAgICAgICAgZG91YmxlIG9mZnNldCA9IFdURjo6Y3VycmVudFRp
bWUoKSAtIGFuaW0uc3RhcnRUaW1lOwotICAgICAgICAgICAgbGF5ZXItPnBhdXNlQW5pbWF0aW9u
KGFuaW0ubmFtZSwgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
fQotCiAgICAgaWYgKGxheWVySW5mby5pc1Jvb3RMYXllciAmJiBtX3Jvb3RMYXllcklEICE9IGlk
KQogICAgICAgICBzZXRSb290TGF5ZXJJRChpZCk7CiB9CkBAIC0zMDYsNiArMjc2LDcgQEAgdm9p
ZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZShXZWJMYXllcklEIGxheWVySUQsIGlu
dCB0aWxlSUQsIGNvbnN0IEludFIKIHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUlt
YWdlKGludDY0X3QgaW1hZ2VJRCwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHdlYWtCaXRt
YXApCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gd2Vha0JpdG1hcDsK
KyAgICBRSW1hZ2UgaW1hZ2UgPSBiaXRtYXAtPmNyZWF0ZVFJbWFnZSgpOwogICAgIFJlZlB0cjxU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IFRleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CiAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVD
b250ZW50cyhtX3RleHR1cmVNYXBwZXIuZ2V0KCksIGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKS5nZXQo
KSwgQml0bWFwVGV4dHVyZTo6QkdSQUZvcm1hdCk7CiAgICAgbV9kaXJlY3RseUNvbXBvc2l0ZWRJ
bWFnZXMuc2V0KGltYWdlSUQsIGJhY2tpbmdTdG9yZSk7CkBAIC0zMTgsNiArMjg5LDExIEBAIHZv
aWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OmRlc3Ryb3lJbWFnZShpbnQ2NF90IGltYWdlSUQpCiAK
IHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OmFzc2lnbkltYWdlVG9MYXllcihHcmFwaGljc0xh
eWVyKiBsYXllciwgaW50NjRfdCBpbWFnZUlEKQogeworICAgIGlmICghaW1hZ2VJRCkgeworICAg
ICAgICBsYXllci0+c2V0Q29udGVudHNUb01lZGlhKDApOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgSGFzaE1hcDxpbnQ2NF90LCBSZWZQdHI8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZT4gPjo6aXRlcmF0b3IgaXQgPSBtX2RpcmVjdGx5Q29tcG9zaXRlZEltYWdlcy5maW5kKGltYWdl
SUQpOwogICAgIEFTU0VSVChpdCAhPSBtX2RpcmVjdGx5Q29tcG9zaXRlZEltYWdlcy5lbmQoKSk7
CiAgICAgbGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShpdC0+c2Vjb25kLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggYTdm
OGFjZGFhYzI1NGYyOWI4MTIxMzc0OTcwODY5MDhiYzFiNTk2My4uNDRjZGJhN2NhNDY5NzYwMmQz
ZTUwNWU1OWNkMjkyYjAwYTcwNmMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTU5LDcgKzU5LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBkZWxldGVMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lkIHNldFJvb3RMYXllcklEKFdl
YkxheWVySUQpOwotICAgIHZvaWQgc3luY0xheWVyUGFyYW1ldGVycyhjb25zdCBXZWJMYXllcklu
Zm8mKTsKKyAgICB2b2lkIHNldExheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9y
PFdlYkxheWVySUQ+Jik7CisgICAgdm9pZCBzZXRMYXllclN0YXRlKFdlYkxheWVySUQsIGNvbnN0
IFdlYkxheWVySW5mbyYpOwogICAgIHZvaWQgY3JlYXRlVGlsZShXZWJMYXllcklELCBpbnQsIGZs
b2F0IHNjYWxlKTsKICAgICB2b2lkIHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50KTsKICAgICB2
b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHcmFwaGljc0xheWVyLmNwcAppbmRleCAzNGE4ZGNlNzI2NzljZDE5ZDg1ZGFjNzU2OTJi
YTZjZTUyYjVkYTVlLi4zZWQ5YjEwYmEzNmZjMjUxMTgyZWQ4Y2U5N2NmN2NiZDg5OTNmNjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpZiBVU0UoVUlf
U0lERV9DT01QT1NJVElORykKICNpbmNsdWRlICJXZWJHcmFwaGljc0xheWVyLmgiCiAKLSNpbmNs
dWRlICJBbmltYXRpb24uaCIKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJG
bG9hdFF1YWQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNjEsMzcgKzYwLDQ3IEBAIHN0YXRp
YyBXZWJMYXllcklEIHRvV2ViTGF5ZXJJRChHcmFwaGljc0xheWVyKiBsYXllcikKICAgICByZXR1
cm4gbGF5ZXIgPyB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5pZCgpIDogMDsKIH0KIAotdm9p
ZCBXZWJHcmFwaGljc0xheWVyOjpub3RpZnlDaGFuZ2UoKQordm9pZCBXZWJHcmFwaGljc0xheWVy
OjpkaWRDaGFuZ2VMYXllclN0YXRlKCkKIHsKLSAgICBtX21vZGlmaWVkID0gdHJ1ZTsKKyAgICBt
X3Nob3VsZFN5bmNMYXllclN0YXRlID0gdHJ1ZTsKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAg
IGNsaWVudCgpLT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7CiB9CiAKLXZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6bm90aWZ5Q2hhbmdlUmVjdXJzaXZlbHkoKQordm9pZCBXZWJHcmFwaGljc0xheWVy
OjpkaWRDaGFuZ2VDaGlsZHJlbigpCiB7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgbV9zaG91
bGRTeW5jQ2hpbGRyZW4gPSB0cnVlOworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50
KCktPm5vdGlmeVN5bmNSZXF1aXJlZCh0aGlzKTsKK30KKwordm9pZCBXZWJHcmFwaGljc0xheWVy
OjpzZXRTaG91bGRVcGRhdGVWaXNpYmxlUmVjdCgpCit7CisgICAgbV9zaG91bGRVcGRhdGVWaXNp
YmxlUmVjdCA9IHRydWU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNp
emUoKTsgKytpKQotICAgICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIoY2hpbGRyZW4oKVtpXSktPm5v
dGlmeUNoYW5nZVJlY3Vyc2l2ZWx5KCk7CisgICAgICAgIHRvV2ViR3JhcGhpY3NMYXllcihjaGls
ZHJlbigpW2ldKS0+c2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKTsKICAgICBpZiAocmVwbGlj
YUxheWVyKCkpCi0gICAgICAgIHRvV2ViR3JhcGhpY3NMYXllcihyZXBsaWNhTGF5ZXIoKSktPm5v
dGlmeUNoYW5nZSgpOworICAgICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIocmVwbGljYUxheWVyKCkp
LT5zZXRTaG91bGRVcGRhdGVWaXNpYmxlUmVjdCgpOworfQorCit2b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6OmRpZENoYW5nZUdlb21ldHJ5KCkKK3sKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cisg
ICAgc2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKTsKIH0KIAogV2ViR3JhcGhpY3NMYXllcjo6
V2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBHcmFw
aGljc0xheWVyKGNsaWVudCkKICAgICAsIG1fbWFza1RhcmdldCgwKQotICAgICwgbV9uZWVkc0Rp
c3BsYXkoZmFsc2UpCi0gICAgLCBtX21vZGlmaWVkKHRydWUpCi0gICAgLCBtX2NvbnRlbnROZWVk
c0Rpc3BsYXkoZmFsc2UpCi0gICAgLCBtX2hhc1BlbmRpbmdBbmltYXRpb25zKGZhbHNlKQogICAg
ICwgbV9pblVwZGF0ZU1vZGUoZmFsc2UpCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisg
ICAgLCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0KHRydWUpCisgICAgLCBtX3Nob3VsZFN5bmNM
YXllclN0YXRlKHRydWUpCisgICAgLCBtX3Nob3VsZFN5bmNDaGlsZHJlbihmYWxzZSkKICAgICAs
IG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCgwKQotICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikK
LSNlbmRpZgorICAgICwgbV9jb250ZW50c1NjYWxlKDEpCiB7CiAgICAgc3RhdGljIFdlYkxheWVy
SUQgbmV4dExheWVySUQgPSAxOwotICAgIG1fbGF5ZXJJbmZvLmlkID0gbmV4dExheWVySUQrKzsK
KyAgICBtX2lkID0gbmV4dExheWVySUQrKzsKICAgICBsYXllckJ5SURNYXAoKS5hZGQoaWQoKSwg
dGhpcyk7CiB9CiAKQEAgLTExMyw5ICsxMjIsOSBAQCBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNl
dENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVuKQogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKICAgICAgICAgV2ViR3Jh
cGhpY3NMYXllciogY2hpbGQgPSB0b1dlYkdyYXBoaWNzTGF5ZXIoY2hpbGRyZW5baV0pOwogICAg
ICAgICBjaGlsZC0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChtX3dlYkdyYXBoaWNzTGF5ZXJD
bGllbnQpOwotICAgICAgICBjaGlsZC0+bm90aWZ5Q2hhbmdlKCk7CisgICAgICAgIGNoaWxkLT5k
aWRDaGFuZ2VMYXllclN0YXRlKCk7CiAgICAgfQotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRp
ZENoYW5nZUNoaWxkcmVuKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEyMywzMiArMTMy
LDMyIEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciogbGF5
ZXIpCiB7CiAgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQobGF5ZXIpOwogICAgIHRvV2ViR3Jh
cGhpY3NMYXllcihsYXllciktPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQobV93ZWJHcmFwaGlj
c0xheWVyQ2xpZW50KTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5ub3RpZnlDaGFu
Z2UoKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIp
LT5kaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAgZGlkQ2hhbmdlQ2hpbGRyZW4oKTsKIH0KIAog
dm9pZCBXZWJHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogbGF5
ZXIsIGludCBpbmRleCkKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgobGF5
ZXIsIGluZGV4KTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGlj
c0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgdG9XZWJHcmFwaGlj
c0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAg
dG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworICAgIGRp
ZENoYW5nZUNoaWxkcmVuKCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRB
Ym92ZShHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAg
ICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKGxheWVyLCBzaWJsaW5nKTsKICAgICB0b1dl
YkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3Jh
cGhpY3NMYXllckNsaWVudCk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90aWZ5
Q2hhbmdlKCk7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgdG9XZWJHcmFwaGljc0xheWVyKGxh
eWVyKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworICAgIGRpZENoYW5nZUNoaWxkcmVuKCk7CiB9
CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBs
YXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRD
aGlsZEJlbG93KGxheWVyLCBzaWJsaW5nKTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIp
LT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0g
ICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+bm90aWZ5Q2hhbmdlKCk7Ci0gICAgbm90aWZ5
Q2hhbmdlKCk7CisgICAgdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKS0+ZGlkQ2hhbmdlTGF5ZXJT
dGF0ZSgpOworICAgIGRpZENoYW5nZUNoaWxkcmVuKCk7CiB9CiAKIGJvb2wgV2ViR3JhcGhpY3NM
YXllcjo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVy
KiBuZXdDaGlsZCkKQEAgLTE1NiwyMCArMTY1LDIwIEBAIGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6
cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdD
CiAgICAgYm9vbCBvayA9IEdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3
Q2hpbGQpOwogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBub3RpZnlD
aGFuZ2UoKTsKLSAgICB0b1dlYkdyYXBoaWNzTGF5ZXIob2xkQ2hpbGQpLT5ub3RpZnlDaGFuZ2Uo
KTsKKyAgICBkaWRDaGFuZ2VDaGlsZHJlbigpOworICAgIHRvV2ViR3JhcGhpY3NMYXllcihvbGRD
aGlsZCktPmRpZENoYW5nZUxheWVyU3RhdGUoKTsKICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobmV3
Q2hpbGQpLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVu
dCk7Ci0gICAgdG9XZWJHcmFwaGljc0xheWVyKG5ld0NoaWxkKS0+bm90aWZ5Q2hhbmdlKCk7Cisg
ICAgdG9XZWJHcmFwaGljc0xheWVyKG5ld0NoaWxkKS0+ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21Q
YXJlbnQoKQogewogICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiBwYXJlbnRMYXllciA9IHRvV2Vi
R3JhcGhpY3NMYXllcihwYXJlbnQoKSkpCi0gICAgICAgIHBhcmVudExheWVyLT5ub3RpZnlDaGFu
Z2UoKTsKKyAgICAgICAgcGFyZW50TGF5ZXItPmRpZENoYW5nZUNoaWxkcmVuKCk7CiAgICAgR3Jh
cGhpY3NMYXllcjo6cmVtb3ZlRnJvbVBhcmVudCgpOwogCi0gICAgbm90aWZ5Q2hhbmdlKCk7Cisg
ICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNl
dFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHApCkBAIC0xNzgsNyArMTg3LDcgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwKQogICAgICAg
ICByZXR1cm47CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbihwKTsKLSAgICBub3Rp
ZnlDaGFuZ2VSZWN1cnNpdmVseSgpOworICAgIGRpZENoYW5nZUdlb21ldHJ5KCk7CiB9CiAKIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBw
KQpAQCAtMTg3LDcgKzE5Niw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0QW5jaG9yUG9p
bnQoY29uc3QgRmxvYXRQb2ludDNEJiBwKQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGlj
c0xheWVyOjpzZXRBbmNob3JQb2ludChwKTsKLSAgICBub3RpZnlDaGFuZ2VSZWN1cnNpdmVseSgp
OworICAgIGRpZENoYW5nZUdlb21ldHJ5KCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6
c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCkBAIC0xOTksNyArMjA4LDcgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBzZXRO
ZWVkc0Rpc3BsYXkoKTsKICAgICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigp
LT5zZXRTaXplKHNpemUpOwotICAgIG5vdGlmeUNoYW5nZVJlY3Vyc2l2ZWx5KCk7CisgICAgZGlk
Q2hhbmdlR2VvbWV0cnkoKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCkBAIC0yMDgsNyArMjE3LDcgQEAgdm9p
ZCBXZWJHcmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9y
bSh0KTsKLSAgICBub3RpZnlDaGFuZ2VSZWN1cnNpdmVseSgpOworICAgIGRpZENoYW5nZUdlb21l
dHJ5KCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCkBAIC0yMTcsNyArMjI2LDcgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hp
bGRyZW5UcmFuc2Zvcm0odCk7Ci0gICAgbm90aWZ5Q2hhbmdlUmVjdXJzaXZlbHkoKTsKKyAgICBk
aWRDaGFuZ2VHZW9tZXRyeSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFByZXNl
cnZlczNEKGJvb2wgYikKQEAgLTIyNiw3ICsyMzUsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldFByZXNlcnZlczNEKGJvb2wgYikKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0UHJlc2VydmVzM0QoYik7Ci0gICAgbm90aWZ5Q2hhbmdlUmVjdXJzaXZlbHkoKTsK
KyAgICBkaWRDaGFuZ2VHZW9tZXRyeSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNl
dE1hc2tzVG9Cb3VuZHMoYm9vbCBiKQpAQCAtMjM0LDcgKzI0Myw3IEBAIHZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIGIpCiAgICAgaWYgKG1hc2tzVG9Cb3VuZHMo
KSA9PSBiKQogICAgICAgICByZXR1cm47CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza3NUb0Jv
dW5kcyhiKTsKLSAgICBub3RpZnlDaGFuZ2VSZWN1cnNpdmVseSgpOworICAgIGRpZENoYW5nZUdl
b21ldHJ5KCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KGJv
b2wgYikKQEAgLTI0Myw3ICsyNTIsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldERyYXdz
Q29udGVudChib29sIGIpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFwaGljc0xheWVyOjpzZXRE
cmF3c0NvbnRlbnQoYik7CiAKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRDaGFuZ2VMYXll
clN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUo
Ym9vbCBiKQpAQCAtMjUzLDcgKzI2Miw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNPcGFxdWUoYm9vbCBiKQogICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCiAgICAgICAg
IG1fbWFpbkJhY2tpbmdTdG9yZS0+c2V0U3VwcG9ydHNBbHBoYSghYik7CiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0Q29udGVudHNPcGFxdWUoYik7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlk
Q2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldEJhY2tm
YWNlVmlzaWJpbGl0eShib29sIGIpCkBAIC0yNjIsNyArMjcxLDcgQEAgdm9pZCBXZWJHcmFwaGlj
c0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCBiKQogICAgICAgICByZXR1cm47CiAK
ICAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYik7Ci0gICAgbm90aWZ5
Q2hhbmdlKCk7CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKQEAgLTI3MSw3ICsyODAsNyBAQCB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eShvcGFjaXR5KTsKLSAgICBu
b3RpZnlDaGFuZ2UoKTsKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiB9CiAKIHZvaWQgV2Vi
R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHIpCkBAIC0yODAs
NTQgKzI4OSw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0
IEludFJlY3QmIHIpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzUmVjdChyKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKLX0KLQotdm9pZCBXZWJHcmFwaGlj
c0xheWVyOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSB0aW1lKQotewotICAgIGlmIChj
bGllbnQoKSkKLSAgICAgICAgY2xpZW50KCktPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywg
dGltZSk7Ci19Ci0KLWJvb2wgV2ViR3JhcGhpY3NMYXllcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0
IEFuaW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3VibGUgdGlt
ZU9mZnNldCkKLXsKLSAgICBpZiAoIWFuaW0gfHwgYW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9u
KCkgfHwgdmFsdWVMaXN0LnNpemUoKSA8IDIgfHwgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpICE9IEFu
aW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0gJiYgdmFsdWVMaXN0LnByb3BlcnR5KCkgIT0g
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBX
ZWJMYXllckFuaW1hdGlvbiB3ZWJBbmltYXRpb24odmFsdWVMaXN0KTsKLSAgICB3ZWJBbmltYXRp
b24ubmFtZSA9IGtleWZyYW1lc05hbWU7Ci0gICAgd2ViQW5pbWF0aW9uLm9wZXJhdGlvbiA9IFdl
YkxheWVyQW5pbWF0aW9uOjpBZGRBbmltYXRpb247Ci0gICAgd2ViQW5pbWF0aW9uLmJveFNpemUg
PSBib3hTaXplOwotICAgIHdlYkFuaW1hdGlvbi5hbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0
ZShhbmltKTsKLSAgICB3ZWJBbmltYXRpb24uc3RhcnRUaW1lID0gdGltZU9mZnNldDsKLSAgICBt
X2xheWVySW5mby5hbmltYXRpb25zLmFwcGVuZCh3ZWJBbmltYXRpb24pOwotICAgIGlmICh2YWx1
ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQotICAg
ICAgICBtX3RyYW5zZm9ybUFuaW1hdGlvbnMuYWRkKGtleWZyYW1lc05hbWUpOwotCi0gICAgbV9o
YXNQZW5kaW5nQW5pbWF0aW9ucyA9IHRydWU7Ci0gICAgbm90aWZ5Q2hhbmdlUmVjdXJzaXZlbHko
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnBhdXNl
QW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQp
Ci17Ci0gICAgV2ViTGF5ZXJBbmltYXRpb24gd2ViQW5pbWF0aW9uOwotICAgIHdlYkFuaW1hdGlv
bi5uYW1lID0gYW5pbWF0aW9uTmFtZTsKLSAgICB3ZWJBbmltYXRpb24ub3BlcmF0aW9uID0gV2Vi
TGF5ZXJBbmltYXRpb246OlBhdXNlQW5pbWF0aW9uOwotICAgIHdlYkFuaW1hdGlvbi5zdGFydFRp
bWUgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSB0aW1lT2Zmc2V0OwotICAgIG1fbGF5ZXJJbmZvLmFu
aW1hdGlvbnMuYXBwZW5kKHdlYkFuaW1hdGlvbik7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7Ci19Ci0K
LXZvaWQgV2ViR3JhcGhpY3NMYXllcjo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSkKLXsKLSAgICBXZWJMYXllckFuaW1hdGlvbiB3ZWJBbmltYXRpb247Ci0gICAg
d2ViQW5pbWF0aW9uLm5hbWUgPSBhbmltYXRpb25OYW1lOwotICAgIHdlYkFuaW1hdGlvbi5vcGVy
YXRpb24gPSBXZWJMYXllckFuaW1hdGlvbjo6UmVtb3ZlQW5pbWF0aW9uOwotICAgIG1fbGF5ZXJJ
bmZvLmFuaW1hdGlvbnMuYXBwZW5kKHdlYkFuaW1hdGlvbik7Ci0gICAgbV90cmFuc2Zvcm1Bbmlt
YXRpb25zLnJlbW92ZShhbmltYXRpb25OYW1lKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICBk
aWRDaGFuZ2VMYXllclN0YXRlKCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNOZWVkc0Rpc3BsYXkoKQpAQCAtMzQ2LDEzICszMDgsMTMgQEAgdm9pZCBXZWJHcmFwaGlj
c0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgICAgICAvLyBXZSBh
ZG9wdCBmaXJzdCwgaW4gY2FzZSB0aGlzIGlzIHRoZSBzYW1lIGZyYW1lIC0gdGhhdCB3YXkgd2Ug
YXZvaWQgZGVzdHJveWluZyBhbmQgcmVjcmVhdGluZyB0aGUgaW1hZ2UuCiAgICAgICAgIG5ld0lE
ID0gbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKGltYWdl
KTsKICAgICAgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5yZWxlYXNlSW1hZ2VCYWNraW5n
U3RvcmUobV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCk7Ci0gICAgICAgIG5vdGlmeUNo
YW5nZSgpOworICAgICAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7CiAgICAgICAgIGlmIChtX2xh
eWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEICYmIG5ld0lEID09IG1fbGF5ZXJJbmZvLmltYWdl
QmFja2luZ1N0b3JlSUQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gSWYgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50IGlzIG5vdCBzZXQgeWV0IHRoZXJlIHNo
b3VsZCBiZSBubyBiYWNraW5nIHN0b3JlIElELgogICAgICAgICBBU1NFUlQoIW1fbGF5ZXJJbmZv
LmltYWdlQmFja2luZ1N0b3JlSUQpOwotICAgICAgICBub3RpZnlDaGFuZ2UoKTsKKyAgICAgICAg
ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogICAgIH0KIAogICAgIG1fbGF5ZXJJbmZvLmltYWdlQmFj
a2luZ1N0b3JlSUQgPSBuZXdJRDsKQEAgLTM3NSw4ICszMzcsOCBAQCB2b2lkIFdlYkdyYXBoaWNz
TGF5ZXI6OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICBXZWJHcmFwaGlj
c0xheWVyKiB3ZWJHcmFwaGljc0xheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKGxheWVyKTsKICAg
ICB3ZWJHcmFwaGljc0xheWVyLT5zZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KG1fd2ViR3JhcGhp
Y3NMYXllckNsaWVudCk7CiAgICAgd2ViR3JhcGhpY3NMYXllci0+c2V0TWFza1RhcmdldCh0aGlz
KTsKLSAgICB3ZWJHcmFwaGljc0xheWVyLT5ub3RpZnlDaGFuZ2UoKTsKLSAgICBub3RpZnlDaGFu
Z2UoKTsKKyAgICB3ZWJHcmFwaGljc0xheWVyLT5kaWRDaGFuZ2VMYXllclN0YXRlKCk7CisgICAg
ZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogCiB9CiAKQEAgLTM4OSw3ICszNTEsNyBAQCB2b2lkIFdl
YkdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogICAgICAgICB0b1dlYkdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRXZWJHcmFwaGljc0xheWVy
Q2xpZW50KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7CiAKICAgICBHcmFwaGljc0xheWVyOjpz
ZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7Ci0gICAgbm90aWZ5Q2hhbmdlKCk7CisgICAgZGlk
Q2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldE5lZWRz
RGlzcGxheSgpCkBAIC00MDEsMTIgKzM2MywxMiBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNl
dE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKG1f
bWFpbkJhY2tpbmdTdG9yZSkKICAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5pbnZhbGlkYXRl
KEludFJlY3QocmVjdCkpOwotICAgIG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxheWVy
U3RhdGUoKTsKIH0KIAogV2ViTGF5ZXJJRCBXZWJHcmFwaGljc0xheWVyOjppZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fbGF5ZXJJbmZvLmlkOworICAgIHJldHVybiBtX2lkOwogfQogCiB2b2lk
IFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKQEAgLTQyOCw1NSArMzkwLDUwIEBAIFdlYkdyYXBoaWNzTGF5ZXIqIHRvV2ViR3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
R3JhcGhpY3NMYXllcio+KGxheWVyKTsKIH0KIAotdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5j
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQordm9pZCBXZWJHcmFwaGljc0xheWVy
OjpzeW5jQ2hpbGRyZW4oKQogewotICAgIC8vIFRoZSByZW1vdGUgaW1hZ2UgbWlnaHQgaGF2ZSBi
ZWVuIHJlbGVhc2VkIGJ5IHB1cmdlQmFja2luZ1N0b3Jlcy4KLSAgICBpZiAobV9pbWFnZSkgewot
ICAgICAgICBpZiAoIW1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpIHsKLSAgICAgICAg
ICAgIG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgPSBtX3dlYkdyYXBoaWNzTGF5ZXJD
bGllbnQtPmFkb3B0SW1hZ2VCYWNraW5nU3RvcmUobV9pbWFnZS5nZXQoKSk7Ci0gICAgICAgICAg
ICBtX2xheWVySW5mby5pbWFnZUlzVXBkYXRlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgaWYgKCFtX3Nob3VsZFN5bmNDaGlsZHJlbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2hv
dWxkU3luY0NoaWxkcmVuID0gZmFsc2U7CiAKLSAgICBpZiAobV9tb2RpZmllZCkgewotICAgICAg
ICBjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpOwotCi0gICAgICAgIG1fbGF5ZXJJbmZv
Lm5hbWUgPSBuYW1lKCk7Ci0gICAgICAgIG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gYW5jaG9y
UG9pbnQoKTsKLSAgICAgICAgbV9sYXllckluZm8uYmFja2ZhY2VWaXNpYmxlID0gYmFja2ZhY2VW
aXNpYmlsaXR5KCk7Ci0gICAgICAgIG1fbGF5ZXJJbmZvLmNoaWxkcmVuVHJhbnNmb3JtID0gY2hp
bGRyZW5UcmFuc2Zvcm0oKTsKLSAgICAgICAgbV9sYXllckluZm8uY29udGVudHNPcGFxdWUgPSBj
b250ZW50c09wYXF1ZSgpOwotICAgICAgICBtX2xheWVySW5mby5jb250ZW50c1JlY3QgPSBjb250
ZW50c1JlY3QoKTsKLSAgICAgICAgbV9sYXllckluZm8uZHJhd3NDb250ZW50ID0gZHJhd3NDb250
ZW50KCk7Ci0gICAgICAgIG1fbGF5ZXJJbmZvLm1hc2sgPSB0b1dlYkxheWVySUQobWFza0xheWVy
KCkpOwotICAgICAgICBtX2xheWVySW5mby5tYXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kcygp
OwotICAgICAgICBtX2xheWVySW5mby5vcGFjaXR5ID0gb3BhY2l0eSgpOwotICAgICAgICBtX2xh
eWVySW5mby5wYXJlbnQgPSB0b1dlYkxheWVySUQocGFyZW50KCkpOwotICAgICAgICBtX2xheWVy
SW5mby5wb3MgPSBwb3NpdGlvbigpOwotICAgICAgICBtX2xheWVySW5mby5wcmVzZXJ2ZXMzRCA9
IHByZXNlcnZlczNEKCk7Ci0gICAgICAgIG1fbGF5ZXJJbmZvLnJlcGxpY2EgPSB0b1dlYkxheWVy
SUQocmVwbGljYUxheWVyKCkpOwotICAgICAgICBtX2xheWVySW5mby5zaXplID0gc2l6ZSgpOwot
ICAgICAgICBtX2xheWVySW5mby50cmFuc2Zvcm0gPSB0cmFuc2Zvcm0oKTsKLSAgICAgICAgbV9j
b250ZW50TmVlZHNEaXNwbGF5ID0gZmFsc2U7Ci0gICAgICAgIG1fbGF5ZXJJbmZvLmNoaWxkcmVu
LmNsZWFyKCk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgbV9sYXllckluZm8uY2hpbGRyZW4uYXBwZW5kKHRvV2Vi
TGF5ZXJJRChjaGlsZHJlbigpW2ldKSk7Ci0KLSAgICAgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xp
ZW50LT5kaWRTeW5jQ29tcG9zaXRpbmdTdGF0ZUZvckxheWVyKG1fbGF5ZXJJbmZvKTsKLSAgICB9
CisgICAgVmVjdG9yPFdlYkxheWVySUQ+IGNoaWxkSURzOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkKKyAgICAgICAgY2hpbGRJRHMuYXBwZW5kKHRv
V2ViTGF5ZXJJRChjaGlsZHJlbigpW2ldKSk7CisgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50
LT5zeW5jTGF5ZXJDaGlsZHJlbihtX2lkLCBjaGlsZElEcyk7Cit9CiAKLSAgICB1cGRhdGVDb250
ZW50QnVmZmVycygpOwordm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSgpCit7
CisgICAgaWYgKCFtX3Nob3VsZFN5bmNMYXllclN0YXRlKQorICAgICAgICByZXR1cm47CisgICAg
bV9zaG91bGRTeW5jTGF5ZXJTdGF0ZSA9IGZhbHNlOworCisgICAgbV9sYXllckluZm8uYW5jaG9y
UG9pbnQgPSBhbmNob3JQb2ludCgpOworICAgIG1fbGF5ZXJJbmZvLmJhY2tmYWNlVmlzaWJsZSA9
IGJhY2tmYWNlVmlzaWJpbGl0eSgpOworICAgIG1fbGF5ZXJJbmZvLmNoaWxkcmVuVHJhbnNmb3Jt
ID0gY2hpbGRyZW5UcmFuc2Zvcm0oKTsKKyAgICBtX2xheWVySW5mby5jb250ZW50c09wYXF1ZSA9
IGNvbnRlbnRzT3BhcXVlKCk7CisgICAgbV9sYXllckluZm8uY29udGVudHNSZWN0ID0gY29udGVu
dHNSZWN0KCk7CisgICAgbV9sYXllckluZm8uZHJhd3NDb250ZW50ID0gZHJhd3NDb250ZW50KCk7
CisgICAgbV9sYXllckluZm8ubWFzayA9IHRvV2ViTGF5ZXJJRChtYXNrTGF5ZXIoKSk7CisgICAg
bV9sYXllckluZm8ubWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHMoKTsKKyAgICBtX2xheWVy
SW5mby5vcGFjaXR5ID0gb3BhY2l0eSgpOworICAgIG1fbGF5ZXJJbmZvLnBhcmVudCA9IHRvV2Vi
TGF5ZXJJRChwYXJlbnQoKSk7CisgICAgbV9sYXllckluZm8ucG9zID0gcG9zaXRpb24oKTsKKyAg
ICBtX2xheWVySW5mby5wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEKCk7CisgICAgbV9sYXllcklu
Zm8ucmVwbGljYSA9IHRvV2ViTGF5ZXJJRChyZXBsaWNhTGF5ZXIoKSk7CisgICAgbV9sYXllcklu
Zm8uc2l6ZSA9IHNpemUoKTsKKyAgICBtX2xheWVySW5mby50cmFuc2Zvcm0gPSB0cmFuc2Zvcm0o
KTsKKyAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnN5bmNMYXllclN0YXRlKG1faWQsIG1f
bGF5ZXJJbmZvKTsKK30KIAotICAgIG1fbW9kaWZpZWQgPSBmYWxzZTsKLSAgICBtX2xheWVySW5m
by5pbWFnZUlzVXBkYXRlZCA9IGZhbHNlOwotICAgIGlmIChtX2hhc1BlbmRpbmdBbmltYXRpb25z
KQotICAgICAgICBub3RpZnlBbmltYXRpb25TdGFydGVkKFdURjo6Y3VycmVudFRpbWUoKSk7Ci0g
ICAgbV9sYXllckluZm8uYW5pbWF0aW9ucy5jbGVhcigpOwotICAgIG1faGFzUGVuZGluZ0FuaW1h
dGlvbnMgPSBmYWxzZTsKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KCkKK3sKKyAgICBjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVj
dCgpOworICAgIHN5bmNDaGlsZHJlbigpOworICAgIHN5bmNMYXllclN0YXRlKCk7CisgICAgdXBk
YXRlQ29udGVudEJ1ZmZlcnMoKTsKIH0KIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQog
dm9pZCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVBhaW50QmVnaW4oKQogewog
fQpAQCAtNDg0LDcgKzQ0MSw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5n
U3RvcmVQYWludEJlZ2luKCkKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Um9vdExheWVyKGJv
b2wgaXNSb290KQogewogICAgIG1fbGF5ZXJJbmZvLmlzUm9vdExheWVyID0gaXNSb290OwotICAg
IG5vdGlmeUNoYW5nZSgpOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKIH0KIAogdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNv
bnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCkBAIC00OTYsNyArNDUzLDE1IEBAIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rv
cihjb25zdCBGbG9hdFBvaW50JiB0CiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
U2NhbGUoZmxvYXQgc2NhbGUpCiB7CiAgICAgbV9jb250ZW50c1NjYWxlID0gc2NhbGU7CisgICAg
YWRqdXN0Q29udGVudHNTY2FsZSgpOworfQorCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmFkanVz
dENvbnRlbnRzU2NhbGUoKQoreworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJl
dHVybjsKIAorICAgIGZsb2F0IHNjYWxlID0gc2hvdWxkVXNlVGlsZWRCYWNraW5nU3RvcmUoKSA/
IG1fY29udGVudHNTY2FsZSA6IDE7CiAgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUgfHwgbV9t
YWluQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCkgPT0gc2NhbGUpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtNTQyLDExICs1MDcsMTQgQEAgSW50UmVjdCBXZWJHcmFwaGljc0xheWVyOjp0aWxl
ZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpCiAgICAgcmV0dXJuIEludFJlY3QoMCwgMCwgc2l6
ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSk7CiB9CiAKK2Jvb2wgV2ViR3JhcGhpY3NMYXll
cjo6c2hvdWxkVXNlVGlsZWRCYWNraW5nU3RvcmUoKQoreworICAgIHJldHVybiAhc2VsZk9yQW5j
ZXN0b3JNaWdodEhhdmVOb25BZmZpbmVUcmFuc2Zvcm1zKCk7Cit9CisKIEludFJlY3QgV2ViR3Jh
cGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpCiB7Ci0gICAgLy8gSWYg
dGhpcyBsYXllciBpcyBwYXJ0IG9mIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gYW5pbWF0aW9uLCB0aGUg
dmlzaWJsZSByZWN0IG1pZ2h0IGNoYW5nZSwKLSAgICAvLyBzbyB3ZSByYXRoZXIgcmVuZGVyIHRo
ZSB3aG9sZSBsYXllciB1bnRpbCBzb21lIGJldHRlciBvcHRpbWl6YXRpb24gaXMgYXZhaWxhYmxl
LgotICAgIGlmIChzZWxmT3JBbmNlc3Rvckhhc0FjdGl2ZVRyYW5zZm9ybUFuaW1hdGlvbnMoKSkK
KyAgICBpZiAoIXNob3VsZFVzZVRpbGVkQmFja2luZ1N0b3JlKCkpCiAgICAgICAgIHJldHVybiB0
aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpOwogCiAgICAgLy8gTm9uLWludmVydGlibGUg
bGF5ZXJzIGFyZSBub3QgdmlzaWJsZS4KQEAgLTU4MSw2ICs1NDksMTEgQEAgdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpyZW1vdmVUaWxlKGludCB0aWxlSUQpCiAKIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogeworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAg
IGlmICghbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCkKKyAgICAgICAgICAgIG1fbGF5
ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgPSBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmFk
b3B0SW1hZ2VCYWNraW5nU3RvcmUobV9pbWFnZS5nZXQoKSk7CisgICAgfQorCiAgICAgaWYgKCFk
cmF3c0NvbnRlbnQoKSkgewogICAgICAgICBtX21haW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKICAg
ICAgICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwpAQCAtNjU1LDkgKzYyOCw5IEBA
IHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQog
ICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50KCkgPyB0b1dlYkdy
YXBoaWNzTGF5ZXIocGFyZW50KCkpLT5tX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRy
ZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVkIHRy
YW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KKyAg
ICBhZGp1c3RDb250ZW50c1NjYWxlKCk7CiAgICAgYWRqdXN0VmlzaWJsZVJlY3QoKTsKIH0KLSNl
bmRpZgogCiBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVXZWJHcmFwaGlj
c0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKIHsKQEAgLTY2OSwxNCArNjQyLDEx
IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6aW5pdEZhY3RvcnkoKQogICAgIEdyYXBoaWNzTGF5
ZXI6OnNldEdyYXBoaWNzTGF5ZXJGYWN0b3J5KGNyZWF0ZVdlYkdyYXBoaWNzTGF5ZXIpOwogfQog
Ci1ib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNlbGZPckFuY2VzdG9ySGFzQWN0aXZlVHJhbnNmb3Jt
QW5pbWF0aW9ucygpIGNvbnN0Citib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNlbGZPckFuY2VzdG9y
TWlnaHRIYXZlTm9uQWZmaW5lVHJhbnNmb3JtcygpCiB7Ci0gICAgaWYgKCFtX3RyYW5zZm9ybUFu
aW1hdGlvbnMuaXNFbXB0eSgpKQorICAgIGlmICghbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgp
LmlzQWZmaW5lKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHBhcmVudCgpKQot
ICAgICAgICByZXR1cm4gdG9XZWJHcmFwaGljc0xheWVyKHBhcmVudCgpKS0+c2VsZk9yQW5jZXN0
b3JIYXNBY3RpdmVUcmFuc2Zvcm1BbmltYXRpb25zKCk7Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmgKaW5kZXggMGNhNWFhNTRhZjJmZTViZjBlZDQwMjBkZmUz
MGJhODUxOWExMmExNy4uMWJmYWYzNmZkYjlhZTE1ZDdjZmY1ZjJmNzYxMTM0NjU0ZmQ4ODg5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHcmFwaGljc0xheWVyLmgKQEAgLTU1LDcgKzU1LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBpbnQ2NF90IGFkb3B0SW1hZ2VCYWNraW5nU3RvcmUoV2ViQ29yZTo6SW1hZ2UqKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VJbWFnZUJhY2tpbmdTdG9yZShpbnQ2NF90KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN5bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5ZXIoY29u
c3QgV2ViTGF5ZXJJbmZvJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShX
ZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN5
bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklEPiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXll
ciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllciopID0gMDsKIH07CkBAIC05MSw5ICs5Miw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEJhY2tmYWNlVmlzaWJpbGl0eShib29sKTsKICAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwog
ICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICBib29sIGFkZEFu
aW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBB
bmltYXRpb24qLCBjb25zdCBTdHJpbmcmLCBkb3VibGUpOwotICAgIHZvaWQgcGF1c2VBbmltYXRp
b24oY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKLSAgICB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOwogICAgIHZv
aWQgc2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHNldFJlcGxpY2F0ZWRC
eUxheWVyKEdyYXBoaWNzTGF5ZXIqKTsKQEAgLTEwNCwyMSArMTAyLDE5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQ
b2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9h
dFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5
ZXJPbmx5KCk7CisKICAgICB2b2lkIHNldFJvb3RMYXllcihib29sKTsKIAogICAgIFdlYktpdDo6
V2ViTGF5ZXJJRCBpZCgpIGNvbnN0OwogICAgIHN0YXRpYyBXZWJHcmFwaGljc0xheWVyKiBsYXll
ckJ5SUQoV2ViS2l0OjpXZWJMYXllcklEKTsKLSAgICBib29sIGlzTW9kaWZpZWQoKSBjb25zdCB7
IHJldHVybiBtX21vZGlmaWVkOyB9CiAgICAgdm9pZCBkaWRTeW5jaHJvbml6ZSgpOwogICAgIElt
YWdlKiBpbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIG5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoZG91YmxlKTsKIAogICAgIEdyYXBoaWNzTGF5ZXIqIG1hc2tUYXJnZXQo
KSBjb25zdCB7IHJldHVybiBtX21hc2tUYXJnZXQ7IH0KICAgICB2b2lkIHNldE1hc2tUYXJnZXQo
R3JhcGhpY3NMYXllciogbGF5ZXIpIHsgbV9tYXNrVGFyZ2V0ID0gbGF5ZXI7IH0KIAogICAgIHN0
YXRpYyB2b2lkIGluaXRGYWN0b3J5KCk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
ICAgICAvLyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJh
Y2tpbmdTdG9yZVBhaW50QmVnaW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgdGlsZWRCYWNraW5nU3Rv
cmVQYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CkBAIC0xMzUsMzkgKzEz
MSw0MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoV2Vi
S2l0OjpXZWJHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKKyAgICB2b2lkIHN5bmNDaGlsZHJlbigp
OworICAgIHZvaWQgc3luY0xheWVyU3RhdGUoKTsKKwogICAgIHZvaWQgYWRqdXN0VmlzaWJsZVJl
Y3QoKTsKICAgICBib29sIGlzUmVhZHlGb3JUaWxlQnVmZmVyU3dhcCgpIGNvbnN0OwogICAgIHZv
aWQgdXBkYXRlQ29udGVudEJ1ZmZlcnMoKTsKICAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3Jlcygp
OwotI2VuZGlmCiAKIHByaXZhdGU6CisgICAgV2ViS2l0OjpXZWJMYXllcklEIG1faWQ7CiAgICAg
V2ViS2l0OjpXZWJMYXllckluZm8gbV9sYXllckluZm87CiAgICAgUmVmUHRyPEltYWdlPiBtX2lt
YWdlOwogICAgIEdyYXBoaWNzTGF5ZXIqIG1fbWFza1RhcmdldDsKICAgICBGbG9hdFJlY3QgbV9u
ZWVkc0Rpc3BsYXlSZWN0OwogICAgIExheWVyVHJhbnNmb3JtIG1fbGF5ZXJUcmFuc2Zvcm07Ci0g
ICAgYm9vbCBtX25lZWRzRGlzcGxheSA6IDE7Ci0gICAgYm9vbCBtX21vZGlmaWVkIDogMTsKLSAg
ICBib29sIG1fY29udGVudE5lZWRzRGlzcGxheSA6IDE7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdB
bmltYXRpb25zIDogMTsKLSAgICBib29sIG1faW5VcGRhdGVNb2RlIDogMjsKLQotICAgIHZvaWQg
bm90aWZ5Q2hhbmdlKCk7Ci0gICAgdm9pZCBub3RpZnlDaGFuZ2VSZWN1cnNpdmVseSgpOworICAg
IGJvb2wgbV9pblVwZGF0ZU1vZGUgOiAxOworICAgIGJvb2wgbV9zaG91bGRVcGRhdGVWaXNpYmxl
UmVjdDogMTsKKyAgICBib29sIG1fc2hvdWxkU3luY0xheWVyU3RhdGUgOiAxOworICAgIGJvb2wg
bV9zaG91bGRTeW5jQ2hpbGRyZW4gOiAxOworCisgICAgdm9pZCBkaWRDaGFuZ2VMYXllclN0YXRl
KCk7CisgICAgdm9pZCBkaWRDaGFuZ2VHZW9tZXRyeSgpOworICAgIHZvaWQgZGlkQ2hhbmdlQ2hp
bGRyZW4oKTsKICAgICB2b2lkIGNyZWF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3RyYW5zZm9ybUFuaW1hdGlvbnM7CiAKLSAgICBib29sIHNlbGZPckFuY2VzdG9ySGFz
QWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9ucygpIGNvbnN0OwotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCisgICAgYm9vbCBzZWxmT3JBbmNlc3Rvck1pZ2h0SGF2ZU5vbkFmZmluZVRyYW5z
Zm9ybXMoKTsKKyAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ1N0b3JlKCk7CisgICAgdm9p
ZCBhZGp1c3RDb250ZW50c1NjYWxlKCk7CiAgICAgdm9pZCBjb21wdXRlVHJhbnNmb3JtZWRWaXNp
YmxlUmVjdCgpOworICAgIHZvaWQgc2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKTsKIAogICAg
IFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNsaWVudCogbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50
OwogICAgIE93blB0cjxXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0
b3JlOwogICAgIE93blB0cjxXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZT4gbV9wcmV2aW91c0Jh
Y2tpbmdTdG9yZTsKICAgICBmbG9hdCBtX2NvbnRlbnRzU2NhbGU7Ci0jZW5kaWYKIH07CiAKIFdl
YkdyYXBoaWNzTGF5ZXIqIHRvV2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9z
dFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVI
b3N0UXQuY3BwCmluZGV4IGNhNzRmMTE0MGIyYjU4NTlmNzUxOTE3Zjg4YWM5MDI1N2NjY2E0NDMu
LmExNTJlOTA3YjE4YWJlM2IwMmM0Mzk5MjE5ZDFlZjM1MmRhNDgwZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQu
Y3BwCkBAIC0yMzAsMTAgKzIzMCwxNiBAQCBib29sIExheWVyVHJlZUhvc3RRdDo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkKICAgICByZXR1cm4gZGlkU3luYzsKIH0KIAotdm9pZCBMYXllclRy
ZWVIb3N0UXQ6OmRpZFN5bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5ZXIoY29uc3QgV2ViTGF5ZXJJ
bmZvJiBpbmZvKQordm9pZCBMYXllclRyZWVIb3N0UXQ6OnN5bmNMYXllclN0YXRlKFdlYkxheWVy
SUQgaWQsIGNvbnN0IFdlYkxheWVySW5mbyYgaW5mbykKIHsKICAgICBtX3Nob3VsZFN5bmNGcmFt
ZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJv
eHk6OlN5bmNDb21wb3NpdGluZ0xheWVyU3RhdGUoaW5mbykpOworICAgIG1fd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdFByb3h5OjpTZXRDb21wb3NpdGluZ0xheWVyU3RhdGUo
aWQsIGluZm8pKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0UXQ6OnN5bmNMYXllckNoaWxkcmVu
KFdlYkxheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklEPiYgY2hpbGRyZW4pCit7Cisg
ICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6TGF5ZXJUcmVlSG9zdFByb3h5OjpTZXRDb21wb3NpdGluZ0xheWVyQ2hpbGRyZW4oaWQsIGNo
aWxkcmVuKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjphdHRhY2hMYXllcihXZWJHcmFw
aGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaAppbmRleCAwOGYwZTY0Yjc0YjNkMTNkYzFmNGJi
NmY3NWJiYjQxZWZmZjA1NTlmLi44ZDMyMzZlZjQyZGQ4N2FhMmY0ZmQxOTc1ZGE1NmU1OGQzN2Vm
Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5
ZXJUcmVlSG9zdFF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0
L0xheWVyVHJlZUhvc3RRdC5oCkBAIC03MSw3ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVRp
bGVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTeW5jQ29tcG9zaXRpbmdT
dGF0ZUZvckxheWVyKGNvbnN0IFdlYkxheWVySW5mbyYpOworICAgIHZpcnR1YWwgdm9pZCBzeW5j
TGF5ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVy
SUQ+Jik7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaExheWVyKFdlYkNvcmU6OldlYkdyYXBoaWNz
TGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllciopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134418</attachid>
            <date>2012-03-28 15:12:32 -0700</date>
            <delta_ts>2012-04-09 10:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75780-20120328151224.patch</filename>
            <type>text/plain</type>
            <size>13099</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGQ1MzU2MmU4ODllZWMw
NTJkNzM4NzMwZGJkNjFhM2FiNDQxZTgxYS4uODU1YmIxYTc5MjgwNTg4M2Y0MzA0ZjYzYjg4MTMw
YmVjYTEzZWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDEyLTAzLTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtX
SzJdIEFjY2VsZXJhdGVkIGFuZCBub24tYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBuZWVkIHRvIGJl
IHN5bmNocm9uaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzU3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgdGhlIHVpLXNpZGUgYW5pbWF0aW9uIGNvZGUsIGFuZCByZXR1cm4gZmFsc2Ug
ZnJvbSBhZGRBbmltYXRpb24gc28gdGhhdCB3ZWItc2lkZQorICAgICAgICBhbmltYXRpb25zIGtp
Y2sgaW4uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHA6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAqIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmg6CisgICAgICAg
IChXZWJMYXllckluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVJlbmRlcmVyOjpwYWludFRvQ3Vy
cmVudEdMQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVJlbmRlcmVyOjpz
ZXRMYXllclN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6ZGlk
Q2hhbmdlR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c3lu
Y0xheWVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6Y29tcHV0
ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViR3JhcGhpY3NMYXllcik6CisK
KzIwMTItMDMtMjggIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4K
KwogICAgICAgICBbUXRdW1dLMl0gRG9uJ3Qgc3luY2hyb25pemUgV2ViR3JhcGhpY3NMYXllcnMg
dG8gdGhlIFVJIHByb2Nlc3MgaWYgdGhlIGFjdHVhbCBsYXllciBpbmZvcm1hdGlvbiB3YXNuJ3Qg
Y2hhbmdlZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODI1MjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUlu
Zm8uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3BwCmluZGV4
IGJiZjI2Y2Q3NTFjMWI4MjM0NmM1MGQ4Mjg0MTBkZWEyYmIzYTM3OWYuLmIwNzZlNDMyOWI4YzVh
MzlhODIyY2ViOTEzZjY0NTNiNjU0NGI0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
TGF5ZXJUcmVlSW5mby5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdm9pZCBXZWJMYXllckluZm86OmVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgLy8g
V2UgaGF2ZSB0byBkaXZpZGUgaXQgdG8gc2V2ZXJhbCBsaW5lcywgYmVjYXVzZSBDb3JlSVBDOjpJ
bi9PdXQgdGFrZXMgYSBtYXhpbXVtIG9mIDEwIGFyZ3VtZW50cy4KICAgICBlbmNvZGVyLT5lbmNv
ZGUoQ29yZUlQQzo6SW4oaWQsIG5hbWUsIHBhcmVudCwgY2hpbGRyZW4sIGZsYWdzLCByZXBsaWNh
LCBtYXNrLCBpbWFnZUJhY2tpbmdTdG9yZUlEKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJ
UEM6OkluKHBvcywgc2l6ZSwgdHJhbnNmb3JtLCBvcGFjaXR5LCBhbmNob3JQb2ludCwgY2hpbGRy
ZW5UcmFuc2Zvcm0sIGNvbnRlbnRzUmVjdCwgYW5pbWF0aW9ucykpOworICAgIGVuY29kZXItPmVu
Y29kZShDb3JlSVBDOjpJbihwb3MsIHNpemUsIHRyYW5zZm9ybSwgb3BhY2l0eSwgYW5jaG9yUG9p
bnQsIGNoaWxkcmVuVHJhbnNmb3JtLCBjb250ZW50c1JlY3QpKTsKIH0KIAogYm9vbCBXZWJMYXll
ckluZm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkxheWVy
SW5mbyYgaW5mbykKQEAgLTQyLDcgKzQyLDcgQEAgYm9vbCBXZWJMYXllckluZm86OmRlY29kZShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkxheWVySW5mbyYgaW5mbykKICAg
ICAvLyBXZSBoYXZlIHRvIGRpdmlkZSBpdCB0byBzZXZlcmFsIGxpbmVzLCBiZWNhdXNlIENvcmVJ
UEM6OkluL091dCB0YWtlcyBhIG1heGltdW0gb2YgMTAgYXJndW1lbnRzLgogICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpbmZvLmlkLCBpbmZvLm5hbWUsIGluZm8ucGFyZW50
LCBpbmZvLmNoaWxkcmVuLCBpbmZvLmZsYWdzLCBpbmZvLnJlcGxpY2EsIGluZm8ubWFzaywgaW5m
by5pbWFnZUJhY2tpbmdTdG9yZUlEKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
IWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaW5mby5wb3MsIGluZm8uc2l6ZSwgaW5mby50
cmFuc2Zvcm0sIGluZm8ub3BhY2l0eSwgaW5mby5hbmNob3JQb2ludCwgaW5mby5jaGlsZHJlblRy
YW5zZm9ybSwgaW5mby5jb250ZW50c1JlY3QsIGluZm8uYW5pbWF0aW9ucykpKQorICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpbmZvLnBvcywgaW5mby5zaXplLCBpbmZvLnRy
YW5zZm9ybSwgaW5mby5vcGFjaXR5LCBpbmZvLmFuY2hvclBvaW50LCBpbmZvLmNoaWxkcmVuVHJh
bnNmb3JtLCBpbmZvLmNvbnRlbnRzUmVjdCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTY3LDMyICs2Nyw1IEBAIGJvb2wgV2ViTGF5ZXJVcGRhdGVJbmZv
OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJMYXllclVwZGF0
CiB7CiAgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaW5mby5sYXllcklE
LCBpbmZvLnJlY3QsIGluZm8uYml0bWFwSGFuZGxlKSk7CiB9Ci0KLXZvaWQgV2ViTGF5ZXJBbmlt
YXRpb246OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Ci17
Ci0gICAgZW5jb2Rlci0+ZW5jb2RlRW51bShvcGVyYXRpb24pOwotICAgIGVuY29kZXItPmVuY29k
ZShrZXlmcmFtZUxpc3QpOwotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihuYW1lLCBz
dGFydFRpbWUsIGJveFNpemUpKTsKLQotICAgIGlmIChvcGVyYXRpb24gPT0gV2ViTGF5ZXJBbmlt
YXRpb246OkFkZEFuaW1hdGlvbikKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGFuaW1hdGlvbik7
Ci19Ci0KLWJvb2wgV2ViTGF5ZXJBbmltYXRpb246OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFdlYkxheWVyQW5pbWF0aW9uJiBpbmZvKQotewotICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlRW51bShpbmZvLm9wZXJhdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbmZvLmtleWZyYW1lTGlzdCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaW5mby5u
YW1lLCBpbmZvLnN0YXJ0VGltZSwgaW5mby5ib3hTaXplKSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmIChpbmZvLm9wZXJhdGlvbiA9PSBXZWJMYXllckFuaW1hdGlvbjo6QWRkQW5p
bWF0aW9uKQotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbmZvLmFuaW1hdGlvbikpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uaAppbmRleCA3MzViZWM1
MTQ5MGQxMDRkODU2NzQ3ZjQ3NzE5OTgyM2Q3OWEyMmE5Li45YjI3MWVlMmZlYmVkYTYwMTY2NmZm
ZThlZmEyZmE3ZjI2YjYzYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
TGF5ZXJUcmVlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJ
bmZvLmgKQEAgLTQ4LDMyICs0OCw2IEBAIHN0cnVjdCBXZWJMYXllclVwZGF0ZUluZm8gewogICAg
IHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXZWJMYXllclVw
ZGF0ZUluZm8mKTsKIH07CiAKLXN0cnVjdCBXZWJMYXllckFuaW1hdGlvbiB7Ci0gICAgV2ViTGF5
ZXJBbmltYXRpb24oKQotICAgICAgICA6IG9wZXJhdGlvbihJbnZhbGlkQW5pbWF0aW9uKQotICAg
ICAgICAsIGtleWZyYW1lTGlzdChXZWJDb3JlOjpBbmltYXRlZFByb3BlcnR5SW52YWxpZCkKLSAg
ICAgICAgLCBzdGFydFRpbWUoMCkgeyB9Ci0gICAgV2ViTGF5ZXJBbmltYXRpb24oY29uc3QgV2Vi
Q29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKLSAgICAgICAgOiBvcGVyYXRpb24o
SW52YWxpZEFuaW1hdGlvbikKLSAgICAgICAgLCBrZXlmcmFtZUxpc3QodmFsdWVMaXN0KQotICAg
ICAgICAsIHN0YXJ0VGltZSgwKSB7IH0KLQotICAgIFN0cmluZyBuYW1lOwotICAgIGVudW0gT3Bl
cmF0aW9uIHsKLSAgICAgICAgQWRkQW5pbWF0aW9uLAotICAgICAgICBSZW1vdmVBbmltYXRpb24s
Ci0gICAgICAgIFBhdXNlQW5pbWF0aW9uLAotICAgICAgICBJbnZhbGlkQW5pbWF0aW9uCi0gICAg
fSBvcGVyYXRpb247Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBib3hTaXplOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpBbmltYXRpb24+IGFuaW1hdGlvbjsKLSAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVl
TGlzdCBrZXlmcmFtZUxpc3Q7Ci0gICAgZG91YmxlIHN0YXJ0VGltZTsKLQotICAgIHZvaWQgZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGRl
Y29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXZWJMYXllckFuaW1hdGlvbiYpOwotfTsK
LQogc3RydWN0IFdlYkxheWVySW5mbyB7CiAgICAgV2ViTGF5ZXJJbmZvKCkKICAgICAgICAgOiBp
ZChJbnZhbGlkV2ViTGF5ZXJJRCkKQEAgLTExMSw3ICs4NSw2IEBAIHN0cnVjdCBXZWJMYXllcklu
Zm8gewogICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgfTsKICAgICBWZWN0b3I8V2Vi
TGF5ZXJJRD4gY2hpbGRyZW47Ci0gICAgVmVjdG9yPFdlYkxheWVyQW5pbWF0aW9uPiBhbmltYXRp
b25zOwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdlQmFja2luZ1N0b3JlOwogCiAg
ICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCBk
Nzc2Mjg3ZTAxZDc4OTFhNTM2Mzk2MGUyYjEzNjI0YTVjMzc3ZTFkLi4yNWVkMjdkZDRmNGFjMzg1
ZTJiYzUxOGNmMTk2NmIzMDI0ZDM2OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTEyMSwxOCArMTIxLDYgQEAgdm9pZCBX
ZWJMYXllclRyZWVSZW5kZXJlcjo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG0KICAgICBsYXllci0+cGFpbnQoKTsKICAgICBtX3RleHR1cmVNYXBw
ZXItPmVuZENsaXAoKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7Ci0KLSAg
ICBzeW5jQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpzeW5j
QW5pbWF0aW9ucygpCi17Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVy
ZU1hcHBlckxheWVyKHJvb3RMYXllcigpKTsKLSAgICBBU1NFUlQobGF5ZXIpOwotCi0gICAgbGF5
ZXItPnN5bmNBbmltYXRpb25zUmVjdXJzaXZlbHkoKTsKLSAgICBpZiAobGF5ZXItPmRlc2NlbmRh
bnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkpCi0gICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoYmluZCgmV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVZpZXdwb3J0LCB0aGlzKSk7CiB9
CiAKIHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnBhaW50VG9HcmFwaGljc0NvbnRleHQoUVBh
aW50ZXIqIHBhaW50ZXIpCkBAIC0yMDgsMjUgKzE5Niw2IEBAIHZvaWQgV2ViTGF5ZXJUcmVlUmVu
ZGVyZXI6OnN5bmNMYXllclBhcmFtZXRlcnMoY29uc3QgV2ViTGF5ZXJJbmZvJiBsYXllckluZm8p
CiAgICAgfQogICAgIGxheWVyLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CiAKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxheWVySW5mby5hbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGNvbnN0IFdlYktpdDo6V2ViTGF5ZXJBbmltYXRpb24gYW5pbSA9IGxheWVySW5mby5hbmlt
YXRpb25zW2ldOwotCi0gICAgICAgIHN3aXRjaCAoYW5pbS5vcGVyYXRpb24pIHsKLSAgICAgICAg
Y2FzZSBXZWJLaXQ6OldlYkxheWVyQW5pbWF0aW9uOjpBZGRBbmltYXRpb246IHsKLSAgICAgICAg
ICAgIGNvbnN0IEludFNpemUgYm94U2l6ZSA9IGFuaW0uYm94U2l6ZTsKLSAgICAgICAgICAgIGxh
eWVyLT5hZGRBbmltYXRpb24oYW5pbS5rZXlmcmFtZUxpc3QsIGJveFNpemUsIGFuaW0uYW5pbWF0
aW9uLmdldCgpLCBhbmltLm5hbWUsIGFuaW0uc3RhcnRUaW1lKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpXZWJMYXllckFuaW1hdGlvbjo6UmVt
b3ZlQW5pbWF0aW9uOgotICAgICAgICAgICAgbGF5ZXItPnJlbW92ZUFuaW1hdGlvbihhbmltLm5h
bWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpXZWJMYXllckFu
aW1hdGlvbjo6UGF1c2VBbmltYXRpb246Ci0gICAgICAgICAgICBkb3VibGUgb2Zmc2V0ID0gV1RG
OjpjdXJyZW50VGltZSgpIC0gYW5pbS5zdGFydFRpbWU7Ci0gICAgICAgICAgICBsYXllci0+cGF1
c2VBbmltYXRpb24oYW5pbS5uYW1lLCBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KICAgICBpZiAobGF5ZXJJbmZvLmlzUm9vdExheWVyICYmIG1fcm9vdExh
eWVySUQgIT0gaWQpCiAgICAgICAgIHNldFJvb3RMYXllcklEKGlkKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBo
aWNzTGF5ZXIuY3BwCmluZGV4IDE3MmYyYTQwYTVkYTU2OTkyOWQ3YTY5NGQxMTZlOGNjOWVjNTFi
YjkuLjczY2E2NWZjMmYxOTcxZjRjZjM4NjYwYzc1Zjg4ODY1MGQ1NDY3YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2lmIFVTRShVSV9TSURFX0NPTVBP
U0lUSU5HKQogI2luY2x1ZGUgIldlYkdyYXBoaWNzTGF5ZXIuaCIKIAotI2luY2x1ZGUgIkFuaW1h
dGlvbi5oIgogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05MCw3ICs4OSw2IEBAIFdlYkdyYXBoaWNzTGF5ZXI6
OldlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAgIDogR3Jh
cGhpY3NMYXllcihjbGllbnQpCiAgICAgLCBtX21hc2tUYXJnZXQoMCkKICAgICAsIG1fbW9kaWZp
ZWQodHJ1ZSkKLSAgICAsIG1faGFzUGVuZGluZ0FuaW1hdGlvbnMoZmFsc2UpCiAgICAgLCBtX2lu
VXBkYXRlTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QodHJ1ZSkK
ICAgICAsIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCgwKQpAQCAtMjg5LDUzICsyODcsNiBAQCB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByKQog
ICAgIG5vdGlmeUNoYW5nZSgpOwogfQogCi12b2lkIFdlYkdyYXBoaWNzTGF5ZXI6Om5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoZG91YmxlIHRpbWUpCi17Ci0gICAgaWYgKGNsaWVudCgpKQotICAgICAg
ICBjbGllbnQoKS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCB0aW1lKTsKLX0KLQotYm9v
bCBXZWJHcmFwaGljc0xheWVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
LCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAg
IGlmICghYW5pbSB8fCBhbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSB8fCB2YWx1ZUxpc3Qu
c2l6ZSgpIDwgMiB8fCAodmFsdWVMaXN0LnByb3BlcnR5KCkgIT0gQW5pbWF0ZWRQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybSAmJiB2YWx1ZUxpc3QucHJvcGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5
T3BhY2l0eSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYkxheWVyQW5pbWF0aW9u
IHdlYkFuaW1hdGlvbih2YWx1ZUxpc3QpOwotICAgIHdlYkFuaW1hdGlvbi5uYW1lID0ga2V5ZnJh
bWVzTmFtZTsKLSAgICB3ZWJBbmltYXRpb24ub3BlcmF0aW9uID0gV2ViTGF5ZXJBbmltYXRpb246
OkFkZEFuaW1hdGlvbjsKLSAgICB3ZWJBbmltYXRpb24uYm94U2l6ZSA9IGJveFNpemU7Ci0gICAg
d2ViQW5pbWF0aW9uLmFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW0pOwotICAgIHdl
YkFuaW1hdGlvbi5zdGFydFRpbWUgPSB0aW1lT2Zmc2V0OwotICAgIG1fbGF5ZXJJbmZvLmFuaW1h
dGlvbnMuYXBwZW5kKHdlYkFuaW1hdGlvbik7Ci0gICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgp
ID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCi0gICAgICAgIG1fdHJhbnNmb3Jt
QW5pbWF0aW9ucy5hZGQoa2V5ZnJhbWVzTmFtZSk7Ci0KLSAgICBtX2hhc1BlbmRpbmdBbmltYXRp
b25zID0gdHJ1ZTsKLSAgICBkaWRDaGFuZ2VHZW9tZXRyeSgpOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgV2ViR3JhcGhpY3NMYXllcjo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAgICBXZWJMYXllckFuaW1h
dGlvbiB3ZWJBbmltYXRpb247Ci0gICAgd2ViQW5pbWF0aW9uLm5hbWUgPSBhbmltYXRpb25OYW1l
OwotICAgIHdlYkFuaW1hdGlvbi5vcGVyYXRpb24gPSBXZWJMYXllckFuaW1hdGlvbjo6UGF1c2VB
bmltYXRpb247Ci0gICAgd2ViQW5pbWF0aW9uLnN0YXJ0VGltZSA9IFdURjo6Y3VycmVudFRpbWUo
KSAtIHRpbWVPZmZzZXQ7Ci0gICAgbV9sYXllckluZm8uYW5pbWF0aW9ucy5hcHBlbmQod2ViQW5p
bWF0aW9uKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKLX0KLQotdm9pZCBXZWJHcmFwaGljc0xheWVy
OjpyZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKQotewotICAgIFdl
YkxheWVyQW5pbWF0aW9uIHdlYkFuaW1hdGlvbjsKLSAgICB3ZWJBbmltYXRpb24ubmFtZSA9IGFu
aW1hdGlvbk5hbWU7Ci0gICAgd2ViQW5pbWF0aW9uLm9wZXJhdGlvbiA9IFdlYkxheWVyQW5pbWF0
aW9uOjpSZW1vdmVBbmltYXRpb247Ci0gICAgbV9sYXllckluZm8uYW5pbWF0aW9ucy5hcHBlbmQo
d2ViQW5pbWF0aW9uKTsKLSAgICBtX3RyYW5zZm9ybUFuaW1hdGlvbnMucmVtb3ZlKGFuaW1hdGlv
bk5hbWUpOwotICAgIG5vdGlmeUNoYW5nZSgpOwotfQotCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
bV9pbWFnZTsKQEAgLTQ3NCwxMCArNDI1LDYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5j
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIHVwZGF0ZUNvbnRlbnRCdWZm
ZXJzKCk7CiAKICAgICBtX21vZGlmaWVkID0gZmFsc2U7Ci0gICAgaWYgKG1faGFzUGVuZGluZ0Fu
aW1hdGlvbnMpCi0gICAgICAgIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoV1RGOjpjdXJyZW50VGlt
ZSgpKTsKLSAgICBtX2xheWVySW5mby5hbmltYXRpb25zLmNsZWFyKCk7Ci0gICAgbV9oYXNQZW5k
aW5nQW5pbWF0aW9ucyA9IGZhbHNlOwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnRpbGVk
QmFja2luZ1N0b3JlUGFpbnRCZWdpbigpCkBAIC01NjQsOCArNTExLDYgQEAgYm9vbCBXZWJHcmFw
aGljc0xheWVyOjpzaG91bGRVc2VUaWxlZEJhY2tpbmdTdG9yZSgpCiAKIEludFJlY3QgV2ViR3Jh
cGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpCiB7Ci0gICAgLy8gSWYg
dGhpcyBsYXllciBpcyBwYXJ0IG9mIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gYW5pbWF0aW9uLCB0aGUg
dmlzaWJsZSByZWN0IG1pZ2h0IGNoYW5nZSwKLSAgICAvLyBzbyB3ZSByYXRoZXIgcmVuZGVyIHRo
ZSB3aG9sZSBsYXllciB1bnRpbCBzb21lIGJldHRlciBvcHRpbWl6YXRpb24gaXMgYXZhaWxhYmxl
LgogICAgIGlmICghc2hvdWxkVXNlVGlsZWRCYWNraW5nU3RvcmUoKSkKICAgICAgICAgcmV0dXJu
IHRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCk7CiAKQEAgLTY5Myw5ICs2MzgsNiBAQCB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmluaXRGYWN0b3J5KCkKIAogYm9vbCBXZWJHcmFwaGljc0xh
eWVyOjpzZWxmT3JBbmNlc3RvckhhdmVOb25BZmZpbmVUcmFuc2Zvcm1zKCkKIHsKLSAgICBpZiAo
IW1fdHJhbnNmb3JtQW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
CiAgICAgaWYgKCFtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaXNBZmZpbmUoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKaW5kZXggMWZlMGUxYWE1MTk3
OGYwOTIwYjI2YTU1NzMzZGMwYmY1M2Q5ZTFiMy4uMjQ1MDJmNTMyMWVjMWRmMGZiZTQ2Njc1MGRl
YjAwMjU2ZTg4NDFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKQEAgLTkxLDkgKzkxLDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOwogICAgIHZvaWQg
c2V0T3BhY2l0eShmbG9hdCk7CiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVj
dCYpOwotICAgIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGRvdWJsZSk7Ci0g
ICAgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmLCBkb3VibGUpOwotICAgIHZvaWQg
cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q29udGVudHNUb0lt
YWdlKEltYWdlKik7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopOwogICAg
IHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciopOwpAQCAtMTExLDcgKzEw
OCw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzTW9kaWZpZWQoKSBjb25zdCB7IHJldHVybiBtX21v
ZGlmaWVkOyB9CiAgICAgdm9pZCBkaWRTeW5jaHJvbml6ZSgpOwogICAgIEltYWdlKiBpbWFnZSgp
IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoZG91YmxlKTsKIAogICAgIEdyYXBoaWNzTGF5ZXIqIG1hc2tUYXJnZXQoKSBjb25zdCB7IHJl
dHVybiBtX21hc2tUYXJnZXQ7IH0KICAgICB2b2lkIHNldE1hc2tUYXJnZXQoR3JhcGhpY3NMYXll
ciogbGF5ZXIpIHsgbV9tYXNrVGFyZ2V0ID0gbGF5ZXI7IH0KQEAgLTE0NiwxNCArMTQyLDEyIEBA
IHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsKICAgICBMYXllclRy
YW5zZm9ybSBtX2xheWVyVHJhbnNmb3JtOwogICAgIGJvb2wgbV9tb2RpZmllZCA6IDE7Ci0gICAg
Ym9vbCBtX2hhc1BlbmRpbmdBbmltYXRpb25zIDogMTsKICAgICBib29sIG1faW5VcGRhdGVNb2Rl
IDogMTsKICAgICBib29sIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJlY3Q6IDE7CiAKICAgICB2b2lk
IG5vdGlmeUNoYW5nZSgpOwogICAgIHZvaWQgZGlkQ2hhbmdlR2VvbWV0cnkoKTsKICAgICB2b2lk
IGNyZWF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3RyYW5zZm9ybUFu
aW1hdGlvbnM7CiAKICAgICBib29sIHNlbGZPckFuY2VzdG9ySGF2ZU5vbkFmZmluZVRyYW5zZm9y
bXMoKTsKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ1N0b3JlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136266</attachid>
            <date>2012-04-09 10:52:55 -0700</date>
            <delta_ts>2012-04-09 14:59:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-75780-20120409105252.patch</filename>
            <type>text/plain</type>
            <size>13111</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzg5YjNkYThiOGU5OTkz
YjA5NzczMzIzM2EyNmI0MDI1ODViMzcwMy4uMGNlNjRmMWRlNTI2NTBmZTg3MWU0NjE3YWU1YmI0
MWFhNzUyMTc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDEyLTAzLTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtX
SzJdIEFjY2VsZXJhdGVkIGFuZCBub24tYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBuZWVkIHRvIGJl
IHN5bmNocm9uaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzU3ODAKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KKworICAgICAgICBSZW1vdmUgdGhlIHVpLXNpZGUgYW5pbWF0aW9uIGNvZGUsIGFuZCBy
ZXR1cm4gZmFsc2UgZnJvbSBhZGRBbmltYXRpb24gc28gdGhhdCB3ZWItc2lkZQorICAgICAgICBh
bmltYXRpb25zIGtpY2sgaW4uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5j
cHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFNoYXJlZC9XZWJMYXllclRyZWVJbmZv
Lmg6CisgICAgICAgIChXZWJMYXllckluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMYXll
clRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVJlbmRlcmVy
OjpwYWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJl
ZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6ZGlkQ2hhbmdlR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhp
Y3NMYXllcjo6c3luY0xheWVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViR3JhcGhp
Y3NMYXllcik6CisKKzIwMTItMDMtMjggIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFs
QG5va2lhLmNvbT4KKwogICAgICAgICBbUXRdW1dLMl0gRG9uJ3Qgc3luY2hyb25pemUgV2ViR3Jh
cGhpY3NMYXllcnMgdG8gdGhlIFVJIHByb2Nlc3MgaWYgdGhlIGFjdHVhbCBsYXllciBpbmZvcm1h
dGlvbiB3YXNuJ3QgY2hhbmdlZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODI1MjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkxheWVyVHJlZUluZm8uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUlu
Zm8uY3BwCmluZGV4IGJiZjI2Y2Q3NTFjMWI4MjM0NmM1MGQ4Mjg0MTBkZWEyYmIzYTM3OWYuLmIw
NzZlNDMyOWI4YzVhMzlhODIyY2ViOTEzZjY0NTNiNjU0NGI0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdm9pZCBXZWJM
YXllckluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0
CiB7CiAgICAgLy8gV2UgaGF2ZSB0byBkaXZpZGUgaXQgdG8gc2V2ZXJhbCBsaW5lcywgYmVjYXVz
ZSBDb3JlSVBDOjpJbi9PdXQgdGFrZXMgYSBtYXhpbXVtIG9mIDEwIGFyZ3VtZW50cy4KICAgICBl
bmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oaWQsIG5hbWUsIHBhcmVudCwgY2hpbGRyZW4sIGZs
YWdzLCByZXBsaWNhLCBtYXNrLCBpbWFnZUJhY2tpbmdTdG9yZUlEKSk7Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlKENvcmVJUEM6OkluKHBvcywgc2l6ZSwgdHJhbnNmb3JtLCBvcGFjaXR5LCBhbmNob3JQ
b2ludCwgY2hpbGRyZW5UcmFuc2Zvcm0sIGNvbnRlbnRzUmVjdCwgYW5pbWF0aW9ucykpOworICAg
IGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihwb3MsIHNpemUsIHRyYW5zZm9ybSwgb3BhY2l0
eSwgYW5jaG9yUG9pbnQsIGNoaWxkcmVuVHJhbnNmb3JtLCBjb250ZW50c1JlY3QpKTsKIH0KIAog
Ym9vbCBXZWJMYXllckluZm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFdlYkxheWVySW5mbyYgaW5mbykKQEAgLTQyLDcgKzQyLDcgQEAgYm9vbCBXZWJMYXllcklu
Zm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkxheWVySW5m
byYgaW5mbykKICAgICAvLyBXZSBoYXZlIHRvIGRpdmlkZSBpdCB0byBzZXZlcmFsIGxpbmVzLCBi
ZWNhdXNlIENvcmVJUEM6OkluL091dCB0YWtlcyBhIG1heGltdW0gb2YgMTAgYXJndW1lbnRzLgog
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpbmZvLmlkLCBpbmZvLm5hbWUs
IGluZm8ucGFyZW50LCBpbmZvLmNoaWxkcmVuLCBpbmZvLmZsYWdzLCBpbmZvLnJlcGxpY2EsIGlu
Zm8ubWFzaywgaW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaW5mby5wb3MsIGluZm8u
c2l6ZSwgaW5mby50cmFuc2Zvcm0sIGluZm8ub3BhY2l0eSwgaW5mby5hbmNob3JQb2ludCwgaW5m
by5jaGlsZHJlblRyYW5zZm9ybSwgaW5mby5jb250ZW50c1JlY3QsIGluZm8uYW5pbWF0aW9ucykp
KQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpbmZvLnBvcywgaW5mby5z
aXplLCBpbmZvLnRyYW5zZm9ybSwgaW5mby5vcGFjaXR5LCBpbmZvLmFuY2hvclBvaW50LCBpbmZv
LmNoaWxkcmVuVHJhbnNmb3JtLCBpbmZvLmNvbnRlbnRzUmVjdCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY3LDMyICs2Nyw1IEBAIGJvb2wgV2ViTGF5
ZXJVcGRhdGVJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWJMYXllclVwZGF0CiB7CiAgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQo
aW5mby5sYXllcklELCBpbmZvLnJlY3QsIGluZm8uYml0bWFwSGFuZGxlKSk7CiB9Ci0KLXZvaWQg
V2ViTGF5ZXJBbmltYXRpb246OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci0+ZW5jb2RlRW51bShvcGVyYXRpb24pOwotICAgIGVu
Y29kZXItPmVuY29kZShrZXlmcmFtZUxpc3QpOwotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBD
OjpJbihuYW1lLCBzdGFydFRpbWUsIGJveFNpemUpKTsKLQotICAgIGlmIChvcGVyYXRpb24gPT0g
V2ViTGF5ZXJBbmltYXRpb246OkFkZEFuaW1hdGlvbikKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KGFuaW1hdGlvbik7Ci19Ci0KLWJvb2wgV2ViTGF5ZXJBbmltYXRpb246OmRlY29kZShDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkxheWVyQW5pbWF0aW9uJiBpbmZvKQotewot
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShpbmZvLm9wZXJhdGlvbikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbmZvLmtleWZyYW1lTGlzdCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBD
OjpPdXQoaW5mby5uYW1lLCBpbmZvLnN0YXJ0VGltZSwgaW5mby5ib3hTaXplKSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpbmZvLm9wZXJhdGlvbiA9PSBXZWJMYXllckFuaW1h
dGlvbjo6QWRkQW5pbWF0aW9uKQotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbmZvLmFu
aW1hdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTGF5
ZXJUcmVlSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uaApp
bmRleCA3MzViZWM1MTQ5MGQxMDRkODU2NzQ3ZjQ3NzE5OTgyM2Q3OWEyMmE5Li45YjI3MWVlMmZl
YmVkYTYwMTY2NmZmZThlZmEyZmE3ZjI2YjYzYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJMYXllclRyZWVJbmZvLmgKQEAgLTQ4LDMyICs0OCw2IEBAIHN0cnVjdCBXZWJMYXllclVwZGF0
ZUluZm8gewogICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
LCBXZWJMYXllclVwZGF0ZUluZm8mKTsKIH07CiAKLXN0cnVjdCBXZWJMYXllckFuaW1hdGlvbiB7
Ci0gICAgV2ViTGF5ZXJBbmltYXRpb24oKQotICAgICAgICA6IG9wZXJhdGlvbihJbnZhbGlkQW5p
bWF0aW9uKQotICAgICAgICAsIGtleWZyYW1lTGlzdChXZWJDb3JlOjpBbmltYXRlZFByb3BlcnR5
SW52YWxpZCkKLSAgICAgICAgLCBzdGFydFRpbWUoMCkgeyB9Ci0gICAgV2ViTGF5ZXJBbmltYXRp
b24oY29uc3QgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCkKLSAgICAgICAg
OiBvcGVyYXRpb24oSW52YWxpZEFuaW1hdGlvbikKLSAgICAgICAgLCBrZXlmcmFtZUxpc3QodmFs
dWVMaXN0KQotICAgICAgICAsIHN0YXJ0VGltZSgwKSB7IH0KLQotICAgIFN0cmluZyBuYW1lOwot
ICAgIGVudW0gT3BlcmF0aW9uIHsKLSAgICAgICAgQWRkQW5pbWF0aW9uLAotICAgICAgICBSZW1v
dmVBbmltYXRpb24sCi0gICAgICAgIFBhdXNlQW5pbWF0aW9uLAotICAgICAgICBJbnZhbGlkQW5p
bWF0aW9uCi0gICAgfSBvcGVyYXRpb247Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBib3hTaXplOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpBbmltYXRpb24+IGFuaW1hdGlvbjsKLSAgICBXZWJDb3JlOjpL
ZXlmcmFtZVZhbHVlTGlzdCBrZXlmcmFtZUxpc3Q7Ci0gICAgZG91YmxlIHN0YXJ0VGltZTsKLQot
ICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OwotICAgIHN0
YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXZWJMYXllckFuaW1h
dGlvbiYpOwotfTsKLQogc3RydWN0IFdlYkxheWVySW5mbyB7CiAgICAgV2ViTGF5ZXJJbmZvKCkK
ICAgICAgICAgOiBpZChJbnZhbGlkV2ViTGF5ZXJJRCkKQEAgLTExMSw3ICs4NSw2IEBAIHN0cnVj
dCBXZWJMYXllckluZm8gewogICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgfTsKICAg
ICBWZWN0b3I8V2ViTGF5ZXJJRD4gY2hpbGRyZW47Ci0gICAgVmVjdG9yPFdlYkxheWVyQW5pbWF0
aW9uPiBhbmltYXRpb25zOwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGltYWdlQmFja2lu
Z1N0b3JlOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVy
LmNwcAppbmRleCA3ZTMyNzM2NzA4NjJlOGUyNDNhZWNmOTliNmRiZDkzY2E5ZmJmODA3Li40MTkz
N2I3NWIzMDFlY2QwNWZmMGMxNmJlMDU2MjJhNDFhMTgyZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTEyMSwxOCArMTIx
LDYgQEAgdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0KICAgICBsYXllci0+cGFpbnQoKTsKICAgICBt
X3RleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50
aW5nKCk7Ci0KLSAgICBzeW5jQW5pbWF0aW9ucygpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVJl
bmRlcmVyOjpzeW5jQW5pbWF0aW9ucygpCi17Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXll
ciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKTsKLSAgICBBU1NFUlQobGF5ZXIp
OwotCi0gICAgbGF5ZXItPnN5bmNBbmltYXRpb25zUmVjdXJzaXZlbHkoKTsKLSAgICBpZiAobGF5
ZXItPmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkpCi0gICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoYmluZCgmV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZVZpZXdwb3J0
LCB0aGlzKSk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnBhaW50VG9HcmFwaGlj
c0NvbnRleHQoUVBhaW50ZXIqIHBhaW50ZXIpCkBAIC0yMDgsMjUgKzE5Niw2IEBAIHZvaWQgV2Vi
TGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNMYXllclBhcmFtZXRlcnMoY29uc3QgV2ViTGF5ZXJJbmZv
JiBsYXllckluZm8pCiAgICAgfQogICAgIGxheWVyLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVySW5mby5hbmltYXRpb25zLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViTGF5ZXJBbmltYXRpb24gYW5pbSA9IGxh
eWVySW5mby5hbmltYXRpb25zW2ldOwotCi0gICAgICAgIHN3aXRjaCAoYW5pbS5vcGVyYXRpb24p
IHsKLSAgICAgICAgY2FzZSBXZWJLaXQ6OldlYkxheWVyQW5pbWF0aW9uOjpBZGRBbmltYXRpb246
IHsKLSAgICAgICAgICAgIGNvbnN0IEludFNpemUgYm94U2l6ZSA9IGFuaW0uYm94U2l6ZTsKLSAg
ICAgICAgICAgIGxheWVyLT5hZGRBbmltYXRpb24oYW5pbS5rZXlmcmFtZUxpc3QsIGJveFNpemUs
IGFuaW0uYW5pbWF0aW9uLmdldCgpLCBhbmltLm5hbWUsIGFuaW0uc3RhcnRUaW1lKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgV2ViS2l0OjpXZWJMYXllckFu
aW1hdGlvbjo6UmVtb3ZlQW5pbWF0aW9uOgotICAgICAgICAgICAgbGF5ZXItPnJlbW92ZUFuaW1h
dGlvbihhbmltLm5hbWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViS2l0
OjpXZWJMYXllckFuaW1hdGlvbjo6UGF1c2VBbmltYXRpb246Ci0gICAgICAgICAgICBkb3VibGUg
b2Zmc2V0ID0gV1RGOjpjdXJyZW50VGltZSgpIC0gYW5pbS5zdGFydFRpbWU7Ci0gICAgICAgICAg
ICBsYXllci0+cGF1c2VBbmltYXRpb24oYW5pbS5uYW1lLCBvZmZzZXQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAobGF5ZXJJbmZvLmlzUm9vdExheWVy
ICYmIG1fcm9vdExheWVySUQgIT0gaWQpCiAgICAgICAgIHNldFJvb3RMYXllcklEKGlkKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDg5MjUwZWFjOWU3OTExY2I3MWJjM2YyZTY4
Y2QxMWRiMTBhYTMwZjIuLjQ0NGE3ODFhNTI1ODBlZTJiNmMxM2ZkMjNiYzE4NzA4MTgzMzk2ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2lmIFVTRShV
SV9TSURFX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIldlYkdyYXBoaWNzTGF5ZXIuaCIKIAotI2lu
Y2x1ZGUgIkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUg
IkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05MCw3ICs4OSw2IEBAIFdlYkdy
YXBoaWNzTGF5ZXI6OldlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50
KQogICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCiAgICAgLCBtX21hc2tUYXJnZXQoMCkKICAg
ICAsIG1fbW9kaWZpZWQodHJ1ZSkKLSAgICAsIG1faGFzUGVuZGluZ0FuaW1hdGlvbnMoZmFsc2Up
CiAgICAgLCBtX2luVXBkYXRlTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlVmlzaWJs
ZVJlY3QodHJ1ZSkKICAgICAsIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCgwKQpAQCAtMjk1LDUz
ICsyOTMsNiBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJ
bnRSZWN0JiByKQogICAgIG5vdGlmeUNoYW5nZSgpOwogfQogCi12b2lkIFdlYkdyYXBoaWNzTGF5
ZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHRpbWUpCi17Ci0gICAgaWYgKGNsaWVu
dCgpKQotICAgICAgICBjbGllbnQoKS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCB0aW1l
KTsKLX0KLQotYm9vbCBXZWJHcmFwaGljc0xheWVyOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zm
c2V0KQotewotICAgIGlmICghYW5pbSB8fCBhbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSB8
fCB2YWx1ZUxpc3Quc2l6ZSgpIDwgMiB8fCAodmFsdWVMaXN0LnByb3BlcnR5KCkgIT0gQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSAmJiB2YWx1ZUxpc3QucHJvcGVydHkoKSAhPSBBbmlt
YXRlZFByb3BlcnR5T3BhY2l0eSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYkxh
eWVyQW5pbWF0aW9uIHdlYkFuaW1hdGlvbih2YWx1ZUxpc3QpOwotICAgIHdlYkFuaW1hdGlvbi5u
YW1lID0ga2V5ZnJhbWVzTmFtZTsKLSAgICB3ZWJBbmltYXRpb24ub3BlcmF0aW9uID0gV2ViTGF5
ZXJBbmltYXRpb246OkFkZEFuaW1hdGlvbjsKLSAgICB3ZWJBbmltYXRpb24uYm94U2l6ZSA9IGJv
eFNpemU7Ci0gICAgd2ViQW5pbWF0aW9uLmFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKGFu
aW0pOwotICAgIHdlYkFuaW1hdGlvbi5zdGFydFRpbWUgPSB0aW1lT2Zmc2V0OwotICAgIG1fbGF5
ZXJJbmZvLmFuaW1hdGlvbnMuYXBwZW5kKHdlYkFuaW1hdGlvbik7Ci0gICAgaWYgKHZhbHVlTGlz
dC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCi0gICAgICAg
IG1fdHJhbnNmb3JtQW5pbWF0aW9ucy5hZGQoa2V5ZnJhbWVzTmFtZSk7Ci0KLSAgICBtX2hhc1Bl
bmRpbmdBbmltYXRpb25zID0gdHJ1ZTsKLSAgICBkaWRDaGFuZ2VHZW9tZXRyeSgpOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViR3JhcGhpY3NMYXllcjo6cGF1c2VBbmltYXRpb24o
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAgICBX
ZWJMYXllckFuaW1hdGlvbiB3ZWJBbmltYXRpb247Ci0gICAgd2ViQW5pbWF0aW9uLm5hbWUgPSBh
bmltYXRpb25OYW1lOwotICAgIHdlYkFuaW1hdGlvbi5vcGVyYXRpb24gPSBXZWJMYXllckFuaW1h
dGlvbjo6UGF1c2VBbmltYXRpb247Ci0gICAgd2ViQW5pbWF0aW9uLnN0YXJ0VGltZSA9IFdURjo6
Y3VycmVudFRpbWUoKSAtIHRpbWVPZmZzZXQ7Ci0gICAgbV9sYXllckluZm8uYW5pbWF0aW9ucy5h
cHBlbmQod2ViQW5pbWF0aW9uKTsKLSAgICBub3RpZnlDaGFuZ2UoKTsKLX0KLQotdm9pZCBXZWJH
cmFwaGljc0xheWVyOjpyZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
KQotewotICAgIFdlYkxheWVyQW5pbWF0aW9uIHdlYkFuaW1hdGlvbjsKLSAgICB3ZWJBbmltYXRp
b24ubmFtZSA9IGFuaW1hdGlvbk5hbWU7Ci0gICAgd2ViQW5pbWF0aW9uLm9wZXJhdGlvbiA9IFdl
YkxheWVyQW5pbWF0aW9uOjpSZW1vdmVBbmltYXRpb247Ci0gICAgbV9sYXllckluZm8uYW5pbWF0
aW9ucy5hcHBlbmQod2ViQW5pbWF0aW9uKTsKLSAgICBtX3RyYW5zZm9ybUFuaW1hdGlvbnMucmVt
b3ZlKGFuaW1hdGlvbk5hbWUpOwotICAgIG5vdGlmeUNoYW5nZSgpOwotfQotCiB2b2lkIFdlYkdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gbV9pbWFnZTsKQEAgLTQ3OSwxMCArNDMwLDYgQEAgdm9pZCBXZWJHcmFwaGlj
c0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIHVwZGF0
ZUNvbnRlbnRCdWZmZXJzKCk7CiAKICAgICBtX21vZGlmaWVkID0gZmFsc2U7Ci0gICAgaWYgKG1f
aGFzUGVuZGluZ0FuaW1hdGlvbnMpCi0gICAgICAgIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoV1RG
OjpjdXJyZW50VGltZSgpKTsKLSAgICBtX2xheWVySW5mby5hbmltYXRpb25zLmNsZWFyKCk7Ci0g
ICAgbV9oYXNQZW5kaW5nQW5pbWF0aW9ucyA9IGZhbHNlOwogfQogCiB2b2lkIFdlYkdyYXBoaWNz
TGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlUGFpbnRCZWdpbigpCkBAIC01NjksOCArNTE2LDYgQEAg
Ym9vbCBXZWJHcmFwaGljc0xheWVyOjpzaG91bGRVc2VUaWxlZEJhY2tpbmdTdG9yZSgpCiAKIElu
dFJlY3QgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdCgpCiB7
Ci0gICAgLy8gSWYgdGhpcyBsYXllciBpcyBwYXJ0IG9mIGFuIGFjdGl2ZSB0cmFuc2Zvcm0gYW5p
bWF0aW9uLCB0aGUgdmlzaWJsZSByZWN0IG1pZ2h0IGNoYW5nZSwKLSAgICAvLyBzbyB3ZSByYXRo
ZXIgcmVuZGVyIHRoZSB3aG9sZSBsYXllciB1bnRpbCBzb21lIGJldHRlciBvcHRpbWl6YXRpb24g
aXMgYXZhaWxhYmxlLgogICAgIGlmICghc2hvdWxkVXNlVGlsZWRCYWNraW5nU3RvcmUoKSkKICAg
ICAgICAgcmV0dXJuIHRpbGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KCk7CiAKQEAgLTY5OCw5
ICs2NDMsNiBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmluaXRGYWN0b3J5KCkKIAogYm9vbCBX
ZWJHcmFwaGljc0xheWVyOjpzZWxmT3JBbmNlc3RvckhhdmVOb25BZmZpbmVUcmFuc2Zvcm1zKCkK
IHsKLSAgICBpZiAoIW1fdHJhbnNmb3JtQW5pbWF0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCiAgICAgaWYgKCFtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaXNBZmZp
bmUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKaW5kZXgg
ODJlNzU3ODI3MGE4ODVhY2NkNzM3NTZhZGViY2FiYjM3YmJkNjAzYi4uZjAyYzNhOTRjNDI5MDAx
MmZmMzk3OGY1YWE0ZGQ3ZGVkZTY3MzViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKQEAgLTkx
LDkgKzkxLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wp
OwogICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3Qo
Y29uc3QgSW50UmVjdCYpOwotICAgIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYs
IGRvdWJsZSk7Ci0gICAgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmLCBkb3VibGUp
OwotICAgIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKik7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NM
YXllciopOwogICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciopOwpA
QCAtMTExLDcgKzEwOCw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzTW9kaWZpZWQoKSBjb25zdCB7
IHJldHVybiBtX21vZGlmaWVkOyB9CiAgICAgdm9pZCBkaWRTeW5jaHJvbml6ZSgpOwogICAgIElt
YWdlKiBpbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIG5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoZG91YmxlKTsKIAogICAgIEdyYXBoaWNzTGF5ZXIqIG1hc2tUYXJnZXQo
KSBjb25zdCB7IHJldHVybiBtX21hc2tUYXJnZXQ7IH0KICAgICB2b2lkIHNldE1hc2tUYXJnZXQo
R3JhcGhpY3NMYXllciogbGF5ZXIpIHsgbV9tYXNrVGFyZ2V0ID0gbGF5ZXI7IH0KQEAgLTE0Nywx
NCArMTQzLDEyIEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsK
ICAgICBMYXllclRyYW5zZm9ybSBtX2xheWVyVHJhbnNmb3JtOwogICAgIGJvb2wgbV9tb2RpZmll
ZCA6IDE7Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdBbmltYXRpb25zIDogMTsKICAgICBib29sIG1f
aW5VcGRhdGVNb2RlIDogMTsKICAgICBib29sIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJlY3Q6IDE7
CiAKICAgICB2b2lkIG5vdGlmeUNoYW5nZSgpOwogICAgIHZvaWQgZGlkQ2hhbmdlR2VvbWV0cnko
KTsKICAgICB2b2lkIGNyZWF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3RyYW5zZm9ybUFuaW1hdGlvbnM7CiAKICAgICBib29sIHNlbGZPckFuY2VzdG9ySGF2ZU5vbkFm
ZmluZVRyYW5zZm9ybXMoKTsKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ1N0b3JlKCk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>