<?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>72452</bug_id>
          
          <creation_ts>2011-11-15 19:25:51 -0800</creation_ts>
          <short_desc>[Chromium] Avoid color mask operations for root layers</short_desc>
          <delta_ts>2011-11-16 17:30:10 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Daniel Sievers">sievers</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>503515</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-15 19:25:51 -0800</bug_when>
    <thetext>[Chromium] Avoid clear and blending for root layers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503516</commentid>
    <comment_count>1</comment_count>
      <attachid>115299</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-15 19:30:23 -0800</bug_when>
    <thetext>Created attachment 115299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503517</commentid>
    <comment_count>2</comment_count>
      <attachid>115300</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-15 19:33:21 -0800</bug_when>
    <thetext>Created attachment 115300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503561</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-15 20:58:46 -0800</bug_when>
    <thetext>This seems like a lot of shaders.  Did you consider controlling the alpha behavior with a uniform instead of a new shader?

For non-composited content we don&apos;t need any opaque AA variants, since we don&apos;t draw the non-composited content tiles with the AA shaders.  I&apos;m not sure AA with a 1.0 alpha value makes too much sense anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504011</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-11-16 10:15:47 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=115300&amp;action=review

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:394
&gt;      m_context-&gt;clear(GraphicsContext3D::COLOR_BUFFER_BIT);

Note: depending on the gpu architecture, doing the clear may actually be a performance improvement. For example, on a tiled architecture, clearing usually permits the driver to avoid loading in the previous frame&apos;s back buffer, saving bandwidth. But obviously on others, it has the cost of writing the back buffer with pixels that will be overwritten later. Not sure which way to go, maybe we&apos;ll want to make that an option at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504025</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-11-16 10:26:33 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This seems like a lot of shaders.  Did you consider controlling the alpha behavior with a uniform instead of a new shader?

It&apos;s a tradeoff. Adding a uniform and dynamically controlling this behavior will slow down all shaders. It&apos;s not even clear that it&apos;d be a win over the current version.
Same goes with the layer opacity.
I bet no more than a couple of shaders are used for 90% of the pixels we draw, and I think it&apos;s worth optimizing those as much as possible.

Is your concern the code complexity of replicating all these shaders? I think we could have good solutions there (e.g. combine shaders out of building blocks).

&gt; 
&gt; For non-composited content we don&apos;t need any opaque AA variants, since we don&apos;t draw the non-composited content tiles with the AA shaders.  I&apos;m not sure AA with a 1.0 alpha value makes too much sense anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504083</commentid>
    <comment_count>6</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-16 11:25:53 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This seems like a lot of shaders.  Did you consider controlling the alpha behavior with a uniform instead of a new shader?

With the opaque shaders, we&apos;re just trying to avoid having to turn off alpha writes for the root layer, right? And, we only need that because we have one platform that trashes the alpha channel for text.  And, that one platform doesn&apos;t really have this performance penalty.  So, why don&apos;t we just only turn off alpha writes for that one platform?

CCTiledLayerImpl::draw is getting ridiculous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504108</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-16 11:48:52 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115300&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:394
&gt; &gt;      m_context-&gt;clear(GraphicsContext3D::COLOR_BUFFER_BIT);
&gt; 
&gt; Note: depending on the gpu architecture, doing the clear may actually be a performance improvement. For example, on a tiled architecture, clearing usually permits the driver to avoid loading in the previous frame&apos;s back buffer, saving bandwidth. But obviously on others, it has the cost of writing the back buffer with pixels that will be overwritten later. Not sure which way to go, maybe we&apos;ll want to make that an option at some point.

Wait, turning off blending for the root layer and turning off masking out of the alpha channel means that it does not have to read anything from the back buffer, right? And that is the purpose of my patch, i.e. instead of writing the source alpha values, just write out 1.0, so it should always be a perf win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504110</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-16 11:51:56 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; This seems like a lot of shaders.  Did you consider controlling the alpha behavior with a uniform instead of a new shader?
&gt; 
&gt; It&apos;s a tradeoff. Adding a uniform and dynamically controlling this behavior will slow down all shaders. It&apos;s not even clear that it&apos;d be a win over the current version.
&gt; Same goes with the layer opacity.
&gt; I bet no more than a couple of shaders are used for 90% of the pixels we draw, and I think it&apos;s worth optimizing those as much as possible.
&gt; 


Although if we only need this for the very simple shaders (and not AA), we are probably not limited by the pixel operations there, so I could probably just add a uniform to be added to the alpha channel (and set it to 0 or 1 respectively).

Alternatively, I could simply reduce the current patch to only add the new shader variants for simlpe and swizzled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504166</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-11-16 13:06:54 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115300&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:394
&gt; &gt; &gt;      m_context-&gt;clear(GraphicsContext3D::COLOR_BUFFER_BIT);
&gt; &gt; 
&gt; &gt; Note: depending on the gpu architecture, doing the clear may actually be a performance improvement. For example, on a tiled architecture, clearing usually permits the driver to avoid loading in the previous frame&apos;s back buffer, saving bandwidth. But obviously on others, it has the cost of writing the back buffer with pixels that will be overwritten later. Not sure which way to go, maybe we&apos;ll want to make that an option at some point.
&gt; 
&gt; Wait, turning off blending for the root layer and turning off masking out of the alpha channel means that it does not have to read anything from the back buffer, right? And that is the purpose of my patch, i.e. instead of writing the source alpha values, just write out 1.0, so it should always be a perf win.

On a tiled architecture, the GPU has a piece of embedded memory / cache that is smaller than the frame buffer. It collects all screen-space draw operations (clear, triangles post transform etc.), map them to a set of tiles that fit into the cache, then goes for all the tiles:
1- read frame buffer from memory to cache
2- do all draw operations scissored to the tile
3- write frame buffer from cache to memory

If you clear first, it can skip (1) because it&apos;s easy to know it will erase all the data. Otherwise, it would have to go through all the triangles and check whether or not they fully cover the tile which would be expensive, so it generally doesn&apos;t do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504170</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-11-16 13:10:25 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; This seems like a lot of shaders.  Did you consider controlling the alpha behavior with a uniform instead of a new shader?
&gt; &gt; 
&gt; &gt; It&apos;s a tradeoff. Adding a uniform and dynamically controlling this behavior will slow down all shaders. It&apos;s not even clear that it&apos;d be a win over the current version.
&gt; &gt; Same goes with the layer opacity.
&gt; &gt; I bet no more than a couple of shaders are used for 90% of the pixels we draw, and I think it&apos;s worth optimizing those as much as possible.
&gt; &gt; 
&gt; 
&gt; 
&gt; Although if we only need this for the very simple shaders (and not AA), we are probably not limited by the pixel operations there, so I could probably just add a uniform to be added to the alpha channel (and set it to 0 or 1 respectively).

We most likely are limited by pixel operations. It depends on the architecture, but it&apos;s not clear that a single texture load could fully hide the ALUs for both the opacity multiply and the alpha squelching.

A benchmark would tell us...

&gt; 
&gt; Alternatively, I could simply reduce the current patch to only add the new shader variants for simlpe and swizzled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504184</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-16 13:19:24 -0800</bug_when>
    <thetext>
&gt; On a tiled architecture, the GPU has a piece of embedded memory / cache that is smaller than the frame buffer. It collects all screen-space draw operations (clear, triangles post transform etc.), map them to a set of tiles that fit into the cache, then goes for all the tiles:
&gt; 1- read frame buffer from memory to cache
&gt; 2- do all draw operations scissored to the tile
&gt; 3- write frame buffer from cache to memory
&gt; 
&gt; If you clear first, it can skip (1) because it&apos;s easy to know it will erase all the data. Otherwise, it would have to go through all the triangles and check whether or not they fully cover the tile which would be expensive, so it generally doesn&apos;t do that.


Although I do believe you :) I feel like we should rather make the more naive assumption that clearing before rendering over the same area is potentially slower (and remove the clear as part of this patch). Ideally, this should be left to the driver or hardware to try to optimize these cases, as I find it counter-intuitive at the OpenGL API level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504186</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-16 13:20:23 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; This seems like a lot of shaders.  Did you consider controlling the alpha behavior with a uniform instead of a new shader?
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s a tradeoff. Adding a uniform and dynamically controlling this behavior will slow down all shaders. It&apos;s not even clear that it&apos;d be a win over the current version.
&gt; &gt; &gt; Same goes with the layer opacity.
&gt; &gt; &gt; I bet no more than a couple of shaders are used for 90% of the pixels we draw, and I think it&apos;s worth optimizing those as much as possible.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Although if we only need this for the very simple shaders (and not AA), we are probably not limited by the pixel operations there, so I could probably just add a uniform to be added to the alpha channel (and set it to 0 or 1 respectively).
&gt; 
&gt; We most likely are limited by pixel operations. It depends on the architecture, but it&apos;s not clear that a single texture load could fully hide the ALUs for both the opacity multiply and the alpha squelching.
&gt; 
&gt; A benchmark would tell us...
&gt; 

Maybe go for the below then:

&gt; &gt; 
&gt; &gt; Alternatively, I could simply reduce the current patch to only add the new shader variants for simlpe and swizzled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504274</commentid>
    <comment_count>13</comment_count>
      <attachid>115453</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-16 14:43:15 -0800</bug_when>
    <thetext>Created attachment 115453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504282</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-16 14:47:44 -0800</bug_when>
    <thetext>New patch. Would there be any assert() needed for AA?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504298</commentid>
    <comment_count>15</comment_count>
      <attachid>115453</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-16 14:59:55 -0800</bug_when>
    <thetext>Comment on attachment 115453
Patch

One principle I&apos;ve tried to follow for programs is to eagerly initialize any programs that are likely needed on every page and to lazily initialize other programs.  Eagerly initialized programs induce a load hit on every compositor initialization, but it&apos;s a lower overall cost than the cost to lazily initialize a program.  The reason is that lazily initialized programs are created during drawLayers() so querying the uniform locations has to wait for all the uploads on that frame to complete.

Currently the non-AA render surface program and non-AA tiler programs are eagerly initialized and all others are lazy.  For programs that we want to use on root tiles we definitely want to eagerly initialize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504337</commentid>
    <comment_count>16</comment_count>
      <attachid>115453</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-16 15:43:55 -0800</bug_when>
    <thetext>Comment on attachment 115453
Patch

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

Daniel pointed out offline that he is eagerly initializing the non-swizzled program and lazily initializing the swizzled one, which matches what we currently do for other programs.

Could you please move removing the compositor blue clear to a separate patch? We&apos;ve had difficulties with that bit in particular and it&apos;s not inherently related to the other changes.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:397
&gt; +#if !defined ( NDEBUG )

we tend to do #ifndef NDEBUG

&gt; Source/WebCore/platform/graphics/chromium/ShaderChromium.h:185
&gt; +    String getShaderString() const;

nit: this shouldn&apos;t have a &quot;get&quot; prefix, in WebKit style this function should be called &apos;shaderString()&apos;.  It looks like everything else in this file uses the get prefix as well though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504341</commentid>
    <comment_count>17</comment_count>
      <attachid>115465</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2011-11-16 15:51:24 -0800</bug_when>
    <thetext>Created attachment 115465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504379</commentid>
    <comment_count>18</comment_count>
      <attachid>115465</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-16 16:22:13 -0800</bug_when>
    <thetext>Comment on attachment 115465
Patch

R=me. We can tune doing a glClear() separately, IMO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504443</commentid>
    <comment_count>19</comment_count>
      <attachid>115465</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-16 17:30:05 -0800</bug_when>
    <thetext>Comment on attachment 115465
Patch

Clearing flags on attachment: 115465

Committed r100536: &lt;http://trac.webkit.org/changeset/100536&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504444</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-16 17:30:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115299</attachid>
            <date>2011-11-15 19:30:23 -0800</date>
            <delta_ts>2011-11-15 19:33:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72452-20111115193021.patch</filename>
            <type>text/plain</type>
            <size>26119</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFmMGEyZjRmNDQ5ZWMy
