<?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>131560</bug_id>
          
          <creation_ts>2014-04-11 13:41:12 -0700</creation_ts>
          <short_desc>Support document-relative and custom-frame page overlays</short_desc>
          <delta_ts>2014-04-11 14:50:12 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>131510</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>adele</cc>
    
    <cc>alice.barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1000006</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-11 13:41:12 -0700</bug_when>
    <thetext>Most page overlays are really document overlays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000007</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-04-11 13:41:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/16595556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000027</commentid>
    <comment_count>2</comment_count>
      <attachid>229160</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-11 14:08:36 -0700</bug_when>
    <thetext>Created attachment 229160
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000030</commentid>
    <comment_count>3</comment_count>
      <attachid>229161</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-11 14:10:36 -0700</bug_when>
    <thetext>Created attachment 229161
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000031</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-11 14:11:32 -0700</bug_when>
    <thetext>Attachment 229161 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderLayerCompositor.h:307:  The parameter name &quot;documentOverlayRootLayer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/WebProcess/WebPage/PageOverlay.h:95:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000035</commentid>
    <comment_count>5</comment_count>
      <attachid>229161</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-11 14:17:47 -0700</bug_when>
    <thetext>Comment on attachment 229161
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:104
&gt; +    if (overlay-&gt;overlayType() == PageOverlay::OverlayType::View) {
&gt; +        if (Page* page = m_webPage-&gt;corePage()) {
&gt; +            if (ScrollingCoordinator* scrollingCoordinator = page-&gt;scrollingCoordinator())
&gt; +                scrollingCoordinator-&gt;setForceSynchronousScrollLayerPositionUpdates(true);
&gt; +        }

Why not just call updateForceSynchronousScrollLayerPositionUpdates()?

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.h:38
&gt; +namespace WebCore {
&gt; +class Frame;
&gt; +}

Remove. You just use WebCore::Frame below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000039</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-11 14:42:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/167152</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229160</attachid>
            <date>2014-04-11 14:08:36 -0700</date>
            <delta_ts>2014-04-11 14:10:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>smalloverlay.diff</filename>
            <type>text/plain</type>
            <size>32772</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MTM0ZDcwLi4wMGU0Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTQtMDQtMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU3VwcG9ydCBkb2N1bWVudC1yZWxhdGl2ZSBhbmQgY3VzdG9tLWZyYW1lIHBhZ2Ug
b3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTU2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY1OTU1NTY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5n
TGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0
RG9jdW1lbnRPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmg6CisgICAgICAgIEFkZCB0aGUgY29uY2VwdCBvZiBhIGRvY3VtZW50IG92
ZXJsYXkgbGF5ZXIsIHdoaWNoIGlzIHBsdWdnZWQgaW4gYXMgdGhlCisgICAgICAgIGxhc3QgY2hp
bGQgb2YgdGhlIHJvb3QgY29udGVudCBsYXllci4gRXhwb3NlIGl0IHRvIFdlYktpdDIuCisKIDIw
MTQtMDQtMTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgIlN5c3RlbSBGb250IiBmcm9tIGNoYXJhY3RlciB3aWR0aCBjYWxjdWxhdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZjc2MzYxMS4uZWRiOTY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTg2OCw2ICs4NjgsNyBAQCBfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMU5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVL
ZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJDb3JlMjFSZW1v
dGVDb21tYW5kTGlzdGVuZXI2Y3JlYXRlRVJOU18yN1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVu
dEUKK19fWk43V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMjdzZXREb2N1bWVudE92ZXJs
YXlSb290TGF5ZXJFUE5TXzEzR3JhcGhpY3NMYXllckUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VM
b2FkU2NoZWR1bGVyMjBzZXJ2ZVBlbmRpbmdSZXF1ZXN0c0VOU18yMFJlc291cmNlTG9hZFByaW9y
aXR5RQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1Jl
cXVlc3RzRVBOUzBfMTVIb3N0SW5mb3JtYXRpb25FTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUK
IF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjFyZXN1bWVQZW5kaW5nUmVxdWVz
dHNFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAppbmRleCBhZWQzOGQyLi5iMjc4YWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjU1LDYgKzI1NSw3IEBA
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcm
IHJlbmRlclZpZXcpCiAgICAgLCBtX2lzVHJhY2tpbmdSZXBhaW50cyhmYWxzZSkKICAgICAsIG1f
bGF5ZXJzV2l0aFRpbGVkQmFja2luZ0NvdW50KDApCiAgICAgLCBtX3Jvb3RMYXllckF0dGFjaG1l
bnQoUm9vdExheWVyVW5hdHRhY2hlZCkKKyAgICAsIG1fZG9jdW1lbnRPdmVybGF5Um9vdExheWVy
KG51bGxwdHIpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcih0aGlzLCAmUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpsYXllckZsdXNoVGltZXJGaXJlZCkKICAgICAsIG1fbGF5ZXJGbHVzaFRocm90dGxp
bmdFbmFibGVkKHBhZ2UoKSAmJiBwYWdlKCktPnByb2dyZXNzKCkuaXNNYWluTG9hZFByb2dyZXNz
aW5nKCkpCiAgICAgLCBtX2xheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlEaXNhYmxlZEZv
ckludGVyYWN0aW9uKGZhbHNlKQpAQCAtMTQ2MCw2ICsxNDYxLDkgQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciYgbGF5
ZXIsIFZlY3QKIAogICAgICAgICBjaGlsZExheWVyc09mRW5jbG9zaW5nTGF5ZXIuYXBwZW5kKGxh
eWVyQmFja2luZy0+Y2hpbGRGb3JTdXBlcmxheWVycygpKTsKICAgICB9CisKKyAgICBpZiAobV9k
b2N1bWVudE92ZXJsYXlSb290TGF5ZXIpCisgICAgICAgIGNoaWxkTGF5ZXJzT2ZFbmNsb3NpbmdM
YXllci5hcHBlbmQobV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXIpOwogfQogCiB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZFJlZ2lvbkNvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24sIFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxk
TGlzdCwgaW50IGRlcHRoKQpAQCAtMzgwNCw0ICszODA4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpwYWludFJlbGF0ZWRNaWxlc3RvbmVzVGltZXJGaXJlZChUaW1lcjxSZW5kZXJM
YXllckNvCiAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmZpcmVQYWludFJlbGF0ZWRNaWxl
c3RvbmVzSWZOZWVkZWQoKTsKIH0KIAordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldERv
Y3VtZW50T3ZlcmxheVJvb3RMYXllcihHcmFwaGljc0xheWVyKiBkb2N1bWVudE92ZXJsYXlSb290
TGF5ZXIpCit7CisgICAgaWYgKG1fZG9jdW1lbnRPdmVybGF5Um9vdExheWVyKQorICAgICAgICBt
X2RvY3VtZW50T3ZlcmxheVJvb3RMYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAgIG1fZG9j
dW1lbnRPdmVybGF5Um9vdExheWVyID0gZG9jdW1lbnRPdmVybGF5Um9vdExheWVyOworICAgIHNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgKaW5kZXggMDM5NTJiYy4uZmZjMDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMzAyLDYgKzMwMiw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwog
ICAgIENvbG9yIHJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yOyB9CiAKKyAgICB2b2lkIHNldERvY3VtZW50T3Zl
cmxheVJvb3RMYXllcihHcmFwaGljc0xheWVyKiBkb2N1bWVudE92ZXJsYXlSb290TGF5ZXIpOwor
CiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAKQEAgLTUwNCw2ICs1MDYsOCBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBtX2xheWVyRm9yRm9v
dGVyOwogI2VuZGlmCiAKKyAgICBHcmFwaGljc0xheWVyKiBtX2RvY3VtZW50T3ZlcmxheVJvb3RM
YXllcjsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyVXBkYXRlcj4gbV9sYXll
clVwZGF0ZXI7IC8vIFVwZGF0ZXMgdGlsZWQgbGF5ZXIgdmlzaWJsZSBhcmVhIHBlcmlvZGljYWxs
eSB3aGlsZSBhbmltYXRpb25zIGFyZSBydW5uaW5nLgogCiAgICAgVGltZXI8UmVuZGVyTGF5ZXJD
b21wb3NpdG9yPiBtX2xheWVyRmx1c2hUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MGY3ZDI1Li4yYmY0
NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTQtMDQtMTEgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBkb2N1bWVudC1y
ZWxhdGl2ZSBhbmQgY3VzdG9tLWZyYW1lIHBhZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTU2MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTY1OTU1NTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVNj
cm9sbE9mZnNldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjptYWluRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hh
bmdlU2Nyb2xsT2Zmc2V0Rm9yRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIExldCB0aGUgUGFnZU92ZXJsYXlDb250cm9sbGVyIGtub3cgKndo
aWNoKiBmcmFtZSBzY3JvbGxlZCwgaW5zdGVhZCBvZiAiYW55IGZyYW1lIi4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwpOgorICAgICAgICBG
YWN0b3Igb3V0IHNoYXJlZCBjb2RlLgorCisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVy
Ojp3aWxsTW92ZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpk
cmF3UmVjdCk6CisgICAgICAgIFdlIGNhbiB1c2UgY2xlYXJSZWN0KCkgaW5zdGVhZCBvZiBhIHRy
YW5zcGFyZW5jeSBsYXllciBhbmQgZmlsbFJlY3QoKS4KKyAgICAgICAgSSd2ZSBsb29rZWQgdGhy
b3VnaCBhbGwgdGhlIG90aGVyIG92ZXJsYXkgY2xpZW50cyBJIGtub3cgb2YgYW5kIG5vbmUgb2Yg
dGhlbQorICAgICAgICBkZXBlbmQgb24gaGF2aW5nIGEgdHJhbnNwYXJlbmN5IGxheWVyIGF0IHRo
ZSBvdmVybGF5IGxldmVsLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVy
bGF5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VPdmVybGF5Ojpib3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6ZnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6c2V0RnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlT3ZlcmxheTo6ZHJhd1JlY3QpOgorICAgICAgICBBZGQgT3ZlcmxheVR5cGUsIHdo
aWNoIGFsbG93cyBjcmVhdGlvbiBvZiBEb2N1bWVudCBvciBWaWV3IHJlbGF0aXZlIG92ZXJsYXlz
LgorICAgICAgICBBbGwgb3ZlcmxheXMgdXAgdG8gdGhpcyBwb2ludCBhcmUgVmlldyByZWxhdGl2
ZSwgc28gd2UgZGVmYXVsdCB0byB0aGF0LgorICAgICAgICBEb2N1bWVudC1yZWxhdGl2ZSBvdmVy
bGF5cyBzY3JvbGwgd2l0aCB0aGUgcGFnZSBpbnN0ZWFkIG9mIHJlcGFpbnRpbmcgYXMKKyAgICAg
ICAgdGhlIHBhZ2Ugc2Nyb2xscy4gVGhleSBjYW4gYWxzbyBiZSBnaXZlbiBhbiBleHBsaWNpdCBm
cmFtZSwgYWxsb3dpbmcgdGhlbQorICAgICAgICB0byBiZSBzbWFsbGVyIHRoYW4gdGhlIGVudGly
ZSBkb2N1bWVudC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5o
OgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6b3ZlcmxheVR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlT3ZlcmxheTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVy
bGF5OjpjbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheUNvbnRy
b2xsZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheUNvbnRyb2xs
ZXI6Omluc3RhbGxQYWdlT3ZlcmxheSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Q29u
dHJvbGxlcjo6dW5pbnN0YWxsUGFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OnVwZGF0ZUZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9u
VXBkYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZU92ZXJsYXlHZW9tZXRyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6c2V0UGFnZU92ZXJsYXlOZWVkc0Rp
c3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5n
ZVZpZXdTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRD
aGFuZ2VEb2N1bWVudFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheUNvbnRyb2xs
ZXI6OmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92
ZXJsYXlDb250cm9sbGVyOjpkaWRTY3JvbGxGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VP
dmVybGF5Q29udHJvbGxlcjo6Zmx1c2hQYWdlT3ZlcmxheUxheWVycyk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlT3ZlcmxheUZyYW1lKToKKyAgICAg
ICAgS2VlcCB0d28gb3ZlcmxheSByb290IGxheWVycyAtIG9uZSBmb3Igdmlldy1yZWxhdGl2ZQor
ICAgICAgICBhbmQgb25lIGZvciBkb2N1bWVudC1yZWxhdGl2ZSBvdmVybGF5cy4KKyAgICAgICAg
RG9uJ3QgZm9yY2Ugc3luY2hyb25vdXMgc2Nyb2xsaW5nIGlmIHdlIG9ubHkgaGF2ZSBkb2N1bWVu
dC1yZWxhdGl2ZSBvdmVybGF5cy4KKyAgICAgICAgVXBkYXRlIHRoZSBvdmVybGF5J3MgcG9zaXRp
b24gYXMgd2VsbCBhcyBpdHMgc2l6ZSB3aGVuZXZlciBuZWNlc3NhcnkuCisgICAgICAgIFVwZGF0
ZSBkb2N1bWVudC1yZWxhdGl2ZSBvdmVybGF5IGdlb21ldHJ5IHdoZW4gdGhlIGRvY3VtZW50IHNp
emUgY2hhbmdlcy4KKyAgICAgICAgT25seSBleHBsaWNpdGx5IGZsdXNoIHZpZXctcmVsYXRpdmUg
b3ZlcmxheXM7IGRvY3VtZW50LXJlbGF0aXZlIG9uZXMKKyAgICAgICAgYXJlIHBsdWdnZWQgaW50
byB0aGUgV2ViQ29yZSBsYXllciB0cmVlIGFuZCBmbHVzaGVkIGFsb25nIHdpdGggdGhlIHBhZ2Uu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmg6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZG9jdW1lbnRPdmVybGF5
Um9vdExheWVyKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjp2aWV3
T3ZlcmxheVJvb3RMYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjptYWluRnJhbWVDb250ZW50U2l6
ZUNoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjptYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIpOgorICAgICAgICBMZXQgdGhlIFBhZ2VPdmVybGF5IGNvbnRyb2xsZXIga25vdyB3aGVuIHRo
ZSBkb2N1bWVudCBzaXplIGNoYW5nZXMuCisgICAgICAgIFdoZW4gd2Ugc2V0IHVwIGNvbXBvc2l0
aW5nLCBwdXNoIHRoZSBkb2N1bWVudCBvdmVybGF5IHJvb3QgbGF5ZXIKKyAgICAgICAgZG93biBp
bnRvIFdlYkNvcmUuCisKIDIwMTQtMDQtMTAgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFy
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgYnVpbGQgZml4IGFmdGVyIHIx
NjcwNzQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGJjY2ZhZTkuLjMx
NWRlNWUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE1NzksMTcg
KzE1NzksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VTY3JvbGxPZmZz
ZXQoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+
ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yQW55RnJhbWUoKTsKLQotICAgIGlmICghbV9mcmFtZS0+
aXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgdGhpcyBpcyBjYWxs
ZWQgd2hlbiB0ZWFyaW5nIGRvd24gYSBGcmFtZVZpZXcsIHRoZSBXZWJDb3JlOjpGcmFtZSdzCi0g
ICAgLy8gY3VycmVudCBGcmFtZVZpZXcgd2lsbCBiZSBudWxsLgotICAgIGlmICghbV9mcmFtZS0+
Y29yZUZyYW1lKCktPnZpZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd2ViUGFnZS0+dXBk
YXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOworICAgIHdlYlBhZ2UtPmRpZENoYW5n
ZVNjcm9sbE9mZnNldEZvckZyYW1lKG1fZnJhbWUtPmNvcmVGcmFtZSgpKTsKIH0KIAogYm9vbCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcAppbmRleCBiMDZjNjkwLi5jNmU2ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTE2Miw5ICsxNjIs
OCBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9v
bCBmb3VuZCwgY29uc3QgU3RyaW5nJiBzdHJpbgogICAgICAgICAgICAgUmVmUHRyPFBhZ2VPdmVy
bGF5PiBmaW5kUGFnZU92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKHRoaXMpOwogICAgICAg
ICAgICAgbV9maW5kUGFnZU92ZXJsYXkgPSBmaW5kUGFnZU92ZXJsYXkuZ2V0KCk7CiAgICAgICAg
ICAgICBtX3dlYlBhZ2UtPmluc3RhbGxQYWdlT3ZlcmxheShmaW5kUGFnZU92ZXJsYXkucmVsZWFz
ZSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkZhZGUpOwotICAgICAgICAgICAgbV9maW5kUGFn
ZU92ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IG1fZmluZFBhZ2VPdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgfQorICAgICAg
ICBtX2ZpbmRQYWdlT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQogfQogCkBAIC0z
OTQsNyArMzkzLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG92ZXJsYXlCYWNrZ3JvdW5kR3JlZW4g
PSAwLjE7CiBzdGF0aWMgY29uc3QgZmxvYXQgb3ZlcmxheUJhY2tncm91bmRCbHVlID0gMC4xOwog
c3RhdGljIGNvbnN0IGZsb2F0IG92ZXJsYXlCYWNrZ3JvdW5kQWxwaGEgPSAwLjI1OwogCi12b2lk
IEZpbmRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxheSogLypwYWdlT3ZlcmxheSovLCBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQordm9pZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkqLCBHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAg
IENvbG9yIG92ZXJsYXlCYWNrZ3JvdW5kQ29sb3Iob3ZlcmxheUJhY2tncm91bmRSZWQsIG92ZXJs
YXlCYWNrZ3JvdW5kR3JlZW4sIG92ZXJsYXlCYWNrZ3JvdW5kQmx1ZSwgb3ZlcmxheUJhY2tncm91
bmRBbHBoYSk7CiAKQEAgLTQxMywxNiArNDEyLDEzIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmRy
YXdSZWN0KFBhZ2VPdmVybGF5KiAvKnBhZ2VPdmVybGF5Ki8sIEdyYXBoaWNzQ29udGV4dCYgZ3Jh
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgICAgIEludFJlY3Qgd2hpdGVGcmFtZVJlY3QgPSByZWN0c1tpXTsKICAgICAgICAgICAg
IHdoaXRlRnJhbWVSZWN0LmluZmxhdGUoMSk7Ci0KICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5maWxsUmVjdCh3aGl0ZUZyYW1lUmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBncmFw
aGljc0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZVNS
R0IpOwotCiAgICAgLy8gQ2xlYXIgb3V0IHRoZSBob2xlcy4KICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKQotICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJl
Y3QocmVjdHNbaV0pOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJSZWN0KHJlY3RzW2ld
KTsKIAogICAgIGlmICghbV9pc1Nob3dpbmdGaW5kSW5kaWNhdG9yKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJs
YXkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNw
cAppbmRleCAxOWRlYTVlLi5lODQ4MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHN0YXRpYyBjb25zdCBkb3VibGUgZmFkZUFuaW1hdGlvbkR1cmF0aW9uID0g
MC4yOwogc3RhdGljIGNvbnN0IGRvdWJsZSBmYWRlQW5pbWF0aW9uRnJhbWVSYXRlID0gMzA7CiAK
LVBhc3NSZWZQdHI8UGFnZU92ZXJsYXk+IFBhZ2VPdmVybGF5OjpjcmVhdGUoQ2xpZW50KiBjbGll
bnQpCitQYXNzUmVmUHRyPFBhZ2VPdmVybGF5PiBQYWdlT3ZlcmxheTo6Y3JlYXRlKENsaWVudCog
Y2xpZW50LCBPdmVybGF5VHlwZSBvdmVybGF5VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBhZ2VPdmVybGF5KGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFnZU92
ZXJsYXkoY2xpZW50LCBvdmVybGF5VHlwZSkpOwogfQogCi1QYWdlT3ZlcmxheTo6UGFnZU92ZXJs
YXkoQ2xpZW50KiBjbGllbnQpCitQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXkoQ2xpZW50KiBjbGll
bnQsIE92ZXJsYXlUeXBlIG92ZXJsYXlUeXBlKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAg
ICwgbV93ZWJQYWdlKDApCiAgICAgLCBtX2ZhZGVBbmltYXRpb25UaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZQYWdlT3ZlcmxheTo6ZmFkZUFuaW1hdGlvblRpbWVyRmlyZWQpCkBAIC01NSw2
ICs1NSw3IEBAIFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheShDbGllbnQqIGNsaWVudCkKICAgICAs
IG1fZmFkZUFuaW1hdGlvbkR1cmF0aW9uKGZhZGVBbmltYXRpb25EdXJhdGlvbikKICAgICAsIG1f
ZmFkZUFuaW1hdGlvblR5cGUoTm9BbmltYXRpb24pCiAgICAgLCBtX2ZyYWN0aW9uRmFkZWRJbigx
LjApCisgICAgLCBtX292ZXJsYXlUeXBlKG92ZXJsYXlUeXBlKQogewogfQogCkBAIC02NCwxOCAr
NjUsNDMgQEAgUGFnZU92ZXJsYXk6On5QYWdlT3ZlcmxheSgpCiAKIEludFJlY3QgUGFnZU92ZXJs
YXk6OmJvdW5kcygpIGNvbnN0CiB7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3dlYlBh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKTsKKyAgICBpZiAoIW1fb3ZlcnJpZGVG
cmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIG1fb3Zl
cnJpZGVGcmFtZS5zaXplKCkpOwogCi0gICAgaW50IHdpZHRoID0gZnJhbWVWaWV3LT53aWR0aCgp
OwotICAgIGludCBoZWlnaHQgPSBmcmFtZVZpZXctPmhlaWdodCgpOworICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCk7CiAKLSAgICBpZiAoIVNjcm9s
bGJhclRoZW1lOjp0aGVtZSgpLT51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSkgewotICAgICAgICBp
ZiAoZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpKQotICAgICAgICAgICAgd2lkdGggLT0g
ZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpLT53aWR0aCgpOwotICAgICAgICBpZiAoZnJh
bWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpCi0gICAgICAgICAgICBoZWlnaHQgLT0gZnJh
bWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCktPmhlaWdodCgpOwotICAgIH0gICAgCi0gICAg
cmV0dXJuIEludFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgICAgc3dpdGNoIChtX292ZXJs
YXlUeXBlKSB7CisgICAgY2FzZSBPdmVybGF5VHlwZTo6VmlldzogeworICAgICAgICBpbnQgd2lk
dGggPSBmcmFtZVZpZXctPndpZHRoKCk7CisgICAgICAgIGludCBoZWlnaHQgPSBmcmFtZVZpZXct
PmhlaWdodCgpOworCisgICAgICAgIGlmICghU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVzZXNP
dmVybGF5U2Nyb2xsYmFycygpKSB7CisgICAgICAgICAgICBpZiAoZnJhbWVWaWV3LT52ZXJ0aWNh
bFNjcm9sbGJhcigpKQorICAgICAgICAgICAgICAgIHdpZHRoIC09IGZyYW1lVmlldy0+dmVydGlj
YWxTY3JvbGxiYXIoKS0+d2lkdGgoKTsKKyAgICAgICAgICAgIGlmIChmcmFtZVZpZXctPmhvcml6
b250YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgICAgICBoZWlnaHQgLT0gZnJhbWVWaWV3LT5o
b3Jpem9udGFsU2Nyb2xsYmFyKCktPmhlaWdodCgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBJbnRSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KKyAgICBjYXNlIE92ZXJsYXlU
eXBlOjpEb2N1bWVudDoKKyAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQoKSwgZnJhbWVW
aWV3LT5jb250ZW50c1NpemUoKSk7CisgICAgfTsKK30KKworSW50UmVjdCBQYWdlT3ZlcmxheTo6
ZnJhbWUoKSBjb25zdAoreworICAgIGlmICghbV9vdmVycmlkZUZyYW1lLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVGcmFtZTsKKworICAgIHJldHVybiBib3VuZHMoKTsKK30K
Kwordm9pZCBQYWdlT3ZlcmxheTo6c2V0RnJhbWUoSW50UmVjdCBmcmFtZSkKK3sKKyAgICBtX292
ZXJyaWRlRnJhbWUgPSBmcmFtZTsKKworICAgIGlmIChtX3dlYlBhZ2UpCisgICAgICAgIG1fd2Vi
UGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlT3ZlcmxheUZyYW1lKHRoaXMp
OwogfQogCiB2b2lkIFBhZ2VPdmVybGF5OjpzZXRQYWdlKFdlYlBhZ2UqIHdlYlBhZ2UpCkBAIC0x
MDgsMTIgKzEzNCw3IEBAIHZvaWQgUGFnZU92ZXJsYXk6OmRyYXdSZWN0KEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0CiAgICAgICAgIHJldHVybjsK
IAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRl
eHQpOwotICAgIGdyYXBoaWNzQ29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwotICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0K
ICAgICBtX2NsaWVudC0+ZHJhd1JlY3QodGhpcywgZ3JhcGhpY3NDb250ZXh0LCBwYWludFJlY3Qp
OwotCi0gICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAgICAg
CiBib29sIFBhZ2VPdmVybGF5Ojptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNl
RXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFn
ZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3Zlcmxh
eS5oCmluZGV4IDYxZGJhOGIuLmNmMDNkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCkBAIC0yOCwxMyArMjgsMTIgQEAKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIldLQmFzZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
SW50UmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKLSAgICBjbGFzcyBJbnRQb2ludDsKLSAgICBjbGFzcyBJbnRSZWN0OworY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU5LDcgKzU4LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCBXS0FycmF5UmVmIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmli
dXRlTmFtZXMoUGFnZU92ZXJsYXkqLCBib29sIC8qIHBhcmFtZXRlcml6ZWROYW1lcyAqLykgeyBy
ZXR1cm4gMDsgfQogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQYWdlT3ZlcmxheT4g
Y3JlYXRlKENsaWVudCopOworICAgIGVudW0gY2xhc3MgT3ZlcmxheVR5cGUgeworICAgICAgICBW
aWV3LCAvLyBGaXhlZCB0byB0aGUgdmlldyBzaXplOyBkb2VzIG5vdCBzY2FsZSBvciBzY3JvbGwg
d2l0aCB0aGUgZG9jdW1lbnQsIHJlcGFpbnRzIG9uIHNjcm9sbC4KKyAgICAgICAgRG9jdW1lbnQs
IC8vIFNjYWxlcyBhbmQgc2Nyb2xscyB3aXRoIHRoZSBkb2N1bWVudC4KKyAgICB9OworCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGFnZU92ZXJsYXk+IGNyZWF0ZShDbGllbnQqLCBPdmVybGF5VHlw
ZSA9IE92ZXJsYXlUeXBlOjpWaWV3KTsKICAgICB2aXJ0dWFsIH5QYWdlT3ZlcmxheSgpOwogCiAg
ICAgdm9pZCBzZXRQYWdlKFdlYlBhZ2UqKTsKQEAgLTgxLDEzICs4NSwyMCBAQCBwdWJsaWM6CiAg
ICAgQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgZW51
bSBjbGFzcyBGYWRlTW9kZSB7IERvTm90RmFkZSwgRmFkZSB9OworCisgICAgT3ZlcmxheVR5cGUg
b3ZlcmxheVR5cGUoKSB7IHJldHVybiBtX292ZXJsYXlUeXBlOyB9CisKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IGJvdW5kcygpIGNvbnN0OworICAgIFdlYkNvcmU6OkludFJlY3QgZnJhbWUoKSBjb25z
dDsKKyAgICB2b2lkIHNldEZyYW1lKFdlYkNvcmU6OkludFJlY3QpOworCisgICAgLy9iYWQKKyAg
ICBXZWJQYWdlKiB3ZWJQYWdlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQYWdlOyB9CiAgICAgCiBw
cm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgUGFnZU92ZXJsYXkoQ2xpZW50Kik7CisgICAgZXhwbGlj
aXQgUGFnZU92ZXJsYXkoQ2xpZW50KiwgT3ZlcmxheVR5cGUpOwogCiBwcml2YXRlOgotICAgIFdl
YkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3Q7Ci0KICAgICB2b2lkIHN0YXJ0RmFkZUFuaW1h
dGlvbigpOwogICAgIHZvaWQgZmFkZUFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIApAQCAtMTA2LDYg
KzExNyw5IEBAIHByaXZhdGU6CiAKICAgICBGYWRlQW5pbWF0aW9uVHlwZSBtX2ZhZGVBbmltYXRp
b25UeXBlOwogICAgIGZsb2F0IG1fZnJhY3Rpb25GYWRlZEluOworCisgICAgT3ZlcmxheVR5cGUg
bV9vdmVybGF5VHlwZTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fb3ZlcnJpZGVGcmFtZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAppbmRleCA3NmIy
NGIyLi42MzFmODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtMjksOSArMjksMTEgQEAK
ICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9N
YWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGlsZWRCYWNr
aW5nLmg+CkBAIC00NywxNyArNDksMjEgQEAgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpQYWdlT3Zl
cmxheUNvbnRyb2xsZXIoV2ViUGFnZSogd2ViUGFnZSkKIAogdm9pZCBQYWdlT3ZlcmxheUNvbnRy
b2xsZXI6OmluaXRpYWxpemUoKQogewotICAgIEFTU0VSVCghbV9yb290TGF5ZXIpOworICAgIEFT
U0VSVCghbV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXIpOworICAgIEFTU0VSVCghbV92aWV3T3Zl
cmxheVJvb3RMYXllcik7CiAKLSAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0
ZShtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksIHRoaXMp
OworICAgIG1fZG9jdW1lbnRPdmVybGF5Um9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRl
KG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwgdGhpcyk7
CisgICAgbV92aWV3T3ZlcmxheVJvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShtX3dl
YlBhZ2UtPmRyYXdpbmdBcmVhKCktPmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksIHRoaXMpOwogI2lm
bmRlZiBOREVCVUcKLSAgICBtX3Jvb3RMYXllci0+c2V0TmFtZSgiUGFnZSBPdmVybGF5IGNvbnRh
aW5lciIpOworICAgIG1fZG9jdW1lbnRPdmVybGF5Um9vdExheWVyLT5zZXROYW1lKCJQYWdlIE92
ZXJsYXkgY29udGFpbmVyIChkb2N1bWVudC1yZWxhdGl2ZSkiKTsKKyAgICBtX3ZpZXdPdmVybGF5
Um9vdExheWVyLT5zZXROYW1lKCJQYWdlIE92ZXJsYXkgY29udGFpbmVyICh2aWV3LXJlbGF0aXZl
KSIpOwogI2VuZGlmCiB9CiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjppbnN0YWxsUGFn
ZU92ZXJsYXkoUGFzc1JlZlB0cjxQYWdlT3ZlcmxheT4gcGFnZU92ZXJsYXksIFBhZ2VPdmVybGF5
OjpGYWRlTW9kZSBmYWRlTW9kZSkKIHsKLSAgICBBU1NFUlQobV9yb290TGF5ZXIpOworICAgIEFT
U0VSVChtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllcik7CisgICAgQVNTRVJUKG1fdmlld092ZXJs
YXlSb290TGF5ZXIpOwogCiAgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBvdmVybGF5ID0gcGFnZU92
ZXJsYXk7CiAKQEAgLTcxLDE4ICs3NywzMSBAQCB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6
aW5zdGFsbFBhZ2VPdmVybGF5KFBhc3NSZWZQdHI8UGFnZU92ZXJsYXk+IHBhZ2VPdmVybAogICAg
ICAgICBvdmVybGF5LT5zdGFydEZhZGVJbkFuaW1hdGlvbigpOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzTGF5ZXI+IGxheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fd2ViUGFn
ZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwgdGhpcyk7CisgICAgbGF5
ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKKyAgICBsYXllci0+c2V0UG9zaXRp
b24ob3ZlcmxheS0+ZnJhbWUoKS5sb2NhdGlvbigpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgbGF5
ZXItPnNldE5hbWUoIlBhZ2UgT3ZlcmxheSBjb250ZW50Iik7CiAjZW5kaWYKIAogICAgIHVwZGF0
ZVNldHRpbmdzRm9yTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG1fcm9vdExheWVyLT5hZGRDaGls
ZChsYXllci5nZXQoKSk7CisKKyAgICBzd2l0Y2ggKG92ZXJsYXktPm92ZXJsYXlUeXBlKCkpIHsK
KyAgICBjYXNlIFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6VmlldzoKKyAgICAgICAgbV92aWV3
T3ZlcmxheVJvb3RMYXllci0+YWRkQ2hpbGQobGF5ZXIuZ2V0KCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQ6CisgICAgICAgIG1f
ZG9jdW1lbnRPdmVybGF5Um9vdExheWVyLT5hZGRDaGlsZChsYXllci5nZXQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIG1fb3ZlcmxheUdyYXBoaWNzTGF5ZXJzLnNldChvdmVybGF5
LmdldCgpLCBzdGQ6Om1vdmUobGF5ZXIpKTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkpIHsKLSAgICAgICAg
aWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+
c2V0Rm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKHRydWUpOworICAg
IGlmIChvdmVybGF5LT5vdmVybGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6
VmlldykgeworICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKSkg
eworICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGlu
YXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCisgICAgICAgICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnNldEZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9u
VXBkYXRlcyh0cnVlKTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogfQpAQCAtMTAyLDE3ICsx
MjEsMzYgQEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnVuaW5zdGFsbFBhZ2VPdmVybGF5
KFBhZ2VPdmVybGF5KiBvdmVybGF5LCBQYWdlT3ZlcmwKICAgICBBU1NFUlQob3ZlcmxheUluZGV4
ICE9IG5vdEZvdW5kKTsKICAgICBtX3BhZ2VPdmVybGF5cy5yZW1vdmUob3ZlcmxheUluZGV4KTsK
IAotICAgIGlmICghbV9wYWdlT3ZlcmxheXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Cisg
ICAgdXBkYXRlRm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKCk7Cit9
CiAKK3ZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVGb3JjZVN5bmNocm9ub3VzU2Ny
b2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMoKQorewogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CisgICAgYm9vbCBmb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMgPSBm
YWxzZTsKKworICAgIGZvciAoYXV0byYgb3ZlcmxheSA6IG1fcGFnZU92ZXJsYXlzKSB7CisgICAg
ICAgIGlmIChvdmVybGF5LT5vdmVybGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlw
ZTo6VmlldykKKyAgICAgICAgICAgIGZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9u
VXBkYXRlcyA9IHRydWU7CisgICAgfQorCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3dlYlBhZ2Ut
PmNvcmVQYWdlKCkpIHsKICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxp
bmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Rm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9z
aXRpb25VcGRhdGVzKGZhbHNlKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5z
ZXRGb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMoZm9yY2VTeW5jaHJv
bm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKTsKICAgICB9CiAjZW5kaWYKIH0KIAorc3Rh
dGljIHZvaWQgdXBkYXRlT3ZlcmxheUdlb21ldHJ5KFBhZ2VPdmVybGF5KiBvdmVybGF5LCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyKQoreworICAgIGlmICghZ3JhcGhpY3NMYXllci0+ZHJh
d3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdyYXBoaWNzTGF5ZXItPnNldFBv
c2l0aW9uKG92ZXJsYXktPmZyYW1lKCkubG9jYXRpb24oKSk7CisgICAgZ3JhcGhpY3NMYXllci0+
c2V0U2l6ZShvdmVybGF5LT5mcmFtZSgpLnNpemUoKSk7CisgICAgZ3JhcGhpY3NMYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7Cit9CisKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpzZXRQYWdl
T3ZlcmxheU5lZWRzRGlzcGxheShQYWdlT3ZlcmxheSogb3ZlcmxheSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIg
PSBtX292ZXJsYXlHcmFwaGljc0xheWVycy5nZXQob3ZlcmxheSk7CkBAIC0xMjEsOCArMTU5LDkg
QEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5
KFBhZ2VPdmVybGF5KiBvdmVybGF5LCBjb24KIAogICAgIGlmICghZ3JhcGhpY3NMYXllci0+ZHJh
d3NDb250ZW50KCkpIHsKICAgICAgICAgZ3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOwotICAgICAgICBncmFwaGljc0xheWVyLT5zZXRTaXplKG1fd2ViUGFnZS0+c2l6ZSgpKTsK
KyAgICAgICAgdXBkYXRlT3ZlcmxheUdlb21ldHJ5KG92ZXJsYXksIGdyYXBoaWNzTGF5ZXIpOwog
ICAgIH0KKwogICAgIGdyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChkaXJ0eVJl
Y3QpOwogfQogCkBAIC0xNDcsMTEgKzE4NiwxNyBAQCB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxl
cjo6Y2xlYXJQYWdlT3ZlcmxheShQYWdlT3ZlcmxheSogb3ZlcmxheSkKIAogdm9pZCBQYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdTaXplKCkKIHsKLSAgICBmb3IgKGF1dG8mIGdy
YXBoaWNzTGF5ZXIgOiBtX292ZXJsYXlHcmFwaGljc0xheWVycy52YWx1ZXMoKSkgewotICAgICAg
ICBpZiAoIWdyYXBoaWNzTGF5ZXItPmRyYXdzQ29udGVudCgpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGdyYXBoaWNzTGF5ZXItPnNldFNpemUobV93ZWJQYWdlLT5zaXplKCkpOwot
ICAgICAgICBncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBmb3IgKGF1dG8m
IG92ZXJsYXlBbmRMYXllciA6IG1fb3ZlcmxheUdyYXBoaWNzTGF5ZXJzKSB7CisgICAgICAgIGlm
IChvdmVybGF5QW5kTGF5ZXIua2V5LT5vdmVybGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVy
bGF5VHlwZTo6VmlldykKKyAgICAgICAgICAgIHVwZGF0ZU92ZXJsYXlHZW9tZXRyeShvdmVybGF5
QW5kTGF5ZXIua2V5LCBvdmVybGF5QW5kTGF5ZXIudmFsdWUuZ2V0KCkpOworICAgIH0KK30KKwor
dm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZURvY3VtZW50U2l6ZSgpCit7Cisg
ICAgZm9yIChhdXRvJiBvdmVybGF5QW5kTGF5ZXIgOiBtX292ZXJsYXlHcmFwaGljc0xheWVycykg
eworICAgICAgICBpZiAob3ZlcmxheUFuZExheWVyLmtleS0+b3ZlcmxheVR5cGUoKSA9PSBQYWdl
T3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KQorICAgICAgICAgICAgdXBkYXRlT3Zlcmxh
eUdlb21ldHJ5KG92ZXJsYXlBbmRMYXllci5rZXksIG92ZXJsYXlBbmRMYXllci52YWx1ZS5nZXQo
KSk7CiAgICAgfQogfQogCkBAIC0xNjMsOCArMjA4LDExIEBAIHZvaWQgUGFnZU92ZXJsYXlDb250
cm9sbGVyOjpkaWRDaGFuZ2VQcmVmZXJlbmNlcygpCiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9s
bGVyOjpkaWRDaGFuZ2VEZXZpY2VTY2FsZUZhY3RvcigpCiB7Ci0gICAgbV9yb290TGF5ZXItPm5v
dGVEZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNjZW5kYW50cygpOwot
ICAgIGludmFsaWRhdGVBbGxQYWdlT3ZlcmxheUxheWVycygpOworICAgIG1fZG9jdW1lbnRPdmVy
bGF5Um9vdExheWVyLT5ub3RlRGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkSW5jbHVkaW5n
RGVzY2VuZGFudHMoKTsKKyAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyLT5ub3RlRGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKKworICAgIGZvciAo
YXV0byYgZ3JhcGhpY3NMYXllciA6IG1fb3ZlcmxheUdyYXBoaWNzTGF5ZXJzLnZhbHVlcygpKQor
ICAgICAgICBncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogdm9pZCBQYWdl
T3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZUV4cG9zZWRSZWN0KCkKQEAgLTE3MiwyMCArMjIw
LDE3IEBAIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VFeHBvc2VkUmVjdCgp
CiAgICAgbV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJG
bHVzaCgpOwogfQogCi12b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkU2Nyb2xsQW55RnJh
bWUoKQordm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZFNjcm9sbEZyYW1lKEZyYW1lKiBm
cmFtZSkKIHsKLSAgICBpbnZhbGlkYXRlQWxsUGFnZU92ZXJsYXlMYXllcnMoKTsKLX0KLQotdm9p
ZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmludmFsaWRhdGVBbGxQYWdlT3ZlcmxheUxheWVycygp
Ci17Ci0gICAgZm9yIChhdXRvJiBncmFwaGljc0xheWVyIDogbV9vdmVybGF5R3JhcGhpY3NMYXll
cnMudmFsdWVzKCkpCi0gICAgICAgIGdyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwor
ICAgIGZvciAoYXV0byYgb3ZlcmxheUFuZExheWVyIDogbV9vdmVybGF5R3JhcGhpY3NMYXllcnMp
IHsKKyAgICAgICAgaWYgKG92ZXJsYXlBbmRMYXllci5rZXktPm92ZXJsYXlUeXBlKCkgPT0gUGFn
ZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpWaWV3IHx8ICFmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAg
ICAgICAgICAgIG92ZXJsYXlBbmRMYXllci52YWx1ZS0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAg
fQogfQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6Zmx1c2hQYWdlT3ZlcmxheUxheWVy
cyhGbG9hdFJlY3QgdmlzaWJsZVJlY3QpCiB7Ci0gICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgbV92aWV3T3ZlcmxheVJvb3RMYXllci0+Zmx1
c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVSZWN0KTsKIH0KIAogdm9pZCBQYWdlT3ZlcmxheUNv
bnRyb2xsZXI6OnVwZGF0ZVNldHRpbmdzRm9yTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCkBA
IC0yNTksNCArMzA0LDE2IEBAIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpub3RpZnlGbHVz
aFJlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQogICAgIG1fd2ViUGFnZS0+
ZHJhd2luZ0FyZWEoKS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKIH0KIAordm9p
ZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZU92ZXJsYXlGcmFtZShQYWdlT3Zlcmxh
eSogb3ZlcmxheSkKK3sKKyAgICBBU1NFUlQobV9wYWdlT3ZlcmxheXMuY29udGFpbnMob3Zlcmxh
eSkpOworCisgICAgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciA9IG1fb3ZlcmxheUdyYXBo
aWNzTGF5ZXJzLmdldChvdmVybGF5KTsKKworICAgIGlmICghZ3JhcGhpY3NMYXllci0+ZHJhd3ND
b250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZU92ZXJsYXlHZW9tZXRyeShv
dmVybGF5LCBncmFwaGljc0xheWVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlD
b250cm9sbGVyLmgKaW5kZXggNzQzMDJlNy4uMGE4Nzc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaApA
QCAtMzMsNiArMzMsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGcmFtZTsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CkBAIC00NCw3ICs0OCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCi0gICAgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciogcm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7IH0K
KyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBkb2N1bWVudE92ZXJsYXlSb290TGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllci5nZXQoKTsgfQorICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdExheWVyKCkgY29uc3QgeyByZXR1
cm4gbV92aWV3T3ZlcmxheVJvb3RMYXllci5nZXQoKTsgfQogCiAgICAgdm9pZCBpbnN0YWxsUGFn
ZU92ZXJsYXkoUGFzc1JlZlB0cjxQYWdlT3ZlcmxheT4sIFBhZ2VPdmVybGF5OjpGYWRlTW9kZSk7
CiAgICAgdm9pZCB1bmluc3RhbGxQYWdlT3ZlcmxheShQYWdlT3ZlcmxheSosIFBhZ2VPdmVybGF5
OjpGYWRlTW9kZSk7CkBAIC01NCwxMCArNTksMTIgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJQ
YWdlT3ZlcmxheShQYWdlT3ZlcmxheSopOwogCiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3U2l6ZSgp
OworICAgIHZvaWQgZGlkQ2hhbmdlRG9jdW1lbnRTaXplKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQ
cmVmZXJlbmNlcygpOwogICAgIHZvaWQgZGlkQ2hhbmdlRGV2aWNlU2NhbGVGYWN0b3IoKTsKICAg
ICB2b2lkIGRpZENoYW5nZUV4cG9zZWRSZWN0KCk7Ci0gICAgdm9pZCBkaWRTY3JvbGxBbnlGcmFt
ZSgpOworICAgIHZvaWQgZGlkU2Nyb2xsRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2b2lk
IGRpZENoYW5nZU92ZXJsYXlGcmFtZShQYWdlT3ZlcmxheSopOwogCiAgICAgdm9pZCBmbHVzaFBh
Z2VPdmVybGF5TGF5ZXJzKFdlYkNvcmU6OkZsb2F0UmVjdCk7CiAKQEAgLTY5LDcgKzc2LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2V0dGluZ3NGb3JMYXllcihXZWJD
b3JlOjpHcmFwaGljc0xheWVyKik7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQWxsUGFnZU92ZXJsYXlM
YXllcnMoKTsKKyAgICB2b2lkIHVwZGF0ZUZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0
aW9uVXBkYXRlcygpOwogCiAgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudAogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqLCBkb3VibGUpIG92ZXJyaWRlIHsgfQpAQCAtNzgsNyArODUsOCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVycmlkZSB7IH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fdmlld092ZXJsYXlS
b290TGF5ZXI7CiAgICAgSGFzaE1hcDxQYWdlT3ZlcmxheSosIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpHcmFwaGljc0xheWVyPj4gbV9vdmVybGF5R3JhcGhpY3NMYXllcnM7CiAgICAgVmVjdG9y
PFJlZlB0cjxQYWdlT3ZlcmxheT4+IG1fcGFnZU92ZXJsYXlzOwogICAgIFdlYlBhZ2UqIG1fd2Vi
UGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBkNDU4MzRlLi4zNjQ2N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODE3LDcgKzM4MTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnJl
Y29tcHV0ZVNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50c1N0YXRlKCkKIAogRnJhbWUq
IFdlYlBhZ2U6Om1haW5GcmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZSA/ICZtX3Bh
Z2UtPm1haW5GcmFtZSgpIDogMDsKKyAgICByZXR1cm4gbV9wYWdlID8gJm1fcGFnZS0+bWFpbkZy
YW1lKCkgOiBudWxscHRyOwogfQogCiBGcmFtZVZpZXcqIFdlYlBhZ2U6Om1haW5GcmFtZVZpZXco
KSBjb25zdApAQCAtMzgyNSw3ICszODI1LDcgQEAgRnJhbWVWaWV3KiBXZWJQYWdlOjptYWluRnJh
bWVWaWV3KCkgY29uc3QKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCkpCiAgICAg
ICAgIHJldHVybiBmcmFtZS0+dmlldygpOwogICAgIAotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9n
Z2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNDUwNiw5ICs0NTA2LDE5IEBAIFRlbGVwaG9u
ZU51bWJlck92ZXJsYXlDb250cm9sbGVyJiBXZWJQYWdlOjp0ZWxlcGhvbmVOdW1iZXJPdmVybGF5
Q29udHJvbGxlcigpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTY3JvbGxP
ZmZzZXRGb3JBbnlGcmFtZSgpCit2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNjcm9sbE9mZnNldEZv
ckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBtX3BhZ2VPdmVybGF5Q29udHJvbGxlci5kaWRT
Y3JvbGxBbnlGcmFtZSgpOworICAgIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyLmRpZFNjcm9sbEZy
YW1lKGZyYW1lKTsKKworICAgIGlmICghZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIElmIHRoaXMgaXMgY2FsbGVkIHdoZW4gdGVhcmluZyBkb3duIGEgRnJh
bWVWaWV3LCB0aGUgV2ViQ29yZTo6RnJhbWUncworICAgIC8vIGN1cnJlbnQgRnJhbWVWaWV3IHdp
bGwgYmUgbnVsbC4KKyAgICBpZiAoIWZyYW1lLT52aWV3KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbE9mZnNldFBpbm5pbmcoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCBjOWQ2NDA0Li4zZGY4NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc4MCw3ICs3ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBo
YW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZz
ZXRGb3JBbnlGcmFtZSgpOworICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yRnJhbWUo
V2ViQ29yZTo6RnJhbWUqKTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oCmluZGV4IGYxODk1ZjAuLmUwZDBhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmgKQEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogI2VuZGlmCiAK
KyAgICB2aXJ0dWFsIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKSBvdmVycmlkZTsKKwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsZWRFeHBvc2Vk
UmVjdCgpOwogCiAgICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCmluZGV4IDMyMGRjNjAuLjFhZGM1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzgsNiArMzgsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFp
bkZyYW1lLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyQ29tcG9zaXRvci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RpbGVkQmFja2luZy5oPgogCkBAIC04OSw5ICs5MSwxMSBAQCB2
b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihH
cmFwaGljc0xheWVyKiByb290TGF5ZQogICAgIFZlY3RvcjxHcmFwaGljc0xheWVyICo+IGNoaWxk
cmVuOwogICAgIGlmIChyb290TGF5ZXIpIHsKICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKHJvb3RM
YXllcik7Ci0gICAgICAgIGNoaWxkcmVuLmFwcGVuZChtX3dlYlBhZ2UtPnBhZ2VPdmVybGF5Q29u
dHJvbGxlcigpLnJvb3RMYXllcigpKTsKKyAgICAgICAgY2hpbGRyZW4uYXBwZW5kKG1fd2ViUGFn
ZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkudmlld092ZXJsYXlSb290TGF5ZXIoKSk7CiAgICAg
fQogICAgIG1fcm9vdExheWVyLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CisKKyAgICBtX3dlYlBh
Z2UtPm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygpLT5jb21wb3NpdG9yKCkuc2V0RG9jdW1l
bnRPdmVybGF5Um9vdExheWVyKG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZG9j
dW1lbnRPdmVybGF5Um9vdExheWVyKCkpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjp1cGRhdGVHZW9tZXRyeShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgSW50
U2l6ZSYgbGF5ZXJQb3NpdGlvbikKQEAgLTI5Myw0ICsyOTcsOSBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpkaWRVcGRhdGUoKQogICAgIH0KIH0KIAordm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6bWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IEludFNp
emUmKQoreworICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdl
RG9jdW1lbnRTaXplKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYzM3NmUzYi4uZDA2ZDQxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0yMDEsNiArMjAx
LDggQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5j
ZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYKIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6bWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmKQog
eworICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlRG9jdW1l
bnRTaXplKCk7CisKICAgICBpZiAoIW1fd2ViUGFnZS0+bWluaW11bUxheW91dFNpemUoKS53aWR0
aCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ0NSw3ICs0NDcsOSBAQCB2b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihDQUxheWVyICps
YXllcikKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0
RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAotICAgIFttX2hvc3RpbmdMYXllciBzZXRTdWJsYXllcnM6
bGF5ZXIgPyBAWyBsYXllciwgbV93ZWJQYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5yb290
TGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpIF0gOiBAWyBdXTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIg
c2V0U3VibGF5ZXJzOmxheWVyID8gQFsgbGF5ZXIsIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250
cm9sbGVyKCkudmlld092ZXJsYXlSb290TGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpIF0gOiBAWyBd
XTsKKworICAgIG1fd2ViUGFnZS0+bWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCktPmNvbXBv
c2l0b3IoKS5zZXREb2N1bWVudE92ZXJsYXlSb290TGF5ZXIobV93ZWJQYWdlLT5wYWdlT3Zlcmxh
eUNvbnRyb2xsZXIoKS5kb2N1bWVudE92ZXJsYXlSb290TGF5ZXIoKSk7CiAKICAgICBib29sIGhh
ZFJvb3RMYXllciA9ICEhbV9yb290TGF5ZXI7CiAgICAgbV9yb290TGF5ZXIgPSBsYXllcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229161</attachid>
            <date>2014-04-11 14:10:36 -0700</date>
            <delta_ts>2014-04-11 14:17:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>smalloverlay.diff</filename>
            <type>text/plain</type>
            <size>32966</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MTM0ZDcwLi4wMGU0Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTQtMDQtMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU3VwcG9ydCBkb2N1bWVudC1yZWxhdGl2ZSBhbmQgY3VzdG9tLWZyYW1lIHBhZ2Ug
b3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTU2MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY1OTU1NTY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5n
TGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0
RG9jdW1lbnRPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmg6CisgICAgICAgIEFkZCB0aGUgY29uY2VwdCBvZiBhIGRvY3VtZW50IG92
ZXJsYXkgbGF5ZXIsIHdoaWNoIGlzIHBsdWdnZWQgaW4gYXMgdGhlCisgICAgICAgIGxhc3QgY2hp
bGQgb2YgdGhlIHJvb3QgY29udGVudCBsYXllci4gRXhwb3NlIGl0IHRvIFdlYktpdDIuCisKIDIw
MTQtMDQtMTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgIlN5c3RlbSBGb250IiBmcm9tIGNoYXJhY3RlciB3aWR0aCBjYWxjdWxhdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZjc2MzYxMS4uZWRiOTY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTg2OCw2ICs4NjgsNyBAQCBfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMU5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVL
ZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJDb3JlMjFSZW1v
dGVDb21tYW5kTGlzdGVuZXI2Y3JlYXRlRVJOU18yN1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVu
dEUKK19fWk43V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMjdzZXREb2N1bWVudE92ZXJs
YXlSb290TGF5ZXJFUE5TXzEzR3JhcGhpY3NMYXllckUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VM
b2FkU2NoZWR1bGVyMjBzZXJ2ZVBlbmRpbmdSZXF1ZXN0c0VOU18yMFJlc291cmNlTG9hZFByaW9y
aXR5RQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1Jl
cXVlc3RzRVBOUzBfMTVIb3N0SW5mb3JtYXRpb25FTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUK
IF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjFyZXN1bWVQZW5kaW5nUmVxdWVz
dHNFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAppbmRleCBhZWQzOGQyLi5iMjc4YWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjU1LDYgKzI1NSw3IEBA
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcm
IHJlbmRlclZpZXcpCiAgICAgLCBtX2lzVHJhY2tpbmdSZXBhaW50cyhmYWxzZSkKICAgICAsIG1f
bGF5ZXJzV2l0aFRpbGVkQmFja2luZ0NvdW50KDApCiAgICAgLCBtX3Jvb3RMYXllckF0dGFjaG1l
bnQoUm9vdExheWVyVW5hdHRhY2hlZCkKKyAgICAsIG1fZG9jdW1lbnRPdmVybGF5Um9vdExheWVy
KG51bGxwdHIpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcih0aGlzLCAmUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpsYXllckZsdXNoVGltZXJGaXJlZCkKICAgICAsIG1fbGF5ZXJGbHVzaFRocm90dGxp
bmdFbmFibGVkKHBhZ2UoKSAmJiBwYWdlKCktPnByb2dyZXNzKCkuaXNNYWluTG9hZFByb2dyZXNz
aW5nKCkpCiAgICAgLCBtX2xheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlEaXNhYmxlZEZv
ckludGVyYWN0aW9uKGZhbHNlKQpAQCAtMTQ2MCw2ICsxNDYxLDkgQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciYgbGF5
ZXIsIFZlY3QKIAogICAgICAgICBjaGlsZExheWVyc09mRW5jbG9zaW5nTGF5ZXIuYXBwZW5kKGxh
eWVyQmFja2luZy0+Y2hpbGRGb3JTdXBlcmxheWVycygpKTsKICAgICB9CisKKyAgICBpZiAobV9k
b2N1bWVudE92ZXJsYXlSb290TGF5ZXIpCisgICAgICAgIGNoaWxkTGF5ZXJzT2ZFbmNsb3NpbmdM
YXllci5hcHBlbmQobV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXIpOwogfQogCiB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZFJlZ2lvbkNvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24sIFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxk
TGlzdCwgaW50IGRlcHRoKQpAQCAtMzgwNCw0ICszODA4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpwYWludFJlbGF0ZWRNaWxlc3RvbmVzVGltZXJGaXJlZChUaW1lcjxSZW5kZXJM
YXllckNvCiAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmZpcmVQYWludFJlbGF0ZWRNaWxl
c3RvbmVzSWZOZWVkZWQoKTsKIH0KIAordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldERv
Y3VtZW50T3ZlcmxheVJvb3RMYXllcihHcmFwaGljc0xheWVyKiBkb2N1bWVudE92ZXJsYXlSb290
TGF5ZXIpCit7CisgICAgaWYgKG1fZG9jdW1lbnRPdmVybGF5Um9vdExheWVyKQorICAgICAgICBt
X2RvY3VtZW50T3ZlcmxheVJvb3RMYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAgIG1fZG9j
dW1lbnRPdmVybGF5Um9vdExheWVyID0gZG9jdW1lbnRPdmVybGF5Um9vdExheWVyOworICAgIHNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgKaW5kZXggMDM5NTJiYy4uZmZjMDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMzAyLDYgKzMwMiw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwog
ICAgIENvbG9yIHJvb3RFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdEV4dGVuZGVkQmFja2dyb3VuZENvbG9yOyB9CiAKKyAgICB2b2lkIHNldERvY3VtZW50T3Zl
cmxheVJvb3RMYXllcihHcmFwaGljc0xheWVyKiBkb2N1bWVudE92ZXJsYXlSb290TGF5ZXIpOwor
CiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAKQEAgLTUwNCw2ICs1MDYsOCBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBtX2xheWVyRm9yRm9v
dGVyOwogI2VuZGlmCiAKKyAgICBHcmFwaGljc0xheWVyKiBtX2RvY3VtZW50T3ZlcmxheVJvb3RM
YXllcjsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyVXBkYXRlcj4gbV9sYXll
clVwZGF0ZXI7IC8vIFVwZGF0ZXMgdGlsZWQgbGF5ZXIgdmlzaWJsZSBhcmVhIHBlcmlvZGljYWxs
eSB3aGlsZSBhbmltYXRpb25zIGFyZSBydW5uaW5nLgogCiAgICAgVGltZXI8UmVuZGVyTGF5ZXJD
b21wb3NpdG9yPiBtX2xheWVyRmx1c2hUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5MGY3ZDI1Li43NWQw
OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMTQtMDQtMTEgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBkb2N1bWVudC1y
ZWxhdGl2ZSBhbmQgY3VzdG9tLWZyYW1lIHBhZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTU2MAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTY1OTU1NTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkICJkb2N1bWVudC1yZWxhdGl2ZSIgb3ZlcmxheXMsIHdoaWNoIGF0dGFjaCB0
byAoYW5kIHNjcm9sbCB3aXRoKSB0aGUgZG9jdW1lbnQsCisgICAgICAgIGFuZCBjYW4gYmUgZ2l2
ZW4gYSBmcmFtZSByZWN0IHdpdGhpbiB0aGUgZG9jdW1lbnQgdG8gYXZvaWQgb3ZlcmFsbG9jYXRp
b24gb2YgYmFja2luZyBzdG9yZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1haW5GcmFtZVZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpkaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JGcmFtZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgTGV0IHRoZSBQYWdlT3Zl
cmxheUNvbnRyb2xsZXIga25vdyAqd2hpY2gqIGZyYW1lIHNjcm9sbGVkLCBpbnN0ZWFkIG9mICJh
bnkgZnJhbWUiLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVy
UGFnZVNjcm9sbCk6CisgICAgICAgIEZhY3RvciBvdXQgc2hhcmVkIGNvZGUuCisKKyAgICAgICAg
KFdlYktpdDo6RmluZENvbnRyb2xsZXI6OndpbGxNb3ZlVG9XZWJQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6RmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KToKKyAgICAgICAgV2UgY2FuIHVzZSBjbGVh
clJlY3QoKSBpbnN0ZWFkIG9mIGEgdHJhbnNwYXJlbmN5IGxheWVyIGFuZCBmaWxsUmVjdCgpLgor
ICAgICAgICBJJ3ZlIGxvb2tlZCB0aHJvdWdoIGFsbCB0aGUgb3RoZXIgb3ZlcmxheSBjbGllbnRz
IEkga25vdyBvZiBhbmQgbm9uZSBvZiB0aGVtCisgICAgICAgIGRlcGVuZCBvbiBoYXZpbmcgYSB0
cmFuc3BhcmVuY3kgbGF5ZXIgYXQgdGhlIG92ZXJsYXkgbGV2ZWwuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3Zl
cmxheTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OmJvdW5kcyk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VPdmVybGF5OjpmcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Ojpz
ZXRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpkcmF3UmVjdCk6CisgICAg
ICAgIEFkZCBPdmVybGF5VHlwZSwgd2hpY2ggYWxsb3dzIGNyZWF0aW9uIG9mIERvY3VtZW50IG9y
IFZpZXcgcmVsYXRpdmUgb3ZlcmxheXMuCisgICAgICAgIEFsbCBvdmVybGF5cyB1cCB0byB0aGlz
IHBvaW50IGFyZSBWaWV3IHJlbGF0aXZlLCBzbyB3ZSBkZWZhdWx0IHRvIHRoYXQuCisgICAgICAg
IERvY3VtZW50LXJlbGF0aXZlIG92ZXJsYXlzIHNjcm9sbCB3aXRoIHRoZSBwYWdlIGluc3RlYWQg
b2YgcmVwYWludGluZyBhcworICAgICAgICB0aGUgcGFnZSBzY3JvbGxzLiBUaGV5IGNhbiBhbHNv
IGJlIGdpdmVuIGFuIGV4cGxpY2l0IGZyYW1lLCBhbGxvd2luZyB0aGVtCisgICAgICAgIHRvIGJl
IHNtYWxsZXIgdGhhbiB0aGUgZW50aXJlIGRvY3VtZW50LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1BhZ2VPdmVybGF5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Ojpv
dmVybGF5VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Ojp3ZWJQYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OmNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6aW5zdGFsbFBhZ2VPdmVybGF5KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjp1bmluc3RhbGxQYWdlT3ZlcmxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlRm9yY2VTeW5jaHJv
bm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6dXBkYXRl
T3ZlcmxheUdlb21ldHJ5KToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXlDb250cm9sbGVy
OjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVy
bGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
T3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZURvY3VtZW50U2l6ZSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlRGV2aWNlU2NhbGVGYWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZFNjcm9sbEZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpmbHVzaFBhZ2VPdmVybGF5
TGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFu
Z2VPdmVybGF5RnJhbWUpOgorICAgICAgICBLZWVwIHR3byBvdmVybGF5IHJvb3QgbGF5ZXJzIC0g
b25lIGZvciB2aWV3LXJlbGF0aXZlCisgICAgICAgIGFuZCBvbmUgZm9yIGRvY3VtZW50LXJlbGF0
aXZlIG92ZXJsYXlzLgorICAgICAgICBEb24ndCBmb3JjZSBzeW5jaHJvbm91cyBzY3JvbGxpbmcg
aWYgd2Ugb25seSBoYXZlIGRvY3VtZW50LXJlbGF0aXZlIG92ZXJsYXlzLgorICAgICAgICBVcGRh
dGUgdGhlIG92ZXJsYXkncyBwb3NpdGlvbiBhcyB3ZWxsIGFzIGl0cyBzaXplIHdoZW5ldmVyIG5l
Y2Vzc2FyeS4KKyAgICAgICAgVXBkYXRlIGRvY3VtZW50LXJlbGF0aXZlIG92ZXJsYXkgZ2VvbWV0
cnkgd2hlbiB0aGUgZG9jdW1lbnQgc2l6ZSBjaGFuZ2VzLgorICAgICAgICBPbmx5IGV4cGxpY2l0
bHkgZmx1c2ggdmlldy1yZWxhdGl2ZSBvdmVybGF5czsgZG9jdW1lbnQtcmVsYXRpdmUgb25lcwor
ICAgICAgICBhcmUgcGx1Z2dlZCBpbnRvIHRoZSBXZWJDb3JlIGxheWVyIHRyZWUgYW5kIGZsdXNo
ZWQgYWxvbmcgd2l0aCB0aGUgcGFnZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Q
YWdlT3ZlcmxheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXlDb250
cm9sbGVyOjpkb2N1bWVudE92ZXJsYXlSb290TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
T3ZlcmxheUNvbnRyb2xsZXI6OnZpZXdPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldFJvb3RDb21w
b3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6Om1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6Om1haW5GcmFtZUNvbnRlbnRTaXpl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIExldCB0aGUgUGFnZU92ZXJsYXkg
Y29udHJvbGxlciBrbm93IHdoZW4gdGhlIGRvY3VtZW50IHNpemUgY2hhbmdlcy4KKyAgICAgICAg
V2hlbiB3ZSBzZXQgdXAgY29tcG9zaXRpbmcsIHB1c2ggdGhlIGRvY3VtZW50IG92ZXJsYXkgcm9v
dCBsYXllcgorICAgICAgICBkb3duIGludG8gV2ViQ29yZS4KKwogMjAxNC0wNC0xMCAgU2VyZ2lv
IFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IEdUSyBidWlsZCBmaXggYWZ0ZXIgcjE2NzA3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggYmNjZmFlOS4uMzE1ZGU1ZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTU3OSwxNyArMTU3OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZENoYW5nZVNjcm9sbE9mZnNldCgpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JBbnlGcmFtZSgp
OwotCi0gICAgaWYgKCFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBJZiB0aGlzIGlzIGNhbGxlZCB3aGVuIHRlYXJpbmcgZG93biBhIEZyYW1lVmlldywg
dGhlIFdlYkNvcmU6OkZyYW1lJ3MKLSAgICAvLyBjdXJyZW50IEZyYW1lVmlldyB3aWxsIGJlIG51
bGwuCi0gICAgaWYgKCFtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB3ZWJQYWdlLT51cGRhdGVNYWluRnJhbWVTY3JvbGxPZmZzZXRQaW5uaW5nKCk7
CisgICAgd2ViUGFnZS0+ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yRnJhbWUobV9mcmFtZS0+Y29y
ZUZyYW1lKCkpOwogfQogCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChi
b29sIGVuYWJsZWRQZXJTZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IGIwNmM2OTAuLmM2ZTZlOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcApAQCAtMTYyLDkgKzE2Miw4IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZp
bmRVSUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBjb25zdCBTdHJpbmcmIHN0cmluCiAgICAg
ICAgICAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IGZpbmRQYWdlT3ZlcmxheSA9IFBhZ2VPdmVybGF5
OjpjcmVhdGUodGhpcyk7CiAgICAgICAgICAgICBtX2ZpbmRQYWdlT3ZlcmxheSA9IGZpbmRQYWdl
T3ZlcmxheS5nZXQoKTsKICAgICAgICAgICAgIG1fd2ViUGFnZS0+aW5zdGFsbFBhZ2VPdmVybGF5
KGZpbmRQYWdlT3ZlcmxheS5yZWxlYXNlKCksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RmFkZSk7
Ci0gICAgICAgICAgICBtX2ZpbmRQYWdlT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgbV9maW5kUGFnZU92ZXJsYXktPnNldE5lZWRzRGlzcGxh
eSgpOworICAgICAgICB9CisgICAgICAgIG1fZmluZFBhZ2VPdmVybGF5LT5zZXROZWVkc0Rpc3Bs
YXkoKTsKICAgICB9CiB9CiAKQEAgLTM5NCw3ICszOTMsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQg
b3ZlcmxheUJhY2tncm91bmRHcmVlbiA9IDAuMTsKIHN0YXRpYyBjb25zdCBmbG9hdCBvdmVybGF5
QmFja2dyb3VuZEJsdWUgPSAwLjE7CiBzdGF0aWMgY29uc3QgZmxvYXQgb3ZlcmxheUJhY2tncm91
bmRBbHBoYSA9IDAuMjU7CiAKLXZvaWQgRmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5KiAvKnBhZ2VPdmVybGF5Ki8sIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZpbmRDb250cm9sbGVyOjpkcmF3UmVjdChQ
YWdlT3ZlcmxheSosIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgQ29sb3Igb3ZlcmxheUJhY2tncm91bmRDb2xvcihvdmVy
bGF5QmFja2dyb3VuZFJlZCwgb3ZlcmxheUJhY2tncm91bmRHcmVlbiwgb3ZlcmxheUJhY2tncm91
bmRCbHVlLCBvdmVybGF5QmFja2dyb3VuZEFscGhhKTsKIApAQCAtNDEzLDE2ICs0MTIsMTMgQEAg
dm9pZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkqIC8qcGFnZU92ZXJsYXkq
LywgR3JhcGhpY3NDb250ZXh0JiBncmEKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBy
ZWN0cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgSW50UmVjdCB3aGl0ZUZyYW1lUmVjdCA9
IHJlY3RzW2ldOwogICAgICAgICAgICAgd2hpdGVGcmFtZVJlY3QuaW5mbGF0ZSgxKTsKLQogICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KHdoaXRlRnJhbWVSZWN0KTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRy
YW5zcGFyZW50LCBDb2xvclNwYWNlU1JHQik7Ci0KICAgICAvLyBDbGVhciBvdXQgdGhlIGhvbGVz
LgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChyZWN0c1tpXSk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5jbGVhclJlY3QocmVjdHNbaV0pOwogCiAgICAgaWYgKCFtX2lzU2hvd2luZ0ZpbmRJbmRp
Y2F0b3IpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwCmluZGV4IDE5ZGVhNWUuLmU4NDgwMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNwcApAQCAt
NDIsMTIgKzQyLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIGNvbnN0IGRvdWJsZSBm
YWRlQW5pbWF0aW9uRHVyYXRpb24gPSAwLjI7CiBzdGF0aWMgY29uc3QgZG91YmxlIGZhZGVBbmlt
YXRpb25GcmFtZVJhdGUgPSAzMDsKIAotUGFzc1JlZlB0cjxQYWdlT3ZlcmxheT4gUGFnZU92ZXJs
YXk6OmNyZWF0ZShDbGllbnQqIGNsaWVudCkKK1Bhc3NSZWZQdHI8UGFnZU92ZXJsYXk+IFBhZ2VP
dmVybGF5OjpjcmVhdGUoQ2xpZW50KiBjbGllbnQsIE92ZXJsYXlUeXBlIG92ZXJsYXlUeXBlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFnZU92ZXJsYXkoY2xpZW50KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQYWdlT3ZlcmxheShjbGllbnQsIG92ZXJsYXlUeXBlKSk7CiB9CiAK
LVBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheShDbGllbnQqIGNsaWVudCkKK1BhZ2VPdmVybGF5OjpQ
YWdlT3ZlcmxheShDbGllbnQqIGNsaWVudCwgT3ZlcmxheVR5cGUgb3ZlcmxheVR5cGUpCiAgICAg
OiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3dlYlBhZ2UoMCkKICAgICAsIG1fZmFkZUFuaW1h
dGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBhZ2VPdmVybGF5OjpmYWRlQW5pbWF0
aW9uVGltZXJGaXJlZCkKQEAgLTU1LDYgKzU1LDcgQEAgUGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5
KENsaWVudCogY2xpZW50KQogICAgICwgbV9mYWRlQW5pbWF0aW9uRHVyYXRpb24oZmFkZUFuaW1h
dGlvbkR1cmF0aW9uKQogICAgICwgbV9mYWRlQW5pbWF0aW9uVHlwZShOb0FuaW1hdGlvbikKICAg
ICAsIG1fZnJhY3Rpb25GYWRlZEluKDEuMCkKKyAgICAsIG1fb3ZlcmxheVR5cGUob3ZlcmxheVR5
cGUpCiB7CiB9CiAKQEAgLTY0LDE4ICs2NSw0MyBAQCBQYWdlT3ZlcmxheTo6flBhZ2VPdmVybGF5
KCkKIAogSW50UmVjdCBQYWdlT3ZlcmxheTo6Ym91bmRzKCkgY29uc3QKIHsKLSAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygp
OworICAgIGlmICghbV9vdmVycmlkZUZyYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIElu
dFJlY3QoSW50UG9pbnQoKSwgbV9vdmVycmlkZUZyYW1lLnNpemUoKSk7CiAKLSAgICBpbnQgd2lk
dGggPSBmcmFtZVZpZXctPndpZHRoKCk7Ci0gICAgaW50IGhlaWdodCA9IGZyYW1lVmlldy0+aGVp
Z2h0KCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZVZp
ZXcoKTsKIAotICAgIGlmICghU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVzZXNPdmVybGF5U2Ny
b2xsYmFycygpKSB7Ci0gICAgICAgIGlmIChmcmFtZVZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkp
Ci0gICAgICAgICAgICB3aWR0aCAtPSBmcmFtZVZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndp
ZHRoKCk7Ci0gICAgICAgIGlmIChmcmFtZVZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSkKLSAg
ICAgICAgICAgIGhlaWdodCAtPSBmcmFtZVZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKS0+aGVp
Z2h0KCk7Ci0gICAgfSAgICAKLSAgICByZXR1cm4gSW50UmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICBzd2l0Y2ggKG1fb3ZlcmxheVR5cGUpIHsKKyAgICBjYXNlIE92ZXJsYXlUeXBlOjpW
aWV3OiB7CisgICAgICAgIGludCB3aWR0aCA9IGZyYW1lVmlldy0+d2lkdGgoKTsKKyAgICAgICAg
aW50IGhlaWdodCA9IGZyYW1lVmlldy0+aGVpZ2h0KCk7CisKKyAgICAgICAgaWYgKCFTY3JvbGxi
YXJUaGVtZTo6dGhlbWUoKS0+dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkpIHsKKyAgICAgICAgICAg
IGlmIChmcmFtZVZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkpCisgICAgICAgICAgICAgICAgd2lk
dGggLT0gZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpLT53aWR0aCgpOworICAgICAgICAg
ICAgaWYgKGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgICAg
IGhlaWdodCAtPSBmcmFtZVZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKS0+aGVpZ2h0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEludFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgfQorICAgIGNhc2UgT3ZlcmxheVR5cGU6OkRvY3VtZW50OgorICAgICAgICByZXR1cm4gSW50
UmVjdChJbnRQb2ludCgpLCBmcmFtZVZpZXctPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICB9OworfQor
CitJbnRSZWN0IFBhZ2VPdmVybGF5OjpmcmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX292ZXJy
aWRlRnJhbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9vdmVycmlkZUZyYW1lOworCisg
ICAgcmV0dXJuIGJvdW5kcygpOworfQorCit2b2lkIFBhZ2VPdmVybGF5OjpzZXRGcmFtZShJbnRS
ZWN0IGZyYW1lKQoreworICAgIG1fb3ZlcnJpZGVGcmFtZSA9IGZyYW1lOworCisgICAgaWYgKG1f
d2ViUGFnZSkKKyAgICAgICAgbV93ZWJQYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRD
aGFuZ2VPdmVybGF5RnJhbWUodGhpcyk7CiB9CiAKIHZvaWQgUGFnZU92ZXJsYXk6OnNldFBhZ2Uo
V2ViUGFnZSogd2ViUGFnZSkKQEAgLTEwOCwxMiArMTM0LDcgQEAgdm9pZCBQYWdlT3ZlcmxheTo6
ZHJhd1JlY3QoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRpcnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoMSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVDb3B5KTsKLQogICAgIG1fY2xpZW50LT5kcmF3UmVjdCh0aGlzLCBncmFw
aGljc0NvbnRleHQsIHBhaW50UmVjdCk7Ci0KLSAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKTsKIH0KICAgICAKIGJvb2wgUGFnZU92ZXJsYXk6Om1vdXNlRXZlbnQoY29u
c3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgKaW5kZXggNjFkYmE4Yi4uY2YwM2Q5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgKQEAgLTI4
LDEzICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV0tCYXNl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotICAgIGNsYXNzIEludFBvaW50OwotICAgIGNsYXNz
IEludFJlY3Q7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTksNyArNTgsMTIgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIFdLQXJyYXlSZWYg
Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcyhQYWdlT3ZlcmxheSosIGJvb2wgLyogcGFy
YW1ldGVyaXplZE5hbWVzICovKSB7IHJldHVybiAwOyB9CiAgICAgfTsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFBhZ2VPdmVybGF5PiBjcmVhdGUoQ2xpZW50Kik7CisgICAgZW51bSBjbGFzcyBP
dmVybGF5VHlwZSB7CisgICAgICAgIFZpZXcsIC8vIEZpeGVkIHRvIHRoZSB2aWV3IHNpemU7IGRv
ZXMgbm90IHNjYWxlIG9yIHNjcm9sbCB3aXRoIHRoZSBkb2N1bWVudCwgcmVwYWludHMgb24gc2Ny
b2xsLgorICAgICAgICBEb2N1bWVudCwgLy8gU2NhbGVzIGFuZCBzY3JvbGxzIHdpdGggdGhlIGRv
Y3VtZW50LgorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQYWdlT3ZlcmxheT4gY3Jl
YXRlKENsaWVudCosIE92ZXJsYXlUeXBlID0gT3ZlcmxheVR5cGU6OlZpZXcpOwogICAgIHZpcnR1
YWwgflBhZ2VPdmVybGF5KCk7CiAKICAgICB2b2lkIHNldFBhZ2UoV2ViUGFnZSopOwpAQCAtODEs
MTMgKzg1LDIwIEBAIHB1YmxpYzoKICAgICBDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xpZW50OyB9CiAKICAgICBlbnVtIGNsYXNzIEZhZGVNb2RlIHsgRG9Ob3RGYWRlLCBGYWRl
IH07CisKKyAgICBPdmVybGF5VHlwZSBvdmVybGF5VHlwZSgpIHsgcmV0dXJuIG1fb3ZlcmxheVR5
cGU7IH0KKworICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgV2ViQ29y
ZTo6SW50UmVjdCBmcmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0RnJhbWUoV2ViQ29yZTo6SW50
UmVjdCk7CisKKyAgICAvL2JhZAorICAgIFdlYlBhZ2UqIHdlYlBhZ2UoKSBjb25zdCB7IHJldHVy
biBtX3dlYlBhZ2U7IH0KICAgICAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBQYWdlT3Zlcmxh
eShDbGllbnQqKTsKKyAgICBleHBsaWNpdCBQYWdlT3ZlcmxheShDbGllbnQqLCBPdmVybGF5VHlw
ZSk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdDsKLQog
ICAgIHZvaWQgc3RhcnRGYWRlQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBmYWRlQW5pbWF0aW9uVGlt
ZXJGaXJlZCgpOwogCkBAIC0xMDYsNiArMTE3LDkgQEAgcHJpdmF0ZToKIAogICAgIEZhZGVBbmlt
YXRpb25UeXBlIG1fZmFkZUFuaW1hdGlvblR5cGU7CiAgICAgZmxvYXQgbV9mcmFjdGlvbkZhZGVk
SW47CisKKyAgICBPdmVybGF5VHlwZSBtX292ZXJsYXlUeXBlOworICAgIFdlYkNvcmU6OkludFJl
Y3QgbV9vdmVycmlkZUZyYW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNv
bnRyb2xsZXIuY3BwCmluZGV4IDc2YjI0YjIuLjYzMWY4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIu
Y3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVk
ZSAiUGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9UaWxlZEJhY2tpbmcuaD4KQEAgLTQ3LDE3ICs0OSwyMSBAQCBQYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OlBhZ2VPdmVybGF5Q29udHJvbGxlcihXZWJQYWdlKiB3ZWJQYWdlKQog
CiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQVNTRVJU
KCFtX3Jvb3RMYXllcik7CisgICAgQVNTRVJUKCFtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllcik7
CisgICAgQVNTRVJUKCFtX3ZpZXdPdmVybGF5Um9vdExheWVyKTsKIAotICAgIG1fcm9vdExheWVy
ID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhp
Y3NMYXllckZhY3RvcnkoKSwgdGhpcyk7CisgICAgbV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXIg
PSBHcmFwaGljc0xheWVyOjpjcmVhdGUobV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5ncmFwaGlj
c0xheWVyRmFjdG9yeSgpLCB0aGlzKTsKKyAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyID0gR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlKG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXll
ckZhY3RvcnkoKSwgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwotICAgIG1fcm9vdExheWVyLT5zZXRO
YW1lKCJQYWdlIE92ZXJsYXkgY29udGFpbmVyIik7CisgICAgbV9kb2N1bWVudE92ZXJsYXlSb290
TGF5ZXItPnNldE5hbWUoIlBhZ2UgT3ZlcmxheSBjb250YWluZXIgKGRvY3VtZW50LXJlbGF0aXZl
KSIpOworICAgIG1fdmlld092ZXJsYXlSb290TGF5ZXItPnNldE5hbWUoIlBhZ2UgT3ZlcmxheSBj
b250YWluZXIgKHZpZXctcmVsYXRpdmUpIik7CiAjZW5kaWYKIH0KIAogdm9pZCBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXI6Omluc3RhbGxQYWdlT3ZlcmxheShQYXNzUmVmUHRyPFBhZ2VPdmVybGF5PiBw
YWdlT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlIGZhZGVNb2RlKQogewotICAgIEFTU0VS
VChtX3Jvb3RMYXllcik7CisgICAgQVNTRVJUKG1fZG9jdW1lbnRPdmVybGF5Um9vdExheWVyKTsK
KyAgICBBU1NFUlQobV92aWV3T3ZlcmxheVJvb3RMYXllcik7CiAKICAgICBSZWZQdHI8UGFnZU92
ZXJsYXk+IG92ZXJsYXkgPSBwYWdlT3ZlcmxheTsKIApAQCAtNzEsMTggKzc3LDMxIEBAIHZvaWQg
UGFnZU92ZXJsYXlDb250cm9sbGVyOjppbnN0YWxsUGFnZU92ZXJsYXkoUGFzc1JlZlB0cjxQYWdl
T3ZlcmxheT4gcGFnZU92ZXJsCiAgICAgICAgIG92ZXJsYXktPnN0YXJ0RmFkZUluQW5pbWF0aW9u
KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gbGF5ZXIgPSBHcmFwaGlj
c0xheWVyOjpjcmVhdGUobV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5ncmFwaGljc0xheWVyRmFj
dG9yeSgpLCB0aGlzKTsKKyAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkp
OworICAgIGxheWVyLT5zZXRQb3NpdGlvbihvdmVybGF5LT5mcmFtZSgpLmxvY2F0aW9uKCkpOwog
I2lmbmRlZiBOREVCVUcKICAgICBsYXllci0+c2V0TmFtZSgiUGFnZSBPdmVybGF5IGNvbnRlbnQi
KTsKICNlbmRpZgogCiAgICAgdXBkYXRlU2V0dGluZ3NGb3JMYXllcihsYXllci5nZXQoKSk7Ci0g
ICAgbV9yb290TGF5ZXItPmFkZENoaWxkKGxheWVyLmdldCgpKTsKKworICAgIHN3aXRjaCAob3Zl
cmxheS0+b3ZlcmxheVR5cGUoKSkgeworICAgIGNhc2UgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBl
OjpWaWV3OgorICAgICAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyLT5hZGRDaGlsZChsYXllci5n
ZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBl
OjpEb2N1bWVudDoKKyAgICAgICAgbV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXItPmFkZENoaWxk
KGxheWVyLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgbV9vdmVybGF5R3Jh
cGhpY3NMYXllcnMuc2V0KG92ZXJsYXkuZ2V0KCksIHN0ZDo6bW92ZShsYXllcikpOwogCiAjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fd2ViUGFnZS0+
Y29yZVBhZ2UoKSkgewotICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRGb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3Np
dGlvblVwZGF0ZXModHJ1ZSk7CisgICAgaWYgKG92ZXJsYXktPm92ZXJsYXlUeXBlKCkgPT0gUGFn
ZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpWaWV3KSB7CisgICAgICAgIGlmIChQYWdlKiBwYWdlID0g
bV93ZWJQYWdlLT5jb3JlUGFnZSgpKSB7CisgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KSkKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Rm9yY2VTeW5jaHJv
bm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKHRydWUpOworICAgICAgICB9CiAgICAgfQog
I2VuZGlmCiB9CkBAIC0xMDIsMTcgKzEyMSwzNiBAQCB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxl
cjo6dW5pbnN0YWxsUGFnZU92ZXJsYXkoUGFnZU92ZXJsYXkqIG92ZXJsYXksIFBhZ2VPdmVybAog
ICAgIEFTU0VSVChvdmVybGF5SW5kZXggIT0gbm90Rm91bmQpOwogICAgIG1fcGFnZU92ZXJsYXlz
LnJlbW92ZShvdmVybGF5SW5kZXgpOwogCi0gICAgaWYgKCFtX3BhZ2VPdmVybGF5cy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICB1cGRhdGVGb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5
ZXJQb3NpdGlvblVwZGF0ZXMoKTsKK30KIAordm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnVw
ZGF0ZUZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcygpCit7CiAjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyAgICBib29sIGZvcmNlU3luY2hyb25vdXNTY3JvbGxM
YXllclBvc2l0aW9uVXBkYXRlcyA9IGZhbHNlOworCisgICAgZm9yIChhdXRvJiBvdmVybGF5IDog
bV9wYWdlT3ZlcmxheXMpIHsKKyAgICAgICAgaWYgKG92ZXJsYXktPm92ZXJsYXlUeXBlKCkgPT0g
UGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpWaWV3KQorICAgICAgICAgICAgZm9yY2VTeW5jaHJv
bm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAo
UGFnZSogcGFnZSA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKSkgewogICAgICAgICBpZiAoU2Nyb2xs
aW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRGb3JjZVN5
bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMoZmFsc2UpOworICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldEZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0
aW9uVXBkYXRlcyhmb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOwog
ICAgIH0KICNlbmRpZgogfQogCitzdGF0aWMgdm9pZCB1cGRhdGVPdmVybGF5R2VvbWV0cnkoUGFn
ZU92ZXJsYXkqIG92ZXJsYXksIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit7CisgICAg
aWYgKCFncmFwaGljc0xheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZ3JhcGhpY3NMYXllci0+c2V0UG9zaXRpb24ob3ZlcmxheS0+ZnJhbWUoKS5sb2NhdGlvbigp
KTsKKyAgICBncmFwaGljc0xheWVyLT5zZXRTaXplKG92ZXJsYXktPmZyYW1lKCkuc2l6ZSgpKTsK
KyAgICBncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKwogdm9pZCBQYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OnNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KFBhZ2VPdmVybGF5KiBv
dmVybGF5LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgR3JhcGhp
Y3NMYXllciogZ3JhcGhpY3NMYXllciA9IG1fb3ZlcmxheUdyYXBoaWNzTGF5ZXJzLmdldChvdmVy
bGF5KTsKQEAgLTEyMSw4ICsxNTksOSBAQCB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6c2V0
UGFnZU92ZXJsYXlOZWVkc0Rpc3BsYXkoUGFnZU92ZXJsYXkqIG92ZXJsYXksIGNvbgogCiAgICAg
aWYgKCFncmFwaGljc0xheWVyLT5kcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBncmFwaGljc0xh
eWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgICAgIGdyYXBoaWNzTGF5ZXItPnNldFNp
emUobV93ZWJQYWdlLT5zaXplKCkpOworICAgICAgICB1cGRhdGVPdmVybGF5R2VvbWV0cnkob3Zl
cmxheSwgZ3JhcGhpY3NMYXllcik7CiAgICAgfQorCiAgICAgZ3JhcGhpY3NMYXllci0+c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7CiB9CiAKQEAgLTE0NywxMSArMTg2LDE3IEBAIHZv
aWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpjbGVhclBhZ2VPdmVybGF5KFBhZ2VPdmVybGF5KiBv
dmVybGF5KQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld1NpemUo
KQogewotICAgIGZvciAoYXV0byYgZ3JhcGhpY3NMYXllciA6IG1fb3ZlcmxheUdyYXBoaWNzTGF5
ZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50
KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZ3JhcGhpY3NMYXllci0+c2V0U2l6
ZShtX3dlYlBhZ2UtPnNpemUoKSk7Ci0gICAgICAgIGdyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlz
cGxheSgpOworICAgIGZvciAoYXV0byYgb3ZlcmxheUFuZExheWVyIDogbV9vdmVybGF5R3JhcGhp
Y3NMYXllcnMpIHsKKyAgICAgICAgaWYgKG92ZXJsYXlBbmRMYXllci5rZXktPm92ZXJsYXlUeXBl
KCkgPT0gUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpWaWV3KQorICAgICAgICAgICAgdXBkYXRl
T3ZlcmxheUdlb21ldHJ5KG92ZXJsYXlBbmRMYXllci5rZXksIG92ZXJsYXlBbmRMYXllci52YWx1
ZS5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hh
bmdlRG9jdW1lbnRTaXplKCkKK3sKKyAgICBmb3IgKGF1dG8mIG92ZXJsYXlBbmRMYXllciA6IG1f
b3ZlcmxheUdyYXBoaWNzTGF5ZXJzKSB7CisgICAgICAgIGlmIChvdmVybGF5QW5kTGF5ZXIua2V5
LT5vdmVybGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpCisg
ICAgICAgICAgICB1cGRhdGVPdmVybGF5R2VvbWV0cnkob3ZlcmxheUFuZExheWVyLmtleSwgb3Zl
cmxheUFuZExheWVyLnZhbHVlLmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE2Myw4ICsyMDgsMTEg
QEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZVByZWZlcmVuY2VzKCkKIAog
dm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKCkK
IHsKLSAgICBtX3Jvb3RMYXllci0+bm90ZURldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZElu
Y2x1ZGluZ0Rlc2NlbmRhbnRzKCk7Ci0gICAgaW52YWxpZGF0ZUFsbFBhZ2VPdmVybGF5TGF5ZXJz
KCk7CisgICAgbV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXItPm5vdGVEZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNjZW5kYW50cygpOworICAgIG1fdmlld092ZXJsYXlS
b290TGF5ZXItPm5vdGVEZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNj
ZW5kYW50cygpOworCisgICAgZm9yIChhdXRvJiBncmFwaGljc0xheWVyIDogbV9vdmVybGF5R3Jh
cGhpY3NMYXllcnMudmFsdWVzKCkpCisgICAgICAgIGdyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlz
cGxheSgpOwogfQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlRXhwb3Nl
ZFJlY3QoKQpAQCAtMTcyLDIwICsyMjAsMTcgQEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6
OmRpZENoYW5nZUV4cG9zZWRSZWN0KCkKICAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPnNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgUGFnZU92ZXJsYXlDb250
cm9sbGVyOjpkaWRTY3JvbGxBbnlGcmFtZSgpCit2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6
ZGlkU2Nyb2xsRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIGludmFsaWRhdGVBbGxQYWdlT3Zl
cmxheUxheWVycygpOwotfQotCi12b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6aW52YWxpZGF0
ZUFsbFBhZ2VPdmVybGF5TGF5ZXJzKCkKLXsKLSAgICBmb3IgKGF1dG8mIGdyYXBoaWNzTGF5ZXIg
OiBtX292ZXJsYXlHcmFwaGljc0xheWVycy52YWx1ZXMoKSkKLSAgICAgICAgZ3JhcGhpY3NMYXll
ci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgZm9yIChhdXRvJiBvdmVybGF5QW5kTGF5ZXIgOiBt
X292ZXJsYXlHcmFwaGljc0xheWVycykgeworICAgICAgICBpZiAob3ZlcmxheUFuZExheWVyLmtl
eS0+b3ZlcmxheVR5cGUoKSA9PSBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OlZpZXcgfHwgIWZy
YW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgb3ZlcmxheUFuZExheWVyLnZhbHVlLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKKyAgICB9CiB9CiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVy
OjpmbHVzaFBhZ2VPdmVybGF5TGF5ZXJzKEZsb2F0UmVjdCB2aXNpYmxlUmVjdCkKIHsKLSAgICBt
X3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVSZWN0KTsKKyAgICBtX3Zp
ZXdPdmVybGF5Um9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUodmlzaWJsZVJlY3QpOwog
fQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6dXBkYXRlU2V0dGluZ3NGb3JMYXllcihH
cmFwaGljc0xheWVyKiBsYXllcikKQEAgLTI1OSw0ICszMDQsMTYgQEAgdm9pZCBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXI6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopCiAgICAgbV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5zY2hlZHVsZUNvbXBvc2l0aW5n
TGF5ZXJGbHVzaCgpOwogfQogCit2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdl
T3ZlcmxheUZyYW1lKFBhZ2VPdmVybGF5KiBvdmVybGF5KQoreworICAgIEFTU0VSVChtX3BhZ2VP
dmVybGF5cy5jb250YWlucyhvdmVybGF5KSk7CisKKyAgICBHcmFwaGljc0xheWVyKiBncmFwaGlj
c0xheWVyID0gbV9vdmVybGF5R3JhcGhpY3NMYXllcnMuZ2V0KG92ZXJsYXkpOworCisgICAgaWYg
KCFncmFwaGljc0xheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
dXBkYXRlT3ZlcmxheUdlb21ldHJ5KG92ZXJsYXksIGdyYXBoaWNzTGF5ZXIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaAppbmRleCA3NDMwMmU3Li4wYTg3NzZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJs
YXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Bh
Z2VPdmVybGF5Q29udHJvbGxlci5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEZyYW1lOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTW91c2VF
dmVudDsKQEAgLTQ0LDcgKzQ4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0aWFsaXplKCk7
CiAKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiByb290TGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3Jvb3RMYXllci5nZXQoKTsgfQorICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGRvY3Vt
ZW50T3ZlcmxheVJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRPdmVybGF5Um9v
dExheWVyLmdldCgpOyB9CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogdmlld092ZXJsYXlS
b290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdPdmVybGF5Um9vdExheWVyLmdldCgpOyB9
CiAKICAgICB2b2lkIGluc3RhbGxQYWdlT3ZlcmxheShQYXNzUmVmUHRyPFBhZ2VPdmVybGF5Piwg
UGFnZU92ZXJsYXk6OkZhZGVNb2RlKTsKICAgICB2b2lkIHVuaW5zdGFsbFBhZ2VPdmVybGF5KFBh
Z2VPdmVybGF5KiwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlKTsKQEAgLTU0LDEwICs1OSwxMiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhclBhZ2VPdmVybGF5KFBhZ2VPdmVybGF5Kik7CiAKICAgICB2
b2lkIGRpZENoYW5nZVZpZXdTaXplKCk7CisgICAgdm9pZCBkaWRDaGFuZ2VEb2N1bWVudFNpemUo
KTsKICAgICB2b2lkIGRpZENoYW5nZVByZWZlcmVuY2VzKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VE
ZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIHZvaWQgZGlkQ2hhbmdlRXhwb3NlZFJlY3QoKTsKLSAg
ICB2b2lkIGRpZFNjcm9sbEFueUZyYW1lKCk7CisgICAgdm9pZCBkaWRTY3JvbGxGcmFtZShXZWJD
b3JlOjpGcmFtZSopOworICAgIHZvaWQgZGlkQ2hhbmdlT3ZlcmxheUZyYW1lKFBhZ2VPdmVybGF5
Kik7CiAKICAgICB2b2lkIGZsdXNoUGFnZU92ZXJsYXlMYXllcnMoV2ViQ29yZTo6RmxvYXRSZWN0
KTsKIApAQCAtNjksNyArNzYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVTZXR0aW5nc0ZvckxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKLSAgICB2b2lkIGlu
dmFsaWRhdGVBbGxQYWdlT3ZlcmxheUxheWVycygpOworICAgIHZvaWQgdXBkYXRlRm9yY2VTeW5j
aHJvbm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKCk7CiAKICAgICAvLyBXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSkgb3ZlcnJpZGUgeyB9CkBA
IC03OCw3ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRDaGFuZ2Vz
Rm9yTGF5ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0IG92ZXJyaWRlIHsg
fQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9vdExh
eWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2RvY3Vt
ZW50T3ZlcmxheVJvb3RMYXllcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllcj4gbV92aWV3T3ZlcmxheVJvb3RMYXllcjsKICAgICBIYXNoTWFwPFBhZ2VPdmVybGF5
Kiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+PiBtX292ZXJsYXlHcmFw
aGljc0xheWVyczsKICAgICBWZWN0b3I8UmVmUHRyPFBhZ2VPdmVybGF5Pj4gbV9wYWdlT3Zlcmxh
eXM7CiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ0NTgzNGUuLjM2NDY3YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MTcsNyArMzgx
Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVjb21wdXRlU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVs
RXZlbnRzU3RhdGUoKQogCiBGcmFtZSogV2ViUGFnZTo6bWFpbkZyYW1lKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wYWdlID8gJm1fcGFnZS0+bWFpbkZyYW1lKCkgOiAwOworICAgIHJldHVybiBt
X3BhZ2UgPyAmbV9wYWdlLT5tYWluRnJhbWUoKSA6IG51bGxwdHI7CiB9CiAKIEZyYW1lVmlldyog
V2ViUGFnZTo6bWFpbkZyYW1lVmlldygpIGNvbnN0CkBAIC0zODI1LDcgKzM4MjUsNyBAQCBGcmFt
ZVZpZXcqIFdlYlBhZ2U6Om1haW5GcmFtZVZpZXcoKSBjb25zdAogICAgIGlmIChGcmFtZSogZnJh
bWUgPSBtYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lLT52aWV3KCk7CiAgICAgCi0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0
U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC00NTA2
LDkgKzQ1MDYsMTkgQEAgVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXImIFdlYlBhZ2U6
OnRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyKCkKIH0KICNlbmRpZgogCi12b2lkIFdl
YlBhZ2U6OmRpZENoYW5nZVNjcm9sbE9mZnNldEZvckFueUZyYW1lKCkKK3ZvaWQgV2ViUGFnZTo6
ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIG1fcGFn
ZU92ZXJsYXlDb250cm9sbGVyLmRpZFNjcm9sbEFueUZyYW1lKCk7CisgICAgbV9wYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuZGlkU2Nyb2xsRnJhbWUoZnJhbWUpOworCisgICAgaWYgKCFmcmFtZS0+aXNN
YWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhpcyBpcyBjYWxsZWQg
d2hlbiB0ZWFyaW5nIGRvd24gYSBGcmFtZVZpZXcsIHRoZSBXZWJDb3JlOjpGcmFtZSdzCisgICAg
Ly8gY3VycmVudCBGcmFtZVZpZXcgd2lsbCBiZSBudWxsLgorICAgIGlmICghZnJhbWUtPnZpZXco
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlu
bmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM5ZDY0MDQuLjNkZjg0ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNzgwLDcgKzc4MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0
cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogI2VuZGlmCiAKLSAgICB2
b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldEZvckFueUZyYW1lKCk7CisgICAgdm9pZCBkaWRDaGFu
Z2VTY3JvbGxPZmZzZXRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogCiBwcml2YXRlOgogICAg
IFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggZjE4OTVmMC4uZTBk
MGEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtODEsNiArODEs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9h
dCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBtYWluRnJhbWVDb250ZW50
U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworCiAgICAgdm9p
ZCB1cGRhdGVTY3JvbGxlZEV4cG9zZWRSZWN0KCk7CiAKICAgICB2b2lkIGxheWVyRmx1c2hUaW1l
ckZpcmVkKFdlYkNvcmU6OlRpbWVyPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggMzIwZGM2MC4uMWFkYzVhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zOCw2ICszOCw4IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGlsZWRCYWNraW5nLmg+
CiAKQEAgLTg5LDkgKzkxLDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllCiAgICAgVmVjdG9y
PEdyYXBoaWNzTGF5ZXIgKj4gY2hpbGRyZW47CiAgICAgaWYgKHJvb3RMYXllcikgewogICAgICAg
ICBjaGlsZHJlbi5hcHBlbmQocm9vdExheWVyKTsKLSAgICAgICAgY2hpbGRyZW4uYXBwZW5kKG1f
d2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkucm9vdExheWVyKCkpOworICAgICAgICBj
aGlsZHJlbi5hcHBlbmQobV93ZWJQYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS52aWV3T3Zl
cmxheVJvb3RMYXllcigpKTsKICAgICB9CiAgICAgbV9yb290TGF5ZXItPnNldENoaWxkcmVuKGNo
aWxkcmVuKTsKKworICAgIG1fd2ViUGFnZS0+bWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCkt
PmNvbXBvc2l0b3IoKS5zZXREb2N1bWVudE92ZXJsYXlSb290TGF5ZXIobV93ZWJQYWdlLT5wYWdl
T3ZlcmxheUNvbnRyb2xsZXIoKS5kb2N1bWVudE92ZXJsYXlSb290TGF5ZXIoKSk7CiB9CiAKIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IEludFNp
emUmIHZpZXdTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclBvc2l0aW9uKQpAQCAtMjkzLDQgKzI5
Nyw5IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZSgpCiAgICAg
fQogfQogCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjptYWluRnJhbWVDb250ZW50
U2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYpCit7CisgICAgbV93ZWJQYWdlLT5wYWdlT3Zlcmxh
eUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEb2N1bWVudFNpemUoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRl
eCBjMzc2ZTNiLi5kMDZkNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0KQEAgLTIwMSw2ICsyMDEsOCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJgogCiB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjptYWluRnJhbWVDb250ZW50U2l6ZUNo
YW5nZWQoY29uc3QgSW50U2l6ZSYpCiB7CisgICAgbV93ZWJQYWdlLT5wYWdlT3ZlcmxheUNvbnRy
b2xsZXIoKS5kaWRDaGFuZ2VEb2N1bWVudFNpemUoKTsKKwogICAgIGlmICghbV93ZWJQYWdlLT5t
aW5pbXVtTGF5b3V0U2l6ZSgpLndpZHRoKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDQ1LDcg
KzQ0Nyw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21w
b3NpdGluZ0xheWVyKENBTGF5ZXIgKmxheWVyKQogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsK
ICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwogCi0gICAgW21faG9z
dGluZ0xheWVyIHNldFN1YmxheWVyczpsYXllciA/IEBbIGxheWVyLCBtX3dlYlBhZ2UtPnBhZ2VP
dmVybGF5Q29udHJvbGxlcigpLnJvb3RMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkgXSA6IEBbIF1d
OworICAgIFttX2hvc3RpbmdMYXllciBzZXRTdWJsYXllcnM6bGF5ZXIgPyBAWyBsYXllciwgbV93
ZWJQYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS52aWV3T3ZlcmxheVJvb3RMYXllcigpLT5w
bGF0Zm9ybUxheWVyKCkgXSA6IEBbIF1dOworCisgICAgbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3
KCktPnJlbmRlclZpZXcoKS0+Y29tcG9zaXRvcigpLnNldERvY3VtZW50T3ZlcmxheVJvb3RMYXll
cihtX3dlYlBhZ2UtPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmRvY3VtZW50T3ZlcmxheVJvb3RM
YXllcigpKTsKIAogICAgIGJvb2wgaGFkUm9vdExheWVyID0gISFtX3Jvb3RMYXllcjsKICAgICBt
X3Jvb3RMYXllciA9IGxheWVyOwo=
</data>
<flag name="review"
          id="253524"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>