<?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>52898</bug_id>
          
          <creation_ts>2011-01-21 08:08:45 -0800</creation_ts>
          <short_desc>WKCACFLayerRenderer sounds like a render object, but isn&apos;t</short_desc>
          <delta_ts>2011-01-21 11:47:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52894</dependson>
          <blocked>52852</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>eric</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>338063</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 08:08:45 -0800</bug_when>
    <thetext>WKCACFLayerRenderer sounds like a render object, but isn&apos;t. We should rename it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338066</commentid>
    <comment_count>1</comment_count>
      <attachid>79741</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 08:14:08 -0800</bug_when>
    <thetext>Created attachment 79741
Rename WKCACFLayerRenderer[Client] to CACFLayerView[Client]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338082</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-21 08:56:20 -0800</bug_when>
    <thetext>Hm, &apos;view&apos; sounds like something that can be put into a hierarchy (even if we know it to be similar to CAView).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338086</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 09:06:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Hm, &apos;view&apos; sounds like something that can be put into a hierarchy (even if we know it to be similar to CAView).

Any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338121</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-21 10:00:53 -0800</bug_when>
    <thetext>What is the role of this class when we&apos;re using a CAView on Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338141</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 10:23:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; What is the role of this class when we&apos;re using a CAView on Windows?

This class owns the PlatformCALayer tree, and knows about WebCore concepts like flushing pending layer changes. It will use CAView just for the purpose of actually rendering those changes to the screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338142</commentid>
    <comment_count>6</comment_count>
      <attachid>79741</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 10:23:22 -0800</bug_when>
    <thetext>Comment on attachment 79741
Rename WKCACFLayerRenderer[Client] to CACFLayerView[Client]

I talked with Simon and John Sullivan about this, and came up with the name CACFLayerTreeHost. I&apos;ll do the rename and post a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338169</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-21 11:04:58 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Hm, &apos;view&apos; sounds like something that can be put into a hierarchy (even if we know it to be similar to CAView).
&gt; 
&gt; Any suggestions?

We could make it a peer of PlatformCALayer and friends. How about PlatformCACompositor. It would have a .h file and then PlatformCACompositorWin.cpp for the Windows implementation. We wouldn&apos;t have a Mac version, but that&apos;s ok. It might be useful for other platforms in the future.

I know we already have RenderLayerCompositor, but we&apos;re really running out of concepts here! And this class would be more of a compositor than RenderLayerCompositor. So it should win :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338171</commentid>
    <comment_count>8</comment_count>
      <attachid>79762</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 11:06:56 -0800</bug_when>
    <thetext>Created attachment 79762
Rename WKCACFLayerRenderer[Client] to CACFLayerTreeHost[Client]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338197</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-21 11:36:24 -0800</bug_when>
    <thetext>Committed r76370: &lt;http://trac.webkit.org/changeset/76370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338217</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 11:47:28 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76370 might have broken Leopard Intel Debug (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79741</attachid>
            <date>2011-01-21 08:14:08 -0800</date>
            <delta_ts>2011-01-21 11:06:48 -0800</delta_ts>
            <desc>Rename WKCACFLayerRenderer[Client] to CACFLayerView[Client]</desc>
            <filename>bug-52898-20110121111435.patch</filename>
            <type>text/plain</type>
            <size>31525</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzY2NhMTQ2NmFlNDNkNjI0ZGJhZDUzYWIyMzlkNDkzYmY4NGQxYzE3Li5k