YmY0NjdiNDEwMmVjNjIzOTg3MWQ4ZjZmZC4uZGY5N2JmYmRkMjczYmQwYjZiNDcwZjE2NjBlNDdm
MGFiNWJiMzllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDExLTExLTE1ICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QXZvaWQgY2xlYXIgYW5kIGJsZW5kaW5nIGZvciByb290IGxheWVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NTIKKworICAgICAgICBJbnN0ZWFk
IG9mIHJlbHlpbmcgb24gdGhlIGNvbWJpbmF0aW9uIG9mIGNsZWFyaW5nIHRoZSBzdXJmYWNlIGFu
ZCBpbml0aWFsaXppbmcKKyAgICAgICAgdGhlIGFscGhhIGNoYW5uZWwgdG8gMS4wIGZvbGxvd2Vk
IGJ5IGRpc2FibGluZyBhbHBoYSBpbiB0aGUgY29sb3IgbWFzayB3aGVuCisgICAgICAgIHJlbmRl
cmluZyB0aGUgcm9vdCBsYXllciB0aWxlcywgYWRkIHNoYWRlcnMgdG8gc3VwcG9ydCB3cml0aW5n
IG91dCBvcGFxdWUgbGF5ZXJzCisgICAgICAgIChhbHBoYSBjaGFubmVsIHZhbHVlcyB3cml0dGVu
IGFzIDEuMCkuCisgICAgCisgICAgICAgIEFsc28gcmVzdHJpY3QgdGhlIHN1cmZhY2UgY2xlYXIg
dG8gZGVidWcgYnVpbGRzIChzaW5jZSBpdCBhbHNvIGNsZWFycyB0aGUgY29sb3IKKyAgICAgICAg
dG8gYmx1ZSBmb3IgZGVidWdnaW5nKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRP
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQ
cm9ncmFtT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGlsZXJQcm9ncmFtT3BhcXVlQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZUFBKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6RnJh
Z21lbnRUZXhPcGFxdWVCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4T3Bh
cXVlQmluZGluZzo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFU
ZXhPcGFxdWU6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFNo
YWRlclJHQkFUZXhTd2l6emxlT3BhcXVlOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFBQmluZGluZzo6RnJhZ21lbnRUZXhDbGFtcE9w
YXF1ZUFBQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleENsYW1wT3BhcXVl
QUFCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRl
eENsYW1wT3BhcXVlQUE6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFn
bWVudFNoYWRlclJHQkFUZXhDbGFtcFN3aXp6bGVPcGFxdWVBQTo6Z2V0U2hhZGVyU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjphbHBoYUxvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6c2FtcGxlckxv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRp
bmc6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcE9w
YXF1ZUFBQmluZGluZzo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRpbmc6OmZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFBQmluZGluZzo6ZWRn
ZUxvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuaDoKKwogMjAxMS0xMS0xNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBpcyBub3cgdGhlIG9ubHkgU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDEzNGJiMDUyYzI3OGYwZDM4YTRmMTk2YWZhYmUwZTlkOTQ5OTA4ZTcuLjNmM2I0ZjRmYTM4
OTA2YmFjYmFjNmMyMTVlODM4YjIwNzU2NTdkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcApAQCAtMzg3LDEwICszODcsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAKICAgICB1c2VSZW5kZXJTdXJmYWNlKG1fZGVm
YXVsdFJlbmRlclN1cmZhY2UpOwogCisjaWYgIWRlZmluZWQgKCBOREVCVUcgKQogICAgIC8vIENs
ZWFyIHRvIGJsdWUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3BvdCB1bnJlbmRlcmVkIHJlZ2lvbnMu
CiAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDEsIDEpOwogICAgIG1fY29udGV4dC0+
Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOwogICAgIG1fY29udGV4dC0+Y2xlYXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOworI2VuZGlmCiAKICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxF
TkQpKTsKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFw
aGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBI
QSkpOwpAQCAtNjU3LDYgKzY1OSw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0
aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAgbV9zaGFyZWRHZW9tZXRyeSA9IGFkb3B0UHRyKG5l
dyBHZW9tZXRyeUJpbmRpbmcobV9jb250ZXh0LmdldCgpKSk7CiAgICAgbV9yZW5kZXJTdXJmYWNl
UHJvZ3JhbSA9IGFkb3B0UHRyKG5ldyBDQ1JlbmRlclN1cmZhY2U6OlByb2dyYW0obV9jb250ZXh0
LmdldCgpKSk7CiAgICAgbV90aWxlclByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NUaWxlZExheWVy
SW1wbDo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICBtX3RpbGVyUHJvZ3JhbU9wYXF1
ZSA9IGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtT3BhcXVlKG1fY29udGV4
dC5nZXQoKSkpOwogCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5mbHVzaCgp
KTsKIApAQCAtNzQxLDYgKzc0NCwxNiBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFt
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbSgpCiAgICAgcmV0dXJuIG1fdGls
ZXJQcm9ncmFtLmdldCgpOwogfQogCitjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtT3Bh
cXVlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbU9wYXF1ZSgpCit7CisgICAg
QVNTRVJUKG1fdGlsZXJQcm9ncmFtT3BhcXVlKTsKKyAgICBpZiAoIW1fdGlsZXJQcm9ncmFtT3Bh
cXVlLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVy
Q2hyb21pdW06OnRpbGVyUHJvZ3JhbU9wYXF1ZTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAg
ICAgICBtX3RpbGVyUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwor
ICAgIH0KKyAgICByZXR1cm4gbV90aWxlclByb2dyYW1PcGFxdWUuZ2V0KCk7Cit9CisKIGNvbnN0
IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1BQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
clByb2dyYW1BQSgpCiB7CiAgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbUFBKQpAQCAtNzUyLDYgKzc2
NSwxNyBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGlsZXJQcm9ncmFtQUEoKQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbUFBLmdl
dCgpOwogfQogCitjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtT3BhcXVlQUEqIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtT3BhcXVlQUEoKQoreworICAgIGlmICghbV90
aWxlclByb2dyYW1PcGFxdWVBQSkKKyAgICAgICAgbV90aWxlclByb2dyYW1PcGFxdWVBQSA9IGFk
b3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtT3BhcXVlQUEobV9jb250ZXh0Lmdl
dCgpKSk7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbU9wYXF1ZUFBLT5pbml0aWFsaXplZCgpKSB7
CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3Jh
bU9wYXF1ZUFBOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIG1fdGlsZXJQcm9ncmFt
T3BhcXVlQUEtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJu
IG1fdGlsZXJQcm9ncmFtT3BhcXVlQUEuZ2V0KCk7Cit9CisKIGNvbnN0IENDVGlsZWRMYXllcklt
cGw6OlByb2dyYW1Td2l6emxlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3
aXp6bGUoKQogewogICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlKQpAQCAtNzYzLDYgKzc4
NywxNyBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6egogICAgIHJldHVybiBtX3RpbGVyUHJvZ3Jh
bVN3aXp6bGUuZ2V0KCk7CiB9CiAKK2NvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6
emxlT3BhcXVlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGVPcGFx
dWUoKQoreworICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlKQorICAgICAgICBt
X3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWUgPSBhZG9wdFB0cihuZXcgQ0NUaWxlZExheWVySW1w
bDo6UHJvZ3JhbVN3aXp6bGVPcGFxdWUobV9jb250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3Rp
bGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWUtPmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZTo6
aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFx
dWUtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fdGls
ZXJQcm9ncmFtU3dpenpsZU9wYXF1ZS5nZXQoKTsKK30KKwogY29uc3QgQ0NUaWxlZExheWVySW1w
bDo6UHJvZ3JhbVN3aXp6bGVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1T
d2l6emxlQUEoKQogewogICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlQUEpCkBAIC03NzQs
NiArODA5LDE3IEBAIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlQUEqIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpCiAgICAgcmV0dXJuIG1fdGlsZXJQ
cm9ncmFtU3dpenpsZUFBLmdldCgpOwogfQogCitjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9n
cmFtU3dpenpsZU9wYXF1ZUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3
aXp6bGVPcGFxdWVBQSgpCit7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWVB
QSkKKyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlQUEgPSBhZG9wdFB0cihuZXcg
Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVPcGFxdWVBQShtX2NvbnRleHQuZ2V0KCkp
KTsKKyAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZUFBLT5pbml0aWFsaXplZCgp
KSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJv
Z3JhbVN3aXp6bGVPcGFxdWVBQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBtX3Rp
bGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWVBQS0+aW5pdGlhbGl6ZShtX2NvbnRleHQuZ2V0KCkpOwor
ICAgIH0KKyAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlQUEuZ2V0KCk7Cit9
CisKIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNhbnZhc0xheWVyUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX2NhbnZhc0xheWVyUHJvZ3Jh
bSkKQEAgLTg0MiwxMiArODg4LDIwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVh
bnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5jbGVh
bnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdGlsZXJQcm9ncmFtKQogICAgICAgICBt
X3RpbGVyUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3RpbGVy
UHJvZ3JhbU9wYXF1ZSkKKyAgICAgICAgbV90aWxlclByb2dyYW1PcGFxdWUtPmNsZWFudXAobV9j
b250ZXh0LmdldCgpKTsKICAgICBpZiAobV90aWxlclByb2dyYW1BQSkKICAgICAgICAgbV90aWxl
clByb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3RpbGVyUHJv
Z3JhbU9wYXF1ZUFBKQorICAgICAgICBtX3RpbGVyUHJvZ3JhbU9wYXF1ZUFBLT5jbGVhbnVwKG1f
Y29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdGlsZXJQcm9ncmFtU3dpenpsZSkKICAgICAgICAg
bV90aWxlclByb2dyYW1Td2l6emxlLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYg
KG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZSkKKyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6
emxlT3BhcXVlLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdGlsZXJQcm9n
cmFtU3dpenpsZUFBKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+Y2xlYW51cCht
X2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWVBQSkK
KyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlQUEtPmNsZWFudXAobV9jb250ZXh0
LmdldCgpKTsKICAgICBpZiAobV9jYW52YXNMYXllclByb2dyYW0pCiAgICAgICAgIG1fY2FudmFz
TGF5ZXJQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fcGx1Z2lu
TGF5ZXJQcm9ncmFtKQpAQCAtODcwLDkgKzkyNCwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIG1fYm9yZGVyUHJvZ3JhbS5jbGVhcigp
OwogICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV90aWxlclByb2dy
YW0uY2xlYXIoKTsKKyAgICBtX3RpbGVyUHJvZ3JhbU9wYXF1ZS5jbGVhcigpOwogICAgIG1fdGls
ZXJQcm9ncmFtQUEuY2xlYXIoKTsKKyAgICBtX3RpbGVyUHJvZ3JhbU9wYXF1ZUFBLmNsZWFyKCk7
CiAgICAgbV90aWxlclByb2dyYW1Td2l6emxlLmNsZWFyKCk7CisgICAgbV90aWxlclByb2dyYW1T
d2l6emxlT3BhcXVlLmNsZWFyKCk7CiAgICAgbV90aWxlclByb2dyYW1Td2l6emxlQUEuY2xlYXIo
KTsKKyAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWVBQS5jbGVhcigpOwogICAgIG1fY2Fu
dmFzTGF5ZXJQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV9wbHVnaW5MYXllclByb2dyYW0uY2xlYXIo
KTsKICAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKaW5kZXggZjlhODMxYzgxZjJjYzZjYzg0YmQ3NWJiODJmNDgxMjQy
MzQ5YTk4NC4uNmVkZTM4MzRlMGQyNzk2NjlkYzg3MGM1MmIyMDEzNTQyMTU2ZjVmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEyMCw5ICsxMjAsMTMgQEAgcHVibGlj
OgogICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW0qIHJlbmRlclN1cmZhY2VN
YXNrUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6TWFza1Byb2dyYW1BQSog
cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEoKTsKICAgICBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBs
OjpQcm9ncmFtKiB0aWxlclByb2dyYW0oKTsKKyAgICBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQ
cm9ncmFtT3BhcXVlKiB0aWxlclByb2dyYW1PcGFxdWUoKTsKICAgICBjb25zdCBDQ1RpbGVkTGF5
ZXJJbXBsOjpQcm9ncmFtQUEqIHRpbGVyUHJvZ3JhbUFBKCk7CisgICAgY29uc3QgQ0NUaWxlZExh
eWVySW1wbDo6UHJvZ3JhbU9wYXF1ZUFBKiB0aWxlclByb2dyYW1PcGFxdWVBQSgpOwogICAgIGNv
bnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlKiB0aWxlclByb2dyYW1Td2l6emxl
KCk7CisgICAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVPcGFxdWUqIHRp
bGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWUoKTsKICAgICBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQ
cm9ncmFtU3dpenpsZUFBKiB0aWxlclByb2dyYW1Td2l6emxlQUEoKTsKKyAgICBjb25zdCBDQ1Rp
bGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZU9wYXF1ZUFBKiB0aWxlclByb2dyYW1Td2l6emxl
T3BhcXVlQUEoKTsKICAgICBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbSogY2FudmFz
TGF5ZXJQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW0qIHBs
dWdpbkxheWVyUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFt
RmxpcCogcGx1Z2luTGF5ZXJQcm9ncmFtRmxpcCgpOwpAQCAtMjA1LDkgKzIwOSwxMyBAQCBwcml2
YXRlOgogICAgIE93blB0cjxMYXllckNocm9taXVtOjpCb3JkZXJQcm9ncmFtPiBtX2JvcmRlclBy
b2dyYW07CiAgICAgT3duUHRyPENDSGVhZHNVcERpc3BsYXk6OlByb2dyYW0+IG1faGVhZHNVcERp
c3BsYXlQcm9ncmFtOwogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtPiBtX3Rp
bGVyUHJvZ3JhbTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbU9wYXF1ZT4g
bV90aWxlclByb2dyYW1PcGFxdWU7CiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw6OlByb2dy
YW1Td2l6emxlPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGU7CisgICAgT3duUHRyPENDVGlsZWRMYXll
ckltcGw6OlByb2dyYW1Td2l6emxlT3BhcXVlPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWU7
CiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw6OlByb2dyYW1BQT4gbV90aWxlclByb2dyYW1B
QTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbU9wYXF1ZUFBPiBtX3RpbGVy
UHJvZ3JhbU9wYXF1ZUFBOwogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dp
enpsZUFBPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVy
SW1wbDo6UHJvZ3JhbVN3aXp6bGVPcGFxdWVBQT4gbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVl
QUE7CiAgICAgT3duUHRyPENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtPiBtX2NhbnZhc0xheWVy
UHJvZ3JhbTsKICAgICBPd25QdHI8Q0NQbHVnaW5MYXllckltcGw6OlByb2dyYW0+IG1fcGx1Z2lu
TGF5ZXJQcm9ncmFtOwogICAgIE93blB0cjxDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbUZsaXA+
IG1fcGx1Z2luTGF5ZXJQcm9ncmFtRmxpcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNwcAppbmRleCAy
MmY2Nzc3MzNkN2EzZGEyODNiMGQ3ZmQ2MThjODBkZTJkNGIxYmMxLi5jZDRiNjM1OTgwMTE4ZmIw
NTVhZWFlMzkyOWE3MjczODcwNzU1NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCkBAIC0y
NjksNiArMjY5LDE4IEBAIHZvaWQgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmc6OmluaXQoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiAgICAgQVNTRVJUKG1fc2Ft
cGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMSk7CiB9CiAKK0ZyYWdt
ZW50VGV4T3BhcXVlQmluZGluZzo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nKCkKKyAgICA6IG1f
c2FtcGxlckxvY2F0aW9uKC0xKQoreworfQorCit2b2lkIEZyYWdtZW50VGV4T3BhcXVlQmluZGlu
Zzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sK
KyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAic190ZXh0dXJlIik7CisKKyAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEp
OworfQorCiBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhOjpnZXRTaGFkZXJT
dHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBTSEFERVIoCkBAIC0yOTksNiArMzExLDIwIEBA
IFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29u
c3QKICAgICApOwogfQogCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4T3BhcXVlOjpnZXRT
aGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIoCisgICAgICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAg
ICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAgICB2b2lkIG1haW4oKQor
ICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVy
ZSwgdl90ZXhDb29yZCk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleENvbG9y
LnJnYiwgMS4wKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKIFN0cmluZyBGcmFnbWVudFNoYWRl
clJHQkFUZXhTd2l6emxlQWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFNIQURFUigKQEAgLTMxNCw2ICszNDAsMjAgQEAgU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdC
QVRleFN3aXp6bGVBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCitT
dHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZU9wYXF1ZTo6Z2V0U2hhZGVyU3RyaW5n
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgIHVuaWZv
cm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAgdm9pZCBtYWluKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHZfdGV4Q29v
cmQpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xvci56LCB0ZXhDb2xv
ci55LCB0ZXhDb2xvci54LCAxLjApOworICAgICAgICB9CisgICAgKTsKK30KKwogRnJhZ21lbnRT
aGFkZXJSR0JBVGV4QWxwaGFBQTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpCiAgICAg
OiBtX3NhbXBsZXJMb2NhdGlvbigtMSkKICAgICAsIG1fYWxwaGFMb2NhdGlvbigtMSkKQEAgLTM3
Myw2ICs0MTMsMjIgQEAgdm9pZCBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmc6OmluaXQo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHAKICAgICBBU1NFUlQobV9zYW1w
bGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxvY2F0aW9uICE9IC0xICYmIG1fZnJhZ21lbnRU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbiAhPSAtMSAmJiBtX2VkZ2VMb2NhdGlvbiAhPSAtMSk7CiB9CiAK
K0ZyYWdtZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRpbmc6OkZyYWdtZW50VGV4Q2xhbXBPcGFxdWVB
QUJpbmRpbmcoKQorICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCisgICAgLCBtX2ZyYWdtZW50
VGV4VHJhbnNmb3JtTG9jYXRpb24oLTEpCisgICAgLCBtX2VkZ2VMb2NhdGlvbigtMSkKK3sKK30K
Kwordm9pZCBGcmFnbWVudFRleENsYW1wT3BhcXVlQUFCaW5kaW5nOjppbml0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAgIG1fc2FtcGxlckxvY2F0
aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsK
KyAgICBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgImZyYWdtZW50VGV4VHJhbnNmb3JtIik7CisgICAgbV9lZGdlTG9j
YXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImVkZ2UiKTsKKwor
ICAgIEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2ZyYWdtZW50VGV4VHJhbnNm
b3JtTG9jYXRpb24gIT0gLTEgJiYgbV9lZGdlTG9jYXRpb24gIT0gLTEpOworfQorCiBTdHJpbmcg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBBbHBoYUFBOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dAogewogICAgIHJldHVybiBTSEFERVIoCkBAIC00MDAsNiArNDU2LDMzIEBAIFN0cmluZyBGcmFn
bWVudFNoYWRlclJHQkFUZXhDbGFtcEFscGhhQUE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAg
ICAgKTsKIH0KIAorU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wT3BhcXVlQUE6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwor
ICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVuaWZvcm0gdmVj
NCBmcmFnbWVudFRleFRyYW5zZm9ybTsKKyAgICAgICAgdW5pZm9ybSB2ZWMzIGVkZ2VbOF07Cisg
ICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQg
PSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiBmcmFnbWVudFRleFRyYW5zZm9ybS56dyAr
IGZyYWdtZW50VGV4VHJhbnNmb3JtLnh5OworICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRl
eHR1cmUyRChzX3RleHR1cmUsIHRleENvb3JkKTsKKyAgICAgICAgICAgIHZlYzMgcG9zID0gdmVj
MyhnbF9GcmFnQ29vcmQueHksIDEpOworICAgICAgICAgICAgZmxvYXQgYTAgPSBjbGFtcChkb3Qo
ZWRnZVswXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTEgPSBjbGFtcChk
b3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTIgPSBjbGFt
cChkb3QoZWRnZVsyXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTMgPSBj
bGFtcChkb3QoZWRnZVszXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTQg
PSBjbGFtcChkb3QoZWRnZVs0XSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQg
YTUgPSBjbGFtcChkb3QoZWRnZVs1XSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxv
YXQgYTYgPSBjbGFtcChkb3QoZWRnZVs2XSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAg
ZmxvYXQgYTcgPSBjbGFtcChkb3QoZWRnZVs3XSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAg
ICAgdGV4Q29sb3IgKj0gbWluKG1pbihhMCwgYTIpICogbWluKGExLCBhMyksIG1pbihhNCwgYTYp
ICogbWluKGE1LCBhNykpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhDb2xv
ci5yZ2IsIDEuMCk7CisgICAgICAgIH0KKyAgICApOworfQorCiBTdHJpbmcgRnJhZ21lbnRTaGFk
ZXJSR0JBVGV4Q2xhbXBTd2l6emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gU0hBREVSKApAQCAtNDI3LDYgKzUxMCwzMyBAQCBTdHJpbmcgRnJhZ21lbnRT
aGFkZXJSR0JBVGV4Q2xhbXBTd2l6emxlQWxwaGFBQTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QK
ICAgICApOwogfQogCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBTd2l6emxlT3Bh
cXVlQUE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAg
ICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3Rl
eENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHVu
aWZvcm0gdmVjNCBmcmFnbWVudFRleFRyYW5zZm9ybTsKKyAgICAgICAgdW5pZm9ybSB2ZWMzIGVk
Z2VbOF07CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzIg
dGV4Q29vcmQgPSBjbGFtcCh2X3RleENvb3JkLCAwLjAsIDEuMCkgKiBmcmFnbWVudFRleFRyYW5z
Zm9ybS56dyArIGZyYWdtZW50VGV4VHJhbnNmb3JtLnh5OworICAgICAgICAgICAgdmVjNCB0ZXhD
b2xvciA9IHRleHR1cmUyRChzX3RleHR1cmUsIHRleENvb3JkKTsKKyAgICAgICAgICAgIHZlYzMg
cG9zID0gdmVjMyhnbF9GcmFnQ29vcmQueHksIDEpOworICAgICAgICAgICAgZmxvYXQgYTAgPSBj
bGFtcChkb3QoZWRnZVswXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQgYTEg
PSBjbGFtcChkb3QoZWRnZVsxXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxvYXQg
YTIgPSBjbGFtcChkb3QoZWRnZVsyXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAgZmxv
YXQgYTMgPSBjbGFtcChkb3QoZWRnZVszXSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAgICAg
ZmxvYXQgYTQgPSBjbGFtcChkb3QoZWRnZVs0XSwgcG9zKSwgMC4wLCAxLjApOworICAgICAgICAg
ICAgZmxvYXQgYTUgPSBjbGFtcChkb3QoZWRnZVs1XSwgcG9zKSwgMC4wLCAxLjApOworICAgICAg
ICAgICAgZmxvYXQgYTYgPSBjbGFtcChkb3QoZWRnZVs2XSwgcG9zKSwgMC4wLCAxLjApOworICAg
ICAgICAgICAgZmxvYXQgYTcgPSBjbGFtcChkb3QoZWRnZVs3XSwgcG9zKSwgMC4wLCAxLjApOwor
ICAgICAgICAgICAgdmVjMyBmcmFnQ29sb3IgPSB2ZWMzKHRleENvbG9yLnosIHRleENvbG9yLnks
IHRleENvbG9yLngpICogbWluKG1pbihhMCwgYTIpICogbWluKGExLCBhMyksIG1pbihhNCwgYTYp
ICogbWluKGE1LCBhNykpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmcmFnQ29s
b3IsIDEuMCk7CisgICAgICAgIH0KKyAgICApOworfQorCiBGcmFnbWVudFNoYWRlclJHQkFUZXhB
bHBoYU1hc2s6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhTWFzaygpCiAgICAgOiBtX3NhbXBs
ZXJMb2NhdGlvbigtMSkKICAgICAsIG1fbWFza1NhbXBsZXJMb2NhdGlvbigtMSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJD
aHJvbWl1bS5oCmluZGV4IDlmNTZkYzcxMWI3ZDUyODczNDMwODUxZGRlZjlmZGJlMjUzN2ZjZjIu
LmUwNWQ2NDRjNzAxNDI4NzVjNTIxZTEzOTJiNGZkZjI0Y2VhMjkzMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hy
b21pdW0uaApAQCAtMTU4LDYgKzE1OCwxOCBAQCBwcml2YXRlOgogICAgIGludCBtX2FscGhhTG9j
YXRpb247CiB9OwogCitjbGFzcyBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcgeworcHVibGljOgor
ICAgIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZygpOworCisgICAgdm9pZCBpbml0KEdyYXBoaWNz
Q29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgaW50IGFscGhhTG9jYXRpb24oKSBj
b25zdCB7IHJldHVybiAtMTsgfQorICAgIGludCBzYW1wbGVyTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX3NhbXBsZXJM
b2NhdGlvbjsKK307CisKIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYSA6IHB1
YmxpYyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNo
YWRlclN0cmluZygpIGNvbnN0OwpAQCAtMTY4LDEyICsxODAsMjMgQEAgcHVibGljOgogICAgIFN0
cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKLS8vIFN3aXp6bGVzIHRoZSByZWQg
YW5kIGJsdWUgY29tcG9uZW50IG9mIHNhbXBsZWQgdGV4ZWwuCitjbGFzcyBGcmFnbWVudFNoYWRl
clJHQkFUZXhPcGFxdWUgOiBwdWJsaWMgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nIHsKK3B1Ymxp
YzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCisvLyBTd2l6emxl
cyB0aGUgcmVkIGFuZCBibHVlIGNvbXBvbmVudCBvZiBzYW1wbGVkIHRleGVsIHdpdGggYWxwaGEu
CiBjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGEgOiBwdWJsaWMgRnJhZ21l
bnRUZXhBbHBoYUJpbmRpbmcgewogcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmco
KSBjb25zdDsKIH07CiAKKy8vIFN3aXp6bGVzIHRoZSByZWQgYW5kIGJsdWUgY29tcG9uZW50IG9m
IHNhbXBsZWQgdGV4ZWwgd2l0aG91dCBhbHBoYS4KK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRl
eFN3aXp6bGVPcGFxdWUgOiBwdWJsaWMgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nIHsKK3B1Ymxp
YzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCiBjbGFzcyBGcmFn
bWVudFNoYWRlclJHQkFUZXhBbHBoYUFBIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFNoYWRlclJH
QkFUZXhBbHBoYUFBKCk7CkBAIC0yMDgsMTcgKzIzMSw0NCBAQCBwcml2YXRlOgogICAgIGludCBt
X2VkZ2VMb2NhdGlvbjsKIH07CiAKK2NsYXNzIEZyYWdtZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRp
bmcgeworcHVibGljOgorICAgIEZyYWdtZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRpbmcoKTsKKwor
ICAgIHZvaWQgaW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAg
IGludCBhbHBoYUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KKyAgICBpbnQgc2FtcGxl
ckxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KKyAgICBpbnQg
ZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbjsgfQorICAgIGludCBlZGdlTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2VkZ2VMb2NhdGlvbjsgfQorCitwcml2YXRlOgorICAgIGludCBtX3NhbXBsZXJMb2Nh
dGlvbjsKKyAgICBpbnQgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uOworICAgIGludCBt
X2VkZ2VMb2NhdGlvbjsKK307CisKIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wQWxw
aGFBQSA6IHB1YmxpYyBGcmFnbWVudFRleENsYW1wQWxwaGFBQUJpbmRpbmcgewogcHVibGljOgog
ICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKLS8vIFN3aXp6bGVzIHRo
ZSByZWQgYW5kIGJsdWUgY29tcG9uZW50IG9mIHNhbXBsZWQgdGV4ZWwuCitjbGFzcyBGcmFnbWVu
dFNoYWRlclJHQkFUZXhDbGFtcE9wYXF1ZUFBIDogcHVibGljIEZyYWdtZW50VGV4Q2xhbXBPcGFx
dWVBQUJpbmRpbmcgeworcHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dDsKK307CisKKy8vIFN3aXp6bGVzIHRoZSByZWQgYW5kIGJsdWUgY29tcG9uZW50IG9mIHNhbXBs
ZWQgdGV4ZWwgd2l0aCBhbHBoYS4KIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wU3dp
enpsZUFscGhhQUEgOiBwdWJsaWMgRnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5nIHsKIHB1
YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCisvLyBTd2l6
emxlcyB0aGUgcmVkIGFuZCBibHVlIGNvbXBvbmVudCBvZiBzYW1wbGVkIHRleGVsIHdpdGhvdXQg
YWxwaGEuCitjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhDbGFtcFN3aXp6bGVPcGFxdWVBQSA6
IHB1YmxpYyBGcmFnbWVudFRleENsYW1wT3BhcXVlQUFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBT
dHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7Cit9OworCiBjbGFzcyBGcmFnbWVudFNoYWRl
clJHQkFUZXhBbHBoYU1hc2sgewogcHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFs
cGhhTWFzaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA0ZTZlZjk3
YmRiNzJhYWNlMzFkNjRiMzg5YjQ2NjE3ZmQzMDcyOTYxLi42NWU5OGJlOGYwNDI4NTYwZjE0MDA3
ZDQ0YjMzNmNmY2Y3YzY0NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApA
QCAtMTQwLDI3ICsxNDAsNDYgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVu
ZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIGlmIChpc05vbkNvbXBvc2l0
ZWRDb250ZW50KCkpIHsKLSAgICAgICAgY29udGV4dC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRy
dWUsIGZhbHNlKTsKICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRpc2FibGUoR3JhcGhp
Y3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAgICAgfQogCiAgICAgc3dpdGNoIChtX3NhbXBsZWRUZXhl
bEZvcm1hdCkgewogICAgIGNhc2UgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0UkdCQToKICAgICAgICAgaWYgKHVzZUFBKSB7Ci0gICAgICAgICAgICBjb25zdCBQcm9ncmFt
QUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dyYW1BQSgpOwotICAgICAgICAg
ICAgZHJhd1RpbGVzKGxheWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRl
dmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFt
LCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24o
KSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CisgICAgICAgICAg
ICBpZiAoaXNOb25Db21wb3NpdGVkQ29udGVudCgpKSB7CisgICAgICAgICAgICAgICAgY29uc3Qg
UHJvZ3JhbU9wYXF1ZUFBKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtT3Bh
cXVlQUEoKTsKKyAgICAgICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5kZXJlciwgbGF5ZXJS
ZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQs
IGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZnJhZ21l
bnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VM
b2NhdGlvbigpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc3Qg
UHJvZ3JhbUFBKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtQUEoKTsKKyAg
ICAgICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5kZXJlciwgbGF5ZXJSZWN0LCBsYXllclRy
YW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIGRyYXdPcGFjaXR5
KCksIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZnJhZ21lbnRUZXhUcmFuc2Zv
cm1Mb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFByb2dy
YW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dyYW0oKTsKLSAgICAgICAgICAg
IGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZp
Y2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwg
LTEsIC0xKTsKKyAgICAgICAgICAgIGlmIChpc05vbkNvbXBvc2l0ZWRDb250ZW50KCkpIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtT3BhcXVlKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJl
ci0+dGlsZXJQcm9ncmFtT3BhcXVlKCk7CisgICAgICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVy
UmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNl
UmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCAtMSwgLTEpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtKiBwcm9ncmFtID0g
bGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtKCk7CisgICAgICAgICAgICAgICAgZHJhd1RpbGVz
KGxheWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwg
ZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCAtMSwgLTEpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQToKICAgICAgICAgaWYgKHVzZUFB
KSB7Ci0gICAgICAgICAgICBjb25zdCBQcm9ncmFtU3dpenpsZUFBKiBwcm9ncmFtID0gbGF5ZXJS
ZW5kZXJlci0+dGlsZXJQcm9ncmFtU3dpenpsZUFBKCk7Ci0gICAgICAgICAgICBkcmF3VGlsZXMo
bGF5ZXJSZW5kZXJlciwgbGF5ZXJSZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBk
ZXZpY2VSZWN0LCBsYXllclF1YWQsIGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIHByb2dyYW0tPmZy
YWdtZW50U2hhZGVyKCkuZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBwcm9ncmFtLT5m
cmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGlmIChpc05vbkNv
bXBvc2l0ZWRDb250ZW50KCkpIHsKKyAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVN3aXp6bGVP
cGFxdWVBQSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3JhbVN3aXp6bGVPcGFx
dWVBQSgpOworICAgICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5kZXJlciwgbGF5ZXJSZWN0
LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIGRy
YXdPcGFjaXR5KCksIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZnJhZ21lbnRU
ZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2Nh
dGlvbigpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc3QgUHJv
Z3JhbVN3aXp6bGVBQSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3JhbVN3aXp6
bGVBQSgpOworICAgICAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJl
Y3QsIGxheWVyVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwg
ZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmFnbWVu
dFRleFRyYW5zZm9ybUxvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxv
Y2F0aW9uKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Y29uc3QgUHJvZ3JhbVN3aXp6bGUqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dy
YW1Td2l6emxlKCk7Ci0gICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5kZXJlciwgbGF5ZXJS
ZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQs
IGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIC0xLCAtMSk7CisgICAgICAgICAgICBpZiAoaXNOb25D
b21wb3NpdGVkQ29udGVudCgpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVN3aXp6
bGVPcGFxdWUqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dyYW1Td2l6emxlT3Bh
cXVlKCk7CisgICAgICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVyUmVuZGVyZXIsIGxheWVyUmVj
dCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBk
cmF3T3BhY2l0eSgpLCBwcm9ncmFtLCAtMSwgLTEpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtU3dpenpsZSogcHJvZ3JhbSA9IGxheWVyUmVuZGVy
ZXItPnRpbGVyUHJvZ3JhbVN3aXp6bGUoKTsKKyAgICAgICAgICAgICAgICBkcmF3VGlsZXMobGF5
ZXJSZW5kZXJlciwgbGF5ZXJSZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZp
Y2VSZWN0LCBsYXllclF1YWQsIGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIC0xLCAtMSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE2
OCw3ICsxODcsNiBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmRyYXcoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIH0KIAogICAgIGlmIChpc05vbkNvbXBvc2l0ZWRD
b250ZW50KCkpIHsKLSAgICAgICAgY29udGV4dC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUs
IHRydWUpOwogICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29u
dGV4dDNEOjpCTEVORCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApp
bmRleCBkZDFjMjkwODdlMjliNDQ2MzNmNzQ5ZGQ0YTRmZTQ1MDJmMTdhZmZiLi5hYjJhMDZlZTZj
NWJhNzQxNTU0NGM0OTk1MWZkODg2OWE1YTM1ZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5oCkBAIC01OSwxMCArNTksMTggQEAgcHVibGljOgogICAgIC8vIFVzZWQgd2hlbiB0ZXh0
dXJlIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBuYXRpdmUgY29sb3IgZm9ybWF0LgogICAgIHR5cGVk
ZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
U3dpenpsZUFscGhhPiBQcm9ncmFtU3dpenpsZTsKIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0
IGlnbm9yaW5nIGFscGhhIGFuZCB3cml0aW5nIG91dCAxLjAgZm9yIHRoZSBhbHBoYSBjaGFubmVs
LgorICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRT
aGFkZXJSR0JBVGV4T3BhcXVlPiBQcm9ncmFtT3BhcXVlOworICAgIHR5cGVkZWYgUHJvZ3JhbUJp
bmRpbmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZU9wYXF1
ZT4gUHJvZ3JhbVN3aXp6bGVPcGFxdWU7CisKICAgICAvLyBTaGFkZXIgcHJvZ3JhbSB0aGF0IHBy
b2R1Y2VzIGFudGktYWxpYXNlZCBsYXllciBlZGdlcy4KICAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wQWxwaGFBQT4g
UHJvZ3JhbUFBOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyVGlsZSwg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBTd2l6emxlQWxwaGFBQT4gUHJvZ3JhbVN3aXp6bGVB
QTsKIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGlnbm9yaW5nIGFscGhhIGFuZCB3cml0aW5n
IG91dCAxLjAgZm9yIHRoZSBhbHBoYSBjaGFubmVsLgorICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRp
bmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBPcGFxdWVBQT4g
UHJvZ3JhbU9wYXF1ZUFBOworICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVy
VGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBTd2l6emxlT3BhcXVlQUE+IFByb2dyYW1T
d2l6emxlT3BhcXVlQUE7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaWxlZExheWVySW1w
bChpbnQgaWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115300</attachid>
            <date>2011-11-15 19:33:21 -0800</date>
            <delta_ts>2011-11-16 14:43:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72452-20111115193320.patch</filename>
            <type>text/plain</type>
            <size>26132</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFmMGEyZjRmNDQ5ZWMy
YmY0NjdiNDEwMmVjNjIzOTg3MWQ4ZjZmZC4uMDJlODJkYTBjYjVlMWVmOGJlNjE4NzUyN2U5MDQz
MzU4NzNjMjZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDExLTExLTE1ICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QXZvaWQgY2xlYXIgYW5kIGNvbG9yIG1hc2sgb3BlcmF0aW9ucyBmb3Igcm9vdCBsYXllcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNDUyCisKKyAg
ICAgICAgSW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBjb21iaW5hdGlvbiBvZiBjbGVhcmluZyB0
aGUgc3VyZmFjZSBhbmQgaW5pdGlhbGl6aW5nCisgICAgICAgIHRoZSBhbHBoYSBjaGFubmVsIHRv
IDEuMCBmb2xsb3dlZCBieSBkaXNhYmxpbmcgYWxwaGEgaW4gdGhlIGNvbG9yIG1hc2sgd2hlbgor
ICAgICAgICByZW5kZXJpbmcgdGhlIHJvb3QgbGF5ZXIgdGlsZXMsIGFkZCBzaGFkZXJzIHRvIHN1
cHBvcnQgd3JpdGluZyBvdXQgb3BhcXVlIGxheWVycworICAgICAgICAoYWxwaGEgY2hhbm5lbCB2
YWx1ZXMgd3JpdHRlbiBhcyAxLjApLgorICAgIAorICAgICAgICBBbHNvIHJlc3RyaWN0IHRoZSBz
dXJmYWNlIGNsZWFyIHRvIGRlYnVnIGJ1aWxkcyAoc2luY2UgaXQgYWxzbyBjbGVhcnMgdGhlIGNv
bG9yCisgICAgICAgIHRvIGJsdWUgZm9yIGRlYnVnZ2luZykuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJz
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0
aWFsaXplU2hhcmVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OnRpbGVyUHJvZ3JhbU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbU9wYXF1ZUFBKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGVPcGFx
dWVBQSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBT
aGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleE9wYXF1
ZUJpbmRpbmc6OkZyYWdtZW50VGV4T3BhcXVlQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRTaGFkZXJSR0JBVGV4T3BhcXVlOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZU9wYXF1ZTo6Z2V0U2hhZGVyU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRpbmc6OkZyYWdt
ZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRU
ZXhDbGFtcE9wYXF1ZUFBQmluZGluZzo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVu
dFNoYWRlclJHQkFUZXhDbGFtcE9wYXF1ZUFBOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBTd2l6emxlT3BhcXVlQUE6OmdldFNo
YWRlclN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6
YWxwaGFMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleE9wYXF1ZUJpbmRp
bmc6OnNhbXBsZXJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleENsYW1w
T3BhcXVlQUFCaW5kaW5nOjphbHBoYUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRpbmc6OnNhbXBsZXJMb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFRleENsYW1wT3BhcXVlQUFCaW5kaW5nOjpmcmFnbWVudFRleFRyYW5z
Zm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4Q2xhbXBPcGFxdWVB
QUJpbmRpbmc6OmVkZ2VMb2NhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVk
TGF5ZXJJbXBsOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIwMTEtMTEtMTUgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgaXMgbm93IHRo
ZSBvbmx5IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAppbmRleCAxMzRiYjA1MmMyNzhmMGQzOGE0ZjE5NmFmYWJlMGU5ZDk0OTkwOGU3
Li4zZjNiNGY0ZmEzODkwNmJhY2JhYzZjMjE1ZTgzOGIyMDc1NjU3ZDkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM4NywxMCArMzg3LDEyIEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzSW50ZXJuYWwoKQogCiAgICAgdXNlUmVuZGVy
U3VyZmFjZShtX2RlZmF1bHRSZW5kZXJTdXJmYWNlKTsKIAorI2lmICFkZWZpbmVkICggTkRFQlVH
ICkKICAgICAvLyBDbGVhciB0byBibHVlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgdW5yZW5k
ZXJlZCByZWdpb25zLgogICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAxLCAxKTsKICAg
ICBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICBtX2Nv
bnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsKKyNlbmRp
ZgogCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3ND
b250ZXh0M0Q6OkJMRU5EKSk7CiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5i
bGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9N
SU5VU19TUkNfQUxQSEEpKTsKQEAgLTY1Nyw2ICs2NTksNyBAQCBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgIG1fc2hhcmVkR2VvbWV0cnkg
PSBhZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5kaW5nKG1fY29udGV4dC5nZXQoKSkpOwogICAgIG1f
cmVuZGVyU3VyZmFjZVByb2dyYW0gPSBhZG9wdFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlOjpQcm9n
cmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAgIG1fdGlsZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3
IENDVGlsZWRMYXllckltcGw6OlByb2dyYW0obV9jb250ZXh0LmdldCgpKSk7CisgICAgbV90aWxl
clByb2dyYW1PcGFxdWUgPSBhZG9wdFB0cihuZXcgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbU9w
YXF1ZShtX2NvbnRleHQuZ2V0KCkpKTsKIAogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29u
dGV4dC0+Zmx1c2goKSk7CiAKQEAgLTc0MSw2ICs3NDQsMTYgQEAgY29uc3QgQ0NUaWxlZExheWVy
SW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW0oKQogICAg
IHJldHVybiBtX3RpbGVyUHJvZ3JhbS5nZXQoKTsKIH0KIAorY29uc3QgQ0NUaWxlZExheWVySW1w
bDo6UHJvZ3JhbU9wYXF1ZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1PcGFx
dWUoKQoreworICAgIEFTU0VSVChtX3RpbGVyUHJvZ3JhbU9wYXF1ZSk7CisgICAgaWYgKCFtX3Rp
bGVyUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgi
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1PcGFxdWU6OmluaXRpYWxpemUiLCB0
aGlzLCAwKTsKKyAgICAgICAgbV90aWxlclByb2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9jb250
ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtT3BhcXVlLmdldCgp
OworfQorCiBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGlsZXJQcm9ncmFtQUEoKQogewogICAgIGlmICghbV90aWxlclByb2dyYW1BQSkK
QEAgLTc1Miw2ICs3NjUsMTcgQEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbUFBKiBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBKCkKICAgICByZXR1cm4gbV90aWxl
clByb2dyYW1BQS5nZXQoKTsKIH0KIAorY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbU9w
YXF1ZUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbU9wYXF1ZUFBKCkKK3sK
KyAgICBpZiAoIW1fdGlsZXJQcm9ncmFtT3BhcXVlQUEpCisgICAgICAgIG1fdGlsZXJQcm9ncmFt
T3BhcXVlQUEgPSBhZG9wdFB0cihuZXcgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbU9wYXF1ZUFB
KG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV90aWxlclByb2dyYW1PcGFxdWVBQS0+aW5p
dGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0aWxlclByb2dyYW1PcGFxdWVBQTo6aW5pdGlhbGl6ZSIsIHRoaXMsIDApOworICAgICAgICBt
X3RpbGVyUHJvZ3JhbU9wYXF1ZUFBLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAg
fQorICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbU9wYXF1ZUFBLmdldCgpOworfQorCiBjb25zdCBD
Q1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlclByb2dyYW1Td2l6emxlKCkKIHsKICAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZSkK
QEAgLTc2Myw2ICs3ODcsMTcgQEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6
bGUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenoKICAgICByZXR1cm4g
bV90aWxlclByb2dyYW1Td2l6emxlLmdldCgpOwogfQogCitjb25zdCBDQ1RpbGVkTGF5ZXJJbXBs
OjpQcm9ncmFtU3dpenpsZU9wYXF1ZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dy
YW1Td2l6emxlT3BhcXVlKCkKK3sKKyAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1
ZSkKKyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlID0gYWRvcHRQdHIobmV3IEND
VGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlT3BhcXVlKG1fY29udGV4dC5nZXQoKSkpOwor
ICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlLT5pbml0aWFsaXplZCgpKSB7Cisg
ICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3
aXp6bGVPcGFxdWU6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV90aWxlclByb2dy
YW1Td2l6emxlT3BhcXVlLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgfQorICAg
IHJldHVybiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWUuZ2V0KCk7Cit9CisKIGNvbnN0IEND
VGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGlsZXJQcm9ncmFtU3dpenpsZUFBKCkKIHsKICAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenps
ZUFBKQpAQCAtNzc0LDYgKzgwOSwxNyBAQCBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFt
U3dpenpsZUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aQogICAgIHJl
dHVybiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS5nZXQoKTsKIH0KIAorY29uc3QgQ0NUaWxlZExh
eWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVPcGFxdWVBQSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0
aWxlclByb2dyYW1Td2l6emxlT3BhcXVlQUEoKQoreworICAgIGlmICghbV90aWxlclByb2dyYW1T
d2l6emxlT3BhcXVlQUEpCisgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZUFBID0g
YWRvcHRQdHIobmV3IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlT3BhcXVlQUEobV9j
b250ZXh0LmdldCgpKSk7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWVBQS0+
aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0aWxlclByb2dyYW1Td2l6emxlT3BhcXVlQUE6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsK
KyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlQUEtPmluaXRpYWxpemUobV9jb250
ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1
ZUFBLmdldCgpOworfQorCiBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjYW52YXNMYXllclByb2dyYW0oKQogewogICAgIGlmICghbV9jYW52
YXNMYXllclByb2dyYW0pCkBAIC04NDIsMTIgKzg4OCwyMCBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgICAgICBtX2hlYWRzVXBEaXNwbGF5
UHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX3RpbGVyUHJvZ3Jh
bSkKICAgICAgICAgbV90aWxlclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAg
ICBpZiAobV90aWxlclByb2dyYW1PcGFxdWUpCisgICAgICAgIG1fdGlsZXJQcm9ncmFtT3BhcXVl
LT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdGlsZXJQcm9ncmFtQUEpCiAg
ICAgICAgIG1fdGlsZXJQcm9ncmFtQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBp
ZiAobV90aWxlclByb2dyYW1PcGFxdWVBQSkKKyAgICAgICAgbV90aWxlclByb2dyYW1PcGFxdWVB
QS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX3RpbGVyUHJvZ3JhbVN3aXp6
bGUpCiAgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0
KCkpOworICAgIGlmIChtX3RpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWUpCisgICAgICAgIG1fdGls
ZXJQcm9ncmFtU3dpenpsZU9wYXF1ZS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlm
IChtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQSkKICAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxl
QUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAobV90aWxlclByb2dyYW1Td2l6
emxlT3BhcXVlQUEpCisgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZUFBLT5jbGVh
bnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fY2FudmFzTGF5ZXJQcm9ncmFtKQogICAg
ICAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogICAg
IGlmIChtX3BsdWdpbkxheWVyUHJvZ3JhbSkKQEAgLTg3MCw5ICs5MjQsMTMgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBtX2JvcmRlclBy
b2dyYW0uY2xlYXIoKTsKICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5jbGVhcigpOwogICAg
IG1fdGlsZXJQcm9ncmFtLmNsZWFyKCk7CisgICAgbV90aWxlclByb2dyYW1PcGFxdWUuY2xlYXIo
KTsKICAgICBtX3RpbGVyUHJvZ3JhbUFBLmNsZWFyKCk7CisgICAgbV90aWxlclByb2dyYW1PcGFx
dWVBQS5jbGVhcigpOwogICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZS5jbGVhcigpOworICAgIG1f
dGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZS5jbGVhcigpOwogICAgIG1fdGlsZXJQcm9ncmFtU3dp
enpsZUFBLmNsZWFyKCk7CisgICAgbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlQUEuY2xlYXIo
KTsKICAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS5jbGVhcigpOwogICAgIG1fcGx1Z2luTGF5ZXJQ
cm9ncmFtLmNsZWFyKCk7CiAgICAgbV9wbHVnaW5MYXllclByb2dyYW1GbGlwLmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGY5YTgzMWM4MWYyY2M2Y2M4NGJk
NzViYjgyZjQ4MTI0MjM0OWE5ODQuLjZlZGUzODM0ZTBkMjc5NjY5ZGM4NzBjNTJiMjAxMzU0MjE1
NmY1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjAsOSArMTIw
LDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtKiBy
ZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0oKTsKICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6Ok1h
c2tQcm9ncmFtQUEqIHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCk7CiAgICAgY29uc3QgQ0NU
aWxlZExheWVySW1wbDo6UHJvZ3JhbSogdGlsZXJQcm9ncmFtKCk7CisgICAgY29uc3QgQ0NUaWxl
ZExheWVySW1wbDo6UHJvZ3JhbU9wYXF1ZSogdGlsZXJQcm9ncmFtT3BhcXVlKCk7CiAgICAgY29u
c3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbUFBKiB0aWxlclByb2dyYW1BQSgpOworICAgIGNv
bnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1PcGFxdWVBQSogdGlsZXJQcm9ncmFtT3BhcXVl
QUEoKTsKICAgICBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZSogdGlsZXJQ
cm9ncmFtU3dpenpsZSgpOworICAgIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6
emxlT3BhcXVlKiB0aWxlclByb2dyYW1Td2l6emxlT3BhcXVlKCk7CiAgICAgY29uc3QgQ0NUaWxl
ZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVBQSogdGlsZXJQcm9ncmFtU3dpenpsZUFBKCk7Cisg
ICAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVPcGFxdWVBQSogdGlsZXJQ
cm9ncmFtU3dpenpsZU9wYXF1ZUFBKCk7CiAgICAgY29uc3QgQ0NDYW52YXNMYXllckltcGw6OlBy
b2dyYW0qIGNhbnZhc0xheWVyUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDUGx1Z2luTGF5ZXJJbXBs
OjpQcm9ncmFtKiBwbHVnaW5MYXllclByb2dyYW0oKTsKICAgICBjb25zdCBDQ1BsdWdpbkxheWVy
SW1wbDo6UHJvZ3JhbUZsaXAqIHBsdWdpbkxheWVyUHJvZ3JhbUZsaXAoKTsKQEAgLTIwNSw5ICsy
MDksMTMgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8TGF5ZXJDaHJvbWl1bTo6Qm9yZGVyUHJvZ3Jh
bT4gbV9ib3JkZXJQcm9ncmFtOwogICAgIE93blB0cjxDQ0hlYWRzVXBEaXNwbGF5OjpQcm9ncmFt
PiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbDo6
UHJvZ3JhbT4gbV90aWxlclByb2dyYW07CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw6OlBy
b2dyYW1PcGFxdWU+IG1fdGlsZXJQcm9ncmFtT3BhcXVlOwogICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsOjpQcm9ncmFtU3dpenpsZT4gbV90aWxlclByb2dyYW1Td2l6emxlOworICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZU9wYXF1ZT4gbV90aWxlclByb2dyYW1T
d2l6emxlT3BhcXVlOwogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtQUE+IG1f
dGlsZXJQcm9ncmFtQUE7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw6OlByb2dyYW1PcGFx
dWVBQT4gbV90aWxlclByb2dyYW1PcGFxdWVBQTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1w
bDo6UHJvZ3JhbVN3aXp6bGVBQT4gbV90aWxlclByb2dyYW1Td2l6emxlQUE7CisgICAgT3duUHRy
PENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlT3BhcXVlQUE+IG1fdGlsZXJQcm9ncmFt
U3dpenpsZU9wYXF1ZUFBOwogICAgIE93blB0cjxDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbT4g
bV9jYW52YXNMYXllclByb2dyYW07CiAgICAgT3duUHRyPENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9n
cmFtPiBtX3BsdWdpbkxheWVyUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NQbHVnaW5MYXllckltcGw6
OlByb2dyYW1GbGlwPiBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1
bS5jcHAKaW5kZXggMjJmNjc3NzMzZDdhM2RhMjgzYjBkN2ZkNjE4YzgwZGUyZDRiMWJjMS4uY2Q0
YjYzNTk4MDExOGZiMDU1YWVhZTM5MjlhNzI3Mzg3MDc1NTc0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9t
aXVtLmNwcApAQCAtMjY5LDYgKzI2OSwxOCBAQCB2b2lkIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5n
Ojppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQogICAg
IEFTU0VSVChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSAmJiBtX2FscGhhTG9jYXRpb24gIT0gLTEp
OwogfQogCitGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6OkZyYWdtZW50VGV4T3BhcXVlQmluZGlu
ZygpCisgICAgOiBtX3NhbXBsZXJMb2NhdGlvbigtMSkKK3sKK30KKwordm9pZCBGcmFnbWVudFRl
eE9wYXF1ZUJpbmRpbmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVk
IHByb2dyYW0pCit7CisgICAgbV9zYW1wbGVyTG9jYXRpb24gPSBjb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgInNfdGV4dHVyZSIpOworCisgICAgQVNTRVJUKG1fc2FtcGxlckxv
Y2F0aW9uICE9IC0xKTsKK30KKwogU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBo
YTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gU0hBREVSKApAQCAtMjk5
LDYgKzMxMSwyMCBAQCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE6OmdldFNoYWRl
clN0cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRl
eE9wYXF1ZTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAor
ICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZf
dGV4Q29vcmQ7CisgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAg
dm9pZCBtYWluKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1
cmUyRChzX3RleHR1cmUsIHZfdGV4Q29vcmQpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCh0ZXhDb2xvci5yZ2IsIDEuMCk7CisgICAgICAgIH0KKyAgICApOworfQorCiBTdHJpbmcg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25z
dAogewogICAgIHJldHVybiBTSEFERVIoCkBAIC0zMTQsNiArMzQwLDIwIEBAIFN0cmluZyBGcmFn
bWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiAg
ICAgKTsKIH0KIAorU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVPcGFxdWU6Omdl
dFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNIQURFUigKKyAgICAgICAgcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZhcnlpbmcgdmVjMiB2X3RleENvb3JkOwor
ICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1cmU7CisgICAgICAgIHZvaWQgbWFpbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0
dXJlLCB2X3RleENvb3JkKTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4Q29s
b3IueiwgdGV4Q29sb3IueSwgdGV4Q29sb3IueCwgMS4wKTsKKyAgICAgICAgfQorICAgICk7Cit9
CisKIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUE6OkZyYWdtZW50U2hhZGVyUkdCQVRleEFs
cGhhQUEoKQogICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCiAgICAgLCBtX2FscGhhTG9jYXRp
b24oLTEpCkBAIC0zNzMsNiArNDEzLDIyIEBAIHZvaWQgRnJhZ21lbnRUZXhDbGFtcEFscGhhQUFC
aW5kaW5nOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBwCiAgICAg
QVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAtMSAm
JiBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24gIT0gLTEgJiYgbV9lZGdlTG9jYXRpb24g
IT0gLTEpOwogfQogCitGcmFnbWVudFRleENsYW1wT3BhcXVlQUFCaW5kaW5nOjpGcmFnbWVudFRl
eENsYW1wT3BhcXVlQUFCaW5kaW5nKCkKKyAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0xKQorICAg
ICwgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uKC0xKQorICAgICwgbV9lZGdlTG9jYXRp
b24oLTEpCit7Cit9CisKK3ZvaWQgRnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFBQmluZGluZzo6aW5p
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKK3sKKyAgICBt
X3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAi
c190ZXh0dXJlIik7CisgICAgbV9mcmFnbWVudFRleFRyYW5zZm9ybUxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJmcmFnbWVudFRleFRyYW5zZm9ybSIpOwor
ICAgIG1fZWRnZUxvY2F0aW9uID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJlZGdlIik7CisKKyAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9mcmFn
bWVudFRleFRyYW5zZm9ybUxvY2F0aW9uICE9IC0xICYmIG1fZWRnZUxvY2F0aW9uICE9IC0xKTsK
K30KKwogU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wQWxwaGFBQTo6Z2V0U2hhZGVy
U3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gU0hBREVSKApAQCAtNDAwLDYgKzQ1NiwzMyBA
QCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBBbHBoYUFBOjpnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdAogICAgICk7CiB9CiAKK1N0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhDbGFt
cE9wYXF1ZUFBOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIo
CisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIg
dl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAg
ICB1bmlmb3JtIHZlYzQgZnJhZ21lbnRUZXhUcmFuc2Zvcm07CisgICAgICAgIHVuaWZvcm0gdmVj
MyBlZGdlWzhdOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2
ZWMyIHRleENvb3JkID0gY2xhbXAodl90ZXhDb29yZCwgMC4wLCAxLjApICogZnJhZ21lbnRUZXhU
cmFuc2Zvcm0uencgKyBmcmFnbWVudFRleFRyYW5zZm9ybS54eTsKKyAgICAgICAgICAgIHZlYzQg
dGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB0ZXhDb29yZCk7CisgICAgICAgICAgICB2
ZWMzIHBvcyA9IHZlYzMoZ2xfRnJhZ0Nvb3JkLnh5LCAxKTsKKyAgICAgICAgICAgIGZsb2F0IGEw
ID0gY2xhbXAoZG90KGVkZ2VbMF0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0
IGExID0gY2xhbXAoZG90KGVkZ2VbMV0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGZs
b2F0IGEyID0gY2xhbXAoZG90KGVkZ2VbMl0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAgICAg
IGZsb2F0IGEzID0gY2xhbXAoZG90KGVkZ2VbM10sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAg
ICAgIGZsb2F0IGE0ID0gY2xhbXAoZG90KGVkZ2VbNF0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAg
ICAgICAgIGZsb2F0IGE1ID0gY2xhbXAoZG90KGVkZ2VbNV0sIHBvcyksIDAuMCwgMS4wKTsKKyAg
ICAgICAgICAgIGZsb2F0IGE2ID0gY2xhbXAoZG90KGVkZ2VbNl0sIHBvcyksIDAuMCwgMS4wKTsK
KyAgICAgICAgICAgIGZsb2F0IGE3ID0gY2xhbXAoZG90KGVkZ2VbN10sIHBvcyksIDAuMCwgMS4w
KTsKKyAgICAgICAgICAgIHRleENvbG9yICo9IG1pbihtaW4oYTAsIGEyKSAqIG1pbihhMSwgYTMp
LCBtaW4oYTQsIGE2KSAqIG1pbihhNSwgYTcpKTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQodGV4Q29sb3IucmdiLCAxLjApOworICAgICAgICB9CisgICAgKTsKK30KKwogU3RyaW5n
IEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wU3dpenpsZUFscGhhQUE6OmdldFNoYWRlclN0cmlu
ZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNIQURFUigKQEAgLTQyNyw2ICs1MTAsMzMgQEAgU3Ry
aW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wU3dpenpsZUFscGhhQUE6OmdldFNoYWRlclN0
cmluZygpIGNvbnN0CiAgICAgKTsKIH0KIAorU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleENs
YW1wU3dpenpsZU9wYXF1ZUFBOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBTSEFERVIoCisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5
aW5nIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJl
OworICAgICAgICB1bmlmb3JtIHZlYzQgZnJhZ21lbnRUZXhUcmFuc2Zvcm07CisgICAgICAgIHVu
aWZvcm0gdmVjMyBlZGdlWzhdOworICAgICAgICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAg
ICAgICAgICB2ZWMyIHRleENvb3JkID0gY2xhbXAodl90ZXhDb29yZCwgMC4wLCAxLjApICogZnJh
Z21lbnRUZXhUcmFuc2Zvcm0uencgKyBmcmFnbWVudFRleFRyYW5zZm9ybS54eTsKKyAgICAgICAg
ICAgIHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB0ZXhDb29yZCk7CisgICAg
ICAgICAgICB2ZWMzIHBvcyA9IHZlYzMoZ2xfRnJhZ0Nvb3JkLnh5LCAxKTsKKyAgICAgICAgICAg
IGZsb2F0IGEwID0gY2xhbXAoZG90KGVkZ2VbMF0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAgICAg
ICAgIGZsb2F0IGExID0gY2xhbXAoZG90KGVkZ2VbMV0sIHBvcyksIDAuMCwgMS4wKTsKKyAgICAg
ICAgICAgIGZsb2F0IGEyID0gY2xhbXAoZG90KGVkZ2VbMl0sIHBvcyksIDAuMCwgMS4wKTsKKyAg
ICAgICAgICAgIGZsb2F0IGEzID0gY2xhbXAoZG90KGVkZ2VbM10sIHBvcyksIDAuMCwgMS4wKTsK
KyAgICAgICAgICAgIGZsb2F0IGE0ID0gY2xhbXAoZG90KGVkZ2VbNF0sIHBvcyksIDAuMCwgMS4w
KTsKKyAgICAgICAgICAgIGZsb2F0IGE1ID0gY2xhbXAoZG90KGVkZ2VbNV0sIHBvcyksIDAuMCwg
MS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGE2ID0gY2xhbXAoZG90KGVkZ2VbNl0sIHBvcyksIDAu
MCwgMS4wKTsKKyAgICAgICAgICAgIGZsb2F0IGE3ID0gY2xhbXAoZG90KGVkZ2VbN10sIHBvcyks
IDAuMCwgMS4wKTsKKyAgICAgICAgICAgIHZlYzMgZnJhZ0NvbG9yID0gdmVjMyh0ZXhDb2xvci56
LCB0ZXhDb2xvci55LCB0ZXhDb2xvci54KSAqIG1pbihtaW4oYTAsIGEyKSAqIG1pbihhMSwgYTMp
LCBtaW4oYTQsIGE2KSAqIG1pbihhNSwgYTcpKTsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoZnJhZ0NvbG9yLCAxLjApOworICAgICAgICB9CisgICAgKTsKK30KKwogRnJhZ21lbnRT
aGFkZXJSR0JBVGV4QWxwaGFNYXNrOjpGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2soKQog
ICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCiAgICAgLCBtX21hc2tTYW1wbGVyTG9jYXRpb24o
LTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2hhZGVyQ2hyb21pdW0uaAppbmRleCA5ZjU2ZGM3MTFiN2Q1Mjg3MzQzMDg1MWRkZWY5
ZmRiZTI1MzdmY2YyLi5lMDVkNjQ0YzcwMTQyODc1YzUyMWUxMzkyYjRmZGYyNGNlYTI5MzBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFk
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NoYWRlckNocm9taXVtLmgKQEAgLTE1OCw2ICsxNTgsMTggQEAgcHJpdmF0ZToKICAgICBp
bnQgbV9hbHBoYUxvY2F0aW9uOwogfTsKIAorY2xhc3MgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5n
IHsKK3B1YmxpYzoKKyAgICBGcmFnbWVudFRleE9wYXF1ZUJpbmRpbmcoKTsKKworICAgIHZvaWQg
aW5pdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHByb2dyYW0pOworICAgIGludCBhbHBo
YUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KKyAgICBpbnQgc2FtcGxlckxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVyTG9jYXRpb247IH0KKworcHJpdmF0ZToKKyAgICBp
bnQgbV9zYW1wbGVyTG9jYXRpb247Cit9OworCiBjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhG
bGlwQWxwaGEgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewogcHVibGljOgogICAg
IFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKQEAgLTE2OCwxMiArMTgwLDIzIEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCi0vLyBTd2l6
emxlcyB0aGUgcmVkIGFuZCBibHVlIGNvbXBvbmVudCBvZiBzYW1wbGVkIHRleGVsLgorY2xhc3Mg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4T3BhcXVlIDogcHVibGljIEZyYWdtZW50VGV4T3BhcXVlQmlu
ZGluZyB7CitwdWJsaWM6CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsK
KworLy8gU3dpenpsZXMgdGhlIHJlZCBhbmQgYmx1ZSBjb21wb25lbnQgb2Ygc2FtcGxlZCB0ZXhl
bCB3aXRoIGFscGhhLgogY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhIDog
cHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5nIHsKIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0
U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCisvLyBTd2l6emxlcyB0aGUgcmVkIGFuZCBibHVl
IGNvbXBvbmVudCBvZiBzYW1wbGVkIHRleGVsIHdpdGhvdXQgYWxwaGEuCitjbGFzcyBGcmFnbWVu
dFNoYWRlclJHQkFUZXhTd2l6emxlT3BhcXVlIDogcHVibGljIEZyYWdtZW50VGV4T3BhcXVlQmlu
ZGluZyB7CitwdWJsaWM6CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsK
KwogY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSB7CiBwdWJsaWM6CiAgICAgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQSgpOwpAQCAtMjA4LDE3ICsyMzEsNDQgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9lZGdlTG9jYXRpb247CiB9OwogCitjbGFzcyBGcmFnbWVudFRleENsYW1w
T3BhcXVlQUFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBGcmFnbWVudFRleENsYW1wT3BhcXVlQUFC
aW5kaW5nKCk7CisKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBw
cm9ncmFtKTsKKyAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9Cisg
ICAgaW50IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9u
OyB9CisgICAgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2ZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb247IH0KKyAgICBpbnQgZWRnZUxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9lZGdlTG9jYXRpb247IH0KKworcHJpdmF0ZToKKyAgICBpbnQg
bV9zYW1wbGVyTG9jYXRpb247CisgICAgaW50IG1fZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlv
bjsKKyAgICBpbnQgbV9lZGdlTG9jYXRpb247Cit9OworCiBjbGFzcyBGcmFnbWVudFNoYWRlclJH
QkFUZXhDbGFtcEFscGhhQUEgOiBwdWJsaWMgRnJhZ21lbnRUZXhDbGFtcEFscGhhQUFCaW5kaW5n
IHsKIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CiB9OwogCi0v
LyBTd2l6emxlcyB0aGUgcmVkIGFuZCBibHVlIGNvbXBvbmVudCBvZiBzYW1wbGVkIHRleGVsLgor
Y2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBPcGFxdWVBQSA6IHB1YmxpYyBGcmFnbWVu
dFRleENsYW1wT3BhcXVlQUFCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVy
U3RyaW5nKCkgY29uc3Q7Cit9OworCisvLyBTd2l6emxlcyB0aGUgcmVkIGFuZCBibHVlIGNvbXBv
bmVudCBvZiBzYW1wbGVkIHRleGVsIHdpdGggYWxwaGEuCiBjbGFzcyBGcmFnbWVudFNoYWRlclJH
QkFUZXhDbGFtcFN3aXp6bGVBbHBoYUFBIDogcHVibGljIEZyYWdtZW50VGV4Q2xhbXBBbHBoYUFB
QmluZGluZyB7CiBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0Owog
fTsKIAorLy8gU3dpenpsZXMgdGhlIHJlZCBhbmQgYmx1ZSBjb21wb25lbnQgb2Ygc2FtcGxlZCB0
ZXhlbCB3aXRob3V0IGFscGhhLgorY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBTd2l6
emxlT3BhcXVlQUEgOiBwdWJsaWMgRnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFBQmluZGluZyB7Citw
dWJsaWM6CisgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OworfTsKKwogY2xhc3Mg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrIHsKIHB1YmxpYzoKICAgICBGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYU1hc2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAK
aW5kZXggNGU2ZWY5N2JkYjcyYWFjZTMxZDY0YjM4OWI0NjYxN2ZkMzA3Mjk2MS4uNjVlOThiZThm
MDQyODU2MGYxNDAwN2Q0NGIzMzZjZmNmN2M2NDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHAKQEAgLTE0MCwyNyArMTQwLDQ2IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6
ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAKICAgICBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKICAgICBpZiAo
aXNOb25Db21wb3NpdGVkQ29udGVudCgpKSB7Ci0gICAgICAgIGNvbnRleHQtPmNvbG9yTWFzayh0
cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5k
aXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwogICAgIH0KIAogICAgIHN3aXRjaCAo
bV9zYW1wbGVkVGV4ZWxGb3JtYXQpIHsKICAgICBjYXNlIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNh
bXBsZWRUZXhlbEZvcm1hdFJHQkE6CiAgICAgICAgIGlmICh1c2VBQSkgewotICAgICAgICAgICAg
Y29uc3QgUHJvZ3JhbUFBKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtQUEo
KTsKLSAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJlY3QsIGxheWVy
VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgZHJhd09wYWNp
dHkoKSwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5mcmFnbWVudFRleFRyYW5z
Zm9ybUxvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkp
OworICAgICAgICAgICAgaWYgKGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSkgeworICAgICAgICAg
ICAgICAgIGNvbnN0IFByb2dyYW1PcGFxdWVBQSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRp
bGVyUHJvZ3JhbU9wYXF1ZUFBKCk7CisgICAgICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVyUmVu
ZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVj
dCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLmZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRT
aGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGNvbnN0IFByb2dyYW1BQSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJv
Z3JhbUFBKCk7CisgICAgICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVyUmVuZGVyZXIsIGxheWVy
UmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFk
LCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmZyYWdt
ZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdl
TG9jYXRpb24oKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBjb25zdCBQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtKCk7
Ci0gICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5kZXJlciwgbGF5ZXJSZWN0LCBsYXllclRy
YW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIGRyYXdPcGFjaXR5
KCksIHByb2dyYW0sIC0xLCAtMSk7CisgICAgICAgICAgICBpZiAoaXNOb25Db21wb3NpdGVkQ29u
dGVudCgpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbU9wYXF1ZSogcHJvZ3JhbSA9
IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3JhbU9wYXF1ZSgpOworICAgICAgICAgICAgICAgIGRy
YXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZpY2VN
YXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEs
IC0xKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3Jh
bSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3JhbSgpOworICAgICAgICAgICAg
ICAgIGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBk
ZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3Jh
bSwgLTEsIC0xKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICBjYXNlIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE6CiAgICAg
ICAgIGlmICh1c2VBQSkgewotICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVN3aXp6bGVBQSogcHJv
Z3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpOwotICAgICAgICAg
ICAgZHJhd1RpbGVzKGxheWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRl
dmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFt
LCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24o
KSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CisgICAgICAgICAg
ICBpZiAoaXNOb25Db21wb3NpdGVkQ29udGVudCgpKSB7CisgICAgICAgICAgICAgIGNvbnN0IFBy
b2dyYW1Td2l6emxlT3BhcXVlQUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dy
YW1Td2l6emxlT3BhcXVlQUEoKTsKKyAgICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVyUmVuZGVy
ZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwg
bGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLmZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS5lZGdlTG9jYXRpb24oKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGNvbnN0IFByb2dyYW1Td2l6emxlQUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxl
clByb2dyYW1Td2l6emxlQUEoKTsKKyAgICAgICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5k
ZXJlciwgbGF5ZXJSZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0
LCBsYXllclF1YWQsIGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hh
ZGVyKCkuZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLmVkZ2VMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGNvbnN0IFByb2dyYW1Td2l6emxlKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJl
ci0+dGlsZXJQcm9ncmFtU3dpenpsZSgpOwotICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVyUmVu
ZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVj
dCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCAtMSwgLTEpOworICAgICAgICAg
ICAgaWYgKGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0
IFByb2dyYW1Td2l6emxlT3BhcXVlKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9n
cmFtU3dpenpsZU9wYXF1ZSgpOworICAgICAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRl
cmVyLCBsYXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3Qs
IGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEsIC0xKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVN3aXp6bGUqIHByb2dyYW0g
PSBsYXllclJlbmRlcmVyLT50aWxlclByb2dyYW1Td2l6emxlKCk7CisgICAgICAgICAgICAgICAg
ZHJhd1RpbGVzKGxheWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmlj
ZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCAt
MSwgLTEpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CkBAIC0xNjgsNyArMTg3LDYgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3KExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICB9CiAKICAgICBpZiAoaXNO
b25Db21wb3NpdGVkQ29udGVudCgpKSB7Ci0gICAgICAgIGNvbnRleHQtPmNvbG9yTWFzayh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmVuYWJs
ZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmgKaW5kZXggZGQxYzI5MDg3ZTI5YjQ0NjMzZjc0OWRkNGE0ZmU0NTAyZjE3YWZm
Yi4uYWIyYTA2ZWU2YzViYTc0MTU1NDRjNDk5NTFmZDg4NjlhNWEzNWQzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuaApAQCAtNTksMTAgKzU5LDE4IEBAIHB1YmxpYzoKICAgICAvLyBV
c2VkIHdoZW4gdGV4dHVyZSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggbmF0aXZlIGNvbG9yIGZvcm1h
dC4KICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50
U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYT4gUHJvZ3JhbVN3aXp6bGU7CiAKKyAgICAvLyBTYW1l
IGFzIGFib3ZlIGJ1dCBpZ25vcmluZyBhbHBoYSBhbmQgd3JpdGluZyBvdXQgMS4wIGZvciB0aGUg
YWxwaGEgY2hhbm5lbC4KKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRp
bGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleE9wYXF1ZT4gUHJvZ3JhbU9wYXF1ZTsKKyAgICB0eXBl
ZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRl
eFN3aXp6bGVPcGFxdWU+IFByb2dyYW1Td2l6emxlT3BhcXVlOworCiAgICAgLy8gU2hhZGVyIHBy
b2dyYW0gdGhhdCBwcm9kdWNlcyBhbnRpLWFsaWFzZWQgbGF5ZXIgZWRnZXMuCiAgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhD
bGFtcEFscGhhQUE+IFByb2dyYW1BQTsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRl
eFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wU3dpenpsZUFscGhhQUE+IFBy
b2dyYW1Td2l6emxlQUE7CiAKKyAgICAvLyBTYW1lIGFzIGFib3ZlIGJ1dCBpZ25vcmluZyBhbHBo
YSBhbmQgd3JpdGluZyBvdXQgMS4wIGZvciB0aGUgYWxwaGEgY2hhbm5lbC4KKyAgICB0eXBlZGVm
IFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleENs
YW1wT3BhcXVlQUE+IFByb2dyYW1PcGFxdWVBQTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wU3dpenpsZU9wYXF1
ZUFBPiBQcm9ncmFtU3dpenpsZU9wYXF1ZUFBOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEND
VGlsZWRMYXllckltcGwoaW50IGlkKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115453</attachid>
            <date>2011-11-16 14:43:15 -0800</date>
            <delta_ts>2011-11-16 15:51:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72452-20111116144313.patch</filename>
            <type>text/plain</type>
            <size>16942</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI4ZDljYTY1OWNhMDgx
ODI4MWE4YjNlYTBjYmRhYWU2ZjAzNmFjNS4uYjhlMzlkZDEyYzEzNjZmYmIzODI2MzJkODRjOTVl
ZTZiODEzZTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDExLTExLTE1ICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QXZvaWQgY2xlYXIgYW5kIGNvbG9yIG1hc2sgb3BlcmF0aW9ucyBmb3Igcm9vdCBsYXllcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNDUyCisKKyAg
ICAgICAgSW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBjb21iaW5hdGlvbiBvZiBjbGVhcmluZyB0
aGUgc3VyZmFjZSBhbmQgaW5pdGlhbGl6aW5nCisgICAgICAgIHRoZSBhbHBoYSBjaGFubmVsIHRv
IDEuMCBmb2xsb3dlZCBieSBkaXNhYmxpbmcgYWxwaGEgaW4gdGhlIGNvbG9yIG1hc2sgd2hlbgor
ICAgICAgICByZW5kZXJpbmcgdGhlIHJvb3QgbGF5ZXIgdGlsZXMsIGFkZCBzaGFkZXJzIHRvIHN1
cHBvcnQgd3JpdGluZyBvdXQgb3BhcXVlIGxheWVycworICAgICAgICAoYWxwaGEgY2hhbm5lbCB2
YWx1ZXMgd3JpdHRlbiBhcyAxLjApLgorCisgICAgICAgIEFsc28gcmVzdHJpY3QgdGhlIHN1cmZh
Y2UgY2xlYXIgdG8gZGVidWcgYnVpbGRzIChzaW5jZSBpdCBhbHNvIGNsZWFycyB0aGUgY29sb3IK
KyAgICAgICAgdG8gYmx1ZSBmb3IgZGVidWdnaW5nKS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZSBtYWRlIHRoYXQg
cmVxdWlyZXMgbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1PcGFxdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1PcGFxdWVB
QSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3Jh
bVN3aXp6bGVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp0aWxlclByb2dyYW1Td2l6emxlT3BhcXVlQUEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjpGcmFnbWVudFRleE9wYXF1ZUJpbmRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleE9wYXF1ZTo6Z2V0U2hhZGVy
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVP
cGFxdWU6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleENs
YW1wT3BhcXVlQUFCaW5kaW5nOjpGcmFnbWVudFRleENsYW1wT3BhcXVlQUFCaW5kaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRpbmc6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBPcGFxdWVBQTo6Z2V0
U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50U2hhZGVyUkdCQVRleENs
YW1wU3dpenpsZU9wYXF1ZUFBOjpnZXRTaGFkZXJTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFRleE9wYXF1ZUJpbmRpbmc6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjpzYW1wbGVyTG9jYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFBQmluZGluZzo6YWxwaGFMb2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudFRleENsYW1wT3BhcXVlQUFCaW5kaW5nOjpzYW1w
bGVyTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFB
QmluZGluZzo6ZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudFRleENsYW1wT3BhcXVlQUFCaW5kaW5nOjplZGdlTG9jYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6ZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorCiAyMDExLTEx
LTE2ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhl
ZERCOiBSZWR1Y2UgbmVzdGVkIGtleSBkZXB0aCB0aHJlc2hvbGQsIHJlLWVuYWJsZSBmbGFreSB0
ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBiYzlmMDAwYzIy
MjY2OGFmOGE3YTZkYTc1NGQyZDYwYzZiMTgwYmMzLi4yNWJmMmZmOTk0NTcwNDY4ZGY5ZjY5YTc0
ZTgyYTNiOWVlNDkzOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
QEAgLTM5NCwxMCArMzk0LDEyIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5
ZXJzSW50ZXJuYWwoKQogCiAgICAgdXNlUmVuZGVyU3VyZmFjZShtX2RlZmF1bHRSZW5kZXJTdXJm
YWNlKTsKIAorI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICAvLyBDbGVhciB0byBibHVlIHRv
IG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgdW5yZW5kZXJlZCByZWdpb25zLgogICAgIG1fY29udGV4
dC0+Y2xlYXJDb2xvcigwLCAwLCAxLCAxKTsKICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4
dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsKKyNlbmRpZgogCiAgICAgR0xDKG1fY29udGV4dC5nZXQo
KSwgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAgICAgR0xD
KG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6
Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpKTsKQEAgLTY2MSw2
ICs2NjMsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9i
amVjdHMoKQogICAgIG1fc2hhcmVkR2VvbWV0cnkgPSBhZG9wdFB0cihuZXcgR2VvbWV0cnlCaW5k
aW5nKG1fY29udGV4dC5nZXQoKSkpOwogICAgIG1fcmVuZGVyU3VyZmFjZVByb2dyYW0gPSBhZG9w
dFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlOjpQcm9ncmFtKG1fY29udGV4dC5nZXQoKSkpOwogICAg
IG1fdGlsZXJQcm9ncmFtID0gYWRvcHRQdHIobmV3IENDVGlsZWRMYXllckltcGw6OlByb2dyYW0o
bV9jb250ZXh0LmdldCgpKSk7CisgICAgbV90aWxlclByb2dyYW1PcGFxdWUgPSBhZG9wdFB0cihu
ZXcgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbU9wYXF1ZShtX2NvbnRleHQuZ2V0KCkpKTsKIAog
ICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+Zmx1c2goKSk7CiAKQEAgLTc0NSw2
ICs3NDgsMTYgQEAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp0aWxlclByb2dyYW0oKQogICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbS5nZXQo
KTsKIH0KIAorY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbU9wYXF1ZSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1PcGFxdWUoKQoreworICAgIEFTU0VSVChtX3RpbGVy
UHJvZ3JhbU9wYXF1ZSk7CisgICAgaWYgKCFtX3RpbGVyUHJvZ3JhbU9wYXF1ZS0+aW5pdGlhbGl6
ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxl
clByb2dyYW1PcGFxdWU6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV90aWxlclBy
b2dyYW1PcGFxdWUtPmluaXRpYWxpemUobV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisgICAgcmV0
dXJuIG1fdGlsZXJQcm9ncmFtT3BhcXVlLmdldCgpOworfQorCiBjb25zdCBDQ1RpbGVkTGF5ZXJJ
bXBsOjpQcm9ncmFtQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtQUEoKQog
ewogICAgIGlmICghbV90aWxlclByb2dyYW1BQSkKQEAgLTc2Nyw2ICs3ODAsMTcgQEAgY29uc3Qg
Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGlsZXJQcm9ncmFtU3dpenoKICAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlLmdldCgp
OwogfQogCitjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZU9wYXF1ZSogTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxlT3BhcXVlKCkKK3sKKyAgICBp
ZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZSkKKyAgICAgICAgbV90aWxlclByb2dyYW1T
d2l6emxlT3BhcXVlID0gYWRvcHRQdHIobmV3IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6
emxlT3BhcXVlKG1fY29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV90aWxlclByb2dyYW1Td2l6
emxlT3BhcXVlLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWU6OmluaXRpYWxpemUiLCB0
aGlzLCAwKTsKKyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlLT5pbml0aWFsaXpl
KG1fY29udGV4dC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtX3RpbGVyUHJvZ3JhbVN3aXp6
bGVPcGFxdWUuZ2V0KCk7Cit9CisKIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6
emxlQUEqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZUFBKCkKIHsK
ICAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZUFBKQpAQCAtODQ2LDEwICs4NzAsMTQgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICAg
ICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKICAg
ICBpZiAobV90aWxlclByb2dyYW0pCiAgICAgICAgIG1fdGlsZXJQcm9ncmFtLT5jbGVhbnVwKG1f
Y29udGV4dC5nZXQoKSk7CisgICAgaWYgKG1fdGlsZXJQcm9ncmFtT3BhcXVlKQorICAgICAgICBt
X3RpbGVyUHJvZ3JhbU9wYXF1ZS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmICht
X3RpbGVyUHJvZ3JhbUFBKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbUFBLT5jbGVhbnVwKG1fY29u
dGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdGlsZXJQcm9ncmFtU3dpenpsZSkKICAgICAgICAgbV90
aWxlclByb2dyYW1Td2l6emxlLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CisgICAgaWYgKG1f
dGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZSkKKyAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxl
T3BhcXVlLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdGlsZXJQcm9ncmFt
U3dpenpsZUFBKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS0+Y2xlYW51cChtX2Nv
bnRleHQuZ2V0KCkpOwogICAgIGlmIChtX2NhbnZhc0xheWVyUHJvZ3JhbSkKQEAgLTg3NCw4ICs5
MDIsMTAgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3Rz
KCkKICAgICBtX2JvcmRlclByb2dyYW0uY2xlYXIoKTsKICAgICBtX2hlYWRzVXBEaXNwbGF5UHJv
Z3JhbS5jbGVhcigpOwogICAgIG1fdGlsZXJQcm9ncmFtLmNsZWFyKCk7CisgICAgbV90aWxlclBy
b2dyYW1PcGFxdWUuY2xlYXIoKTsKICAgICBtX3RpbGVyUHJvZ3JhbUFBLmNsZWFyKCk7CiAgICAg
bV90aWxlclByb2dyYW1Td2l6emxlLmNsZWFyKCk7CisgICAgbV90aWxlclByb2dyYW1Td2l6emxl
T3BhcXVlLmNsZWFyKCk7CiAgICAgbV90aWxlclByb2dyYW1Td2l6emxlQUEuY2xlYXIoKTsKICAg
ICBtX2NhbnZhc0xheWVyUHJvZ3JhbS5jbGVhcigpOwogICAgIG1fcGx1Z2luTGF5ZXJQcm9ncmFt
LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDE3NGM4ODQ0
MDI1MzkzYjZhNTZkZDhmNmIxNWJhMDU2NjJjNTQ4ODcuLjE5NTExN2YwZDU0ODcwMTBkOWE1MDQy
ZDgyZjQwYjU5NzVlYmE4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBA
IC0xMjAsOCArMTIwLDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6Ok1h
c2tQcm9ncmFtKiByZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0oKTsKICAgICBjb25zdCBDQ1JlbmRl
clN1cmZhY2U6Ok1hc2tQcm9ncmFtQUEqIHJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCk7CiAg
ICAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbSogdGlsZXJQcm9ncmFtKCk7CisgICAg
Y29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbU9wYXF1ZSogdGlsZXJQcm9ncmFtT3BhcXVl
KCk7CiAgICAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbUFBKiB0aWxlclByb2dyYW1B
QSgpOwogICAgIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlKiB0aWxlclBy
b2dyYW1Td2l6emxlKCk7CisgICAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6
bGVPcGFxdWUqIHRpbGVyUHJvZ3JhbVN3aXp6bGVPcGFxdWUoKTsKICAgICBjb25zdCBDQ1RpbGVk
TGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBKiB0aWxlclByb2dyYW1Td2l6emxlQUEoKTsKICAg
ICBjb25zdCBDQ0NhbnZhc0xheWVySW1wbDo6UHJvZ3JhbSogY2FudmFzTGF5ZXJQcm9ncmFtKCk7
CiAgICAgY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW0qIHBsdWdpbkxheWVyUHJvZ3Jh
bSgpOwpAQCAtMjA1LDcgKzIwNyw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPExheWVyQ2hyb21p
dW06OkJvcmRlclByb2dyYW0+IG1fYm9yZGVyUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NIZWFkc1Vw
RGlzcGxheTo6UHJvZ3JhbT4gbV9oZWFkc1VwRGlzcGxheVByb2dyYW07CiAgICAgT3duUHRyPEND
VGlsZWRMYXllckltcGw6OlByb2dyYW0+IG1fdGlsZXJQcm9ncmFtOworICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsOjpQcm9ncmFtT3BhcXVlPiBtX3RpbGVyUHJvZ3JhbU9wYXF1ZTsKICAgICBP
d25QdHI8Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGU+IG1fdGlsZXJQcm9ncmFtU3dp
enpsZTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVPcGFxdWU+
IG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1w
bDo6UHJvZ3JhbUFBPiBtX3RpbGVyUHJvZ3JhbUFBOwogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsOjpQcm9ncmFtU3dpenpsZUFBPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQTsKICAgICBPd25Q
dHI8Q0NDYW52YXNMYXllckltcGw6OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9ncmFtOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2hhZGVyQ2hyb21pdW0uY3BwCmluZGV4IDIyZjY3NzczM2Q3YTNkYTI4M2IwZDdmZDYxOGM4MGRl
MmQ0YjFiYzEuLmQ3Y2ZkYTUyOWI0OWUxZDg1N2UwMDI3ZTEyYmIxYWU1YzZjOTFhYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TaGFkZXJDaHJvbWl1bS5jcHAKQEAgLTI2OSw2ICsyNjksMTggQEAgdm9pZCBGcmFnbWVudFRl
eEFscGhhQmluZGluZzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
cHJvZ3JhbSkKICAgICBBU1NFUlQobV9zYW1wbGVyTG9jYXRpb24gIT0gLTEgJiYgbV9hbHBoYUxv
Y2F0aW9uICE9IC0xKTsKIH0KIAorRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjpGcmFnbWVudFRl
eE9wYXF1ZUJpbmRpbmcoKQorICAgIDogbV9zYW1wbGVyTG9jYXRpb24oLTEpCit7Cit9CisKK3Zv
aWQgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nOjppbml0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCB1bnNpZ25lZCBwcm9ncmFtKQoreworICAgIG1fc2FtcGxlckxvY2F0aW9uID0gY29udGV4
dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJzX3RleHR1cmUiKTsKKworICAgIEFTU0VS
VChtX3NhbXBsZXJMb2NhdGlvbiAhPSAtMSk7Cit9CisKIFN0cmluZyBGcmFnbWVudFNoYWRlclJH
QkFUZXhGbGlwQWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNI
QURFUigKQEAgLTI5OSw2ICszMTEsMjAgQEAgU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleEFs
cGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogICAgICk7CiB9CiAKK1N0cmluZyBGcmFnbWVu
dFNoYWRlclJHQkFUZXhPcGFxdWU6OmdldFNoYWRlclN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFNIQURFUigKKyAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisgICAgICAgIHZh
cnlpbmcgdmVjMiB2X3RleENvb3JkOworICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX3RleHR1
cmU7CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzQgdGV4
Q29sb3IgPSB0ZXh0dXJlMkQoc190ZXh0dXJlLCB2X3RleENvb3JkKTsKKyAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQodGV4Q29sb3IucmdiLCAxLjApOworICAgICAgICB9CisgICAgKTsK
K30KKwogU3RyaW5nIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYTo6Z2V0U2hhZGVy
U3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gU0hBREVSKApAQCAtMzE0LDYgKzM0MCwyMCBA
QCBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhOjpnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdAogICAgICk7CiB9CiAKK1N0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6
emxlT3BhcXVlOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIo
CisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIg
dl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAg
ICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4
dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KHRleENvbG9yLnosIHRleENvbG9yLnksIHRleENvbG9yLngsIDEuMCk7CisgICAgICAg
IH0KKyAgICApOworfQorCiBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBOjpGcmFnbWVudFNo
YWRlclJHQkFUZXhBbHBoYUFBKCkKICAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0xKQogICAgICwg
bV9hbHBoYUxvY2F0aW9uKC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmgKaW5kZXggOWY1NmRjNzExYjdk
NTI4NzM0MzA4NTFkZGVmOWZkYmUyNTM3ZmNmMi4uZTZhNDM0ODg5MTRhMGRiMjYzZDg3NzI3ZmVl
MjhiNzQ3MGJlYmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCkBAIC0xNTgsNiArMTU4LDE4IEBA
IHByaXZhdGU6CiAgICAgaW50IG1fYWxwaGFMb2NhdGlvbjsKIH07CiAKK2NsYXNzIEZyYWdtZW50
VGV4T3BhcXVlQmluZGluZyB7CitwdWJsaWM6CisgICAgRnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5n
KCk7CisKKyAgICB2b2lkIGluaXQoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFt
KTsKKyAgICBpbnQgYWxwaGFMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIC0xOyB9CisgICAgaW50
IHNhbXBsZXJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlckxvY2F0aW9uOyB9CisK
K3ByaXZhdGU6CisgICAgaW50IG1fc2FtcGxlckxvY2F0aW9uOworfTsKKwogY2xhc3MgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhIDogcHVibGljIEZyYWdtZW50VGV4QWxwaGFCaW5kaW5n
IHsKIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7CkBAIC0xNjgs
MTIgKzE4MCwyMyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0
OwogfTsKIAotLy8gU3dpenpsZXMgdGhlIHJlZCBhbmQgYmx1ZSBjb21wb25lbnQgb2Ygc2FtcGxl
ZCB0ZXhlbC4KK2NsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleE9wYXF1ZSA6IHB1YmxpYyBGcmFn
bWVudFRleE9wYXF1ZUJpbmRpbmcgeworcHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKK307CisKKy8vIFN3aXp6bGVzIHRoZSByZWQgYW5kIGJsdWUgY29tcG9uZW50
IG9mIHNhbXBsZWQgdGV4ZWwgd2l0aCBhbHBoYS4KIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRl
eFN3aXp6bGVBbHBoYSA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6
CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwogfTsKIAorLy8gU3dpenpsZXMg
dGhlIHJlZCBhbmQgYmx1ZSBjb21wb25lbnQgb2Ygc2FtcGxlZCB0ZXhlbCB3aXRob3V0IGFscGhh
LgorY2xhc3MgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZU9wYXF1ZSA6IHB1YmxpYyBGcmFn
bWVudFRleE9wYXF1ZUJpbmRpbmcgeworcHVibGljOgorICAgIFN0cmluZyBnZXRTaGFkZXJTdHJp
bmcoKSBjb25zdDsKK307CisKIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEgewog
cHVibGljOgogICAgIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhQUEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggNGU2ZWY5N2JkYjcyYWFjZTMxZDY0YjM4OWI0NjYx
N2ZkMzA3Mjk2MS4uMjIwOWM4YTRiMTA1ZTcxMGU5ZGYxOGQ1MDZiM2M5MDM5NTEyNWZiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTEzOSwxMCArMTM5LDggQEAgdm9p
ZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcikKICAgICB9CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVu
ZGVyZXItPmNvbnRleHQoKTsKLSAgICBpZiAoaXNOb25Db21wb3NpdGVkQ29udGVudCgpKSB7Ci0g
ICAgICAgIGNvbnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAg
aWYgKGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSkKICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7Ci0gICAgfQogCiAgICAgc3dp
dGNoIChtX3NhbXBsZWRUZXhlbEZvcm1hdCkgewogICAgIGNhc2UgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQToKQEAgLTE1MCw4ICsxNDgsMTMgQEAgdm9pZCBDQ1Rp
bGVkTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikK
ICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1BQSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRp
bGVyUHJvZ3JhbUFBKCk7CiAgICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5kZXJlciwgbGF5
ZXJSZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1
YWQsIGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZnJh
Z21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVk
Z2VMb2NhdGlvbigpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFByb2dy
YW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dyYW0oKTsKLSAgICAgICAgICAg
IGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBsYXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZp
Y2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwg
LTEsIC0xKTsKKyAgICAgICAgICAgIGlmIChpc05vbkNvbXBvc2l0ZWRDb250ZW50KCkpIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtT3BhcXVlKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJl
ci0+dGlsZXJQcm9ncmFtT3BhcXVlKCk7CisgICAgICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVy
UmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNl
UmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCAtMSwgLTEpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtKiBwcm9ncmFtID0g
bGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtKCk7CisgICAgICAgICAgICAgICAgZHJhd1RpbGVz
KGxheWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwg
ZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCAtMSwgLTEpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQToKQEAgLTE1OSwxOCArMTYyLDIx
IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxh
eWVyUmVuZGVyZXIpCiAgICAgICAgICAgICBjb25zdCBQcm9ncmFtU3dpenpsZUFBKiBwcm9ncmFt
ID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtU3dpenpsZUFBKCk7CiAgICAgICAgICAgICBk
cmF3VGlsZXMobGF5ZXJSZW5kZXJlciwgbGF5ZXJSZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNl
TWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZnJhZ21lbnRUZXhUcmFuc2Zvcm1Mb2NhdGlvbigpLCBw
cm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGNvbnN0IFByb2dyYW1Td2l6emxlKiBwcm9ncmFtID0gbGF5ZXJSZW5k
ZXJlci0+dGlsZXJQcm9ncmFtU3dpenpsZSgpOwotICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVy
UmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNl
UmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCAtMSwgLTEpOworICAgICAg
ICAgICAgaWYgKGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSkgeworICAgICAgICAgICAgICAgIGNv
bnN0IFByb2dyYW1Td2l6emxlT3BhcXVlKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQ
cm9ncmFtU3dpenpsZU9wYXF1ZSgpOworICAgICAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJl
bmRlcmVyLCBsYXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJl
Y3QsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEsIC0xKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVN3aXp6bGUqIHByb2dy
YW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dyYW1Td2l6emxlKCk7CisgICAgICAgICAgICAg
ICAgZHJhd1RpbGVzKGxheWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRl
dmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFt
LCAtMSwgLTEpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIGlm
IChpc05vbkNvbXBvc2l0ZWRDb250ZW50KCkpIHsKLSAgICAgICAgY29udGV4dC0+Y29sb3JNYXNr
KHRydWUsIHRydWUsIHRydWUsIHRydWUpOworICAgIGlmIChpc05vbkNvbXBvc2l0ZWRDb250ZW50
KCkpCiAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkJMRU5EKSk7Ci0gICAgfQogfQogCiB2b2lkIENDVGlsZWRMYXllckltcGw6OnNldFRpbGlu
Z0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oCmluZGV4IGRkMWMyOTA4N2UyOWI0NDYzM2Y3NDlkZDRhNGZlNDUwMmYxN2FmZmIu
LjU2ZWNiNGQ2YWQ0NmQzZWM2NWE1ZDhhOWU3YzMxNjdlNDY4ZjNmMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTU5LDYgKzU5LDEwIEBAIHB1YmxpYzoKICAgICAvLyBVc2Vk
IHdoZW4gdGV4dHVyZSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggbmF0aXZlIGNvbG9yIGZvcm1hdC4K
ICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hh
ZGVyUkdCQVRleFN3aXp6bGVBbHBoYT4gUHJvZ3JhbVN3aXp6bGU7CiAKKyAgICAvLyBTYW1lIGFz
IGFib3ZlIGJ1dCBpZ25vcmluZyBhbHBoYSBhbmQgd3JpdGluZyBvdXQgMS4wIGZvciB0aGUgYWxw
aGEgY2hhbm5lbC4KKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUs
IEZyYWdtZW50U2hhZGVyUkdCQVRleE9wYXF1ZT4gUHJvZ3JhbU9wYXF1ZTsKKyAgICB0eXBlZGVm
IFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleFN3
aXp6bGVPcGFxdWU+IFByb2dyYW1Td2l6emxlT3BhcXVlOworCiAgICAgLy8gU2hhZGVyIHByb2dy
YW0gdGhhdCBwcm9kdWNlcyBhbnRpLWFsaWFzZWQgbGF5ZXIgZWRnZXMuCiAgICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhDbGFt
cEFscGhhQUE+IFByb2dyYW1BQTsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNo
YWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleENsYW1wU3dpenpsZUFscGhhQUE+IFByb2dy
YW1Td2l6emxlQUE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115465</attachid>
            <date>2011-11-16 15:51:24 -0800</date>
            <delta_ts>2011-11-16 17:30:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72452-20111116155123.patch</filename>
            <type>text/plain</type>
            <size>16247</size>
            <attacher name="Daniel Sievers">sievers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI4ZDljYTY1OWNhMDgx