NWFjYjljODExM2ZjZDdmYTEyODVkZDJmOTI1MTUzZmMzMmFiYTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMzAgQEAKIDIwMTEtMDEtMjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CisgICAgICAgIFJlbmFtZSBXS0NBQ0ZMYXllclJlbmRlcmVyW0NsaWVudF0gdG8gQ0FDRkxheWVy
Vmlld1tDbGllbnRdCisKKyAgICAgICAgQWxzbyByZW5hbWVkIGEgZmV3IGZ1bmN0aW9ucyBhbmQg
ZGF0YSBtZW1iZXJzIHRvIG1hdGNoLgorCisgICAgICAgIEZpeGVzIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzUyODk4PiBXS0NBQ0ZMYXllclJlbmRlcmVyIHNvdW5kcyBsaWtlIGEgcmVuZGVyIG9iamVj
dCwgYnV0IGlzbid0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogVXBkYXRlZCBmaWxlcycgbmFt
ZXMgYW5kIHBhdGhzLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZVF1YXJ0ekNv
cmUudnNwcm9wczogQWRkZWQgcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luIHRvIHRoZSBpbmNsdWRl
CisgICAgICAgIHBhdGguCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGlu
Z0hlYWRlcnMuY21kOiBDb3B5IGhlYWRlcnMgZnJvbSBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4s
IHRvby4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJWaWV3
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
S0NBQ0ZMYXllclJlbmRlcmVyLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vQ0FDRkxheWVyVmlldy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuaC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdy5oOgorICAgICAgICBVcGRhdGVkIGZvciByZW5hbWVzLgorCisyMDExLTAxLTIx
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwogICAgICAgICBSZXBsYWNlIHNvbWUg
InN5bmMgY29tcG9zaXRpbmcgc3RhdGUiIHRlcm1pbm9sb2d5IHdpdGggImZsdXNoIHBlbmRpbmcg
R3JhcGhpY3NMYXllciBjaGFuZ2VzIgogCiAgICAgICAgIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGRp
cmVjdGlvbiBpbiB3aGljaCBvdXIgY29kZSBpcyBtb3ZpbmcuIEkgY2hvc2UgIkdyYXBoaWNzTGF5
ZXIiIGFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDVjMzA2OTlmOWY4OTM5ZWIwZWIyOTRjMzY0ZjFhZmMwNGZiY2E2NTAuLmNkY2RmZmE4MWU2
MmQ4MTliYTQ2MzYxOWU0ZmFiM2M0NmRlNTBlZTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNzM5Niw0NiArMjczOTYsNiBAQAogCQkJCQkJ
PgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXHdpblxXS0NBQ0ZMYXllclJlbmRlcmVyLmNwcCIKLQkJCQkJCT4KLQkJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJPFRv
b2wKLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9
IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8L0ZpbGU+
Ci0JCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdp
blxXS0NBQ0ZMYXllclJlbmRlcmVyLmgiCi0JCQkJCQk+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KLQkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9
IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgot
CQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJCQkJCS8+
Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxXS0NBSW1hZ2VRdWV1
ZS5jcHAiCiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTI4ODk1LDYgKzI4
ODU1LDQ2IEBACiAJCQkJCQlOYW1lPSJ3aW4iCiAJCQkJCQk+CiAJCQkJCQk8RmlsZQorCQkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fcd2luXENBQ0ZMYXllclZpZXcu
Y3BwIgorCQkJCQkJCT4KKwkJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCQkJPgorCQkJCQkJCQk8VG9vbAorCQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJCQkJLz4KKwkJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJCT4KKwkJCQkJCQkJ
PFRvb2wKKwkJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJCS8+CisJCQkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJCTwvRmlsZT4KKwkJCQkJCTxGaWxlCisJCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYVx3aW5cQ0FDRkxheWVyVmll
dy5oIgorCQkJCQkJCT4KKwkJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCQkJPgorCQkJCQkJCQk8VG9vbAorCQkJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWls
ZFRvb2wiCisJCQkJCQkJCS8+CisJCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJCQk+CisJCQkJCQkJ
CTxUb29sCisJCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJCQkJLz4KKwkJ
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQkJPC9GaWxlPgorCQkJCQkJPEZpbGUKIAkJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXHdpblxQbGF0Zm9ybUNB
QW5pbWF0aW9uV2luLmNwcCIKIAkJCQkJCQk+CiAJCQkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlUXVhcnR6Q29yZS52c3Byb3BzIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZVF1YXJ0ekNvcmUudnNwcm9wcwpp
bmRleCBhOTg2NmQ5MDEzZWUzNzBjYmM3OTVmOTFhZDJiMDdiZDljMDQ0NjkwLi40ODMyOGM5ZDcy
YWM4MzBmNjVjZDU1NGIxMGFlZGM1ZWNkNDc5ZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlUXVhcnR6Q29yZS52c3Byb3BzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVRdWFydHpDb3JlLnZzcHJvcHMKQEAgLTYsNyAr
Niw3IEBACiAJPgogCTxUb29sCiAJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCUFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoRFhTREtfRElSKVxJbmNsdWRlJnF1b3Q7Igor
CQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpXC4uXHBs
YXRmb3JtXGdyYXBoaWNzXGNhXHdpbiZxdW90OzsmcXVvdDskKERYU0RLX0RJUilcSW5jbHVkZSZx
dW90OyIKIAkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlFVQVJUWkNPUkVfRExMIgogCS8+CiA8
L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAppbmRleCA3MzkzZDM0ODM2
NmY4YjdlZmE2M2ZkOWM0MGEyNTYyYzk1OTBmYWIzLi5iM2YxOWM2NWUxYmE0OTM1NDJmZGEyZWYz
Yjc5MzQzOTk5YzhiNzAxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKQEAgLTM5LDYgKzM5LDcgQEAgeGNvcHkg
L3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2wKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxn
cmFwaGljc1wlMVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUi
CiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3Jt
c1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAv
eSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2FcKi5oIiAiJUNPTkZJR1VS
QVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgoreGNvcHkgL3kgL2QgIiVQcm9qZWN0RGly
JS4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXHdpblwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElS
JVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1c
Z3JhcGhpY3Ncd2luXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29y
ZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cJTFc
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCIgIiVDT05G
SUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJWaWV3LmNwcApz
aW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJWaWV3LmNwcAppbmRleCA5ZmY4
ZTFjMGQyYTgzNGIzZDNhNzkyZjg2YWE1MzJkNTg5NDgyOTE0Li40NjhiOTdlNTczZDE3YjEwMzhh
OGJjOGViNDQ4OGQzNzVmNDE2Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclZpZXcuY3BwCkBAIC0zMSw3ICsz
MSw3IEBACiAjZGVmaW5lIEQzRF9ERUJVR19JTkZPCiAjZW5kaWYKIAotI2luY2x1ZGUgIldLQ0FD
RkxheWVyUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJDQUNGTGF5ZXJWaWV3LmgiCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIK
QEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgYm9vbCBoYXJkd2FyZUNhcGFiaWxpdGllc0luZGlj
YXRlQ29yZUFuaW1hdGlvblN1cHBvcnQoY29uc3QgRDNEQ0FQUzkmIGNhcAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFdLQ0FDRkxheWVyUmVuZGVyZXI6OmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBdmFpbGFibGUoKQorYm9vbCBDQUNGTGF5ZXJWaWV3OjphY2NlbGVyYXRlZENvbXBvc2l0aW5n
QXZhaWxhYmxlKCkKIHsKICAgICBzdGF0aWMgYm9vbCBhdmFpbGFibGU7CiAgICAgc3RhdGljIGJv
b2wgdGVzdGVkOwpAQCAtMTY0LDI4ICsxNjQsMjggQEAgYm9vbCBXS0NBQ0ZMYXllclJlbmRlcmVy
OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkKICAgICAgICAgcmV0dXJuIGF2YWls
YWJsZTsKICAgICB9CiAKLSAgICBSZWZQdHI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4gdGVzdExheWVy
UmVuZGVyZXIgPSBXS0NBQ0ZMYXllclJlbmRlcmVyOjpjcmVhdGUoKTsKLSAgICB0ZXN0TGF5ZXJS
ZW5kZXJlci0+c2V0SG9zdFdpbmRvdyh0ZXN0V2luZG93KTsKLSAgICBhdmFpbGFibGUgPSB0ZXN0
TGF5ZXJSZW5kZXJlci0+Y3JlYXRlUmVuZGVyZXIoKTsKKyAgICBSZWZQdHI8Q0FDRkxheWVyVmll
dz4gdGVzdExheWVyVmlldyA9IENBQ0ZMYXllclZpZXc6OmNyZWF0ZSgpOworICAgIHRlc3RMYXll
clZpZXctPnNldEhvc3RXaW5kb3codGVzdFdpbmRvdyk7CisgICAgYXZhaWxhYmxlID0gdGVzdExh
eWVyVmlldy0+Y3JlYXRlUmVuZGVyZXIoKTsKICAgICA6OkRlc3Ryb3lXaW5kb3codGVzdFdpbmRv
dyk7CiAKICAgICByZXR1cm4gYXZhaWxhYmxlOwogfQogCi1QYXNzUmVmUHRyPFdLQ0FDRkxheWVy
UmVuZGVyZXI+IFdLQ0FDRkxheWVyUmVuZGVyZXI6OmNyZWF0ZSgpCitQYXNzUmVmUHRyPENBQ0ZM
YXllclZpZXc+IENBQ0ZMYXllclZpZXc6OmNyZWF0ZSgpCiB7CiAgICAgaWYgKCFhY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV0tDQUNGTGF5ZXJSZW5kZXJlcigpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENBQ0ZMYXllclZpZXcoKSk7CiB9CiAKLVdLQ0FDRkxheWVyUmVuZGVyZXI6OldLQ0FDRkxh
eWVyUmVuZGVyZXIoKQorQ0FDRkxheWVyVmlldzo6Q0FDRkxheWVyVmlldygpCiAgICAgOiBtX2Ns
aWVudCgwKQogICAgICwgbV9taWdodEJlQWJsZVRvQ3JlYXRlRGV2aWNlTGF0ZXIodHJ1ZSkKICAg
ICAsIG1fcm9vdExheWVyKFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlUm9vdExheWVyLCAwKSkKICAgICAsIG1fY29udGV4dCh3a0NBQ0ZDb250ZXh0Q3Jl
YXRlKCkpCiAgICAgLCBtX2hvc3RXaW5kb3coMCkKLSAgICAsIG1fcmVuZGVyVGltZXIodGhpcywg
JldLQ0FDRkxheWVyUmVuZGVyZXI6OnJlbmRlclRpbWVyRmlyZWQpCisgICAgLCBtX3JlbmRlclRp
bWVyKHRoaXMsICZDQUNGTGF5ZXJWaWV3OjpyZW5kZXJUaW1lckZpcmVkKQogICAgICwgbV9tdXN0
UmVzZXRMb3N0RGV2aWNlQmVmb3JlUmVuZGVyaW5nKGZhbHNlKQogICAgICwgbV9zaG91bGRGbHVz
aFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlcyhmYWxzZSkKIHsKQEAgLTIwMSw3ICsyMDEsNyBA
QCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpXS0NBQ0ZMYXllclJlbmRlcmVyKCkKICAgICAvLyBjYXVz
ZSBhbnkgcmVwb3NpdGlvbmluZy4KICAgICAvLyBTY3JvbGxpbmcgd2lsbCBhZmZlY3Qgb25seSB0
aGUgcG9zaXRpb24gb2YgdGhlIHNjcm9sbCBsYXllciB3aXRob3V0IGFmZmVjdGluZyB0aGUgYm91
bmRzLgogCi0gICAgbV9yb290TGF5ZXItPnNldE5hbWUoIldLQ0FDRkxheWVyUmVuZGVyZXIgcm9v
dExheWVyIik7CisgICAgbV9yb290TGF5ZXItPnNldE5hbWUoIkNBQ0ZMYXllclZpZXcgcm9vdExh
eWVyIik7CiAgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAw
LCAwKSk7CiAgICAgbV9yb290TGF5ZXItPnNldEdlb21ldHJ5RmxpcHBlZCh0cnVlKTsKIApAQCAt
MjIwLDEzICsyMjAsMTMgQEAgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6V0tDQUNGTGF5ZXJSZW5kZXJl
cigpCiAjZW5kaWYKIH0KIAotV0tDQUNGTGF5ZXJSZW5kZXJlcjo6fldLQ0FDRkxheWVyUmVuZGVy
ZXIoKQorQ0FDRkxheWVyVmlldzo6fkNBQ0ZMYXllclZpZXcoKQogewogICAgIHNldEhvc3RXaW5k
b3coMCk7CiAgICAgd2tDQUNGQ29udGV4dERlc3Ryb3kobV9jb250ZXh0KTsKIH0KIAotdm9pZCBX
S0NBQ0ZMYXllclJlbmRlcmVyOjpzZXRIb3N0V2luZG93KEhXTkQgd2luZG93KQordm9pZCBDQUNG
TGF5ZXJWaWV3OjpzZXRIb3N0V2luZG93KEhXTkQgd2luZG93KQogewogICAgIGlmICh3aW5kb3cg
PT0gbV9ob3N0V2luZG93KQogICAgICAgICByZXR1cm47CkBAIC0yNDAsMTcgKzI0MCwxNyBAQCB2
b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldEhvc3RXaW5kb3coSFdORCB3aW5kb3cpCiAgICAg
ICAgIGNyZWF0ZVJlbmRlcmVyKCk7CiB9CiAKLVBsYXRmb3JtQ0FMYXllciogV0tDQUNGTGF5ZXJS
ZW5kZXJlcjo6cm9vdExheWVyKCkgY29uc3QKK1BsYXRmb3JtQ0FMYXllciogQ0FDRkxheWVyVmll
dzo6cm9vdExheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9
CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVyKQordm9pZCBDQUNGTGF5ZXJWaWV3OjphZGRQ
ZW5kaW5nQW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbGF5ZXIpCiB7
CiAgICAgbV9wZW5kaW5nQW5pbWF0ZWRMYXllcnMuYWRkKGxheWVyKTsKIH0KIAotdm9pZCBXS0NB
Q0ZMYXllclJlbmRlcmVyOjpzZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
KQordm9pZCBDQUNGTGF5ZXJWaWV3OjpzZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5ZXIq
IGxheWVyKQogewogICAgIG1fcm9vdExheWVyLT5yZW1vdmVBbGxTdWJsYXllcnMoKTsKICAgICBt
X3Jvb3RDaGlsZExheWVyID0gbGF5ZXI7CkBAIC0yNTgsMTIgKzI1OCwxMiBAQCB2b2lkIFdLQ0FD
RkxheWVyUmVuZGVyZXI6OnNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIp
CiAgICAgICAgIG1fcm9vdExheWVyLT5hcHBlbmRTdWJsYXllcihtX3Jvb3RDaGlsZExheWVyLmdl
dCgpKTsKIH0KICAgIAotdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpsYXllclRyZWVEaWRDaGFu
Z2UoKQordm9pZCBDQUNGTGF5ZXJWaWV3OjpsYXllclRyZWVEaWRDaGFuZ2UoKQogewogICAgIHJl
bmRlclNvb24oKTsKIH0KIAotYm9vbCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpjcmVhdGVSZW5kZXJl
cigpCitib29sIENBQ0ZMYXllclZpZXc6OmNyZWF0ZVJlbmRlcmVyKCkKIHsKICAgICBpZiAobV9k
M2REZXZpY2UgfHwgIW1fbWlnaHRCZUFibGVUb0NyZWF0ZURldmljZUxhdGVyKQogICAgICAgICBy
ZXR1cm4gbV9kM2REZXZpY2U7CkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBXS0NBQ0ZMYXllclJl
bmRlcmVyOjpjcmVhdGVSZW5kZXJlcigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV0tD
QUNGTGF5ZXJSZW5kZXJlcjo6ZGVzdHJveVJlbmRlcmVyKCkKK3ZvaWQgQ0FDRkxheWVyVmlldzo6
ZGVzdHJveVJlbmRlcmVyKCkKIHsKICAgICB3a0NBQ0ZDb250ZXh0U2V0TGF5ZXIobV9jb250ZXh0
LCBtX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpKTsKIApAQCAtMzUxLDcgKzM1MSw3IEBAIHZv
aWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6ZGVzdHJveVJlbmRlcmVyKCkKICAgICBtX21pZ2h0QmVB
YmxlVG9DcmVhdGVEZXZpY2VMYXRlciA9IHRydWU7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5k
ZXJlcjo6cmVzaXplKCkKK3ZvaWQgQ0FDRkxheWVyVmlldzo6cmVzaXplKCkKIHsKICAgICBpZiAo
IW1fZDNkRGV2aWNlKQogICAgICAgICByZXR1cm47CkBAIC0zOTYsMTIgKzM5NiwxMiBAQCBzdGF0
aWMgdm9pZCBnZXREaXJ0eVJlY3RzKEhXTkQgd2luZG93LCBWZWN0b3I8Q0dSZWN0PiYgb3V0UmVj
dHMpCiAgICAgICAgIG91dFJlY3RzW2ldID0gd2luUmVjdFRvQ0dSZWN0KCpyZWN0LCBjbGllbnRS
ZWN0KTsKIH0KIAotdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpyZW5kZXJUaW1lckZpcmVkKFRp
bWVyPFdLQ0FDRkxheWVyUmVuZGVyZXI+KikKK3ZvaWQgQ0FDRkxheWVyVmlldzo6cmVuZGVyVGlt
ZXJGaXJlZChUaW1lcjxDQUNGTGF5ZXJWaWV3PiopCiB7CiAgICAgcGFpbnQoKTsKIH0KIAotdm9p
ZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpwYWludCgpCit2b2lkIENBQ0ZMYXllclZpZXc6OnBhaW50
KCkKIHsKICAgICBjcmVhdGVSZW5kZXJlcigpOwogICAgIGlmICghbV9kM2REZXZpY2UpIHsKQEAg
LTQxNSw3ICs0MTUsNyBAQCB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnBhaW50KCkKICAgICBy
ZW5kZXIoZGlydHlSZWN0cyk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVuZGVy
KGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiB3aW5kb3dEaXJ0eVJlY3RzKQordm9pZCBDQUNGTGF5ZXJW
aWV3OjpyZW5kZXIoY29uc3QgVmVjdG9yPENHUmVjdD4mIHdpbmRvd0RpcnR5UmVjdHMpCiB7CiAg
ICAgQVNTRVJUKG1fZDNkRGV2aWNlKTsKIApAQCAtNTE3LDE5ICs1MTcsMTkgQEAgdm9pZCBXS0NB
Q0ZMYXllclJlbmRlcmVyOjpyZW5kZXIoY29uc3QgVmVjdG9yPENHUmVjdD4mIHdpbmRvd0RpcnR5
UmVjdHMpCiAgICAgICAgIHJlbmRlclNvb24oKTsKIH0KIAotdm9pZCBXS0NBQ0ZMYXllclJlbmRl
cmVyOjpyZW5kZXJTb29uKCkKK3ZvaWQgQ0FDRkxheWVyVmlldzo6cmVuZGVyU29vbigpCiB7CiAg
ICAgaWYgKCFtX3JlbmRlclRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcmVuZGVyVGltZXIu
c3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OmZsdXNoUGVu
ZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCit2b2lkIENBQ0ZMYXllclZpZXc6OmZsdXNo
UGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiB7CiAgICAgbV9zaG91bGRGbHVzaFBl
bmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlcyA9IHRydWU7CiAgICAgcmVuZGVyU29vbigpOwogfQog
Ci1DR1JlY3QgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Ym91bmRzKCkgY29uc3QKK0NHUmVjdCBDQUNG
TGF5ZXJWaWV3Ojpib3VuZHMoKSBjb25zdAogewogICAgIFJFQ1QgY2xpZW50UmVjdDsKICAgICBH
ZXRDbGllbnRSZWN0KG1faG9zdFdpbmRvdywgJmNsaWVudFJlY3QpOwpAQCAtNTM3LDcgKzUzNyw3
IEBAIENHUmVjdCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpib3VuZHMoKSBjb25zdAogICAgIHJldHVy
biB3aW5SZWN0VG9DR1JlY3QoY2xpZW50UmVjdCk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5k
ZXJlcjo6aW5pdEQzREdlb21ldHJ5KCkKK3ZvaWQgQ0FDRkxheWVyVmlldzo6aW5pdEQzREdlb21l
dHJ5KCkKIHsKICAgICBBU1NFUlQobV9kM2REZXZpY2UpOwogCkBAIC01NTQsNyArNTU0LDcgQEAg
dm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjppbml0RDNER2VvbWV0cnkoKQogICAgIG1fZDNkRGV2
aWNlLT5TZXRUcmFuc2Zvcm0oRDNEVFNfUFJPSkVDVElPTiwgJnByb2plY3Rpb24pOwogfQogCi1i
b29sIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnJlc2V0RGV2aWNlKFJlc2V0UmVhc29uIHJlYXNvbikK
K2Jvb2wgQ0FDRkxheWVyVmlldzo6cmVzZXREZXZpY2UoUmVzZXRSZWFzb24gcmVhc29uKQogewog
ICAgIEFTU0VSVChtX2QzZERldmljZSk7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5k
ZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXll
clZpZXcuaApzaW1pbGFyaXR5IGluZGV4IDg0JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5oCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVmlldy5oCmluZGV4
IDE0OTEwNmUzMjJmYTYwZmI0YjQyNzczOGU4OTFmYTZmZGMxZDY0ZWIuLmQxZGZlZmEwY2ZlNThh
Yzk5YTY5Nzg1ZjUxYTIwNmUwNzlhMzI4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclZpZXcuaApAQCAtMjMsOCAr
MjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXS0NBQ0ZMYXllclJlbmRl
cmVyX2gKLSNkZWZpbmUgV0tDQUNGTGF5ZXJSZW5kZXJlcl9oCisjaWZuZGVmIENBQ0ZMYXllclZp
ZXdfaAorI2RlZmluZSBDQUNGTGF5ZXJWaWV3X2gKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKIApAQCAtNDksMjYgKzQ5LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUGxhdGZvcm1DQUxheWVyOwogCi1jbGFzcyBXS0NBQ0ZMYXllclJlbmRlcmVyQ2xpZW50IHsK
K2NsYXNzIENBQ0ZMYXllclZpZXdDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfldLQ0FD
RkxheWVyUmVuZGVyZXJDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5DQUNGTGF5ZXJWaWV3Q2xp
ZW50KCkgeyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlbmRlcigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXMoKSB7IH0KIH07
CiAKLS8vIEZJWE1FOiBDdXJyZW50bHkgdGhlcmUgaXMgYSBXS0NBQ0ZMYXllclJlbmRlcmVyIGZv
ciBlYWNoIFdlYlZpZXcgYW5kIGVhY2gKKy8vIEZJWE1FOiBDdXJyZW50bHkgdGhlcmUgaXMgYSBD
QUNGTGF5ZXJWaWV3IGZvciBlYWNoIFdlYlZpZXcgYW5kIGVhY2gKIC8vIGhhcyBpdHMgb3duIENB
UmVuZGVyT0dMQ29udGV4dCBhbmQgRGlyZWN0M0REZXZpY2U5LCB3aGljaCBpcyBpbmVmZmljaWVu
dC4KIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4NTUpCi1j
bGFzcyBXS0NBQ0ZMYXllclJlbmRlcmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V0tDQUNGTGF5ZXJS
ZW5kZXJlcj4geworY2xhc3MgQ0FDRkxheWVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPENBQ0ZM
YXllclZpZXc+IHsKICAgICBmcmllbmQgUGxhdGZvcm1DQUxheWVyOwogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4gY3JlYXRlKCk7Ci0gICAgfldL
Q0FDRkxheWVyUmVuZGVyZXIoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDQUNGTGF5ZXJWaWV3
PiBjcmVhdGUoKTsKKyAgICB+Q0FDRkxheWVyVmlldygpOwogCiAgICAgc3RhdGljIGJvb2wgYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpOwogCi0gICAgdm9pZCBzZXRDbGllbnQoV0tD
QUNGTGF5ZXJSZW5kZXJlckNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9Cisg
ICAgdm9pZCBzZXRDbGllbnQoQ0FDRkxheWVyVmlld0NsaWVudCogY2xpZW50KSB7IG1fY2xpZW50
ID0gY2xpZW50OyB9CiAKICAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXll
ciopOwogICAgIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CkBAIC04MiwxMiArODIsMTIgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+KTsKIAogcHJpdmF0ZToKLSAgICBXS0NBQ0ZMYXllclJlbmRlcmVyKCk7
CisgICAgQ0FDRkxheWVyVmlldygpOwogCiAgICAgYm9vbCBjcmVhdGVSZW5kZXJlcigpOwogICAg
IHZvaWQgZGVzdHJveVJlbmRlcmVyKCk7CiAgICAgdm9pZCByZW5kZXJTb29uKCk7Ci0gICAgdm9p
ZCByZW5kZXJUaW1lckZpcmVkKFRpbWVyPFdLQ0FDRkxheWVyUmVuZGVyZXI+Kik7CisgICAgdm9p
ZCByZW5kZXJUaW1lckZpcmVkKFRpbWVyPENBQ0ZMYXllclZpZXc+Kik7CiAKICAgICBDR1JlY3Qg
Ym91bmRzKCkgY29uc3Q7CiAKQEAgLTEwMSwxNCArMTAxLDE0IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHJlbmRlcihjb25zdCBWZWN0b3I8Q0dSZWN0PiYgZGlydHlSZWN0cyA9IFZlY3RvcjxDR1Jl
Y3Q+KCkpOwogCi0gICAgV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCogbV9jbGllbnQ7CisgICAg
Q0FDRkxheWVyVmlld0NsaWVudCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX21pZ2h0QmVBYmxlVG9D
cmVhdGVEZXZpY2VMYXRlcjsKICAgICBDT01QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9kM2REZXZp
Y2U7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9yb290TGF5ZXI7CiAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gbV9yb290Q2hpbGRMYXllcjsKICAgICBXS0NBQ0ZDb250ZXh0KiBt
X2NvbnRleHQ7CiAgICAgSFdORCBtX2hvc3RXaW5kb3c7Ci0gICAgVGltZXI8V0tDQUNGTGF5ZXJS
ZW5kZXJlcj4gbV9yZW5kZXJUaW1lcjsKKyAgICBUaW1lcjxDQUNGTGF5ZXJWaWV3PiBtX3JlbmRl
clRpbWVyOwogICAgIGJvb2wgbV9tdXN0UmVzZXRMb3N0RGV2aWNlQmVmb3JlUmVuZGVyaW5nOwog
ICAgIGJvb2wgbV9zaG91bGRGbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlczsKICAgICBI
YXNoU2V0PFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID4gbV9wZW5kaW5nQW5pbWF0ZWRMYXllcnM7
CkBAIC0xMjIsNCArMTIyLDQgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKIAotI2VuZGlmIC8vIFdLQ0FDRkxheWVyUmVuZGVyZXJfaAorI2VuZGlm
IC8vIENBQ0ZMYXllclZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCA2NmQw
NzMyYTA3MGE5NDk4MzY1NTE3ZWE3YjUwYjg1ZDg5ODNhODM4Li4yNTYxYTEwZTI1ZWUzMDdhNTFm
YzdlZTY4ZTU2MzQ3Njg2NzFjZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAt
MjksMTAgKzI5LDEwIEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKIAorI2luY2x1
ZGUgIkNBQ0ZMYXllclZpZXcuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaCIKLSNp
bmNsdWRlICJXS0NBQ0ZMYXllclJlbmRlcmVyLmgiCiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9Db3Jl
QW5pbWF0aW9uQ0YuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC02NSwxNCAr
NjUsMTQgQEAgc3RhdGljIENGU3RyaW5nUmVmIHRvQ0FDRkZpbHRlclR5cGUoUGxhdGZvcm1DQUxh
eWVyOjpGaWx0ZXJUeXBlIHR5cGUpCiAgICAgfQogfQogCi1zdGF0aWMgV0tDQUNGTGF5ZXJSZW5k
ZXJlciogcmVuZGVyZXJGb3JMYXllcihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQorc3Rh
dGljIENBQ0ZMYXllclZpZXcqIHZpZXdGb3JMYXllcihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxh
eWVyKQogewotICAgIC8vIFdlIG5lZWQgdGhlIFdLQ0FDRkxheWVyUmVuZGVyZXIgYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgbGF5ZXIsIHdoaWNoIGlzIHN0b3JlZCBpbiB0aGUgVXNlckRhdGEgb2YgdGhl
IENBQ0ZDb250ZXh0CisgICAgLy8gV2UgbmVlZCB0aGUgQ0FDRkxheWVyVmlldyBhc3NvY2lhdGVk
IHdpdGggdGhpcyBsYXllciwgd2hpY2ggaXMgc3RvcmVkIGluIHRoZSBVc2VyRGF0YSBvZiB0aGUg
Q0FDRkNvbnRleHQKICAgICB2b2lkKiB1c2VyRGF0YSA9IHdrQ0FDRkxheWVyR2V0Q29udGV4dFVz
ZXJEYXRhKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIGlmICghdXNlckRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdLQ0FDRkxheWVyUmVuZGVy
ZXIqPih1c2VyRGF0YSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENBQ0ZMYXllclZpZXcqPih1
c2VyRGF0YSk7CiB9CiAKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogaW50ZXJu
KGNvbnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCkBAIC0xNTYsNyArMTU2LDcgQEAgUGxhdGZv
cm1MYXllciogUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIAogUGxhdGZv
cm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7Ci0gICAgV0tD
QUNGTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSByZW5kZXJlckZvckxheWVyKHRoaXMpOworICAg
IENBQ0ZMYXllclZpZXcqIHJlbmRlcmVyID0gdmlld0ZvckxheWVyKHRoaXMpOwogICAgIHJldHVy
biByZW5kZXJlciA/IHJlbmRlcmVyLT5yb290TGF5ZXIoKSA6IDA7CiB9CiAKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0
UmVjdCogZGlydHlSZWN0KQogICAgIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5lZWRzQ29t
bWl0KCkKIHsKLSAgICBXS0NBQ0ZMYXllclJlbmRlcmVyKiByZW5kZXJlciA9IHJlbmRlcmVyRm9y
TGF5ZXIodGhpcyk7CisgICAgQ0FDRkxheWVyVmlldyogcmVuZGVyZXIgPSB2aWV3Rm9yTGF5ZXIo
dGhpcyk7CiAgICAgaWYgKHJlbmRlcmVyKQogICAgICAgICByZW5kZXJlci0+bGF5ZXJUcmVlRGlk
Q2hhbmdlKCk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFk
ZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1hdGlvbioK
ICAgICBzZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gVGVsbCB0aGUgcmVuZGVyZXIgYWJvdXQg
aXQgc28gd2UgY2FuIGZpcmUgdGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVudAotICAgIFdLQ0FDRkxh
eWVyUmVuZGVyZXIqIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JMYXllcih0aGlzKTsKKyAgICBDQUNG
TGF5ZXJWaWV3KiByZW5kZXJlciA9IHZpZXdGb3JMYXllcih0aGlzKTsKICAgICBpZiAocmVuZGVy
ZXIpCiAgICAgICAgIHJlbmRlcmVyLT5hZGRQZW5kaW5nQW5pbWF0ZWRMYXllcih0aGlzKTsKIH0K
QEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9u
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhB
ZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0
aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOwogCi0gICAgLy8gV2UgZG9uJ3QgInJlbW92ZSIg
YSBsYXllciBmcm9tIFdLQ0FDRkxheWVyUmVuZGVyZXIgd2hlbiBpdCBsb3NlcyBhbiBhbmltYXRp
b24uCisgICAgLy8gV2UgZG9uJ3QgInJlbW92ZSIgYSBsYXllciBmcm9tIENBQ0ZMYXllclZpZXcg
d2hlbiBpdCBsb3NlcyBhbiBhbmltYXRpb24uCiAgICAgLy8gVGhlcmUgbWF5IGJlIG90aGVyIGFj
dGl2ZSBhbmltYXRpb25zIG9uIHRoZSBsYXllciBhbmQgaWYgYW4gYW5pbWF0aW9uCiAgICAgLy8g
Y2FsbGJhY2sgaXMgZmlyZWQgb24gYSBsYXllciB3aXRob3V0IGFueSBhbmltYXRpb25zIG5vIGhh
cm0gaXMgZG9uZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3cuY3BwCmluZGV4IDZmMjg4NjA3ZTE5OWE5ZWE0N2ZlMTZmNTdiYzRhNWE1MmIwNDNmMTAu
LjY4NTkzNTQ5MmRjM2JmNDE4MjU3MTM1YjdiN2QzMjMzNmQ4Mjg3MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdyhNZWRpYVBsYXkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1faHduZCgwKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAsIG1fbGF5
ZXJSZW5kZXJlcihXS0NBQ0ZMYXllclJlbmRlcmVyOjpjcmVhdGUoKSkKKyAgICAsIG1fbGF5ZXJW
aWV3KENBQ0ZMYXllclZpZXc6OmNyZWF0ZSgpKQogI2VuZGlmCiB7CiB9CkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y3JlYXRlV2luZG93
KEhXTkQgcGFyZW50SHduZCkKICAgICBBU1NFUlQoSXNXaW5kb3cobV9od25kKSk7CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRIb3N0
V2luZG93KG1faHduZCk7CisgICAgbV9sYXllclZpZXctPnNldEhvc3RXaW5kb3cobV9od25kKTsK
ICNlbmRpZgogCiAgICAgOjpTZXRGb2N1cyhtX2h3bmQpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5ZXIo
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBCiAgICAgaWYgKCFtX3Jvb3RDaGlsZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RDaGls
ZC5nZXQoKSk7CisgICAgbV9sYXllclZpZXctPnNldFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxk
LmdldCgpKTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllciA9IG1fcm9vdENoaWxkLT5y
b290TGF5ZXIoKTsKICAgICBDR1JlY3Qgcm9vdEJvdW5kcyA9IG1fcm9vdENoaWxkLT5yb290TGF5
ZXIoKS0+Ym91bmRzKCk7CiAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOwpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIExSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBCiAgICAgY2FzZSBXTV9E
RVNUUk9ZOgogICAgICAgICBtX2h3bmQgPSAwOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRIb3N0V2luZG93KDApOworICAgICAg
ICBtX2xheWVyVmlldy0+c2V0SG9zdFdpbmRvdygwKTsKICNlbmRpZgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdNX1dJTkRPV1BPU0NIQU5HRUQ6CkBAIC0xNTYsNyArMTU2LDcgQEAgTFJFU1VM
VCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojp3bmRQcm9jKEhXTkQgaFduZCwg
VUlOVCBtZXNzYWdlLCBXUEEKICAgICAgICAgICAgIGlmICh3cC0+ZmxhZ3MgJiBTV1BfTk9TSVpF
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVzaXplKCk7CisgICAgICAgICAgICBt
X2xheWVyVmlldy0+cmVzaXplKCk7CiAgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RM
YXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKICAgICAgICAgICAgIENHUmVjdCByb290
Qm91bmRzID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpLT5ib3VuZHMoKTsKICAgICAgICAgICAg
IG1fcm9vdENoaWxkLT5zZXRGcmFtZShyb290Qm91bmRzKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBM
UkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnduZFByb2MoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQQogICAgICAgICBicmVhazsKICAgICBjYXNlIFdNX1BBSU5U
OgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgbV9sYXllclJlbmRl
cmVyLT5wYWludCgpOworICAgICAgICBtX2xheWVyVmlldy0+cGFpbnQoKTsKICAgICAgICAgOjpW
YWxpZGF0ZVJlY3QobV9od25kLCAwKTsKICNlbmRpZgogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IDQ2MTlmMmE3ZTEw
Mzk5Njc1MTZkMzczNjcwYWIwZTM0MWRjMTIyMGUuLjM3ZThkYzk2ZDY2MjAwY2MxOGYyZjQyOGY3
ZGNmN2QwMGEyNGM4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3cuaApAQCAtMjcsOCArMjcsOCBAQAogI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93X2gKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNp
bmNsdWRlICJDQUNGTGF5ZXJWaWV3LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCi0j
aW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJlci5oIgogI2VuZGlmCiAKIHR5cGVkZWYgdW5zaWdu
ZWQgV1BBUkFNOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgSFdORCBod25kKCkgY29u
c3QgeyByZXR1cm4gbV9od25kOyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogbGF5ZXJSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsgfQorICAgIENBQ0ZMYXllclZpZXcqIGxheWVyVmlldygp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJWaWV3LmdldCgpOyB9CiAKICAgICBQbGF0Zm9ybUNBTGF5
ZXIqIHJvb3RDaGlsZExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290Q2hpbGQuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPik7
CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuQ2xpZW50KiBtX2NsaWVudDsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgUmVmUHRyPFdLQ0FDRkxheWVyUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKKyAgICBS
ZWZQdHI8Q0FDRkxheWVyVmlldz4gbV9sYXllclZpZXc7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FM
YXllcj4gbV9yb290Q2hpbGQ7CiAjZW5kaWYKICAgICBIV05EIG1faHduZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwppbmRleCBjNmY0YTMxMzcwMzFhYmI0YzQ1YmNlMzBhMTNiMjYyMjE0MGZkNjZjLi5mYmYyOTcw
ODYxNjkzNzUyYzg4NmYyMThkYmZlOWVhNDdiYTA3NzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTkgQEAKIDIwMTEtMDEtMjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CisgICAgICAgIFVwZGF0ZSBmb3IgV0tDQUNGTGF5ZXJSZW5kZXJlciAtPiBDQUNGTGF5ZXJWaWV3
IHJlbmFtZQorCisgICAgICAgIEFsc28gcmVuYW1lZCBXZWJWaWV3OjptX2xheWVyUmVuZGVyZXIg
dG8gV2ViVmlldzo6bV9sYXllclZpZXcgdG8gbWF0Y2guCisKKyAgICAgICAgRml4ZXMgPGh0dHA6
Ly93ZWJraXQub3JnL2IvNTI4OTg+IFdLQ0FDRkxheWVyUmVuZGVyZXIgc291bmRzIGxpa2UgYSBy
ZW5kZXIgb2JqZWN0LCBidXQgaXNuJ3QKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKKzIwMTEtMDEtMjEgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJlcGxhY2Ugc29tZSAic3luYyBjb21wb3NpdGlu
ZyBzdGF0ZSIgdGVybWlub2xvZ3kgd2l0aCAiZmx1c2ggcGVuZGluZyBHcmFwaGljc0xheWVyIGNo
YW5nZXMiCiAKICAgICAgICAgVGhpcyBzZWVtcyB0byBiZSB0aGUgZGlyZWN0aW9uIGluIHdoaWNo
IG91ciBjb2RlIGlzIG1vdmluZy4gSSBjaG9zZSAiR3JhcGhpY3NMYXllciIgYXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1YTJjMTliOGVhMDM5MTIyNmFiN2Q0MTc2Y2Vl
NDUxNjZjMWYyMzc3Li40NzhjMTQyNGQ4YjYxMWZkZDIxYjlhYjMyMjc3YzVjYjg0Y2FjYmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0yOSwyMyArMjksMjIgQEAKICNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogCiAjaW5jbHVkZSAiQ09NUHRyLmgiCisjaW5jbHVk
ZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCiAKLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NBQ0ZMYXllclZpZXcuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9XS0NBQ0ZM
YXllclJlbmRlcmVyLmg+Ci0jaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJpbmdzLmgiCi0KLSNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lm
IFBMQVRGT1JNKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KQEAg
LTE0NDYsNyArMTQ0NSw3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKEJPT0wgZW5hYmxlZCkKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKEJPT0wqIGVuYWJsZWQpCiB7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICplbmFibGVkID0gV0tDQUNGTGF5ZXJSZW5k
ZXJlcjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpICYmIGJvb2xWYWx1ZUZvcktl
eShDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkp
KTsKKyAgICAqZW5hYmxlZCA9IENBQ0ZMYXllclZpZXc6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
dmFpbGFibGUoKSAmJiBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CiAjZWxzZQogICAgICplbmFibGVkID0gRkFM
U0U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggOWViMGMwZTAyYTk1MjE1NmI0M2Zh
MmIzYjNhODgzMWQ3MjE0MGVlZS4uZGEzMTIxMDkxMzg1OWVlYmFiMjVhMGU5YTAzNWVlYzgwMTdm
MTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTM4OCw3ICszODgsNyBAQCBXZWJWaWV3Ojp+
V2ViVmlldygpCiAgICAgQVNTRVJUKCFtX3ZpZXdXaW5kb3cpOwogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotICAgIEFTU0VSVCghbV9sYXllclJlbmRlcmVyKTsKKyAgICBBU1NF
UlQoIW1fbGF5ZXJWaWV3KTsKICAgICBBU1NFUlQoIW1fYmFja2luZ0xheWVyKTsKICNlbmRpZgog
CkBAIC04ODMsOCArODgzLDggQEAgdm9pZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChjb25zdCBJbnRT
aXplJiBuZXdTaXplKQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+cmVzaXplKG5ld1NpemUp
OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChtX2xheWVyUmVu
ZGVyZXIpCi0gICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVzaXplKCk7CisgICAgaWYgKG1fbGF5
ZXJWaWV3KQorICAgICAgICBtX2xheWVyVmlldy0+cmVzaXplKCk7CiAgICAgaWYgKG1fYmFja2lu
Z0xheWVyKSB7CiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXRTaXplKG5ld1NpemUpOwogICAg
ICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CkBAIC05OTQsNyArOTk0LDcg
QEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRpb25zKQogICAgICAgICAv
LyBGbHVzaGluZyBtaWdodCBoYXZlIHRha2VuIHVzIG91dCBvZiBjb21wb3NpdGluZyBtb2RlLgog
ICAgICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBXZSBuZWVkIHRvIHBhaW50IGludG8gZGMgKGlmIHByb3ZpZGVkKS4gPGh0dHA6Ly93
ZWJraXQub3JnL2IvNTI1Nzg+Ci0gICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnBhaW50KCk7
CisgICAgICAgICAgICBtX2xheWVyVmlldy0+cGFpbnQoKTsKICAgICAgICAgICAgIDo6VmFsaWRh
dGVSZWN0KG1fdmlld1dpbmRvdywgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTYyNzQsMjQgKzYyNzQsMjQgQEAgdm9pZCBXZWJWaWV3OjpzZXRSb290Q2hpbGRMYXllcihH
cmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBXZWJWaWV3OjpmbHVzaFBlbmRpbmdHcmFwaGlj
c0xheWVyQ2hhbmdlc1Nvb24oKQogewotICAgIGlmICghbV9sYXllclJlbmRlcmVyKQorICAgIGlm
ICghbV9sYXllclZpZXcpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2xheWVyUmVuZGVyZXItPmZs
dXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOworICAgIG1fbGF5ZXJWaWV3LT5m
bHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKTsKIH0KIAogdm9pZCBXZWJWaWV3
OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wgYWNjZWxlcmF0ZWQpCiB7Ci0gICAgaWYg
KG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID09IGFjY2VsZXJhdGVkIHx8ICFXS0NBQ0ZMYXll
clJlbmRlcmVyOjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCisgICAgaWYgKG1f
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID09IGFjY2VsZXJhdGVkIHx8ICFDQUNGTGF5ZXJWaWV3
OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChhY2NlbGVyYXRlZCkgewotICAgICAgICBtX2xheWVyUmVuZGVyZXIgPSBXS0NBQ0ZM
YXllclJlbmRlcmVyOjpjcmVhdGUoKTsKLSAgICAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikgewor
ICAgICAgICBtX2xheWVyVmlldyA9IENBQ0ZMYXllclZpZXc6OmNyZWF0ZSgpOworICAgICAgICBp
ZiAobV9sYXllclZpZXcpIHsKICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
ID0gdHJ1ZTsKIAotICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRDbGllbnQodGhpcyk7
CisgICAgICAgICAgICBtX2xheWVyVmlldy0+c2V0Q2xpZW50KHRoaXMpOwogICAgICAgICAgICAg
QVNTRVJUKG1fdmlld1dpbmRvdyk7Ci0gICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldEhv
c3RXaW5kb3cobV92aWV3V2luZG93KTsKKyAgICAgICAgICAgIG1fbGF5ZXJWaWV3LT5zZXRIb3N0
V2luZG93KG1fdmlld1dpbmRvdyk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBw
ZXJoYXBzIGdldCBiZXR0ZXIgcGVyZm9ybWFuY2UgYnkgbmV2ZXIgYWxsb3dpbmcgdGhpcyBsYXll
ciB0bwogICAgICAgICAgICAgLy8gYmVjb21lIHRpbGVkIChvciBjaG9vc2luZyBhIGhpZ2hlci10
aGFuLW5vcm1hbCB0aWxpbmcgdGhyZXNob2xkKS4KQEAgLTYzMDQsNyArNjMwNCw3IEBAIHZvaWQg
V2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogICAg
ICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldFNpemUoSW50UmVjdChjbGllbnRSZWN0KS5zaXpl
KCkpOwogICAgICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogCi0g
ICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FM
YXllcjo6cGxhdGZvcm1DQUxheWVyKG1fYmFja2luZ0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsK
KyAgICAgICAgICAgIG1fbGF5ZXJWaWV3LT5zZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXRmb3JtQ0FMYXllcihtX2JhY2tpbmdMYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAK
ICAgICAgICAgICAgIC8vIFdlIGFyZW4ndCBnb2luZyB0byBiZSB1c2luZyBvdXIgYmFja2luZyBz
dG9yZSB3aGlsZSB3ZSdyZSBpbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwogICAgICAgICAgICAg
Ly8gbW9kZS4gQnV0IGRvbid0IGRlbGV0ZSBpdCBpbW1lZGlhdGVseSwgaW4gY2FzZSB3ZSBzd2l0
Y2ggb3V0IG9mIGFjY2VsZXJhdGVkCkBAIC02MzEyLDkgKzYzMTIsOSBAQCB2b2lkIFdlYlZpZXc6
OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgICAg
IGRlbGV0ZUJhY2tpbmdTdG9yZVNvb24oKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwotICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNl
dENsaWVudCgwKTsKLSAgICAgICAgbV9sYXllclJlbmRlcmVyID0gMDsKKyAgICAgICAgQVNTRVJU
KG1fbGF5ZXJWaWV3KTsKKyAgICAgICAgbV9sYXllclZpZXctPnNldENsaWVudCgwKTsKKyAgICAg
ICAgbV9sYXllclZpZXcgPSAwOwogICAgICAgICBtX2JhY2tpbmdMYXllciA9IDA7CiAgICAgICAg
IG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5o
CmluZGV4IDY4YjAyZGExNGNjNWQ2ZTViNGRlMTQwOTJiZDljY2RiNjZhNzcwMzEuLjkxNjcyNGRl
ZTBkMDY2NDU4YjY0MzkxNjYwY2FlMTBmMDk1YmU5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKQEAgLTQw
LDggKzQwLDggQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSA8V2ViQ29yZS9DQUNGTGF5ZXJWaWV3Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FD
RkxheWVyUmVuZGVyZXIuaD4KICNlbmRpZgogCiBjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOwpAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBXZWJWaWV3CiAgICAgLCBXZWJDb3JlOjpXaW5k
b3dNZXNzYWdlTGlzdGVuZXIKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50Ci0gICAgLCBXZWJDb3JlOjpXS0NBQ0ZMYXll
clJlbmRlcmVyQ2xpZW50CisgICAgLCBXZWJDb3JlOjpDQUNGTGF5ZXJWaWV3Q2xpZW50CiAjZW5k
aWYKIHsKIHB1YmxpYzoKQEAgLTk0Nyw3ICs5NDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG93RGVidWdCb3JkZXJzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBh
aW50Q291bnRlcigpIGNvbnN0OwogCi0gICAgLy8gV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudAor
ICAgIC8vIENBQ0ZMYXllclZpZXdDbGllbnQKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVuZGVy
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFu
Z2VzKCk7CiAjZW5kaWYKQEAgLTEwNTYsNyArMTA1Niw3IEBAIHByb3RlY3RlZDoKICAgICBib29s
IGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nOyB9CiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wp
OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXI+IG1fbGF5ZXJSZW5k
ZXJlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVyVmlldz4gbV9sYXllclZpZXc7CiAg
ICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fYmFja2luZ0xheWVyOwogICAgIGJv
b2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYWZl
MWJjZDk4ODVmNWE3OGU2ZWUyYzQ1MzgxMGI3YmMyOTgwMDY1Li4xN2E2Y2U3NjkzOWMyMDViZjU5
NDM3NjJiMmEwZjYwOWQzNTkzMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEt
MDEtMjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBm
b3IgV0tDQUNGTGF5ZXJSZW5kZXJlciAtPiBDQUNGTGF5ZXJWaWV3IHJlbmFtZQorCisgICAgICAg
IEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzUyODk4PiBXS0NBQ0ZMYXllclJlbmRlcmVyIHNv
dW5kcyBsaWtlIGEgcmVuZGVyIG9iamVjdCwgYnV0IGlzbid0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xh
eWVyQmFja2VkRHJhd2luZ0FyZWFXaW4uY3BwOiBKdXN0IHJlbW92ZWQgYWxsIHRoZSB1bm5lY2Vz
c2FyeQorICAgICAgICAjaW5jbHVkZXMuCisKIDIwMTEtMDEtMjAgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xheWVyQmFj
a2VkRHJhd2luZ0FyZWFXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L3dpbi9MYXllckJhY2tlZERyYXdpbmdBcmVhV2luLmNwcAppbmRleCBjMDdlMWY1Nzk5MDczZWM3
ZmMzNzI3ZGIyNDFiNTI0NWJlZDUzMDQ2Li5jYWU3OWMyYzExODdiYWEwMTg3NmQ4YTA4YjJhM2Jm
NWMyMGQyNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2luL0xheWVyQmFja2VkRHJhd2luZ0FyZWFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS93aW4vTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVdpbi5jcHAKQEAgLTI3
LDE2ICsyNyw2IEBACiAKICNpbmNsdWRlICJMYXllckJhY2tlZERyYXdpbmdBcmVhLmgiCiAKLSNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCi0jaW5jbHVkZSAiV2ViUGFn
ZS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1dLQ0FDRkxheWVyUmVuZGVyZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVJbnN0YW5j
ZUhhbmRsZS5oPgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79762</attachid>
            <date>2011-01-21 11:06:56 -0800</date>
            <delta_ts>2011-01-21 11:08:12 -0800</delta_ts>
            <desc>Rename WKCACFLayerRenderer[Client] to CACFLayerTreeHost[Client]</desc>
            <filename>bug-52898-20110121140655.patch</filename>
            <type>text/plain</type>
            <size>34711</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDEzZjllN2ViZWMxNTQ4NDIzZWY3ZDE3NTQ4Y2UwOTQ2M2JmZjdjLi43