ODI4MWE4YjNlYTBjYmRhYWU2ZjAzNmFjNS4uMTY5OGVmNzJlNTI4ODY0OGQwYTRkOTliOWFjM2Vh
NzBmZWI0MGM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTExLTE1ICBEYW5p
ZWwgU2lldmVycyAgPHNpZXZlcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
QXZvaWQgY29sb3IgbWFzayBvcGVyYXRpb25zIGZvciByb290IGxheWVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NTIKKworICAgICAgICBJbnN0
ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGNvbWJpbmF0aW9uIG9mIGNsZWFyaW5nIHRoZSBzdXJmYWNl
IGFuZCBpbml0aWFsaXppbmcKKyAgICAgICAgdGhlIGFscGhhIGNoYW5uZWwgdG8gMS4wIGZvbGxv
d2VkIGJ5IGRpc2FibGluZyBhbHBoYSBpbiB0aGUgY29sb3IgbWFzayB3aGVuCisgICAgICAgIHJl
bmRlcmluZyB0aGUgcm9vdCBsYXllciB0aWxlcywgYWRkIHNoYWRlcnMgdG8gc3VwcG9ydCB3cml0
aW5nIG91dCBvcGFxdWUgbGF5ZXJzCisgICAgICAgIChhbHBoYSBjaGFubmVsIHZhbHVlcyB3cml0
dGVuIGFzIDEuMCkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAg
ICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UgbWFkZSB0aGF0IHJlcXVpcmVzIG5ldyB0ZXN0cy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdM
YXllcnNJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtT3BhcXVlQUEpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp0aWxlclByb2dyYW1Td2l6emxlT3BhcXVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenps
ZU9wYXF1ZUFBKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xl
YW51cFNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4
T3BhcXVlQmluZGluZzo6RnJhZ21lbnRUZXhPcGFxdWVCaW5kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudFNoYWRlclJHQkFUZXhPcGFxdWU6OmdldFNoYWRlclN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlT3BhcXVlOjpnZXRTaGFkZXJTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFBQmluZGluZzo6
RnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFBQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFn
bWVudFRleENsYW1wT3BhcXVlQUFCaW5kaW5nOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YWdtZW50U2hhZGVyUkdCQVRleENsYW1wT3BhcXVlQUE6OmdldFNoYWRlclN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudFNoYWRlclJHQkFUZXhDbGFtcFN3aXp6bGVPcGFxdWVBQTo6
Z2V0U2hhZGVyU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
aGFkZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhPcGFxdWVCaW5k
aW5nOjphbHBoYUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4T3BhcXVl
QmluZGluZzo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4
Q2xhbXBPcGFxdWVBQUJpbmRpbmc6OmFscGhhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRUZXhDbGFtcE9wYXF1ZUFBQmluZGluZzo6c2FtcGxlckxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50VGV4Q2xhbXBPcGFxdWVBQUJpbmRpbmc6OmZyYWdtZW50VGV4
VHJhbnNmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRUZXhDbGFtcE9w
YXF1ZUFBQmluZGluZzo6ZWRnZUxvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
VGlsZWRMYXllckltcGw6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKwogMjAxMS0xMS0xNiAgSm9zaHVhIEJlbGwgIDxq
c2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogUmVkdWNlIG5lc3RlZCBr
ZXkgZGVwdGggdGhyZXNob2xkLCByZS1lbmFibGUgZmxha3kgdGVzdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYmM5ZjAwMGMyMjI2NjhhZjhhN2E2ZGE3NTRkMmQ2
MGM2YjE4MGJjMy4uMzU2NWE5NTEzNmRkODg4NTVkMThiYzZlZGJlMWE3OTUzYWQ0ZjdiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC02NjEsNiArNjYxLDcgQEAg
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKICAg
ICBtX3NoYXJlZEdlb21ldHJ5ID0gYWRvcHRQdHIobmV3IEdlb21ldHJ5QmluZGluZyhtX2NvbnRl
eHQuZ2V0KCkpKTsKICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtID0gYWRvcHRQdHIobmV3IEND
UmVuZGVyU3VyZmFjZTo6UHJvZ3JhbShtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBtX3RpbGVyUHJv
Z3JhbSA9IGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtKG1fY29udGV4dC5n
ZXQoKSkpOworICAgIG1fdGlsZXJQcm9ncmFtT3BhcXVlID0gYWRvcHRQdHIobmV3IENDVGlsZWRM
YXllckltcGw6OlByb2dyYW1PcGFxdWUobV9jb250ZXh0LmdldCgpKSk7CiAKICAgICBHTEMobV9j
b250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmZsdXNoKCkpOwogCkBAIC03NDUsNiArNzQ2LDE2IEBA
IGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
dGlsZXJQcm9ncmFtKCkKICAgICByZXR1cm4gbV90aWxlclByb2dyYW0uZ2V0KCk7CiB9CiAKK2Nv
bnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1PcGFxdWUqIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dGlsZXJQcm9ncmFtT3BhcXVlKCkKK3sKKyAgICBBU1NFUlQobV90aWxlclByb2dyYW1PcGFx
dWUpOworICAgIGlmICghbV90aWxlclByb2dyYW1PcGFxdWUtPmluaXRpYWxpemVkKCkpIHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dGlsZXJQcm9ncmFtT3Bh
cXVlOjppbml0aWFsaXplIiwgdGhpcywgMCk7CisgICAgICAgIG1fdGlsZXJQcm9ncmFtT3BhcXVl
LT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtX3RpbGVy
UHJvZ3JhbU9wYXF1ZS5nZXQoKTsKK30KKwogY29uc3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3Jh
bUFBKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbUFBKCkKIHsKICAgICBpZiAo
IW1fdGlsZXJQcm9ncmFtQUEpCkBAIC03NjcsNiArNzc4LDE3IEBAIGNvbnN0IENDVGlsZWRMYXll
ckltcGw6OlByb2dyYW1Td2l6emxlKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3Jh
bVN3aXp6CiAgICAgcmV0dXJuIG1fdGlsZXJQcm9ncmFtU3dpenpsZS5nZXQoKTsKIH0KIAorY29u
c3QgQ0NUaWxlZExheWVySW1wbDo6UHJvZ3JhbVN3aXp6bGVPcGFxdWUqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZSgpCit7CisgICAgaWYgKCFtX3RpbGVy
UHJvZ3JhbVN3aXp6bGVPcGFxdWUpCisgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1
ZSA9IGFkb3B0UHRyKG5ldyBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZU9wYXF1ZSht
X2NvbnRleHQuZ2V0KCkpKTsKKyAgICBpZiAoIW1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZS0+
aW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgiTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp0aWxlclByb2dyYW1Td2l6emxlT3BhcXVlOjppbml0aWFsaXplIiwgdGhpcywgMCk7Cisg
ICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZS0+aW5pdGlhbGl6ZShtX2NvbnRleHQu
Z2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbV90aWxlclByb2dyYW1Td2l6emxlT3BhcXVlLmdl
dCgpOworfQorCiBjb25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBKiBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpCiB7CiAgICAgaWYgKCFt
X3RpbGVyUHJvZ3JhbVN3aXp6bGVBQSkKQEAgLTg0NiwxMCArODY4LDE0IEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1faGVhZHNV
cERpc3BsYXlQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fdGls
ZXJQcm9ncmFtKQogICAgICAgICBtX3RpbGVyUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0
KCkpOworICAgIGlmIChtX3RpbGVyUHJvZ3JhbU9wYXF1ZSkKKyAgICAgICAgbV90aWxlclByb2dy
YW1PcGFxdWUtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV90aWxlclByb2dy
YW1BQSkKICAgICAgICAgbV90aWxlclByb2dyYW1BQS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkp
OwogICAgIGlmIChtX3RpbGVyUHJvZ3JhbVN3aXp6bGUpCiAgICAgICAgIG1fdGlsZXJQcm9ncmFt
U3dpenpsZS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOworICAgIGlmIChtX3RpbGVyUHJvZ3Jh
bVN3aXp6bGVPcGFxdWUpCisgICAgICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZS0+Y2xl
YW51cChtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQSkK
ICAgICAgICAgbV90aWxlclByb2dyYW1Td2l6emxlQUEtPmNsZWFudXAobV9jb250ZXh0LmdldCgp
KTsKICAgICBpZiAobV9jYW52YXNMYXllclByb2dyYW0pCkBAIC04NzQsOCArOTAwLDEwIEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgbV9i
b3JkZXJQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0uY2xlYXIo
KTsKICAgICBtX3RpbGVyUHJvZ3JhbS5jbGVhcigpOworICAgIG1fdGlsZXJQcm9ncmFtT3BhcXVl
LmNsZWFyKCk7CiAgICAgbV90aWxlclByb2dyYW1BQS5jbGVhcigpOwogICAgIG1fdGlsZXJQcm9n
cmFtU3dpenpsZS5jbGVhcigpOworICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZU9wYXF1ZS5jbGVh
cigpOwogICAgIG1fdGlsZXJQcm9ncmFtU3dpenpsZUFBLmNsZWFyKCk7CiAgICAgbV9jYW52YXNM
YXllclByb2dyYW0uY2xlYXIoKTsKICAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbS5jbGVhcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAxNzRjODg0NDAyNTM5M2I2YTU2
ZGQ4ZjZiMTViYTA1NjYyYzU0ODg3Li4xOTUxMTdmMGQ1NDg3MDEwZDlhNTA0MmQ4MmY0MGI1OTc1
ZWJhOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTIwLDggKzEy
MCwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlOjpNYXNrUHJvZ3JhbSog
cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7CiAgICAgY29uc3QgQ0NSZW5kZXJTdXJmYWNlOjpN
YXNrUHJvZ3JhbUFBKiByZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOwogICAgIGNvbnN0IEND
VGlsZWRMYXllckltcGw6OlByb2dyYW0qIHRpbGVyUHJvZ3JhbSgpOworICAgIGNvbnN0IENDVGls
ZWRMYXllckltcGw6OlByb2dyYW1PcGFxdWUqIHRpbGVyUHJvZ3JhbU9wYXF1ZSgpOwogICAgIGNv
bnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1BQSogdGlsZXJQcm9ncmFtQUEoKTsKICAgICBj
b25zdCBDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZSogdGlsZXJQcm9ncmFtU3dpenps
ZSgpOworICAgIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlT3BhcXVlKiB0
aWxlclByb2dyYW1Td2l6emxlT3BhcXVlKCk7CiAgICAgY29uc3QgQ0NUaWxlZExheWVySW1wbDo6
UHJvZ3JhbVN3aXp6bGVBQSogdGlsZXJQcm9ncmFtU3dpenpsZUFBKCk7CiAgICAgY29uc3QgQ0ND
YW52YXNMYXllckltcGw6OlByb2dyYW0qIGNhbnZhc0xheWVyUHJvZ3JhbSgpOwogICAgIGNvbnN0
IENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtKiBwbHVnaW5MYXllclByb2dyYW0oKTsKQEAgLTIw
NSw3ICsyMDcsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxMYXllckNocm9taXVtOjpCb3JkZXJQ
cm9ncmFtPiBtX2JvcmRlclByb2dyYW07CiAgICAgT3duUHRyPENDSGVhZHNVcERpc3BsYXk6OlBy
b2dyYW0+IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtOwogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsOjpQcm9ncmFtPiBtX3RpbGVyUHJvZ3JhbTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1w
bDo6UHJvZ3JhbU9wYXF1ZT4gbV90aWxlclByb2dyYW1PcGFxdWU7CiAgICAgT3duUHRyPENDVGls
ZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGU7CisgICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlT3BhcXVlPiBtX3RpbGVyUHJv
Z3JhbVN3aXp6bGVPcGFxdWU7CiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw6OlByb2dyYW1B
QT4gbV90aWxlclByb2dyYW1BQTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbDo6UHJvZ3Jh
bVN3aXp6bGVBQT4gbV90aWxlclByb2dyYW1Td2l6emxlQUE7CiAgICAgT3duUHRyPENDQ2FudmFz
TGF5ZXJJbXBsOjpQcm9ncmFtPiBtX2NhbnZhc0xheWVyUHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NoYWRlckNocm9t
aXVtLmNwcAppbmRleCAyMmY2Nzc3MzNkN2EzZGEyODNiMGQ3ZmQ2MThjODBkZTJkNGIxYmMxLi5k
N2NmZGE1MjliNDllMWQ4NTdlMDAyN2UxMmJiMWFlNWM2YzkxYWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hy
b21pdW0uY3BwCkBAIC0yNjksNiArMjY5LDE4IEBAIHZvaWQgRnJhZ21lbnRUZXhBbHBoYUJpbmRp
bmc6OmluaXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHByb2dyYW0pCiAg
ICAgQVNTRVJUKG1fc2FtcGxlckxvY2F0aW9uICE9IC0xICYmIG1fYWxwaGFMb2NhdGlvbiAhPSAt
MSk7CiB9CiAKK0ZyYWdtZW50VGV4T3BhcXVlQmluZGluZzo6RnJhZ21lbnRUZXhPcGFxdWVCaW5k
aW5nKCkKKyAgICA6IG1fc2FtcGxlckxvY2F0aW9uKC0xKQoreworfQorCit2b2lkIEZyYWdtZW50
VGV4T3BhcXVlQmluZGluZzo6aW5pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgcHJvZ3JhbSkKK3sKKyAgICBtX3NhbXBsZXJMb2NhdGlvbiA9IGNvbnRleHQtPmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAic190ZXh0dXJlIik7CisKKyAgICBBU1NFUlQobV9zYW1wbGVy
TG9jYXRpb24gIT0gLTEpOworfQorCiBTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFs
cGhhOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBTSEFERVIoCkBAIC0y
OTksNiArMzExLDIwIEBAIFN0cmluZyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYTo6Z2V0U2hh
ZGVyU3RyaW5nKCkgY29uc3QKICAgICApOwogfQogCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JB
VGV4T3BhcXVlOjpnZXRTaGFkZXJTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTSEFERVIo
CisgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgICAgICB2YXJ5aW5nIHZlYzIg
dl90ZXhDb29yZDsKKyAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOworICAgICAg
ICB2b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IHRleENvbG9yID0gdGV4
dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhDb29yZCk7CisgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KHRleENvbG9yLnJnYiwgMS4wKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKIFN0cmlu
ZyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE6OmdldFNoYWRlclN0cmluZygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFNIQURFUigKQEAgLTMxNCw2ICszNDAsMjAgQEAgU3RyaW5nIEZy
YWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVBbHBoYTo6Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QK
ICAgICApOwogfQogCitTdHJpbmcgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZU9wYXF1ZTo6
Z2V0U2hhZGVyU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU0hBREVSKAorICAgICAgICBw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7
CisgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKKyAgICAgICAgdm9pZCBtYWlu
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRChzX3Rl
eHR1cmUsIHZfdGV4Q29vcmQpOworICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0ZXhD
b2xvci56LCB0ZXhDb2xvci55LCB0ZXhDb2xvci54LCAxLjApOworICAgICAgICB9CisgICAgKTsK
K30KKwogRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFBQTo6RnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGFBQSgpCiAgICAgOiBtX3NhbXBsZXJMb2NhdGlvbigtMSkKICAgICAsIG1fYWxwaGFMb2Nh
dGlvbigtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NoYWRlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TaGFkZXJDaHJvbWl1bS5oCmluZGV4IDlmNTZkYzcxMWI3ZDUyODczNDMwODUx
ZGRlZjlmZGJlMjUzN2ZjZjIuLmU2YTQzNDg4OTE0YTBkYjI2M2Q4NzcyN2ZlZTI4Yjc0NzBiZWJj
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NoYWRlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2hhZGVyQ2hyb21pdW0uaApAQCAtMTU4LDYgKzE1OCwxOCBAQCBwcml2YXRlOgog
ICAgIGludCBtX2FscGhhTG9jYXRpb247CiB9OwogCitjbGFzcyBGcmFnbWVudFRleE9wYXF1ZUJp
bmRpbmcgeworcHVibGljOgorICAgIEZyYWdtZW50VGV4T3BhcXVlQmluZGluZygpOworCisgICAg
dm9pZCBpbml0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7CisgICAgaW50
IGFscGhhTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAtMTsgfQorICAgIGludCBzYW1wbGVyTG9j
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZXJMb2NhdGlvbjsgfQorCitwcml2YXRlOgor
ICAgIGludCBtX3NhbXBsZXJMb2NhdGlvbjsKK307CisKIGNsYXNzIEZyYWdtZW50U2hhZGVyUkdC
QVRleEZsaXBBbHBoYSA6IHB1YmxpYyBGcmFnbWVudFRleEFscGhhQmluZGluZyB7CiBwdWJsaWM6
CiAgICAgU3RyaW5nIGdldFNoYWRlclN0cmluZygpIGNvbnN0OwpAQCAtMTY4LDEyICsxODAsMjMg
QEAgcHVibGljOgogICAgIFN0cmluZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKLS8v
IFN3aXp6bGVzIHRoZSByZWQgYW5kIGJsdWUgY29tcG9uZW50IG9mIHNhbXBsZWQgdGV4ZWwuCitj
bGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhPcGFxdWUgOiBwdWJsaWMgRnJhZ21lbnRUZXhPcGFx
dWVCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7
Cit9OworCisvLyBTd2l6emxlcyB0aGUgcmVkIGFuZCBibHVlIGNvbXBvbmVudCBvZiBzYW1wbGVk
IHRleGVsIHdpdGggYWxwaGEuCiBjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxw
aGEgOiBwdWJsaWMgRnJhZ21lbnRUZXhBbHBoYUJpbmRpbmcgewogcHVibGljOgogICAgIFN0cmlu
ZyBnZXRTaGFkZXJTdHJpbmcoKSBjb25zdDsKIH07CiAKKy8vIFN3aXp6bGVzIHRoZSByZWQgYW5k
IGJsdWUgY29tcG9uZW50IG9mIHNhbXBsZWQgdGV4ZWwgd2l0aG91dCBhbHBoYS4KK2NsYXNzIEZy
YWdtZW50U2hhZGVyUkdCQVRleFN3aXp6bGVPcGFxdWUgOiBwdWJsaWMgRnJhZ21lbnRUZXhPcGFx
dWVCaW5kaW5nIHsKK3B1YmxpYzoKKyAgICBTdHJpbmcgZ2V0U2hhZGVyU3RyaW5nKCkgY29uc3Q7
Cit9OworCiBjbGFzcyBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBIHsKIHB1YmxpYzoKICAg
ICBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYUFBKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuY3BwCmluZGV4IDRlNmVmOTdiZGI3MmFhY2UzMWQ2NGIzODliNDY2MTdmZDMwNzI5NjEu
LjIyMDljOGE0YjEwNWU3MTBlOWRmMThkNTA2YjNjOTAzOTUxMjVmYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0xMzksMTAgKzEzOSw4IEBAIHZvaWQgQ0NUaWxlZExh
eWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAg
fQogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyLT5jb250
ZXh0KCk7Ci0gICAgaWYgKGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSkgewotICAgICAgICBjb250
ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgIGlmIChpc05vbkNv
bXBvc2l0ZWRDb250ZW50KCkpCiAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kaXNhYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwotICAgIH0KIAogICAgIHN3aXRjaCAobV9zYW1w
bGVkVGV4ZWxGb3JtYXQpIHsKICAgICBjYXNlIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRU
ZXhlbEZvcm1hdFJHQkE6CkBAIC0xNTAsOCArMTQ4LDEzIEBAIHZvaWQgQ0NUaWxlZExheWVySW1w
bDo6ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgICAgICAg
ICBjb25zdCBQcm9ncmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT50aWxlclByb2dyYW1B
QSgpOwogICAgICAgICAgICAgZHJhd1RpbGVzKGxheWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5
ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3Bh
Y2l0eSgpLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmZyYWdtZW50VGV4VHJh
bnNmb3JtTG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24o
KSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBQcm9ncmFtKiBwcm9ncmFt
ID0gbGF5ZXJSZW5kZXJlci0+dGlsZXJQcm9ncmFtKCk7Ci0gICAgICAgICAgICBkcmF3VGlsZXMo
bGF5ZXJSZW5kZXJlciwgbGF5ZXJSZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBk
ZXZpY2VSZWN0LCBsYXllclF1YWQsIGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIC0xLCAtMSk7Cisg
ICAgICAgICAgICBpZiAoaXNOb25Db21wb3NpdGVkQ29udGVudCgpKSB7CisgICAgICAgICAgICAg
ICAgY29uc3QgUHJvZ3JhbU9wYXF1ZSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJv
Z3JhbU9wYXF1ZSgpOworICAgICAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBs
YXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVy
UXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEsIC0xKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVy
ZXItPnRpbGVyUHJvZ3JhbSgpOworICAgICAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRl
cmVyLCBsYXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3Qs
IGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEsIC0xKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE6CkBAIC0xNTksMTggKzE2MiwyMSBAQCB2b2lkIEND
VGlsZWRMYXllckltcGw6OmRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
KQogICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVN3aXp6bGVBQSogcHJvZ3JhbSA9IGxheWVyUmVu
ZGVyZXItPnRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpOwogICAgICAgICAgICAgZHJhd1RpbGVzKGxh
eWVyUmVuZGVyZXIsIGxheWVyUmVjdCwgbGF5ZXJUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2
aWNlUmVjdCwgbGF5ZXJRdWFkLCBkcmF3T3BhY2l0eSgpLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBjb25zdCBQcm9ncmFtU3dpenpsZSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVy
UHJvZ3JhbVN3aXp6bGUoKTsKLSAgICAgICAgICAgIGRyYXdUaWxlcyhsYXllclJlbmRlcmVyLCBs
YXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVy
UXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEsIC0xKTsKKyAgICAgICAgICAgIGlmIChp
c05vbkNvbXBvc2l0ZWRDb250ZW50KCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFt
U3dpenpsZU9wYXF1ZSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnRpbGVyUHJvZ3JhbVN3aXp6
bGVPcGFxdWUoKTsKKyAgICAgICAgICAgICAgICBkcmF3VGlsZXMobGF5ZXJSZW5kZXJlciwgbGF5
ZXJSZWN0LCBsYXllclRyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1
YWQsIGRyYXdPcGFjaXR5KCksIHByb2dyYW0sIC0xLCAtMSk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1Td2l6emxlKiBwcm9ncmFtID0gbGF5ZXJS
ZW5kZXJlci0+dGlsZXJQcm9ncmFtU3dpenpsZSgpOworICAgICAgICAgICAgICAgIGRyYXdUaWxl
cyhsYXllclJlbmRlcmVyLCBsYXllclJlY3QsIGxheWVyVHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgs
IGRldmljZVJlY3QsIGxheWVyUXVhZCwgZHJhd09wYWNpdHkoKSwgcHJvZ3JhbSwgLTEsIC0xKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBpZiAoaXNOb25Db21w
b3NpdGVkQ29udGVudCgpKSB7Ci0gICAgICAgIGNvbnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVl
LCB0cnVlLCB0cnVlKTsKKyAgICBpZiAoaXNOb25Db21wb3NpdGVkQ29udGVudCgpKQogICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkp
OwotICAgIH0KIH0KIAogdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpzZXRUaWxpbmdEYXRhKGNvbnN0
IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApp
bmRleCBkZDFjMjkwODdlMjliNDQ2MzNmNzQ5ZGQ0YTRmZTQ1MDJmMTdhZmZiLi41NmVjYjRkNmFk
NDZkM2VjNjVhNWQ4YTllN2MzMTY3ZTQ2OGYzZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5oCkBAIC01OSw2ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCB3aGVuIHRleHR1
cmUgZm9ybWF0IGRvZXMgbm90IG1hdGNoIG5hdGl2ZSBjb2xvciBmb3JtYXQuCiAgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhT
d2l6emxlQWxwaGE+IFByb2dyYW1Td2l6emxlOwogCisgICAgLy8gU2FtZSBhcyBhYm92ZSBidXQg
aWdub3JpbmcgYWxwaGEgYW5kIHdyaXRpbmcgb3V0IDEuMCBmb3IgdGhlIGFscGhhIGNoYW5uZWwu
CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNo
YWRlclJHQkFUZXhPcGFxdWU+IFByb2dyYW1PcGFxdWU7CisgICAgdHlwZWRlZiBQcm9ncmFtQmlu
ZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlT3BhcXVl
PiBQcm9ncmFtU3dpenpsZU9wYXF1ZTsKKwogICAgIC8vIFNoYWRlciBwcm9ncmFtIHRoYXQgcHJv
ZHVjZXMgYW50aS1hbGlhc2VkIGxheWVyIGVkZ2VzLgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRp
bmc8VmVydGV4U2hhZGVyVGlsZSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Q2xhbXBBbHBoYUFBPiBQ
cm9ncmFtQUE7CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJUaWxlLCBG
cmFnbWVudFNoYWRlclJHQkFUZXhDbGFtcFN3aXp6bGVBbHBoYUFBPiBQcm9ncmFtU3dpenpsZUFB
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>