NGUzYWVjM2E1OTY0MDZjZjE3MDk3NDk4YWE4MDc5YmU2MmY4ZTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMzAgQEAKIDIwMTEtMDEtMjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CisgICAgICAgIFJlbmFtZSBXS0NBQ0ZMYXllclJlbmRlcmVyW0NsaWVudF0gdG8gQ0FDRkxheWVy
VHJlZUhvc3RbQ2xpZW50XQorCisgICAgICAgIEFsc28gcmVuYW1lZCBhIGZldyBmdW5jdGlvbnMg
YW5kIGRhdGEgbWVtYmVycyB0byBtYXRjaC4KKworICAgICAgICBGaXhlcyA8aHR0cDovL3dlYmtp
dC5vcmcvYi81Mjg5OD4gV0tDQUNGTGF5ZXJSZW5kZXJlciBzb3VuZHMgbGlrZSBhIHJlbmRlciBv
YmplY3QsIGJ1dCBpc24ndAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IFVwZGF0ZWQgZmlsZXMn
IG5hbWVzIGFuZCBwYXRocy4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmVRdWFy
dHpDb3JlLnZzcHJvcHM6IEFkZGVkIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbiB0byB0aGUgaW5j
bHVkZQorICAgICAgICBwYXRoLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovY29weUZvcndh
cmRpbmdIZWFkZXJzLmNtZDogQ29weSBoZWFkZXJzIGZyb20gcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luLCB0b28uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVy
VHJlZUhvc3QuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuaC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdy5oOgorICAgICAgICBVcGRhdGVkIGZvciByZW5hbWVzLgor
CisyMDExLTAxLTIxICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwogICAgICAgICBS
ZXBsYWNlIHNvbWUgInN5bmMgY29tcG9zaXRpbmcgc3RhdGUiIHRlcm1pbm9sb2d5IHdpdGggImZs
dXNoIHBlbmRpbmcgR3JhcGhpY3NMYXllciBjaGFuZ2VzIgogCiAgICAgICAgIFRoaXMgc2VlbXMg
dG8gYmUgdGhlIGRpcmVjdGlvbiBpbiB3aGljaCBvdXIgY29kZSBpcyBtb3ZpbmcuIEkgY2hvc2Ug
IkdyYXBoaWNzTGF5ZXIiIGFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDVjMzA2OTlmOWY4OTM5ZWIwZWIyOTRjMzY0ZjFhZmMwNGZiY2E2NTAu
LjE2NWExOTMyODQ0M2NiNjgxZDZhMDBmYTg2NTcxNTczNmVhODA5NGQgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNzM5Niw0NiArMjczOTYs
NiBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxXS0NBQ0ZMYXllclJlbmRlcmVyLmNwcCIKLQkJ
CQkJCT4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+
Ci0JCQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCQkv
PgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgot
CQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgot
CQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXHdpblxXS0NBQ0ZMYXllclJlbmRlcmVyLmgiCi0JCQkJCQk+Ci0JCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KLQkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0J
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgotCQkJCQkJCTxUb29sCi0J
CQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
Ci0JCQkJCQkJPgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29s
IgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8L0ZpbGU+Ci0J
CQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxX
S0NBSW1hZ2VRdWV1ZS5jcHAiCiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAg
LTI4ODk1LDYgKzI4ODU1LDQ2IEBACiAJCQkJCQlOYW1lPSJ3aW4iCiAJCQkJCQk+CiAJCQkJCQk8
RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fcd2luXENB
Q0ZMYXllclRyZWVIb3N0LmNwcCIKKwkJCQkJCQk+CisJCQkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJCT4KKwkJCQkJCQkJPFRvb2wKKwkJCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJCS8+CisJCQkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCQkJTmFtZT0iUmVsZWFzZV9D
YWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJCQk+CisJCQkJCQkJCTxUb29sCisJCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJCQkvPgorCQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8L0ZpbGU+CisJ
CQkJCQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fc
d2luXENBQ0ZMYXllclRyZWVIb3N0LmgiCisJCQkJCQkJPgorCQkJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJCQk+CisJCQkJCQkJCTxUb29sCisJCQkJCQkJ
CQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJCQkJLz4KKwkJCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJCQlOYW1lPSJSZWxl
YXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQkJCT4KKwkJCQkJCQkJPFRvb2wKKwkJCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRU
b29sIgorCQkJCQkJCQkvPgorCQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCQk8L0Zp
bGU+CisJCQkJCQk8RmlsZQogCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcY2Fcd2luXFBsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwIgogCQkJCQkJCT4KIAkJCQkJCTwv
RmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVR
dWFydHpDb3JlLnZzcHJvcHMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
UXVhcnR6Q29yZS52c3Byb3BzCmluZGV4IGE5ODY2ZDkwMTNlZTM3MGNiYzc5NWY5MWFkMmIwN2Jk
OWMwNDQ2OTAuLjQ4MzI4YzlkNzJhYzgzMGY2NWNkNTU0YjEwYWVkYzVlY2Q0NzllMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVRdWFydHpDb3JlLnZz
cHJvcHMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZVF1YXJ0ekNv
cmUudnNwcm9wcwpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChEWFNES19E
SVIpXEluY2x1ZGUmcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90
OyQoUHJvamVjdERpcilcLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fcd2luJnF1b3Q7OyZxdW90OyQo
RFhTREtfRElSKVxJbmNsdWRlJnF1b3Q7IgogCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUVVB
UlRaQ09SRV9ETEwiCiAJLz4KIDwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5j
bWQgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMu
Y21kCmluZGV4IDczOTNkMzQ4MzY2ZjhiN2VmYTYzZmQ5YzQwYTI1NjJjOTU5MGZhYjMuLmIzZjE5
YzY1ZTFiYTQ5MzU0MmZkYTJlZjNiNzkzNDM5OTljOGI3MDEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZApAQCAt
MzksNiArMzksNyBAQCB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbAogeGNvcHkgL3kgL2QgIiVQcm9q
ZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXCUxXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERE
SVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9y
bVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1
ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGlj
c1xjYVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCit4Y29w
eSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fcd2luXCouaCIgIiVD
T05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJv
amVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHdpblwlMVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
b3BlbnR5cGVcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxh
eWVyUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0NBQ0ZMYXllclRyZWVIb3N0LmNwcApzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5j
cHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNG
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggOWZmOGUxYzBkMmE4MzRiM2QzYTc5MmY4NmFhNTMyZDU4
OTQ4MjkxNC4uNjFkNzZhMGY5OWU2ODM4MDY2M2U2ZTc2YzE4ODQwZWEwNTUxMWJlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9D
QUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNkZWZpbmUgRDNEX0RFQlVH
X0lORk8KICNlbmRpZgogCi0jaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJlci5oIgorI2luY2x1
ZGUgIkNBQ0ZMYXllclRyZWVIb3N0LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIK
ICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKQEAgLTExNiw3ICsxMTYsNyBAQCBz
dGF0aWMgYm9vbCBoYXJkd2FyZUNhcGFiaWxpdGllc0luZGljYXRlQ29yZUFuaW1hdGlvblN1cHBv
cnQoY29uc3QgRDNEQ0FQUzkmIGNhcAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdLQ0FD
RkxheWVyUmVuZGVyZXI6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKQorYm9vbCBD
QUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpCiB7CiAg
ICAgc3RhdGljIGJvb2wgYXZhaWxhYmxlOwogICAgIHN0YXRpYyBib29sIHRlc3RlZDsKQEAgLTE2
NCwyOCArMTY0LDI4IEBAIGJvb2wgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6YWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0F2YWlsYWJsZSgpCiAgICAgICAgIHJldHVybiBhdmFpbGFibGU7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFdLQ0FDRkxheWVyUmVuZGVyZXI+IHRlc3RMYXllclJlbmRlcmVyID0gV0tDQUNG
TGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKCk7Ci0gICAgdGVzdExheWVyUmVuZGVyZXItPnNldEhvc3RX
aW5kb3codGVzdFdpbmRvdyk7Ci0gICAgYXZhaWxhYmxlID0gdGVzdExheWVyUmVuZGVyZXItPmNy
ZWF0ZVJlbmRlcmVyKCk7CisgICAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBob3N0ID0gQ0FD
RkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOworICAgIGhvc3QtPnNldFdpbmRvdyh0ZXN0V2luZG93
KTsKKyAgICBhdmFpbGFibGUgPSBob3N0LT5jcmVhdGVSZW5kZXJlcigpOwogICAgIDo6RGVzdHJv
eVdpbmRvdyh0ZXN0V2luZG93KTsKIAogICAgIHJldHVybiBhdmFpbGFibGU7CiB9CiAKLVBhc3NS
ZWZQdHI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4gV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKCkK
K1Bhc3NSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGUo
KQogewogICAgIGlmICghYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdLQ0FDRkxheWVyUmVuZGVyZXIo
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDQUNGTGF5ZXJUcmVlSG9zdCgpKTsKIH0KIAot
V0tDQUNGTGF5ZXJSZW5kZXJlcjo6V0tDQUNGTGF5ZXJSZW5kZXJlcigpCitDQUNGTGF5ZXJUcmVl
SG9zdDo6Q0FDRkxheWVyVHJlZUhvc3QoKQogICAgIDogbV9jbGllbnQoMCkKICAgICAsIG1fbWln
aHRCZUFibGVUb0NyZWF0ZURldmljZUxhdGVyKHRydWUpCiAgICAgLCBtX3Jvb3RMYXllcihQbGF0
Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllciwg
MCkpCiAgICAgLCBtX2NvbnRleHQod2tDQUNGQ29udGV4dENyZWF0ZSgpKQotICAgICwgbV9ob3N0
V2luZG93KDApCi0gICAgLCBtX3JlbmRlclRpbWVyKHRoaXMsICZXS0NBQ0ZMYXllclJlbmRlcmVy
OjpyZW5kZXJUaW1lckZpcmVkKQorICAgICwgbV93aW5kb3coMCkKKyAgICAsIG1fcmVuZGVyVGlt
ZXIodGhpcywgJkNBQ0ZMYXllclRyZWVIb3N0OjpyZW5kZXJUaW1lckZpcmVkKQogICAgICwgbV9t
dXN0UmVzZXRMb3N0RGV2aWNlQmVmb3JlUmVuZGVyaW5nKGZhbHNlKQogICAgICwgbV9zaG91bGRG
bHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlcyhmYWxzZSkKIHsKQEAgLTIwMSw3ICsyMDEs
NyBAQCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpXS0NBQ0ZMYXllclJlbmRlcmVyKCkKICAgICAvLyBj
YXVzZSBhbnkgcmVwb3NpdGlvbmluZy4KICAgICAvLyBTY3JvbGxpbmcgd2lsbCBhZmZlY3Qgb25s
eSB0aGUgcG9zaXRpb24gb2YgdGhlIHNjcm9sbCBsYXllciB3aXRob3V0IGFmZmVjdGluZyB0aGUg
Ym91bmRzLgogCi0gICAgbV9yb290TGF5ZXItPnNldE5hbWUoIldLQ0FDRkxheWVyUmVuZGVyZXIg
cm9vdExheWVyIik7CisgICAgbV9yb290TGF5ZXItPnNldE5hbWUoIkNBQ0ZMYXllclRyZWVIb3N0
IHJvb3RMYXllciIpOwogICAgIG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
M0QoMCwgMCwgMCkpOwogICAgIG1fcm9vdExheWVyLT5zZXRHZW9tZXRyeUZsaXBwZWQodHJ1ZSk7
CiAKQEAgLTIyMCwzNyArMjIwLDM3IEBAIFdLQ0FDRkxheWVyUmVuZGVyZXI6OldLQ0FDRkxheWVy
UmVuZGVyZXIoKQogI2VuZGlmCiB9CiAKLVdLQ0FDRkxheWVyUmVuZGVyZXI6On5XS0NBQ0ZMYXll
clJlbmRlcmVyKCkKK0NBQ0ZMYXllclRyZWVIb3N0Ojp+Q0FDRkxheWVyVHJlZUhvc3QoKQogewot
ICAgIHNldEhvc3RXaW5kb3coMCk7CisgICAgc2V0V2luZG93KDApOwogICAgIHdrQ0FDRkNvbnRl
eHREZXN0cm95KG1fY29udGV4dCk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6c2V0
SG9zdFdpbmRvdyhIV05EIHdpbmRvdykKK3ZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OnNldFdpbmRv
dyhIV05EIHdpbmRvdykKIHsKLSAgICBpZiAod2luZG93ID09IG1faG9zdFdpbmRvdykKKyAgICBp
ZiAod2luZG93ID09IG1fd2luZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9ob3N0
V2luZG93KQorICAgIGlmIChtX3dpbmRvdykKICAgICAgICAgZGVzdHJveVJlbmRlcmVyKCk7CiAK
LSAgICBtX2hvc3RXaW5kb3cgPSB3aW5kb3c7CisgICAgbV93aW5kb3cgPSB3aW5kb3c7CiAKLSAg
ICBpZiAobV9ob3N0V2luZG93KQorICAgIGlmIChtX3dpbmRvdykKICAgICAgICAgY3JlYXRlUmVu
ZGVyZXIoKTsKIH0KIAotUGxhdGZvcm1DQUxheWVyKiBXS0NBQ0ZMYXllclJlbmRlcmVyOjpyb290
TGF5ZXIoKSBjb25zdAorUGxhdGZvcm1DQUxheWVyKiBDQUNGTGF5ZXJUcmVlSG9zdDo6cm9vdExh
eWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9CiAKLXZvaWQg
V0tDQUNGTGF5ZXJSZW5kZXJlcjo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IGxheWVyKQordm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6YWRkUGVuZGlu
Z0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGxheWVyKQogewogICAg
IG1fcGVuZGluZ0FuaW1hdGVkTGF5ZXJzLmFkZChsYXllcik7CiB9CiAKLXZvaWQgV0tDQUNGTGF5
ZXJSZW5kZXJlcjo6c2V0Um9vdENoaWxkTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3Zv
aWQgQ0FDRkxheWVyVHJlZUhvc3Q6OnNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllciog
bGF5ZXIpCiB7CiAgICAgbV9yb290TGF5ZXItPnJlbW92ZUFsbFN1YmxheWVycygpOwogICAgIG1f
cm9vdENoaWxkTGF5ZXIgPSBsYXllcjsKQEAgLTI1OCwxMiArMjU4LDEyIEBAIHZvaWQgV0tDQUNG
TGF5ZXJSZW5kZXJlcjo6c2V0Um9vdENoaWxkTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikK
ICAgICAgICAgbV9yb290TGF5ZXItPmFwcGVuZFN1YmxheWVyKG1fcm9vdENoaWxkTGF5ZXIuZ2V0
KCkpOwogfQogICAgCi12b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OmxheWVyVHJlZURpZENoYW5n
ZSgpCit2b2lkIENBQ0ZMYXllclRyZWVIb3N0OjpsYXllclRyZWVEaWRDaGFuZ2UoKQogewogICAg
IHJlbmRlclNvb24oKTsKIH0KIAotYm9vbCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpjcmVhdGVSZW5k
ZXJlcigpCitib29sIENBQ0ZMYXllclRyZWVIb3N0OjpjcmVhdGVSZW5kZXJlcigpCiB7CiAgICAg
aWYgKG1fZDNkRGV2aWNlIHx8ICFtX21pZ2h0QmVBYmxlVG9DcmVhdGVEZXZpY2VMYXRlcikKICAg
ICAgICAgcmV0dXJuIG1fZDNkRGV2aWNlOwpAQCAtMjcxLDE0ICsyNzEsMTQgQEAgYm9vbCBXS0NB
Q0ZMYXllclJlbmRlcmVyOjpjcmVhdGVSZW5kZXJlcigpCiAgICAgbV9taWdodEJlQWJsZVRvQ3Jl
YXRlRGV2aWNlTGF0ZXIgPSBmYWxzZTsKICAgICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgcGFyYW1l
dGVycyA9IGluaXRpYWxQcmVzZW50YXRpb25QYXJhbWV0ZXJzKCk7CiAKLSAgICBpZiAoIWQzZCgp
IHx8ICE6OklzV2luZG93KG1faG9zdFdpbmRvdykpCisgICAgaWYgKCFkM2QoKSB8fCAhOjpJc1dp
bmRvdyhtX3dpbmRvdykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEQzRCBkb2Vz
bid0IGxpa2UgdG8gbWFrZSBiYWNrIGJ1ZmZlcnMgZm9yIDAgc2l6ZSB3aW5kb3dzLiBXZSBza2ly
dCB0aGlzIHByb2JsZW0gaWYgd2UgbWFrZSB0aGUKICAgICAvLyBwYXNzZWQgYmFja2J1ZmZlciB3
aWR0aCBhbmQgaGVpZ2h0IG5vbi16ZXJvLiBUaGUgd2luZG93IHdpbGwgbmVjZXNzYXJpbHkgZ2V0
IHNldCB0byBhIG5vbi16ZXJvCiAgICAgLy8gc2l6ZSBldmVudHVhbGx5LCBhbmQgdGhlbiB0aGUg
YmFja2J1ZmZlciBzaXplIHdpbGwgZ2V0IHJlc2V0LgogICAgIFJFQ1QgcmVjdDsKLSAgICBHZXRD
bGllbnRSZWN0KG1faG9zdFdpbmRvdywgJnJlY3QpOworICAgIEdldENsaWVudFJlY3QobV93aW5k
b3csICZyZWN0KTsKIAogICAgIGlmIChyZWN0LmxlZnQtcmVjdC5yaWdodCA9PSAwIHx8IHJlY3Qu
Ym90dG9tLXJlY3QudG9wID09IDApIHsKICAgICAgICAgcGFyYW1ldGVycy5CYWNrQnVmZmVyV2lk
dGggPSAxOwpAQCAtMjk2LDcgKzI5Niw3IEBAIGJvb2wgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Y3Jl
YXRlUmVuZGVyZXIoKQogICAgICAgICBiZWhhdmlvckZsYWdzIHw9IEQzRENSRUFURV9TT0ZUV0FS
RV9WRVJURVhQUk9DRVNTSU5HOwogCiAgICAgQ09NUHRyPElEaXJlY3QzRERldmljZTk+IGRldmlj
ZTsKLSAgICBpZiAoRkFJTEVEKGQzZCgpLT5DcmVhdGVEZXZpY2UoRDNEQURBUFRFUl9ERUZBVUxU
LCBEM0RERVZUWVBFX0hBTCwgbV9ob3N0V2luZG93LCBiZWhhdmlvckZsYWdzLCAmcGFyYW1ldGVy
cywgJmRldmljZSkpKSB7CisgICAgaWYgKEZBSUxFRChkM2QoKS0+Q3JlYXRlRGV2aWNlKEQzREFE
QVBURVJfREVGQVVMVCwgRDNEREVWVFlQRV9IQUwsIG1fd2luZG93LCBiZWhhdmlvckZsYWdzLCAm
cGFyYW1ldGVycywgJmRldmljZSkpKSB7CiAgICAgICAgIC8vIEluIGNlcnRhaW4gc2l0dWF0aW9u
cyAoZS5nLiwgc2hvcnRseSBhZnRlciB3YWtpbmcgZnJvbSBzbGVlcCksIERpcmVjdDNEQ3JlYXRl
OSgpIHdpbGwKICAgICAgICAgLy8gcmV0dXJuIGFuIElEaXJlY3QzRDkgZm9yIHdoaWNoIElEaXJl
Y3QzRDk6OkNyZWF0ZURldmljZSB3aWxsIGFsd2F5cyBmYWlsLiBJbiBjYXNlIHdlCiAgICAgICAg
IC8vIGhhdmUgb25lIG9mIHRoZXNlIGJhZCBJRGlyZWN0M0Q5cywgZ2V0IHJpZCBvZiBpdCBzbyB3
ZSdsbCBmZXRjaCBhIG5ldyBvbmUgdGhlIG5leHQgdGltZQpAQCAtMzI5LDEzICszMjksMTMgQEAg
Ym9vbCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpjcmVhdGVSZW5kZXJlcigpCiAKICAgICB3a0NBQ0ZD
b250ZXh0U2V0RDNERGV2aWNlKG1fY29udGV4dCwgbV9kM2REZXZpY2UuZ2V0KCkpOwogCi0gICAg
aWYgKElzV2luZG93KG1faG9zdFdpbmRvdykpCisgICAgaWYgKElzV2luZG93KG1fd2luZG93KSkK
ICAgICAgICAgbV9yb290TGF5ZXItPnNldEJvdW5kcyhib3VuZHMoKSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpkZXN0cm95UmVuZGVyZXIoKQor
dm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6ZGVzdHJveVJlbmRlcmVyKCkKIHsKICAgICB3a0NBQ0ZD
b250ZXh0U2V0TGF5ZXIobV9jb250ZXh0LCBtX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpKTsK
IApAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6ZGVzdHJveVJl
bmRlcmVyKCkKICAgICBtX21pZ2h0QmVBYmxlVG9DcmVhdGVEZXZpY2VMYXRlciA9IHRydWU7CiB9
CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVzaXplKCkKK3ZvaWQgQ0FDRkxheWVyVHJl
ZUhvc3Q6OnJlc2l6ZSgpCiB7CiAgICAgaWYgKCFtX2QzZERldmljZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzk2LDEyICszOTYsMTIgQEAgc3RhdGljIHZvaWQgZ2V0RGlydHlSZWN0cyhIV05EIHdp
bmRvdywgVmVjdG9yPENHUmVjdD4mIG91dFJlY3RzKQogICAgICAgICBvdXRSZWN0c1tpXSA9IHdp
blJlY3RUb0NHUmVjdCgqcmVjdCwgY2xpZW50UmVjdCk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJS
ZW5kZXJlcjo6cmVuZGVyVGltZXJGaXJlZChUaW1lcjxXS0NBQ0ZMYXllclJlbmRlcmVyPiopCit2
b2lkIENBQ0ZMYXllclRyZWVIb3N0OjpyZW5kZXJUaW1lckZpcmVkKFRpbWVyPENBQ0ZMYXllclRy
ZWVIb3N0PiopCiB7CiAgICAgcGFpbnQoKTsKIH0KIAotdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVy
OjpwYWludCgpCit2b2lkIENBQ0ZMYXllclRyZWVIb3N0OjpwYWludCgpCiB7CiAgICAgY3JlYXRl
UmVuZGVyZXIoKTsKICAgICBpZiAoIW1fZDNkRGV2aWNlKSB7CkBAIC00MTEsMTEgKzQxMSwxMSBA
QCB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnBhaW50KCkKICAgICB9CiAKICAgICBWZWN0b3I8
Q0dSZWN0PiBkaXJ0eVJlY3RzOwotICAgIGdldERpcnR5UmVjdHMobV9ob3N0V2luZG93LCBkaXJ0
eVJlY3RzKTsKKyAgICBnZXREaXJ0eVJlY3RzKG1fd2luZG93LCBkaXJ0eVJlY3RzKTsKICAgICBy
ZW5kZXIoZGlydHlSZWN0cyk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVuZGVy
KGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiB3aW5kb3dEaXJ0eVJlY3RzKQordm9pZCBDQUNGTGF5ZXJU
cmVlSG9zdDo6cmVuZGVyKGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiB3aW5kb3dEaXJ0eVJlY3RzKQog
ewogICAgIEFTU0VSVChtX2QzZERldmljZSk7CiAKQEAgLTUxNywyNyArNTE3LDI3IEBAIHZvaWQg
V0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVuZGVyKGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiB3aW5kb3dE
aXJ0eVJlY3RzKQogICAgICAgICByZW5kZXJTb29uKCk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJS
ZW5kZXJlcjo6cmVuZGVyU29vbigpCit2b2lkIENBQ0ZMYXllclRyZWVIb3N0OjpyZW5kZXJTb29u
KCkKIHsKICAgICBpZiAoIW1fcmVuZGVyVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9yZW5k
ZXJUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6
Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCkKK3ZvaWQgQ0FDRkxheWVyVHJl
ZUhvc3Q6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiB7CiAgICAgbV9z
aG91bGRGbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlcyA9IHRydWU7CiAgICAgcmVuZGVy
U29vbigpOwogfQogCi1DR1JlY3QgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Ym91bmRzKCkgY29uc3QK
K0NHUmVjdCBDQUNGTGF5ZXJUcmVlSG9zdDo6Ym91bmRzKCkgY29uc3QKIHsKICAgICBSRUNUIGNs
aWVudFJlY3Q7Ci0gICAgR2V0Q2xpZW50UmVjdChtX2hvc3RXaW5kb3csICZjbGllbnRSZWN0KTsK
KyAgICBHZXRDbGllbnRSZWN0KG1fd2luZG93LCAmY2xpZW50UmVjdCk7CiAKICAgICByZXR1cm4g
d2luUmVjdFRvQ0dSZWN0KGNsaWVudFJlY3QpOwogfQogCi12b2lkIFdLQ0FDRkxheWVyUmVuZGVy
ZXI6OmluaXREM0RHZW9tZXRyeSgpCit2b2lkIENBQ0ZMYXllclRyZWVIb3N0Ojppbml0RDNER2Vv
bWV0cnkoKQogewogICAgIEFTU0VSVChtX2QzZERldmljZSk7CiAKQEAgLTU1NCw3ICs1NTQsNyBA
QCB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OmluaXREM0RHZW9tZXRyeSgpCiAgICAgbV9kM2RE
ZXZpY2UtPlNldFRyYW5zZm9ybShEM0RUU19QUk9KRUNUSU9OLCAmcHJvamVjdGlvbik7CiB9CiAK
LWJvb2wgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVzZXREZXZpY2UoUmVzZXRSZWFzb24gcmVhc29u
KQorYm9vbCBDQUNGTGF5ZXJUcmVlSG9zdDo6cmVzZXREZXZpY2UoUmVzZXRSZWFzb24gcmVhc29u
KQogewogICAgIEFTU0VSVChtX2QzZERldmljZSk7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5
ZXJSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NB
Q0ZMYXllclRyZWVIb3N0LmgKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuaApyZW5h
bWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmgKaW5kZXggMTQ5MTA2ZTMyMmZhNjBmYjRiNDI3NzM4ZTg5MWZhNmZkYzFkNjRlYi4u
ZmZlODdlZmU4YzI0NTJmYTUxNTZlNmRiYmUyMDE5MTE0MTIzZmM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJl
ZUhvc3QuaApAQCAtMjMsOCArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBXS0NBQ0ZMYXllclJlbmRlcmVyX2gKLSNkZWZpbmUgV0tDQUNGTGF5ZXJSZW5kZXJlcl9oCisj
aWZuZGVmIENBQ0ZMYXllclRyZWVIb3N0X2gKKyNkZWZpbmUgQ0FDRkxheWVyVHJlZUhvc3RfaAog
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCkBAIC00OSwzMCArNDksMzAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAKLWNsYXNzIFdL
Q0FDRkxheWVyUmVuZGVyZXJDbGllbnQgeworY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3RDbGllbnQg
ewogcHVibGljOgotICAgIHZpcnR1YWwgfldLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQoKSB7IH0K
KyAgICB2aXJ0dWFsIH5DQUNGTGF5ZXJUcmVlSG9zdENsaWVudCgpIHsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRSZW5kZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoUGVu
ZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzKCkgeyB9CiB9OwogCi0vLyBGSVhNRTogQ3VycmVudGx5
IHRoZXJlIGlzIGEgV0tDQUNGTGF5ZXJSZW5kZXJlciBmb3IgZWFjaCBXZWJWaWV3IGFuZCBlYWNo
CisvLyBGSVhNRTogQ3VycmVudGx5IHRoZXJlIGlzIGEgQ0FDRkxheWVyVHJlZUhvc3QgZm9yIGVh
Y2ggV2ViVmlldyBhbmQgZWFjaAogLy8gaGFzIGl0cyBvd24gQ0FSZW5kZXJPR0xDb250ZXh0IGFu
ZCBEaXJlY3QzRERldmljZTksIHdoaWNoIGlzIGluZWZmaWNpZW50LgogLy8gKGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg1NSkKLWNsYXNzIFdLQ0FDRkxheWVyUmVu
ZGVyZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXS0NBQ0ZMYXllclJlbmRlcmVyPiB7CitjbGFzcyBD
QUNGTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPENBQ0ZMYXllclRyZWVIb3N0PiB7
CiAgICAgZnJpZW5kIFBsYXRmb3JtQ0FMYXllcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdLQ0FDRkxheWVyUmVuZGVyZXI+IGNyZWF0ZSgpOwotICAgIH5XS0NBQ0ZMYXllclJl
bmRlcmVyKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IGNyZWF0
ZSgpOworICAgIH5DQUNGTGF5ZXJUcmVlSG9zdCgpOwogCiAgICAgc3RhdGljIGJvb2wgYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpOwogCi0gICAgdm9pZCBzZXRDbGllbnQoV0tDQUNG
TGF5ZXJSZW5kZXJlckNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAg
dm9pZCBzZXRDbGllbnQoQ0FDRkxheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVu
dCA9IGNsaWVudDsgfQogCiAgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5
ZXIqKTsKICAgICB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOwotICAgIHZvaWQgc2V0SG9zdFdp
bmRvdyhIV05EKTsKKyAgICB2b2lkIHNldFdpbmRvdyhIV05EKTsKICAgICB2b2lkIHBhaW50KCk7
CiAgICAgdm9pZCByZXNpemUoKTsKICAgICB2b2lkIGZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJD
aGFuZ2VzU29vbigpOwpAQCAtODIsMTIgKzgyLDEyIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFk
ZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPik7CiAKIHBy
aXZhdGU6Ci0gICAgV0tDQUNGTGF5ZXJSZW5kZXJlcigpOworICAgIENBQ0ZMYXllclRyZWVIb3N0
KCk7CiAKICAgICBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CiAgICAgdm9pZCBkZXN0cm95UmVuZGVy
ZXIoKTsKICAgICB2b2lkIHJlbmRlclNvb24oKTsKLSAgICB2b2lkIHJlbmRlclRpbWVyRmlyZWQo
VGltZXI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4qKTsKKyAgICB2b2lkIHJlbmRlclRpbWVyRmlyZWQo
VGltZXI8Q0FDRkxheWVyVHJlZUhvc3Q+Kik7CiAKICAgICBDR1JlY3QgYm91bmRzKCkgY29uc3Q7
CiAKQEAgLTEwMSwxNCArMTAxLDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlbmRlcihjb25z
dCBWZWN0b3I8Q0dSZWN0PiYgZGlydHlSZWN0cyA9IFZlY3RvcjxDR1JlY3Q+KCkpOwogCi0gICAg
V0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCogbV9jbGllbnQ7CisgICAgQ0FDRkxheWVyVHJlZUhv
c3RDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9taWdodEJlQWJsZVRvQ3JlYXRlRGV2aWNl
TGF0ZXI7CiAgICAgQ09NUHRyPElEaXJlY3QzRERldmljZTk+IG1fZDNkRGV2aWNlOwogICAgIFJl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fcm9vdExheWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IG1fcm9vdENoaWxkTGF5ZXI7CiAgICAgV0tDQUNGQ29udGV4dCogbV9jb250ZXh0Owot
ICAgIEhXTkQgbV9ob3N0V2luZG93OwotICAgIFRpbWVyPFdLQ0FDRkxheWVyUmVuZGVyZXI+IG1f
cmVuZGVyVGltZXI7CisgICAgSFdORCBtX3dpbmRvdzsKKyAgICBUaW1lcjxDQUNGTGF5ZXJUcmVl
SG9zdD4gbV9yZW5kZXJUaW1lcjsKICAgICBib29sIG1fbXVzdFJlc2V0TG9zdERldmljZUJlZm9y
ZVJlbmRlcmluZzsKICAgICBib29sIG1fc2hvdWxkRmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNo
YW5nZXM7CiAgICAgSGFzaFNldDxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiA+IG1fcGVuZGluZ0Fu
aW1hdGVkTGF5ZXJzOwpAQCAtMTIyLDQgKzEyMiw0IEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNlbmRpZiAvLyBXS0NBQ0ZMYXllclJlbmRl
cmVyX2gKKyNlbmRpZiAvLyBDQUNGTGF5ZXJUcmVlSG9zdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW4uY3BwCmluZGV4IDY2ZDA3MzJhMDcwYTk0OTgzNjU1MTdlYTdiNTBiODVkODk4M2E4MzguLmI1
YTI2ZjQ4OGMzOGY4YTU0M2ZmYjM0ZGNkZGQ4OTU4YjYzNjAyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FM
YXllci5oIgogCisjaW5jbHVkZSAiQ0FDRkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJGb250
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWwuaCIKLSNpbmNsdWRlICJXS0NBQ0ZMYXllclJlbmRlcmVyLmgiCiAjaW5j
bHVkZSA8UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uQ0YuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CkBAIC02NSwxNCArNjUsMTQgQEAgc3RhdGljIENGU3RyaW5nUmVmIHRvQ0FDRkZp
bHRlclR5cGUoUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlIHR5cGUpCiAgICAgfQogfQogCi1z
dGF0aWMgV0tDQUNGTGF5ZXJSZW5kZXJlciogcmVuZGVyZXJGb3JMYXllcihjb25zdCBQbGF0Zm9y
bUNBTGF5ZXIqIGxheWVyKQorc3RhdGljIENBQ0ZMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0
Rm9yTGF5ZXIoY29uc3QgUGxhdGZvcm1DQUxheWVyKiBsYXllcikKIHsKLSAgICAvLyBXZSBuZWVk
IHRoZSBXS0NBQ0ZMYXllclJlbmRlcmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxheWVyLCB3aGlj
aCBpcyBzdG9yZWQgaW4gdGhlIFVzZXJEYXRhIG9mIHRoZSBDQUNGQ29udGV4dAorICAgIC8vIFdl
IG5lZWQgdGhlIENBQ0ZMYXllclRyZWVIb3N0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxheWVyLCB3
aGljaCBpcyBzdG9yZWQgaW4gdGhlIFVzZXJEYXRhIG9mIHRoZSBDQUNGQ29udGV4dAogICAgIHZv
aWQqIHVzZXJEYXRhID0gd2tDQUNGTGF5ZXJHZXRDb250ZXh0VXNlckRhdGEobGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKSk7CiAgICAgaWYgKCF1c2VyRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tDQUNGTGF5ZXJSZW5kZXJlcio+KHVzZXJEYXRhKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0FDRkxheWVyVHJlZUhvc3QqPih1c2VyRGF0YSk7CiB9CiAK
IHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogaW50ZXJuKGNvbnN0IFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpCkBAIC0xNTYsOCArMTU2LDggQEAgUGxhdGZvcm1MYXllciogUGxhdGZv
cm1DQUxheWVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIAogUGxhdGZvcm1DQUxheWVyKiBQbGF0
Zm9ybUNBTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7Ci0gICAgV0tDQUNGTGF5ZXJSZW5kZXJl
ciogcmVuZGVyZXIgPSByZW5kZXJlckZvckxheWVyKHRoaXMpOwotICAgIHJldHVybiByZW5kZXJl
ciA/IHJlbmRlcmVyLT5yb290TGF5ZXIoKSA6IDA7CisgICAgQ0FDRkxheWVyVHJlZUhvc3QqIGhv
c3QgPSBsYXllclRyZWVIb3N0Rm9yTGF5ZXIodGhpcyk7CisgICAgcmV0dXJuIGhvc3QgPyBob3N0
LT5yb290TGF5ZXIoKSA6IDA7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXROZWVkc0Rp
c3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3QpCkBAIC0xNjcsOSArMTY3LDkgQEAgdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QqIGRpcnR5
UmVjdCkKICAgICAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXROZWVkc0NvbW1pdCgpCiB7Ci0g
ICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSByZW5kZXJlckZvckxheWVyKHRoaXMp
OwotICAgIGlmIChyZW5kZXJlcikKLSAgICAgICAgcmVuZGVyZXItPmxheWVyVHJlZURpZENoYW5n
ZSgpOworICAgIENBQ0ZMYXllclRyZWVIb3N0KiBob3N0ID0gbGF5ZXJUcmVlSG9zdEZvckxheWVy
KHRoaXMpOworICAgIGlmIChob3N0KQorICAgICAgICBob3N0LT5sYXllclRyZWVEaWRDaGFuZ2Uo
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzQ2hhbmdlZCgpCkBAIC0y
NjksMTAgKzI2OSwxMCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6YWRkQW5pbWF0aW9uRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uKgogICAgIENBQ0ZMYXllckFk
ZEFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBzLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5p
bWF0aW9uKCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiAKLSAgICAvLyBUZWxsIHRoZSByZW5k
ZXJlciBhYm91dCBpdCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50Ci0g
ICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSByZW5kZXJlckZvckxheWVyKHRoaXMp
OwotICAgIGlmIChyZW5kZXJlcikKLSAgICAgICAgcmVuZGVyZXItPmFkZFBlbmRpbmdBbmltYXRl
ZExheWVyKHRoaXMpOworICAgIC8vIFRlbGwgdGhlIGhvc3QgYWJvdXQgaXQgc28gd2UgY2FuIGZp
cmUgdGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVudAorICAgIENBQ0ZMYXllclRyZWVIb3N0KiBob3N0
ID0gbGF5ZXJUcmVlSG9zdEZvckxheWVyKHRoaXMpOworICAgIGlmIChob3N0KQorICAgICAgICBo
b3N0LT5hZGRQZW5kaW5nQW5pbWF0ZWRMYXllcih0aGlzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkKQEAgLTI4Myw3
ICsyODMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5KQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBr
ZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1fbGF5
ZXIuZ2V0KCksIHMuZ2V0KCkpOwogCi0gICAgLy8gV2UgZG9uJ3QgInJlbW92ZSIgYSBsYXllciBm
cm9tIFdLQ0FDRkxheWVyUmVuZGVyZXIgd2hlbiBpdCBsb3NlcyBhbiBhbmltYXRpb24uCisgICAg
Ly8gV2UgZG9uJ3QgInJlbW92ZSIgYSBsYXllciBmcm9tIENBQ0ZMYXllclRyZWVIb3N0IHdoZW4g
aXQgbG9zZXMgYW4gYW5pbWF0aW9uLgogICAgIC8vIFRoZXJlIG1heSBiZSBvdGhlciBhY3RpdmUg
YW5pbWF0aW9ucyBvbiB0aGUgbGF5ZXIgYW5kIGlmIGFuIGFuaW1hdGlvbgogICAgIC8vIGNhbGxi
YWNrIGlzIGZpcmVkIG9uIGEgbGF5ZXIgd2l0aG91dCBhbnkgYW5pbWF0aW9ucyBubyBoYXJtIGlz
IGRvbmUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
LmNwcAppbmRleCA2ZjI4ODYwN2UxOTlhOWVhNDdmZTE2ZjU3YmM0YTVhNTJiMDQzZjEwLi4wMWRi
N2YyZjdiZTc4YTZkOWQzOWZmM2U3ZWZiNmYwYmQ0Yjk3MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCkBAIC00MCw3ICs0MCw3IEBAIE1l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3coTWVkaWFQbGF5CiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2h3
bmQoMCkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX2xheWVyUmVu
ZGVyZXIoV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2xheWVyVHJlZUhv
c3QoQ0FDRkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpKQogI2VuZGlmCiB7CiB9CkBAIC04MSw3ICs4
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6Y3JlYXRlV2lu
ZG93KEhXTkQgcGFyZW50SHduZCkKICAgICBBU1NFUlQoSXNXaW5kb3cobV9od25kKSk7CiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRI
b3N0V2luZG93KG1faHduZCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRXaW5kb3cobV9od25k
KTsKICNlbmRpZgogCiAgICAgOjpTZXRGb2N1cyhtX2h3bmQpOwpAQCAtMTA3LDcgKzEwNyw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5
ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBCiAgICAgaWYgKCFtX3Jvb3RDaGlsZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RD
aGlsZC5nZXQoKSk7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290Q2hpbGRMYXllcihtX3Jv
b3RDaGlsZC5nZXQoKSk7CiAgICAgUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIgPSBtX3Jvb3RD
aGlsZC0+cm9vdExheWVyKCk7CiAgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+
cm9vdExheWVyKCktPmJvdW5kcygpOwogICAgIG1fcm9vdENoaWxkLT5zZXRGcmFtZShyb290Qm91
bmRzKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBMUkVTVUxUIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3c6OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQQogICAgIGNh
c2UgV01fREVTVFJPWToKICAgICAgICAgbV9od25kID0gMDsKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi0gICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0SG9zdFdpbmRvdygwKTsK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRXaW5kb3coMCk7CiAjZW5kaWYKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXTV9XSU5ET1dQT1NDSEFOR0VEOgpAQCAtMTU2LDcgKzE1Niw3IEBA
IExSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6d25kUHJvYyhIV05E
IGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBCiAgICAgICAgICAgICBpZiAod3AtPmZsYWdzICYgU1dQ
X05PU0laRSkKICAgICAgICAgICAgICAgICBicmVhazsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnJlc2l6ZSgpOworICAgICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5yZXNpemUoKTsKICAgICAgICAgICAgIFBsYXRmb3JtQ0FM
YXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpOwogICAgICAgICAgICAg
Q0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygpOwog
ICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOwpAQCAtMTY2LDcg
KzE2Niw3IEBAIExSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6d25k
UHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBCiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV01fUEFJTlQ6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICAgICBt
X2xheWVyUmVuZGVyZXItPnBhaW50KCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnQo
KTsKICAgICAgICAgOjpWYWxpZGF0ZVJlY3QobV9od25kLCAwKTsKICNlbmRpZgogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmlu
ZGV4IDQ2MTlmMmE3ZTEwMzk5Njc1MTZkMzczNjcwYWIwZTM0MWRjMTIyMGUuLmMxYWU3NjIyODYz
ZjM1NGI5NjFhMGUxOGFmNjY5YzkxNzI0MWZhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaApAQCAtMjcsOCArMjcsOCBAQAogI2RlZmluZSBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93X2gKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyNpbmNsdWRlICJDQUNGTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtQ0FMYXllci5oIgotI2luY2x1ZGUgIldLQ0FDRkxheWVyUmVuZGVyZXIuaCIKICNlbmRp
ZgogCiB0eXBlZGVmIHVuc2lnbmVkIFdQQVJBTTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgog
ICAgIEhXTkQgaHduZCgpIGNvbnN0IHsgcmV0dXJuIG1faHduZDsgfQogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIGxheWVyUmVuZGVy
ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KKyAgICBDQUNGTGF5
ZXJUcmVlSG9zdCogbGF5ZXJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRyZWVIb3N0Lmdl
dCgpOyB9CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RDaGlsZExheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290Q2hpbGQuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPik7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAK
ICAgICBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50KiBtX2NsaWVudDsKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUmVmUHRyPFdLQ0FDRkxheWVyUmVuZGVy
ZXI+IG1fbGF5ZXJSZW5kZXJlcjsKKyAgICBSZWZQdHI8Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5
ZXJUcmVlSG9zdDsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3Jvb3RDaGlsZDsKICNl
bmRpZgogICAgIEhXTkQgbV9od25kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDIzZjhlZTQ4OGUyMWJk
OWQ1NjdiMmM4MDMyZmJhYTcxOTk0NjZkMDMuLjJjZTA4MDQ1NWZmNjllNjBlNGIyMzBmMmY1OWYy
NDVkMzdkYmUwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMS0wMS0y
MSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgVXBkYXRlIGZvciBX
S0NBQ0ZMYXllclJlbmRlcmVyIC0+IENBQ0ZMYXllclRyZWVIb3N0IHJlbmFtZQorCisgICAgICAg
IEFsc28gcmVuYW1lZCBXZWJWaWV3OjptX2xheWVyUmVuZGVyZXIgdG8gV2ViVmlldzo6bV9sYXll
clRyZWVIb3N0IHRvIG1hdGNoLgorCisgICAgICAgIEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9i
LzUyODk4PiBXS0NBQ0ZMYXllclJlbmRlcmVyIHNvdW5kcyBsaWtlIGEgcmVuZGVyIG9iamVjdCwg
YnV0IGlzbid0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKTogQWxzbyBtYWRlIHN1cmUgdG8g
cmVtb3ZlIG91ciBIV05EIGZyb20gdGhlIGxheWVyIHRyZWUKKyAgICAgICAgaG9zdCBiZWZvcmUg
d2UgZ2V0IHJpZCBvZiB0aGUgbGF5ZXIgdHJlZSBob3N0IGl0c2VsZi4KKyAgICAgICAgKiBXZWJW
aWV3Lmg6CisKKzIwMTEtMDEtMjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCiAg
ICAgICAgIFJlcGxhY2Ugc29tZSAic3luYyBjb21wb3NpdGluZyBzdGF0ZSIgdGVybWlub2xvZ3kg
d2l0aCAiZmx1c2ggcGVuZGluZyBHcmFwaGljc0xheWVyIGNoYW5nZXMiCiAKICAgICAgICAgVGhp
cyBzZWVtcyB0byBiZSB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIG91ciBjb2RlIGlzIG1vdmluZy4g
SSBjaG9zZSAiR3JhcGhpY3NMYXllciIgYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAppbmRleCA1YTJjMTliOGVhMDM5MTIyNmFiN2Q0MTc2Y2VlNDUxNjZjMWYyMzc3Li5hOTYyNDcx
Mzk4ZDkxZGQ0N2UwMWIyNmU5ODZmYzE2YTcxZjZiMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwCkBAIC0yOSwyMyArMjksMjIgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogCiAjaW5jbHVkZSAiQ09NUHRyLmgiCisjaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCiAKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0NBQ0ZMYXllclRyZWVIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvV0tDQUNGTGF5ZXJSZW5kZXJlci5oPgot
I2luY2x1ZGUgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgotCi0jaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c2hs
b2JqLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShDRykKICNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CkBAIC0xNDQ2LDcgKzE0NDUsNyBA
QCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZChCT09MIGVuYWJsZWQpCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjphY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZChCT09MKiBlbmFibGVkKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLSAgICAqZW5hYmxlZCA9IFdLQ0FDRkxheWVyUmVuZGVyZXI6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUoKSAmJiBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQg
PSBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpICYm
IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZFByZWZlcmVuY2VLZXkpKTsKICNlbHNlCiAgICAgKmVuYWJsZWQgPSBGQUxTRTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5ZWIwYzBlMDJhOTUyMTU2YjQzZmEyYjNiM2E4ODMxZDcy
MTQwZWVlLi41YTMzZDViYjM5NzQ2YzE5OWI4YmEzY2UyMjEyYWNiZmJjNDZmYTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcApAQCAtMzg4LDcgKzM4OCw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKICAg
ICBBU1NFUlQoIW1fdmlld1dpbmRvdyk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi0gICAgQVNTRVJUKCFtX2xheWVyUmVuZGVyZXIpOworICAgIEFTU0VSVCghbV9sYXllclRy
ZWVIb3N0KTsKICAgICBBU1NFUlQoIW1fYmFja2luZ0xheWVyKTsKICNlbmRpZgogCkBAIC04ODMs
OCArODgzLDggQEAgdm9pZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBuZXdT
aXplKQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+cmVzaXplKG5ld1NpemUpOwogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCi0g
ICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVzaXplKCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yZXNpemUoKTsKICAgICBpZiAobV9iYWNraW5n
TGF5ZXIpIHsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CiAgICAg
ICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKQEAgLTk5NCw3ICs5OTQsNyBA
QCB2b2lkIFdlYlZpZXc6OnBhaW50KEhEQyBkYywgTFBBUkFNIG9wdGlvbnMpCiAgICAgICAgIC8v
IEZsdXNoaW5nIG1pZ2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCiAg
ICAgICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gcGFpbnQgaW50byBkYyAoaWYgcHJvdmlkZWQpLiA8aHR0cDovL3dl
YmtpdC5vcmcvYi81MjU3OD4KLSAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cGFpbnQoKTsK
KyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnQoKTsKICAgICAgICAgICAgIDo6VmFs
aWRhdGVSZWN0KG1fdmlld1dpbmRvdywgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTYyNzQsMjQgKzYyNzQsMjQgQEAgdm9pZCBXZWJWaWV3OjpzZXRSb290Q2hpbGRMYXll
cihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBXZWJWaWV3OjpmbHVzaFBlbmRpbmdHcmFw
aGljc0xheWVyQ2hhbmdlc1Nvb24oKQogewotICAgIGlmICghbV9sYXllclJlbmRlcmVyKQorICAg
IGlmICghbV9sYXllclRyZWVIb3N0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9sYXllclJlbmRl
cmVyLT5mbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKTsKKyAgICBtX2xheWVy
VHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwogfQogCiB2
b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkK
IHsKLSAgICBpZiAobV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPT0gYWNjZWxlcmF0ZWQgfHwg
IVdLQ0FDRkxheWVyUmVuZGVyZXI6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkK
KyAgICBpZiAobV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPT0gYWNjZWxlcmF0ZWQgfHwgIUNB
Q0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChhY2NlbGVyYXRlZCkgewotICAgICAgICBtX2xheWVyUmVu
ZGVyZXIgPSBXS0NBQ0ZMYXllclJlbmRlcmVyOjpjcmVhdGUoKTsKLSAgICAgICAgaWYgKG1fbGF5
ZXJSZW5kZXJlcikgeworICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQUNGTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKCk7CisgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgICAg
IG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gdHJ1ZTsKIAotICAgICAgICAgICAgbV9sYXll
clJlbmRlcmVyLT5zZXRDbGllbnQodGhpcyk7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldENsaWVudCh0aGlzKTsKICAgICAgICAgICAgIEFTU0VSVChtX3ZpZXdXaW5kb3cpOwotICAg
ICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRIb3N0V2luZG93KG1fdmlld1dpbmRvdyk7Cisg
ICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFdpbmRvdyhtX3ZpZXdXaW5kb3cpOwogCiAg
ICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgcGVyaGFwcyBnZXQgYmV0dGVyIHBlcmZvcm1h
bmNlIGJ5IG5ldmVyIGFsbG93aW5nIHRoaXMgbGF5ZXIgdG8KICAgICAgICAgICAgIC8vIGJlY29t
ZSB0aWxlZCAob3IgY2hvb3NpbmcgYSBoaWdoZXItdGhhbi1ub3JtYWwgdGlsaW5nIHRocmVzaG9s
ZCkuCkBAIC02MzA0LDcgKzYzMDQsNyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgICAgIG1fYmFja2luZ0xheWVyLT5z
ZXRTaXplKEludFJlY3QoY2xpZW50UmVjdCkuc2l6ZSgpKTsKICAgICAgICAgICAgIG1fYmFja2lu
Z0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgICAgICAgICAgbV9sYXllclJlbmRlcmVy
LT5zZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihtX2Jh
Y2tpbmdMYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKG1f
YmFja2luZ0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgICAgICAgICAgLy8gV2UgYXJl
bid0IGdvaW5nIHRvIGJlIHVzaW5nIG91ciBiYWNraW5nIHN0b3JlIHdoaWxlIHdlJ3JlIGluIGFj
Y2VsZXJhdGVkIGNvbXBvc2l0aW5nCiAgICAgICAgICAgICAvLyBtb2RlLiBCdXQgZG9uJ3QgZGVs
ZXRlIGl0IGltbWVkaWF0ZWx5LCBpbiBjYXNlIHdlIHN3aXRjaCBvdXQgb2YgYWNjZWxlcmF0ZWQK
QEAgLTYzMTIsOSArNjMxMiwxMCBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgICAgIGRlbGV0ZUJhY2tpbmdTdG9yZVNv
b24oKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX2xheWVyUmVu
ZGVyZXIpOwotICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldENsaWVudCgwKTsKLSAgICAgICAg
bV9sYXllclJlbmRlcmVyID0gMDsKKyAgICAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Q2xpZW50KDApOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFdpbmRvdygwKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKICAgICAg
ICAgbV9iYWNraW5nTGF5ZXIgPSAwOwogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZyA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAppbmRleCA2OGIwMmRhMTRjYzVkNmU1YjRk
ZTE0MDkyYmQ5Y2NkYjY2YTc3MDMxLi5jODFmNmQ2MGMyMmI1OWQ5OTU1NWI1NzlmMzMyOTA1OGRj
ODNjZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCkBAIC00MCw4ICs0MCw4IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUg
PFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
Q0FMYXllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvV0tDQUNGTGF5ZXJSZW5kZXJlci5oPgogI2Vu
ZGlmCiAKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7CkBAIC03MSw3ICs3MSw3IEBA
IGNsYXNzIFdlYlZpZXcKICAgICAsIFdlYkNvcmU6OldpbmRvd01lc3NhZ2VMaXN0ZW5lcgogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDbGllbnQKLSAgICAsIFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQKKyAgICAs
IFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Q2xpZW50CiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAg
LTk0Nyw3ICs5NDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3Jk
ZXJzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0
OwogCi0gICAgLy8gV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudAorICAgIC8vIENBQ0ZMYXllclRy
ZWVIb3N0Q2xpZW50CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlbmRlcigpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBmbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlcygpOwogI2VuZGlm
CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZzsg
fQogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sKTsKIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpXS0NBQ0ZMYXllclJlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhvc3Q7CiAgICAgT3du
UHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fYmFja2luZ0xheWVyOwogICAgIGJvb2wgbV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYWZlMWJjZDk4
ODVmNWE3OGU2ZWUyYzQ1MzgxMGI3YmMyOTgwMDY1Li4xN2E2Y2U3NjkzOWMyMDViZjU5NDM3NjJi
MmEwZjYwOWQzNTkzMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDEtMjEg
IEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBmb3IgV0tD
QUNGTGF5ZXJSZW5kZXJlciAtPiBDQUNGTGF5ZXJWaWV3IHJlbmFtZQorCisgICAgICAgIEZpeGVz
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzUyODk4PiBXS0NBQ0ZMYXllclJlbmRlcmVyIHNvdW5kcyBs
aWtlIGEgcmVuZGVyIG9iamVjdCwgYnV0IGlzbid0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xheWVyQmFj
a2VkRHJhd2luZ0FyZWFXaW4uY3BwOiBKdXN0IHJlbW92ZWQgYWxsIHRoZSB1bm5lY2Vzc2FyeQor
ICAgICAgICAjaW5jbHVkZXMuCisKIDIwMTEtMDEtMjAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xheWVyQmFja2VkRHJh
d2luZ0FyZWFXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9M
YXllckJhY2tlZERyYXdpbmdBcmVhV2luLmNwcAppbmRleCBjMDdlMWY1Nzk5MDczZWM3ZmMzNzI3
ZGIyNDFiNTI0NWJlZDUzMDQ2Li5jYWU3OWMyYzExODdiYWEwMTg3NmQ4YTA4YjJhM2JmNWMyMGQy
NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0xh
eWVyQmFja2VkRHJhd2luZ0FyZWFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS93aW4vTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVdpbi5jcHAKQEAgLTI3LDE2ICsy
Nyw2IEBACiAKICNpbmNsdWRlICJMYXllckJhY2tlZERyYXdpbmdBcmVhLmgiCiAKLSNpbmNsdWRl
ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgot
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FD
RkxheWVyUmVuZGVyZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVJbnN0YW5jZUhhbmRs
ZS5oPgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Cg==
</data>
<flag name="review"
          id="71189"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>