<?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>92182</bug_id>
          
          <creation_ts>2012-07-24 17:29:17 -0700</creation_ts>
          <short_desc>[chromium] Turn the debug HUD into a layer so that it can be drawn as a WebCompositorQuad</short_desc>
          <delta_ts>2012-07-31 15:24:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
    
    <cc>zlieber</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>677402</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-24 17:29:17 -0700</bug_when>
    <thetext>[chromium] Turn the debug HUD into a layer so that it can be drawn as a WebCompositorQuad</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677415</commentid>
    <comment_count>1</comment_count>
      <attachid>154193</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-24 17:35:52 -0700</bug_when>
    <thetext>Created attachment 154193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677423</commentid>
    <comment_count>2</comment_count>
      <attachid>154195</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-24 17:41:10 -0700</bug_when>
    <thetext>Created attachment 154195
Patch

remove the changes in CCDamageTracker by having layerPropertyChanged() return true when layerIsAlwaysDamaged().
remove the changes to turn on debug rects (oops)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677445</commentid>
    <comment_count>3</comment_count>
      <attachid>154195</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-24 17:57:49 -0700</bug_when>
    <thetext>Comment on attachment 154195
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/HeadsUpDisplayLayerChromium.h:44
&gt; +    explicit HeadsUpDisplayLayerChromium();

No need for explicit here.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplayLayerImpl.cpp:63
&gt; +    // FIXME: Use contentBounds() for the texture.

Don&apos;t contentBounds == bounds here?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplayLayerImpl.cpp:92
&gt; +    printf(&quot;layerPropertyChanged %d\n&quot;, layerPropertyChanged());

Whomp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677446</commentid>
    <comment_count>4</comment_count>
      <attachid>154193</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-24 17:59:31 -0700</bug_when>
    <thetext>Comment on attachment 154193
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplayLayerImpl.cpp:83
&gt; +        resourceProvider-&gt;upload(m_hudTexture-&gt;id(), locker.pixels(), layerRect, layerRect, layerRect);

Note: FYI this will be a problem with the host compositor, similar to other uses of willDraw in CCTextureLayerImpl or CCVideoLayerImpl. Essentially when we will want to upload data to it, it will be in use by the host compositor and things will go bad.
We&apos;ll have to fix it similarly to the way we&apos;ll fix the other classes, e.g. double-buffering. You don&apos;t have to change it now, but it would be useful for future reference to add an ASSERT that !resourceProvider-&gt;inUseByConsumer(m_hudTexture-&gt;id()), and a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677454</commentid>
    <comment_count>5</comment_count>
      <attachid>154193</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-24 18:03:12 -0700</bug_when>
    <thetext>Comment on attachment 154193
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplayLayerImpl.cpp:83
&gt;&gt; +        resourceProvider-&gt;upload(m_hudTexture-&gt;id(), locker.pixels(), layerRect, layerRect, layerRect);
&gt; 
&gt; Note: FYI this will be a problem with the host compositor, similar to other uses of willDraw in CCTextureLayerImpl or CCVideoLayerImpl. Essentially when we will want to upload data to it, it will be in use by the host compositor and things will go bad.
&gt; We&apos;ll have to fix it similarly to the way we&apos;ll fix the other classes, e.g. double-buffering. You don&apos;t have to change it now, but it would be useful for future reference to add an ASSERT that !resourceProvider-&gt;inUseByConsumer(m_hudTexture-&gt;id()), and a FIXME.

ya this was intentional punting :) good idea with the assert and fixme!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677457</commentid>
    <comment_count>6</comment_count>
      <attachid>154195</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-24 18:05:11 -0700</bug_when>
    <thetext>Comment on attachment 154195
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/HeadsUpDisplayLayerChromium.h:44
&gt;&gt; +    explicit HeadsUpDisplayLayerChromium();
&gt; 
&gt; No need for explicit here.

Ah the copypaste. thanks.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplayLayerImpl.cpp:63
&gt;&gt; +    // FIXME: Use contentBounds() for the texture.
&gt; 
&gt; Don&apos;t contentBounds == bounds here?

Well.. yes. Hm. I guess everything is going to get very small tho in hidpi. I will reword this FIXME.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplayLayerImpl.cpp:92
&gt;&gt; +    printf(&quot;layerPropertyChanged %d\n&quot;, layerPropertyChanged());
&gt; 
&gt; Whomp.

removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677460</commentid>
    <comment_count>7</comment_count>
      <attachid>154203</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-24 18:05:53 -0700</bug_when>
    <thetext>Created attachment 154203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677467</commentid>
    <comment_count>8</comment_count>
      <attachid>154203</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-24 18:12:17 -0700</bug_when>
    <thetext>Comment on attachment 154203
Patch

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

R=me.  I love all the HUD code removal from the proxy and LRC.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplayLayerImpl.cpp:107
&gt; +    // parent compositor. We will probably need to hold on to m_frame for

m_frame -&gt; m_hudTexture?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677468</commentid>
    <comment_count>9</comment_count>
      <attachid>154203</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-24 18:13:53 -0700</bug_when>
    <thetext>Comment on attachment 154203
Patch

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

Thanks

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplayLayerImpl.cpp:107
&gt;&gt; +    // parent compositor. We will probably need to hold on to m_frame for
&gt; 
&gt; m_frame -&gt; m_hudTexture?

Ya! HUD is not video.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677474</commentid>
    <comment_count>10</comment_count>
      <attachid>154206</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-24 18:19:55 -0700</bug_when>
    <thetext>Created attachment 154206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678207</commentid>
    <comment_count>11</comment_count>
      <attachid>154385</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 10:35:03 -0700</bug_when>
    <thetext>Created attachment 154385
diff-to-fix-asserts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678208</commentid>
    <comment_count>12</comment_count>
      <attachid>154386</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 10:36:18 -0700</bug_when>
    <thetext>Created attachment 154386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678211</commentid>
    <comment_count>13</comment_count>
      <attachid>154388</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 10:40:02 -0700</bug_when>
    <thetext>Created attachment 154388
Patch

remove the explicit i added that wasnt needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678266</commentid>
    <comment_count>14</comment_count>
      <attachid>154388</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 11:17:24 -0700</bug_when>
    <thetext>Comment on attachment 154388
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/HeadsUpDisplayLayerChromium.cpp:70
&gt; +    return CCHeadsUpDisplayLayerImpl::create(m_layerId, m_fontAtlas.release());

Is there ever a time where the impl-side layer goes away and m_fontAtlas needs to be reused? In other words, maybe create m_fontAtlas if needed in an update function just to be safe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678272</commentid>
    <comment_count>15</comment_count>
      <attachid>154388</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 11:20:18 -0700</bug_when>
    <thetext>Comment on attachment 154388
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/HeadsUpDisplayLayerChromium.cpp:70
&gt;&gt; +    return CCHeadsUpDisplayLayerImpl::create(m_layerId, m_fontAtlas.release());
&gt; 
&gt; Is there ever a time where the impl-side layer goes away and m_fontAtlas needs to be reused? In other words, maybe create m_fontAtlas if needed in an update function just to be safe?

We never delete the impl tree, and we never turn hud off, so the impl layer will always be there. In order to know if you need to make a new atlas you need to know if the impl layer has one. But we have to make the atlas before we block the impl thread.

I would say that if we make a way to turn HUD off/on, then the turn-on mechanism should be the one to signal the atlas to be created. Right now creating a HUDLayerChromium is the mechanism we use to signal that the atlas needs to be created.

wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678276</commentid>
    <comment_count>16</comment_count>
      <attachid>154388</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 11:22:36 -0700</bug_when>
    <thetext>Comment on attachment 154388
Patch

R=me(again).  I&apos;ll buy that argument.  If we make the HUD toggleable, there&apos;ll be a lot more that will need to be changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678280</commentid>
    <comment_count>17</comment_count>
      <attachid>154388</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-25 11:23:51 -0700</bug_when>
    <thetext>Comment on attachment 154388
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:268
&gt; +    if (m_hudLayer)
&gt; +        m_hudLayer-&gt;removeFromParent();

I&apos;m a little confused about this - does this mean we will be re-creating the hudLayer on every commit?  won&apos;t that mean we are also re-creating the fontAtlas stuff that should only be done once?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678285</commentid>
    <comment_count>18</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-25 11:26:16 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 154388 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154388&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:268
&gt; &gt; +    if (m_hudLayer)
&gt; &gt; +        m_hudLayer-&gt;removeFromParent();
&gt; 
&gt; I&apos;m a little confused about this - does this mean we will be re-creating the hudLayer on every commit?  won&apos;t that mean we are also re-creating the fontAtlas stuff that should only be done once?

I guess my comment was just 10 minutes out-dated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678290</commentid>
    <comment_count>19</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-25 11:30:10 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 154388 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154388&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:268
&gt; &gt; +    if (m_hudLayer)
&gt; &gt; +        m_hudLayer-&gt;removeFromParent();
&gt; 
&gt; I&apos;m a little confused about this - does this mean we will be re-creating the hudLayer on every commit?  won&apos;t that mean we are also re-creating the fontAtlas stuff that should only be done once?

Removing the hud layer from its parent doesn&apos;t clear it and cause it to be recreated.  It&apos;s still owned by the CCLTH.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678349</commentid>
    <comment_count>20</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-25 12:46:41 -0700</bug_when>
    <thetext>Committed r123644: &lt;http://trac.webkit.org/changeset/123644&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683525</commentid>
    <comment_count>21</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-07-31 15:24:09 -0700</bug_when>
    <thetext>This patch appears to have inverted all the colors (specifically swizzled red&lt;-&gt;blue), since the old HUD shader was a swizzle shader and the texture shader doesn&apos;t swizzle.  It&apos;s easy enough to &quot;correct&quot; for this by swizzling the colors back when we paint, since we programatically paint everything in the HUD, but it&apos;s a bit strange.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154193</attachid>
            <date>2012-07-24 17:35:52 -0700</date>
            <delta_ts>2012-07-24 18:03:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92182-20120724203542.patch</filename>
            <type>text/plain</type>
            <size>65340</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2OTIwM2M2OTE0OWY3
NmE0OTdlNjlhOTJiNGNlMmEyZjE4ZWFiNS4uNzdjZjI4ZTIwYjAxM2Y5Y2Y3OGQ4MWUyMmZmMTk0
NzNlNTRlYzU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA3LTI0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVHVy
biB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0IGNhbiBiZSBkcmF3biBhcyBh
IFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJ5IGNoYW5naW5nIHRoZSBIVUQgaW50byBhIHF1YWQsIHdlIGFyZSBhYmxlIHRv
IGNyZWF0ZSBhIEhVRCBhbmQgcGFzcworICAgICAgICBpdCB0byB0aGUgaG9zdCBjb21wb3NpdG9y
LCBhbGxvd2luZyB0aGUgSFVEIHRvIGJlIHVzZWQgZm9yIHJlbmRlcmVycworICAgICAgICB1bmRl
ciBVYmVyY29tcG9zaXRvci4KKworICAgICAgICBUaGlzIGFsc28gcmVtb3ZlcyB0aGUgc3BlY2lh
bCBkcmF3aW5nIGNvZGUgZm9yIHRoZSBIVUQgZnJvbQorICAgICAgICBMYXllclJlbmRlcmVyQ2hy
b21pdW0sIGFsbG93aW5nIHVzIHRvIG1vdmUgZmluaXNoRHJhd2luZ0ZyYW1lCisgICAgICAgIGlu
dG8gTGF5ZXJSZW5kZXJlckNocm9taXVtIGFzIGEgcHJpdmF0ZSBtZXRob2QgYW5kIHJlbW92ZSBp
dAorICAgICAgICBmcm9tIHRoZSBDQ1JlbmRlcmVyIGludGVyZmFjZS4KKworICAgICAgICBGaW5h
bGx5LCB3ZSBjYW4gcmVtb3ZlIHRoZSBDQ0ZvbnRBdGxhcyB0cmFuc3BvcnQgY29kZSBmcm9tIEND
UHJveHkKKyAgICAgICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXMgdGhlIGF0bGFzIGNhbiBi
ZSBzeW5jZWQgdG8gaW1wbCB0aHJlYWQKKyAgICAgICAgdGhyb3VnaCB0aGUgdXN1YWwgbGF5ZXIg
Y29tbWl0IG1lY2hhbmlzbS4KKworICAgICAgICBUaGUgZGVidWcgSFVEIGlzIG5vdCBjb3ZlcmVk
IGJ5IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIZWFkc1VwRGlzcGxheUxh
eWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIZWFkc1VwRGlzcGxheUxh
eWVyQ2hyb21pdW06OkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06On5IZWFkc1VwRGlzcGxheUxheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjpj
cmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmxheWVyTmVlZHNUb1JlZHJhd09udG9JdHNUYXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDRGFtYWdlVHJhY2tlcjo6ZXh0ZW5kRGFtYWdlRm9yUmVuZGVyU3VyZmFjZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZVByb3BlcnR5
Q2hhbmdlZFJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlYnVnUmVjdEhpc3RvcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3Bw
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6On5DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OndpbGxEcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRpZExvc2VD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRy
YXdIdWRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsOjpkcmF3RlBTQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsOjpkcmF3RlBTQ291bnRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbDo6ZHJhd0RlYnVnUmVjdHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXkuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5ZXJJc0Fsd2F5
c0RhbWFnZWQpOgorICAgICAgICBUaGlzIGZsYWcgaXMgdXNlZCB0byBtYXJrIHRoZSBIVUQgYXMg
YWx3YXlzIGRhbWFnZWQsIHNvIHRoYXQgaXQgaXMKKyAgICAgICAgY29udGludWFsbHkgZHJhd24g
b24gdGhlIGltcGwgdGhyZWFkLiBJdCBpcyBhbHNvIHVzZWQgYXMgYSBoaW50IGJ5CisgICAgICAg
IHRoZSBDQ0RlYnVnUmVjdEhpc3RvcnkgY2xhc3MgdG8gbm90IGluY2x1ZGUgdGhlIGxheWVyIGlu
IHRoZSBkaXNwbGF5CisgICAgICAgIG9mIGRhbWFnZSwgc2luY2UgYWx3YXlzIGRhbWFnZWQgaXMg
bm90IGludGVyZXN0aW5nIGRhbWFnZS4KKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJU
cmVlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5nczo6c2hv
d0RlYnVnSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzOjpzaG93
RGVidWdSZWN0cyk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAg
KENDUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyZXIuaDoKKyAgICAgICAgKENDUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAg
ICAgIChDQ1RocmVhZFByb3h5KToKKwogMjAxMi0wNy0yMyAgSGF5YXRvIEl0byAgPGhheWF0b0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQSBGb2N1c1Njb3BlIGZvciBhIGRpc3RyaWJ1dGVkIG5v
ZGUgc2hvdWxkIG5vdCBiZSBpdHMgVHJlZVNjb3BlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCAxMmJmOGE0ZGE4NWRmZjljZThkZTE3YTVlYjQ0MDFiYzBhZTQ1ODk3Li4zOGY4ZDY0YjYz
ZmI2ZjQwYmI1MzdiNTUzYmFhZGI5OTc2YTA2MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA3LTI0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVHVybiB0aGUgZGVidWcgSFVEIGludG8g
YSBsYXllciBzbyB0aGF0IGl0IGNhbiBiZSBkcmF3biBhcyBhIFdlYkNvbXBvc2l0b3JRdWFkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjE4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvTGF5
ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxMi0wNy0y
MyAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIEZpeCB1bml0IHRlc3RzIGluIGRlYnVnIG1vZGUgYWZ0ZXIgcjEyMzM3NQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IGJlZGQ0NDA0MGU4ZjZlMmFjZDIxYzU5MjBhZjFjOTgzYzZhMjFlYjQuLjkz
NWU5M2ZjOWNiOGYzYTRmYzRkYTYxODE1Yjc4ZDA2N2FiYTA5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTgyNDgsNiArODI0OCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5Qmlu
ZGluZy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1Vw
RGlzcGxheUxheWVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lPU3VyZmFjZUxheWVyQ2hy
b21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmNwcCcsCkBAIC04MzEzLDggKzgzMTUsOCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRl
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1
cmVDdXJ2ZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVy
SW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lP
U3VyZmFjZURyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxh
eUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTA2ODQx
MTVlZTJlMDIwNTcwZWUwMDI1MjMwNmFkM2QwYTYyM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXll
ckNocm9taXVtLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmgiCisKKyNpbmNsdWRl
ICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKKyNpbmNsdWRlICJj
Yy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxIZWFkc1VwRGlzcGxh
eUxheWVyQ2hyb21pdW0+IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSgpKTsK
K30KKworSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hy
b21pdW0oKQorICAgIDogTGF5ZXJDaHJvbWl1bSgpCit7Cit9CisKK0hlYWRzVXBEaXNwbGF5TGF5
ZXJDaHJvbWl1bTo6fkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSgpCit7Cit9CisKK1Bhc3NP
d25QdHI8Q0NMYXllckltcGw+IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NM
YXllckltcGwoKQoreworICAgIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzID0g
bGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpOworICAgIGludCBtYXhUZXh0dXJlU2l6ZSA9IGxh
eWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXpl
OworICAgIE93blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzOworCisgICAgSW50U2l6ZSBib3Vu
ZHM7CisgICAgaWYgKHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSB8fCBzZXR0aW5ncy5z
aG93RGVidWdSZWN0cygpKSB7CisgICAgICAgIGJvdW5kcy5zZXRXaWR0aChzdGQ6Om1pbihtYXhU
ZXh0dXJlU2l6ZSwgbGF5ZXJUcmVlSG9zdCgpLT5kZXZpY2VWaWV3cG9ydFNpemUoKS53aWR0aCgp
KSk7CisgICAgICAgIGJvdW5kcy5zZXRIZWlnaHQoc3RkOjptaW4obWF4VGV4dHVyZVNpemUsIGxh
eWVyVHJlZUhvc3QoKS0+ZGV2aWNlVmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBib3VuZHMuc2V0V2lkdGgoNTEyKTsKKyAgICAgICAgYm91bmRzLnNldEhl
aWdodCgxMjgpOworICAgIH0KKyAgICBzZXRCb3VuZHMoYm91bmRzKTsKKworICAgIC8vIE9ubHkg
YWxsb2NhdGUgdGhlIGZvbnQgYXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFk
cy11cCBkaXNwbGF5LgorICAgIGlmIChzZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBzZXR0aW5n
cy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJI
ZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06OmluaXRpYWxpemVGb250QXRsYXMiKTsKKyAgICAg
ICAgZm9udEF0bGFzID0gQ0NGb250QXRsYXM6OmNyZWF0ZSgpOworICAgICAgICBmb250QXRsYXMt
PmluaXRpYWxpemUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ0NIZWFkc1VwRGlzcGxheUxheWVy
SW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCwgZm9udEF0bGFzLnJlbGVhc2UoKSk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRz
VXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNj
N2MwYTlkMDNlMDQ3N2EzNTIzZTFhYzFkNDBlMjc3Yzg0ZDMzZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5
TGF5ZXJDaHJvbWl1bS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgSGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtX2gKKyNkZWZpbmUgSGVhZHNVcERpc3BsYXlMYXllckNocm9t
aXVtX2gKKworI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJv
bWl1bSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SGVhZHNVcERpc3BsYXlMYXll
ckNocm9taXVtPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5IZWFkc1VwRGlzcGxheUxheWVyQ2hy
b21pdW0oKTsKKworICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+
IGNyZWF0ZUNDTGF5ZXJJbXBsKCkgT1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNp
dCBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oKTsKK307CisKK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggZTU2MzdhMGZjYTcwNWRiZDFkMWYw
NzNhYWQ4MDNhMjZmNzZiZDE4Ny4uZjE5OTVlOTc4MWY3NGQxODIzNzdlYjU2NDQ1MTE1NTVkNDY4
Y2Q4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zODUsNiAr
Mzg1LDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdGcmFtZShjb25zdCBDQ1Jl
bmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXMsIGNvbnMKICAgICAgICAgRmxvYXRSZWN0IHJvb3RT
Y2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UgPSByZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCkt
PmNvbXB1dGVSb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlKHJvb3RTY2lzc29yUmVjdCk7
CiAgICAgICAgIGRyYXdSZW5kZXJQYXNzKHJlbmRlclBhc3MsIHJvb3RTY2lzc29yUmVjdEluQ3Vy
cmVudFN1cmZhY2UpOwogICAgIH0KKworICAgIGZpbmlzaERyYXdpbmdGcmFtZSgpOwogfQogCiB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5k
ZXJQYXNzKiByb290UmVuZGVyUGFzcykKQEAgLTExNDAsMzEgKzExNDIsNiBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQoY29uc3QgQ0NJT1N1cmZhY2VEcmF3
UXVhZCogcXVhZCkKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEV4
dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCAwKSk7CiB9CiAKLXZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3BsYXkoY29uc3QgQ0NTY29wZWRUZXh0dXJl
KiBodWRUZXh0dXJlLCBjb25zdCBJbnRTaXplJiBodWRTaXplKQotewotICAgIEFTU0VSVChodWRU
ZXh0dXJlLT5pZCgpKTsKLQotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVf
TUlOVVNfU1JDX0FMUEhBKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKLSAgICB1c2VSZW5kZXJQYXNzKG1f
ZGVmYXVsdFJlbmRlclBhc3MpOwotCi0gICAgY29uc3QgSGVhZHNVcERpc3BsYXlQcm9ncmFtKiBw
cm9ncmFtID0gaGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7Ci0gICAgQVNTRVJUKHByb2dyYW0gJiYg
cHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIENDU2NvcGVk
TG9ja1Jlc291cmNlRm9yUmVhZCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgaHVkVGV4dHVyZS0+
aWQoKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0dXJlSWQoKSkpOwotICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7Ci0KLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtYXRyaXg7Ci0gICAgbWF0cml4LnRyYW5zbGF0ZTNkKGh1ZFNpemUud2lkdGgoKSAqIDAuNSwg
aHVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgMCk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZChtYXRyaXgs
IGh1ZFNpemUud2lkdGgoKSwgaHVkU2l6ZS5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAg
IDEsIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhM
b2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5hbHBoYUxvY2F0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAtMSk7Ci19Ci0KIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hEcmF3aW5nRnJhbWUoKQogewogICAgIG1fY3Vy
cmVudEZyYW1lYnVmZmVyTG9jay5jbGVhcigpOwpAQCAtMTU1OCwxNyArMTUzNSw2IEBAIGNvbnN0
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6U29saWRDb2xvclByb2dyYW0qIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6c29saWRDb2xvCiAgICAgcmV0dXJuIG1fc29saWRDb2xvclByb2dyYW0uZ2V0KCk7
CiB9CiAKLWNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6SGVhZHNVcERpc3BsYXlQcm9ncmFt
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpCi17Ci0gICAg
aWYgKCFtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbSkKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVBy
b2dyYW0gPSBhZG9wdFB0cihuZXcgSGVhZHNVcERpc3BsYXlQcm9ncmFtKG1fY29udGV4dCkpOwot
ICAgIGlmICghbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAg
ICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzVXBEaXNw
bGF5UHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwotICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3Jh
bS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLmdldCgpOwotfQotCiBjb25zdCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBhc3NQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnJlbmRlclBhc3NQcm9ncmFtKCkKIHsKICAgICBBU1NFUlQobV9yZW5kZXJQYXNzUHJvZ3Jh
bSk7CkBAIC0xNzc2LDkgKzE3NDIsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xl
YW51cFNoYXJlZE9iamVjdHMoKQogICAgIGlmIChtX3NvbGlkQ29sb3JQcm9ncmFtKQogICAgICAg
ICBtX3NvbGlkQ29sb3JQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dCk7CiAKLSAgICBpZiAobV9o
ZWFkc1VwRGlzcGxheVByb2dyYW0pCi0gICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5j
bGVhbnVwKG1fY29udGV4dCk7Ci0KICAgICBpZiAobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKQog
ICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fb2Zm
c2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
CmluZGV4IDE5OGFlZjlhMzQzOTE0MjJjZjRiNGZlMjY0MThkNzZkYzQ1MWEwNTMuLjkwYmQ3NzQz
YjlmMWQyZmE4YTYwMTY0ZGU2MTE4OThkM2FmOGJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oCkBAIC04MSw5ICs4MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiByb290U2Npc3NvclJlY3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwgdm9pZCBk
cmF3SGVhZHNVcERpc3BsYXkoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYg
aHVkU2l6ZSkgT1ZFUlJJREU7CiAKICAgICAvLyB3YWl0cyBmb3IgcmVuZGVyaW5nIHRvIGZpbmlz
aAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKSBPVkVSUklERTsKQEAgLTEyNiw2ICsxMjMsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBh
c3MqIHJvb3RSZW5kZXJQYXNzKTsKICAgICB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVu
ZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsKKyAgICB2
b2lkIGZpbmlzaERyYXdpbmdGcmFtZSgpOwogCiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0Ry
YXdRdWFkKik7CiAgICAgdm9pZCBkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJi
b2FyZERyYXdRdWFkKik7CkBAIC0yMTMsMTAgKzIxMSw2IEBAIHByaXZhdGU6CiAgICAgLy8gU3Bl
Y2lhbCBwdXJwb3NlIC8gZWZmZWN0cyBzaGFkZXJzLgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRp
bmc8VmVydGV4U2hhZGVyUG9zLCBGcmFnbWVudFNoYWRlckNvbG9yPiBTb2xpZENvbG9yUHJvZ3Jh
bTsKIAotICAgIC8vIERlYnVnZ2luZyBzaGFkZXJzLgotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRp
bmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE+
IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbTsKLQotCiAgICAgY29uc3QgVGlsZVByb2dyYW0qIHRpbGVQ
cm9ncmFtKCk7CiAgICAgY29uc3QgVGlsZVByb2dyYW1PcGFxdWUqIHRpbGVQcm9ncmFtT3BhcXVl
KCk7CiAgICAgY29uc3QgVGlsZVByb2dyYW1BQSogdGlsZVByb2dyYW1BQSgpOwpAQCAtMjM5LDgg
KzIzMyw2IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBTb2xpZENvbG9yUHJvZ3JhbSogc29saWRD
b2xvclByb2dyYW0oKTsKIAotICAgIGNvbnN0IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogaGVhZHNV
cERpc3BsYXlQcm9ncmFtKCk7Ci0KICAgICBPd25QdHI8VGlsZVByb2dyYW0+IG1fdGlsZVByb2dy
YW07CiAgICAgT3duUHRyPFRpbGVQcm9ncmFtT3BhcXVlPiBtX3RpbGVQcm9ncmFtT3BhcXVlOwog
ICAgIE93blB0cjxUaWxlUHJvZ3JhbUFBPiBtX3RpbGVQcm9ncmFtQUE7CkBAIC0yNjIsNyArMjU0
LDYgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8VmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbT4gbV92
aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtOwogCiAgICAgT3duUHRyPFNvbGlkQ29sb3JQcm9ncmFt
PiBtX3NvbGlkQ29sb3JQcm9ncmFtOwotICAgIE93blB0cjxIZWFkc1VwRGlzcGxheVByb2dyYW0+
IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtOwogCiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jl
c291cmNlUHJvdmlkZXI7CiAgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gbV90
ZXh0dXJlQ29waWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKaW5kZXggZGE5OTQy
NjYzNWQ1ZDU0YjFhZGE0MDBjZGUwNmEzZTA1NTNmYTAzMi4uYWRlMjVkYmI2NjNjZGE1ZDRjZmVk
Njg0NWU0MTg0NDA2MDI3MGMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCkBA
IC0yNDgsOCArMjQ4LDggQEAgc3RhdGljIGJvb2wgbGF5ZXJOZWVkc1RvUmVkcmF3T250b0l0c1Rh
cmdldFN1cmZhY2UoQ0NMYXllckltcGwqIGxheWVyKQogICAgIC8vIGZsYWcgc2hvdWxkIG5vdCBi
ZSB1c2VkIGhlcmUsIGJlY2F1c2UgdGhhdCBmbGFnIHJlcHJlc2VudHMgd2hldGhlciB0aGUKICAg
ICAvLyBsYXllcidzIHN1cmZhY2UgaGFzIGNoYW5nZWQuCiAgICAgaWYgKGxheWVyLT5yZW5kZXJT
dXJmYWNlKCkpCi0gICAgICAgIHJldHVybiBsYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsK
LSAgICByZXR1cm4gbGF5ZXItPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkgfHwgbGF5ZXItPmxheWVy
U3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgpOworICAgICAgICByZXR1cm4gbGF5ZXItPmxheWVyUHJv
cGVydHlDaGFuZ2VkKCkgfHwgbGF5ZXItPmxheWVySXNBbHdheXNEYW1hZ2VkKCk7CisgICAgcmV0
dXJuIGxheWVyLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpIHx8IGxheWVyLT5sYXllclN1cmZhY2VQ
cm9wZXJ0eUNoYW5nZWQoKSB8fCBsYXllci0+bGF5ZXJJc0Fsd2F5c0RhbWFnZWQoKTsKIH0KIAog
dm9pZCBDQ0RhbWFnZVRyYWNrZXI6OmV4dGVuZERhbWFnZUZvckxheWVyKENDTGF5ZXJJbXBsKiBs
YXllciwgRmxvYXRSZWN0JiB0YXJnZXREYW1hZ2VSZWN0KQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZv
aWQgQ0NEYW1hZ2VUcmFja2VyOjpleHRlbmREYW1hZ2VGb3JSZW5kZXJTdXJmYWNlKENDTGF5ZXJJ
bXBsKiBsYXllciwgRmxvYXRSZWN0CiAgICAgICAgIHNhdmVSZWN0Rm9yTmV4dEZyYW1lKHJlcGxp
Y2FNYXNrTGF5ZXItPmlkKCksIHJlcGxpY2FNYXNrTGF5ZXJSZWN0KTsKIAogICAgICAgICAvLyBJ
biB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYSBjaGFuZ2UgaW4gdGhlIHJlcGxpY2EgbWFz
ayBkYW1hZ2VzIHRoZSBlbnRpcmUgcmVwbGljYSByZWdpb24uCi0gICAgICAgIGlmIChyZXBsaWNh
SXNOZXcgfHwgcmVwbGljYU1hc2tMYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSB8fCAhcmVw
bGljYU1hc2tMYXllci0+dXBkYXRlUmVjdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKHJlcGxp
Y2FJc05ldyB8fCByZXBsaWNhTWFza0xheWVyLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpIHx8IHJl
cGxpY2FNYXNrTGF5ZXItPmxheWVySXNBbHdheXNEYW1hZ2VkKCkgfHwgIXJlcGxpY2FNYXNrTGF5
ZXItPnVwZGF0ZVJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0YXJnZXREYW1hZ2VSZWN0
LnVuaXRlSWZOb25aZXJvKHJlcGxpY2FNYXNrTGF5ZXJSZWN0KTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdS
ZWN0SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCmluZGV4IGM2MTMyMTc4ZTE2MzkzMzVkMDE0Yzg2
ZGViODY2YTYzYjViZDc2NzguLjIzZWU4MjZmZDM0YTdjOGFhYzFlOTIwYWJkMmNjNTk2MWY5Nzhj
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcApAQCAtMzgsMTEgKzM4
LDYgQEAgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpDQ0RlYnVnUmVjdEhpc3RvcnkoKQogewogfQogCi1i
b29sIENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdz
JiBzZXR0aW5ncykKLXsKLSAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0
dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFt
YWdlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwgc2V0dGluZ3Muc2hv
d1JlcGxpY2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dPY2NsdWRpbmdSZWN0czsK
LX0KLQogdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZy
YW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1ZGluZ1Nj
cmVlblNwYWNlUmVjdHMsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogewog
ICAgIC8vIEZvciBub3csIGNsZWFyIGFsbCByZWN0cyBmcm9tIHByZXZpb3VzIGZyYW1lcy4gSW4g
dGhlIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBzdG9yZQpAQCAtOTMsNyArODgsMTAgQEAgdm9pZCBD
Q0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVQcm9wZXJ0eUNoYW5nZWRSZWN0cyhjb25zdCBWZWN0b3I8
Q0NMYXllckltcGwqPiYgcmUKICAgICAgICAgICAgIGlmIChDQ0xheWVyVHJlZUhvc3RDb21tb246
OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0PENDTGF5ZXJJbXBsPihsYXllciwgcmVu
ZGVyU3VyZmFjZUxheWVyLT5pZCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgaWYgKGxheWVyLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKQorICAgICAgICAgICAg
aWYgKGxheWVyLT5sYXllcklzQWx3YXlzRGFtYWdlZCgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBpZiAobGF5ZXItPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkgfHwg
bGF5ZXItPmxheWVyU3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgpKQogICAgICAgICAgICAgICAgIG1f
ZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUHJvcGVydHlDaGFuZ2VkUmVjdFR5cGUsIEND
TWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsYXllci0+Ym91bmRzKCkpKSkpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaAppbmRleCA3ZmQwMGMz
ZjYyNjIxMWJkNTIzY2ZhYzRjOWQzZGUzNjJjMGQ4OWU3Li4yNDA1YWEwZTJhYmZlNDA2YTFjZGIy
YjIwZGQxNDMzYmRmMDBlZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaApA
QCAtNzksOCArNzksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NE
ZWJ1Z1JlY3RIaXN0b3J5KCkpOwogICAgIH0KIAotICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJik7Ci0KICAgICAvLyBOb3RlOiBTYXZpbmcgZGVidWcgcmVjdHMgbXVz
dCBoYXBwZW4gYmVmb3JlIGxheWVycycgY2hhbmdlIHRyYWNraW5nIGlzIHJlc2V0LgogICAgIHZv
aWQgc2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwg
Y29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0
IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cywgY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjZmNmVlMGUyM2U5NWEyY2U0ZWNlZGI0OTQwZmRi
YjYwMGRmODg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERp
c3BsYXkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LSNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCi0KLSNpbmNsdWRlICJFeHRlbnNpb25z
M0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAi
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1DYW52YXMuaCIKLSNp
bmNsdWRlICJjYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCIKLSNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0
ZUNvdW50ZXIuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKLQotQ0NIZWFkc1VwRGlzcGxheTo6fkNDSGVhZHNVcERpc3BsYXkoKQot
ewotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OnNldEZvbnRBdGxhcyhQYXNzT3duUHRyPEND
Rm9udEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAgbV9mb250QXRsYXMgPSBmb250QXRsYXM7Ci19
Ci0KLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6ZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRp
bmdzJiBzZXR0aW5ncykgY29uc3QKLXsKLSAgICByZXR1cm4gc2hvd1BsYXRmb3JtTGF5ZXJUcmVl
KHNldHRpbmdzKSB8fCBzZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBzaG93RGVidWdSZWN0cyhz
ZXR0aW5ncyk7Ci19Ci0KLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd1BsYXRmb3JtTGF5ZXJU
cmVlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAotewotICAgIHJl
dHVybiBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWU7Ci19Ci0KLWJvb2wgQ0NIZWFkc1Vw
RGlzcGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNldHRpbmdzLnNob3dQYWludFJlY3RzIHx8IHNldHRp
bmdzLnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8fCBzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFn
ZVJlY3RzIHx8IHNldHRpbmdzLnNob3dTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dS
ZXBsaWNhU2NyZWVuU3BhY2VSZWN0cyB8fCBzZXR0aW5ncy5zaG93T2NjbHVkaW5nUmVjdHM7Ci19
Ci0KLXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXll
clRyZWVIb3N0SW1wbCkKLXsKLSAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJU
cmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKLSAgICBpZiAoIW1faHVkVGV4dHVyZSkKLSAg
ICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJUcmVlSG9z
dEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7Ci0KLSAgICBjb25zdCBDQ0xheWVyVHJlZVNldHRp
bmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpOwotICAgIC8vIFVz
ZSBhIGZ1bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4KLSAgICBJbnRTaXpl
IGh1ZFNpemU7Ci0gICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykgfHwgc2hv
d0RlYnVnUmVjdHMoc2V0dGluZ3MpKSB7Ci0gICAgICAgIGh1ZFNpemUuc2V0V2lkdGgobWluKDIw
NDgsIGxheWVyVHJlZUhvc3RJbXBsLT5kZXZpY2VWaWV3cG9ydFNpemUoKS53aWR0aCgpKSk7Ci0g
ICAgICAgIGh1ZFNpemUuc2V0SGVpZ2h0KG1pbigyMDQ4LCBsYXllclRyZWVIb3N0SW1wbC0+ZGV2
aWNlVmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBodWRT
aXplLnNldFdpZHRoKDUxMik7Ci0gICAgICAgIGh1ZFNpemUuc2V0SGVpZ2h0KDEyOCk7Ci0gICAg
fQotCi0gICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkgJiYgIW1faHVkVGV4dHVyZS0+YWxsb2Nh
dGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIGh1ZFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIFJlbmRlciBwaXhlbHMgaW50byB0aGUgdGV4dHVyZS4KLSAgICBQbGF0Zm9ybUNh
bnZhcyBjYW52YXM7Ci0gICAgY2FudmFzLnJlc2l6ZShodWRTaXplKTsKLSAgICB7Ci0gICAgICAg
IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIHBhaW50ZXIoJmNhbnZhcywgUGxhdGZvcm1DYW52YXM6
OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQpOwotICAgICAgICBwYWludGVyLmNvbnRleHQoKS0+Y2xl
YXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCkp
KTsKLSAgICAgICAgZHJhd0h1ZENvbnRlbnRzKHBhaW50ZXIuY29udGV4dCgpLCBsYXllclRyZWVI
b3N0SW1wbCwgc2V0dGluZ3MsIGh1ZFNpemUpOwotICAgIH0KLQotICAgIC8vIFVwbG9hZCB0byBH
TC4KLSAgICB7Ci0gICAgICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2Fu
dmFzKTsKLSAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KDAsIDApLCBodWRTaXplKTsKLSAg
ICAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKS0+dXBsb2FkKG1faHVk
VGV4dHVyZS0+aWQoKSwgbG9ja2VyLnBpeGVscygpLCByZWN0LCByZWN0LCByZWN0KTsKLSAgICB9
Ci0KLSAgICBsYXllclJlbmRlcmVyLT5kcmF3SGVhZHNVcERpc3BsYXkobV9odWRUZXh0dXJlLmdl
dCgpLCBodWRTaXplKTsKLX0KLQotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3SHVkQ29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IElu
dFNpemUmIGh1ZFNpemUpCi17Ci0gICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5n
cykpIHsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDE5Miks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJl
Y3QoMCwgMCwgaHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhlaWdodCgpKSk7Ci0gICAgfQotCi0g
ICAgaW50IGZwc0NvdW50ZXJIZWlnaHQgPSA0MDsKLSAgICBpbnQgZnBzQ291bnRlclRvcCA9IDI7
Ci0gICAgaW50IHBsYXRmb3JtTGF5ZXJUcmVlVG9wOwotCi0gICAgaWYgKHNldHRpbmdzLnNob3dG
UFNDb3VudGVyKQotICAgICAgICBwbGF0Zm9ybUxheWVyVHJlZVRvcCA9IGZwc0NvdW50ZXJUb3Ag
KyBmcHNDb3VudGVySGVpZ2h0OwotICAgIGVsc2UKLSAgICAgICAgcGxhdGZvcm1MYXllclRyZWVU
b3AgPSAwOwotCi0gICAgaWYgKHNldHRpbmdzLnNob3dGUFNDb3VudGVyKQotICAgICAgICBkcmF3
RlBTQ291bnRlcihjb250ZXh0LCBsYXllclRyZWVIb3N0SW1wbC0+ZnBzQ291bnRlcigpLCBmcHND
b3VudGVyVG9wLCBmcHNDb3VudGVySGVpZ2h0KTsKLQotICAgIGlmIChzaG93UGxhdGZvcm1MYXll
clRyZWUoc2V0dGluZ3MpICYmIG1fZm9udEF0bGFzKSB7Ci0gICAgICAgIFN0cmluZyBsYXllclRy
ZWUgPSBsYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgIG1fZm9u
dEF0bGFzLT5kcmF3VGV4dChjb250ZXh0LCBsYXllclRyZWUsIEludFBvaW50KDIsIHBsYXRmb3Jt
TGF5ZXJUcmVlVG9wKSwgaHVkU2l6ZSk7Ci0gICAgfQotCi0gICAgaWYgKHNob3dEZWJ1Z1JlY3Rz
KHNldHRpbmdzKSkKLSAgICAgICAgZHJhd0RlYnVnUmVjdHMoY29udGV4dCwgbGF5ZXJUcmVlSG9z
dEltcGwtPmRlYnVnUmVjdEhpc3RvcnkoKSwgc2V0dGluZ3MpOwotfQotCi12b2lkIENDSGVhZHNV
cERpc3BsYXk6OmRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFt
ZVJhdGVDb3VudGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBpbnQgaGVpZ2h0KQotewotICAgIGZs
b2F0IHRleHRXaWR0aCA9IDE3MDsgLy8gc28gdGV4dCBmaXRzIG9uIGxpbnV4LgotICAgIGZsb2F0
IGdyYXBoV2lkdGggPSBmcHNDb3VudGVyLT50aW1lU3RhbXBIaXN0b3J5U2l6ZSgpOwotCi0gICAg
Ly8gRHJhdyB0aGUgRlBTIHRleHQuCi0gICAgZHJhd0ZQU0NvdW50ZXJUZXh0KGNvbnRleHQsIGZw
c0NvdW50ZXIsIHRvcCwgdGV4dFdpZHRoLCBoZWlnaHQpOwotCi0gICAgLy8gRHJhdyBGUFMgZ3Jh
cGguCi0gICAgY29uc3QgZG91YmxlIGxvRlBTID0gMDsKLSAgICBjb25zdCBkb3VibGUgaGlGUFMg
PSA4MDsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDE1NCwgMjA1LCA1MCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyICsgdGV4dFdpZHRoLCB0b3As
IGdyYXBoV2lkdGgsIGhlaWdodCAvIDIpKTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3IoMjU1LCAyNTAsIDIwNSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQtPmZp
bGxSZWN0KEZsb2F0UmVjdCgyICsgdGV4dFdpZHRoLCB0b3AgKyBoZWlnaHQgLyAyLCBncmFwaFdp
ZHRoLCBoZWlnaHQgLyAyKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1
LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotCi0gICAgaW50IGdyYXBo
TGVmdCA9IHN0YXRpY19jYXN0PGludD4odGV4dFdpZHRoICsgMyk7Ci0gICAgSW50UG9pbnQgcHJl
digtMSwgMCk7Ci0gICAgaW50IHggPSAwOwotICAgIGRvdWJsZSBoID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPihoZWlnaHQgLSAyKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZwc0NvdW50ZXItPnRp
bWVTdGFtcEhpc3RvcnlTaXplKCkgLSAxOyArK2kpIHsKLSAgICAgICAgaW50IGogPSBpICsgMTsK
LSAgICAgICAgZG91YmxlIGRlbHRhID0gZnBzQ291bnRlci0+dGltZVN0YW1wT2ZSZWNlbnRGcmFt
ZShqKSAtIGZwc0NvdW50ZXItPnRpbWVTdGFtcE9mUmVjZW50RnJhbWUoaSk7Ci0KLSAgICAgICAg
Ly8gU2tpcCBwbG90dGluZyB0aGlzIHBhcnRpY3VsYXIgaW5zdGFudGFuZW91cyBmcmFtZSByYXRl
IGlmIGl0IGlzIG5vdCBsaWtlbHkgdG8gaGF2ZSBiZWVuIHZhbGlkLgotICAgICAgICBpZiAoZnBz
Q291bnRlci0+aXNCYWRGcmFtZUludGVydmFsKGRlbHRhKSkgewotICAgICAgICAgICAgeCArPSAx
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBkb3VibGUgZnBz
ID0gMS4wIC8gZGVsdGE7Ci0KLSAgICAgICAgLy8gQ2xhbXAgdGhlIEZQUyB0byB0aGUgcmFuZ2Ug
d2Ugd2FudCB0byBwbG90IHZpc3VhbGx5LgotICAgICAgICBkb3VibGUgcCA9IDEgLSAoKGZwcyAt
IGxvRlBTKSAvIChoaUZQUyAtIGxvRlBTKSk7Ci0gICAgICAgIGlmIChwIDwgMCkKLSAgICAgICAg
ICAgIHAgPSAwOwotICAgICAgICBpZiAocCA+IDEpCi0gICAgICAgICAgICBwID0gMTsKLQotICAg
ICAgICAvLyBQbG90IHRoaXMgZGF0YSBwb2ludC4KLSAgICAgICAgSW50UG9pbnQgY3VyKGdyYXBo
TGVmdCArIHgsIDEgKyB0b3AgKyBwKmgpOwotICAgICAgICBpZiAocHJldi54KCkgIT0gLTEpCi0g
ICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZShwcmV2LCBjdXIpOwotICAgICAgICBwcmV2ID0g
Y3VyOwotICAgICAgICB4ICs9IDE7Ci0gICAgfQotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6
OmRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRnJhbWVSYXRl
Q291bnRlciogZnBzQ291bnRlciwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewot
ICAgIGRvdWJsZSBhdmVyYWdlRlBTLCBzdGREZXZpYXRpb247Ci0gICAgZnBzQ291bnRlci0+Z2V0
QXZlcmFnZUZQU0FuZFN0YW5kYXJkRGV2aWF0aW9uKGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbik7
Ci0KLSAgICAvLyBEcmF3IGJhY2tncm91bmQuCi0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENv
bG9yKDAsIDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQtPmZp
bGxSZWN0KEZsb2F0UmVjdCgyLCB0b3AsIHdpZHRoLCBoZWlnaHQpKTsKLQotICAgIC8vIERyYXcg
RlBTIHRleHQuCi0gICAgaWYgKG1fZm9udEF0bGFzKQotICAgICAgICBtX2ZvbnRBdGxhcy0+ZHJh
d1RleHQoY29udGV4dCwgU3RyaW5nOjpmb3JtYXQoIkZQUzogJTQuMWYgKy8tICUzLjFmIiwgYXZl
cmFnZUZQUywgc3RkRGV2aWF0aW9uKSwgSW50UG9pbnQoMTAsIGhlaWdodCAvIDMpLCBJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdS
ZWN0cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdS
ZWN0SGlzdG9yeSwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCi17Ci0gICAg
Y29uc3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cyA9IGRlYnVnUmVjdEhpc3Rvcnkt
PmRlYnVnUmVjdHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYnVnUmVjdHMuc2l6
ZSgpOyArK2kpIHsKLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFBhaW50UmVj
dFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFBhaW50IHJlY3RzIGluIHJlZAotICAgICAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwLCAyNTUpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0u
cmVjdCwgQ29sb3IoMjU1LCAwLCAwLCAzMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAg
ICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFByb3BlcnR5Q2hhbmdl
ZFJlY3RUeXBlKSB7Ci0gICAgICAgICAgICAvLyBQcm9wZXJ0eS1jaGFuZ2VkIHJlY3RzIGluIGJs
dWUKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSwg
MjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVj
dChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDAsIDAsIDI1NSwgMzApLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5y
ZWN0LCAyLjApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9
PSBTdXJmYWNlRGFtYWdlUmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFN1cmZhY2UgZGFtYWdl
IHJlY3RzIGluIHllbGxvdy1vcmFuZ2UKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKENvbG9yKDIwMCwgMTAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjAwLCAx
MDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5z
dHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUmVwbGljYVNjcmVlblNwYWNlUmVjdFR5cGUpIHsK
LSAgICAgICAgICAgIC8vIFNjcmVlbiBzcGFjZSByZWN0cyBpbiBncmVlbi4KLSAgICAgICAgICAg
IGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMjAwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNb
aV0ucmVjdCwgQ29sb3IoMTAwLCAyMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU2NyZWVuU3Bh
Y2VSZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIHB1cnBs
ZS4KLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMCwgMjAw
LCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxS
ZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAwLCAyMDAsIDEwKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNb
aV0ucmVjdCwgMi4wKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5
cGUgPT0gT2NjbHVkaW5nUmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIE9jY2x1ZGluZyByZWN0
cyBpbiBhIHJlZGRpc2ggY29sb3IuCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cihDb2xvcigyMDAsIDAsIDEwMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDIwMCwgMCwg
MTAwLCAxMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+c3Ry
b2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERp
c3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SGVhZHNVcERpc3BsYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY2YmY1MWUx
ZjRlZGM2YzYwYzIxNjMyMzA4Y2UyNjhmMWQzYWE2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENDSGVhZHNVcERpc3BsYXlfaAotI2RlZmluZSBD
Q0hlYWRzVXBEaXNwbGF5X2gKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQot
I2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCi0jaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NEZWJ1Z1JlY3RIaXN0b3J5Owot
Y2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOwotY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKLWNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFRleHVyZUFsbG9jYXRvcjsKLQotc3RydWN0IEND
TGF5ZXJUcmVlU2V0dGluZ3M7Ci0KLS8vIENsYXNzIHRoYXQgaGFuZGxlcyBkcmF3aW5nIG9mIGNv
bXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KLWNsYXNzIENDSGVhZHNVcERpc3BsYXkg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSGVhZHNVcERpc3BsYXkpOwotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDSGVhZHNVcERpc3BsYXk+IGNyZWF0ZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSGVhZHNVcERpc3BsYXkoKSk7Ci0gICAgfQot
Ci0gICAgfkNDSGVhZHNVcERpc3BsYXkoKTsKLQotICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NP
d25QdHI8Q0NGb250QXRsYXM+KTsKLQotICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJikgY29uc3Q7Ci0gICAgdm9pZCBkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqKTsK
LQotcHJpdmF0ZToKLSAgICBDQ0hlYWRzVXBEaXNwbGF5KCkgeyB9OwotCi0gICAgdm9pZCBkcmF3
SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NMYXllclRyZWVIb3N0SW1wbCosIGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBjb25zdCBJbnRTaXplJiBodWRTaXplKTsKLSAgICB2b2lk
IGRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGlu
dCB0b3AsIGludCBoZWlnaHQpOwotICAgIHZvaWQgZHJhd0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNz
Q29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCB3aWR0aCwgaW50IGhl
aWdodCk7Ci0gICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBDQ0RlYnVn
UmVjdEhpc3RvcnkqLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7Ci0KLSAgICBib29sIHNo
b3dQbGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7Ci0g
ICAgYm9vbCBzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7
Ci0KLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBtX2h1ZFRleHR1cmU7Ci0gICAgT3duUHRy
PENDRm9udEF0bGFzPiBtX2ZvbnRBdGxhczsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXlMYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkOGE4Y2I1YzZkMDI1MjQzY2Qz
N2M2MmRjNWFjNGVlM2NkZTIyOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNw
cApAQCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgImNjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkV4dGVuc2lv
bnMzRENocm9taXVtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNhbnZhcy5oIgor
I2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgorI2luY2x1ZGUgImNjL0NDRm9udEF0
bGFzLmgiCisjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmgiCisjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFk
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OkND
SGVhZHNVcERpc3BsYXlMYXllckltcGwoaW50IGlkLCBQYXNzT3duUHRyPENDRm9udEF0bGFzPiBm
b250QXRsYXMpCisgICAgOiBDQ0xheWVySW1wbChpZCksCisgICAgICBtX2ZvbnRBdGxhcyhmb250
QXRsYXMpCit7Cit9CisKK0NDSGVhZHNVcERpc3BsYXlMYXllckltcGw6On5DQ0hlYWRzVXBEaXNw
bGF5TGF5ZXJJbXBsKCkKK3sKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjp3
aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit7CisgICAgQ0NM
YXllckltcGw6OndpbGxEcmF3KHJlc291cmNlUHJvdmlkZXIpOworCisgICAgaWYgKCFtX2h1ZFRl
eHR1cmUpCisgICAgICAgIG1faHVkVGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKHJl
c291cmNlUHJvdmlkZXIpOworCisgICAgLy8gRklYTUU6IFVzZSBjb250ZW50Qm91bmRzKCkgZm9y
IHRoZSB0ZXh0dXJlLgorCisgICAgaWYgKG1faHVkVGV4dHVyZS0+c2l6ZSgpICE9IGJvdW5kcygp
KQorICAgICAgICBtX2h1ZFRleHR1cmUtPmZyZWUoKTsKKworICAgIGlmICghbV9odWRUZXh0dXJl
LT5pZCgpICYmICFtX2h1ZFRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBi
b3VuZHMoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4
dHVyZVVzYWdlQW55KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVuZGVyIHBpeGVscyBp
bnRvIHRoZSB0ZXh0dXJlLgorICAgIFBsYXRmb3JtQ2FudmFzIGNhbnZhczsKKyAgICBjYW52YXMu
cmVzaXplKGJvdW5kcygpKTsKKyAgICB7CisgICAgICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVy
IHBhaW50ZXIoJmNhbnZhcywgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQp
OworICAgICAgICBwYWludGVyLmNvbnRleHQoKS0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBi
b3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSkpOworICAgICAgICBkcmF3SHVkQ29u
dGVudHMocGFpbnRlci5jb250ZXh0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUGxhdGZv
cm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOworICAgICAgICBJbnRSZWN0IGxh
eWVyUmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7CisgICAgICAgIHJlc291cmNlUHJvdmlkZXIt
PnVwbG9hZChtX2h1ZFRleHR1cmUtPmlkKCksIGxvY2tlci5waXhlbHMoKSwgbGF5ZXJSZWN0LCBs
YXllclJlY3QsIGxheWVyUmVjdCk7CisgICAgfQorfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlM
YXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3sKKyAgICBpZiAoIW1faHVkVGV4
dHVyZS0+aWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpbnRmKCJsYXllclByb3BlcnR5
Q2hhbmdlZCAlZFxuIiwgbGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CisKKyAgICBJbnRSZWN0IHF1
YWRSZWN0KEludFBvaW50KCksIGJvdW5kcygpKTsKKyAgICBib29sIHByZW11bHRpcGxpZWRBbHBo
YSA9IHRydWU7CisgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCAxLCAxKTsKKyAgICBib29sIGZs
aXBwZWQgPSBmYWxzZTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9odWRUZXh0dXJlLT5pZCgp
LCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOworfQorCit2b2lkIENDSGVh
ZHNVcERpc3BsYXlMYXllckltcGw6OmRpZExvc2VDb250ZXh0KCkKK3sKKyAgICBtX2h1ZFRleHR1
cmUtPmxlYWsoKTsKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3SHVk
Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQoreworICAgIGNvbnN0IENDTGF5ZXJU
cmVlU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwoKS0+c2V0dGluZ3MoKTsK
KworICAgIGlmIChzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKKyAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDE5MiksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoMCwgMCwgYm91bmRzKCku
d2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCkpKTsKKyAgICB9CisKKyAgICBpbnQgZnBzQ291bnRl
ckhlaWdodCA9IDQwOworICAgIGludCBmcHNDb3VudGVyVG9wID0gMjsKKyAgICBpbnQgcGxhdGZv
cm1MYXllclRyZWVUb3A7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpCisgICAg
ICAgIHBsYXRmb3JtTGF5ZXJUcmVlVG9wID0gZnBzQ291bnRlclRvcCArIGZwc0NvdW50ZXJIZWln
aHQ7CisgICAgZWxzZQorICAgICAgICBwbGF0Zm9ybUxheWVyVHJlZVRvcCA9IDA7CisKKyAgICBp
ZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpCisgICAgICAgIGRyYXdGUFNDb3VudGVyKGNvbnRl
eHQsIGxheWVyVHJlZUhvc3RJbXBsKCktPmZwc0NvdW50ZXIoKSwgZnBzQ291bnRlclRvcCwgZnBz
Q291bnRlckhlaWdodCk7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVl
ICYmIG1fZm9udEF0bGFzKSB7CisgICAgICAgIFN0cmluZyBsYXllclRyZWUgPSBsYXllclRyZWVI
b3N0SW1wbCgpLT5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgbV9mb250QXRsYXMtPmRyYXdU
ZXh0KGNvbnRleHQsIGxheWVyVHJlZSwgSW50UG9pbnQoMiwgcGxhdGZvcm1MYXllclRyZWVUb3Ap
LCBib3VuZHMoKSk7CisgICAgfQorCisgICAgaWYgKHNldHRpbmdzLnNob3dEZWJ1Z1JlY3RzKCkp
CisgICAgICAgIGRyYXdEZWJ1Z1JlY3RzKGNvbnRleHQsIGxheWVyVHJlZUhvc3RJbXBsKCktPmRl
YnVnUmVjdEhpc3RvcnkoKSk7Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6
ZHJhd0ZQU0NvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0ZyYW1lUmF0ZUNvdW50
ZXIqIGZwc0NvdW50ZXIsIGludCB0b3AsIGludCBoZWlnaHQpCit7CisgICAgZmxvYXQgdGV4dFdp
ZHRoID0gMTcwOyAvLyBzbyB0ZXh0IGZpdHMgb24gbGludXguCisgICAgZmxvYXQgZ3JhcGhXaWR0
aCA9IGZwc0NvdW50ZXItPnRpbWVTdGFtcEhpc3RvcnlTaXplKCk7CisKKyAgICAvLyBEcmF3IHRo
ZSBGUFMgdGV4dC4KKyAgICBkcmF3RlBTQ291bnRlclRleHQoY29udGV4dCwgZnBzQ291bnRlciwg
dG9wLCB0ZXh0V2lkdGgsIGhlaWdodCk7CisKKyAgICAvLyBEcmF3IEZQUyBncmFwaC4KKyAgICBj
b25zdCBkb3VibGUgbG9GUFMgPSAwOworICAgIGNvbnN0IGRvdWJsZSBoaUZQUyA9IDgwOworICAg
IGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBjb250ZXh0LT5zZXRG
aWxsQ29sb3IoQ29sb3IoMTU0LCAyMDUsIDUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCwgZ3JhcGhXaWR0
aCwgaGVpZ2h0IC8gMikpOworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1
MCwgMjA1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxv
YXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCArIGhlaWdodCAvIDIsIGdyYXBoV2lkdGgsIGhlaWdo
dCAvIDIpKTsKKyAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDApLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1
LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICBpbnQgZ3JhcGhMZWZ0ID0gc3Rh
dGljX2Nhc3Q8aW50Pih0ZXh0V2lkdGggKyAzKTsKKyAgICBJbnRQb2ludCBwcmV2KC0xLCAwKTsK
KyAgICBpbnQgeCA9IDA7CisgICAgZG91YmxlIGggPSBzdGF0aWNfY2FzdDxkb3VibGU+KGhlaWdo
dCAtIDIpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnBzQ291bnRlci0+dGltZVN0YW1wSGlz
dG9yeVNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBpbnQgaiA9IGkgKyAxOworICAgICAgICBk
b3VibGUgZGVsdGEgPSBmcHNDb3VudGVyLT50aW1lU3RhbXBPZlJlY2VudEZyYW1lKGopIC0gZnBz
Q291bnRlci0+dGltZVN0YW1wT2ZSZWNlbnRGcmFtZShpKTsKKworICAgICAgICAvLyBTa2lwIHBs
b3R0aW5nIHRoaXMgcGFydGljdWxhciBpbnN0YW50YW5lb3VzIGZyYW1lIHJhdGUgaWYgaXQgaXMg
bm90IGxpa2VseSB0byBoYXZlIGJlZW4gdmFsaWQuCisgICAgICAgIGlmIChmcHNDb3VudGVyLT5p
c0JhZEZyYW1lSW50ZXJ2YWwoZGVsdGEpKSB7CisgICAgICAgICAgICB4ICs9IDE7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSBmcHMgPSAxLjAgLyBk
ZWx0YTsKKworICAgICAgICAvLyBDbGFtcCB0aGUgRlBTIHRvIHRoZSByYW5nZSB3ZSB3YW50IHRv
IHBsb3QgdmlzdWFsbHkuCisgICAgICAgIGRvdWJsZSBwID0gMSAtICgoZnBzIC0gbG9GUFMpIC8g
KGhpRlBTIC0gbG9GUFMpKTsKKyAgICAgICAgaWYgKHAgPCAwKQorICAgICAgICAgICAgcCA9IDA7
CisgICAgICAgIGlmIChwID4gMSkKKyAgICAgICAgICAgIHAgPSAxOworCisgICAgICAgIC8vIFBs
b3QgdGhpcyBkYXRhIHBvaW50LgorICAgICAgICBJbnRQb2ludCBjdXIoZ3JhcGhMZWZ0ICsgeCwg
MSArIHRvcCArIHAqaCk7CisgICAgICAgIGlmIChwcmV2LngoKSAhPSAtMSkKKyAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdMaW5lKHByZXYsIGN1cik7CisgICAgICAgIHByZXYgPSBjdXI7CisgICAg
ICAgIHggKz0gMTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6
ZHJhd0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFtZVJhdGVD
b3VudGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7Cisg
ICAgZG91YmxlIGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbjsKKyAgICBmcHNDb3VudGVyLT5nZXRB
dmVyYWdlRlBTQW5kU3RhbmRhcmREZXZpYXRpb24oYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9uKTsK
KworICAgIC8vIERyYXcgYmFja2dyb3VuZC4KKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3IoMCwgMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+Zmls
bFJlY3QoRmxvYXRSZWN0KDIsIHRvcCwgd2lkdGgsIGhlaWdodCkpOworCisgICAgLy8gRHJhdyBG
UFMgdGV4dC4KKyAgICBpZiAobV9mb250QXRsYXMpCisgICAgICAgIG1fZm9udEF0bGFzLT5kcmF3
VGV4dChjb250ZXh0LCBTdHJpbmc6OmZvcm1hdCgiRlBTOiAlNC4xZiArLy0gJTMuMWYiLCBhdmVy
YWdlRlBTLCBzdGREZXZpYXRpb24pLCBJbnRQb2ludCgxMCwgaGVpZ2h0IC8gMyksIEludFNpemUo
d2lkdGgsIGhlaWdodCkpOworfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRy
YXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5
KiBkZWJ1Z1JlY3RIaXN0b3J5KQoreworICAgIGNvbnN0IFZlY3RvcjxDQ0RlYnVnUmVjdD4mIGRl
YnVnUmVjdHMgPSBkZWJ1Z1JlY3RIaXN0b3J5LT5kZWJ1Z1JlY3RzKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBkZWJ1Z1JlY3RzLnNpemUoKTsgKytpKSB7CisKKyAgICAgICAgaWYgKGRl
YnVnUmVjdHNbaV0udHlwZSA9PSBQYWludFJlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBQYWlu
dCByZWN0cyBpbiByZWQKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
KDI1NSwgMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDI1NSwgMCwgMCwgMzApLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVi
dWdSZWN0c1tpXS5yZWN0LCAyLjApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlYnVnUmVj
dHNbaV0udHlwZSA9PSBQcm9wZXJ0eUNoYW5nZWRSZWN0VHlwZSkgeworICAgICAgICAgICAgLy8g
UHJvcGVydHktY2hhbmdlZCByZWN0cyBpbiBibHVlCisgICAgICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigw
LCAwLCAyNTUsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0
LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU3VyZmFjZURhbWFnZVJlY3RUeXBlKSB7Cisg
ICAgICAgICAgICAvLyBTdXJmYWNlIGRhbWFnZSByZWN0cyBpbiB5ZWxsb3ctb3JhbmdlCisgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDEwMCwgMCwgMjU1KSwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1
Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDIwMCwgMTAwLCAwLCAzMCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3Qs
IDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFJl
cGxpY2FTY3JlZW5TcGFjZVJlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBTY3JlZW4gc3BhY2Ug
cmVjdHMgaW4gZ3JlZW4uCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cigxMDAsIDIwMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDEwMCwgMjAwLCAwLCAz
MCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVj
dChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVi
dWdSZWN0c1tpXS50eXBlID09IFNjcmVlblNwYWNlUmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8v
IFNjcmVlbiBzcGFjZSByZWN0cyBpbiBwdXJwbGUuCisgICAgICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcihDb2xvcigxMDAsIDAsIDIwMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9y
KDEwMCwgMCwgMjAwLCAxMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29u
dGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IE9jY2x1ZGluZ1JlY3RUeXBlKSB7Cisg
ICAgICAgICAgICAvLyBPY2NsdWRpbmcgcmVjdHMgaW4gYSByZWRkaXNoIGNvbG9yLgorICAgICAg
ICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjAwLCAwLCAxMDAsIDI1NSksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdS
ZWN0c1tpXS5yZWN0LCBDb2xvcigyMDAsIDAsIDEwMCwgMTApLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAy
LjApOworICAgICAgICB9CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDEyZjFlMzc4ZTE1MTFiN2NmZWExNWFh
MmUzYzNlOTA0YTIzYmU0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaApAQCAt
MCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsX2gK
KyNkZWZpbmUgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbF9oCisKKyNpbmNsdWRlICJjYy9DQ0xh
eWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDU2NvcGVkVGV4dHVyZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIENDRGVidWdSZWN0SGlzdG9yeTsKK2NsYXNzIENDRm9udEF0bGFz
OworY2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitj
bGFzcyBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsPiBj
cmVhdGUoaW50IGlkLCBQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSGVhZHNVcERpc3BsYXlMYXllckltcGwoaWQs
IGZvbnRBdGxhcykpOworICAgIH0KKyAgICB2aXJ0dWFsIH5DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKKworICAgIHZpcnR1
YWwgYm9vbCBsYXllcklzQWx3YXlzRGFtYWdlZCgpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKGludCwg
UGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOworCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXll
clR5cGVBc1N0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJIZWFkc1VwRGlzcGxheUxh
eWVyIjsgfQorCisgICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0Kik7Cisg
ICAgdm9pZCBkcmF3RlBTQ291bnRlcihHcmFwaGljc0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50
ZXIqLCBpbnQgdG9wLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIGRyYXdGUFNDb3VudGVyVGV4dChH
cmFwaGljc0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBpbnQgdG9wLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpOworICAgIHZvaWQgZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0Kiwg
Q0NEZWJ1Z1JlY3RIaXN0b3J5Kik7CisKKyAgICBPd25QdHI8Q0NGb250QXRsYXM+IG1fZm9udEF0
bGFzOworICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IG1faHVkVGV4dHVyZTsKK307CisKK30K
KworI2VuZGlmIC8vIENDSGVhZHNVcERpc3BsYXlMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKaW5kZXggMjViZWRjMjIwN2U3MjkwY2ViN2FmOWI4NTVmZGIyYzU3NTc3ZjZjMi4uN2RmNjZj
ODhiMDcyYmI3MzI1MDFjNmZjNmNiYjBlNWFlZGRmNjc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
CkBAIC0yNjAsNiArMjYwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNldEFsbENoYW5nZVRy
YWNraW5nRm9yU3VidHJlZSgpOwogCisgICAgdmlydHVhbCBib29sIGxheWVySXNBbHdheXNEYW1h
Z2VkKCkgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRlbnRPcGFx
dWVSZWdpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGQy
YTc5ZWIxYmZiZTVmNjZkZTFmMjkwYmU1NzEyYmYxMGE2ZmExNzUuLmU3MmVhMGZkMjg0NTJiODYx
ZTFmYjM3NjJmYzQzNTdjN2Y1ZjgyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAK
KyNpbmNsdWRlICJIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXll
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5o
IgpAQCAtNjEsNyArNjIsMTAgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVyVHJlZUhv
c3RJbnN0YW5jZUV4aXN0cygpCiAKIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVy
VHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgT3duUHRyPENDTGF5ZXJUcmVlSG9z
dD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UHRyKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBz
ZXR0aW5ncykpOworICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbXlTZXR0aW5ncyA9IHNldHRpbmdz
OworICAgIG15U2V0dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzID0gdHJ1ZTsKKworICAg
IE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBhZG9wdFB0cihuZXcgQ0NM
YXllclRyZWVIb3N0KGNsaWVudCwgbXlTZXR0aW5ncykpOwogICAgIGlmICghbGF5ZXJUcmVlSG9z
dC0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbGF5
ZXJUcmVlSG9zdC5yZWxlYXNlKCk7CkBAIC03OCw2ICs4Miw3IEBAIENDTGF5ZXJUcmVlSG9zdDo6
Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ0xh
eWVyVHJlCiAgICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV9udW1UaW1lc1JlY3Jl
YXRlU2hvdWxkRmFpbCgwKQogICAgICwgbV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzKDApCisg
ICAgLCBtX2h1ZExheWVyKEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpCiAg
ICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQog
ICAgICwgbV92aXNpYmxlKHRydWUpCkBAIC0xMDYsMTQgKzExMSw2IEBAIGJvb2wgQ0NMYXllclRy
ZWVIb3N0Ojppbml0aWFsaXplKCkKICAgICBpZiAoIW1fcHJveHktPmluaXRpYWxpemVDb250ZXh0
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIE9ubHkgYWxsb2NhdGUgdGhlIGZv
bnQgYXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFkcy11cCBkaXNwbGF5Lgot
ICAgIGlmIChtX3NldHRpbmdzLnNob3dGUFNDb3VudGVyIHx8IG1fc2V0dGluZ3Muc2hvd1BsYXRm
b3JtTGF5ZXJUcmVlKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NMYXllclRyZWVI
b3N0Ojppbml0aWFsaXplOjppbml0aWFsaXplRm9udEF0bGFzIik7Ci0gICAgICAgIE93blB0cjxD
Q0ZvbnRBdGxhcz4gZm9udEF0bGFzKENDRm9udEF0bGFzOjpjcmVhdGUoKSk7Ci0gICAgICAgIGZv
bnRBdGxhcy0+aW5pdGlhbGl6ZSgpOwotICAgICAgICBtX3Byb3h5LT5zZXRGb250QXRsYXMoZm9u
dEF0bGFzLnJlbGVhc2UoKSk7Ci0gICAgfQotCiAgICAgbV9jb21wb3NpdG9ySWRlbnRpZmllciA9
IG1fcHJveHktPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0yNDIsNyArMjM5LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbklt
cGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAgICAgQVNTRVJUKEND
UHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAorICAgIGlmIChtX3NldHRpbmdzLnNob3dEZWJ1Z0lu
Zm8oKSkKKyAgICAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1faHVkTGF5ZXIpOwogICAgIGhv
c3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhy
b290TGF5ZXIoKSwgaG9zdEltcGwtPmRldGFjaExheWVyVHJlZSgpLCBob3N0SW1wbCkpOworICAg
IG1faHVkTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKIAogICAgIC8vIFdlIG1heSBoYXZlIGFk
ZGVkIGFuIGFuaW1hdGlvbiBkdXJpbmcgdGhlIHRyZWUgc3luYy4gVGhpcyB3aWxsIGNhdXNlIGJv
dGggbGF5ZXIgdHJlZSBob3N0cwogICAgIC8vIHRvIHZpc2l0IHRoZWlyIGNvbnRyb2xsZXJzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA4Mzk3ODU5MDUzZWNlNjIwMmQxZDE5MDlk
ZDk2ZTFiMDI3ZjE4YTIxLi44MTU1NWYxZTA3MjAxYmQyZTlhZDQ1YzNkMmYzOGMxNTExOGE0MGQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTEyLDYgKzExMiw5IEBAIHN0cnVj
dCBDQ0xheWVyVHJlZVNldHRpbmdzIHsKICAgICBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZTsKICAg
ICBJbnRTaXplIG1heFVudGlsZWRMYXllclNpemU7CiAgICAgSW50U2l6ZSBtaW5pbXVtT2NjbHVz
aW9uVHJhY2tpbmdTaXplOworCisgICAgYm9vbCBzaG93RGVidWdJbmZvKCkgY29uc3QgeyByZXR1
cm4gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIHx8IHNob3dGUFNDb3VudGVyIHx8IHNob3dEZWJ1Z1Jl
Y3RzKCk7IH0KKyAgICBib29sIHNob3dEZWJ1Z1JlY3RzKCkgY29uc3QgeyByZXR1cm4gc2hvd1Bh
aW50UmVjdHMgfHwgc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNob3dTdXJmYWNlRGFtYWdl
UmVjdHMgfHwgc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwgc2hvd1JlcGxpY2FTY3JlZW5TcGFjZVJl
Y3RzIHx8IHNob3dPY2NsdWRpbmdSZWN0czsgfQogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRp
b24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXll
clRyZWVIb3N0CkBAIC0zMTAsNiArMzEzLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1GYWls
ZWRSZWNyZWF0ZUF0dGVtcHRzOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExh
eWVyOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX2h1ZExheWVyOwogICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKICAg
ICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IG1fc3VyZmFjZU1lbW9yeVBsYWNlaG9sZGVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDBkOWQ3ZmY0
MWU1ZWI1MWZkNDhmMDJmZmZkMmQ1OWFmOWNjNDEwNzAuLjQ2OTY3MzczMTFjODAzYWVkMjhhMzU4
N2UwNWNlMDQ3MDY2NGFhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJj
ZS5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJh
dGVDb3VudGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheS5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgpAQCAtMTIzLDcgKzEyMiw2IEBA
IENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRy
ZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAsIG1f
Y29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQoZmFsc2UpCiAgICAgLCBt
X21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1pdCgpKQotICAgICwgbV9oZWFkc1VwRGlzcGxheShD
Q0hlYWRzVXBEaXNwbGF5OjpjcmVhdGUoKSkKICAgICAsIG1fcGFnZVNjYWxlKDEpCiAgICAgLCBt
X3BhZ2VTY2FsZURlbHRhKDEpCiAgICAgLCBtX3NlbnRQYWdlU2NhbGVEZWx0YSgxKQpAQCAtNTUy
LDE0ICs1NTAsMTEgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNvbnN0
IEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgbV9mcHNDb3VudGVyLT5tYXJrQmVnaW5uaW5nT2ZGcmFt
ZShjdXJyZW50VGltZSgpKTsKIAogICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd0ZyYW1lKGZyYW1l
LnJlbmRlclBhc3NlcywgbV9yb290U2Npc3NvclJlY3QpOwotICAgIGlmIChtX2hlYWRzVXBEaXNw
bGF5LT5lbmFibGVkKHNldHRpbmdzKCkpKQotICAgICAgICBtX2hlYWRzVXBEaXNwbGF5LT5kcmF3
KHRoaXMpOwotICAgIG1fbGF5ZXJSZW5kZXJlci0+ZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCk7
IGkrKykKICAgICAgICAgZnJhbWUucmVuZGVyUGFzc2VzW2ldLT50YXJnZXRTdXJmYWNlKCktPmRh
bWFnZVRyYWNrZXIoKS0+ZGlkRHJhd0RhbWFnZWRBcmVhKCk7CiAKLSAgICBpZiAobV9kZWJ1Z1Jl
Y3RIaXN0b3J5LT5lbmFibGVkKHNldHRpbmdzKCkpKQorICAgIGlmIChtX3NldHRpbmdzLnNob3dE
ZWJ1Z1JlY3RzKCkpCiAgICAgICAgIG1fZGVidWdSZWN0SGlzdG9yeS0+c2F2ZURlYnVnUmVjdHNG
b3JDdXJyZW50RnJhbWUobV9yb290TGF5ZXJJbXBsLmdldCgpLCAqZnJhbWUucmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgZnJhbWUub2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cywgc2V0dGluZ3MoKSk7
CiAKICAgICArK21fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7CkBAIC0xMTYwLDExICsxMTU1
LDYgQEAgU3RyaW5nIENDTGF5ZXJUcmVlSG9zdEltcGw6OmxheWVyVHJlZUFzVGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuIHRzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKQotewotICAg
IG1faGVhZHNVcERpc3BsYXktPnNldEZvbnRBdGxhcyhmb250QXRsYXMpOwotfQotCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmR1bXBSZW5kZXJTdXJmYWNlcyhUZXh0U3RyZWFtJiB0cywgaW50
IGluZGVudCwgY29uc3QgQ0NMYXllckltcGwqIGxheWVyKSBjb25zdAogewogICAgIGlmIChsYXll
ci0+cmVuZGVyU3VyZmFjZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmlu
ZGV4IGY5MzZlMzRkZDJjM2M0MzI5MmYyM2IyOGYwMTk5MzE2NWU1M2I0NTIuLmNiMDk2N2U0NGI5
YzZjMzc2MWMxZTllNTY2Zjg2NWUwOTM3NzhjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKQEAgLTM5LDkgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOwogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CiBjbGFz
cyBDQ0RlYnVnUmVjdEhpc3Rvcnk7Ci1jbGFzcyBDQ0ZvbnRBdGxhczsKIGNsYXNzIENDRnJhbWVS
YXRlQ291bnRlcjsKLWNsYXNzIENDSGVhZHNVcERpc3BsYXk7CiBjbGFzcyBDQ0xheWVySW1wbDsK
IGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjsKIGNsYXNzIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOwpAQCAtMTE4LDcgKzExNiw2IEBAIHB1YmxpYzoKICAgICBDQ0dyYXBo
aWNzQ29udGV4dCogY29udGV4dCgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4
dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+
KTsKIAogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgaW50IHNvdXJjZUFuaW1h
dGlvbkZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VBbmltYXRpb25GcmFtZU51
bWJlcjsgfQpAQCAtMjY2LDggKzI2Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbnRlbnRz
VGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0OwogICAgIHNpemVfdCBtX21lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzOwogCi0gICAgT3duUHRyPENDSGVhZHNVcERpc3BsYXk+IG1faGVh
ZHNVcERpc3BsYXk7Ci0KICAgICBmbG9hdCBtX3BhZ2VTY2FsZTsKICAgICBmbG9hdCBtX3BhZ2VT
Y2FsZURlbHRhOwogICAgIGZsb2F0IG1fc2VudFBhZ2VTY2FsZURlbHRhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmlu
ZGV4IGYxOTAzMmFiYmY2NjZhNDVmOWI0ZDhjMWUwYjliNGMxZDhkZTA2NWEuLjNiNmRjN2Y5YzQ0
ODZkNTZmZmQ0ZmI1YzQ4ZGRmNWZiNWZiN2FjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTMzLDcgKzMz
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ0ZvbnRBdGxhczsKIGNsYXNz
IENDVGhyZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3QgQ0NSZW5kZXJpbmdT
dGF0czsKQEAgLTEwNiw4ICsxMDUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWNx
dWlyZUxheWVyVGV4dHVyZXMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udEF0bGFz
KFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KSA9IDA7Ci0KICAgICAvLyBEZWJ1ZyBob29rcwogI2lm
bmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
ZXIuaAppbmRleCBkOTMxMDIyZGM1NTU3NWUxZThlZjZmOWI4MzMyMzNhNmY3MTRiZjMxLi45Mzk3
ODcxNzc1N2FlNDE1Y2E0MjIxMTAyYmE5Mjk5MzQ1MGJjY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5o
CkBAIC04MSw5ICs4MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJl
c291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmLCBjb25zdCBG
bG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hE
cmF3aW5nRnJhbWUoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkcmF3SGVhZHNVcERpc3BsYXko
Y29uc3QgQ0NTY29wZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkgPSAwOwogCiAg
ICAgLy8gd2FpdHMgZm9yIHJlbmRlcmluZyB0byBmaW5pc2gKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAw
MDJjN2E3YmZhZWE1MDVkNGQ0NGU3NWM2ZTM3YWVmNzAxZDZkYzQyLi4xNzIyZTNhY2M5ZmVkMzBh
MDA5N2ZhMmU0OGRlZTVjNTU2YWI5MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgog
I2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgog
I2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRy
ZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgpAQCAtMjY4LDEzICsy
NjcsNiBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogICAgIG1fbGF5ZXJUcmVl
SG9zdCA9IDA7CiB9CiAKLXZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0Rm9udEF0bGFzKFBh
c3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnNldEZvbnRBdGxhcyhmb250QXRsYXMpOwotfQotCiB2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQo
UGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzLCBkb3VibGUgd2FsbENs
b2NrVGltZSkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGU4YWE3NTUxNTM2NmRmNDYwMjg1MmVj
NTViYTVlM2NlNDg2NTYxMzUuLjZkY2UxYzM1ZTg0ZmU3ZDUwMjlhZTZiMTQ3YzBmNzQwNTdhODg5
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTYzLDcgKzYzLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhY3F1aXJlTGF5ZXJUZXh0dXJlcygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBmb3JjZVNlcmlhbGl6ZU9uU3dhcEJ1ZmZlcnMoKSBPVkVSUklERTsKIAogICAgIC8v
IENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKaW5kZXggOWI2ZGZlM2FjZTM5MDFlYzFlNjM1ZWRkZTU3MzU0OTY5ZjljOTQ0
Mi4uMzA4NWRmM2VlMDEzYmFmZGU5MjlkZDQ1N2M0NjNkYTlkYzI0OTBlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJUcmFjZUV2ZW50
LmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIgogI2luY2x1ZGUgImNj
L0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgImNj
L0NDRnJhbWVSYXRlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKQEAgLTg2NiwxOSArODY1LDYgQEAg
c2l6ZV90IENDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0CiAg
ICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVyRnJhbWU7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94
eTo6c2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9z
dFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXRGb250QXRs
YXNPbkltcGxUaHJlYWQsIGZvbnRBdGxhcykpOwotCi19Ci0KLXZvaWQgQ0NUaHJlYWRQcm94eTo6
c2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxh
cykKLXsKLSAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdElt
cGwtPnNldEZvbnRBdGxhcyhmb250QXRsYXMpOwotfQotCiB2b2lkIENDVGhyZWFkUHJveHk6OnJl
Y3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwg
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMpCiB7CiAgICAgVFJBQ0VfRVZF
TlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAwZjhhMzU0MDQwZTRmMDUwOGY4MTc0ZjlhNGM5
NWE0MWM0MTJhMjIxLi44NjBhMjAxNzM4NjY0YmU3OTRlYjc4OTg0Y2RlZmExY2I5NmY4ZTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC03MSw3ICs3MSw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRp
YWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhY3F1
aXJlTGF5ZXJUZXh0dXJlcygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGb250QXRs
YXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBm
b3JjZVNlcmlhbGl6ZU9uU3dhcEJ1ZmZlcnMoKSBPVkVSUklERTsKIAogICAgIC8vIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KQEAgLTE0NCw3ICsxNDMsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiwgQ0NHcmFwaGljc0NvbnRleHQqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcyopOwogICAgIHZvaWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0c09u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDUmVuZGVyaW5nU3RhdHMqKTsKICAgICBD
Q1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRT
d2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKLSAgICB2b2lkIHNldEZvbnRBdGxhc09uSW1w
bFRocmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAgICAgdm9pZCBmb3JjZVNlcmlhbGl6
ZU9uU3dhcEJ1ZmZlcnNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lk
IHNldE5lZWRzRm9yY2VkQ29tbWl0T25JbXBsVGhyZWFkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3Bw
CmluZGV4IDFiNmI4MDI4YjRmZjU0ZDU5NjQ5MmE4YTdhM2RhZTNmYjgwOTMxZGUuLmYxZDhkYzFk
MDNiZmU4MjAwZDVhYzNkMTUzMjkyYTQ2ODZlNTA5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApA
QCAtNDE5LDcgKzQxOSw2IEBAIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIG9wYXF1
ZUJhY2tncm91bmQpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRp
YWxpemUoKSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uZHJhd0ZyYW1lKG1vY2tDbGll
bnQucmVuZGVyUGFzc2VzKCksIEZsb2F0UmVjdCgpKTsKLSAgICBsYXllclJlbmRlcmVyQ2hyb21p
dW0uZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAKICAgICAvLyBPbiBERUJVRyBidWlsZHMsIHJlbmRl
ciBwYXNzZXMgd2l0aCBvcGFxdWUgYmFja2dyb3VuZCBjbGVhciB0byBibHVlIHRvCiAgICAgLy8g
ZWFzaWx5IHNlZSByZWdpb25zIHRoYXQgd2VyZSBub3QgZHJhd24gb24gdGhlIHNjcmVlbi4KQEAg
LTQ0Myw3ICs0NDIsNiBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCB0cmFuc3Bh
cmVudEJhY2tncm91bmQpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVtLmlu
aXRpYWxpemUoKSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uZHJhd0ZyYW1lKG1vY2tD
bGllbnQucmVuZGVyUGFzc2VzKCksIEZsb2F0UmVjdCgpKTsKLSAgICBsYXllclJlbmRlcmVyQ2hy
b21pdW0uZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgY29udGV4dC0+
Y2xlYXJDb3VudCgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154195</attachid>
            <date>2012-07-24 17:41:10 -0700</date>
            <delta_ts>2012-07-24 18:05:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92182-20120724204100.patch</filename>
            <type>text/plain</type>
            <size>63154</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2OTIwM2M2OTE0OWY3
NmE0OTdlNjlhOTJiNGNlMmEyZjE4ZWFiNS4uM2E4YWYwZGRhMjI2ZGU1MmI5NmRhNzUzZDU2YTVm
MzZhNTM3Y2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTA3LTI0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVHVy
biB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0IGNhbiBiZSBkcmF3biBhcyBh
IFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJ5IGNoYW5naW5nIHRoZSBIVUQgaW50byBhIHF1YWQsIHdlIGFyZSBhYmxlIHRv
IGNyZWF0ZSBhIEhVRCBhbmQgcGFzcworICAgICAgICBpdCB0byB0aGUgaG9zdCBjb21wb3NpdG9y
LCBhbGxvd2luZyB0aGUgSFVEIHRvIGJlIHVzZWQgZm9yIHJlbmRlcmVycworICAgICAgICB1bmRl
ciBVYmVyY29tcG9zaXRvci4KKworICAgICAgICBUaGlzIGFsc28gcmVtb3ZlcyB0aGUgc3BlY2lh
bCBkcmF3aW5nIGNvZGUgZm9yIHRoZSBIVUQgZnJvbQorICAgICAgICBMYXllclJlbmRlcmVyQ2hy
b21pdW0sIGFsbG93aW5nIHVzIHRvIG1vdmUgZmluaXNoRHJhd2luZ0ZyYW1lCisgICAgICAgIGlu
dG8gTGF5ZXJSZW5kZXJlckNocm9taXVtIGFzIGEgcHJpdmF0ZSBtZXRob2QgYW5kIHJlbW92ZSBp
dAorICAgICAgICBmcm9tIHRoZSBDQ1JlbmRlcmVyIGludGVyZmFjZS4KKworICAgICAgICBGaW5h
bGx5LCB3ZSBjYW4gcmVtb3ZlIHRoZSBDQ0ZvbnRBdGxhcyB0cmFuc3BvcnQgY29kZSBmcm9tIEND
UHJveHkKKyAgICAgICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXMgdGhlIGF0bGFzIGNhbiBi
ZSBzeW5jZWQgdG8gaW1wbCB0aHJlYWQKKyAgICAgICAgdGhyb3VnaCB0aGUgdXN1YWwgbGF5ZXIg
Y29tbWl0IG1lY2hhbmlzbS4KKworICAgICAgICBUaGUgZGVidWcgSFVEIGlzIG5vdCBjb3ZlcmVk
IGJ5IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIZWFkc1VwRGlzcGxheUxh
eWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIZWFkc1VwRGlzcGxheUxh
eWVyQ2hyb21pdW06OkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06On5IZWFkc1VwRGlzcGxheUxheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjpj
cmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5TGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpDQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlM
YXllckltcGw6On5DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRpZExvc2VDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdIdWRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBTQ291bnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBT
Q291bnRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bDo6ZHJhd0RlYnVnUmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5ZXJJc0Fsd2F5c0RhbWFnZWQpOgorICAgICAg
ICBUaGlzIGZsYWcgaXMgdXNlZCB0byBtYXJrIHRoZSBIVUQgYXMgYWx3YXlzIGRhbWFnZWQsIHNv
IHRoYXQgaXQgaXMKKyAgICAgICAgY29udGludWFsbHkgZHJhd24gb24gdGhlIGltcGwgdGhyZWFk
LiBJdCBpcyBhbHNvIHVzZWQgYXMgYSBoaW50IGJ5CisgICAgICAgIHRoZSBDQ0RlYnVnUmVjdEhp
c3RvcnkgY2xhc3MgdG8gbm90IGluY2x1ZGUgdGhlIGxheWVyIGluIHRoZSBkaXNwbGF5CisgICAg
ICAgIG9mIGRhbWFnZSwgc2luY2UgYWx3YXlzIGRhbWFnZWQgaXMgbm90IGludGVyZXN0aW5nIGRh
bWFnZS4KKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29t
bWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5nczo6c2hvd0RlYnVnSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzOjpzaG93RGVidWdSZWN0cyk6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoKKyAgICAgICAg
KENDUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5
KToKKwogMjAxMi0wNy0yMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQSBGb2N1c1Njb3BlIGZvciBhIGRpc3RyaWJ1dGVkIG5vZGUgc2hvdWxkIG5vdCBiZSBp
dHMgVHJlZVNjb3BlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxMmJmOGE0ZGE4NWRm
ZjljZThkZTE3YTVlYjQ0MDFiYzBhZTQ1ODk3Li4zOGY4ZDY0YjYzZmI2ZjQwYmI1MzdiNTUzYmFh
ZGI5OTc2YTA2MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTA3LTI0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gVHVybiB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0
IGNhbiBiZSBkcmF3biBhcyBhIFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVt
VGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxMi0wNy0yMyAgU2hhd24gU2luZ2ggIDxz
aGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZpeCB1bml0IHRl
c3RzIGluIGRlYnVnIG1vZGUgYWZ0ZXIgcjEyMzM3NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGJlZGQ0
NDA0MGU4ZjZlMmFjZDIxYzU5MjBhZjFjOTgzYzZhMjFlYjQuLjkzNWU5M2ZjOWNiOGYzYTRmYzRk
YTYxODE1Yjc4ZDA2N2FiYTA5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgyNDgsNiArODI0OCw4
IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21p
dW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1Vw
RGlzcGxheUxheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0lPU3VyZmFjZUxheWVyQ2hyb21pdW0uaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCcs
CkBAIC04MzEzLDggKzgzMTUsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNl
TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTA2ODQxMTVlZTJlMDIwNTcwZWUwMDI1
MjMwNmFkM2QwYTYyM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmNwcApAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSGVh
ZHNVcERpc3BsYXlMYXllckNocm9taXVtLmgiCisKKyNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisj
aW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKKyNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0+IEhl
YWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSgpKTsKK30KKworSGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oKQorICAgIDogTGF5
ZXJDaHJvbWl1bSgpCit7Cit9CisKK0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6fkhlYWRz
VXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSgpCit7Cit9CisKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+
IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQoreworICAg
IGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdCgpLT5z
ZXR0aW5ncygpOworICAgIGludCBtYXhUZXh0dXJlU2l6ZSA9IGxheWVyVHJlZUhvc3QoKS0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplOworICAgIE93blB0cjxDQ0Zv
bnRBdGxhcz4gZm9udEF0bGFzOworCisgICAgSW50U2l6ZSBib3VuZHM7CisgICAgaWYgKHNldHRp
bmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSB8fCBzZXR0aW5ncy5zaG93RGVidWdSZWN0cygpKSB7
CisgICAgICAgIGJvdW5kcy5zZXRXaWR0aChzdGQ6Om1pbihtYXhUZXh0dXJlU2l6ZSwgbGF5ZXJU
cmVlSG9zdCgpLT5kZXZpY2VWaWV3cG9ydFNpemUoKS53aWR0aCgpKSk7CisgICAgICAgIGJvdW5k
cy5zZXRIZWlnaHQoc3RkOjptaW4obWF4VGV4dHVyZVNpemUsIGxheWVyVHJlZUhvc3QoKS0+ZGV2
aWNlVmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBib3Vu
ZHMuc2V0V2lkdGgoNTEyKTsKKyAgICAgICAgYm91bmRzLnNldEhlaWdodCgxMjgpOworICAgIH0K
KyAgICBzZXRCb3VuZHMoYm91bmRzKTsKKworICAgIC8vIE9ubHkgYWxsb2NhdGUgdGhlIGZvbnQg
YXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFkcy11cCBkaXNwbGF5LgorICAg
IGlmIChzZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXll
clRyZWUpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJIZWFkc1VwRGlzcGxheUxheWVy
Q2hyb21pdW06OmluaXRpYWxpemVGb250QXRsYXMiKTsKKyAgICAgICAgZm9udEF0bGFzID0gQ0NG
b250QXRsYXM6OmNyZWF0ZSgpOworICAgICAgICBmb250QXRsYXMtPmluaXRpYWxpemUoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6Y3JlYXRlKG1fbGF5
ZXJJZCwgZm9udEF0bGFzLnJlbGVhc2UoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNjN2MwYTlkMDNlMDQ3N2EzNTIz
ZTFhYzFkNDBlMjc3Yzg0ZDMzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgSGVhZHNVcERpc3BsYXlMYXllckNocm9t
aXVtX2gKKyNkZWZpbmUgSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtX2gKKworI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIZWFkc1Vw
RGlzcGxheUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtPiBjcmVhdGUo
KTsKKyAgICB2aXJ0dWFsIH5IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oKTsKKworICAgIHZp
cnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBs
KCkgT1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBIZWFkc1VwRGlzcGxheUxh
eWVyQ2hyb21pdW0oKTsKK307CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKaW5kZXggZTU2MzdhMGZjYTcwNWRiZDFkMWYwNzNhYWQ4MDNhMjZmNzZiZDE4
Ny4uZjE5OTVlOTc4MWY3NGQxODIzNzdlYjU2NDQ1MTE1NTVkNDY4Y2Q4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zODUsNiArMzg1LDggQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5k
ZXJQYXNzZXMsIGNvbnMKICAgICAgICAgRmxvYXRSZWN0IHJvb3RTY2lzc29yUmVjdEluQ3VycmVu
dFN1cmZhY2UgPSByZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCktPmNvbXB1dGVSb290U2Npc3Nv
clJlY3RJbkN1cnJlbnRTdXJmYWNlKHJvb3RTY2lzc29yUmVjdCk7CiAgICAgICAgIGRyYXdSZW5k
ZXJQYXNzKHJlbmRlclBhc3MsIHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UpOwogICAg
IH0KKworICAgIGZpbmlzaERyYXdpbmdGcmFtZSgpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6YmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVy
UGFzcykKQEAgLTExNDAsMzEgKzExNDIsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0lPU3VyZmFjZVF1YWQoY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogcXVhZCkKICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVYVFVS
RV9SRUNUQU5HTEVfQVJCLCAwKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3SGVhZHNVcERpc3BsYXkoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiBodWRUZXh0dXJlLCBjb25z
dCBJbnRTaXplJiBodWRTaXplKQotewotICAgIEFTU0VSVChodWRUZXh0dXJlLT5pZCgpKTsKLQot
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpC
TEVORCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNz
Q29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7
Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNE
OjpTQ0lTU09SX1RFU1QpKTsKLSAgICB1c2VSZW5kZXJQYXNzKG1fZGVmYXVsdFJlbmRlclBhc3Mp
OwotCi0gICAgY29uc3QgSGVhZHNVcERpc3BsYXlQcm9ncmFtKiBwcm9ncmFtID0gaGVhZHNVcERp
c3BsYXlQcm9ncmFtKCk7Ci0gICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6
ZWQoKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVh
ZCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgaHVkVGV4dHVyZS0+aWQoKSk7Ci0gICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbG9jay50ZXh0dXJlSWQoKSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlv
bigpLCAwKSk7Ci0KLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7Ci0gICAgbWF0
cml4LnRyYW5zbGF0ZTNkKGh1ZFNpemUud2lkdGgoKSAqIDAuNSwgaHVkU2l6ZS5oZWlnaHQoKSAq
IDAuNSwgMCk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZChtYXRyaXgsIGh1ZFNpemUud2lkdGgoKSwg
aHVkU2l6ZS5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgIDEsIHNoYXJlZEdlb21ldHJ5
UXVhZCgpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAotICAgICAg
ICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCks
Ci0gICAgICAgICAgICAgICAgICAgICAtMSk7Ci19Ci0KIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpmaW5pc2hEcmF3aW5nRnJhbWUoKQogewogICAgIG1fY3VycmVudEZyYW1lYnVmZmVyTG9j
ay5jbGVhcigpOwpAQCAtMTU1OCwxNyArMTUzNSw2IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6U29saWRDb2xvclByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c29saWRDb2xv
CiAgICAgcmV0dXJuIG1fc29saWRDb2xvclByb2dyYW0uZ2V0KCk7CiB9CiAKLWNvbnN0IExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6SGVhZHNVcERpc3BsYXlQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpCi17Ci0gICAgaWYgKCFtX2hlYWRzVXBEaXNw
bGF5UHJvZ3JhbSkKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0gPSBhZG9wdFB0cihu
ZXcgSGVhZHNVcERpc3BsYXlQcm9ncmFtKG1fY29udGV4dCkpOwotICAgIGlmICghbV9oZWFkc1Vw
RGlzcGxheVByb2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQwKCJj
YyIsICJMYXllclJlbmRlcmVyQ2hyb21pdW06OmhlYWRzVXBEaXNwbGF5UHJvZ3JhbTo6aW5pdGlh
bGl6ZSIpOwotICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2Nv
bnRleHQsIG1faXNVc2luZ0JpbmRVbmlmb3JtKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1faGVhZHNV
cERpc3BsYXlQcm9ncmFtLmdldCgpOwotfQotCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OlJlbmRlclBhc3NQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9n
cmFtKCkKIHsKICAgICBBU1NFUlQobV9yZW5kZXJQYXNzUHJvZ3JhbSk7CkBAIC0xNzc2LDkgKzE3
NDIsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMo
KQogICAgIGlmIChtX3NvbGlkQ29sb3JQcm9ncmFtKQogICAgICAgICBtX3NvbGlkQ29sb3JQcm9n
cmFtLT5jbGVhbnVwKG1fY29udGV4dCk7CiAKLSAgICBpZiAobV9oZWFkc1VwRGlzcGxheVByb2dy
YW0pCi0gICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dCk7
Ci0KICAgICBpZiAobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKQogICAgICAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJ
ZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDE5OGFlZjlhMzQz
OTE0MjJjZjRiNGZlMjY0MThkNzZkYzQ1MWEwNTMuLjkwYmQ3NzQzYjlmMWQyZmE4YTYwMTY0ZGU2
MTE4OThkM2FmOGJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC04
MSw5ICs4MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNl
c0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2
b2lkIGRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiwgY29uc3QgRmxvYXRSZWN0JiBy
b290U2Npc3NvclJlY3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5n
RnJhbWUoKSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwgdm9pZCBkcmF3SGVhZHNVcERpc3BsYXko
Y29uc3QgQ0NTY29wZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkgT1ZFUlJJREU7
CiAKICAgICAvLyB3YWl0cyBmb3IgcmVuZGVyaW5nIHRvIGZpbmlzaAogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2goKSBPVkVSUklERTsKQEAgLTEyNiw2ICsxMjMsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBiZWdpbkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNz
KTsKICAgICB2b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZs
b2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsKKyAgICB2b2lkIGZpbmlzaERyYXdpbmdG
cmFtZSgpOwogCiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKik7CiAgICAgdm9p
ZCBkcmF3Q2hlY2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKik7CkBA
IC0yMTMsMTAgKzIxMSw2IEBAIHByaXZhdGU6CiAgICAgLy8gU3BlY2lhbCBwdXJwb3NlIC8gZWZm
ZWN0cyBzaGFkZXJzLgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9z
LCBGcmFnbWVudFNoYWRlckNvbG9yPiBTb2xpZENvbG9yUHJvZ3JhbTsKIAotICAgIC8vIERlYnVn
Z2luZyBzaGFkZXJzLgotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9z
VGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE+IEhlYWRzVXBEaXNwbGF5UHJv
Z3JhbTsKLQotCiAgICAgY29uc3QgVGlsZVByb2dyYW0qIHRpbGVQcm9ncmFtKCk7CiAgICAgY29u
c3QgVGlsZVByb2dyYW1PcGFxdWUqIHRpbGVQcm9ncmFtT3BhcXVlKCk7CiAgICAgY29uc3QgVGls
ZVByb2dyYW1BQSogdGlsZVByb2dyYW1BQSgpOwpAQCAtMjM5LDggKzIzMyw2IEBAIHByaXZhdGU6
CiAKICAgICBjb25zdCBTb2xpZENvbG9yUHJvZ3JhbSogc29saWRDb2xvclByb2dyYW0oKTsKIAot
ICAgIGNvbnN0IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogaGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7
Ci0KICAgICBPd25QdHI8VGlsZVByb2dyYW0+IG1fdGlsZVByb2dyYW07CiAgICAgT3duUHRyPFRp
bGVQcm9ncmFtT3BhcXVlPiBtX3RpbGVQcm9ncmFtT3BhcXVlOwogICAgIE93blB0cjxUaWxlUHJv
Z3JhbUFBPiBtX3RpbGVQcm9ncmFtQUE7CkBAIC0yNjIsNyArMjU0LDYgQEAgcHJpdmF0ZToKICAg
ICBPd25QdHI8VmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbT4gbV92aWRlb1N0cmVhbVRleHR1cmVQ
cm9ncmFtOwogCiAgICAgT3duUHRyPFNvbGlkQ29sb3JQcm9ncmFtPiBtX3NvbGlkQ29sb3JQcm9n
cmFtOwotICAgIE93blB0cjxIZWFkc1VwRGlzcGxheVByb2dyYW0+IG1faGVhZHNVcERpc3BsYXlQ
cm9ncmFtOwogCiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CiAg
ICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gbV90ZXh0dXJlQ29waWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
ZWJ1Z1JlY3RIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKaW5kZXggYzYxMzIxNzhlMTYzOTMzNWQw
MTRjODZkZWI4NjZhNjNiNWJkNzY3OC4uMjNlZTgyNmZkMzRhN2M4YWFjMWU5MjBhYmQyY2M1OTYx
Zjk3OGMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCkBAIC0zOCwx
MSArMzgsNiBAQCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OkNDRGVidWdSZWN0SGlzdG9yeSgpCiB7CiB9
CiAKLWJvb2wgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzKQotewotICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8
fCBzZXR0aW5ncy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZh
Y2VEYW1hZ2VSZWN0cyB8fCBzZXR0aW5ncy5zaG93U2NyZWVuU3BhY2VSZWN0cyB8fCBzZXR0aW5n
cy5zaG93UmVwbGljYVNjcmVlblNwYWNlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd09jY2x1ZGluZ1Jl
Y3RzOwotfQotCiB2b2lkIENDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZURlYnVnUmVjdHNGb3JDdXJy
ZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBs
Kj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVk
aW5nU2NyZWVuU3BhY2VSZWN0cywgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3Mp
CiB7CiAgICAgLy8gRm9yIG5vdywgY2xlYXIgYWxsIHJlY3RzIGZyb20gcHJldmlvdXMgZnJhbWVz
LiBJbiB0aGUgZnV0dXJlIHdlIG1heSB3YW50IHRvIHN0b3JlCkBAIC05Myw3ICs4OCwxMCBAQCB2
b2lkIENDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKGNvbnN0IFZl
Y3RvcjxDQ0xheWVySW1wbCo+JiByZQogICAgICAgICAgICAgaWYgKENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6cmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQ8Q0NMYXllckltcGw+KGxheWVy
LCByZW5kZXJTdXJmYWNlTGF5ZXItPmlkKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBpZiAobGF5ZXItPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpCisgICAgICAg
ICAgICBpZiAobGF5ZXItPmxheWVySXNBbHdheXNEYW1hZ2VkKCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGlmIChsYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
KSB8fCBsYXllci0+bGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2VkKCkpCiAgICAgICAgICAgICAg
ICAgbV9kZWJ1Z1JlY3RzLmFwcGVuZChDQ0RlYnVnUmVjdChQcm9wZXJ0eUNoYW5nZWRSZWN0VHlw
ZSwgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3Jt
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGxheWVyLT5ib3VuZHMoKSkpKSk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCmluZGV4IDdm
ZDAwYzNmNjI2MjExYmQ1MjNjZmFjNGM5ZDNkZTM2MmMwZDg5ZTcuLjI0MDVhYTBlMmFiZmU0MDZh
MWNkYjJiMjBkZDE0MzNiZGYwMGVlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9y
eS5oCkBAIC03OSw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDQ0RlYnVnUmVjdEhpc3RvcnkoKSk7CiAgICAgfQogCi0gICAgYm9vbCBlbmFibGVkKGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKLQogICAgIC8vIE5vdGU6IFNhdmluZyBkZWJ1ZyByZWN0
cyBtdXN0IGhhcHBlbiBiZWZvcmUgbGF5ZXJzJyBjaGFuZ2UgdHJhY2tpbmcgaXMgcmVzZXQuCiAg
ICAgdm9pZCBzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExh
eWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzLCBjb25zdCBD
Q0xheWVyVHJlZVNldHRpbmdzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNmY2ZWUwZTIzZTk1YTJjZTRlY2VkYjQ5
NDBmZGJiNjAwZGY4ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXkuaCIKLQotI2luY2x1ZGUgIkV4dGVu
c2lvbnMzRENocm9taXVtLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNs
dWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNhbnZhcy5o
IgotI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgotI2luY2x1ZGUgImNjL0NDRnJh
bWVSYXRlQ291bnRlci5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1DQ0hlYWRzVXBEaXNwbGF5Ojp+Q0NIZWFkc1VwRGlzcGxh
eSgpCi17Ci19Ci0KLXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6c2V0Rm9udEF0bGFzKFBhc3NPd25Q
dHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykKLXsKLSAgICBtX2ZvbnRBdGxhcyA9IGZvbnRBdGxh
czsKLX0KLQotYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAotewotICAgIHJldHVybiBzaG93UGxhdGZvcm1MYXll
clRyZWUoc2V0dGluZ3MpIHx8IHNldHRpbmdzLnNob3dGUFNDb3VudGVyIHx8IHNob3dEZWJ1Z1Jl
Y3RzKHNldHRpbmdzKTsKLX0KLQotYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93UGxhdGZvcm1M
YXllclRyZWUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZTsKLX0KLQotYm9vbCBDQ0hl
YWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBz
ZXR0aW5ncykgY29uc3QKLXsKLSAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwg
c2V0dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNl
RGFtYWdlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwgc2V0dGluZ3Mu
c2hvd1JlcGxpY2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dPY2NsdWRpbmdSZWN0
czsKLX0KLQotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwq
IGxheWVyVHJlZUhvc3RJbXBsKQotewotICAgIENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIgPSBs
YXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpOwotICAgIGlmICghbV9odWRUZXh0dXJl
KQotICAgICAgICBtX2h1ZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShsYXllclRy
ZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKLQotICAgIGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCk7Ci0gICAg
Ly8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVlZCB0by4uLgotICAgIElu
dFNpemUgaHVkU2l6ZTsKLSAgICBpZiAoc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdzKSB8
fCBzaG93RGVidWdSZWN0cyhzZXR0aW5ncykpIHsKLSAgICAgICAgaHVkU2l6ZS5zZXRXaWR0aCht
aW4oMjA0OCwgbGF5ZXJUcmVlSG9zdEltcGwtPmRldmljZVZpZXdwb3J0U2l6ZSgpLndpZHRoKCkp
KTsKLSAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQobWluKDIwNDgsIGxheWVyVHJlZUhvc3RJbXBs
LT5kZXZpY2VWaWV3cG9ydFNpemUoKS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGh1ZFNpemUuc2V0V2lkdGgoNTEyKTsKLSAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQoMTI4KTsK
LSAgICB9Ci0KLSAgICBpZiAoIW1faHVkVGV4dHVyZS0+aWQoKSAmJiAhbV9odWRUZXh0dXJlLT5h
bGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgaHVkU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gUmVuZGVyIHBpeGVscyBpbnRvIHRoZSB0ZXh0dXJlLgotICAgIFBsYXRm
b3JtQ2FudmFzIGNhbnZhczsKLSAgICBjYW52YXMucmVzaXplKGh1ZFNpemUpOwotICAgIHsKLSAg
ICAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgcGFpbnRlcigmY2FudmFzLCBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6R3JheXNjYWxlVGV4dCk7Ci0gICAgICAgIHBhaW50ZXIuY29udGV4dCgp
LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIGh1ZFNpemUud2lkdGgoKSwgaHVkU2l6ZS5oZWln
aHQoKSkpOwotICAgICAgICBkcmF3SHVkQ29udGVudHMocGFpbnRlci5jb250ZXh0KCksIGxheWVy
VHJlZUhvc3RJbXBsLCBzZXR0aW5ncywgaHVkU2l6ZSk7Ci0gICAgfQotCi0gICAgLy8gVXBsb2Fk
IHRvIEdMLgotICAgIHsKLSAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2Vy
KCZjYW52YXMpOwotICAgICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQoMCwgMCksIGh1ZFNpemUp
OwotICAgICAgICBsYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLT51cGxvYWQo
bV9odWRUZXh0dXJlLT5pZCgpLCBsb2NrZXIucGl4ZWxzKCksIHJlY3QsIHJlY3QsIHJlY3QpOwot
ICAgIH0KLQotICAgIGxheWVyUmVuZGVyZXItPmRyYXdIZWFkc1VwRGlzcGxheShtX2h1ZFRleHR1
cmUuZ2V0KCksIGh1ZFNpemUpOwotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDTGF5ZXJUcmVlSG9zdEltcGwqIGxh
eWVyVHJlZUhvc3RJbXBsLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgY29u
c3QgSW50U2l6ZSYgaHVkU2l6ZSkKLXsKLSAgICBpZiAoc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNl
dHRpbmdzKSkgewotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMCwgMCwgMCwg
MTkyKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEZs
b2F0UmVjdCgwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCkpKTsKLSAgICB9
Ci0KLSAgICBpbnQgZnBzQ291bnRlckhlaWdodCA9IDQwOwotICAgIGludCBmcHNDb3VudGVyVG9w
ID0gMjsKLSAgICBpbnQgcGxhdGZvcm1MYXllclRyZWVUb3A7Ci0KLSAgICBpZiAoc2V0dGluZ3Mu
c2hvd0ZQU0NvdW50ZXIpCi0gICAgICAgIHBsYXRmb3JtTGF5ZXJUcmVlVG9wID0gZnBzQ291bnRl
clRvcCArIGZwc0NvdW50ZXJIZWlnaHQ7Ci0gICAgZWxzZQotICAgICAgICBwbGF0Zm9ybUxheWVy
VHJlZVRvcCA9IDA7Ci0KLSAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpCi0gICAgICAg
IGRyYXdGUFNDb3VudGVyKGNvbnRleHQsIGxheWVyVHJlZUhvc3RJbXBsLT5mcHNDb3VudGVyKCks
IGZwc0NvdW50ZXJUb3AsIGZwc0NvdW50ZXJIZWlnaHQpOwotCi0gICAgaWYgKHNob3dQbGF0Zm9y
bUxheWVyVHJlZShzZXR0aW5ncykgJiYgbV9mb250QXRsYXMpIHsKLSAgICAgICAgU3RyaW5nIGxh
eWVyVHJlZSA9IGxheWVyVHJlZUhvc3RJbXBsLT5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAg
bV9mb250QXRsYXMtPmRyYXdUZXh0KGNvbnRleHQsIGxheWVyVHJlZSwgSW50UG9pbnQoMiwgcGxh
dGZvcm1MYXllclRyZWVUb3ApLCBodWRTaXplKTsKLSAgICB9Ci0KLSAgICBpZiAoc2hvd0RlYnVn
UmVjdHMoc2V0dGluZ3MpKQotICAgICAgICBkcmF3RGVidWdSZWN0cyhjb250ZXh0LCBsYXllclRy
ZWVIb3N0SW1wbC0+ZGVidWdSZWN0SGlzdG9yeSgpLCBzZXR0aW5ncyk7Ci19Ci0KLXZvaWQgQ0NI
ZWFkc1VwRGlzcGxheTo6ZHJhd0ZQU0NvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBD
Q0ZyYW1lUmF0ZUNvdW50ZXIqIGZwc0NvdW50ZXIsIGludCB0b3AsIGludCBoZWlnaHQpCi17Ci0g
ICAgZmxvYXQgdGV4dFdpZHRoID0gMTcwOyAvLyBzbyB0ZXh0IGZpdHMgb24gbGludXguCi0gICAg
ZmxvYXQgZ3JhcGhXaWR0aCA9IGZwc0NvdW50ZXItPnRpbWVTdGFtcEhpc3RvcnlTaXplKCk7Ci0K
LSAgICAvLyBEcmF3IHRoZSBGUFMgdGV4dC4KLSAgICBkcmF3RlBTQ291bnRlclRleHQoY29udGV4
dCwgZnBzQ291bnRlciwgdG9wLCB0ZXh0V2lkdGgsIGhlaWdodCk7Ci0KLSAgICAvLyBEcmF3IEZQ
UyBncmFwaC4KLSAgICBjb25zdCBkb3VibGUgbG9GUFMgPSAwOwotICAgIGNvbnN0IGRvdWJsZSBo
aUZQUyA9IDgwOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMTU0LCAyMDUsIDUwKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgs
IHRvcCwgZ3JhcGhXaWR0aCwgaGVpZ2h0IC8gMikpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihDb2xvcigyNTUsIDI1MCwgMjA1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4
dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCArIGhlaWdodCAvIDIsIGdy
YXBoV2lkdGgsIGhlaWdodCAvIDIpKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LT5zZXRGaWxs
Q29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0KLSAgICBpbnQg
Z3JhcGhMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0V2lkdGggKyAzKTsKLSAgICBJbnRQb2lu
dCBwcmV2KC0xLCAwKTsKLSAgICBpbnQgeCA9IDA7Ci0gICAgZG91YmxlIGggPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KGhlaWdodCAtIDIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnBzQ291bnRl
ci0+dGltZVN0YW1wSGlzdG9yeVNpemUoKSAtIDE7ICsraSkgewotICAgICAgICBpbnQgaiA9IGkg
KyAxOwotICAgICAgICBkb3VibGUgZGVsdGEgPSBmcHNDb3VudGVyLT50aW1lU3RhbXBPZlJlY2Vu
dEZyYW1lKGopIC0gZnBzQ291bnRlci0+dGltZVN0YW1wT2ZSZWNlbnRGcmFtZShpKTsKLQotICAg
ICAgICAvLyBTa2lwIHBsb3R0aW5nIHRoaXMgcGFydGljdWxhciBpbnN0YW50YW5lb3VzIGZyYW1l
IHJhdGUgaWYgaXQgaXMgbm90IGxpa2VseSB0byBoYXZlIGJlZW4gdmFsaWQuCi0gICAgICAgIGlm
IChmcHNDb3VudGVyLT5pc0JhZEZyYW1lSW50ZXJ2YWwoZGVsdGEpKSB7Ci0gICAgICAgICAgICB4
ICs9IDE7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGRvdWJs
ZSBmcHMgPSAxLjAgLyBkZWx0YTsKLQotICAgICAgICAvLyBDbGFtcCB0aGUgRlBTIHRvIHRoZSBy
YW5nZSB3ZSB3YW50IHRvIHBsb3QgdmlzdWFsbHkuCi0gICAgICAgIGRvdWJsZSBwID0gMSAtICgo
ZnBzIC0gbG9GUFMpIC8gKGhpRlBTIC0gbG9GUFMpKTsKLSAgICAgICAgaWYgKHAgPCAwKQotICAg
ICAgICAgICAgcCA9IDA7Ci0gICAgICAgIGlmIChwID4gMSkKLSAgICAgICAgICAgIHAgPSAxOwot
Ci0gICAgICAgIC8vIFBsb3QgdGhpcyBkYXRhIHBvaW50LgotICAgICAgICBJbnRQb2ludCBjdXIo
Z3JhcGhMZWZ0ICsgeCwgMSArIHRvcCArIHAqaCk7Ci0gICAgICAgIGlmIChwcmV2LngoKSAhPSAt
MSkKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5lKHByZXYsIGN1cik7Ci0gICAgICAgIHBy
ZXYgPSBjdXI7Ci0gICAgICAgIHggKz0gMTsKLSAgICB9Ci19Ci0KLXZvaWQgQ0NIZWFkc1VwRGlz
cGxheTo6ZHJhd0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFt
ZVJhdGVDb3VudGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
Ci17Ci0gICAgZG91YmxlIGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbjsKLSAgICBmcHNDb3VudGVy
LT5nZXRBdmVyYWdlRlBTQW5kU3RhbmRhcmREZXZpYXRpb24oYXZlcmFnZUZQUywgc3RkRGV2aWF0
aW9uKTsKLQotICAgIC8vIERyYXcgYmFja2dyb3VuZC4KLSAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3IoMCwgMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4
dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIsIHRvcCwgd2lkdGgsIGhlaWdodCkpOwotCi0gICAgLy8g
RHJhdyBGUFMgdGV4dC4KLSAgICBpZiAobV9mb250QXRsYXMpCi0gICAgICAgIG1fZm9udEF0bGFz
LT5kcmF3VGV4dChjb250ZXh0LCBTdHJpbmc6OmZvcm1hdCgiRlBTOiAlNC4xZiArLy0gJTMuMWYi
LCBhdmVyYWdlRlBTLCBzdGREZXZpYXRpb24pLCBJbnRQb2ludCgxMCwgaGVpZ2h0IC8gMyksIElu
dFNpemUod2lkdGgsIGhlaWdodCkpOwotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdE
ZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBk
ZWJ1Z1JlY3RIaXN0b3J5LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKLXsK
LSAgICBjb25zdCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+JiBkZWJ1Z1JlY3RzID0gZGVidWdSZWN0SGlz
dG9yeS0+ZGVidWdSZWN0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVidWdSZWN0
cy5zaXplKCk7ICsraSkgewotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUGFp
bnRSZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gUGFpbnQgcmVjdHMgaW4gcmVkCi0gICAgICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDAsIDI1NSksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0
c1tpXS5yZWN0LCBDb2xvcigyNTUsIDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUHJvcGVydHlD
aGFuZ2VkUmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFByb3BlcnR5LWNoYW5nZWQgcmVjdHMg
aW4gYmx1ZQotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwg
MjU1LCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMCwgMCwgMjU1LCAzMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3Rz
W2ldLnJlY3QsIDIuMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50
eXBlID09IFN1cmZhY2VEYW1hZ2VSZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gU3VyZmFjZSBk
YW1hZ2UgcmVjdHMgaW4geWVsbG93LW9yYW5nZQotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMjAwLCAxMDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwot
ICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigy
MDAsIDEwMCwgMCwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBSZXBsaWNhU2NyZWVuU3BhY2VSZWN0VHlw
ZSkgewotICAgICAgICAgICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIGdyZWVuLgotICAgICAg
ICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTAwLCAyMDAsIDAsIDI1NSksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdS
ZWN0c1tpXS5yZWN0LCBDb2xvcigxMDAsIDIwMCwgMCwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAy
LjApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBTY3Jl
ZW5TcGFjZVJlY3RUeXBlKSB7Ci0gICAgICAgICAgICAvLyBTY3JlZW4gc3BhY2UgcmVjdHMgaW4g
cHVycGxlLgotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTAwLCAw
LCAyMDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+
ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigxMDAsIDAsIDIwMCwgMTApLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdS
ZWN0c1tpXS5yZWN0LCAyLjApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlYnVnUmVjdHNb
aV0udHlwZSA9PSBPY2NsdWRpbmdSZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gT2NjbHVkaW5n
IHJlY3RzIGluIGEgcmVkZGlzaCBjb2xvci4KLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKENvbG9yKDIwMCwgMCwgMTAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjAw
LCAwLCAxMDAsIDEwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0
LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NIZWFkc1VwRGlzcGxheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjZi
ZjUxZTFmNGVkYzZjNjBjMjE2MzIzMDhjZTI2OGYxZDNhYTYwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDc4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ0NIZWFkc1VwRGlzcGxheV9oCi0jZGVm
aW5lIENDSGVhZHNVcERpc3BsYXlfaAotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQotCi0jaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKLSNpbmNsdWRlICJjYy9DQ1Njb3BlZFRl
eHR1cmUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0RlYnVnUmVjdEhpc3Rv
cnk7Ci1jbGFzcyBDQ0ZyYW1lUmF0ZUNvdW50ZXI7Ci1jbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBs
OwotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgVGV4dXJlQWxsb2NhdG9yOwotCi1zdHJ1
Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKLQotLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcg
b2YgY29tcG9zaXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgotY2xhc3MgQ0NIZWFkc1VwRGlz
cGxheSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NIZWFkc1VwRGlzcGxheSk7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NIZWFkc1VwRGlzcGxheT4gY3JlYXRlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NIZWFkc1VwRGlzcGxheSgpKTsKLSAg
ICB9Ci0KLSAgICB+Q0NIZWFkc1VwRGlzcGxheSgpOwotCi0gICAgdm9pZCBzZXRGb250QXRsYXMo
UGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwotCi0gICAgYm9vbCBlbmFibGVkKGNvbnN0IENDTGF5
ZXJUcmVlU2V0dGluZ3MmKSBjb25zdDsKLSAgICB2b2lkIGRyYXcoQ0NMYXllclRyZWVIb3N0SW1w
bCopOwotCi1wcml2YXRlOgotICAgIENDSGVhZHNVcERpc3BsYXkoKSB7IH07Ci0KLSAgICB2b2lk
IGRyYXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqLCBDQ0xheWVyVHJlZUhvc3RJbXBsKiwg
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYsIGNvbnN0IEludFNpemUmIGh1ZFNpemUpOwotICAg
IHZvaWQgZHJhd0ZQU0NvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiwgQ0NGcmFtZVJhdGVDb3VudGVy
KiwgaW50IHRvcCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkcmF3RlBTQ291bnRlclRleHQoR3Jh
cGhpY3NDb250ZXh0KiwgQ0NGcmFtZVJhdGVDb3VudGVyKiwgaW50IHRvcCwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKLSAgICB2b2lkIGRyYXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIEND
RGVidWdSZWN0SGlzdG9yeSosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKLQotICAgIGJv
b2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKSBjb25z
dDsKLSAgICBib29sIHNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKSBj
b25zdDsKLQotICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IG1faHVkVGV4dHVyZTsKLSAgICBP
d25QdHI8Q0NGb250QXRsYXM+IG1fZm9udEF0bGFzOwotfTsKLQotfQotCi0jZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQ4YThjYjVjNmQwMjUy
NDNjZDM3YzYyZGM1YWM0ZWUzY2RlMjI5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllcklt
cGwuY3BwCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ2FudmFz
LmgiCisjaW5jbHVkZSAiY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgiCisjaW5jbHVkZSAiY2MvQ0NG
b250QXRsYXMuaCIKKyNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaCIKKyNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bDo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbChpbnQgaWQsIFBhc3NPd25QdHI8Q0NGb250QXRs
YXM+IGZvbnRBdGxhcykKKyAgICA6IENDTGF5ZXJJbXBsKGlkKSwKKyAgICAgIG1fZm9udEF0bGFz
KGZvbnRBdGxhcykKK3sKK30KKworQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6fkNDSGVhZHNV
cERpc3BsYXlMYXllckltcGwoKQoreworfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKK3sKKyAg
ICBDQ0xheWVySW1wbDo6d2lsbERyYXcocmVzb3VyY2VQcm92aWRlcik7CisKKyAgICBpZiAoIW1f
aHVkVGV4dHVyZSkKKyAgICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVh
dGUocmVzb3VyY2VQcm92aWRlcik7CisKKyAgICAvLyBGSVhNRTogVXNlIGNvbnRlbnRCb3VuZHMo
KSBmb3IgdGhlIHRleHR1cmUuCisKKyAgICBpZiAobV9odWRUZXh0dXJlLT5zaXplKCkgIT0gYm91
bmRzKCkpCisgICAgICAgIG1faHVkVGV4dHVyZS0+ZnJlZSgpOworCisgICAgaWYgKCFtX2h1ZFRl
eHR1cmUtPmlkKCkgJiYgIW1faHVkVGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBv
b2wsIGJvdW5kcygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpUZXh0dXJlVXNhZ2VBbnkpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZW5kZXIgcGl4
ZWxzIGludG8gdGhlIHRleHR1cmUuCisgICAgUGxhdGZvcm1DYW52YXMgY2FudmFzOworICAgIGNh
bnZhcy5yZXNpemUoYm91bmRzKCkpOworICAgIHsKKyAgICAgICAgUGxhdGZvcm1DYW52YXM6OlBh
aW50ZXIgcGFpbnRlcigmY2FudmFzLCBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6R3JheXNjYWxl
VGV4dCk7CisgICAgICAgIHBhaW50ZXIuY29udGV4dCgpLT5jbGVhclJlY3QoRmxvYXRSZWN0KDAs
IDAsIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhlaWdodCgpKSk7CisgICAgICAgIGRyYXdI
dWRDb250ZW50cyhwYWludGVyLmNvbnRleHQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQ
bGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7CisgICAgICAgIEludFJl
Y3QgbGF5ZXJSZWN0KEludFBvaW50KCksIGJvdW5kcygpKTsKKyAgICAgICAgcmVzb3VyY2VQcm92
aWRlci0+dXBsb2FkKG1faHVkVGV4dHVyZS0+aWQoKSwgbG9ja2VyLnBpeGVscygpLCBsYXllclJl
Y3QsIGxheWVyUmVjdCwgbGF5ZXJSZWN0KTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQoreworICAgIGlmICghbV9o
dWRUZXh0dXJlLT5pZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcmludGYoImxheWVyUHJv
cGVydHlDaGFuZ2VkICVkXG4iLCBsYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKKworICAgIEludFJl
Y3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOworICAgIGJvb2wgcHJlbXVsdGlwbGll
ZEFscGhhID0gdHJ1ZTsKKyAgICBGbG9hdFJlY3QgdXZSZWN0KDAsIDAsIDEsIDEpOworICAgIGJv
b2wgZmxpcHBlZCA9IGZhbHNlOworICAgIHF1YWRMaXN0LmFwcGVuZChXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2h1ZFRleHR1cmUt
PmlkKCksIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7Cit9CisKK3ZvaWQg
Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6ZGlkTG9zZUNvbnRleHQoKQoreworICAgIG1faHVk
VGV4dHVyZS0+bGVhaygpOworfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRy
YXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0SW1wbCgpLT5zZXR0aW5n
cygpOworCisgICAgaWYgKHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSkgeworICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMCwgMCwgMCwgMTkyKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCBib3Vu
ZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSkpOworICAgIH0KKworICAgIGludCBmcHND
b3VudGVySGVpZ2h0ID0gNDA7CisgICAgaW50IGZwc0NvdW50ZXJUb3AgPSAyOworICAgIGludCBw
bGF0Zm9ybUxheWVyVHJlZVRvcDsKKworICAgIGlmIChzZXR0aW5ncy5zaG93RlBTQ291bnRlcikK
KyAgICAgICAgcGxhdGZvcm1MYXllclRyZWVUb3AgPSBmcHNDb3VudGVyVG9wICsgZnBzQ291bnRl
ckhlaWdodDsKKyAgICBlbHNlCisgICAgICAgIHBsYXRmb3JtTGF5ZXJUcmVlVG9wID0gMDsKKwor
ICAgIGlmIChzZXR0aW5ncy5zaG93RlBTQ291bnRlcikKKyAgICAgICAgZHJhd0ZQU0NvdW50ZXIo
Y29udGV4dCwgbGF5ZXJUcmVlSG9zdEltcGwoKS0+ZnBzQ291bnRlcigpLCBmcHNDb3VudGVyVG9w
LCBmcHNDb3VudGVySGVpZ2h0KTsKKworICAgIGlmIChzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXll
clRyZWUgJiYgbV9mb250QXRsYXMpIHsKKyAgICAgICAgU3RyaW5nIGxheWVyVHJlZSA9IGxheWVy
VHJlZUhvc3RJbXBsKCktPmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICBtX2ZvbnRBdGxhcy0+
ZHJhd1RleHQoY29udGV4dCwgbGF5ZXJUcmVlLCBJbnRQb2ludCgyLCBwbGF0Zm9ybUxheWVyVHJl
ZVRvcCksIGJvdW5kcygpKTsKKyAgICB9CisKKyAgICBpZiAoc2V0dGluZ3Muc2hvd0RlYnVnUmVj
dHMoKSkKKyAgICAgICAgZHJhd0RlYnVnUmVjdHMoY29udGV4dCwgbGF5ZXJUcmVlSG9zdEltcGwo
KS0+ZGVidWdSZWN0SGlzdG9yeSgpKTsKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsOjpkcmF3RlBTQ291bnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRnJhbWVSYXRl
Q291bnRlciogZnBzQ291bnRlciwgaW50IHRvcCwgaW50IGhlaWdodCkKK3sKKyAgICBmbG9hdCB0
ZXh0V2lkdGggPSAxNzA7IC8vIHNvIHRleHQgZml0cyBvbiBsaW51eC4KKyAgICBmbG9hdCBncmFw
aFdpZHRoID0gZnBzQ291bnRlci0+dGltZVN0YW1wSGlzdG9yeVNpemUoKTsKKworICAgIC8vIERy
YXcgdGhlIEZQUyB0ZXh0LgorICAgIGRyYXdGUFNDb3VudGVyVGV4dChjb250ZXh0LCBmcHNDb3Vu
dGVyLCB0b3AsIHRleHRXaWR0aCwgaGVpZ2h0KTsKKworICAgIC8vIERyYXcgRlBTIGdyYXBoLgor
ICAgIGNvbnN0IGRvdWJsZSBsb0ZQUyA9IDA7CisgICAgY29uc3QgZG91YmxlIGhpRlBTID0gODA7
CisgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihDb2xvcigxNTQsIDIwNSwgNTApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoMiArIHRleHRXaWR0aCwgdG9wLCBncmFw
aFdpZHRoLCBoZWlnaHQgLyAyKSk7CisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDI1
NSwgMjUwLCAyMDUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LT5maWxsUmVj
dChGbG9hdFJlY3QoMiArIHRleHRXaWR0aCwgdG9wICsgaGVpZ2h0IC8gMiwgZ3JhcGhXaWR0aCwg
aGVpZ2h0IC8gMikpOworICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDI1NSwgMCwg
MCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xv
cigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKworICAgIGludCBncmFwaExlZnQg
PSBzdGF0aWNfY2FzdDxpbnQ+KHRleHRXaWR0aCArIDMpOworICAgIEludFBvaW50IHByZXYoLTEs
IDApOworICAgIGludCB4ID0gMDsKKyAgICBkb3VibGUgaCA9IHN0YXRpY19jYXN0PGRvdWJsZT4o
aGVpZ2h0IC0gMik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcHNDb3VudGVyLT50aW1lU3Rh
bXBIaXN0b3J5U2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIGludCBqID0gaSArIDE7CisgICAg
ICAgIGRvdWJsZSBkZWx0YSA9IGZwc0NvdW50ZXItPnRpbWVTdGFtcE9mUmVjZW50RnJhbWUoaikg
LSBmcHNDb3VudGVyLT50aW1lU3RhbXBPZlJlY2VudEZyYW1lKGkpOworCisgICAgICAgIC8vIFNr
aXAgcGxvdHRpbmcgdGhpcyBwYXJ0aWN1bGFyIGluc3RhbnRhbmVvdXMgZnJhbWUgcmF0ZSBpZiBp
dCBpcyBub3QgbGlrZWx5IHRvIGhhdmUgYmVlbiB2YWxpZC4KKyAgICAgICAgaWYgKGZwc0NvdW50
ZXItPmlzQmFkRnJhbWVJbnRlcnZhbChkZWx0YSkpIHsKKyAgICAgICAgICAgIHggKz0gMTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZG91YmxlIGZwcyA9IDEu
MCAvIGRlbHRhOworCisgICAgICAgIC8vIENsYW1wIHRoZSBGUFMgdG8gdGhlIHJhbmdlIHdlIHdh
bnQgdG8gcGxvdCB2aXN1YWxseS4KKyAgICAgICAgZG91YmxlIHAgPSAxIC0gKChmcHMgLSBsb0ZQ
UykgLyAoaGlGUFMgLSBsb0ZQUykpOworICAgICAgICBpZiAocCA8IDApCisgICAgICAgICAgICBw
ID0gMDsKKyAgICAgICAgaWYgKHAgPiAxKQorICAgICAgICAgICAgcCA9IDE7CisKKyAgICAgICAg
Ly8gUGxvdCB0aGlzIGRhdGEgcG9pbnQuCisgICAgICAgIEludFBvaW50IGN1cihncmFwaExlZnQg
KyB4LCAxICsgdG9wICsgcCpoKTsKKyAgICAgICAgaWYgKHByZXYueCgpICE9IC0xKQorICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd0xpbmUocHJldiwgY3VyKTsKKyAgICAgICAgcHJldiA9IGN1cjsK
KyAgICAgICAgeCArPSAxOworICAgIH0KK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsOjpkcmF3RlBTQ291bnRlclRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0ZyYW1l
UmF0ZUNvdW50ZXIqIGZwc0NvdW50ZXIsIGludCB0b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCkK
K3sKKyAgICBkb3VibGUgYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9uOworICAgIGZwc0NvdW50ZXIt
PmdldEF2ZXJhZ2VGUFNBbmRTdGFuZGFyZERldmlhdGlvbihhdmVyYWdlRlBTLCBzdGREZXZpYXRp
b24pOworCisgICAgLy8gRHJhdyBiYWNrZ3JvdW5kLgorICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihDb2xvcigwLCAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0
LT5maWxsUmVjdChGbG9hdFJlY3QoMiwgdG9wLCB3aWR0aCwgaGVpZ2h0KSk7CisKKyAgICAvLyBE
cmF3IEZQUyB0ZXh0LgorICAgIGlmIChtX2ZvbnRBdGxhcykKKyAgICAgICAgbV9mb250QXRsYXMt
PmRyYXdUZXh0KGNvbnRleHQsIFN0cmluZzo6Zm9ybWF0KCJGUFM6ICU0LjFmICsvLSAlMy4xZiIs
IGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbiksIEludFBvaW50KDEwLCBoZWlnaHQgLyAzKSwgSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bDo6ZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0RlYnVnUmVjdEhp
c3RvcnkqIGRlYnVnUmVjdEhpc3RvcnkpCit7CisgICAgY29uc3QgVmVjdG9yPENDRGVidWdSZWN0
PiYgZGVidWdSZWN0cyA9IGRlYnVnUmVjdEhpc3RvcnktPmRlYnVnUmVjdHMoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGRlYnVnUmVjdHMuc2l6ZSgpOyArK2kpIHsKKworICAgICAgICBp
ZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFBhaW50UmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8v
IFBhaW50IHJlY3RzIGluIHJlZAorICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3IoMjU1LCAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjU1LCAwLCAwLCAz
MCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVj
dChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVi
dWdSZWN0c1tpXS50eXBlID09IFByb3BlcnR5Q2hhbmdlZFJlY3RUeXBlKSB7CisgICAgICAgICAg
ICAvLyBQcm9wZXJ0eS1jaGFuZ2VkIHJlY3RzIGluIGJsdWUKKyAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENv
bG9yKDAsIDAsIDI1NSwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBTdXJmYWNlRGFtYWdlUmVjdFR5cGUp
IHsKKyAgICAgICAgICAgIC8vIFN1cmZhY2UgZGFtYWdlIHJlY3RzIGluIHllbGxvdy1vcmFuZ2UK
KyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDIwMCwgMTAwLCAwLCAy
NTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjAwLCAxMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0u
cmVjdCwgMi4wKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUg
PT0gUmVwbGljYVNjcmVlblNwYWNlUmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8vIFNjcmVlbiBz
cGFjZSByZWN0cyBpbiBncmVlbi4KKyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yKDEwMCwgMjAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAyMDAs
IDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zdHJv
a2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU2NyZWVuU3BhY2VSZWN0VHlwZSkgeworICAgICAgICAg
ICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIHB1cnBsZS4KKyAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMCwgMjAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwg
Q29sb3IoMTAwLCAwLCAyMDAsIDEwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAg
ICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gT2NjbHVkaW5nUmVjdFR5cGUp
IHsKKyAgICAgICAgICAgIC8vIE9jY2x1ZGluZyByZWN0cyBpbiBhIHJlZGRpc2ggY29sb3IuCisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDAsIDEwMCwgMjU1
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChk
ZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDIwMCwgMCwgMTAwLCAxMCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJl
Y3QsIDIuMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SGVhZHNVcERpc3BsYXlMYXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGRlNGNhNjFhZjM1MGVhNTg1
NWM1MDMxMDY2ZTgyYjM5YTdhZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGxfaAorI2RlZmluZSBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NEZWJ1Z1JlY3RIaXN0b3J5OworY2xhc3MgQ0NGb250
QXRsYXM7CitjbGFzcyBDQ0ZyYW1lUmF0ZUNvdW50ZXI7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CisKK2NsYXNzIENDSGVhZHNVcERpc3BsYXlMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGw+IGNyZWF0ZShpbnQgaWQsIFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bChpZCwgZm9udEF0bGFzKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkNDSGVhZHNVcERpc3BsYXlM
YXllckltcGwoKTsKKworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlk
ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklE
RTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOworCisgICAg
dmlydHVhbCBib29sIGxheWVySXNBbHdheXNEYW1hZ2VkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDSGVhZHNVcERpc3BsYXlMYXll
ckltcGwoaW50LCBQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CisKKyAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIkhlYWRz
VXBEaXNwbGF5TGF5ZXIiOyB9CisKKyAgICB2b2lkIGRyYXdIdWRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQqKTsKKyAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIENDRnJh
bWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCBoZWlnaHQpOworICAgIHZvaWQgZHJhd0ZQU0Nv
dW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0b3As
IGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFwaGlj
c0NvbnRleHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqKTsKKworICAgIE93blB0cjxDQ0ZvbnRBdGxh
cz4gbV9mb250QXRsYXM7CisgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gbV9odWRUZXh0dXJl
OworfTsKKworfQorCisjZW5kaWYgLy8gQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaAppbmRleCAyNWJlZGMyMjA3ZTcyOTBjZWI3YWY5Yjg1NWZkYjJjNTc1Nzdm
NmMyLi45MGE1MTEyN2Y5MjQyZGRiZGM0MGJkNmRjYmRhNzk1N2JkM2Q3Y2U4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKQEAgLTI1NSwxMSArMjU1LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
U3RhY2tpbmdPcmRlckNoYW5nZWQoYm9vbCk7CiAKLSAgICBib29sIGxheWVyUHJvcGVydHlDaGFu
Z2VkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclByb3BlcnR5Q2hhbmdlZDsgfQorICAgIGJvb2wg
bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUHJvcGVydHlDaGFu
Z2VkIHx8IGxheWVySXNBbHdheXNEYW1hZ2VkKCk7IH0KICAgICBib29sIGxheWVyU3VyZmFjZVBy
b3BlcnR5Q2hhbmdlZCgpIGNvbnN0OwogCiAgICAgdm9pZCByZXNldEFsbENoYW5nZVRyYWNraW5n
Rm9yU3VidHJlZSgpOwogCisgICAgdmlydHVhbCBib29sIGxheWVySXNBbHdheXNEYW1hZ2VkKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRlbnRPcGFx
dWVSZWdpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGQy
YTc5ZWIxYmZiZTVmNjZkZTFmMjkwYmU1NzEyYmYxMGE2ZmExNzUuLjdkYmQ5ZDk5MDQ1ZDZiNTUy
Y2ZlM2JlOTVlM2JhZGMzNmUxMGFiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAK
KyNpbmNsdWRlICJIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXll
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5o
IgpAQCAtNzgsNiArNzksNyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NMYXllclRyZQogICAgICwgbV9jb250
ZXh0TG9zdChmYWxzZSkKICAgICAsIG1fbnVtVGltZXNSZWNyZWF0ZVNob3VsZEZhaWwoMCkKICAg
ICAsIG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0cygwKQorICAgICwgbV9odWRMYXllcihIZWFk
c1VwRGlzcGxheUxheWVyQ2hyb21pdW06OmNyZWF0ZSgpKQogICAgICwgbV9zZXR0aW5ncyhzZXR0
aW5ncykKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdmlzaWJsZSh0cnVl
KQpAQCAtMTA2LDE0ICsxMDgsNiBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZSgp
CiAgICAgaWYgKCFtX3Byb3h5LT5pbml0aWFsaXplQ29udGV4dCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAvLyBPbmx5IGFsbG9jYXRlIHRoZSBmb250IGF0bGFzIGlmIHdlIGhhdmUg
cmVhc29uIHRvIHVzZSB0aGUgaGVhZHMtdXAgZGlzcGxheS4KLSAgICBpZiAobV9zZXR0aW5ncy5z
aG93RlBTQ291bnRlciB8fCBtX3NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSkgewotICAg
ICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZTo6aW5p
dGlhbGl6ZUZvbnRBdGxhcyIpOwotICAgICAgICBPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxh
cyhDQ0ZvbnRBdGxhczo6Y3JlYXRlKCkpOwotICAgICAgICBmb250QXRsYXMtPmluaXRpYWxpemUo
KTsKLSAgICAgICAgbV9wcm94eS0+c2V0Rm9udEF0bGFzKGZvbnRBdGxhcy5yZWxlYXNlKCkpOwot
ICAgIH0KLQogICAgIG1fY29tcG9zaXRvcklkZW50aWZpZXIgPSBtX3Byb3h5LT5jb21wb3NpdG9y
SWRlbnRpZmllcigpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjQyLDcgKzIzNiwxMCBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqIGhvc3RJbXBsKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSk7CiAKKyAgICBpZiAobV9zZXR0aW5ncy5zaG93RGVidWdJbmZvKCkpCisgICAgICAgIG1fcm9v
dExheWVyLT5hZGRDaGlsZChtX2h1ZExheWVyKTsKICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVy
KFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCksIGhvc3RJbXBs
LT5kZXRhY2hMYXllclRyZWUoKSwgaG9zdEltcGwpKTsKKyAgICBtX2h1ZExheWVyLT5yZW1vdmVG
cm9tUGFyZW50KCk7CiAKICAgICAvLyBXZSBtYXkgaGF2ZSBhZGRlZCBhbiBhbmltYXRpb24gZHVy
aW5nIHRoZSB0cmVlIHN5bmMuIFRoaXMgd2lsbCBjYXVzZSBib3RoIGxheWVyIHRyZWUgaG9zdHMK
ICAgICAvLyB0byB2aXNpdCB0aGVpciBjb250cm9sbGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggODM5Nzg1OTA1M2VjZTYyMDJkMWQxOTA5ZGQ5NmUxYjAyN2YxOGEyMS4uODE1
NTVmMWUwNzIwMWJkMmU5YWQ0NWMzZDJmMzhjMTUxMThhNDBkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTExMiw2ICsxMTIsOSBAQCBzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5n
cyB7CiAgICAgSW50U2l6ZSBkZWZhdWx0VGlsZVNpemU7CiAgICAgSW50U2l6ZSBtYXhVbnRpbGVk
TGF5ZXJTaXplOwogICAgIEludFNpemUgbWluaW11bU9jY2x1c2lvblRyYWNraW5nU2l6ZTsKKwor
ICAgIGJvb2wgc2hvd0RlYnVnSW5mbygpIGNvbnN0IHsgcmV0dXJuIHNob3dQbGF0Zm9ybUxheWVy
VHJlZSB8fCBzaG93RlBTQ291bnRlciB8fCBzaG93RGVidWdSZWN0cygpOyB9CisgICAgYm9vbCBz
aG93RGVidWdSZWN0cygpIGNvbnN0IHsgcmV0dXJuIHNob3dQYWludFJlY3RzIHx8IHNob3dQcm9w
ZXJ0eUNoYW5nZWRSZWN0cyB8fCBzaG93U3VyZmFjZURhbWFnZVJlY3RzIHx8IHNob3dTY3JlZW5T
cGFjZVJlY3RzIHx8IHNob3dSZXBsaWNhU2NyZWVuU3BhY2VSZWN0cyB8fCBzaG93T2NjbHVkaW5n
UmVjdHM7IH0KIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5k
ZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMzEwLDYg
KzMxMyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0czsK
IAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKKyAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gbV9odWRMYXllcjsKICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAgICAgT3duUHRyPENDUHJpb3JpdGl6
ZWRUZXh0dXJlPiBtX3N1cmZhY2VNZW1vcnlQbGFjZWhvbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAwZDlkN2ZmNDFlNWViNTFmZDQ4ZjAyZmZmZDJk
NTlhZjljYzQxMDcwLi40Njk2NzM3MzExYzgwM2FlZDI4YTM1ODdlMDVjZTA0NzA2NjRhYWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9D
Q0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgotI2luY2x1
ZGUgImNjL0NDSGVhZHNVcERpc3BsYXkuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uaCIKQEAgLTEyMyw3ICsxMjIsNiBAQCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdz
LCBDQwogICAgICwgbV92aXNpYmxlKHRydWUpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZXNXZXJl
UHVyZ2VkU2luY2VMYXN0Q29tbWl0KGZhbHNlKQogICAgICwgbV9tZW1vcnlBbGxvY2F0aW9uTGlt
aXRCeXRlcyhDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0
aW9uTGltaXQoKSkKLSAgICAsIG1faGVhZHNVcERpc3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3Jl
YXRlKCkpCiAgICAgLCBtX3BhZ2VTY2FsZSgxKQogICAgICwgbV9wYWdlU2NhbGVEZWx0YSgxKQog
ICAgICwgbV9zZW50UGFnZVNjYWxlRGVsdGEoMSkKQEAgLTU1MiwxNCArNTUwLDExIEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQog
ICAgIG1fZnBzQ291bnRlci0+bWFya0JlZ2lubmluZ09mRnJhbWUoY3VycmVudFRpbWUoKSk7CiAK
ICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdGcmFtZShmcmFtZS5yZW5kZXJQYXNzZXMsIG1fcm9v
dFNjaXNzb3JSZWN0KTsKLSAgICBpZiAobV9oZWFkc1VwRGlzcGxheS0+ZW5hYmxlZChzZXR0aW5n
cygpKSkKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheS0+ZHJhdyh0aGlzKTsKLSAgICBtX2xheWVy
UmVuZGVyZXItPmZpbmlzaERyYXdpbmdGcmFtZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1l
LnJlbmRlclBhc3Nlc1tpXS0+dGFyZ2V0U3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmRpZERy
YXdEYW1hZ2VkQXJlYSgpOwogCi0gICAgaWYgKG1fZGVidWdSZWN0SGlzdG9yeS0+ZW5hYmxlZChz
ZXR0aW5ncygpKSkKKyAgICBpZiAobV9zZXR0aW5ncy5zaG93RGVidWdSZWN0cygpKQogICAgICAg
ICBtX2RlYnVnUmVjdEhpc3RvcnktPnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKG1fcm9v
dExheWVySW1wbC5nZXQoKSwgKmZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QsIGZyYW1lLm9j
Y2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMsIHNldHRpbmdzKCkpOwogCiAgICAgKyttX3NvdXJjZUFu
aW1hdGlvbkZyYW1lTnVtYmVyOwpAQCAtMTE2MCwxMSArMTE1NSw2IEBAIFN0cmluZyBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpsYXllclRyZWVBc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0cy5yZWxl
YXNlKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Rm9udEF0bGFzKFBhc3NP
d25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykKLXsKLSAgICBtX2hlYWRzVXBEaXNwbGF5LT5z
ZXRGb250QXRsYXMoZm9udEF0bGFzKTsKLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpk
dW1wUmVuZGVyU3VyZmFjZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQsIGNvbnN0IENDTGF5
ZXJJbXBsKiBsYXllcikgY29uc3QKIHsKICAgICBpZiAobGF5ZXItPnJlbmRlclN1cmZhY2UoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBmOTM2ZTM0ZGQyYzNjNDMy
OTJmMjNiMjhmMDE5OTMxNjVlNTNiNDUyLi5jYjA5NjdlNDRiOWM2YzM3NjFjMWU5ZTU2NmY4NjVl
MDkzNzc4Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0zOSw5
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1h
dGlvbjsKIGNsYXNzIENDQ29tcGxldGlvbkV2ZW50OwogY2xhc3MgQ0NEZWJ1Z1JlY3RIaXN0b3J5
OwotY2xhc3MgQ0NGb250QXRsYXM7CiBjbGFzcyBDQ0ZyYW1lUmF0ZUNvdW50ZXI7Ci1jbGFzcyBD
Q0hlYWRzVXBEaXNwbGF5OwogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI7CiBjbGFzcyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKQEAg
LTExOCw3ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQo
KSBjb25zdDsKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKLSAgICB2b2lk
IHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAKICAgICB2b2lkIGZpbmlz
aEFsbFJlbmRlcmluZygpOwogICAgIGludCBzb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7IH0KQEAgLTI2Niw4ICsy
NjMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNp
bmNlTGFzdENvbW1pdDsKICAgICBzaXplX3QgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlczsK
IAotICAgIE93blB0cjxDQ0hlYWRzVXBEaXNwbGF5PiBtX2hlYWRzVXBEaXNwbGF5OwotCiAgICAg
ZmxvYXQgbV9wYWdlU2NhbGU7CiAgICAgZmxvYXQgbV9wYWdlU2NhbGVEZWx0YTsKICAgICBmbG9h
dCBtX3NlbnRQYWdlU2NhbGVEZWx0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBmMTkwMzJhYmJmNjY2YTQ1
ZjliNGQ4YzFlMGI5YjRjMWQ4ZGUwNjVhLi4zYjZkYzdmOWM0NDg2ZDU2ZmZkNGZiNWM0OGRkZjVm
YjVmYjdhY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0zMyw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQ0NGb250QXRsYXM7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIEND
R3JhcGhpY3NDb250ZXh0Owogc3RydWN0IENDUmVuZGVyaW5nU3RhdHM7CkBAIC0xMDYsOCArMTA1
LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzKCkg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0
bGFzPikgPSAwOwotCiAgICAgLy8gRGVidWcgaG9va3MKICNpZm5kZWYgTkRFQlVHCiAgICAgc3Rh
dGljIGJvb2wgaXNNYWluVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXggZDkzMTAyMmRj
NTU1NzVlMWU4ZWY2ZjliODMzMjMzYTZmNzE0YmYzMS4uOTM5Nzg3MTc3NTdhZTQxNWNhNDIyMTEw
MmJhOTI5OTM0NTBiY2NhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaApAQCAtODEsOSArODEsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNz
SWQoaW50KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdG
cmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiwgY29uc3QgRmxvYXRSZWN0JiByb290U2Npc3Nv
clJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgeyB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgZHJhd0hlYWRzVXBEaXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVy
ZSosIGNvbnN0IEludFNpemUmIGh1ZFNpemUpID0gMDsKIAogICAgIC8vIHdhaXRzIGZvciByZW5k
ZXJpbmcgdG8gZmluaXNoCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMDAyYzdhN2JmYWVhNTA1ZDRkNDRl
NzVjNmUzN2FlZjcwMWQ2ZGM0Mi4uMTcyMmUzYWNjOWZlZDMwYTAwOTdmYTJlNDhkZWU1YzU1NmFi
OTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI4LDcg
KzI4LDYgQEAKIAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0RyYXdR
dWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUg
ImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKQEAgLTI2OCwxMyArMjY3LDYgQEAgdm9pZCBDQ1Npbmds
ZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCi12b2lk
IENDU2luZ2xlVGhyZWFkUHJveHk6OnNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFz
PiBmb250QXRsYXMpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRGb250
QXRsYXMoZm9udEF0bGFzKTsKLX0KLQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0QW5p
bWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRp
b25FdmVudHNWZWN0b3I+IGV2ZW50cywgZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAppbmRleCBlOGFhNzU1MTUzNjZkZjQ2MDI4NTJlYzU1YmE1ZTNjZTQ4NjU2MTM1Li42
ZGNlMWMzNWU4NGZlN2Q1MDI5YWU2YjE0N2MwZjc0MDU3YTg4OWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVy
ZXMoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25Q
dHI8Q0NGb250QXRsYXM+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VTZXJpYWxp
emVPblN3YXBCdWZmZXJzKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDli
NmRmZTNhY2UzOTAxZWMxZTYzNWVkZGU1NzM1NDk2OWY5Yzk0NDIuLjMwODVkZjNlZTAxM2JhZmRl
OTI5ZGQ0NTdjNDYzZGE5ZGMyNDkwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0ND
RGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5j
bHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKICNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0ND
SW5wdXRIYW5kbGVyLmgiCkBAIC04NjYsMTkgKzg2NSw2IEBAIHNpemVfdCBDQ1RocmVhZFByb3h5
OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVybiB0ZXh0dXJlVXBk
YXRlc1BlckZyYW1lOwogfQogCi12b2lkIENDVGhyZWFkUHJveHk6OnNldEZvbnRBdGxhcyhQYXNz
T3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFk
VGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkLCBmb250
QXRsYXMpKTsKLQotfQotCi12b2lkIENDVGhyZWFkUHJveHk6OnNldEZvbnRBdGxhc09uSW1wbFRo
cmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRGb250QXRsYXMoZm9u
dEF0bGFzKTsKLX0KLQogdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIENDR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0UHRyLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcyogY2FwYWJpbGl0aWVzKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQ
cm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmgKaW5kZXggMGY4YTM1NDA0MGU0ZjA1MDhmODE3NGY5YTRjOTVhNDFjNDEyYTIyMS4uODYwYTIw
MTczODY2NGJlNzk0ZWI3ODk4NGNkZWZhMWNiOTZmOGU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaApAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXMoKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250
QXRsYXM+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VTZXJpYWxpemVPblN3YXBC
dWZmZXJzKCkgT1ZFUlJJREU7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGlt
cGxlbWVudGF0aW9uCkBAIC0xNDQsNyArMTQzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY3Jl
YXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDR3JhcGhpY3NDb250
ZXh0KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMq
KTsKICAgICB2b2lkIGltcGxTaWRlUmVuZGVyaW5nU3RhdHNPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqLCBDQ1JlbmRlcmluZ1N0YXRzKik7CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3
QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9y
Y2VkRHJhdyk7Ci0gICAgdm9pZCBzZXRGb250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxD
Q0ZvbnRBdGxhcz4pOwogICAgIHZvaWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBzZXROZWVkc0ZvcmNlZENvbW1p
dE9uSW1wbFRocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAxYjZiODAyOGI0ZmY1
NGQ1OTY0OTJhOGE3YTNkYWUzZmI4MDkzMWRlLi5mMWQ4ZGMxZDAzYmZlODIwMGQ1YWMzZDE1MzI5
MmE0Njg2ZTUwOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKQEAgLTQxOSw3ICs0MTksNiBAQCBU
RVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBvcGFxdWVCYWNrZ3JvdW5kKQogICAgIEVY
UEVDVF9UUlVFKGxheWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCkpOwogCiAgICAgbGF5
ZXJSZW5kZXJlckNocm9taXVtLmRyYXdGcmFtZShtb2NrQ2xpZW50LnJlbmRlclBhc3NlcygpLCBG
bG9hdFJlY3QoKSk7Ci0gICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmZpbmlzaERyYXdpbmdGcmFt
ZSgpOwogCiAgICAgLy8gT24gREVCVUcgYnVpbGRzLCByZW5kZXIgcGFzc2VzIHdpdGggb3BhcXVl
IGJhY2tncm91bmQgY2xlYXIgdG8gYmx1ZSB0bwogICAgIC8vIGVhc2lseSBzZWUgcmVnaW9ucyB0
aGF0IHdlcmUgbm90IGRyYXduIG9uIHRoZSBzY3JlZW4uCkBAIC00NDMsNyArNDQyLDYgQEAgVEVT
VChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogICAg
IEVYUEVDVF9UUlVFKGxheWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCkpOwogCiAgICAg
bGF5ZXJSZW5kZXJlckNocm9taXVtLmRyYXdGcmFtZShtb2NrQ2xpZW50LnJlbmRlclBhc3Nlcygp
LCBGbG9hdFJlY3QoKSk7Ci0gICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmZpbmlzaERyYXdpbmdG
cmFtZSgpOwogCiAgICAgRVhQRUNUX0VRKDEsIGNvbnRleHQtPmNsZWFyQ291bnQoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154203</attachid>
            <date>2012-07-24 18:05:53 -0700</date>
            <delta_ts>2012-07-24 18:19:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92182-20120724210544.patch</filename>
            <type>text/plain</type>
            <size>63633</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2OTIwM2M2OTE0OWY3
NmE0OTdlNjlhOTJiNGNlMmEyZjE4ZWFiNS4uM2E4YWYwZGRhMjI2ZGU1MmI5NmRhNzUzZDU2YTVm
MzZhNTM3Y2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTA3LTI0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVHVy
biB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0IGNhbiBiZSBkcmF3biBhcyBh
IFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJ5IGNoYW5naW5nIHRoZSBIVUQgaW50byBhIHF1YWQsIHdlIGFyZSBhYmxlIHRv
IGNyZWF0ZSBhIEhVRCBhbmQgcGFzcworICAgICAgICBpdCB0byB0aGUgaG9zdCBjb21wb3NpdG9y
LCBhbGxvd2luZyB0aGUgSFVEIHRvIGJlIHVzZWQgZm9yIHJlbmRlcmVycworICAgICAgICB1bmRl
ciBVYmVyY29tcG9zaXRvci4KKworICAgICAgICBUaGlzIGFsc28gcmVtb3ZlcyB0aGUgc3BlY2lh
bCBkcmF3aW5nIGNvZGUgZm9yIHRoZSBIVUQgZnJvbQorICAgICAgICBMYXllclJlbmRlcmVyQ2hy
b21pdW0sIGFsbG93aW5nIHVzIHRvIG1vdmUgZmluaXNoRHJhd2luZ0ZyYW1lCisgICAgICAgIGlu
dG8gTGF5ZXJSZW5kZXJlckNocm9taXVtIGFzIGEgcHJpdmF0ZSBtZXRob2QgYW5kIHJlbW92ZSBp
dAorICAgICAgICBmcm9tIHRoZSBDQ1JlbmRlcmVyIGludGVyZmFjZS4KKworICAgICAgICBGaW5h
bGx5LCB3ZSBjYW4gcmVtb3ZlIHRoZSBDQ0ZvbnRBdGxhcyB0cmFuc3BvcnQgY29kZSBmcm9tIEND
UHJveHkKKyAgICAgICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXMgdGhlIGF0bGFzIGNhbiBi
ZSBzeW5jZWQgdG8gaW1wbCB0aHJlYWQKKyAgICAgICAgdGhyb3VnaCB0aGUgdXN1YWwgbGF5ZXIg
Y29tbWl0IG1lY2hhbmlzbS4KKworICAgICAgICBUaGUgZGVidWcgSFVEIGlzIG5vdCBjb3ZlcmVk
IGJ5IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIZWFkc1VwRGlzcGxheUxh
eWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIZWFkc1VwRGlzcGxheUxh
eWVyQ2hyb21pdW06OkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06On5IZWFkc1VwRGlzcGxheUxheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjpj
cmVhdGVDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5TGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpDQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlM
YXllckltcGw6On5DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRpZExvc2VDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdIdWRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBTQ291bnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBT
Q291bnRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bDo6ZHJhd0RlYnVnUmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5ZXJJc0Fsd2F5c0RhbWFnZWQpOgorICAgICAg
ICBUaGlzIGZsYWcgaXMgdXNlZCB0byBtYXJrIHRoZSBIVUQgYXMgYWx3YXlzIGRhbWFnZWQsIHNv
IHRoYXQgaXQgaXMKKyAgICAgICAgY29udGludWFsbHkgZHJhd24gb24gdGhlIGltcGwgdGhyZWFk
LiBJdCBpcyBhbHNvIHVzZWQgYXMgYSBoaW50IGJ5CisgICAgICAgIHRoZSBDQ0RlYnVnUmVjdEhp
c3RvcnkgY2xhc3MgdG8gbm90IGluY2x1ZGUgdGhlIGxheWVyIGluIHRoZSBkaXNwbGF5CisgICAg
ICAgIG9mIGRhbWFnZSwgc2luY2UgYWx3YXlzIGRhbWFnZWQgaXMgbm90IGludGVyZXN0aW5nIGRh
bWFnZS4KKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29t
bWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5nczo6c2hvd0RlYnVnSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzOjpzaG93RGVidWdSZWN0cyk6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoKKyAgICAgICAg
KENDUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5
KToKKwogMjAxMi0wNy0yMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQSBGb2N1c1Njb3BlIGZvciBhIGRpc3RyaWJ1dGVkIG5vZGUgc2hvdWxkIG5vdCBiZSBp
dHMgVHJlZVNjb3BlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxMmJmOGE0ZGE4NWRm
ZjljZThkZTE3YTVlYjQ0MDFiYzBhZTQ1ODk3Li4zOGY4ZDY0YjYzZmI2ZjQwYmI1MzdiNTUzYmFh
ZGI5OTc2YTA2MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTA3LTI0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gVHVybiB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0
IGNhbiBiZSBkcmF3biBhcyBhIFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVt
VGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKwogMjAxMi0wNy0yMyAgU2hhd24gU2luZ2ggIDxz
aGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZpeCB1bml0IHRl
c3RzIGluIGRlYnVnIG1vZGUgYWZ0ZXIgcjEyMzM3NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGJlZGQ0
NDA0MGU4ZjZlMmFjZDIxYzU5MjBhZjFjOTgzYzZhMjFlYjQuLjkzNWU5M2ZjOWNiOGYzYTRmYzRk
YTYxODE1Yjc4ZDA2N2FiYTA5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgyNDgsNiArODI0OCw4
IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21p
dW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1Vw
RGlzcGxheUxheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0lPU3VyZmFjZUxheWVyQ2hyb21pdW0uaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCcs
CkBAIC04MzEzLDggKzgzMTUsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRnJhbWVSYXRlQ291bnRlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0dlc3R1cmVDdXJ2ZS5oJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNl
TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTA2ODQxMTVlZTJlMDIwNTcwZWUwMDI1
MjMwNmFkM2QwYTYyM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmNwcApAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSGVh
ZHNVcERpc3BsYXlMYXllckNocm9taXVtLmgiCisKKyNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisj
aW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKKyNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0+IEhl
YWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSgpKTsKK30KKworSGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oKQorICAgIDogTGF5
ZXJDaHJvbWl1bSgpCit7Cit9CisKK0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6fkhlYWRz
VXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSgpCit7Cit9CisKK1Bhc3NPd25QdHI8Q0NMYXllckltcGw+
IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQoreworICAg
IGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdCgpLT5z
ZXR0aW5ncygpOworICAgIGludCBtYXhUZXh0dXJlU2l6ZSA9IGxheWVyVHJlZUhvc3QoKS0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplOworICAgIE93blB0cjxDQ0Zv
bnRBdGxhcz4gZm9udEF0bGFzOworCisgICAgSW50U2l6ZSBib3VuZHM7CisgICAgaWYgKHNldHRp
bmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSB8fCBzZXR0aW5ncy5zaG93RGVidWdSZWN0cygpKSB7
CisgICAgICAgIGJvdW5kcy5zZXRXaWR0aChzdGQ6Om1pbihtYXhUZXh0dXJlU2l6ZSwgbGF5ZXJU
cmVlSG9zdCgpLT5kZXZpY2VWaWV3cG9ydFNpemUoKS53aWR0aCgpKSk7CisgICAgICAgIGJvdW5k
cy5zZXRIZWlnaHQoc3RkOjptaW4obWF4VGV4dHVyZVNpemUsIGxheWVyVHJlZUhvc3QoKS0+ZGV2
aWNlVmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBib3Vu
ZHMuc2V0V2lkdGgoNTEyKTsKKyAgICAgICAgYm91bmRzLnNldEhlaWdodCgxMjgpOworICAgIH0K
KyAgICBzZXRCb3VuZHMoYm91bmRzKTsKKworICAgIC8vIE9ubHkgYWxsb2NhdGUgdGhlIGZvbnQg
YXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFkcy11cCBkaXNwbGF5LgorICAg
IGlmIChzZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXll
clRyZWUpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJIZWFkc1VwRGlzcGxheUxheWVy
Q2hyb21pdW06OmluaXRpYWxpemVGb250QXRsYXMiKTsKKyAgICAgICAgZm9udEF0bGFzID0gQ0NG
b250QXRsYXM6OmNyZWF0ZSgpOworICAgICAgICBmb250QXRsYXMtPmluaXRpYWxpemUoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6Y3JlYXRlKG1fbGF5
ZXJJZCwgZm9udEF0bGFzLnJlbGVhc2UoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc1ZjRjMzcwZWVmZDAzOTlmNTg1
MDVhNmNmOWQ3ZWFkM2VhNzc2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgSGVhZHNVcERpc3BsYXlMYXllckNocm9t
aXVtX2gKKyNkZWZpbmUgSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtX2gKKworI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIZWFkc1Vw
RGlzcGxheUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtPiBjcmVhdGUo
KTsKKyAgICB2aXJ0dWFsIH5IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oKTsKKworICAgIHZp
cnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBs
KCkgT1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21p
dW0oKTsKK307CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKaW5kZXggZTU2MzdhMGZjYTcwNWRiZDFkMWYwNzNhYWQ4MDNhMjZmNzZiZDE4Ny4uZjE5OTVl
OTc4MWY3NGQxODIzNzdlYjU2NDQ1MTE1NTVkNDY4Y2Q4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zODUsNiArMzg1LDggQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXMs
IGNvbnMKICAgICAgICAgRmxvYXRSZWN0IHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2Ug
PSByZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCktPmNvbXB1dGVSb290U2Npc3NvclJlY3RJbkN1
cnJlbnRTdXJmYWNlKHJvb3RTY2lzc29yUmVjdCk7CiAgICAgICAgIGRyYXdSZW5kZXJQYXNzKHJl
bmRlclBhc3MsIHJvb3RTY2lzc29yUmVjdEluQ3VycmVudFN1cmZhY2UpOwogICAgIH0KKworICAg
IGZpbmlzaERyYXdpbmdGcmFtZSgpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
YmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcykKQEAg
LTExNDAsMzEgKzExNDIsNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3Vy
ZmFjZVF1YWQoY29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogcXVhZCkKICAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5H
TEVfQVJCLCAwKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNV
cERpc3BsYXkoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiBodWRUZXh0dXJlLCBjb25zdCBJbnRTaXpl
JiBodWRTaXplKQotewotICAgIEFTU0VSVChodWRUZXh0dXJlLT5pZCgpKTsKLQotICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwot
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNE
OjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKSk7Ci0gICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09S
X1RFU1QpKTsKLSAgICB1c2VSZW5kZXJQYXNzKG1fZGVmYXVsdFJlbmRlclBhc3MpOwotCi0gICAg
Y29uc3QgSGVhZHNVcERpc3BsYXlQcm9ncmFtKiBwcm9ncmFtID0gaGVhZHNVcERpc3BsYXlQcm9n
cmFtKCk7Ci0gICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7Ci0g
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkpOwotICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBsb2NrKG1f
cmVzb3VyY2VQcm92aWRlciwgaHVkVGV4dHVyZS0+aWQoKSk7Ci0gICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9j
ay50ZXh0dXJlSWQoKSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3Jh
bShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVu
aWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7
Ci0KLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7Ci0gICAgbWF0cml4LnRyYW5z
bGF0ZTNkKGh1ZFNpemUud2lkdGgoKSAqIDAuNSwgaHVkU2l6ZS5oZWlnaHQoKSAqIDAuNSwgMCk7
Ci0gICAgZHJhd1RleHR1cmVkUXVhZChtYXRyaXgsIGh1ZFNpemUud2lkdGgoKSwgaHVkU2l6ZS5o
ZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgIDEsIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBw
cm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAotICAgICAgICAgICAgICAg
ICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksCi0gICAgICAg
ICAgICAgICAgICAgICAtMSk7Ci19Ci0KIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5p
c2hEcmF3aW5nRnJhbWUoKQogewogICAgIG1fY3VycmVudEZyYW1lYnVmZmVyTG9jay5jbGVhcigp
OwpAQCAtMTU1OCwxNyArMTUzNSw2IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6U29s
aWRDb2xvclByb2dyYW0qIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c29saWRDb2xvCiAgICAgcmV0
dXJuIG1fc29saWRDb2xvclByb2dyYW0uZ2V0KCk7CiB9CiAKLWNvbnN0IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6SGVhZHNVcERpc3BsYXlQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06Omhl
YWRzVXBEaXNwbGF5UHJvZ3JhbSgpCi17Ci0gICAgaWYgKCFtX2hlYWRzVXBEaXNwbGF5UHJvZ3Jh
bSkKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0gPSBhZG9wdFB0cihuZXcgSGVhZHNV
cERpc3BsYXlQcm9ncmFtKG1fY29udGV4dCkpOwotICAgIGlmICghbV9oZWFkc1VwRGlzcGxheVBy
b2dyYW0tPmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJMYXll
clJlbmRlcmVyQ2hyb21pdW06OmhlYWRzVXBEaXNwbGF5UHJvZ3JhbTo6aW5pdGlhbGl6ZSIpOwot
ICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1f
aXNVc2luZ0JpbmRVbmlmb3JtKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1faGVhZHNVcERpc3BsYXlQ
cm9ncmFtLmdldCgpOwotfQotCiBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlJlbmRlclBh
c3NQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlbmRlclBhc3NQcm9ncmFtKCkKIHsK
ICAgICBBU1NFUlQobV9yZW5kZXJQYXNzUHJvZ3JhbSk7CkBAIC0xNzc2LDkgKzE3NDIsNiBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIGlm
IChtX3NvbGlkQ29sb3JQcm9ncmFtKQogICAgICAgICBtX3NvbGlkQ29sb3JQcm9ncmFtLT5jbGVh
bnVwKG1fY29udGV4dCk7CiAKLSAgICBpZiAobV9oZWFkc1VwRGlzcGxheVByb2dyYW0pCi0gICAg
ICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dCk7Ci0KICAgICBp
ZiAobV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDE5OGFlZjlhMzQzOTE0MjJjZjRi
NGZlMjY0MThkNzZkYzQ1MWEwNTMuLjkwYmQ3NzQzYjlmMWQyZmE4YTYwMTY0ZGU2MTE4OThkM2Fm
OGJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC04MSw5ICs4MSw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRl
clBhc3NJZChpbnQgaWQpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdG
cmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiwgY29uc3QgRmxvYXRSZWN0JiByb290U2Npc3Nv
clJlY3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKSBP
VkVSUklERTsKLQotICAgIHZpcnR1YWwgdm9pZCBkcmF3SGVhZHNVcERpc3BsYXkoY29uc3QgQ0NT
Y29wZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkgT1ZFUlJJREU7CiAKICAgICAv
LyB3YWl0cyBmb3IgcmVuZGVyaW5nIHRvIGZpbmlzaAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2go
KSBPVkVSUklERTsKQEAgLTEyNiw2ICsxMjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBiZWdp
bkRyYXdpbmdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3MqIHJvb3RSZW5kZXJQYXNzKTsKICAgICB2
b2lkIGRyYXdSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyosIGNvbnN0IEZsb2F0UmVjdCYg
ZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsKKyAgICB2b2lkIGZpbmlzaERyYXdpbmdGcmFtZSgpOwog
CiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3Q2hl
Y2tlcmJvYXJkUXVhZChjb25zdCBDQ0NoZWNrZXJib2FyZERyYXdRdWFkKik7CkBAIC0yMTMsMTAg
KzIxMSw2IEBAIHByaXZhdGU6CiAgICAgLy8gU3BlY2lhbCBwdXJwb3NlIC8gZWZmZWN0cyBzaGFk
ZXJzLgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zLCBGcmFnbWVu
dFNoYWRlckNvbG9yPiBTb2xpZENvbG9yUHJvZ3JhbTsKIAotICAgIC8vIERlYnVnZ2luZyBzaGFk
ZXJzLgotICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFn
bWVudFNoYWRlclJHQkFUZXhTd2l6emxlQWxwaGE+IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbTsKLQot
CiAgICAgY29uc3QgVGlsZVByb2dyYW0qIHRpbGVQcm9ncmFtKCk7CiAgICAgY29uc3QgVGlsZVBy
b2dyYW1PcGFxdWUqIHRpbGVQcm9ncmFtT3BhcXVlKCk7CiAgICAgY29uc3QgVGlsZVByb2dyYW1B
QSogdGlsZVByb2dyYW1BQSgpOwpAQCAtMjM5LDggKzIzMyw2IEBAIHByaXZhdGU6CiAKICAgICBj
b25zdCBTb2xpZENvbG9yUHJvZ3JhbSogc29saWRDb2xvclByb2dyYW0oKTsKIAotICAgIGNvbnN0
IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogaGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7Ci0KICAgICBP
d25QdHI8VGlsZVByb2dyYW0+IG1fdGlsZVByb2dyYW07CiAgICAgT3duUHRyPFRpbGVQcm9ncmFt
T3BhcXVlPiBtX3RpbGVQcm9ncmFtT3BhcXVlOwogICAgIE93blB0cjxUaWxlUHJvZ3JhbUFBPiBt
X3RpbGVQcm9ncmFtQUE7CkBAIC0yNjIsNyArMjU0LDYgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
VmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbT4gbV92aWRlb1N0cmVhbVRleHR1cmVQcm9ncmFtOwog
CiAgICAgT3duUHRyPFNvbGlkQ29sb3JQcm9ncmFtPiBtX3NvbGlkQ29sb3JQcm9ncmFtOwotICAg
IE93blB0cjxIZWFkc1VwRGlzcGxheVByb2dyYW0+IG1faGVhZHNVcERpc3BsYXlQcm9ncmFtOwog
CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CiAgICAgT3duUHRy
PEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gbV90ZXh0dXJlQ29waWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RI
aXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKaW5kZXggYzYxMzIxNzhlMTYzOTMzNWQwMTRjODZkZWI4
NjZhNjNiNWJkNzY3OC4uMjNlZTgyNmZkMzRhN2M4YWFjMWU5MjBhYmQyY2M1OTYxZjk3OGMxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCkBAIC0zOCwxMSArMzgsNiBA
QCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OkNDRGVidWdSZWN0SGlzdG9yeSgpCiB7CiB9CiAKLWJvb2wg
Q0NEZWJ1Z1JlY3RIaXN0b3J5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNl
dHRpbmdzKQotewotICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8fCBzZXR0aW5n
cy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1hZ2VS
ZWN0cyB8fCBzZXR0aW5ncy5zaG93U2NyZWVuU3BhY2VSZWN0cyB8fCBzZXR0aW5ncy5zaG93UmVw
bGljYVNjcmVlblNwYWNlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd09jY2x1ZGluZ1JlY3RzOwotfQot
CiB2b2lkIENDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUo
Q0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVkaW5nU2NyZWVu
U3BhY2VSZWN0cywgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAg
Ly8gRm9yIG5vdywgY2xlYXIgYWxsIHJlY3RzIGZyb20gcHJldmlvdXMgZnJhbWVzLiBJbiB0aGUg
ZnV0dXJlIHdlIG1heSB3YW50IHRvIHN0b3JlCkBAIC05Myw3ICs4OCwxMCBAQCB2b2lkIENDRGVi
dWdSZWN0SGlzdG9yeTo6c2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKGNvbnN0IFZlY3RvcjxDQ0xh
eWVySW1wbCo+JiByZQogICAgICAgICAgICAgaWYgKENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVu
ZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQ8Q0NMYXllckltcGw+KGxheWVyLCByZW5kZXJT
dXJmYWNlTGF5ZXItPmlkKCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBpZiAobGF5ZXItPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpCisgICAgICAgICAgICBpZiAo
bGF5ZXItPmxheWVySXNBbHdheXNEYW1hZ2VkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGlmIChsYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSB8fCBsYXll
ci0+bGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2VkKCkpCiAgICAgICAgICAgICAgICAgbV9kZWJ1
Z1JlY3RzLmFwcGVuZChDQ0RlYnVnUmVjdChQcm9wZXJ0eUNoYW5nZWRSZWN0VHlwZSwgQ0NNYXRo
VXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGxheWVyLT5ib3VuZHMoKSkpKSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCmluZGV4IDdmZDAwYzNmNjI2
MjExYmQ1MjNjZmFjNGM5ZDNkZTM2MmMwZDg5ZTcuLjI0MDVhYTBlMmFiZmU0MDZhMWNkYjJiMjBk
ZDE0MzNiZGYwMGVlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCkBAIC03
OSw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0RlYnVn
UmVjdEhpc3RvcnkoKSk7CiAgICAgfQogCi0gICAgYm9vbCBlbmFibGVkKGNvbnN0IENDTGF5ZXJU
cmVlU2V0dGluZ3MmKTsKLQogICAgIC8vIE5vdGU6IFNhdmluZyBkZWJ1ZyByZWN0cyBtdXN0IGhh
cHBlbiBiZWZvcmUgbGF5ZXJzJyBjaGFuZ2UgdHJhY2tpbmcgaXMgcmVzZXQuCiAgICAgdm9pZCBz
YXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25z
dCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgY29uc3QgVmVj
dG9yPEludFJlY3Q+JiBvY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzLCBjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNmY2ZWUwZTIzZTk1YTJjZTRlY2VkYjQ5NDBmZGJiNjAw
ZGY4ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotI2lu
Y2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXkuaCIKLQotI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENo
cm9taXVtLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNhbnZhcy5oIgotI2luY2x1
ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgotI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291
bnRlci5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1l
c3BhY2Ugc3RkOwotCi1DQ0hlYWRzVXBEaXNwbGF5Ojp+Q0NIZWFkc1VwRGlzcGxheSgpCi17Ci19
Ci0KLXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6c2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250
QXRsYXM+IGZvbnRBdGxhcykKLXsKLSAgICBtX2ZvbnRBdGxhcyA9IGZvbnRBdGxhczsKLX0KLQot
Ym9vbCBDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzKSBjb25zdAotewotICAgIHJldHVybiBzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0
dGluZ3MpIHx8IHNldHRpbmdzLnNob3dGUFNDb3VudGVyIHx8IHNob3dEZWJ1Z1JlY3RzKHNldHRp
bmdzKTsKLX0KLQotYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93UGxhdGZvcm1MYXllclRyZWUo
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZTsKLX0KLQotYm9vbCBDQ0hlYWRzVXBEaXNw
bGF5OjpzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykg
Y29uc3QKLXsKLSAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0dGluZ3Mu
c2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFtYWdlUmVj
dHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1JlcGxp
Y2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dPY2NsdWRpbmdSZWN0czsKLX0KLQot
dm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJl
ZUhvc3RJbXBsKQotewotICAgIENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIgPSBsYXllclRyZWVI
b3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpOwotICAgIGlmICghbV9odWRUZXh0dXJlKQotICAgICAg
ICBtX2h1ZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShsYXllclRyZWVIb3N0SW1w
bC0+cmVzb3VyY2VQcm92aWRlcigpKTsKLQotICAgIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCk7Ci0gICAgLy8gVXNlIGEg
ZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVlZCB0by4uLgotICAgIEludFNpemUgaHVk
U2l6ZTsKLSAgICBpZiAoc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdzKSB8fCBzaG93RGVi
dWdSZWN0cyhzZXR0aW5ncykpIHsKLSAgICAgICAgaHVkU2l6ZS5zZXRXaWR0aChtaW4oMjA0OCwg
bGF5ZXJUcmVlSG9zdEltcGwtPmRldmljZVZpZXdwb3J0U2l6ZSgpLndpZHRoKCkpKTsKLSAgICAg
ICAgaHVkU2l6ZS5zZXRIZWlnaHQobWluKDIwNDgsIGxheWVyVHJlZUhvc3RJbXBsLT5kZXZpY2VW
aWV3cG9ydFNpemUoKS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGh1ZFNpemUu
c2V0V2lkdGgoNTEyKTsKLSAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQoMTI4KTsKLSAgICB9Ci0K
LSAgICBpZiAoIW1faHVkVGV4dHVyZS0+aWQoKSAmJiAhbV9odWRUZXh0dXJlLT5hbGxvY2F0ZShD
Q1JlbmRlcmVyOjpJbXBsUG9vbCwgaHVkU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEND
UmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gUmVuZGVyIHBpeGVscyBpbnRvIHRoZSB0ZXh0dXJlLgotICAgIFBsYXRmb3JtQ2FudmFz
IGNhbnZhczsKLSAgICBjYW52YXMucmVzaXplKGh1ZFNpemUpOwotICAgIHsKLSAgICAgICAgUGxh
dGZvcm1DYW52YXM6OlBhaW50ZXIgcGFpbnRlcigmY2FudmFzLCBQbGF0Zm9ybUNhbnZhczo6UGFp
bnRlcjo6R3JheXNjYWxlVGV4dCk7Ci0gICAgICAgIHBhaW50ZXIuY29udGV4dCgpLT5jbGVhclJl
Y3QoRmxvYXRSZWN0KDAsIDAsIGh1ZFNpemUud2lkdGgoKSwgaHVkU2l6ZS5oZWlnaHQoKSkpOwot
ICAgICAgICBkcmF3SHVkQ29udGVudHMocGFpbnRlci5jb250ZXh0KCksIGxheWVyVHJlZUhvc3RJ
bXBsLCBzZXR0aW5ncywgaHVkU2l6ZSk7Ci0gICAgfQotCi0gICAgLy8gVXBsb2FkIHRvIEdMLgot
ICAgIHsKLSAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMp
OwotICAgICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQoMCwgMCksIGh1ZFNpemUpOwotICAgICAg
ICBsYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLT51cGxvYWQobV9odWRUZXh0
dXJlLT5pZCgpLCBsb2NrZXIucGl4ZWxzKCksIHJlY3QsIHJlY3QsIHJlY3QpOwotICAgIH0KLQot
ICAgIGxheWVyUmVuZGVyZXItPmRyYXdIZWFkc1VwRGlzcGxheShtX2h1ZFRleHR1cmUuZ2V0KCks
IGh1ZFNpemUpOwotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdIdWRDb250ZW50cyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhv
c3RJbXBsLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgSW50U2l6
ZSYgaHVkU2l6ZSkKLXsKLSAgICBpZiAoc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdzKSkg
ewotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMCwgMCwgMCwgMTkyKSwgQ29s
b3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgw
LCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCkpKTsKLSAgICB9Ci0KLSAgICBp
bnQgZnBzQ291bnRlckhlaWdodCA9IDQwOwotICAgIGludCBmcHNDb3VudGVyVG9wID0gMjsKLSAg
ICBpbnQgcGxhdGZvcm1MYXllclRyZWVUb3A7Ci0KLSAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0Nv
dW50ZXIpCi0gICAgICAgIHBsYXRmb3JtTGF5ZXJUcmVlVG9wID0gZnBzQ291bnRlclRvcCArIGZw
c0NvdW50ZXJIZWlnaHQ7Ci0gICAgZWxzZQotICAgICAgICBwbGF0Zm9ybUxheWVyVHJlZVRvcCA9
IDA7Ci0KLSAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpCi0gICAgICAgIGRyYXdGUFND
b3VudGVyKGNvbnRleHQsIGxheWVyVHJlZUhvc3RJbXBsLT5mcHNDb3VudGVyKCksIGZwc0NvdW50
ZXJUb3AsIGZwc0NvdW50ZXJIZWlnaHQpOwotCi0gICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJl
ZShzZXR0aW5ncykgJiYgbV9mb250QXRsYXMpIHsKLSAgICAgICAgU3RyaW5nIGxheWVyVHJlZSA9
IGxheWVyVHJlZUhvc3RJbXBsLT5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgbV9mb250QXRs
YXMtPmRyYXdUZXh0KGNvbnRleHQsIGxheWVyVHJlZSwgSW50UG9pbnQoMiwgcGxhdGZvcm1MYXll
clRyZWVUb3ApLCBodWRTaXplKTsKLSAgICB9Ci0KLSAgICBpZiAoc2hvd0RlYnVnUmVjdHMoc2V0
dGluZ3MpKQotICAgICAgICBkcmF3RGVidWdSZWN0cyhjb250ZXh0LCBsYXllclRyZWVIb3N0SW1w
bC0+ZGVidWdSZWN0SGlzdG9yeSgpLCBzZXR0aW5ncyk7Ci19Ci0KLXZvaWQgQ0NIZWFkc1VwRGlz
cGxheTo6ZHJhd0ZQU0NvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0ZyYW1lUmF0
ZUNvdW50ZXIqIGZwc0NvdW50ZXIsIGludCB0b3AsIGludCBoZWlnaHQpCi17Ci0gICAgZmxvYXQg
dGV4dFdpZHRoID0gMTcwOyAvLyBzbyB0ZXh0IGZpdHMgb24gbGludXguCi0gICAgZmxvYXQgZ3Jh
cGhXaWR0aCA9IGZwc0NvdW50ZXItPnRpbWVTdGFtcEhpc3RvcnlTaXplKCk7Ci0KLSAgICAvLyBE
cmF3IHRoZSBGUFMgdGV4dC4KLSAgICBkcmF3RlBTQ291bnRlclRleHQoY29udGV4dCwgZnBzQ291
bnRlciwgdG9wLCB0ZXh0V2lkdGgsIGhlaWdodCk7Ci0KLSAgICAvLyBEcmF3IEZQUyBncmFwaC4K
LSAgICBjb25zdCBkb3VibGUgbG9GUFMgPSAwOwotICAgIGNvbnN0IGRvdWJsZSBoaUZQUyA9IDgw
OwotICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBjb250ZXh0
LT5zZXRGaWxsQ29sb3IoQ29sb3IoMTU0LCAyMDUsIDUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCwgZ3Jh
cGhXaWR0aCwgaGVpZ2h0IC8gMikpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigy
NTUsIDI1MCwgMjA1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC0+ZmlsbFJl
Y3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCArIGhlaWdodCAvIDIsIGdyYXBoV2lkdGgs
IGhlaWdodCAvIDIpKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAs
IDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0KLSAgICBpbnQgZ3JhcGhMZWZ0
ID0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0V2lkdGggKyAzKTsKLSAgICBJbnRQb2ludCBwcmV2KC0x
LCAwKTsKLSAgICBpbnQgeCA9IDA7Ci0gICAgZG91YmxlIGggPSBzdGF0aWNfY2FzdDxkb3VibGU+
KGhlaWdodCAtIDIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnBzQ291bnRlci0+dGltZVN0
YW1wSGlzdG9yeVNpemUoKSAtIDE7ICsraSkgewotICAgICAgICBpbnQgaiA9IGkgKyAxOwotICAg
ICAgICBkb3VibGUgZGVsdGEgPSBmcHNDb3VudGVyLT50aW1lU3RhbXBPZlJlY2VudEZyYW1lKGop
IC0gZnBzQ291bnRlci0+dGltZVN0YW1wT2ZSZWNlbnRGcmFtZShpKTsKLQotICAgICAgICAvLyBT
a2lwIHBsb3R0aW5nIHRoaXMgcGFydGljdWxhciBpbnN0YW50YW5lb3VzIGZyYW1lIHJhdGUgaWYg
aXQgaXMgbm90IGxpa2VseSB0byBoYXZlIGJlZW4gdmFsaWQuCi0gICAgICAgIGlmIChmcHNDb3Vu
dGVyLT5pc0JhZEZyYW1lSW50ZXJ2YWwoZGVsdGEpKSB7Ci0gICAgICAgICAgICB4ICs9IDE7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGRvdWJsZSBmcHMgPSAx
LjAgLyBkZWx0YTsKLQotICAgICAgICAvLyBDbGFtcCB0aGUgRlBTIHRvIHRoZSByYW5nZSB3ZSB3
YW50IHRvIHBsb3QgdmlzdWFsbHkuCi0gICAgICAgIGRvdWJsZSBwID0gMSAtICgoZnBzIC0gbG9G
UFMpIC8gKGhpRlBTIC0gbG9GUFMpKTsKLSAgICAgICAgaWYgKHAgPCAwKQotICAgICAgICAgICAg
cCA9IDA7Ci0gICAgICAgIGlmIChwID4gMSkKLSAgICAgICAgICAgIHAgPSAxOwotCi0gICAgICAg
IC8vIFBsb3QgdGhpcyBkYXRhIHBvaW50LgotICAgICAgICBJbnRQb2ludCBjdXIoZ3JhcGhMZWZ0
ICsgeCwgMSArIHRvcCArIHAqaCk7Ci0gICAgICAgIGlmIChwcmV2LngoKSAhPSAtMSkKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdMaW5lKHByZXYsIGN1cik7Ci0gICAgICAgIHByZXYgPSBjdXI7
Ci0gICAgICAgIHggKz0gMTsKLSAgICB9Ci19Ci0KLXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJh
d0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFtZVJhdGVDb3Vu
dGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAg
ZG91YmxlIGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbjsKLSAgICBmcHNDb3VudGVyLT5nZXRBdmVy
YWdlRlBTQW5kU3RhbmRhcmREZXZpYXRpb24oYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9uKTsKLQot
ICAgIC8vIERyYXcgYmFja2dyb3VuZC4KLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3Io
MCwgMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC0+ZmlsbFJl
Y3QoRmxvYXRSZWN0KDIsIHRvcCwgd2lkdGgsIGhlaWdodCkpOwotCi0gICAgLy8gRHJhdyBGUFMg
dGV4dC4KLSAgICBpZiAobV9mb250QXRsYXMpCi0gICAgICAgIG1fZm9udEF0bGFzLT5kcmF3VGV4
dChjb250ZXh0LCBTdHJpbmc6OmZvcm1hdCgiRlBTOiAlNC4xZiArLy0gJTMuMWYiLCBhdmVyYWdl
RlBTLCBzdGREZXZpYXRpb24pLCBJbnRQb2ludCgxMCwgaGVpZ2h0IC8gMyksIEludFNpemUod2lk
dGgsIGhlaWdodCkpOwotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdEZWJ1Z1JlY3Rz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1Z1JlY3RI
aXN0b3J5LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICBjb25z
dCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+JiBkZWJ1Z1JlY3RzID0gZGVidWdSZWN0SGlzdG9yeS0+ZGVi
dWdSZWN0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVidWdSZWN0cy5zaXplKCk7
ICsraSkgewotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUGFpbnRSZWN0VHlw
ZSkgewotICAgICAgICAgICAgLy8gUGFpbnQgcmVjdHMgaW4gcmVkCi0gICAgICAgICAgICBjb250
ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0
LCBDb2xvcigyNTUsIDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUHJvcGVydHlDaGFuZ2VkUmVj
dFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFByb3BlcnR5LWNoYW5nZWQgcmVjdHMgaW4gYmx1ZQot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1LCAyNTUp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRl
YnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMCwgMCwgMjU1LCAzMCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3Qs
IDIuMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFN1
cmZhY2VEYW1hZ2VSZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gU3VyZmFjZSBkYW1hZ2UgcmVj
dHMgaW4geWVsbG93LW9yYW5nZQotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3IoMjAwLCAxMDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigyMDAsIDEwMCwg
MCwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0cm9r
ZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGRlYnVnUmVjdHNbaV0udHlwZSA9PSBSZXBsaWNhU2NyZWVuU3BhY2VSZWN0VHlwZSkgewotICAg
ICAgICAgICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIGdyZWVuLgotICAgICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTAwLCAyMDAsIDAsIDI1NSksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5y
ZWN0LCBDb2xvcigxMDAsIDIwMCwgMCwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBTY3JlZW5TcGFjZVJl
Y3RUeXBlKSB7Ci0gICAgICAgICAgICAvLyBTY3JlZW4gc3BhY2UgcmVjdHMgaW4gcHVycGxlLgot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTAwLCAwLCAyMDAsIDI1
NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
ZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigxMDAsIDAsIDIwMCwgMTApLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5y
ZWN0LCAyLjApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9
PSBPY2NsdWRpbmdSZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gT2NjbHVkaW5nIHJlY3RzIGlu
IGEgcmVkZGlzaCBjb2xvci4KLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENv
bG9yKDIwMCwgMCwgMTAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjAwLCAwLCAxMDAs
IDEwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdHJva2VS
ZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotfQot
Ci0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxh
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjZiZjUxZTFmNGVk
YzZjNjBjMjE2MzIzMDhjZTI2OGYxZDNhYTYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgQ0NIZWFkc1VwRGlzcGxheV9oCi0jZGVmaW5lIENDSGVh
ZHNVcERpc3BsYXlfaAotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5j
bHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKLSNpbmNsdWRlICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0RlYnVnUmVjdEhpc3Rvcnk7Ci1jbGFz
cyBDQ0ZyYW1lUmF0ZUNvdW50ZXI7Ci1jbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwotY2xhc3MgVGV4dXJlQWxsb2NhdG9yOwotCi1zdHJ1Y3QgQ0NMYXll
clRyZWVTZXR0aW5nczsKLQotLy8gQ2xhc3MgdGhhdCBoYW5kbGVzIGRyYXdpbmcgb2YgY29tcG9z
aXRlZCByZW5kZXIgbGF5ZXJzIHVzaW5nIEdMLgotY2xhc3MgQ0NIZWFkc1VwRGlzcGxheSB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NIZWFkc1VwRGlzcGxheSk7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8Q0NIZWFkc1VwRGlzcGxheT4gY3JlYXRlKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NIZWFkc1VwRGlzcGxheSgpKTsKLSAgICB9Ci0KLSAg
ICB+Q0NIZWFkc1VwRGlzcGxheSgpOwotCi0gICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0
cjxDQ0ZvbnRBdGxhcz4pOwotCi0gICAgYm9vbCBlbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmKSBjb25zdDsKLSAgICB2b2lkIGRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCopOwotCi1w
cml2YXRlOgotICAgIENDSGVhZHNVcERpc3BsYXkoKSB7IH07Ci0KLSAgICB2b2lkIGRyYXdIdWRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQqLCBDQ0xheWVyVHJlZUhvc3RJbXBsKiwgY29uc3QgQ0NM
YXllclRyZWVTZXR0aW5ncyYsIGNvbnN0IEludFNpemUmIGh1ZFNpemUpOwotICAgIHZvaWQgZHJh
d0ZQU0NvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiwgQ0NGcmFtZVJhdGVDb3VudGVyKiwgaW50IHRv
cCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkcmF3RlBTQ291bnRlclRleHQoR3JhcGhpY3NDb250
ZXh0KiwgQ0NGcmFtZVJhdGVDb3VudGVyKiwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKLSAgICB2b2lkIGRyYXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIENDRGVidWdSZWN0
SGlzdG9yeSosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKLQotICAgIGJvb2wgc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKSBjb25zdDsKLSAgICBi
b29sIHNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKSBjb25zdDsKLQot
ICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IG1faHVkVGV4dHVyZTsKLSAgICBPd25QdHI8Q0NG
b250QXRsYXM+IG1fZm9udEF0bGFzOwotfTsKLQotfQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk0YTRjM2I1OWRiMmNlNjgxYWRkYWRh
YmZiZmY3NjI0NWRkNDg5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuY3BwCkBA
IC0wLDAgKzEsMjYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
Y2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNE
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ2FudmFzLmgiCisjaW5j
bHVkZSAiY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgiCisjaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMu
aCIKKyNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NRdWFkU2luay5oIgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKwordXNpbmcgV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6Q0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbChpbnQgaWQsIFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRB
dGxhcykKKyAgICA6IENDTGF5ZXJJbXBsKGlkKSwKKyAgICAgIG1fZm9udEF0bGFzKGZvbnRBdGxh
cykKK3sKK30KKworQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6fkNDSGVhZHNVcERpc3BsYXlM
YXllckltcGwoKQoreworfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OndpbGxE
cmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKK3sKKyAgICBDQ0xheWVy
SW1wbDo6d2lsbERyYXcocmVzb3VyY2VQcm92aWRlcik7CisKKyAgICBpZiAoIW1faHVkVGV4dHVy
ZSkKKyAgICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUocmVzb3Vy
Y2VQcm92aWRlcik7CisKKyAgICAvLyBGSVhNRTogU2NhbGUgdGhlIEhVRCBieSBkZXZpY2VTY2Fs
ZSB0byBtYWtlIGl0IG1vcmUgZnJpZW5kbHkgdW5kZXIgaGlnaCBEUEkuCisKKyAgICBpZiAobV9o
dWRUZXh0dXJlLT5zaXplKCkgIT0gYm91bmRzKCkpCisgICAgICAgIG1faHVkVGV4dHVyZS0+ZnJl
ZSgpOworCisgICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkgJiYgIW1faHVkVGV4dHVyZS0+YWxs
b2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIGJvdW5kcygpLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBSZW5kZXIgcGl4ZWxzIGludG8gdGhlIHRleHR1cmUuCisgICAgUGxhdGZv
cm1DYW52YXMgY2FudmFzOworICAgIGNhbnZhcy5yZXNpemUoYm91bmRzKCkpOworICAgIHsKKyAg
ICAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgcGFpbnRlcigmY2FudmFzLCBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6R3JheXNjYWxlVGV4dCk7CisgICAgICAgIHBhaW50ZXIuY29udGV4dCgp
LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhl
aWdodCgpKSk7CisgICAgICAgIGRyYXdIdWRDb250ZW50cyhwYWludGVyLmNvbnRleHQoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIo
JmNhbnZhcyk7CisgICAgICAgIEludFJlY3QgbGF5ZXJSZWN0KEludFBvaW50KCksIGJvdW5kcygp
KTsKKyAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKG1faHVkVGV4dHVyZS0+aWQoKSwg
bG9ja2VyLnBpeGVscygpLCBsYXllclJlY3QsIGxheWVyUmVjdCwgbGF5ZXJSZWN0KTsKKyAgICB9
Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFk
U2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGJvb2wmKQoreworICAgIGlmICghbV9odWRUZXh0dXJlLT5pZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGJvdW5kcygpKTsKKyAgICBib29s
IHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CisgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCAx
LCAxKTsKKyAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoV2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwg
bV9odWRUZXh0dXJlLT5pZCgpLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkp
OworfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRpZERyYXcoQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQoreworICAgIENDTGF5ZXJJbXBsOjpkaWREcmF3
KHJlc291cmNlUHJvdmlkZXIpOworCisgICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIGFzc2VydCB3aWxsIG5v
dCBiZSB0cnVlIHdoZW4gc2VuZGluZyByZXNvdXJjZXMgdG8gYQorICAgIC8vIHBhcmVudCBjb21w
b3NpdG9yLiBXZSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaG9sZCBvbiB0byBtX2ZyYW1lIGZvcgor
ICAgIC8vIGxvbmdlciwgYW5kIGhhdmUgc2V2ZXJhbCAiY3VycmVudCBmcmFtZXMiIGluIHRoZSBw
aXBlbGluZS4KKyAgICBBU1NFUlQoIXJlc291cmNlUHJvdmlkZXItPmluVXNlQnlDb25zdW1lciht
X2h1ZFRleHR1cmUtPmlkKCkpKTsKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBs
OjpkaWRMb3NlQ29udGV4dCgpCit7CisgICAgbV9odWRUZXh0dXJlLT5sZWFrKCk7Cit9CisKK3Zv
aWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6ZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5n
cyA9IGxheWVyVHJlZUhvc3RJbXBsKCktPnNldHRpbmdzKCk7CisKKyAgICBpZiAoc2V0dGluZ3Mu
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKSB7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihD
b2xvcigwLCAwLCAwLCAxOTIpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4
dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIGJvdW5kcygpLndpZHRoKCksIGJvdW5kcygpLmhl
aWdodCgpKSk7CisgICAgfQorCisgICAgaW50IGZwc0NvdW50ZXJIZWlnaHQgPSA0MDsKKyAgICBp
bnQgZnBzQ291bnRlclRvcCA9IDI7CisgICAgaW50IHBsYXRmb3JtTGF5ZXJUcmVlVG9wOworCisg
ICAgaWYgKHNldHRpbmdzLnNob3dGUFNDb3VudGVyKQorICAgICAgICBwbGF0Zm9ybUxheWVyVHJl
ZVRvcCA9IGZwc0NvdW50ZXJUb3AgKyBmcHNDb3VudGVySGVpZ2h0OworICAgIGVsc2UKKyAgICAg
ICAgcGxhdGZvcm1MYXllclRyZWVUb3AgPSAwOworCisgICAgaWYgKHNldHRpbmdzLnNob3dGUFND
b3VudGVyKQorICAgICAgICBkcmF3RlBTQ291bnRlcihjb250ZXh0LCBsYXllclRyZWVIb3N0SW1w
bCgpLT5mcHNDb3VudGVyKCksIGZwc0NvdW50ZXJUb3AsIGZwc0NvdW50ZXJIZWlnaHQpOworCisg
ICAgaWYgKHNldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSAmJiBtX2ZvbnRBdGxhcykgewor
ICAgICAgICBTdHJpbmcgbGF5ZXJUcmVlID0gbGF5ZXJUcmVlSG9zdEltcGwoKS0+bGF5ZXJUcmVl
QXNUZXh0KCk7CisgICAgICAgIG1fZm9udEF0bGFzLT5kcmF3VGV4dChjb250ZXh0LCBsYXllclRy
ZWUsIEludFBvaW50KDIsIHBsYXRmb3JtTGF5ZXJUcmVlVG9wKSwgYm91bmRzKCkpOworICAgIH0K
KworICAgIGlmIChzZXR0aW5ncy5zaG93RGVidWdSZWN0cygpKQorICAgICAgICBkcmF3RGVidWdS
ZWN0cyhjb250ZXh0LCBsYXllclRyZWVIb3N0SW1wbCgpLT5kZWJ1Z1JlY3RIaXN0b3J5KCkpOwor
fQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdGUFNDb3VudGVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFtZVJhdGVDb3VudGVyKiBmcHNDb3VudGVyLCBpbnQg
dG9wLCBpbnQgaGVpZ2h0KQoreworICAgIGZsb2F0IHRleHRXaWR0aCA9IDE3MDsgLy8gc28gdGV4
dCBmaXRzIG9uIGxpbnV4LgorICAgIGZsb2F0IGdyYXBoV2lkdGggPSBmcHNDb3VudGVyLT50aW1l
U3RhbXBIaXN0b3J5U2l6ZSgpOworCisgICAgLy8gRHJhdyB0aGUgRlBTIHRleHQuCisgICAgZHJh
d0ZQU0NvdW50ZXJUZXh0KGNvbnRleHQsIGZwc0NvdW50ZXIsIHRvcCwgdGV4dFdpZHRoLCBoZWln
aHQpOworCisgICAgLy8gRHJhdyBGUFMgZ3JhcGguCisgICAgY29uc3QgZG91YmxlIGxvRlBTID0g
MDsKKyAgICBjb25zdCBkb3VibGUgaGlGUFMgPSA4MDsKKyAgICBjb250ZXh0LT5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7CisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDE1NCwg
MjA1LCA1MCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KEZs
b2F0UmVjdCgyICsgdGV4dFdpZHRoLCB0b3AsIGdyYXBoV2lkdGgsIGhlaWdodCAvIDIpKTsKKyAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTAsIDIwNSksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyICsgdGV4dFdpZHRo
LCB0b3AgKyBoZWlnaHQgLyAyLCBncmFwaFdpZHRoLCBoZWlnaHQgLyAyKSk7CisgICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworCisgICAgaW50IGdyYXBoTGVmdCA9IHN0YXRpY19jYXN0PGludD4odGV4dFdp
ZHRoICsgMyk7CisgICAgSW50UG9pbnQgcHJldigtMSwgMCk7CisgICAgaW50IHggPSAwOworICAg
IGRvdWJsZSBoID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihoZWlnaHQgLSAyKTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGZwc0NvdW50ZXItPnRpbWVTdGFtcEhpc3RvcnlTaXplKCkgLSAxOyArK2kp
IHsKKyAgICAgICAgaW50IGogPSBpICsgMTsKKyAgICAgICAgZG91YmxlIGRlbHRhID0gZnBzQ291
bnRlci0+dGltZVN0YW1wT2ZSZWNlbnRGcmFtZShqKSAtIGZwc0NvdW50ZXItPnRpbWVTdGFtcE9m
UmVjZW50RnJhbWUoaSk7CisKKyAgICAgICAgLy8gU2tpcCBwbG90dGluZyB0aGlzIHBhcnRpY3Vs
YXIgaW5zdGFudGFuZW91cyBmcmFtZSByYXRlIGlmIGl0IGlzIG5vdCBsaWtlbHkgdG8gaGF2ZSBi
ZWVuIHZhbGlkLgorICAgICAgICBpZiAoZnBzQ291bnRlci0+aXNCYWRGcmFtZUludGVydmFsKGRl
bHRhKSkgeworICAgICAgICAgICAgeCArPSAxOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKworICAgICAgICBkb3VibGUgZnBzID0gMS4wIC8gZGVsdGE7CisKKyAgICAgICAgLy8g
Q2xhbXAgdGhlIEZQUyB0byB0aGUgcmFuZ2Ugd2Ugd2FudCB0byBwbG90IHZpc3VhbGx5LgorICAg
ICAgICBkb3VibGUgcCA9IDEgLSAoKGZwcyAtIGxvRlBTKSAvIChoaUZQUyAtIGxvRlBTKSk7Cisg
ICAgICAgIGlmIChwIDwgMCkKKyAgICAgICAgICAgIHAgPSAwOworICAgICAgICBpZiAocCA+IDEp
CisgICAgICAgICAgICBwID0gMTsKKworICAgICAgICAvLyBQbG90IHRoaXMgZGF0YSBwb2ludC4K
KyAgICAgICAgSW50UG9pbnQgY3VyKGdyYXBoTGVmdCArIHgsIDEgKyB0b3AgKyBwKmgpOworICAg
ICAgICBpZiAocHJldi54KCkgIT0gLTEpCisgICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZShw
cmV2LCBjdXIpOworICAgICAgICBwcmV2ID0gY3VyOworICAgICAgICB4ICs9IDE7CisgICAgfQor
fQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdGUFNDb3VudGVyVGV4dChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRnJhbWVSYXRlQ291bnRlciogZnBzQ291bnRlciwg
aW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIGRvdWJsZSBhdmVyYWdlRlBT
LCBzdGREZXZpYXRpb247CisgICAgZnBzQ291bnRlci0+Z2V0QXZlcmFnZUZQU0FuZFN0YW5kYXJk
RGV2aWF0aW9uKGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbik7CisKKyAgICAvLyBEcmF3IGJhY2tn
cm91bmQuCisgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDI1NSksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyLCB0
b3AsIHdpZHRoLCBoZWlnaHQpKTsKKworICAgIC8vIERyYXcgRlBTIHRleHQuCisgICAgaWYgKG1f
Zm9udEF0bGFzKQorICAgICAgICBtX2ZvbnRBdGxhcy0+ZHJhd1RleHQoY29udGV4dCwgU3RyaW5n
Ojpmb3JtYXQoIkZQUzogJTQuMWYgKy8tICUzLjFmIiwgYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9u
KSwgSW50UG9pbnQoMTAsIGhlaWdodCAvIDMpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKK30K
Kwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RGVidWdSZWN0cyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlzdG9yeSkK
K3sKKyAgICBjb25zdCBWZWN0b3I8Q0NEZWJ1Z1JlY3Q+JiBkZWJ1Z1JlY3RzID0gZGVidWdSZWN0
SGlzdG9yeS0+ZGVidWdSZWN0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVidWdS
ZWN0cy5zaXplKCk7ICsraSkgeworCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0g
UGFpbnRSZWN0VHlwZSkgeworICAgICAgICAgICAgLy8gUGFpbnQgcmVjdHMgaW4gcmVkCisgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDAsIDI1NSksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdS
ZWN0c1tpXS5yZWN0LCBDb2xvcigyNTUsIDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4w
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUHJvcGVy
dHlDaGFuZ2VkUmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8vIFByb3BlcnR5LWNoYW5nZWQgcmVj
dHMgaW4gYmx1ZQorICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwg
MCwgMjU1LCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMCwgMCwgMjU1LCAzMCksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1Jl
Y3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVidWdSZWN0c1tp
XS50eXBlID09IFN1cmZhY2VEYW1hZ2VSZWN0VHlwZSkgeworICAgICAgICAgICAgLy8gU3VyZmFj
ZSBkYW1hZ2UgcmVjdHMgaW4geWVsbG93LW9yYW5nZQorICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IoQ29sb3IoMjAwLCAxMDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xv
cigyMDAsIDEwMCwgMCwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBSZXBsaWNhU2NyZWVuU3BhY2VSZWN0
VHlwZSkgeworICAgICAgICAgICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIGdyZWVuLgorICAg
ICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTAwLCAyMDAsIDAsIDI1NSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVi
dWdSZWN0c1tpXS5yZWN0LCBDb2xvcigxMDAsIDIwMCwgMCwgMzApLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0
LCAyLjApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBT
Y3JlZW5TcGFjZVJlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBTY3JlZW4gc3BhY2UgcmVjdHMg
aW4gcHVycGxlLgorICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTAw
LCAwLCAyMDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4
dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigxMDAsIDAsIDIwMCwgMTApLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVi
dWdSZWN0c1tpXS5yZWN0LCAyLjApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlYnVnUmVj
dHNbaV0udHlwZSA9PSBPY2NsdWRpbmdSZWN0VHlwZSkgeworICAgICAgICAgICAgLy8gT2NjbHVk
aW5nIHJlY3RzIGluIGEgcmVkZGlzaCBjb2xvci4KKyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKENvbG9yKDIwMCwgMCwgMTAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3Io
MjAwLCAwLCAxMDAsIDEwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250
ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4Mzc4YTVmZTllZWUwNTExNjljNjlhMDg3YjI2MzQ2MDE3N2E1MGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbF9oCisjZGVmaW5lIENDSGVhZHNVcERp
c3BsYXlMYXllckltcGxfaAorCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRl
ICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBD
Q0RlYnVnUmVjdEhpc3Rvcnk7CitjbGFzcyBDQ0ZvbnRBdGxhczsKK2NsYXNzIENDRnJhbWVSYXRl
Q291bnRlcjsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3MgQ0NIZWFkc1VwRGlzcGxh
eUxheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbD4gY3JlYXRlKGludCBpZCwgUGFzc093
blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKGlkLCBmb250QXRsYXMpKTsKKyAgICB9
CisgICAgdmlydHVhbCB+Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCgpOworCisgICAgdmlydHVh
bCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRE
cmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGRp
ZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJJc0Fsd2F5
c0RhbWFnZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6Cisg
ICAgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbChpbnQsIFBhc3NPd25QdHI8Q0NGb250QXRsYXM+
KTsKKworICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiAiSGVhZHNVcERpc3BsYXlMYXllciI7IH0KKworICAgIHZvaWQgZHJh
d0h1ZENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCopOworICAgIHZvaWQgZHJhd0ZQU0NvdW50ZXIo
R3JhcGhpY3NDb250ZXh0KiwgQ0NGcmFtZVJhdGVDb3VudGVyKiwgaW50IHRvcCwgaW50IGhlaWdo
dCk7CisgICAgdm9pZCBkcmF3RlBTQ291bnRlclRleHQoR3JhcGhpY3NDb250ZXh0KiwgQ0NGcmFt
ZVJhdGVDb3VudGVyKiwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lk
IGRyYXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIENDRGVidWdSZWN0SGlzdG9yeSopOwor
CisgICAgT3duUHRyPENDRm9udEF0bGFzPiBtX2ZvbnRBdGxhczsKKyAgICBPd25QdHI8Q0NTY29w
ZWRUZXh0dXJlPiBtX2h1ZFRleHR1cmU7Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ0hlYWRzVXBE
aXNwbGF5TGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDI1YmVkYzIyMDdlNzI5
MGNlYjdhZjliODU1ZmRiMmM1NzU3N2Y2YzIuLjkwYTUxMTI3ZjkyNDJkZGJkYzQwYmQ2ZGNiZGE3
OTU3YmQzZDdjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMjU1LDExICsyNTUsMTMgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRTdGFja2luZ09yZGVyQ2hhbmdlZChib29sKTsKIAotICAg
IGJvb2wgbGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUHJvcGVy
dHlDaGFuZ2VkOyB9CisgICAgYm9vbCBsYXllclByb3BlcnR5Q2hhbmdlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgfHwgbGF5ZXJJc0Fsd2F5c0RhbWFnZWQoKTsgfQog
ICAgIGJvb2wgbGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2VkKCkgY29uc3Q7CiAKICAgICB2b2lk
IHJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
bGF5ZXJJc0Fsd2F5c0RhbWFnZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIqIGxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0
dXJuIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIFJl
Z2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKaW5kZXggZDJhNzllYjFiZmJlNWY2NmRlMWYyOTBiZTU3MTJiZjEwYTZm
YTE3NS4uN2RiZDlkOTkwNDVkNmI1NTJjZmUzYmU5NWUzYmFkYzM2ZTEwYWI0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3QuaCIKIAorI2luY2x1ZGUgIkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSZWdpb24uaCIK
ICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCkBAIC03OCw2ICs3OSw3IEBAIENDTGF5ZXJUcmVlSG9z
dDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBD
Q0xheWVyVHJlCiAgICAgLCBtX2NvbnRleHRMb3N0KGZhbHNlKQogICAgICwgbV9udW1UaW1lc1Jl
Y3JlYXRlU2hvdWxkRmFpbCgwKQogICAgICwgbV9udW1GYWlsZWRSZWNyZWF0ZUF0dGVtcHRzKDAp
CisgICAgLCBtX2h1ZExheWVyKEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkp
CiAgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcigx
KQogICAgICwgbV92aXNpYmxlKHRydWUpCkBAIC0xMDYsMTQgKzEwOCw2IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAgICBpZiAoIW1fcHJveHktPmluaXRpYWxpemVDb250
ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIE9ubHkgYWxsb2NhdGUgdGhl
IGZvbnQgYXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFkcy11cCBkaXNwbGF5
LgotICAgIGlmIChtX3NldHRpbmdzLnNob3dGUFNDb3VudGVyIHx8IG1fc2V0dGluZ3Muc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NMYXllclRy
ZWVIb3N0Ojppbml0aWFsaXplOjppbml0aWFsaXplRm9udEF0bGFzIik7Ci0gICAgICAgIE93blB0
cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKENDRm9udEF0bGFzOjpjcmVhdGUoKSk7Ci0gICAgICAg
IGZvbnRBdGxhcy0+aW5pdGlhbGl6ZSgpOwotICAgICAgICBtX3Byb3h5LT5zZXRGb250QXRsYXMo
Zm9udEF0bGFzLnJlbGVhc2UoKSk7Ci0gICAgfQotCiAgICAgbV9jb21wb3NpdG9ySWRlbnRpZmll
ciA9IG1fcHJveHktPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC0yNDIsNyArMjM2LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRP
bkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB7CiAgICAgQVNTRVJU
KENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAorICAgIGlmIChtX3NldHRpbmdzLnNob3dEZWJ1
Z0luZm8oKSkKKyAgICAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1faHVkTGF5ZXIpOwogICAg
IGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVl
cyhyb290TGF5ZXIoKSwgaG9zdEltcGwtPmRldGFjaExheWVyVHJlZSgpLCBob3N0SW1wbCkpOwor
ICAgIG1faHVkTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKIAogICAgIC8vIFdlIG1heSBoYXZl
IGFkZGVkIGFuIGFuaW1hdGlvbiBkdXJpbmcgdGhlIHRyZWUgc3luYy4gVGhpcyB3aWxsIGNhdXNl
IGJvdGggbGF5ZXIgdHJlZSBob3N0cwogICAgIC8vIHRvIHZpc2l0IHRoZWlyIGNvbnRyb2xsZXJz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA4Mzk3ODU5MDUzZWNlNjIwMmQxZDE5
MDlkZDk2ZTFiMDI3ZjE4YTIxLi44MTU1NWYxZTA3MjAxYmQyZTlhZDQ1YzNkMmYzOGMxNTExOGE0
MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTEyLDYgKzExMiw5IEBAIHN0
cnVjdCBDQ0xheWVyVHJlZVNldHRpbmdzIHsKICAgICBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZTsK
ICAgICBJbnRTaXplIG1heFVudGlsZWRMYXllclNpemU7CiAgICAgSW50U2l6ZSBtaW5pbXVtT2Nj
bHVzaW9uVHJhY2tpbmdTaXplOworCisgICAgYm9vbCBzaG93RGVidWdJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIHx8IHNob3dGUFNDb3VudGVyIHx8IHNob3dEZWJ1
Z1JlY3RzKCk7IH0KKyAgICBib29sIHNob3dEZWJ1Z1JlY3RzKCkgY29uc3QgeyByZXR1cm4gc2hv
d1BhaW50UmVjdHMgfHwgc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNob3dTdXJmYWNlRGFt
YWdlUmVjdHMgfHwgc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwgc2hvd1JlcGxpY2FTY3JlZW5TcGFj
ZVJlY3RzIHx8IHNob3dPY2NsdWRpbmdSZWN0czsgfQogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3Jt
YXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NM
YXllclRyZWVIb3N0CkBAIC0zMTAsNiArMzEzLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1G
YWlsZWRSZWNyZWF0ZUF0dGVtcHRzOwogCiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9v
dExheWVyOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX2h1ZExheWVyOwogICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsK
ICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IG1fc3VyZmFjZU1lbW9yeVBsYWNlaG9s
ZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDBkOWQ3
ZmY0MWU1ZWI1MWZkNDhmMDJmZmZkMmQ1OWFmOWNjNDEwNzAuLjQ2OTY3MzczMTFjODAzYWVkMjhh
MzU4N2UwNWNlMDQ3MDY2NGFhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNv
dXJjZS5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NGcmFt
ZVJhdGVDb3VudGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheS5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgpAQCAtMTIzLDcgKzEyMiw2
IEBAIENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAs
IG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQoZmFsc2UpCiAgICAg
LCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1pdCgpKQotICAgICwgbV9oZWFkc1VwRGlzcGxh
eShDQ0hlYWRzVXBEaXNwbGF5OjpjcmVhdGUoKSkKICAgICAsIG1fcGFnZVNjYWxlKDEpCiAgICAg
LCBtX3BhZ2VTY2FsZURlbHRhKDEpCiAgICAgLCBtX3NlbnRQYWdlU2NhbGVEZWx0YSgxKQpAQCAt
NTUyLDE0ICs1NTAsMTEgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKGNv
bnN0IEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgbV9mcHNDb3VudGVyLT5tYXJrQmVnaW5uaW5nT2ZG
cmFtZShjdXJyZW50VGltZSgpKTsKIAogICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd0ZyYW1lKGZy
YW1lLnJlbmRlclBhc3NlcywgbV9yb290U2Npc3NvclJlY3QpOwotICAgIGlmIChtX2hlYWRzVXBE
aXNwbGF5LT5lbmFibGVkKHNldHRpbmdzKCkpKQotICAgICAgICBtX2hlYWRzVXBEaXNwbGF5LT5k
cmF3KHRoaXMpOwotICAgIG1fbGF5ZXJSZW5kZXJlci0+ZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlcy5zaXpl
KCk7IGkrKykKICAgICAgICAgZnJhbWUucmVuZGVyUGFzc2VzW2ldLT50YXJnZXRTdXJmYWNlKCkt
PmRhbWFnZVRyYWNrZXIoKS0+ZGlkRHJhd0RhbWFnZWRBcmVhKCk7CiAKLSAgICBpZiAobV9kZWJ1
Z1JlY3RIaXN0b3J5LT5lbmFibGVkKHNldHRpbmdzKCkpKQorICAgIGlmIChtX3NldHRpbmdzLnNo
b3dEZWJ1Z1JlY3RzKCkpCiAgICAgICAgIG1fZGVidWdSZWN0SGlzdG9yeS0+c2F2ZURlYnVnUmVj
dHNGb3JDdXJyZW50RnJhbWUobV9yb290TGF5ZXJJbXBsLmdldCgpLCAqZnJhbWUucmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCwgZnJhbWUub2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cywgc2V0dGluZ3Mo
KSk7CiAKICAgICArK21fc291cmNlQW5pbWF0aW9uRnJhbWVOdW1iZXI7CkBAIC0xMTYwLDExICsx
MTU1LDYgQEAgU3RyaW5nIENDTGF5ZXJUcmVlSG9zdEltcGw6OmxheWVyVHJlZUFzVGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIHRzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKQotewot
ICAgIG1faGVhZHNVcERpc3BsYXktPnNldEZvbnRBdGxhcyhmb250QXRsYXMpOwotfQotCiB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmR1bXBSZW5kZXJTdXJmYWNlcyhUZXh0U3RyZWFtJiB0cywg
aW50IGluZGVudCwgY29uc3QgQ0NMYXllckltcGwqIGxheWVyKSBjb25zdAogewogICAgIGlmIChs
YXllci0+cmVuZGVyU3VyZmFjZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CmluZGV4IGY5MzZlMzRkZDJjM2M0MzI5MmYyM2IyOGYwMTk5MzE2NWU1M2I0NTIuLmNiMDk2N2U0
NGI5YzZjMzc2MWMxZTllNTY2Zjg2NWUwOTM3NzhjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKQEAgLTM5LDkgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOwogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CiBj
bGFzcyBDQ0RlYnVnUmVjdEhpc3Rvcnk7Ci1jbGFzcyBDQ0ZvbnRBdGxhczsKIGNsYXNzIENDRnJh
bWVSYXRlQ291bnRlcjsKLWNsYXNzIENDSGVhZHNVcERpc3BsYXk7CiBjbGFzcyBDQ0xheWVySW1w
bDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjsKIGNsYXNzIEND
UGFnZVNjYWxlQW5pbWF0aW9uOwpAQCAtMTE4LDcgKzExNiw2IEBAIHB1YmxpYzoKICAgICBDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCgpIGNvbnN0OwogCiAgICAgU3RyaW5nIGxheWVyVHJlZUFz
VGV4dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRs
YXM+KTsKIAogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgaW50IHNvdXJjZUFu
aW1hdGlvbkZyYW1lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VBbmltYXRpb25GcmFt
ZU51bWJlcjsgfQpAQCAtMjY2LDggKzI2Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbnRl
bnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0OwogICAgIHNpemVfdCBtX21lbW9y
eUFsbG9jYXRpb25MaW1pdEJ5dGVzOwogCi0gICAgT3duUHRyPENDSGVhZHNVcERpc3BsYXk+IG1f
aGVhZHNVcERpc3BsYXk7Ci0KICAgICBmbG9hdCBtX3BhZ2VTY2FsZTsKICAgICBmbG9hdCBtX3Bh
Z2VTY2FsZURlbHRhOwogICAgIGZsb2F0IG1fc2VudFBhZ2VTY2FsZURlbHRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5o
CmluZGV4IGYxOTAzMmFiYmY2NjZhNDVmOWI0ZDhjMWUwYjliNGMxZDhkZTA2NWEuLjNiNmRjN2Y5
YzQ0ODZkNTZmZmQ0ZmI1YzQ4ZGRmNWZiNWZiN2FjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTMzLDcg
KzMzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ0ZvbnRBdGxhczsKIGNs
YXNzIENDVGhyZWFkOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3QgQ0NSZW5kZXJp
bmdTdGF0czsKQEAgLTEwNiw4ICsxMDUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWNxdWlyZUxheWVyVGV4dHVyZXMoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udEF0
bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KSA9IDA7Ci0KICAgICAvLyBEZWJ1ZyBob29rcwog
I2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyZXIuaAppbmRleCBkOTMxMDIyZGM1NTU3NWUxZThlZjZmOWI4MzMyMzNhNmY3MTRiZjMxLi45
Mzk3ODcxNzc1N2FlNDE1Y2E0MjIxMTAyYmE5Mjk5MzQ1MGJjY2FmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJl
ci5oCkBAIC04MSw5ICs4MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hl
ZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmLCBjb25z
dCBGbG9hdFJlY3QmIHJvb3RTY2lzc29yUmVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hEcmF3aW5nRnJhbWUoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkcmF3SGVhZHNVcERpc3Bs
YXkoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkgPSAwOwog
CiAgICAgLy8gd2FpdHMgZm9yIHJlbmRlcmluZyB0byBmaW5pc2gKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRl
eCAwMDJjN2E3YmZhZWE1MDVkNGQ0NGU3NWM2ZTM3YWVmNzAxZDZkYzQyLi4xNzIyZTNhY2M5ZmVk
MzBhMDA5N2ZhMmU0OGRlZTVjNTU2YWI5MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5o
IgogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5o
IgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJpbmdTdGF0cy5oIgpAQCAtMjY4LDEz
ICsyNjcsNiBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogICAgIG1fbGF5ZXJU
cmVlSG9zdCA9IDA7CiB9CiAKLXZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0Rm9udEF0bGFz
KFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykKLXsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPnNldEZvbnRBdGxhcyhmb250QXRsYXMpOwotfQotCiB2b2lkIENDU2lu
Z2xlVGhyZWFkUHJveHk6OnBvc3RBbmltYXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJl
YWQoUGFzc093blB0cjxDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvcj4gZXZlbnRzLCBkb3VibGUgd2Fs
bENsb2NrVGltZSkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGU4YWE3NTUxNTM2NmRmNDYwMjg1
MmVjNTViYTVlM2NlNDg2NTYxMzUuLjZkY2UxYzM1ZTg0ZmU3ZDUwMjlhZTZiMTQ3YzBmNzQwNTdh
ODg5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTYzLDcgKzYz
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBhY3F1aXJlTGF5ZXJUZXh0dXJlcygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBmb3JjZVNlcmlhbGl6ZU9uU3dhcEJ1ZmZlcnMoKSBPVkVSUklERTsKIAogICAg
IC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggOWI2ZGZlM2FjZTM5MDFlYzFlNjM1ZWRkZTU3MzU0OTY5Zjlj
OTQ0Mi4uMzA4NWRmM2VlMDEzYmFmZGU5MjlkZDQ1N2M0NjNkYTlkYzI0OTBlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oIgogI2luY2x1ZGUg
ImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUg
ImNjL0NDRnJhbWVSYXRlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKQEAgLTg2NiwxOSArODY1LDYg
QEAgc2l6ZV90IENDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0
CiAgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVyRnJhbWU7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykKLXsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpzZXRGb250
QXRsYXNPbkltcGxUaHJlYWQsIGZvbnRBdGxhcykpOwotCi19Ci0KLXZvaWQgQ0NUaHJlYWRQcm94
eTo6c2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRB
dGxhcykKLXsKLSAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldEZvbnRBdGxhcyhmb250QXRsYXMpOwotfQotCiB2b2lkIENDVGhyZWFkUHJveHk6
OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
biwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVk
LCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiBjYXBhYmlsaXRpZXMpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAwZjhhMzU0MDQwZTRmMDUwOGY4MTc0Zjlh
NGM5NWE0MWM0MTJhMjIxLi44NjBhMjAxNzM4NjY0YmU3OTRlYjc4OTg0Y2RlZmExY2I5NmY4ZTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC03MSw3ICs3MSw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgc2l6ZV90IG1heFBh
cnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBh
Y3F1aXJlTGF5ZXJUZXh0dXJlcygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGb250
QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBmb3JjZVNlcmlhbGl6ZU9uU3dhcEJ1ZmZlcnMoKSBPVkVSUklERTsKIAogICAgIC8vIENDTGF5
ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KQEAgLTE0NCw3ICsxNDMsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiwgQ0NHcmFwaGljc0NvbnRleHQqLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcyopOwogICAgIHZvaWQgaW1wbFNpZGVSZW5kZXJpbmdTdGF0
c09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDUmVuZGVyaW5nU3RhdHMqKTsKICAg
ICBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKLSAgICB2b2lkIHNldEZvbnRBdGxhc09u
SW1wbFRocmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFzPik7CiAgICAgdm9pZCBmb3JjZVNlcmlh
bGl6ZU9uU3dhcEJ1ZmZlcnNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2
b2lkIHNldE5lZWRzRm9yY2VkQ29tbWl0T25JbXBsVGhyZWFkKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qu
Y3BwCmluZGV4IDFiNmI4MDI4YjRmZjU0ZDU5NjQ5MmE4YTdhM2RhZTNmYjgwOTMxZGUuLmYxZDhk
YzFkMDNiZmU4MjAwZDVhYzNkMTUzMjkyYTQ2ODZlNTA5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNw
cApAQCAtNDE5LDcgKzQxOSw2IEBAIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIG9w
YXF1ZUJhY2tncm91bmQpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVtLmlu
aXRpYWxpemUoKSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uZHJhd0ZyYW1lKG1vY2tD
bGllbnQucmVuZGVyUGFzc2VzKCksIEZsb2F0UmVjdCgpKTsKLSAgICBsYXllclJlbmRlcmVyQ2hy
b21pdW0uZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAKICAgICAvLyBPbiBERUJVRyBidWlsZHMsIHJl
bmRlciBwYXNzZXMgd2l0aCBvcGFxdWUgYmFja2dyb3VuZCBjbGVhciB0byBibHVlIHRvCiAgICAg
Ly8gZWFzaWx5IHNlZSByZWdpb25zIHRoYXQgd2VyZSBub3QgZHJhd24gb24gdGhlIHNjcmVlbi4K
QEAgLTQ0Myw3ICs0NDIsNiBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCB0cmFu
c3BhcmVudEJhY2tncm91bmQpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVt
LmluaXRpYWxpemUoKSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uZHJhd0ZyYW1lKG1v
Y2tDbGllbnQucmVuZGVyUGFzc2VzKCksIEZsb2F0UmVjdCgpKTsKLSAgICBsYXllclJlbmRlcmVy
Q2hyb21pdW0uZmluaXNoRHJhd2luZ0ZyYW1lKCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgY29udGV4
dC0+Y2xlYXJDb3VudCgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154206</attachid>
            <date>2012-07-24 18:19:55 -0700</date>
            <delta_ts>2012-07-25 10:35:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92182-20120724211945.patch</filename>
            <type>text/plain</type>
            <size>63692</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2OTIwM2M2OTE0OWY3
NmE0OTdlNjlhOTJiNGNlMmEyZjE4ZWFiNS4uY2RjNmYxYTJhZWNlZGYxYWEzMjVlMjcyODBmZmIy
MjY4NjJiYzQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTA3LTI0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVHVy
biB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0IGNhbiBiZSBkcmF3biBhcyBh
IFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4K
KworICAgICAgICBCeSBjaGFuZ2luZyB0aGUgSFVEIGludG8gYSBxdWFkLCB3ZSBhcmUgYWJsZSB0
byBjcmVhdGUgYSBIVUQgYW5kIHBhc3MKKyAgICAgICAgaXQgdG8gdGhlIGhvc3QgY29tcG9zaXRv
ciwgYWxsb3dpbmcgdGhlIEhVRCB0byBiZSB1c2VkIGZvciByZW5kZXJlcnMKKyAgICAgICAgdW5k
ZXIgVWJlcmNvbXBvc2l0b3IuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgdGhlIHNwZWNp
YWwgZHJhd2luZyBjb2RlIGZvciB0aGUgSFVEIGZyb20KKyAgICAgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtLCBhbGxvd2luZyB1cyB0byBtb3ZlIGZpbmlzaERyYXdpbmdGcmFtZQorICAgICAgICBp
bnRvIExheWVyUmVuZGVyZXJDaHJvbWl1bSBhcyBhIHByaXZhdGUgbWV0aG9kIGFuZCByZW1vdmUg
aXQKKyAgICAgICAgZnJvbSB0aGUgQ0NSZW5kZXJlciBpbnRlcmZhY2UuCisKKyAgICAgICAgRmlu
YWxseSwgd2UgY2FuIHJlbW92ZSB0aGUgQ0NGb250QXRsYXMgdHJhbnNwb3J0IGNvZGUgZnJvbSBD
Q1Byb3h5CisgICAgICAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFzIHRoZSBhdGxhcyBjYW4g
YmUgc3luY2VkIHRvIGltcGwgdGhyZWFkCisgICAgICAgIHRocm91Z2ggdGhlIHVzdWFsIGxheWVy
IGNvbW1pdCBtZWNoYW5pc20uCisKKyAgICAgICAgVGhlIGRlYnVnIEhVRCBpcyBub3QgY292ZXJl
ZCBieSB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlM
YXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlM
YXllckNocm9taXVtOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjp+SGVhZHNVcERpc3BsYXlMYXllckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
Lmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVQcm9wZXJ0eUNoYW5nZWRSZWN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6Q0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsOjp+Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjp3aWxsRHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRpZExvc2VDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdIdWRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBTQ291bnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBT
Q291bnRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bDo6ZHJhd0RlYnVnUmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5ZXJJc0Fsd2F5c0RhbWFnZWQpOgorICAgICAg
ICBUaGlzIGZsYWcgaXMgdXNlZCB0byBtYXJrIHRoZSBIVUQgYXMgYWx3YXlzIGRhbWFnZWQsIHNv
IHRoYXQgaXQgaXMKKyAgICAgICAgY29udGludWFsbHkgZHJhd24gb24gdGhlIGltcGwgdGhyZWFk
LiBJdCBpcyBhbHNvIHVzZWQgYXMgYSBoaW50IGJ5CisgICAgICAgIHRoZSBDQ0RlYnVnUmVjdEhp
c3RvcnkgY2xhc3MgdG8gbm90IGluY2x1ZGUgdGhlIGxheWVyIGluIHRoZSBkaXNwbGF5CisgICAg
ICAgIG9mIGRhbWFnZSwgc2luY2UgYWx3YXlzIGRhbWFnZWQgaXMgbm90IGludGVyZXN0aW5nIGRh
bWFnZS4KKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29t
bWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVTZXR0aW5nczo6c2hvd0RlYnVnSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzOjpzaG93RGVidWdSZWN0cyk6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoKKyAgICAgICAg
KENDUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5
KToKKwogMjAxMi0wNy0yMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQSBGb2N1c1Njb3BlIGZvciBhIGRpc3RyaWJ1dGVkIG5vZGUgc2hvdWxkIG5vdCBiZSBp
dHMgVHJlZVNjb3BlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxMmJmOGE0ZGE4NWRm
ZjljZThkZTE3YTVlYjQ0MDFiYzBhZTQ1ODk3Li45YzBlYWZiYTc2M2RmNmM4NzkyYWFmNDI5YTQ2
N2ZiYzU1MzM2NTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTA3LTI0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gVHVybiB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0
IGNhbiBiZSBkcmF3biBhcyBhIFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwOgorICAgICAgICAoVEVTVCk6CisKIDIwMTItMDctMjMgIFNoYXduIFNpbmdoICA8
c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggdW5pdCB0
ZXN0cyBpbiBkZWJ1ZyBtb2RlIGFmdGVyIHIxMjMzNzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiZWRk
NDQwNDBlOGY2ZTJhY2QyMWM1OTIwYWYxYzk4M2M2YTIxZWI0Li45MzVlOTNmYzljYjhmM2E0ZmM0
ZGE2MTgxNWI3OGQwNjdhYmEwOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MjQ4LDYgKzgyNDgs
OCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HZW9tZXRyeUJpbmRpbmcuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNocm9t
aXVtLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0lPU3VyZmFjZUxheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JT1N1cmZhY2VMYXllckNocm9taXVtLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAn
LApAQCAtODMxMyw4ICs4MzE1LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NHZXN0dXJlQ3VydmUuaCcsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5j
cHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNV
cERpc3BsYXkuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNw
bGF5TGF5ZXJDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjEwNjg0MTE1ZWUyZTAyMDU3MGVlMDAy
NTIzMDZhZDNkMGE2MjNmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkhl
YWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgor
I2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCisjaW5jbHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxh
eUxheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtPiBI
ZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oKSk7Cit9CisKK0hlYWRzVXBEaXNw
bGF5TGF5ZXJDaHJvbWl1bTo6SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtKCkKKyAgICA6IExh
eWVyQ2hyb21pdW0oKQoreworfQorCitIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06On5IZWFk
c1VwRGlzcGxheUxheWVyQ2hyb21pdW0oKQoreworfQorCitQYXNzT3duUHRyPENDTGF5ZXJJbXBs
PiBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKK3sKKyAg
ICBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3QoKS0+
c2V0dGluZ3MoKTsKKyAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSBsYXllclRyZWVIb3N0KCktPmxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZTsKKyAgICBPd25QdHI8Q0NG
b250QXRsYXM+IGZvbnRBdGxhczsKKworICAgIEludFNpemUgYm91bmRzOworICAgIGlmIChzZXR0
aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgfHwgc2V0dGluZ3Muc2hvd0RlYnVnUmVjdHMoKSkg
eworICAgICAgICBib3VuZHMuc2V0V2lkdGgoc3RkOjptaW4obWF4VGV4dHVyZVNpemUsIGxheWVy
VHJlZUhvc3QoKS0+ZGV2aWNlVmlld3BvcnRTaXplKCkud2lkdGgoKSkpOworICAgICAgICBib3Vu
ZHMuc2V0SGVpZ2h0KHN0ZDo6bWluKG1heFRleHR1cmVTaXplLCBsYXllclRyZWVIb3N0KCktPmRl
dmljZVZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYm91
bmRzLnNldFdpZHRoKDUxMik7CisgICAgICAgIGJvdW5kcy5zZXRIZWlnaHQoMTI4KTsKKyAgICB9
CisgICAgc2V0Qm91bmRzKGJvdW5kcyk7CisKKyAgICAvLyBPbmx5IGFsbG9jYXRlIHRoZSBmb250
IGF0bGFzIGlmIHdlIGhhdmUgcmVhc29uIHRvIHVzZSB0aGUgaGVhZHMtdXAgZGlzcGxheS4KKyAg
ICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5
ZXJUcmVlKSB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiSGVhZHNVcERpc3BsYXlMYXll
ckNocm9taXVtOjppbml0aWFsaXplRm9udEF0bGFzIik7CisgICAgICAgIGZvbnRBdGxhcyA9IEND
Rm9udEF0bGFzOjpjcmVhdGUoKTsKKyAgICAgICAgZm9udEF0bGFzLT5pbml0aWFsaXplKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmNyZWF0ZShtX2xh
eWVySWQsIGZvbnRBdGxhcy5yZWxlYXNlKCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRz
VXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3NWY0YzM3MGVlZmQwMzk5ZjU4
NTA1YTZjZjlkN2VhZDNlYTc3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJv
bWl1bV9oCisjZGVmaW5lIEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bV9oCisKKyNpbmNsdWRl
ICJMYXllckNocm9taXVtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0geworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bT4gY3JlYXRl
KCk7CisgICAgdmlydHVhbCB+SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtKCk7CisKKyAgICB2
aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1w
bCgpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgSGVhZHNVcERpc3BsYXlMYXllckNocm9t
aXVtKCk7Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IGU1NjM3YTBmY2E3MDVkYmQxZDFmMDczYWFkODAzYTI2Zjc2YmQxODcuLmYxOTk1
ZTk3ODFmNzRkMTgyMzc3ZWI1NjQ0NTExNTU1ZDQ2OGNkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzg1LDYgKzM4NSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2Vz
LCBjb25zCiAgICAgICAgIEZsb2F0UmVjdCByb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNl
ID0gcmVuZGVyUGFzcy0+dGFyZ2V0U3VyZmFjZSgpLT5jb21wdXRlUm9vdFNjaXNzb3JSZWN0SW5D
dXJyZW50U3VyZmFjZShyb290U2Npc3NvclJlY3QpOwogICAgICAgICBkcmF3UmVuZGVyUGFzcyhy
ZW5kZXJQYXNzLCByb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlKTsKICAgICB9CisKKyAg
ICBmaW5pc2hEcmF3aW5nRnJhbWUoKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzcyogcm9vdFJlbmRlclBhc3MpCkBA
IC0xMTQwLDMxICsxMTQyLDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1
cmZhY2VRdWFkKGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqIHF1YWQpCiAgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFO
R0xFX0FSQiwgMCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRz
VXBEaXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSogaHVkVGV4dHVyZSwgY29uc3QgSW50U2l6
ZSYgaHVkU2l6ZSkKLXsKLSAgICBBU1NFUlQoaHVkVGV4dHVyZS0+aWQoKSk7Ci0KLSAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsK
LSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQz
RDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSkpOwotICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NP
Ul9URVNUKSk7Ci0gICAgdXNlUmVuZGVyUGFzcyhtX2RlZmF1bHRSZW5kZXJQYXNzKTsKLQotICAg
IGNvbnN0IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogcHJvZ3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJv
Z3JhbSgpOwotICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwot
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRTApKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayht
X3Jlc291cmNlUHJvdmlkZXIsIGh1ZFRleHR1cmUtPmlkKCkpOwotICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxv
Y2sudGV4dHVyZUlkKCkpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dy
YW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51
bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkp
OwotCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwotICAgIG1hdHJpeC50cmFu
c2xhdGUzZChodWRTaXplLndpZHRoKCkgKiAwLjUsIGh1ZFNpemUuaGVpZ2h0KCkgKiAwLjUsIDAp
OwotICAgIGRyYXdUZXh0dXJlZFF1YWQobWF0cml4LCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUu
aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAxLCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwg
cHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAgICAgICAgICAg
ICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAotICAgICAg
ICAgICAgICAgICAgICAgLTEpOwotfQotCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Zmlu
aXNoRHJhd2luZ0ZyYW1lKCkKIHsKICAgICBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2suY2xlYXIo
KTsKQEAgLTE1NTgsMTcgKzE1MzUsNiBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OlNv
bGlkQ29sb3JQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNvbGlkQ29sbwogICAgIHJl
dHVybiBtX3NvbGlkQ29sb3JQcm9ncmFtLmdldCgpOwogfQogCi1jb25zdCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OkhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpo
ZWFkc1VwRGlzcGxheVByb2dyYW0oKQotewotICAgIGlmICghbV9oZWFkc1VwRGlzcGxheVByb2dy
YW0pCi0gICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtID0gYWRvcHRQdHIobmV3IEhlYWRz
VXBEaXNwbGF5UHJvZ3JhbShtX2NvbnRleHQpKTsKLSAgICBpZiAoIW1faGVhZHNVcERpc3BsYXlQ
cm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06OmluaXRpYWxpemUiKTsK
LSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBt
X2lzVXNpbmdCaW5kVW5pZm9ybSk7Ci0gICAgfQotICAgIHJldHVybiBtX2hlYWRzVXBEaXNwbGF5
UHJvZ3JhbS5nZXQoKTsKLX0KLQogY29uc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpSZW5kZXJQ
YXNzUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQYXNzUHJvZ3JhbSgpCiB7
CiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOwpAQCAtMTc3Niw5ICsxNzQyLDYgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBp
ZiAobV9zb2xpZENvbG9yUHJvZ3JhbSkKICAgICAgICAgbV9zb2xpZENvbG9yUHJvZ3JhbS0+Y2xl
YW51cChtX2NvbnRleHQpOwogCi0gICAgaWYgKG1faGVhZHNVcERpc3BsYXlQcm9ncmFtKQotICAg
ICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwotCiAgICAg
aWYgKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAxOThhZWY5YTM0MzkxNDIyY2Y0
YjRmZTI2NDE4ZDc2ZGM0NTFhMDUzLi45MGJkNzc0M2I5ZjFkMmZhOGE2MDE2NGRlNjExODk4ZDNh
ZjhiZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtODEsOSArODEs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5k
ZXJQYXNzSWQoaW50IGlkKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYsIGNvbnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNz
b3JSZWN0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkg
T1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0hlYWRzVXBEaXNwbGF5KGNvbnN0IEND
U2NvcGVkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1ZFNpemUpIE9WRVJSSURFOwogCiAgICAg
Ly8gd2FpdHMgZm9yIHJlbmRlcmluZyB0byBmaW5pc2gKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
KCkgT1ZFUlJJREU7CkBAIC0xMjYsNiArMTIzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYmVn
aW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVuZGVyUGFzcyk7CiAgICAg
dm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqLCBjb25zdCBGbG9hdFJlY3Qm
IGZyYW1lYnVmZmVyRGFtYWdlUmVjdCk7CisgICAgdm9pZCBmaW5pc2hEcmF3aW5nRnJhbWUoKTsK
IAogICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd0No
ZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCopOwpAQCAtMjEzLDEw
ICsyMTEsNiBAQCBwcml2YXRlOgogICAgIC8vIFNwZWNpYWwgcHVycG9zZSAvIGVmZmVjdHMgc2hh
ZGVycy4KICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvcywgRnJhZ21l
bnRTaGFkZXJDb2xvcj4gU29saWRDb2xvclByb2dyYW07CiAKLSAgICAvLyBEZWJ1Z2dpbmcgc2hh
ZGVycy4KLSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJh
Z21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhPiBIZWFkc1VwRGlzcGxheVByb2dyYW07Ci0K
LQogICAgIGNvbnN0IFRpbGVQcm9ncmFtKiB0aWxlUHJvZ3JhbSgpOwogICAgIGNvbnN0IFRpbGVQ
cm9ncmFtT3BhcXVlKiB0aWxlUHJvZ3JhbU9wYXF1ZSgpOwogICAgIGNvbnN0IFRpbGVQcm9ncmFt
QUEqIHRpbGVQcm9ncmFtQUEoKTsKQEAgLTIzOSw4ICsyMzMsNiBAQCBwcml2YXRlOgogCiAgICAg
Y29uc3QgU29saWRDb2xvclByb2dyYW0qIHNvbGlkQ29sb3JQcm9ncmFtKCk7CiAKLSAgICBjb25z
dCBIZWFkc1VwRGlzcGxheVByb2dyYW0qIGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwotCiAgICAg
T3duUHRyPFRpbGVQcm9ncmFtPiBtX3RpbGVQcm9ncmFtOwogICAgIE93blB0cjxUaWxlUHJvZ3Jh
bU9wYXF1ZT4gbV90aWxlUHJvZ3JhbU9wYXF1ZTsKICAgICBPd25QdHI8VGlsZVByb2dyYW1BQT4g
bV90aWxlUHJvZ3JhbUFBOwpAQCAtMjYyLDcgKzI1NCw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRy
PFZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0+IG1fdmlkZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbTsK
IAogICAgIE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4gbV9zb2xpZENvbG9yUHJvZ3JhbTsKLSAg
ICBPd25QdHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbTsK
IAogICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwogICAgIE93blB0
cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNvcGllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0
SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCmluZGV4IGM2MTMyMTc4ZTE2MzkzMzVkMDE0Yzg2ZGVi
ODY2YTYzYjViZDc2NzguLjIzZWU4MjZmZDM0YTdjOGFhYzFlOTIwYWJkMmNjNTk2MWY5NzhjMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcApAQCAtMzgsMTEgKzM4LDYg
QEAgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpDQ0RlYnVnUmVjdEhpc3RvcnkoKQogewogfQogCi1ib29s
IENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBz
ZXR0aW5ncykKLXsKLSAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0dGlu
Z3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFtYWdl
UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1Jl
cGxpY2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dPY2NsdWRpbmdSZWN0czsKLX0K
LQogdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1l
KENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIG9jY2x1ZGluZ1NjcmVl
blNwYWNlUmVjdHMsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAg
IC8vIEZvciBub3csIGNsZWFyIGFsbCByZWN0cyBmcm9tIHByZXZpb3VzIGZyYW1lcy4gSW4gdGhl
IGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBzdG9yZQpAQCAtOTMsNyArODgsMTAgQEAgdm9pZCBDQ0Rl
YnVnUmVjdEhpc3Rvcnk6OnNhdmVQcm9wZXJ0eUNoYW5nZWRSZWN0cyhjb25zdCBWZWN0b3I8Q0NM
YXllckltcGwqPiYgcmUKICAgICAgICAgICAgIGlmIChDQ0xheWVyVHJlZUhvc3RDb21tb246OnJl
bmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0PENDTGF5ZXJJbXBsPihsYXllciwgcmVuZGVy
U3VyZmFjZUxheWVyLT5pZCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgaWYgKGxheWVyLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKQorICAgICAgICAgICAgaWYg
KGxheWVyLT5sYXllcklzQWx3YXlzRGFtYWdlZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBpZiAobGF5ZXItPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkgfHwgbGF5
ZXItPmxheWVyU3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgpKQogICAgICAgICAgICAgICAgIG1fZGVi
dWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUHJvcGVydHlDaGFuZ2VkUmVjdFR5cGUsIENDTWF0
aFV0aWw6Om1hcENsaXBwZWRSZWN0KGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsYXllci0+Ym91bmRzKCkpKSkpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaAppbmRleCA3ZmQwMGMzZjYy
NjIxMWJkNTIzY2ZhYzRjOWQzZGUzNjJjMGQ4OWU3Li4yNDA1YWEwZTJhYmZlNDA2YTFjZGIyYjIw
ZGQxNDMzYmRmMDBlZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaApAQCAt
NzksOCArNzksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NEZWJ1
Z1JlY3RIaXN0b3J5KCkpOwogICAgIH0KIAotICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJik7Ci0KICAgICAvLyBOb3RlOiBTYXZpbmcgZGVidWcgcmVjdHMgbXVzdCBo
YXBwZW4gYmVmb3JlIGxheWVycycgY2hhbmdlIHRyYWNraW5nIGlzIHJlc2V0LgogICAgIHZvaWQg
c2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29u
c3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cywgY29uc3QgQ0NMYXllclRy
ZWVTZXR0aW5ncyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjZmNmVlMGUyM2U5NWEyY2U0ZWNlZGI0OTQwZmRiYjYw
MGRmODg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNp
bmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zM0RD
aHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1DYW52YXMuaCIKLSNpbmNs
dWRlICJjYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCIKLSNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNv
dW50ZXIuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKLQotQ0NIZWFkc1VwRGlzcGxheTo6fkNDSGVhZHNVcERpc3BsYXkoKQotewot
fQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OnNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9u
dEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAgbV9mb250QXRsYXMgPSBmb250QXRsYXM7Ci19Ci0K
LWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6ZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdz
JiBzZXR0aW5ncykgY29uc3QKLXsKLSAgICByZXR1cm4gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNl
dHRpbmdzKSB8fCBzZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBzaG93RGVidWdSZWN0cyhzZXR0
aW5ncyk7Ci19Ci0KLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVl
KGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAotewotICAgIHJldHVy
biBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWU7Ci19Ci0KLWJvb2wgQ0NIZWFkc1VwRGlz
cGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3Mp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNldHRpbmdzLnNob3dQYWludFJlY3RzIHx8IHNldHRpbmdz
LnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8fCBzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFnZVJl
Y3RzIHx8IHNldHRpbmdzLnNob3dTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dSZXBs
aWNhU2NyZWVuU3BhY2VSZWN0cyB8fCBzZXR0aW5ncy5zaG93T2NjbHVkaW5nUmVjdHM7Ci19Ci0K
LXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCkKLXsKLSAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKLSAgICBpZiAoIW1faHVkVGV4dHVyZSkKLSAgICAg
ICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJUcmVlSG9zdElt
cGwtPnJlc291cmNlUHJvdmlkZXIoKSk7Ci0KLSAgICBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdz
JiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpOwotICAgIC8vIFVzZSBh
IGZ1bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4KLSAgICBJbnRTaXplIGh1
ZFNpemU7Ci0gICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykgfHwgc2hvd0Rl
YnVnUmVjdHMoc2V0dGluZ3MpKSB7Ci0gICAgICAgIGh1ZFNpemUuc2V0V2lkdGgobWluKDIwNDgs
IGxheWVyVHJlZUhvc3RJbXBsLT5kZXZpY2VWaWV3cG9ydFNpemUoKS53aWR0aCgpKSk7Ci0gICAg
ICAgIGh1ZFNpemUuc2V0SGVpZ2h0KG1pbigyMDQ4LCBsYXllclRyZWVIb3N0SW1wbC0+ZGV2aWNl
Vmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBodWRTaXpl
LnNldFdpZHRoKDUxMik7Ci0gICAgICAgIGh1ZFNpemUuc2V0SGVpZ2h0KDEyOCk7Ci0gICAgfQot
Ci0gICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkgJiYgIW1faHVkVGV4dHVyZS0+YWxsb2NhdGUo
Q0NSZW5kZXJlcjo6SW1wbFBvb2wsIGh1ZFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBD
Q1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIFJlbmRlciBwaXhlbHMgaW50byB0aGUgdGV4dHVyZS4KLSAgICBQbGF0Zm9ybUNhbnZh
cyBjYW52YXM7Ci0gICAgY2FudmFzLnJlc2l6ZShodWRTaXplKTsKLSAgICB7Ci0gICAgICAgIFBs
YXRmb3JtQ2FudmFzOjpQYWludGVyIHBhaW50ZXIoJmNhbnZhcywgUGxhdGZvcm1DYW52YXM6OlBh
aW50ZXI6OkdyYXlzY2FsZVRleHQpOwotICAgICAgICBwYWludGVyLmNvbnRleHQoKS0+Y2xlYXJS
ZWN0KEZsb2F0UmVjdCgwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCkpKTsK
LSAgICAgICAgZHJhd0h1ZENvbnRlbnRzKHBhaW50ZXIuY29udGV4dCgpLCBsYXllclRyZWVIb3N0
SW1wbCwgc2V0dGluZ3MsIGh1ZFNpemUpOwotICAgIH0KLQotICAgIC8vIFVwbG9hZCB0byBHTC4K
LSAgICB7Ci0gICAgICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFz
KTsKLSAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KDAsIDApLCBodWRTaXplKTsKLSAgICAg
ICAgbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKS0+dXBsb2FkKG1faHVkVGV4
dHVyZS0+aWQoKSwgbG9ja2VyLnBpeGVscygpLCByZWN0LCByZWN0LCByZWN0KTsKLSAgICB9Ci0K
LSAgICBsYXllclJlbmRlcmVyLT5kcmF3SGVhZHNVcERpc3BsYXkobV9odWRUZXh0dXJlLmdldCgp
LCBodWRTaXplKTsKLX0KLQotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3SHVkQ29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVI
b3N0SW1wbCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IEludFNp
emUmIGh1ZFNpemUpCi17Ci0gICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykp
IHsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDE5MiksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3Qo
MCwgMCwgaHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhlaWdodCgpKSk7Ci0gICAgfQotCi0gICAg
aW50IGZwc0NvdW50ZXJIZWlnaHQgPSA0MDsKLSAgICBpbnQgZnBzQ291bnRlclRvcCA9IDI7Ci0g
ICAgaW50IHBsYXRmb3JtTGF5ZXJUcmVlVG9wOwotCi0gICAgaWYgKHNldHRpbmdzLnNob3dGUFND
b3VudGVyKQotICAgICAgICBwbGF0Zm9ybUxheWVyVHJlZVRvcCA9IGZwc0NvdW50ZXJUb3AgKyBm
cHNDb3VudGVySGVpZ2h0OwotICAgIGVsc2UKLSAgICAgICAgcGxhdGZvcm1MYXllclRyZWVUb3Ag
PSAwOwotCi0gICAgaWYgKHNldHRpbmdzLnNob3dGUFNDb3VudGVyKQotICAgICAgICBkcmF3RlBT
Q291bnRlcihjb250ZXh0LCBsYXllclRyZWVIb3N0SW1wbC0+ZnBzQ291bnRlcigpLCBmcHNDb3Vu
dGVyVG9wLCBmcHNDb3VudGVySGVpZ2h0KTsKLQotICAgIGlmIChzaG93UGxhdGZvcm1MYXllclRy
ZWUoc2V0dGluZ3MpICYmIG1fZm9udEF0bGFzKSB7Ci0gICAgICAgIFN0cmluZyBsYXllclRyZWUg
PSBsYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgIG1fZm9udEF0
bGFzLT5kcmF3VGV4dChjb250ZXh0LCBsYXllclRyZWUsIEludFBvaW50KDIsIHBsYXRmb3JtTGF5
ZXJUcmVlVG9wKSwgaHVkU2l6ZSk7Ci0gICAgfQotCi0gICAgaWYgKHNob3dEZWJ1Z1JlY3RzKHNl
dHRpbmdzKSkKLSAgICAgICAgZHJhd0RlYnVnUmVjdHMoY29udGV4dCwgbGF5ZXJUcmVlSG9zdElt
cGwtPmRlYnVnUmVjdEhpc3RvcnkoKSwgc2V0dGluZ3MpOwotfQotCi12b2lkIENDSGVhZHNVcERp
c3BsYXk6OmRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFtZVJh
dGVDb3VudGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBpbnQgaGVpZ2h0KQotewotICAgIGZsb2F0
IHRleHRXaWR0aCA9IDE3MDsgLy8gc28gdGV4dCBmaXRzIG9uIGxpbnV4LgotICAgIGZsb2F0IGdy
YXBoV2lkdGggPSBmcHNDb3VudGVyLT50aW1lU3RhbXBIaXN0b3J5U2l6ZSgpOwotCi0gICAgLy8g
RHJhdyB0aGUgRlBTIHRleHQuCi0gICAgZHJhd0ZQU0NvdW50ZXJUZXh0KGNvbnRleHQsIGZwc0Nv
dW50ZXIsIHRvcCwgdGV4dFdpZHRoLCBoZWlnaHQpOwotCi0gICAgLy8gRHJhdyBGUFMgZ3JhcGgu
Ci0gICAgY29uc3QgZG91YmxlIGxvRlBTID0gMDsKLSAgICBjb25zdCBkb3VibGUgaGlGUFMgPSA4
MDsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yKDE1NCwgMjA1LCA1MCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyICsgdGV4dFdpZHRoLCB0b3AsIGdy
YXBoV2lkdGgsIGhlaWdodCAvIDIpKTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3Io
MjU1LCAyNTAsIDIwNSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQtPmZpbGxS
ZWN0KEZsb2F0UmVjdCgyICsgdGV4dFdpZHRoLCB0b3AgKyBoZWlnaHQgLyAyLCBncmFwaFdpZHRo
LCBoZWlnaHQgLyAyKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAw
LCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENv
bG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotCi0gICAgaW50IGdyYXBoTGVm
dCA9IHN0YXRpY19jYXN0PGludD4odGV4dFdpZHRoICsgMyk7Ci0gICAgSW50UG9pbnQgcHJldigt
MSwgMCk7Ci0gICAgaW50IHggPSAwOwotICAgIGRvdWJsZSBoID0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihoZWlnaHQgLSAyKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZwc0NvdW50ZXItPnRpbWVT
dGFtcEhpc3RvcnlTaXplKCkgLSAxOyArK2kpIHsKLSAgICAgICAgaW50IGogPSBpICsgMTsKLSAg
ICAgICAgZG91YmxlIGRlbHRhID0gZnBzQ291bnRlci0+dGltZVN0YW1wT2ZSZWNlbnRGcmFtZShq
KSAtIGZwc0NvdW50ZXItPnRpbWVTdGFtcE9mUmVjZW50RnJhbWUoaSk7Ci0KLSAgICAgICAgLy8g
U2tpcCBwbG90dGluZyB0aGlzIHBhcnRpY3VsYXIgaW5zdGFudGFuZW91cyBmcmFtZSByYXRlIGlm
IGl0IGlzIG5vdCBsaWtlbHkgdG8gaGF2ZSBiZWVuIHZhbGlkLgotICAgICAgICBpZiAoZnBzQ291
bnRlci0+aXNCYWRGcmFtZUludGVydmFsKGRlbHRhKSkgewotICAgICAgICAgICAgeCArPSAxOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBkb3VibGUgZnBzID0g
MS4wIC8gZGVsdGE7Ci0KLSAgICAgICAgLy8gQ2xhbXAgdGhlIEZQUyB0byB0aGUgcmFuZ2Ugd2Ug
d2FudCB0byBwbG90IHZpc3VhbGx5LgotICAgICAgICBkb3VibGUgcCA9IDEgLSAoKGZwcyAtIGxv
RlBTKSAvIChoaUZQUyAtIGxvRlBTKSk7Ci0gICAgICAgIGlmIChwIDwgMCkKLSAgICAgICAgICAg
IHAgPSAwOwotICAgICAgICBpZiAocCA+IDEpCi0gICAgICAgICAgICBwID0gMTsKLQotICAgICAg
ICAvLyBQbG90IHRoaXMgZGF0YSBwb2ludC4KLSAgICAgICAgSW50UG9pbnQgY3VyKGdyYXBoTGVm
dCArIHgsIDEgKyB0b3AgKyBwKmgpOwotICAgICAgICBpZiAocHJldi54KCkgIT0gLTEpCi0gICAg
ICAgICAgICBjb250ZXh0LT5kcmF3TGluZShwcmV2LCBjdXIpOwotICAgICAgICBwcmV2ID0gY3Vy
OwotICAgICAgICB4ICs9IDE7Ci0gICAgfQotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OmRy
YXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRnJhbWVSYXRlQ291
bnRlciogZnBzQ291bnRlciwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAg
IGRvdWJsZSBhdmVyYWdlRlBTLCBzdGREZXZpYXRpb247Ci0gICAgZnBzQ291bnRlci0+Z2V0QXZl
cmFnZUZQU0FuZFN0YW5kYXJkRGV2aWF0aW9uKGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbik7Ci0K
LSAgICAvLyBEcmF3IGJhY2tncm91bmQuCi0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
KDAsIDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQtPmZpbGxS
ZWN0KEZsb2F0UmVjdCgyLCB0b3AsIHdpZHRoLCBoZWlnaHQpKTsKLQotICAgIC8vIERyYXcgRlBT
IHRleHQuCi0gICAgaWYgKG1fZm9udEF0bGFzKQotICAgICAgICBtX2ZvbnRBdGxhcy0+ZHJhd1Rl
eHQoY29udGV4dCwgU3RyaW5nOjpmb3JtYXQoIkZQUzogJTQuMWYgKy8tICUzLjFmIiwgYXZlcmFn
ZUZQUywgc3RkRGV2aWF0aW9uKSwgSW50UG9pbnQoMTAsIGhlaWdodCAvIDMpLCBJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpKTsKLX0KLQotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0
SGlzdG9yeSwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCi17Ci0gICAgY29u
c3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cyA9IGRlYnVnUmVjdEhpc3RvcnktPmRl
YnVnUmVjdHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYnVnUmVjdHMuc2l6ZSgp
OyArK2kpIHsKLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFBhaW50UmVjdFR5
cGUpIHsKLSAgICAgICAgICAgIC8vIFBhaW50IHJlY3RzIGluIHJlZAotICAgICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVj
dCwgQ29sb3IoMjU1LCAwLCAwLCAzMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFByb3BlcnR5Q2hhbmdlZFJl
Y3RUeXBlKSB7Ci0gICAgICAgICAgICAvLyBQcm9wZXJ0eS1jaGFuZ2VkIHJlY3RzIGluIGJsdWUK
LSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSwgMjU1
KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChk
ZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDAsIDAsIDI1NSwgMzApLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0
LCAyLjApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBT
dXJmYWNlRGFtYWdlUmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFN1cmZhY2UgZGFtYWdlIHJl
Y3RzIGluIHllbGxvdy1vcmFuZ2UKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yKDIwMCwgMTAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjAwLCAxMDAs
IDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdHJv
a2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUmVwbGljYVNjcmVlblNwYWNlUmVjdFR5cGUpIHsKLSAg
ICAgICAgICAgIC8vIFNjcmVlbiBzcGFjZSByZWN0cyBpbiBncmVlbi4KLSAgICAgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMjAwLCAwLCAyNTUpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0u
cmVjdCwgQ29sb3IoMTAwLCAyMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU2NyZWVuU3BhY2VS
ZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIHB1cnBsZS4K
LSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMCwgMjAwLCAy
NTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAwLCAyMDAsIDEwKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0u
cmVjdCwgMi4wKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUg
PT0gT2NjbHVkaW5nUmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIE9jY2x1ZGluZyByZWN0cyBp
biBhIHJlZGRpc2ggY29sb3IuCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihD
b2xvcigyMDAsIDAsIDEwMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDIwMCwgMCwgMTAw
LCAxMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tl
UmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLX0K
LQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY2YmY1MWUxZjRl
ZGM2YzYwYzIxNjMyMzA4Y2UyNjhmMWQzYWE2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
Ci0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENDSGVhZHNVcERpc3BsYXlfaAotI2RlZmluZSBDQ0hl
YWRzVXBEaXNwbGF5X2gKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2lu
Y2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCi0jaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NEZWJ1Z1JlY3RIaXN0b3J5OwotY2xh
c3MgQ0NGcmFtZVJhdGVDb3VudGVyOwotY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKLWNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFRleHVyZUFsbG9jYXRvcjsKLQotc3RydWN0IENDTGF5
ZXJUcmVlU2V0dGluZ3M7Ci0KLS8vIENsYXNzIHRoYXQgaGFuZGxlcyBkcmF3aW5nIG9mIGNvbXBv
c2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KLWNsYXNzIENDSGVhZHNVcERpc3BsYXkgewot
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSGVhZHNVcERpc3BsYXkpOwotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDSGVhZHNVcERpc3BsYXk+IGNyZWF0ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSGVhZHNVcERpc3BsYXkoKSk7Ci0gICAgfQotCi0g
ICAgfkNDSGVhZHNVcERpc3BsYXkoKTsKLQotICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25Q
dHI8Q0NGb250QXRsYXM+KTsKLQotICAgIGJvb2wgZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNl
dHRpbmdzJikgY29uc3Q7Ci0gICAgdm9pZCBkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKLQot
cHJpdmF0ZToKLSAgICBDQ0hlYWRzVXBEaXNwbGF5KCkgeyB9OwotCi0gICAgdm9pZCBkcmF3SHVk
Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NMYXllclRyZWVIb3N0SW1wbCosIGNvbnN0IEND
TGF5ZXJUcmVlU2V0dGluZ3MmLCBjb25zdCBJbnRTaXplJiBodWRTaXplKTsKLSAgICB2b2lkIGRy
YXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0
b3AsIGludCBoZWlnaHQpOwotICAgIHZvaWQgZHJhd0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29u
dGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCB3aWR0aCwgaW50IGhlaWdo
dCk7Ci0gICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBDQ0RlYnVnUmVj
dEhpc3RvcnkqLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7Ci0KLSAgICBib29sIHNob3dQ
bGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7Ci0gICAg
Ym9vbCBzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7Ci0K
LSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBtX2h1ZFRleHR1cmU7Ci0gICAgT3duUHRyPEND
Rm9udEF0bGFzPiBtX2ZvbnRBdGxhczsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNV
cERpc3BsYXlMYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NmZkYzg0ZGRlMTZjODBkMWQ0Mzc0
NDdjOTJkN2UyYTZhOWY4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcApA
QCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
ImNjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RENocm9taXVtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJM
YXllclJlbmRlcmVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNhbnZhcy5oIgorI2lu
Y2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgorI2luY2x1ZGUgImNjL0NDRm9udEF0bGFz
LmgiCisjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNpbmsuaCIKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OkNDSGVh
ZHNVcERpc3BsYXlMYXllckltcGwoaW50IGlkLCBQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250
QXRsYXMpCisgICAgOiBDQ0xheWVySW1wbChpZCksCisgICAgICBtX2ZvbnRBdGxhcyhmb250QXRs
YXMpCit7Cit9CisKK0NDSGVhZHNVcERpc3BsYXlMYXllckltcGw6On5DQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsKCkKK3sKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjp3aWxs
RHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit7CisgICAgQ0NMYXll
ckltcGw6OndpbGxEcmF3KHJlc291cmNlUHJvdmlkZXIpOworCisgICAgaWYgKCFtX2h1ZFRleHR1
cmUpCisgICAgICAgIG1faHVkVGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291
cmNlUHJvdmlkZXIpOworCisgICAgLy8gRklYTUU6IFNjYWxlIHRoZSBIVUQgYnkgZGV2aWNlU2Nh
bGUgdG8gbWFrZSBpdCBtb3JlIGZyaWVuZGx5IHVuZGVyIGhpZ2ggRFBJLgorCisgICAgaWYgKG1f
aHVkVGV4dHVyZS0+c2l6ZSgpICE9IGJvdW5kcygpKQorICAgICAgICBtX2h1ZFRleHR1cmUtPmZy
ZWUoKTsKKworICAgIGlmICghbV9odWRUZXh0dXJlLT5pZCgpICYmICFtX2h1ZFRleHR1cmUtPmFs
bG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBib3VuZHMoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gUmVuZGVyIHBpeGVscyBpbnRvIHRoZSB0ZXh0dXJlLgorICAgIFBsYXRm
b3JtQ2FudmFzIGNhbnZhczsKKyAgICBjYW52YXMucmVzaXplKGJvdW5kcygpKTsKKyAgICB7Cisg
ICAgICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIHBhaW50ZXIoJmNhbnZhcywgUGxhdGZvcm1D
YW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQpOworICAgICAgICBwYWludGVyLmNvbnRleHQo
KS0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5o
ZWlnaHQoKSkpOworICAgICAgICBkcmF3SHVkQ29udGVudHMocGFpbnRlci5jb250ZXh0KCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2Vy
KCZjYW52YXMpOworICAgICAgICBJbnRSZWN0IGxheWVyUmVjdChJbnRQb2ludCgpLCBib3VuZHMo
KSk7CisgICAgICAgIHJlc291cmNlUHJvdmlkZXItPnVwbG9hZChtX2h1ZFRleHR1cmUtPmlkKCks
IGxvY2tlci5waXhlbHMoKSwgbGF5ZXJSZWN0LCBsYXllclJlY3QsIGxheWVyUmVjdCk7CisgICAg
fQorfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBib29sJikKK3sKKyAgICBpZiAoIW1faHVkVGV4dHVyZS0+aWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7CisgICAgYm9v
bCBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOworICAgIEZsb2F0UmVjdCB1dlJlY3QoMCwgMCwg
MSwgMSk7CisgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CisgICAgcXVhZExpc3QuYXBwZW5kKFdl
YkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IG1faHVkVGV4dHVyZS0+aWQoKSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQp
KTsKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3Vy
Y2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKK3sKKyAgICBDQ0xheWVySW1wbDo6ZGlkRHJh
dyhyZXNvdXJjZVByb3ZpZGVyKTsKKworICAgIGlmICghbV9odWRUZXh0dXJlLT5pZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBhc3NlcnQgd2lsbCBu
b3QgYmUgdHJ1ZSB3aGVuIHNlbmRpbmcgcmVzb3VyY2VzIHRvIGEKKyAgICAvLyBwYXJlbnQgY29t
cG9zaXRvci4gV2Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGhvbGQgb24gdG8gbV9odWRUZXh0dXJl
IGZvcgorICAgIC8vIGxvbmdlciwgYW5kIGhhdmUgc2V2ZXJhbCBIVUQgdGV4dHVyZXMgaW4gdGhl
IHBpcGVsaW5lLgorICAgIEFTU0VSVCghcmVzb3VyY2VQcm92aWRlci0+aW5Vc2VCeUNvbnN1bWVy
KG1faHVkVGV4dHVyZS0+aWQoKSkpOworfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGw6OmRpZExvc2VDb250ZXh0KCkKK3sKKyAgICBtX2h1ZFRleHR1cmUtPmxlYWsoKTsKK30KKwor
dm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3SHVkQ29udGVudHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQoreworICAgIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRp
bmdzID0gbGF5ZXJUcmVlSG9zdEltcGwoKS0+c2V0dGluZ3MoKTsKKworICAgIGlmIChzZXR0aW5n
cy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KENvbG9yKDAsIDAsIDAsIDE5MiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoMCwgMCwgYm91bmRzKCkud2lkdGgoKSwgYm91bmRzKCku
aGVpZ2h0KCkpKTsKKyAgICB9CisKKyAgICBpbnQgZnBzQ291bnRlckhlaWdodCA9IDQwOworICAg
IGludCBmcHNDb3VudGVyVG9wID0gMjsKKyAgICBpbnQgcGxhdGZvcm1MYXllclRyZWVUb3A7CisK
KyAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpCisgICAgICAgIHBsYXRmb3JtTGF5ZXJU
cmVlVG9wID0gZnBzQ291bnRlclRvcCArIGZwc0NvdW50ZXJIZWlnaHQ7CisgICAgZWxzZQorICAg
ICAgICBwbGF0Zm9ybUxheWVyVHJlZVRvcCA9IDA7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQ
U0NvdW50ZXIpCisgICAgICAgIGRyYXdGUFNDb3VudGVyKGNvbnRleHQsIGxheWVyVHJlZUhvc3RJ
bXBsKCktPmZwc0NvdW50ZXIoKSwgZnBzQ291bnRlclRvcCwgZnBzQ291bnRlckhlaWdodCk7CisK
KyAgICBpZiAoc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlICYmIG1fZm9udEF0bGFzKSB7
CisgICAgICAgIFN0cmluZyBsYXllclRyZWUgPSBsYXllclRyZWVIb3N0SW1wbCgpLT5sYXllclRy
ZWVBc1RleHQoKTsKKyAgICAgICAgbV9mb250QXRsYXMtPmRyYXdUZXh0KGNvbnRleHQsIGxheWVy
VHJlZSwgSW50UG9pbnQoMiwgcGxhdGZvcm1MYXllclRyZWVUb3ApLCBib3VuZHMoKSk7CisgICAg
fQorCisgICAgaWYgKHNldHRpbmdzLnNob3dEZWJ1Z1JlY3RzKCkpCisgICAgICAgIGRyYXdEZWJ1
Z1JlY3RzKGNvbnRleHQsIGxheWVyVHJlZUhvc3RJbXBsKCktPmRlYnVnUmVjdEhpc3RvcnkoKSk7
Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6ZHJhd0ZQU0NvdW50ZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqIGZwc0NvdW50ZXIsIGlu
dCB0b3AsIGludCBoZWlnaHQpCit7CisgICAgZmxvYXQgdGV4dFdpZHRoID0gMTcwOyAvLyBzbyB0
ZXh0IGZpdHMgb24gbGludXguCisgICAgZmxvYXQgZ3JhcGhXaWR0aCA9IGZwc0NvdW50ZXItPnRp
bWVTdGFtcEhpc3RvcnlTaXplKCk7CisKKyAgICAvLyBEcmF3IHRoZSBGUFMgdGV4dC4KKyAgICBk
cmF3RlBTQ291bnRlclRleHQoY29udGV4dCwgZnBzQ291bnRlciwgdG9wLCB0ZXh0V2lkdGgsIGhl
aWdodCk7CisKKyAgICAvLyBEcmF3IEZQUyBncmFwaC4KKyAgICBjb25zdCBkb3VibGUgbG9GUFMg
PSAwOworICAgIGNvbnN0IGRvdWJsZSBoaUZQUyA9IDgwOworICAgIGNvbnRleHQtPnNldFN0cm9r
ZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMTU0
LCAyMDUsIDUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZmlsbFJlY3Qo
RmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCwgZ3JhcGhXaWR0aCwgaGVpZ2h0IC8gMikpOwor
ICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1MCwgMjA1KSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lk
dGgsIHRvcCArIGhlaWdodCAvIDIsIGdyYXBoV2lkdGgsIGhlaWdodCAvIDIpKTsKKyAgICBjb250
ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisKKyAgICBpbnQgZ3JhcGhMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0
V2lkdGggKyAzKTsKKyAgICBJbnRQb2ludCBwcmV2KC0xLCAwKTsKKyAgICBpbnQgeCA9IDA7Cisg
ICAgZG91YmxlIGggPSBzdGF0aWNfY2FzdDxkb3VibGU+KGhlaWdodCAtIDIpOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZnBzQ291bnRlci0+dGltZVN0YW1wSGlzdG9yeVNpemUoKSAtIDE7ICsr
aSkgeworICAgICAgICBpbnQgaiA9IGkgKyAxOworICAgICAgICBkb3VibGUgZGVsdGEgPSBmcHND
b3VudGVyLT50aW1lU3RhbXBPZlJlY2VudEZyYW1lKGopIC0gZnBzQ291bnRlci0+dGltZVN0YW1w
T2ZSZWNlbnRGcmFtZShpKTsKKworICAgICAgICAvLyBTa2lwIHBsb3R0aW5nIHRoaXMgcGFydGlj
dWxhciBpbnN0YW50YW5lb3VzIGZyYW1lIHJhdGUgaWYgaXQgaXMgbm90IGxpa2VseSB0byBoYXZl
IGJlZW4gdmFsaWQuCisgICAgICAgIGlmIChmcHNDb3VudGVyLT5pc0JhZEZyYW1lSW50ZXJ2YWwo
ZGVsdGEpKSB7CisgICAgICAgICAgICB4ICs9IDE7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGRvdWJsZSBmcHMgPSAxLjAgLyBkZWx0YTsKKworICAgICAgICAv
LyBDbGFtcCB0aGUgRlBTIHRvIHRoZSByYW5nZSB3ZSB3YW50IHRvIHBsb3QgdmlzdWFsbHkuCisg
ICAgICAgIGRvdWJsZSBwID0gMSAtICgoZnBzIC0gbG9GUFMpIC8gKGhpRlBTIC0gbG9GUFMpKTsK
KyAgICAgICAgaWYgKHAgPCAwKQorICAgICAgICAgICAgcCA9IDA7CisgICAgICAgIGlmIChwID4g
MSkKKyAgICAgICAgICAgIHAgPSAxOworCisgICAgICAgIC8vIFBsb3QgdGhpcyBkYXRhIHBvaW50
LgorICAgICAgICBJbnRQb2ludCBjdXIoZ3JhcGhMZWZ0ICsgeCwgMSArIHRvcCArIHAqaCk7Cisg
ICAgICAgIGlmIChwcmV2LngoKSAhPSAtMSkKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdMaW5l
KHByZXYsIGN1cik7CisgICAgICAgIHByZXYgPSBjdXI7CisgICAgICAgIHggKz0gMTsKKyAgICB9
Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6ZHJhd0ZQU0NvdW50ZXJUZXh0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFtZVJhdGVDb3VudGVyKiBmcHNDb3VudGVy
LCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgZG91YmxlIGF2ZXJhZ2VG
UFMsIHN0ZERldmlhdGlvbjsKKyAgICBmcHNDb3VudGVyLT5nZXRBdmVyYWdlRlBTQW5kU3RhbmRh
cmREZXZpYXRpb24oYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9uKTsKKworICAgIC8vIERyYXcgYmFj
a2dyb3VuZC4KKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMCwgMCwgMCwgMjU1KSwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIs
IHRvcCwgd2lkdGgsIGhlaWdodCkpOworCisgICAgLy8gRHJhdyBGUFMgdGV4dC4KKyAgICBpZiAo
bV9mb250QXRsYXMpCisgICAgICAgIG1fZm9udEF0bGFzLT5kcmF3VGV4dChjb250ZXh0LCBTdHJp
bmc6OmZvcm1hdCgiRlBTOiAlNC4xZiArLy0gJTMuMWYiLCBhdmVyYWdlRlBTLCBzdGREZXZpYXRp
b24pLCBJbnRQb2ludCgxMCwgaGVpZ2h0IC8gMyksIEludFNpemUod2lkdGgsIGhlaWdodCkpOwor
fQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdEZWJ1Z1JlY3RzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5
KQoreworICAgIGNvbnN0IFZlY3RvcjxDQ0RlYnVnUmVjdD4mIGRlYnVnUmVjdHMgPSBkZWJ1Z1Jl
Y3RIaXN0b3J5LT5kZWJ1Z1JlY3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWJ1
Z1JlY3RzLnNpemUoKTsgKytpKSB7CisKKyAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9
PSBQYWludFJlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBQYWludCByZWN0cyBpbiByZWQKKyAg
ICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDI1NSwgMCwgMCwgMjU1KSwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1
Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDI1NSwgMCwgMCwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAy
LjApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBQcm9w
ZXJ0eUNoYW5nZWRSZWN0VHlwZSkgeworICAgICAgICAgICAgLy8gUHJvcGVydHktY2hhbmdlZCBy
ZWN0cyBpbiBibHVlCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigw
LCAwLCAyNTUsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4
dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigwLCAwLCAyNTUsIDMwKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVn
UmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3Rz
W2ldLnR5cGUgPT0gU3VyZmFjZURhbWFnZVJlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBTdXJm
YWNlIGRhbWFnZSByZWN0cyBpbiB5ZWxsb3ctb3JhbmdlCisgICAgICAgICAgICBjb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDEwMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENv
bG9yKDIwMCwgMTAwLCAwLCAzMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAg
Y29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFJlcGxpY2FTY3JlZW5TcGFjZVJl
Y3RUeXBlKSB7CisgICAgICAgICAgICAvLyBTY3JlZW4gc3BhY2UgcmVjdHMgaW4gZ3JlZW4uCisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigxMDAsIDIwMCwgMCwgMjU1
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChk
ZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDEwMCwgMjAwLCAwLCAzMCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJl
Y3QsIDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09
IFNjcmVlblNwYWNlUmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8vIFNjcmVlbiBzcGFjZSByZWN0
cyBpbiBwdXJwbGUuCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigx
MDAsIDAsIDIwMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDEwMCwgMCwgMjAwLCAxMCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChk
ZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVidWdS
ZWN0c1tpXS50eXBlID09IE9jY2x1ZGluZ1JlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBPY2Ns
dWRpbmcgcmVjdHMgaW4gYSByZWRkaXNoIGNvbG9yLgorICAgICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IoQ29sb3IoMjAwLCAwLCAxMDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xv
cigyMDAsIDAsIDEwMCwgMTApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOworICAgICAgICB9Cisg
ICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzgzNzhhNWZlOWVlZTA1MTE2OWM2OWEwODdiMjYzNDYwMTc3YTUwZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaApAQCAtMCwwICsxLDcxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsX2gKKyNkZWZpbmUgQ0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbF9oCisKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2luY2x1
ZGUgImNjL0NDU2NvcGVkVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENDRGVidWdSZWN0SGlzdG9yeTsKK2NsYXNzIENDRm9udEF0bGFzOworY2xhc3MgQ0NGcmFtZVJh
dGVDb3VudGVyOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitjbGFzcyBDQ0hlYWRzVXBEaXNw
bGF5TGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkLCBQYXNz
T3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDSGVhZHNVcERpc3BsYXlMYXllckltcGwoaWQsIGZvbnRBdGxhcykpOworICAg
IH0KKyAgICB2aXJ0dWFsIH5DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBsYXllcklzQWx3
YXlzRGFtYWdlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToK
KyAgICBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKGludCwgUGFzc093blB0cjxDQ0ZvbnRBdGxh
cz4pOworCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuICJIZWFkc1VwRGlzcGxheUxheWVyIjsgfQorCisgICAgdm9pZCBk
cmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3RlBTQ291bnRl
cihHcmFwaGljc0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBpbnQgdG9wLCBpbnQgaGVp
Z2h0KTsKKyAgICB2b2lkIGRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQqLCBDQ0Zy
YW1lUmF0ZUNvdW50ZXIqLCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZv
aWQgZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NEZWJ1Z1JlY3RIaXN0b3J5Kik7
CisKKyAgICBPd25QdHI8Q0NGb250QXRsYXM+IG1fZm9udEF0bGFzOworICAgIE93blB0cjxDQ1Nj
b3BlZFRleHR1cmU+IG1faHVkVGV4dHVyZTsKK307CisKK30KKworI2VuZGlmIC8vIENDSGVhZHNV
cERpc3BsYXlMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMjViZWRjMjIwN2U3
MjkwY2ViN2FmOWI4NTVmZGIyYzU3NTc3ZjZjMi4uOTBhNTExMjdmOTI0MmRkYmRjNDBiZDZkY2Jk
YTc5NTdiZDNkN2NlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0yNTUsMTEgKzI1NSwxMyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFN0YWNraW5nT3JkZXJDaGFuZ2VkKGJvb2wpOwogCi0g
ICAgYm9vbCBsYXllclByb3BlcnR5Q2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQ7IH0KKyAgICBib29sIGxheWVyUHJvcGVydHlDaGFuZ2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXllclByb3BlcnR5Q2hhbmdlZCB8fCBsYXllcklzQWx3YXlzRGFtYWdlZCgpOyB9
CiAgICAgYm9vbCBsYXllclN1cmZhY2VQcm9wZXJ0eUNoYW5nZWQoKSBjb25zdDsKIAogICAgIHZv
aWQgcmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKIAorICAgIHZpcnR1YWwgYm9v
bCBsYXllcklzQWx3YXlzRGFtYWdlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogbGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkgeyBy
ZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwg
UmVnaW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAppbmRleCBkMmE3OWViMWJmYmU1ZjY2ZGUxZjI5MGJlNTcxMmJmMTBh
NmZhMTc1Li43ZGJkOWQ5OTA0NWQ2YjU1MmNmZTNiZTk1ZTNiYWRjMzZlMTBhYjRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCisjaW5jbHVkZSAiSGVhZHNVcERpc3BsYXlMYXllckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKQEAgLTc4LDYgKzc5LDcgQEAgQ0NMYXllclRyZWVI
b3N0OjpDQ0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0
IENDTGF5ZXJUcmUKICAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCiAgICAgLCBtX251bVRpbWVz
UmVjcmVhdGVTaG91bGRGYWlsKDApCiAgICAgLCBtX251bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHMo
MCkKKyAgICAsIG1faHVkTGF5ZXIoSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjpjcmVhdGUo
KSkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX2RldmljZVNjYWxlRmFjdG9y
KDEpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKQEAgLTEwNiwxNCArMTA4LDYgQEAgYm9vbCBDQ0xh
eWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogICAgIGlmICghbV9wcm94eS0+aW5pdGlhbGl6ZUNv
bnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gT25seSBhbGxvY2F0ZSB0
aGUgZm9udCBhdGxhcyBpZiB3ZSBoYXZlIHJlYXNvbiB0byB1c2UgdGhlIGhlYWRzLXVwIGRpc3Bs
YXkuCi0gICAgaWYgKG1fc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgbV9zZXR0aW5ncy5zaG93
UGxhdGZvcm1MYXllclRyZWUpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ0xheWVy
VHJlZUhvc3Q6OmluaXRpYWxpemU6OmluaXRpYWxpemVGb250QXRsYXMiKTsKLSAgICAgICAgT3du
UHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMoQ0NGb250QXRsYXM6OmNyZWF0ZSgpKTsKLSAgICAg
ICAgZm9udEF0bGFzLT5pbml0aWFsaXplKCk7Ci0gICAgICAgIG1fcHJveHktPnNldEZvbnRBdGxh
cyhmb250QXRsYXMucmVsZWFzZSgpKTsKLSAgICB9Ci0KICAgICBtX2NvbXBvc2l0b3JJZGVudGlm
aWVyID0gbV9wcm94eS0+Y29tcG9zaXRvcklkZW50aWZpZXIoKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTI0Miw3ICsyMzYsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1p
dE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKIHsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogCisgICAgaWYgKG1fc2V0dGluZ3Muc2hvd0Rl
YnVnSW5mbygpKQorICAgICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9odWRMYXllcik7CiAg
ICAgaG9zdEltcGwtPnNldFJvb3RMYXllcihUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRy
ZWVzKHJvb3RMYXllcigpLCBob3N0SW1wbC0+ZGV0YWNoTGF5ZXJUcmVlKCksIGhvc3RJbXBsKSk7
CisgICAgbV9odWRMYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogCiAgICAgLy8gV2UgbWF5IGhh
dmUgYWRkZWQgYW4gYW5pbWF0aW9uIGR1cmluZyB0aGUgdHJlZSBzeW5jLiBUaGlzIHdpbGwgY2F1
c2UgYm90aCBsYXllciB0cmVlIGhvc3RzCiAgICAgLy8gdG8gdmlzaXQgdGhlaXIgY29udHJvbGxl
cnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDgzOTc4NTkwNTNlY2U2MjAyZDFk
MTkwOWRkOTZlMWIwMjdmMThhMjEuLjgxNTU1ZjFlMDcyMDFiZDJlOWFkNDVjM2QyZjM4YzE1MTE4
YTQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMTIsNiArMTEyLDkgQEAg
c3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3MgewogICAgIEludFNpemUgZGVmYXVsdFRpbGVTaXpl
OwogICAgIEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKICAgICBJbnRTaXplIG1pbmltdW1P
Y2NsdXNpb25UcmFja2luZ1NpemU7CisKKyAgICBib29sIHNob3dEZWJ1Z0luZm8oKSBjb25zdCB7
IHJldHVybiBzaG93UGxhdGZvcm1MYXllclRyZWUgfHwgc2hvd0ZQU0NvdW50ZXIgfHwgc2hvd0Rl
YnVnUmVjdHMoKTsgfQorICAgIGJvb2wgc2hvd0RlYnVnUmVjdHMoKSBjb25zdCB7IHJldHVybiBz
aG93UGFpbnRSZWN0cyB8fCBzaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2hvd1N1cmZhY2VE
YW1hZ2VSZWN0cyB8fCBzaG93U2NyZWVuU3BhY2VSZWN0cyB8fCBzaG93UmVwbGljYVNjcmVlblNw
YWNlUmVjdHMgfHwgc2hvd09jY2x1ZGluZ1JlY3RzOyB9CiB9OwogCiAvLyBQcm92aWRlcyBpbmZv
cm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBiYWNrIHRvIHRoZSBD
Q0xheWVyVHJlZUhvc3QKQEAgLTMxMCw2ICszMTMsNyBAQCBwcml2YXRlOgogICAgIGludCBtX251
bUZhaWxlZFJlY3JlYXRlQXR0ZW1wdHM7CiAKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9y
b290TGF5ZXI7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1faHVkTGF5ZXI7CiAgICAgT3du
UHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
OwogICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4gbV9zdXJmYWNlTWVtb3J5UGxhY2Vo
b2xkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMGQ5
ZDdmZjQxZTVlYjUxZmQ0OGYwMmZmZmQyZDU5YWY5Y2M0MTA3MC4uNDY5NjczNzMxMWM4MDNhZWQy
OGEzNTg3ZTA1Y2UwNDcwNjY0YWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1l
U291cmNlLmgiCiAjaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKICNpbmNsdWRlICJjYy9DQ0Zy
YW1lUmF0ZUNvdW50ZXIuaCIKLSNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCkBAIC0xMjMsNyArMTIy
LDYgQEAgQ0NMYXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncywgQ0MKICAgICAsIG1fdmlzaWJsZSh0cnVlKQogICAg
ICwgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdChmYWxzZSkKICAg
ICAsIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpkZWZhdWx0TWVtb3J5QWxsb2NhdGlvbkxpbWl0KCkpCi0gICAgLCBtX2hlYWRzVXBEaXNw
bGF5KENDSGVhZHNVcERpc3BsYXk6OmNyZWF0ZSgpKQogICAgICwgbV9wYWdlU2NhbGUoMSkKICAg
ICAsIG1fcGFnZVNjYWxlRGVsdGEoMSkKICAgICAsIG1fc2VudFBhZ2VTY2FsZURlbHRhKDEpCkBA
IC01NTIsMTQgKzU1MCwxMSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMo
Y29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKICAgICBtX2Zwc0NvdW50ZXItPm1hcmtCZWdpbm5pbmdP
ZkZyYW1lKGN1cnJlbnRUaW1lKCkpOwogCiAgICAgbV9sYXllclJlbmRlcmVyLT5kcmF3RnJhbWUo
ZnJhbWUucmVuZGVyUGFzc2VzLCBtX3Jvb3RTY2lzc29yUmVjdCk7Ci0gICAgaWYgKG1faGVhZHNV
cERpc3BsYXktPmVuYWJsZWQoc2V0dGluZ3MoKSkpCi0gICAgICAgIG1faGVhZHNVcERpc3BsYXkt
PmRyYXcodGhpcyk7Ci0gICAgbV9sYXllclJlbmRlcmVyLT5maW5pc2hEcmF3aW5nRnJhbWUoKTsK
IAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZnJhbWUucmVuZGVyUGFzc2VzLnNp
emUoKTsgaSsrKQogICAgICAgICBmcmFtZS5yZW5kZXJQYXNzZXNbaV0tPnRhcmdldFN1cmZhY2Uo
KS0+ZGFtYWdlVHJhY2tlcigpLT5kaWREcmF3RGFtYWdlZEFyZWEoKTsKIAotICAgIGlmIChtX2Rl
YnVnUmVjdEhpc3RvcnktPmVuYWJsZWQoc2V0dGluZ3MoKSkpCisgICAgaWYgKG1fc2V0dGluZ3Mu
c2hvd0RlYnVnUmVjdHMoKSkKICAgICAgICAgbV9kZWJ1Z1JlY3RIaXN0b3J5LT5zYXZlRGVidWdS
ZWN0c0ZvckN1cnJlbnRGcmFtZShtX3Jvb3RMYXllckltcGwuZ2V0KCksICpmcmFtZS5yZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBmcmFtZS5vY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzLCBzZXR0aW5n
cygpKTsKIAogICAgICsrbV9zb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcjsKQEAgLTExNjAsMTEg
KzExNTUsNiBAQCBTdHJpbmcgQ0NMYXllclRyZWVIb3N0SW1wbDo6bGF5ZXJUcmVlQXNUZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gdHMucmVsZWFzZSgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCi17
Ci0gICAgbV9oZWFkc1VwRGlzcGxheS0+c2V0Rm9udEF0bGFzKGZvbnRBdGxhcyk7Ci19Ci0KIHZv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHVtcFJlbmRlclN1cmZhY2VzKFRleHRTdHJlYW0mIHRz
LCBpbnQgaW5kZW50LCBjb25zdCBDQ0xheWVySW1wbCogbGF5ZXIpIGNvbnN0CiB7CiAgICAgaWYg
KGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKaW5kZXggZjkzNmUzNGRkMmMzYzQzMjkyZjIzYjI4ZjAxOTkzMTY1ZTUzYjQ1Mi4uY2IwOTY3
ZTQ0YjljNmMzNzYxYzFlOWU1NjZmODY1ZTA5Mzc3OGNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaApAQCAtMzksOSArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb247CiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudDsK
IGNsYXNzIENDRGVidWdSZWN0SGlzdG9yeTsKLWNsYXNzIENDRm9udEF0bGFzOwogY2xhc3MgQ0NG
cmFtZVJhdGVDb3VudGVyOwotY2xhc3MgQ0NIZWFkc1VwRGlzcGxheTsKIGNsYXNzIENDTGF5ZXJJ
bXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyOwogY2xhc3Mg
Q0NQYWdlU2NhbGVBbmltYXRpb247CkBAIC0xMTgsNyArMTE2LDYgQEAgcHVibGljOgogICAgIEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAKICAgICBTdHJpbmcgbGF5ZXJUcmVl
QXNUZXh0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRB
dGxhcz4pOwogCiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmcoKTsKICAgICBpbnQgc291cmNl
QW5pbWF0aW9uRnJhbWVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUFuaW1hdGlvbkZy
YW1lTnVtYmVyOyB9CkBAIC0yNjYsOCArMjYzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29u
dGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQ7CiAgICAgc2l6ZV90IG1fbWVt
b3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7CiAKLSAgICBPd25QdHI8Q0NIZWFkc1VwRGlzcGxheT4g
bV9oZWFkc1VwRGlzcGxheTsKLQogICAgIGZsb2F0IG1fcGFnZVNjYWxlOwogICAgIGZsb2F0IG1f
cGFnZVNjYWxlRGVsdGE7CiAgICAgZmxvYXQgbV9zZW50UGFnZVNjYWxlRGVsdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5
LmgKaW5kZXggZjE5MDMyYWJiZjY2NmE0NWY5YjRkOGMxZTBiOWI0YzFkOGRlMDY1YS4uM2I2ZGM3
ZjljNDQ4NmQ1NmZmZDRmYjVjNDhkZGY1ZmI1ZmI3YWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMzMs
NyArMzMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDRm9udEF0bGFzOwog
Y2xhc3MgQ0NUaHJlYWQ7CiBjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIHN0cnVjdCBDQ1JlbmRl
cmluZ1N0YXRzOwpAQCAtMTA2LDggKzEwNSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBhY3F1aXJlTGF5ZXJUZXh0dXJlcygpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGb250
QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pID0gMDsKLQogICAgIC8vIERlYnVnIGhvb2tz
CiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJlci5oCmluZGV4IGQ5MzEwMjJkYzU1NTc1ZTFlOGVmNmY5YjgzMzIzM2E2ZjcxNGJmMzEu
LjkzOTc4NzE3NzU3YWU0MTVjYTQyMjExMDJiYTkyOTkzNDUwYmNjYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
cmVyLmgKQEAgLTgxLDkgKzgxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2Fj
aGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYsIGNv
bnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bmlzaERyYXdpbmdGcmFtZSgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGRyYXdIZWFkc1VwRGlz
cGxheShjb25zdCBDQ1Njb3BlZFRleHR1cmUqLCBjb25zdCBJbnRTaXplJiBodWRTaXplKSA9IDA7
CiAKICAgICAvLyB3YWl0cyBmb3IgcmVuZGVyaW5nIHRvIGZpbmlzaAogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmlu
ZGV4IDAwMmM3YTdiZmFlYTUwNWQ0ZDQ0ZTc1YzZlMzdhZWY3MDFkNmRjNDIuLjE3MjJlM2FjYzlm
ZWQzMGEwMDk3ZmEyZTQ4ZGVlNWM1NTZhYjkyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJUcmFjZUV2ZW50
LmgiCiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDRm9udEF0bGFz
LmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCkBAIC0yNjgs
MTMgKzI2Nyw2IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9sYXll
clRyZWVIb3N0ID0gMDsKIH0KIAotdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXRGb250QXRs
YXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+c2V0Rm9udEF0bGFzKGZvbnRBdGxhcyk7Ci19Ci0KIHZvaWQgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRo
cmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiBldmVudHMsIGRvdWJsZSB3
YWxsQ2xvY2tUaW1lKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZThhYTc1NTE1MzY2ZGY0NjAy
ODUyZWM1NWJhNWUzY2U0ODY1NjEzNS4uNmRjZTFjMzVlODRmZTdkNTAyOWFlNmIxNDdjMGY3NDA1
N2E4ODlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtNjMsNyAr
NjMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzKCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVycygpIE9WRVJSSURFOwogCiAg
ICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcAppbmRleCA5YjZkZmUzYWNlMzkwMWVjMWU2MzVlZGRlNTczNTQ5Njlm
OWM5NDQyLi4zMDg1ZGYzZWUwMTNiYWZkZTkyOWRkNDU3YzQ2M2RhOWRjMjQ5MGVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIlRyYWNl
RXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NEcmF3UXVhZC5oIgotI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NGcmFtZVJhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgpAQCAtODY2LDE5ICs4NjUs
NiBAQCBzaXplX3QgQ0NUaHJlYWRQcm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29u
c3QKICAgICByZXR1cm4gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZTsKIH0KIAotdm9pZCBDQ1RocmVh
ZFByb3h5OjpzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4gZm9udEF0bGFzKQot
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQ0NQcm94eTo6aW1wbFRocmVhZCgp
LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldEZv
bnRBdGxhc09uSW1wbFRocmVhZCwgZm9udEF0bGFzKSk7Ci0KLX0KLQotdm9pZCBDQ1RocmVhZFBy
b3h5OjpzZXRGb250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4gZm9u
dEF0bGFzKQotewotICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+c2V0Rm9udEF0bGFzKGZvbnRBdGxhcyk7Ci19Ci0KIHZvaWQgQ0NUaHJlYWRQcm94
eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0
aW9uLCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciwgYm9vbCogcmVjcmVhdGVTdWNjZWVk
ZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqIGNhcGFiaWxpdGllcykKIHsKICAgICBUUkFD
RV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVh
ZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDBmOGEzNTQwNDBlNGYwNTA4ZjgxNzRm
OWE0Yzk1YTQxYzQxMmEyMjEuLjg2MGEyMDE3Mzg2NjRiZTc5NGViNzg5ODRjZGVmYTFjYjk2Zjhl
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTcxLDcgKzcxLDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBzaXplX3QgbWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGFjcXVpcmVMYXllclRleHR1cmVzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZv
bnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVycygpIE9WRVJSSURFOwogCiAgICAgLy8gQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgpAQCAtMTQ0LDcgKzE0Myw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqLCBDQ0dyYXBoaWNzQ29udGV4dCosIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBM
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKik7CiAgICAgdm9pZCBpbXBsU2lkZVJlbmRlcmluZ1N0
YXRzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NSZW5kZXJpbmdTdGF0cyopOwog
ICAgIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBJbnRlcm5hbChib29sIGZvcmNlZERyYXcpOwotICAgIHZvaWQgc2V0Rm9udEF0bGFz
T25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKICAgICB2b2lkIGZvcmNlU2Vy
aWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAg
IHZvaWQgc2V0TmVlZHNGb3JjZWRDb21taXRPbkltcGxUaHJlYWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dC5jcHAKaW5kZXggMWI2YjgwMjhiNGZmNTRkNTk2NDkyYThhN2EzZGFlM2ZiODA5MzFkZS4uZjFk
OGRjMWQwM2JmZTgyMDBkNWFjM2QxNTMyOTJhNDY4NmU1MDk0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qu
Y3BwCkBAIC00MTksNyArNDE5LDYgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Miwg
b3BhcXVlQmFja2dyb3VuZCkKICAgICBFWFBFQ1RfVFJVRShsYXllclJlbmRlcmVyQ2hyb21pdW0u
aW5pdGlhbGl6ZSgpKTsKIAogICAgIGxheWVyUmVuZGVyZXJDaHJvbWl1bS5kcmF3RnJhbWUobW9j
a0NsaWVudC5yZW5kZXJQYXNzZXMoKSwgRmxvYXRSZWN0KCkpOwotICAgIGxheWVyUmVuZGVyZXJD
aHJvbWl1bS5maW5pc2hEcmF3aW5nRnJhbWUoKTsKIAogICAgIC8vIE9uIERFQlVHIGJ1aWxkcywg
cmVuZGVyIHBhc3NlcyB3aXRoIG9wYXF1ZSBiYWNrZ3JvdW5kIGNsZWFyIHRvIGJsdWUgdG8KICAg
ICAvLyBlYXNpbHkgc2VlIHJlZ2lvbnMgdGhhdCB3ZXJlIG5vdCBkcmF3biBvbiB0aGUgc2NyZWVu
LgpAQCAtNDQzLDcgKzQ0Miw2IEBAIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIHRy
YW5zcGFyZW50QmFja2dyb3VuZCkKICAgICBFWFBFQ1RfVFJVRShsYXllclJlbmRlcmVyQ2hyb21p
dW0uaW5pdGlhbGl6ZSgpKTsKIAogICAgIGxheWVyUmVuZGVyZXJDaHJvbWl1bS5kcmF3RnJhbWUo
bW9ja0NsaWVudC5yZW5kZXJQYXNzZXMoKSwgRmxvYXRSZWN0KCkpOwotICAgIGxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5maW5pc2hEcmF3aW5nRnJhbWUoKTsKIAogICAgIEVYUEVDVF9FUSgxLCBjb250
ZXh0LT5jbGVhckNvdW50KCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154385</attachid>
            <date>2012-07-25 10:35:03 -0700</date>
            <delta_ts>2012-07-25 10:35:54 -0700</delta_ts>
            <desc>diff-to-fix-asserts</desc>
            <filename>bug-92182-20120725133453.patch</filename>
            <type>text/plain</type>
            <size>6609</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtLmNwcAppbmRleCAyMTA2ODQxMTVlZTJlMDIwNTcwZWUwMDI1MjMwNmFk
M2QwYTYyM2Y4Li45ZWU0N2Q4MDA4YjQzOGZjNWQ0ZDQ2ZmFmM2Y5NDExNGM2NjUxNDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1Vw
RGlzcGxheUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTI4LDMw
ICsyOCwxOSBAQAogI2luY2x1ZGUgIkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oIgogCiAj
aW5jbHVkZSAiVHJhY2VFdmVudC5oIgotI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5j
bHVkZSAiY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtPiBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06OmNyZWF0
ZSgpCitQYXNzUmVmUHRyPEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bT4gSGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtOjpjcmVhdGUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MsIGludCBtYXhUZXh0dXJlU2l6ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhlYWRz
VXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhlYWRz
VXBEaXNwbGF5TGF5ZXJDaHJvbWl1bShzZXR0aW5ncywgbWF4VGV4dHVyZVNpemUpKTsKIH0KIAot
SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0o
KQorSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21p
dW0oY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIGludCBtYXhUZXh0dXJlU2l6
ZSkKICAgICA6IExheWVyQ2hyb21pdW0oKQogewotfQotCi1IZWFkc1VwRGlzcGxheUxheWVyQ2hy
b21pdW06On5IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oKQotewotfQotCi1QYXNzT3duUHRy
PENDTGF5ZXJJbXBsPiBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJ
bXBsKCkKLXsKLSAgICBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVy
VHJlZUhvc3QoKS0+c2V0dGluZ3MoKTsKLSAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSBsYXllclRy
ZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZTsKICAg
ICBPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhczsKIAogICAgIEludFNpemUgYm91bmRzOwpA
QCAtNjcsMTEgKzU2LDE4IEBAIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IEhlYWRzVXBEaXNwbGF5
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQogICAgIC8vIE9ubHkgYWxsb2NhdGUg
dGhlIGZvbnQgYXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFkcy11cCBkaXNw
bGF5LgogICAgIGlmIChzZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBzZXR0aW5ncy5zaG93UGxh
dGZvcm1MYXllclRyZWUpIHsKICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJIZWFkc1VwRGlz
cGxheUxheWVyQ2hyb21pdW06OmluaXRpYWxpemVGb250QXRsYXMiKTsKLSAgICAgICAgZm9udEF0
bGFzID0gQ0NGb250QXRsYXM6OmNyZWF0ZSgpOwotICAgICAgICBmb250QXRsYXMtPmluaXRpYWxp
emUoKTsKKyAgICAgICAgbV9mb250QXRsYXMgPSBDQ0ZvbnRBdGxhczo6Y3JlYXRlKCk7CisgICAg
ICAgIG1fZm9udEF0bGFzLT5pbml0aWFsaXplKCk7CiAgICAgfQorfQogCi0gICAgcmV0dXJuIEND
SGVhZHNVcERpc3BsYXlMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQsIGZvbnRBdGxhcy5yZWxl
YXNlKCkpOworSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjp+SGVhZHNVcERpc3BsYXlMYXll
ckNocm9taXVtKCkKK3sKK30KKworUGFzc093blB0cjxDQ0xheWVySW1wbD4gSGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCit7CisgICAgcmV0dXJuIENDSGVh
ZHNVcERpc3BsYXlMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQsIG1fZm9udEF0bGFzLnJlbGVh
c2UoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVt
LmgKaW5kZXggMzc1ZjRjMzcwZWVmZDAzOTlmNTg1MDVhNmNmOWQ3ZWFkM2VhNzc2Zi4uNDJhYjYw
OTI0ZjUyZGI5MzVkN2YyNzBhMTIwNzI2YWZiNWJhODU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVh
ZHNVcERpc3BsYXlMYXllckNocm9taXVtLmgKQEAgLTI4LDEyICsyOCwxNSBAQAogI2RlZmluZSBI
ZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW1faAogCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5o
IgorI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3M7CisKIGNsYXNzIEhlYWRzVXBEaXNwbGF5TGF5ZXJD
aHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKGNvbnN0IEND
TGF5ZXJUcmVlU2V0dGluZ3MmLCBpbnQgbWF4VGV4dHVyZVNpemUpOwogICAgIHZpcnR1YWwgfkhl
YWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29u
dGVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KQEAgLTQxLDcgKzQ0LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5
ZXJJbXBsKCkgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICBIZWFkc1VwRGlzcGxheUxheWVy
Q2hyb21pdW0oKTsKKyAgICBleHBsaWNpdCBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oY29u
c3QgQ0NMYXllclRyZWVTZXR0aW5ncyYsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisKK3ByaXZhdGU6
CisgICAgT3duUHRyPENDRm9udEF0bGFzPiBtX2ZvbnRBdGxhczsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDdkYmQ5ZDk5MDQ1ZDZiNTUyY2ZlM2JlOTVlM2Jh
ZGMzNmUxMGFiNGQuLjkxNGRmMDM0NjIwMmI0YTAxN2M4NDYwNjljMmM1MzU1N2IxMGExYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNzksNyArNzksNiBAQCBDQ0xheWVy
VHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwg
Y29uc3QgQ0NMYXllclRyZQogICAgICwgbV9jb250ZXh0TG9zdChmYWxzZSkKICAgICAsIG1fbnVt
VGltZXNSZWNyZWF0ZVNob3VsZEZhaWwoMCkKICAgICAsIG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRl
bXB0cygwKQotICAgICwgbV9odWRMYXllcihIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpKQogICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKICAgICAsIG1fZGV2aWNlU2NhbGVG
YWN0b3IoMSkKICAgICAsIG1fdmlzaWJsZSh0cnVlKQpAQCAtMjM2LDEwICsyMzUsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGhvc3RJbXBsKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CiAKLSAgICBpZiAobV9zZXR0aW5ncy5zaG93RGVidWdJbmZvKCkpCi0gICAgICAgIG1fcm9vdExh
eWVyLT5hZGRDaGlsZChtX2h1ZExheWVyKTsKICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKFRy
ZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCksIGhvc3RJbXBsLT5k
ZXRhY2hMYXllclRyZWUoKSwgaG9zdEltcGwpKTsKLSAgICBtX2h1ZExheWVyLT5yZW1vdmVGcm9t
UGFyZW50KCk7CiAKICAgICAvLyBXZSBtYXkgaGF2ZSBhZGRlZCBhbiBhbmltYXRpb24gZHVyaW5n
IHRoZSB0cmVlIHN5bmMuIFRoaXMgd2lsbCBjYXVzZSBib3RoIGxheWVyIHRyZWUgaG9zdHMKICAg
ICAvLyB0byB2aXNpdCB0aGVpciBjb250cm9sbGVycy4KQEAgLTI1Niw4ICsyNTIsMjAgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhv
c3RJbXBsKiBob3N0SW1wbCkKICAgICBtX2NvbW1pdE51bWJlcisrOwogfQogCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6d2lsbENvbW1pdCgpCit7CisgICAgbV9jbGllbnQtPndpbGxDb21taXQoKTsK
KyAgICBpZiAobV9zZXR0aW5ncy5zaG93RGVidWdJbmZvKCkpIHsKKyAgICAgICAgaWYgKCFtX2h1
ZExheWVyKQorICAgICAgICAgICAgbV9odWRMYXllciA9IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKG1fc2V0dGluZ3MsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhU
ZXh0dXJlU2l6ZSk7CisgICAgICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX2h1ZExheWVyKTsK
KyAgICB9Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSgpCiB7Cisg
ICAgaWYgKG1faHVkTGF5ZXIpCisgICAgICAgIG1faHVkTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQo
KTsKICAgICBtX2RlbGV0ZVRleHR1cmVBZnRlckNvbW1pdExpc3QuY2xlYXIoKTsKICAgICBtX2Ns
aWVudC0+ZGlkQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDgx
NTU1ZjFlMDcyMDFiZDJlOWFkNDVjM2QyZjM4YzE1MTE4YTQwZDcuLjNmZTQ1MWMxMTE3Y2U3M2Vh
NTRlYTg4ODY5MjJhZjVmY2NjNjU2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBA
IC0xNzEsNiArMTcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgbGF5b3V0KCk7CiAgICAgdm9pZCBi
ZWdpbkNvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9pZCBm
aW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOworICAgIHZvaWQg
d2lsbENvbW1pdCgpOwogICAgIHZvaWQgY29tbWl0Q29tcGxldGUoKTsKICAgICBQYXNzT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBjcmVhdGVDb250ZXh0KCk7CiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGNyZWF0ZUxheWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQqKTsKQEAgLTE4MSw3ICsxODIsNiBAQCBwdWJsaWM6CiAgICAgICAg
IFJlY3JlYXRlRmFpbGVkQW5kR2F2ZVVwLAogICAgIH07CiAgICAgUmVjcmVhdGVSZXN1bHQgcmVj
cmVhdGVDb250ZXh0KCk7Ci0gICAgdm9pZCB3aWxsQ29tbWl0KCkgeyBtX2NsaWVudC0+d2lsbENv
bW1pdCgpOyB9CiAgICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5k
aWRDb21taXRBbmREcmF3RnJhbWUoKTsgfQogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpIHsgbV9jbGllbnQtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQogICAgIHZvaWQgZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154386</attachid>
            <date>2012-07-25 10:36:18 -0700</date>
            <delta_ts>2012-07-25 10:39:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92182-20120725133608.patch</filename>
            <type>text/plain</type>
            <size>64387</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2OTIwM2M2OTE0OWY3
NmE0OTdlNjlhOTJiNGNlMmEyZjE4ZWFiNS4uZjZkMTEzNTI4MTk3NTI2ZDliNTVkOTRmYzdkODNj
ZmM2ZTdkZGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTA3LTI0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVHVy
biB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0IGNhbiBiZSBkcmF3biBhcyBh
IFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4K
KworICAgICAgICBCeSBjaGFuZ2luZyB0aGUgSFVEIGludG8gYSBxdWFkLCB3ZSBhcmUgYWJsZSB0
byBjcmVhdGUgYSBIVUQgYW5kIHBhc3MKKyAgICAgICAgaXQgdG8gdGhlIGhvc3QgY29tcG9zaXRv
ciwgYWxsb3dpbmcgdGhlIEhVRCB0byBiZSB1c2VkIGZvciByZW5kZXJlcnMKKyAgICAgICAgdW5k
ZXIgVWJlcmNvbXBvc2l0b3IuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgdGhlIHNwZWNp
YWwgZHJhd2luZyBjb2RlIGZvciB0aGUgSFVEIGZyb20KKyAgICAgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtLCBhbGxvd2luZyB1cyB0byBtb3ZlIGZpbmlzaERyYXdpbmdGcmFtZQorICAgICAgICBp
bnRvIExheWVyUmVuZGVyZXJDaHJvbWl1bSBhcyBhIHByaXZhdGUgbWV0aG9kIGFuZCByZW1vdmUg
aXQKKyAgICAgICAgZnJvbSB0aGUgQ0NSZW5kZXJlciBpbnRlcmZhY2UuCisKKyAgICAgICAgRmlu
YWxseSwgd2UgY2FuIHJlbW92ZSB0aGUgQ0NGb250QXRsYXMgdHJhbnNwb3J0IGNvZGUgZnJvbSBD
Q1Byb3h5CisgICAgICAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFzIHRoZSBhdGxhcyBjYW4g
YmUgc3luY2VkIHRvIGltcGwgdGhyZWFkCisgICAgICAgIHRocm91Z2ggdGhlIHVzdWFsIGxheWVy
IGNvbW1pdCBtZWNoYW5pc20uCisKKyAgICAgICAgVGhlIGRlYnVnIEhVRCBpcyBub3QgY292ZXJl
ZCBieSB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlM
YXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlM
YXllckNocm9taXVtOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjp+SGVhZHNVcERpc3BsYXlMYXllckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
Lmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVQcm9wZXJ0eUNoYW5nZWRSZWN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6Q0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsOjp+Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjp3aWxsRHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRpZExvc2VDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdIdWRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBTQ291bnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBT
Q291bnRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bDo6ZHJhd0RlYnVnUmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5ZXJJc0Fsd2F5c0RhbWFnZWQpOgorICAgICAg
ICBUaGlzIGZsYWcgaXMgdXNlZCB0byBtYXJrIHRoZSBIVUQgYXMgYWx3YXlzIGRhbWFnZWQsIHNv
IHRoYXQgaXQgaXMKKyAgICAgICAgY29udGludWFsbHkgZHJhd24gb24gdGhlIGltcGwgdGhyZWFk
LiBJdCBpcyBhbHNvIHVzZWQgYXMgYSBoaW50IGJ5CisgICAgICAgIHRoZSBDQ0RlYnVnUmVjdEhp
c3RvcnkgY2xhc3MgdG8gbm90IGluY2x1ZGUgdGhlIGxheWVyIGluIHRoZSBkaXNwbGF5CisgICAg
ICAgIG9mIGRhbWFnZSwgc2luY2UgYWx3YXlzIGRhbWFnZWQgaXMgbm90IGludGVyZXN0aW5nIGRh
bWFnZS4KKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6d2lsbENvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRpZENvbW1pdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChDQ0xheWVyVHJlZVNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlU2V0dGluZ3M6OnNob3dEZWJ1Z0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVTZXR0aW5nczo6c2hvd0RlYnVnUmVjdHMpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJU
cmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJh
d0xheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDctMjMgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEEgRm9jdXNTY29wZSBmb3Ig
YSBkaXN0cmlidXRlZCBub2RlIHNob3VsZCBub3QgYmUgaXRzIFRyZWVTY29wZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMTJiZjhhNGRhODVkZmY5Y2U4ZGUxN2E1ZWI0NDAxYmMwYWU0
NTg5Ny4uOWMwZWFmYmE3NjNkZjZjODc5MmFhZjQyOWE0NjdmYmM1NTMzNjUzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0yNCAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFR1cm4gdGhl
IGRlYnVnIEhVRCBpbnRvIGEgbGF5ZXIgc28gdGhhdCBpdCBjYW4gYmUgZHJhd24gYXMgYSBXZWJD
b21wb3NpdG9yUXVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTIxODIKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisKKyAg
ICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFRF
U1QpOgorCiAyMDEyLTA3LTIzICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gRml4IHVuaXQgdGVzdHMgaW4gZGVidWcgbW9kZSBhZnRl
ciByMTIzMzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYmVkZDQ0MDQwZThmNmUyYWNkMjFjNTkyMGFm
MWM5ODNjNmEyMWViNC4uOTM1ZTkzZmM5Y2I4ZjNhNGZjNGRhNjE4MTViNzhkMDY3YWJhMDk0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtODI0OCw2ICs4MjQ4LDggQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R2VvbWV0cnlCaW5kaW5nLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR2VvbWV0cnlCaW5kaW5nLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JT1N1cmZhY2VMYXll
ckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwJywKQEAgLTgzMTMsOCArODMxNSw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVD
b3VudGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NGcmFtZVJhdGVDb3VudGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDR2VzdHVyZUN1cnZlLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwJywKLSAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllcklt
cGwuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1w
bC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjllZTQ3ZDgwMDhiNDM4ZmM1ZDRkNDZmYWYzZjk0MTE0YzY2NTE0M2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9I
ZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21p
dW0uaCIKKworI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ0hlYWRzVXBE
aXNwbGF5TGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21p
dW0+IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzLCBpbnQgbWF4VGV4dHVyZVNpemUpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oc2V0dGluZ3MsIG1heFRleHR1
cmVTaXplKSk7Cit9CisKK0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6SGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBpbnQg
bWF4VGV4dHVyZVNpemUpCisgICAgOiBMYXllckNocm9taXVtKCkKK3sKKyAgICBPd25QdHI8Q0NG
b250QXRsYXM+IGZvbnRBdGxhczsKKworICAgIEludFNpemUgYm91bmRzOworICAgIGlmIChzZXR0
aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgfHwgc2V0dGluZ3Muc2hvd0RlYnVnUmVjdHMoKSkg
eworICAgICAgICBib3VuZHMuc2V0V2lkdGgoc3RkOjptaW4obWF4VGV4dHVyZVNpemUsIGxheWVy
VHJlZUhvc3QoKS0+ZGV2aWNlVmlld3BvcnRTaXplKCkud2lkdGgoKSkpOworICAgICAgICBib3Vu
ZHMuc2V0SGVpZ2h0KHN0ZDo6bWluKG1heFRleHR1cmVTaXplLCBsYXllclRyZWVIb3N0KCktPmRl
dmljZVZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYm91
bmRzLnNldFdpZHRoKDUxMik7CisgICAgICAgIGJvdW5kcy5zZXRIZWlnaHQoMTI4KTsKKyAgICB9
CisgICAgc2V0Qm91bmRzKGJvdW5kcyk7CisKKyAgICAvLyBPbmx5IGFsbG9jYXRlIHRoZSBmb250
IGF0bGFzIGlmIHdlIGhhdmUgcmVhc29uIHRvIHVzZSB0aGUgaGVhZHMtdXAgZGlzcGxheS4KKyAg
ICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5
ZXJUcmVlKSB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiSGVhZHNVcERpc3BsYXlMYXll
ckNocm9taXVtOjppbml0aWFsaXplRm9udEF0bGFzIik7CisgICAgICAgIG1fZm9udEF0bGFzID0g
Q0NGb250QXRsYXM6OmNyZWF0ZSgpOworICAgICAgICBtX2ZvbnRBdGxhcy0+aW5pdGlhbGl6ZSgp
OworICAgIH0KK30KKworSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjp+SGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtKCkKK3sKK30KKworUGFzc093blB0cjxDQ0xheWVySW1wbD4gSGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCit7CisgICAgcmV0dXJu
IENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQsIG1fZm9udEF0bGFz
LnJlbGVhc2UoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNo
cm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJhYjYwOTI0ZjUyZGI5MzVkN2YyNzBhMTIwNzI2YWZiNWJh
ODU1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpZm5kZWYgSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtX2gKKyNkZWZpbmUg
SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtX2gKKworI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0u
aCIKKyNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBDQ0xheWVyVHJlZVNldHRpbmdzOworCitjbGFzcyBIZWFkc1VwRGlzcGxheUxheWVy
Q2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtPiBjcmVhdGUoY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgdmlydHVhbCB+SGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpIE9WRVJSSURFOworCitwcm90ZWN0
ZWQ6CisgICAgZXhwbGljaXQgSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtKGNvbnN0IENDTGF5
ZXJUcmVlU2V0dGluZ3MmLCBpbnQgbWF4VGV4dHVyZVNpemUpOworCitwcml2YXRlOgorICAgIE93
blB0cjxDQ0ZvbnRBdGxhcz4gbV9mb250QXRsYXM7Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGU1NjM3YTBmY2E3MDVkYmQxZDFmMDcz
YWFkODAzYTI2Zjc2YmQxODcuLmYxOTk1ZTk3ODFmNzRkMTgyMzc3ZWI1NjQ0NTExNTU1ZDQ2OGNk
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzg1LDYgKzM4
NSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUoY29uc3QgQ0NSZW5k
ZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzLCBjb25zCiAgICAgICAgIEZsb2F0UmVjdCByb290U2Np
c3NvclJlY3RJbkN1cnJlbnRTdXJmYWNlID0gcmVuZGVyUGFzcy0+dGFyZ2V0U3VyZmFjZSgpLT5j
b21wdXRlUm9vdFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShyb290U2Npc3NvclJlY3QpOwog
ICAgICAgICBkcmF3UmVuZGVyUGFzcyhyZW5kZXJQYXNzLCByb290U2Npc3NvclJlY3RJbkN1cnJl
bnRTdXJmYWNlKTsKICAgICB9CisKKyAgICBmaW5pc2hEcmF3aW5nRnJhbWUoKTsKIH0KIAogdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVy
UGFzcyogcm9vdFJlbmRlclBhc3MpCkBAIC0xMTQwLDMxICsxMTQyLDYgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1
YWQqIHF1YWQpCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShFeHRl
bnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiwgMCkpOwogfQogCi12b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSog
aHVkVGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkKLXsKLSAgICBBU1NFUlQoaHVkVGV4
dHVyZS0+aWQoKSk7Ci0KLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFw
aGljc0NvbnRleHQzRDo6QkxFTkQpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJs
ZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01J
TlVTX1NSQ19BTFBIQSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShH
cmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7Ci0gICAgdXNlUmVuZGVyUGFzcyhtX2Rl
ZmF1bHRSZW5kZXJQYXNzKTsKLQotICAgIGNvbnN0IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogcHJv
Z3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwotICAgIEFTU0VSVChwcm9ncmFtICYmIHBy
b2dyYW0tPmluaXRpYWxpemVkKCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YWN0
aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBDQ1Njb3BlZExv
Y2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIGh1ZFRleHR1cmUtPmlk
KCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpKTsKLSAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7Ci0gICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
bWF0cml4OwotICAgIG1hdHJpeC50cmFuc2xhdGUzZChodWRTaXplLndpZHRoKCkgKiAwLjUsIGh1
ZFNpemUuaGVpZ2h0KCkgKiAwLjUsIDApOwotICAgIGRyYXdUZXh0dXJlZFF1YWQobWF0cml4LCBo
dWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAx
LCBzaGFyZWRHZW9tZXRyeVF1YWQoKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9j
YXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
YWxwaGFMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgLTEpOwotfQotCiB2b2lkIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKIHsKICAgICBtX2N1cnJl
bnRGcmFtZWJ1ZmZlckxvY2suY2xlYXIoKTsKQEAgLTE1NTgsMTcgKzE1MzUsNiBAQCBjb25zdCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OlNvbGlkQ29sb3JQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OnNvbGlkQ29sbwogICAgIHJldHVybiBtX3NvbGlkQ29sb3JQcm9ncmFtLmdldCgpOwog
fQogCi1jb25zdCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkhlYWRzVXBEaXNwbGF5UHJvZ3JhbSog
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW0oKQotewotICAgIGlm
ICghbV9oZWFkc1VwRGlzcGxheVByb2dyYW0pCi0gICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9n
cmFtID0gYWRvcHRQdHIobmV3IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbShtX2NvbnRleHQpKTsKLSAg
ICBpZiAoIW1faGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAg
IFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxh
eVByb2dyYW06OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0t
PmluaXRpYWxpemUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7Ci0gICAgfQotICAg
IHJldHVybiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQoKTsKLX0KLQogY29uc3QgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpSZW5kZXJQYXNzUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpyZW5kZXJQYXNzUHJvZ3JhbSgpCiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0p
OwpAQCAtMTc3Niw5ICsxNzQyLDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFu
dXBTaGFyZWRPYmplY3RzKCkKICAgICBpZiAobV9zb2xpZENvbG9yUHJvZ3JhbSkKICAgICAgICAg
bV9zb2xpZENvbG9yUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwogCi0gICAgaWYgKG1faGVh
ZHNVcERpc3BsYXlQcm9ncmFtKQotICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+Y2xl
YW51cChtX2NvbnRleHQpOwotCiAgICAgaWYgKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkKICAg
ICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX29mZnNj
cmVlbkZyYW1lYnVmZmVySWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApp
bmRleCAxOThhZWY5YTM0MzkxNDIyY2Y0YjRmZTI2NDE4ZDc2ZGM0NTFhMDUzLi45MGJkNzc0M2I5
ZjFkMmZhOGE2MDE2NGRlNjExODk4ZDNhZjhiZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaApAQCAtODEsOSArODEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhh
dmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdCBPVkVSUklERTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYsIGNv
bnN0IEZsb2F0UmVjdCYgcm9vdFNjaXNzb3JSZWN0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgT1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZHJh
d0hlYWRzVXBEaXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1
ZFNpemUpIE9WRVJSSURFOwogCiAgICAgLy8gd2FpdHMgZm9yIHJlbmRlcmluZyB0byBmaW5pc2gK
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgT1ZFUlJJREU7CkBAIC0xMjYsNiArMTIzLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNz
KiByb290UmVuZGVyUGFzcyk7CiAgICAgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRl
clBhc3MqLCBjb25zdCBGbG9hdFJlY3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCk7CisgICAgdm9p
ZCBmaW5pc2hEcmF3aW5nRnJhbWUoKTsKIAogICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3
UXVhZCopOwogICAgIHZvaWQgZHJhd0NoZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9h
cmREcmF3UXVhZCopOwpAQCAtMjEzLDEwICsyMTEsNiBAQCBwcml2YXRlOgogICAgIC8vIFNwZWNp
YWwgcHVycG9zZSAvIGVmZmVjdHMgc2hhZGVycy4KICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclBvcywgRnJhZ21lbnRTaGFkZXJDb2xvcj4gU29saWRDb2xvclByb2dyYW07
CiAKLSAgICAvLyBEZWJ1Z2dpbmcgc2hhZGVycy4KLSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5n
PFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhPiBI
ZWFkc1VwRGlzcGxheVByb2dyYW07Ci0KLQogICAgIGNvbnN0IFRpbGVQcm9ncmFtKiB0aWxlUHJv
Z3JhbSgpOwogICAgIGNvbnN0IFRpbGVQcm9ncmFtT3BhcXVlKiB0aWxlUHJvZ3JhbU9wYXF1ZSgp
OwogICAgIGNvbnN0IFRpbGVQcm9ncmFtQUEqIHRpbGVQcm9ncmFtQUEoKTsKQEAgLTIzOSw4ICsy
MzMsNiBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU29saWRDb2xvclByb2dyYW0qIHNvbGlkQ29s
b3JQcm9ncmFtKCk7CiAKLSAgICBjb25zdCBIZWFkc1VwRGlzcGxheVByb2dyYW0qIGhlYWRzVXBE
aXNwbGF5UHJvZ3JhbSgpOwotCiAgICAgT3duUHRyPFRpbGVQcm9ncmFtPiBtX3RpbGVQcm9ncmFt
OwogICAgIE93blB0cjxUaWxlUHJvZ3JhbU9wYXF1ZT4gbV90aWxlUHJvZ3JhbU9wYXF1ZTsKICAg
ICBPd25QdHI8VGlsZVByb2dyYW1BQT4gbV90aWxlUHJvZ3JhbUFBOwpAQCAtMjYyLDcgKzI1NCw2
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0+IG1fdmlk
ZW9TdHJlYW1UZXh0dXJlUHJvZ3JhbTsKIAogICAgIE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4g
bV9zb2xpZENvbG9yUHJvZ3JhbTsKLSAgICBPd25QdHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBt
X2hlYWRzVXBEaXNwbGF5UHJvZ3JhbTsKIAogICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNv
dXJjZVByb3ZpZGVyOwogICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4
dHVyZUNvcGllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCmluZGV4IGM2
MTMyMTc4ZTE2MzkzMzVkMDE0Yzg2ZGViODY2YTYzYjViZDc2NzguLjIzZWU4MjZmZDM0YTdjOGFh
YzFlOTIwYWJkMmNjNTk2MWY5NzhjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0
b3J5LmNwcApAQCAtMzgsMTEgKzM4LDYgQEAgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpDQ0RlYnVnUmVj
dEhpc3RvcnkoKQogewogfQogCi1ib29sIENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICByZXR1cm4gc2V0dGluZ3Mu
c2hvd1BhaW50UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNl
dHRpbmdzLnNob3dTdXJmYWNlRGFtYWdlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNl
UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1JlcGxpY2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdz
LnNob3dPY2NsdWRpbmdSZWN0czsKLX0KLQogdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVE
ZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZl
Y3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBWZWN0b3I8
SW50UmVjdD4mIG9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMsIGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmIHNldHRpbmdzKQogewogICAgIC8vIEZvciBub3csIGNsZWFyIGFsbCByZWN0cyBmcm9t
IHByZXZpb3VzIGZyYW1lcy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBzdG9yZQpAQCAt
OTMsNyArODgsMTAgQEAgdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVQcm9wZXJ0eUNoYW5n
ZWRSZWN0cyhjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmUKICAgICAgICAgICAgIGlmIChD
Q0xheWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0PEND
TGF5ZXJJbXBsPihsYXllciwgcmVuZGVyU3VyZmFjZUxheWVyLT5pZCgpKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGxheWVyLT5sYXllclByb3BlcnR5Q2hh
bmdlZCgpKQorICAgICAgICAgICAgaWYgKGxheWVyLT5sYXllcklzQWx3YXlzRGFtYWdlZCgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAobGF5ZXItPmxheWVy
UHJvcGVydHlDaGFuZ2VkKCkgfHwgbGF5ZXItPmxheWVyU3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgp
KQogICAgICAgICAgICAgICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUHJvcGVy
dHlDaGFuZ2VkUmVjdFR5cGUsIENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGxheWVyLT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsYXllci0+
Ym91bmRzKCkpKSkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhp
c3RvcnkuaAppbmRleCA3ZmQwMGMzZjYyNjIxMWJkNTIzY2ZhYzRjOWQzZGUzNjJjMGQ4OWU3Li4y
NDA1YWEwZTJhYmZlNDA2YTFjZGIyYjIwZGQxNDMzYmRmMDBlZTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlYnVnUmVjdEhpc3RvcnkuaApAQCAtNzksOCArNzksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NEZWJ1Z1JlY3RIaXN0b3J5KCkpOwogICAgIH0KIAotICAgIGJv
b2wgZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7Ci0KICAgICAvLyBOb3RlOiBT
YXZpbmcgZGVidWcgcmVjdHMgbXVzdCBoYXBwZW4gYmVmb3JlIGxheWVycycgY2hhbmdlIHRyYWNr
aW5nIGlzIHJlc2V0LgogICAgIHZvaWQgc2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NM
YXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVkaW5nU2NyZWVuU3Bh
Y2VSZWN0cywgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjZmNmVlMGUy
M2U5NWEyY2U0ZWNlZGI0OTQwZmRiYjYwMGRmODg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjUwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCi0K
LSNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCi0jaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1DYW52YXMuaCIKLSNpbmNsdWRlICJjYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCIKLSNp
bmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotQ0NIZWFkc1VwRGlzcGxheTo6
fkNDSGVhZHNVcERpc3BsYXkoKQotewotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OnNldEZv
bnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAgbV9mb250
QXRsYXMgPSBmb250QXRsYXM7Ci19Ci0KLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6ZW5hYmxlZChj
b25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKLXsKLSAgICByZXR1cm4g
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKHNldHRpbmdzKSB8fCBzZXR0aW5ncy5zaG93RlBTQ291bnRl
ciB8fCBzaG93RGVidWdSZWN0cyhzZXR0aW5ncyk7Ci19Ci0KLWJvb2wgQ0NIZWFkc1VwRGlzcGxh
eTo6c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRp
bmdzKSBjb25zdAotewotICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWU7
Ci19Ci0KLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNldHRpbmdzLnNo
b3dQYWludFJlY3RzIHx8IHNldHRpbmdzLnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8fCBzZXR0
aW5ncy5zaG93U3VyZmFjZURhbWFnZVJlY3RzIHx8IHNldHRpbmdzLnNob3dTY3JlZW5TcGFjZVJl
Y3RzIHx8IHNldHRpbmdzLnNob3dSZXBsaWNhU2NyZWVuU3BhY2VSZWN0cyB8fCBzZXR0aW5ncy5z
aG93T2NjbHVkaW5nUmVjdHM7Ci19Ci0KLXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKLXsKLSAgICBDQ1JlbmRlcmVyKiBs
YXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKLSAgICBp
ZiAoIW1faHVkVGV4dHVyZSkKLSAgICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJl
OjpjcmVhdGUobGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7Ci0KLSAgICBj
b25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3RJbXBsLT5z
ZXR0aW5ncygpOwotICAgIC8vIFVzZSBhIGZ1bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5l
ZWQgdG8uLi4KLSAgICBJbnRTaXplIGh1ZFNpemU7Ci0gICAgaWYgKHNob3dQbGF0Zm9ybUxheWVy
VHJlZShzZXR0aW5ncykgfHwgc2hvd0RlYnVnUmVjdHMoc2V0dGluZ3MpKSB7Ci0gICAgICAgIGh1
ZFNpemUuc2V0V2lkdGgobWluKDIwNDgsIGxheWVyVHJlZUhvc3RJbXBsLT5kZXZpY2VWaWV3cG9y
dFNpemUoKS53aWR0aCgpKSk7Ci0gICAgICAgIGh1ZFNpemUuc2V0SGVpZ2h0KG1pbigyMDQ4LCBs
YXllclRyZWVIb3N0SW1wbC0+ZGV2aWNlVmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBodWRTaXplLnNldFdpZHRoKDUxMik7Ci0gICAgICAgIGh1ZFNpemUu
c2V0SGVpZ2h0KDEyOCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkgJiYg
IW1faHVkVGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIGh1ZFNpemUsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFu
eSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFJlbmRlciBwaXhlbHMgaW50byB0aGUgdGV4
dHVyZS4KLSAgICBQbGF0Zm9ybUNhbnZhcyBjYW52YXM7Ci0gICAgY2FudmFzLnJlc2l6ZShodWRT
aXplKTsKLSAgICB7Ci0gICAgICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIHBhaW50ZXIoJmNh
bnZhcywgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQpOwotICAgICAgICBw
YWludGVyLmNvbnRleHQoKS0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBodWRTaXplLndpZHRo
KCksIGh1ZFNpemUuaGVpZ2h0KCkpKTsKLSAgICAgICAgZHJhd0h1ZENvbnRlbnRzKHBhaW50ZXIu
Y29udGV4dCgpLCBsYXllclRyZWVIb3N0SW1wbCwgc2V0dGluZ3MsIGh1ZFNpemUpOwotICAgIH0K
LQotICAgIC8vIFVwbG9hZCB0byBHTC4KLSAgICB7Ci0gICAgICAgIFBsYXRmb3JtQ2FudmFzOjpB
dXRvTG9ja2VyIGxvY2tlcigmY2FudmFzKTsKLSAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50
KDAsIDApLCBodWRTaXplKTsKLSAgICAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJv
dmlkZXIoKS0+dXBsb2FkKG1faHVkVGV4dHVyZS0+aWQoKSwgbG9ja2VyLnBpeGVscygpLCByZWN0
LCByZWN0LCByZWN0KTsKLSAgICB9Ci0KLSAgICBsYXllclJlbmRlcmVyLT5kcmF3SGVhZHNVcERp
c3BsYXkobV9odWRUZXh0dXJlLmdldCgpLCBodWRTaXplKTsKLX0KLQotdm9pZCBDQ0hlYWRzVXBE
aXNwbGF5OjpkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0xheWVy
VHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5n
cyYgc2V0dGluZ3MsIGNvbnN0IEludFNpemUmIGh1ZFNpemUpCi17Ci0gICAgaWYgKHNob3dQbGF0
Zm9ybUxheWVyVHJlZShzZXR0aW5ncykpIHsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KENvbG9yKDAsIDAsIDAsIDE5MiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoMCwgMCwgaHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhl
aWdodCgpKSk7Ci0gICAgfQotCi0gICAgaW50IGZwc0NvdW50ZXJIZWlnaHQgPSA0MDsKLSAgICBp
bnQgZnBzQ291bnRlclRvcCA9IDI7Ci0gICAgaW50IHBsYXRmb3JtTGF5ZXJUcmVlVG9wOwotCi0g
ICAgaWYgKHNldHRpbmdzLnNob3dGUFNDb3VudGVyKQotICAgICAgICBwbGF0Zm9ybUxheWVyVHJl
ZVRvcCA9IGZwc0NvdW50ZXJUb3AgKyBmcHNDb3VudGVySGVpZ2h0OwotICAgIGVsc2UKLSAgICAg
ICAgcGxhdGZvcm1MYXllclRyZWVUb3AgPSAwOwotCi0gICAgaWYgKHNldHRpbmdzLnNob3dGUFND
b3VudGVyKQotICAgICAgICBkcmF3RlBTQ291bnRlcihjb250ZXh0LCBsYXllclRyZWVIb3N0SW1w
bC0+ZnBzQ291bnRlcigpLCBmcHNDb3VudGVyVG9wLCBmcHNDb3VudGVySGVpZ2h0KTsKLQotICAg
IGlmIChzaG93UGxhdGZvcm1MYXllclRyZWUoc2V0dGluZ3MpICYmIG1fZm9udEF0bGFzKSB7Ci0g
ICAgICAgIFN0cmluZyBsYXllclRyZWUgPSBsYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJUcmVlQXNU
ZXh0KCk7Ci0gICAgICAgIG1fZm9udEF0bGFzLT5kcmF3VGV4dChjb250ZXh0LCBsYXllclRyZWUs
IEludFBvaW50KDIsIHBsYXRmb3JtTGF5ZXJUcmVlVG9wKSwgaHVkU2l6ZSk7Ci0gICAgfQotCi0g
ICAgaWYgKHNob3dEZWJ1Z1JlY3RzKHNldHRpbmdzKSkKLSAgICAgICAgZHJhd0RlYnVnUmVjdHMo
Y29udGV4dCwgbGF5ZXJUcmVlSG9zdEltcGwtPmRlYnVnUmVjdEhpc3RvcnkoKSwgc2V0dGluZ3Mp
OwotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgQ0NGcmFtZVJhdGVDb3VudGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBp
bnQgaGVpZ2h0KQotewotICAgIGZsb2F0IHRleHRXaWR0aCA9IDE3MDsgLy8gc28gdGV4dCBmaXRz
IG9uIGxpbnV4LgotICAgIGZsb2F0IGdyYXBoV2lkdGggPSBmcHNDb3VudGVyLT50aW1lU3RhbXBI
aXN0b3J5U2l6ZSgpOwotCi0gICAgLy8gRHJhdyB0aGUgRlBTIHRleHQuCi0gICAgZHJhd0ZQU0Nv
dW50ZXJUZXh0KGNvbnRleHQsIGZwc0NvdW50ZXIsIHRvcCwgdGV4dFdpZHRoLCBoZWlnaHQpOwot
Ci0gICAgLy8gRHJhdyBGUFMgZ3JhcGguCi0gICAgY29uc3QgZG91YmxlIGxvRlBTID0gMDsKLSAg
ICBjb25zdCBkb3VibGUgaGlGUFMgPSA4MDsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDE1NCwgMjA1LCA1
MCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVj
dCgyICsgdGV4dFdpZHRoLCB0b3AsIGdyYXBoV2lkdGgsIGhlaWdodCAvIDIpKTsKLSAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTAsIDIwNSksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyICsgdGV4dFdpZHRoLCB0b3Ag
KyBoZWlnaHQgLyAyLCBncmFwaFdpZHRoLCBoZWlnaHQgLyAyKSk7Ci0gICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotCi0gICAgaW50IGdyYXBoTGVmdCA9IHN0YXRpY19jYXN0PGludD4odGV4dFdpZHRoICsg
Myk7Ci0gICAgSW50UG9pbnQgcHJldigtMSwgMCk7Ci0gICAgaW50IHggPSAwOwotICAgIGRvdWJs
ZSBoID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihoZWlnaHQgLSAyKTsKLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IGZwc0NvdW50ZXItPnRpbWVTdGFtcEhpc3RvcnlTaXplKCkgLSAxOyArK2kpIHsKLSAg
ICAgICAgaW50IGogPSBpICsgMTsKLSAgICAgICAgZG91YmxlIGRlbHRhID0gZnBzQ291bnRlci0+
dGltZVN0YW1wT2ZSZWNlbnRGcmFtZShqKSAtIGZwc0NvdW50ZXItPnRpbWVTdGFtcE9mUmVjZW50
RnJhbWUoaSk7Ci0KLSAgICAgICAgLy8gU2tpcCBwbG90dGluZyB0aGlzIHBhcnRpY3VsYXIgaW5z
dGFudGFuZW91cyBmcmFtZSByYXRlIGlmIGl0IGlzIG5vdCBsaWtlbHkgdG8gaGF2ZSBiZWVuIHZh
bGlkLgotICAgICAgICBpZiAoZnBzQ291bnRlci0+aXNCYWRGcmFtZUludGVydmFsKGRlbHRhKSkg
ewotICAgICAgICAgICAgeCArPSAxOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LQotICAgICAgICBkb3VibGUgZnBzID0gMS4wIC8gZGVsdGE7Ci0KLSAgICAgICAgLy8gQ2xhbXAg
dGhlIEZQUyB0byB0aGUgcmFuZ2Ugd2Ugd2FudCB0byBwbG90IHZpc3VhbGx5LgotICAgICAgICBk
b3VibGUgcCA9IDEgLSAoKGZwcyAtIGxvRlBTKSAvIChoaUZQUyAtIGxvRlBTKSk7Ci0gICAgICAg
IGlmIChwIDwgMCkKLSAgICAgICAgICAgIHAgPSAwOwotICAgICAgICBpZiAocCA+IDEpCi0gICAg
ICAgICAgICBwID0gMTsKLQotICAgICAgICAvLyBQbG90IHRoaXMgZGF0YSBwb2ludC4KLSAgICAg
ICAgSW50UG9pbnQgY3VyKGdyYXBoTGVmdCArIHgsIDEgKyB0b3AgKyBwKmgpOwotICAgICAgICBp
ZiAocHJldi54KCkgIT0gLTEpCi0gICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZShwcmV2LCBj
dXIpOwotICAgICAgICBwcmV2ID0gY3VyOwotICAgICAgICB4ICs9IDE7Ci0gICAgfQotfQotCi12
b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIENDRnJhbWVSYXRlQ291bnRlciogZnBzQ291bnRlciwgaW50IHRvcCwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIGRvdWJsZSBhdmVyYWdlRlBTLCBzdGREZXZpYXRpb247
Ci0gICAgZnBzQ291bnRlci0+Z2V0QXZlcmFnZUZQU0FuZFN0YW5kYXJkRGV2aWF0aW9uKGF2ZXJh
Z2VGUFMsIHN0ZERldmlhdGlvbik7Ci0KLSAgICAvLyBEcmF3IGJhY2tncm91bmQuCi0gICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyLCB0b3AsIHdpZHRoLCBoZWln
aHQpKTsKLQotICAgIC8vIERyYXcgRlBTIHRleHQuCi0gICAgaWYgKG1fZm9udEF0bGFzKQotICAg
ICAgICBtX2ZvbnRBdGxhcy0+ZHJhd1RleHQoY29udGV4dCwgU3RyaW5nOjpmb3JtYXQoIkZQUzog
JTQuMWYgKy8tICUzLjFmIiwgYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9uKSwgSW50UG9pbnQoMTAs
IGhlaWdodCAvIDMpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotdm9pZCBDQ0hlYWRz
VXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRGVi
dWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlzdG9yeSwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5n
cyYgc2V0dGluZ3MpCi17Ci0gICAgY29uc3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0
cyA9IGRlYnVnUmVjdEhpc3RvcnktPmRlYnVnUmVjdHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGRlYnVnUmVjdHMuc2l6ZSgpOyArK2kpIHsKLQotICAgICAgICBpZiAoZGVidWdSZWN0
c1tpXS50eXBlID09IFBhaW50UmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFBhaW50IHJlY3Rz
IGluIHJlZAotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAw
LCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjU1LCAwLCAwLCAzMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwotICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3Rz
W2ldLnJlY3QsIDIuMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50
eXBlID09IFByb3BlcnR5Q2hhbmdlZFJlY3RUeXBlKSB7Ci0gICAgICAgICAgICAvLyBQcm9wZXJ0
eS1jaGFuZ2VkIHJlY3RzIGluIGJsdWUKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKENvbG9yKDAsIDAsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDAsIDAsIDI1
NSwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0cm9r
ZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGRlYnVnUmVjdHNbaV0udHlwZSA9PSBTdXJmYWNlRGFtYWdlUmVjdFR5cGUpIHsKLSAgICAgICAg
ICAgIC8vIFN1cmZhY2UgZGFtYWdlIHJlY3RzIGluIHllbGxvdy1vcmFuZ2UKLSAgICAgICAgICAg
IGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDIwMCwgMTAwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNb
aV0ucmVjdCwgQ29sb3IoMjAwLCAxMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUmVwbGljYVNj
cmVlblNwYWNlUmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFNjcmVlbiBzcGFjZSByZWN0cyBp
biBncmVlbi4KLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwg
MjAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQt
PmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAyMDAsIDAsIDMwKSwgQ29s
b3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVn
UmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3Rz
W2ldLnR5cGUgPT0gU2NyZWVuU3BhY2VSZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gU2NyZWVu
IHNwYWNlIHJlY3RzIGluIHB1cnBsZS4KLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKENvbG9yKDEwMCwgMCwgMjAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAw
LCAyMDAsIDEwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5z
dHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gT2NjbHVkaW5nUmVjdFR5cGUpIHsKLSAgICAgICAg
ICAgIC8vIE9jY2x1ZGluZyByZWN0cyBpbiBhIHJlZGRpc2ggY29sb3IuCi0gICAgICAgICAgICBj
b250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDAsIDEwMCwgMjU1KSwgQ29sb3JTcGFj
ZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ld
LnJlY3QsIENvbG9yKDIwMCwgMCwgMTAwLCAxMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
ICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjY2YmY1MWUxZjRlZGM2YzYwYzIxNjMyMzA4Y2UyNjhmMWQzYWE2MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENDSGVhZHNV
cERpc3BsYXlfaAotI2RlZmluZSBDQ0hlYWRzVXBEaXNwbGF5X2gKLQotI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCi0jaW5jbHVk
ZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
Q0NEZWJ1Z1JlY3RIaXN0b3J5OwotY2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOwotY2xhc3MgQ0NM
YXllclRyZWVIb3N0SW1wbDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFRleHVyZUFs
bG9jYXRvcjsKLQotc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3M7Ci0KLS8vIENsYXNzIHRoYXQg
aGFuZGxlcyBkcmF3aW5nIG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KLWNs
YXNzIENDSGVhZHNVcERpc3BsYXkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSGVhZHNV
cERpc3BsYXkpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDSGVhZHNVcERpc3Bs
YXk+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSGVhZHNV
cERpc3BsYXkoKSk7Ci0gICAgfQotCi0gICAgfkNDSGVhZHNVcERpc3BsYXkoKTsKLQotICAgIHZv
aWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKLQotICAgIGJvb2wgZW5h
YmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7Ci0gICAgdm9pZCBkcmF3KEND
TGF5ZXJUcmVlSG9zdEltcGwqKTsKLQotcHJpdmF0ZToKLSAgICBDQ0hlYWRzVXBEaXNwbGF5KCkg
eyB9OwotCi0gICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NMYXll
clRyZWVIb3N0SW1wbCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBjb25zdCBJbnRTaXpl
JiBodWRTaXplKTsKLSAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIEND
RnJhbWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCBoZWlnaHQpOwotICAgIHZvaWQgZHJhd0ZQ
U0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0
b3AsIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFw
aGljc0NvbnRleHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25zdCBDQ0xheWVyVHJlZVNldHRp
bmdzJik7Ci0KLSAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJikgY29uc3Q7Ci0gICAgYm9vbCBzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJikgY29uc3Q7Ci0KLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBtX2h1
ZFRleHR1cmU7Ci0gICAgT3duUHRyPENDRm9udEF0bGFzPiBtX2ZvbnRBdGxhczsKLX07Ci0KLX0K
LQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA2NmZkYzg0ZGRlMTZjODBkMWQ0Mzc0NDdjOTJkN2UyYTZhOWY4ODIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaCIK
KworI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUNhbnZhcy5oIgorI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgor
I2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCisjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb3Vu
dGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgorI2luY2x1ZGUgImNj
L0NDUXVhZFNpbmsuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFk
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIFdlYktpdDo6V2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDSGVhZHNV
cERpc3BsYXlMYXllckltcGw6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGwoaW50IGlkLCBQYXNz
T3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCisgICAgOiBDQ0xheWVySW1wbChpZCksCisg
ICAgICBtX2ZvbnRBdGxhcyhmb250QXRsYXMpCit7Cit9CisKK0NDSGVhZHNVcERpc3BsYXlMYXll
ckltcGw6On5DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKCkKK3sKK30KKwordm9pZCBDQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIpCit7CisgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KHJlc291cmNlUHJvdmlkZXIp
OworCisgICAgaWYgKCFtX2h1ZFRleHR1cmUpCisgICAgICAgIG1faHVkVGV4dHVyZSA9IENDU2Nv
cGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJvdmlkZXIpOworCisgICAgLy8gRklYTUU6IFNj
YWxlIHRoZSBIVUQgYnkgZGV2aWNlU2NhbGUgdG8gbWFrZSBpdCBtb3JlIGZyaWVuZGx5IHVuZGVy
IGhpZ2ggRFBJLgorCisgICAgaWYgKG1faHVkVGV4dHVyZS0+c2l6ZSgpICE9IGJvdW5kcygpKQor
ICAgICAgICBtX2h1ZFRleHR1cmUtPmZyZWUoKTsKKworICAgIGlmICghbV9odWRUZXh0dXJlLT5p
ZCgpICYmICFtX2h1ZFRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBib3Vu
ZHMoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVy
ZVVzYWdlQW55KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVuZGVyIHBpeGVscyBpbnRv
IHRoZSB0ZXh0dXJlLgorICAgIFBsYXRmb3JtQ2FudmFzIGNhbnZhczsKKyAgICBjYW52YXMucmVz
aXplKGJvdW5kcygpKTsKKyAgICB7CisgICAgICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIHBh
aW50ZXIoJmNhbnZhcywgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQpOwor
ICAgICAgICBwYWludGVyLmNvbnRleHQoKS0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBib3Vu
ZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQoKSkpOworICAgICAgICBkcmF3SHVkQ29udGVu
dHMocGFpbnRlci5jb250ZXh0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUGxhdGZvcm1D
YW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOworICAgICAgICBJbnRSZWN0IGxheWVy
UmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7CisgICAgICAgIHJlc291cmNlUHJvdmlkZXItPnVw
bG9hZChtX2h1ZFRleHR1cmUtPmlkKCksIGxvY2tlci5waXhlbHMoKSwgbGF5ZXJSZWN0LCBsYXll
clJlY3QsIGxheWVyUmVjdCk7CisgICAgfQorfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3sKKyAgICBpZiAoIW1faHVkVGV4dHVy
ZS0+aWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2lu
dCgpLCBib3VuZHMoKSk7CisgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOworICAg
IEZsb2F0UmVjdCB1dlJlY3QoMCwgMCwgMSwgMSk7CisgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7
CisgICAgcXVhZExpc3QuYXBwZW5kKFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1faHVkVGV4dHVyZS0+aWQoKSwgcHJlbXVsdGlwbGll
ZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5
ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKK3sK
KyAgICBDQ0xheWVySW1wbDo6ZGlkRHJhdyhyZXNvdXJjZVByb3ZpZGVyKTsKKworICAgIGlmICgh
bV9odWRUZXh0dXJlLT5pZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogdGhl
IGZvbGxvd2luZyBhc3NlcnQgd2lsbCBub3QgYmUgdHJ1ZSB3aGVuIHNlbmRpbmcgcmVzb3VyY2Vz
IHRvIGEKKyAgICAvLyBwYXJlbnQgY29tcG9zaXRvci4gV2Ugd2lsbCBwcm9iYWJseSBuZWVkIHRv
IGhvbGQgb24gdG8gbV9odWRUZXh0dXJlIGZvcgorICAgIC8vIGxvbmdlciwgYW5kIGhhdmUgc2V2
ZXJhbCBIVUQgdGV4dHVyZXMgaW4gdGhlIHBpcGVsaW5lLgorICAgIEFTU0VSVCghcmVzb3VyY2VQ
cm92aWRlci0+aW5Vc2VCeUNvbnN1bWVyKG1faHVkVGV4dHVyZS0+aWQoKSkpOworfQorCit2b2lk
IENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRpZExvc2VDb250ZXh0KCkKK3sKKyAgICBtX2h1
ZFRleHR1cmUtPmxlYWsoKTsKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpk
cmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQoreworICAgIGNvbnN0IEND
TGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwoKS0+c2V0dGlu
Z3MoKTsKKworICAgIGlmIChzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKKyAgICAg
ICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDE5MiksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoMCwgMCwgYm91
bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCkpKTsKKyAgICB9CisKKyAgICBpbnQgZnBz
Q291bnRlckhlaWdodCA9IDQwOworICAgIGludCBmcHNDb3VudGVyVG9wID0gMjsKKyAgICBpbnQg
cGxhdGZvcm1MYXllclRyZWVUb3A7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIp
CisgICAgICAgIHBsYXRmb3JtTGF5ZXJUcmVlVG9wID0gZnBzQ291bnRlclRvcCArIGZwc0NvdW50
ZXJIZWlnaHQ7CisgICAgZWxzZQorICAgICAgICBwbGF0Zm9ybUxheWVyVHJlZVRvcCA9IDA7CisK
KyAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpCisgICAgICAgIGRyYXdGUFNDb3VudGVy
KGNvbnRleHQsIGxheWVyVHJlZUhvc3RJbXBsKCktPmZwc0NvdW50ZXIoKSwgZnBzQ291bnRlclRv
cCwgZnBzQ291bnRlckhlaWdodCk7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5
ZXJUcmVlICYmIG1fZm9udEF0bGFzKSB7CisgICAgICAgIFN0cmluZyBsYXllclRyZWUgPSBsYXll
clRyZWVIb3N0SW1wbCgpLT5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgbV9mb250QXRsYXMt
PmRyYXdUZXh0KGNvbnRleHQsIGxheWVyVHJlZSwgSW50UG9pbnQoMiwgcGxhdGZvcm1MYXllclRy
ZWVUb3ApLCBib3VuZHMoKSk7CisgICAgfQorCisgICAgaWYgKHNldHRpbmdzLnNob3dEZWJ1Z1Jl
Y3RzKCkpCisgICAgICAgIGRyYXdEZWJ1Z1JlY3RzKGNvbnRleHQsIGxheWVyVHJlZUhvc3RJbXBs
KCktPmRlYnVnUmVjdEhpc3RvcnkoKSk7Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVy
SW1wbDo6ZHJhd0ZQU0NvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0ZyYW1lUmF0
ZUNvdW50ZXIqIGZwc0NvdW50ZXIsIGludCB0b3AsIGludCBoZWlnaHQpCit7CisgICAgZmxvYXQg
dGV4dFdpZHRoID0gMTcwOyAvLyBzbyB0ZXh0IGZpdHMgb24gbGludXguCisgICAgZmxvYXQgZ3Jh
cGhXaWR0aCA9IGZwc0NvdW50ZXItPnRpbWVTdGFtcEhpc3RvcnlTaXplKCk7CisKKyAgICAvLyBE
cmF3IHRoZSBGUFMgdGV4dC4KKyAgICBkcmF3RlBTQ291bnRlclRleHQoY29udGV4dCwgZnBzQ291
bnRlciwgdG9wLCB0ZXh0V2lkdGgsIGhlaWdodCk7CisKKyAgICAvLyBEcmF3IEZQUyBncmFwaC4K
KyAgICBjb25zdCBkb3VibGUgbG9GUFMgPSAwOworICAgIGNvbnN0IGRvdWJsZSBoaUZQUyA9IDgw
OworICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBjb250ZXh0
LT5zZXRGaWxsQ29sb3IoQ29sb3IoMTU0LCAyMDUsIDUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCwgZ3Jh
cGhXaWR0aCwgaGVpZ2h0IC8gMikpOworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigy
NTUsIDI1MCwgMjA1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZmlsbFJl
Y3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCArIGhlaWdodCAvIDIsIGdyYXBoV2lkdGgs
IGhlaWdodCAvIDIpKTsKKyAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAs
IDApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICBpbnQgZ3JhcGhMZWZ0
ID0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0V2lkdGggKyAzKTsKKyAgICBJbnRQb2ludCBwcmV2KC0x
LCAwKTsKKyAgICBpbnQgeCA9IDA7CisgICAgZG91YmxlIGggPSBzdGF0aWNfY2FzdDxkb3VibGU+
KGhlaWdodCAtIDIpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnBzQ291bnRlci0+dGltZVN0
YW1wSGlzdG9yeVNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBpbnQgaiA9IGkgKyAxOworICAg
ICAgICBkb3VibGUgZGVsdGEgPSBmcHNDb3VudGVyLT50aW1lU3RhbXBPZlJlY2VudEZyYW1lKGop
IC0gZnBzQ291bnRlci0+dGltZVN0YW1wT2ZSZWNlbnRGcmFtZShpKTsKKworICAgICAgICAvLyBT
a2lwIHBsb3R0aW5nIHRoaXMgcGFydGljdWxhciBpbnN0YW50YW5lb3VzIGZyYW1lIHJhdGUgaWYg
aXQgaXMgbm90IGxpa2VseSB0byBoYXZlIGJlZW4gdmFsaWQuCisgICAgICAgIGlmIChmcHNDb3Vu
dGVyLT5pc0JhZEZyYW1lSW50ZXJ2YWwoZGVsdGEpKSB7CisgICAgICAgICAgICB4ICs9IDE7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSBmcHMgPSAx
LjAgLyBkZWx0YTsKKworICAgICAgICAvLyBDbGFtcCB0aGUgRlBTIHRvIHRoZSByYW5nZSB3ZSB3
YW50IHRvIHBsb3QgdmlzdWFsbHkuCisgICAgICAgIGRvdWJsZSBwID0gMSAtICgoZnBzIC0gbG9G
UFMpIC8gKGhpRlBTIC0gbG9GUFMpKTsKKyAgICAgICAgaWYgKHAgPCAwKQorICAgICAgICAgICAg
cCA9IDA7CisgICAgICAgIGlmIChwID4gMSkKKyAgICAgICAgICAgIHAgPSAxOworCisgICAgICAg
IC8vIFBsb3QgdGhpcyBkYXRhIHBvaW50LgorICAgICAgICBJbnRQb2ludCBjdXIoZ3JhcGhMZWZ0
ICsgeCwgMSArIHRvcCArIHAqaCk7CisgICAgICAgIGlmIChwcmV2LngoKSAhPSAtMSkKKyAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdMaW5lKHByZXYsIGN1cik7CisgICAgICAgIHByZXYgPSBjdXI7
CisgICAgICAgIHggKz0gMTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVy
SW1wbDo6ZHJhd0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFt
ZVJhdGVDb3VudGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
Cit7CisgICAgZG91YmxlIGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbjsKKyAgICBmcHNDb3VudGVy
LT5nZXRBdmVyYWdlRlBTQW5kU3RhbmRhcmREZXZpYXRpb24oYXZlcmFnZUZQUywgc3RkRGV2aWF0
aW9uKTsKKworICAgIC8vIERyYXcgYmFja2dyb3VuZC4KKyAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3IoMCwgMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4
dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIsIHRvcCwgd2lkdGgsIGhlaWdodCkpOworCisgICAgLy8g
RHJhdyBGUFMgdGV4dC4KKyAgICBpZiAobV9mb250QXRsYXMpCisgICAgICAgIG1fZm9udEF0bGFz
LT5kcmF3VGV4dChjb250ZXh0LCBTdHJpbmc6OmZvcm1hdCgiRlBTOiAlNC4xZiArLy0gJTMuMWYi
LCBhdmVyYWdlRlBTLCBzdGREZXZpYXRpb24pLCBJbnRQb2ludCgxMCwgaGVpZ2h0IC8gMyksIElu
dFNpemUod2lkdGgsIGhlaWdodCkpOworfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGw6OmRyYXdEZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RI
aXN0b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5KQoreworICAgIGNvbnN0IFZlY3RvcjxDQ0RlYnVnUmVj
dD4mIGRlYnVnUmVjdHMgPSBkZWJ1Z1JlY3RIaXN0b3J5LT5kZWJ1Z1JlY3RzKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBkZWJ1Z1JlY3RzLnNpemUoKTsgKytpKSB7CisKKyAgICAgICAg
aWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBQYWludFJlY3RUeXBlKSB7CisgICAgICAgICAgICAv
LyBQYWludCByZWN0cyBpbiByZWQKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yKDI1NSwgMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAg
ICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDI1NSwgMCwgMCwg
MzApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJl
Y3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRl
YnVnUmVjdHNbaV0udHlwZSA9PSBQcm9wZXJ0eUNoYW5nZWRSZWN0VHlwZSkgeworICAgICAgICAg
ICAgLy8gUHJvcGVydHktY2hhbmdlZCByZWN0cyBpbiBibHVlCisgICAgICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBD
b2xvcigwLCAwLCAyNTUsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU3VyZmFjZURhbWFnZVJlY3RUeXBl
KSB7CisgICAgICAgICAgICAvLyBTdXJmYWNlIGRhbWFnZSByZWN0cyBpbiB5ZWxsb3ctb3Jhbmdl
CisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDEwMCwgMCwg
MjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVj
dChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDIwMCwgMTAwLCAwLCAzMCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ld
LnJlY3QsIDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBl
ID09IFJlcGxpY2FTY3JlZW5TcGFjZVJlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBTY3JlZW4g
c3BhY2UgcmVjdHMgaW4gZ3JlZW4uCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cihDb2xvcigxMDAsIDIwMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDEwMCwgMjAw
LCAwLCAzMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ry
b2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFNjcmVlblNwYWNlUmVjdFR5cGUpIHsKKyAgICAgICAg
ICAgIC8vIFNjcmVlbiBzcGFjZSByZWN0cyBpbiBwdXJwbGUuCisgICAgICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VDb2xvcihDb2xvcigxMDAsIDAsIDIwMCwgMjU1KSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3Qs
IENvbG9yKDEwMCwgMCwgMjAwLCAxMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAg
ICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IE9jY2x1ZGluZ1JlY3RUeXBl
KSB7CisgICAgICAgICAgICAvLyBPY2NsdWRpbmcgcmVjdHMgaW4gYSByZWRkaXNoIGNvbG9yLgor
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjAwLCAwLCAxMDAsIDI1
NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
ZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigyMDAsIDAsIDEwMCwgMTApLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5y
ZWN0LCAyLjApOworICAgICAgICB9CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgzNzhhNWZlOWVlZTA1MTE2
OWM2OWEwODdiMjYzNDYwMTc3YTUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwu
aApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsX2gKKyNkZWZpbmUgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbF9oCisKKyNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDU2NvcGVkVGV4dHVyZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDRGVidWdSZWN0SGlzdG9yeTsKK2NsYXNzIENDRm9u
dEF0bGFzOworY2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOworY2xhc3MgR3JhcGhpY3NDb250ZXh0
OworCitjbGFzcyBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBs
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsPiBjcmVhdGUoaW50IGlkLCBQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGwoaWQsIGZvbnRBdGxhcykpOworICAgIH0KKyAgICB2aXJ0dWFsIH5DQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3Zp
ZGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJ
REU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKKworICAg
IHZpcnR1YWwgYm9vbCBsYXllcklzQWx3YXlzRGFtYWdlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKGlu
dCwgUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOworCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBs
YXllclR5cGVBc1N0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJIZWFkc1VwRGlzcGxh
eUxheWVyIjsgfQorCisgICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBkcmF3RlBTQ291bnRlcihHcmFwaGljc0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNv
dW50ZXIqLCBpbnQgdG9wLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIGRyYXdGUFNDb3VudGVyVGV4
dChHcmFwaGljc0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBpbnQgdG9wLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0
KiwgQ0NEZWJ1Z1JlY3RIaXN0b3J5Kik7CisKKyAgICBPd25QdHI8Q0NGb250QXRsYXM+IG1fZm9u
dEF0bGFzOworICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IG1faHVkVGV4dHVyZTsKK307CisK
K30KKworI2VuZGlmIC8vIENDSGVhZHNVcERpc3BsYXlMYXllckltcGxfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmgKaW5kZXggMjViZWRjMjIwN2U3MjkwY2ViN2FmOWI4NTVmZGIyYzU3NTc3ZjZjMi4uOTBh
NTExMjdmOTI0MmRkYmRjNDBiZDZkY2JkYTc5NTdiZDNkN2NlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oCkBAIC0yNTUsMTEgKzI1NSwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFN0YWNraW5n
T3JkZXJDaGFuZ2VkKGJvb2wpOwogCi0gICAgYm9vbCBsYXllclByb3BlcnR5Q2hhbmdlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQ7IH0KKyAgICBib29sIGxheWVyUHJv
cGVydHlDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclByb3BlcnR5Q2hhbmdlZCB8fCBs
YXllcklzQWx3YXlzRGFtYWdlZCgpOyB9CiAgICAgYm9vbCBsYXllclN1cmZhY2VQcm9wZXJ0eUNo
YW5nZWQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRy
ZWUoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBsYXllcklzQWx3YXlzRGFtYWdlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogbGF5ZXJB
bmltYXRpb25Db250cm9sbGVyKCkgeyByZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIu
Z2V0KCk7IH0KIAogICAgIHZpcnR1YWwgUmVnaW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBkMmE3OWViMWJm
YmU1ZjY2ZGUxZjI5MGJlNTcxMmJmMTBhNmZhMTc1Li45MTRkZjAzNDYyMDJiNGEwMTdjODQ2MDY5
YzJjNTM1NTdiMTBhMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCisjaW5jbHVk
ZSAiSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKQEAgLTEw
NiwxNCArMTA3LDYgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogICAgIGlm
ICghbV9wcm94eS0+aW5pdGlhbGl6ZUNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgLy8gT25seSBhbGxvY2F0ZSB0aGUgZm9udCBhdGxhcyBpZiB3ZSBoYXZlIHJlYXNvbiB0
byB1c2UgdGhlIGhlYWRzLXVwIGRpc3BsYXkuCi0gICAgaWYgKG1fc2V0dGluZ3Muc2hvd0ZQU0Nv
dW50ZXIgfHwgbV9zZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQwKCJjYyIsICJDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemU6OmluaXRpYWxpemVG
b250QXRsYXMiKTsKLSAgICAgICAgT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMoQ0NGb250
QXRsYXM6OmNyZWF0ZSgpKTsKLSAgICAgICAgZm9udEF0bGFzLT5pbml0aWFsaXplKCk7Ci0gICAg
ICAgIG1fcHJveHktPnNldEZvbnRBdGxhcyhmb250QXRsYXMucmVsZWFzZSgpKTsKLSAgICB9Ci0K
ICAgICBtX2NvbXBvc2l0b3JJZGVudGlmaWVyID0gbV9wcm94eS0+Y29tcG9zaXRvcklkZW50aWZp
ZXIoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI1OSw4ICsyNTIsMjAgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBs
KiBob3N0SW1wbCkKICAgICBtX2NvbW1pdE51bWJlcisrOwogfQogCit2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6d2lsbENvbW1pdCgpCit7CisgICAgbV9jbGllbnQtPndpbGxDb21taXQoKTsKKyAgICBp
ZiAobV9zZXR0aW5ncy5zaG93RGVidWdJbmZvKCkpIHsKKyAgICAgICAgaWYgKCFtX2h1ZExheWVy
KQorICAgICAgICAgICAgbV9odWRMYXllciA9IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKG1fc2V0dGluZ3MsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJl
U2l6ZSk7CisgICAgICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX2h1ZExheWVyKTsKKyAgICB9
Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSgpCiB7CisgICAgaWYg
KG1faHVkTGF5ZXIpCisgICAgICAgIG1faHVkTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAg
ICBtX2RlbGV0ZVRleHR1cmVBZnRlckNvbW1pdExpc3QuY2xlYXIoKTsKICAgICBtX2NsaWVudC0+
ZGlkQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDgzOTc4NTkw
NTNlY2U2MjAyZDFkMTkwOWRkOTZlMWIwMjdmMThhMjEuLjNmZTQ1MWMxMTE3Y2U3M2VhNTRlYTg4
ODY5MjJhZjVmY2NjNjU2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMTIs
NiArMTEyLDkgQEAgc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3MgewogICAgIEludFNpemUgZGVm
YXVsdFRpbGVTaXplOwogICAgIEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKICAgICBJbnRT
aXplIG1pbmltdW1PY2NsdXNpb25UcmFja2luZ1NpemU7CisKKyAgICBib29sIHNob3dEZWJ1Z0lu
Zm8oKSBjb25zdCB7IHJldHVybiBzaG93UGxhdGZvcm1MYXllclRyZWUgfHwgc2hvd0ZQU0NvdW50
ZXIgfHwgc2hvd0RlYnVnUmVjdHMoKTsgfQorICAgIGJvb2wgc2hvd0RlYnVnUmVjdHMoKSBjb25z
dCB7IHJldHVybiBzaG93UGFpbnRSZWN0cyB8fCBzaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwg
c2hvd1N1cmZhY2VEYW1hZ2VSZWN0cyB8fCBzaG93U2NyZWVuU3BhY2VSZWN0cyB8fCBzaG93UmVw
bGljYVNjcmVlblNwYWNlUmVjdHMgfHwgc2hvd09jY2x1ZGluZ1JlY3RzOyB9CiB9OwogCiAvLyBQ
cm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBi
YWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE2OCw2ICsxNzEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsYXlvdXQoKTsKICAgICB2b2lkIGJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKik7CisgICAgdm9pZCB3aWxsQ29tbWl0KCk7CiAgICAgdm9pZCBjb21t
aXRDb21wbGV0ZSgpOwogICAgIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNv
bnRleHQoKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3Jl
YXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwpAQCAtMTc4
LDcgKzE4Miw2IEBAIHB1YmxpYzoKICAgICAgICAgUmVjcmVhdGVGYWlsZWRBbmRHYXZlVXAsCiAg
ICAgfTsKICAgICBSZWNyZWF0ZVJlc3VsdCByZWNyZWF0ZUNvbnRleHQoKTsKLSAgICB2b2lkIHdp
bGxDb21taXQoKSB7IG1fY2xpZW50LT53aWxsQ29tbWl0KCk7IH0KICAgICB2b2lkIGRpZENvbW1p
dEFuZERyYXdGcmFtZSgpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdGcmFtZSgpOyB9CiAg
ICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVudC0+ZGlkQ29tcGxldGVT
d2FwQnVmZmVycygpOyB9CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhy
ZWFkKENDUmVzb3VyY2VQcm92aWRlciopOwpAQCAtMzEwLDYgKzMxMyw3IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fbnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0czsKIAogICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBtX3Jvb3RMYXllcjsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9odWRMYXll
cjsKICAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXI7CiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiBtX3N1cmZhY2VN
ZW1vcnlQbGFjZWhvbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAppbmRleCAwZDlkN2ZmNDFlNWViNTFmZDQ4ZjAyZmZmZDJkNTlhZjljYzQxMDcwLi40Njk2NzM3
MzExYzgwM2FlZDI4YTM1ODdlMDVjZTA0NzA2NjRhYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgImNjL0NDRGVs
YXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1
ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgotI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3Bs
YXkuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKQEAg
LTEyMyw3ICsxMjIsNiBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBs
KGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQwogICAgICwgbV92aXNpYmxl
KHRydWUpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0
KGZhbHNlKQogICAgICwgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXQoKSkKLSAgICAsIG1f
aGVhZHNVcERpc3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2VT
Y2FsZSgxKQogICAgICwgbV9wYWdlU2NhbGVEZWx0YSgxKQogICAgICwgbV9zZW50UGFnZVNjYWxl
RGVsdGEoMSkKQEAgLTU1MiwxNCArNTUwLDExIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogICAgIG1fZnBzQ291bnRlci0+bWFy
a0JlZ2lubmluZ09mRnJhbWUoY3VycmVudFRpbWUoKSk7CiAKICAgICBtX2xheWVyUmVuZGVyZXIt
PmRyYXdGcmFtZShmcmFtZS5yZW5kZXJQYXNzZXMsIG1fcm9vdFNjaXNzb3JSZWN0KTsKLSAgICBp
ZiAobV9oZWFkc1VwRGlzcGxheS0+ZW5hYmxlZChzZXR0aW5ncygpKSkKLSAgICAgICAgbV9oZWFk
c1VwRGlzcGxheS0+ZHJhdyh0aGlzKTsKLSAgICBtX2xheWVyUmVuZGVyZXItPmZpbmlzaERyYXdp
bmdGcmFtZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmcmFtZS5yZW5k
ZXJQYXNzZXMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1lLnJlbmRlclBhc3Nlc1tpXS0+dGFy
Z2V0U3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmRpZERyYXdEYW1hZ2VkQXJlYSgpOwogCi0g
ICAgaWYgKG1fZGVidWdSZWN0SGlzdG9yeS0+ZW5hYmxlZChzZXR0aW5ncygpKSkKKyAgICBpZiAo
bV9zZXR0aW5ncy5zaG93RGVidWdSZWN0cygpKQogICAgICAgICBtX2RlYnVnUmVjdEhpc3Rvcnkt
PnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKG1fcm9vdExheWVySW1wbC5nZXQoKSwgKmZy
YW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QsIGZyYW1lLm9jY2x1ZGluZ1NjcmVlblNwYWNlUmVj
dHMsIHNldHRpbmdzKCkpOwogCiAgICAgKyttX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwpA
QCAtMTE2MCwxMSArMTE1NSw2IEBAIFN0cmluZyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpsYXllclRy
ZWVBc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6c2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZv
bnRBdGxhcykKLXsKLSAgICBtX2hlYWRzVXBEaXNwbGF5LT5zZXRGb250QXRsYXMoZm9udEF0bGFz
KTsKLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkdW1wUmVuZGVyU3VyZmFjZXMoVGV4
dFN0cmVhbSYgdHMsIGludCBpbmRlbnQsIGNvbnN0IENDTGF5ZXJJbXBsKiBsYXllcikgY29uc3QK
IHsKICAgICBpZiAobGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAppbmRleCBmOTM2ZTM0ZGQyYzNjNDMyOTJmMjNiMjhmMDE5OTMxNjVlNTNi
NDUyLi5jYjA5NjdlNDRiOWM2YzM3NjFjMWU5ZTU2NmY4NjVlMDkzNzc4Y2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0zOSw5ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjsKIGNsYXNzIENDQ29tcGxl
dGlvbkV2ZW50OwogY2xhc3MgQ0NEZWJ1Z1JlY3RIaXN0b3J5OwotY2xhc3MgQ0NGb250QXRsYXM7
CiBjbGFzcyBDQ0ZyYW1lUmF0ZUNvdW50ZXI7Ci1jbGFzcyBDQ0hlYWRzVXBEaXNwbGF5OwogY2xh
c3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0
ZXI7CiBjbGFzcyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKQEAgLTExOCw3ICsxMTYsNiBAQCBwdWJs
aWM6CiAgICAgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKIAogICAgIFN0cmlu
ZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKLSAgICB2b2lkIHNldEZvbnRBdGxhcyhQYXNzT3du
UHRyPENDRm9udEF0bGFzPik7CiAKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAg
IGludCBzb3VyY2VBbmltYXRpb25GcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
QW5pbWF0aW9uRnJhbWVOdW1iZXI7IH0KQEAgLTI2Niw4ICsyNjMsNiBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdDsKICAgICBz
aXplX3QgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlczsKIAotICAgIE93blB0cjxDQ0hlYWRz
VXBEaXNwbGF5PiBtX2hlYWRzVXBEaXNwbGF5OwotCiAgICAgZmxvYXQgbV9wYWdlU2NhbGU7CiAg
ICAgZmxvYXQgbV9wYWdlU2NhbGVEZWx0YTsKICAgICBmbG9hdCBtX3NlbnRQYWdlU2NhbGVEZWx0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJveHkuaAppbmRleCBmMTkwMzJhYmJmNjY2YTQ1ZjliNGQ4YzFlMGI5YjRjMWQ4ZGUw
NjVhLi4zYjZkYzdmOWM0NDg2ZDU2ZmZkNGZiNWM0OGRkZjVmYjVmYjdhY2U4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94
eS5oCkBAIC0zMyw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NG
b250QXRsYXM7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0Owogc3Ry
dWN0IENDUmVuZGVyaW5nU3RhdHM7CkBAIC0xMDYsOCArMTA1LDYgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzKCkgPSAwOwogCi0gICAgdmlydHVhbCB2
b2lkIHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPikgPSAwOwotCiAgICAgLy8g
RGVidWcgaG9va3MKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIGJvb2wgaXNNYWluVGhyZWFk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXggZDkzMTAyMmRjNTU1NzVlMWU4ZWY2ZjliODMzMjMz
YTZmNzE0YmYzMS4uOTM5Nzg3MTc3NTdhZTQxNWNhNDIyMTEwMmJhOTI5OTM0NTBiY2NhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyZXIuaApAQCAtODEsOSArODEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50KSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBh
c3NMaXN0JiwgY29uc3QgRmxvYXRSZWN0JiByb290U2Npc3NvclJlY3QpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZHJh
d0hlYWRzVXBEaXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1
ZFNpemUpID0gMDsKIAogICAgIC8vIHdhaXRzIGZvciByZW5kZXJpbmcgdG8gZmluaXNoCiAgICAg
dmlydHVhbCB2b2lkIGZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAKaW5kZXggMDAyYzdhN2JmYWVhNTA1ZDRkNDRlNzVjNmUzN2FlZjcwMWQ2ZGM0Mi4u
MTcyMmUzYWNjOWZlZDMwYTAwOTdmYTJlNDhkZWU1YzU1NmFiOTIzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUg
IlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2Mv
Q0NGb250QXRsYXMuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMu
aCIKQEAgLTI2OCwxMyArMjY3LDYgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkK
ICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OnNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bDsKLSAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRGb250QXRsYXMoZm9udEF0bGFzKTsKLX0K
LQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhy
ZWFkT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50
cywgZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlOGFhNzU1
MTUzNjZkZjQ2MDI4NTJlYzU1YmE1ZTNjZTQ4NjU2MTM1Li42ZGNlMWMzNWU4NGZlN2Q1MDI5YWU2
YjE0N2MwZjc0MDU3YTg4OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
CkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXMoKSBPVkVSUklERSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzKCkgT1ZF
UlJJREU7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDliNmRmZTNhY2UzOTAxZWMxZTYzNWVk
ZGU1NzM1NDk2OWY5Yzk0NDIuLjMwODVkZjNlZTAxM2JhZmRlOTI5ZGQ0NTdjNDYzZGE5ZGMyNDkw
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5j
bHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2Uu
aCIKICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMu
aCIKICNpbmNsdWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9D
Q0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCkBAIC04
NjYsMTkgKzg2NSw2IEBAIHNpemVfdCBDQ1RocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXMoKSBjb25zdAogICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOwogfQogCi12
b2lkIENDVGhyZWFkUHJveHk6OnNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPiBm
b250QXRsYXMpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBDQ1Byb3h5Ojpp
bXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQ
cm94eTo6c2V0Rm9udEF0bGFzT25JbXBsVGhyZWFkLCBmb250QXRsYXMpKTsKLQotfQotCi12b2lk
IENDVGhyZWFkUHJveHk6OnNldEZvbnRBdGxhc09uSW1wbFRocmVhZChQYXNzT3duUHRyPENDRm9u
dEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBt
X2xheWVyVHJlZUhvc3RJbXBsLT5zZXRGb250QXRsYXMoZm9udEF0bGFzKTsKLX0KLQogdm9pZCBD
Q1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqIGNvbXBsZXRpb24sIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyLCBib29sKiByZWNy
ZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVzKQog
ewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0
T25JbXBsVGhyZWFkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMGY4YTM1NDA0MGU0
ZjA1MDhmODE3NGY5YTRjOTVhNDFjNDEyYTIyMS4uODYwYTIwMTczODY2NGJlNzk0ZWI3ODk4NGNk
ZWZhMWNiOTZmOGU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNzEsNyArNzEsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzKCkgT1ZFUlJJREU7CiAK
ICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCkBAIC0xNDQs
NyArMTQzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCosIENDR3JhcGhpY3NDb250ZXh0KiwgYm9vbCogcmVjcmVhdGVT
dWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKICAgICB2b2lkIGltcGxTaWRl
UmVuZGVyaW5nU3RhdHNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1JlbmRlcmlu
Z1N0YXRzKik7CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7Ci0gICAgdm9pZCBz
ZXRGb250QXRsYXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogICAgIHZv
aWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50Kik7CiAgICAgdm9pZCBzZXROZWVkc0ZvcmNlZENvbW1pdE9uSW1wbFRocmVhZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVy
Q2hyb21pdW1UZXN0LmNwcAppbmRleCAxYjZiODAyOGI0ZmY1NGQ1OTY0OTJhOGE3YTNkYWUzZmI4
MDkzMWRlLi5mMWQ4ZGMxZDAzYmZlODIwMGQ1YWMzZDE1MzI5MmE0Njg2ZTUwOTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNo
cm9taXVtVGVzdC5jcHAKQEAgLTQxOSw3ICs0MTksNiBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QyLCBvcGFxdWVCYWNrZ3JvdW5kKQogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5pbml0aWFsaXplKCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmRy
YXdGcmFtZShtb2NrQ2xpZW50LnJlbmRlclBhc3NlcygpLCBGbG9hdFJlY3QoKSk7Ci0gICAgbGF5
ZXJSZW5kZXJlckNocm9taXVtLmZpbmlzaERyYXdpbmdGcmFtZSgpOwogCiAgICAgLy8gT24gREVC
VUcgYnVpbGRzLCByZW5kZXIgcGFzc2VzIHdpdGggb3BhcXVlIGJhY2tncm91bmQgY2xlYXIgdG8g
Ymx1ZSB0bwogICAgIC8vIGVhc2lseSBzZWUgcmVnaW9ucyB0aGF0IHdlcmUgbm90IGRyYXduIG9u
IHRoZSBzY3JlZW4uCkBAIC00NDMsNyArNDQyLDYgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0MiwgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVt
LmRyYXdGcmFtZShtb2NrQ2xpZW50LnJlbmRlclBhc3NlcygpLCBGbG9hdFJlY3QoKSk7Ci0gICAg
bGF5ZXJSZW5kZXJlckNocm9taXVtLmZpbmlzaERyYXdpbmdGcmFtZSgpOwogCiAgICAgRVhQRUNU
X0VRKDEsIGNvbnRleHQtPmNsZWFyQ291bnQoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154388</attachid>
            <date>2012-07-25 10:40:02 -0700</date>
            <delta_ts>2012-07-25 12:46:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92182-20120725133951.patch</filename>
            <type>text/plain</type>
            <size>64378</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2OTIwM2M2OTE0OWY3
NmE0OTdlNjlhOTJiNGNlMmEyZjE4ZWFiNS4uZjZkMTEzNTI4MTk3NTI2ZDliNTVkOTRmYzdkODNj
ZmM2ZTdkZGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTA3LTI0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVHVy
biB0aGUgZGVidWcgSFVEIGludG8gYSBsYXllciBzbyB0aGF0IGl0IGNhbiBiZSBkcmF3biBhcyBh
IFdlYkNvbXBvc2l0b3JRdWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4K
KworICAgICAgICBCeSBjaGFuZ2luZyB0aGUgSFVEIGludG8gYSBxdWFkLCB3ZSBhcmUgYWJsZSB0
byBjcmVhdGUgYSBIVUQgYW5kIHBhc3MKKyAgICAgICAgaXQgdG8gdGhlIGhvc3QgY29tcG9zaXRv
ciwgYWxsb3dpbmcgdGhlIEhVRCB0byBiZSB1c2VkIGZvciByZW5kZXJlcnMKKyAgICAgICAgdW5k
ZXIgVWJlcmNvbXBvc2l0b3IuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgdGhlIHNwZWNp
YWwgZHJhd2luZyBjb2RlIGZvciB0aGUgSFVEIGZyb20KKyAgICAgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtLCBhbGxvd2luZyB1cyB0byBtb3ZlIGZpbmlzaERyYXdpbmdGcmFtZQorICAgICAgICBp
bnRvIExheWVyUmVuZGVyZXJDaHJvbWl1bSBhcyBhIHByaXZhdGUgbWV0aG9kIGFuZCByZW1vdmUg
aXQKKyAgICAgICAgZnJvbSB0aGUgQ0NSZW5kZXJlciBpbnRlcmZhY2UuCisKKyAgICAgICAgRmlu
YWxseSwgd2UgY2FuIHJlbW92ZSB0aGUgQ0NGb250QXRsYXMgdHJhbnNwb3J0IGNvZGUgZnJvbSBD
Q1Byb3h5CisgICAgICAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFzIHRoZSBhdGxhcyBjYW4g
YmUgc3luY2VkIHRvIGltcGwgdGhyZWFkCisgICAgICAgIHRocm91Z2ggdGhlIHVzdWFsIGxheWVy
IGNvbW1pdCBtZWNoYW5pc20uCisKKyAgICAgICAgVGhlIGRlYnVnIEhVRCBpcyBub3QgY292ZXJl
ZCBieSB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlM
YXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGVhZHNVcERpc3BsYXlM
YXllckNocm9taXVtOjpIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjp+SGVhZHNVcERpc3BsYXlMYXllckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
Lmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVQcm9wZXJ0eUNoYW5nZWRSZWN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6Q0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsOjp+Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjp3aWxsRHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRpZExvc2VDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdIdWRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBTQ291bnRl
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3RlBT
Q291bnRlclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bDo6ZHJhd0RlYnVnUmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5ZXJJc0Fsd2F5c0RhbWFnZWQpOgorICAgICAg
ICBUaGlzIGZsYWcgaXMgdXNlZCB0byBtYXJrIHRoZSBIVUQgYXMgYWx3YXlzIGRhbWFnZWQsIHNv
IHRoYXQgaXQgaXMKKyAgICAgICAgY29udGludWFsbHkgZHJhd24gb24gdGhlIGltcGwgdGhyZWFk
LiBJdCBpcyBhbHNvIHVzZWQgYXMgYSBoaW50IGJ5CisgICAgICAgIHRoZSBDQ0RlYnVnUmVjdEhp
c3RvcnkgY2xhc3MgdG8gbm90IGluY2x1ZGUgdGhlIGxheWVyIGluIHRoZSBkaXNwbGF5CisgICAg
ICAgIG9mIGRhbWFnZSwgc2luY2UgYWx3YXlzIGRhbWFnZWQgaXMgbm90IGludGVyZXN0aW5nIGRh
bWFnZS4KKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6d2lsbENvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRpZENvbW1pdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChDQ0xheWVyVHJlZVNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlU2V0dGluZ3M6OnNob3dEZWJ1Z0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVTZXR0aW5nczo6c2hvd0RlYnVnUmVjdHMpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJU
cmVlSG9zdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZHJh
d0xheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVyVHJl
ZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5Lmg6CisgICAgICAgIChDQ1Byb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmg6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oOgorICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDctMjMgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEEgRm9jdXNTY29wZSBmb3Ig
YSBkaXN0cmlidXRlZCBub2RlIHNob3VsZCBub3QgYmUgaXRzIFRyZWVTY29wZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMTJiZjhhNGRhODVkZmY5Y2U4ZGUxN2E1ZWI0NDAxYmMwYWU0
NTg5Ny4uOWMwZWFmYmE3NjNkZjZjODc5MmFhZjQyOWE0NjdmYmM1NTMzNjUzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0yNCAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFR1cm4gdGhl
IGRlYnVnIEhVRCBpbnRvIGEgbGF5ZXIgc28gdGhhdCBpdCBjYW4gYmUgZHJhd24gYXMgYSBXZWJD
b21wb3NpdG9yUXVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTIxODIKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisKKyAg
ICAgICAgKiB0ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFRF
U1QpOgorCiAyMDEyLTA3LTIzICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gRml4IHVuaXQgdGVzdHMgaW4gZGVidWcgbW9kZSBhZnRl
ciByMTIzMzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYmVkZDQ0MDQwZThmNmUyYWNkMjFjNTkyMGFm
MWM5ODNjNmEyMWViNC4uOTM1ZTkzZmM5Y2I4ZjNhNGZjNGRhNjE4MTViNzhkMDY3YWJhMDk0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtODI0OCw2ICs4MjQ4LDggQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R2VvbWV0cnlCaW5kaW5nLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR2VvbWV0cnlCaW5kaW5nLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JT1N1cmZhY2VMYXll
ckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwJywKQEAgLTgzMTMsOCArODMxNSw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NGcmFtZVJhdGVD
b3VudGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NGcmFtZVJhdGVDb3VudGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDR2VzdHVyZUN1cnZlLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwJywKLSAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllcklt
cGwuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1w
bC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9IZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjllZTQ3ZDgwMDhiNDM4ZmM1ZDRkNDZmYWYzZjk0MTE0YzY2NTE0M2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9I
ZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21p
dW0uaCIKKworI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ0hlYWRzVXBE
aXNwbGF5TGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21p
dW0+IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzLCBpbnQgbWF4VGV4dHVyZVNpemUpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIZWFkc1VwRGlzcGxheUxheWVyQ2hyb21pdW0oc2V0dGluZ3MsIG1heFRleHR1
cmVTaXplKSk7Cit9CisKK0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6SGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBpbnQg
bWF4VGV4dHVyZVNpemUpCisgICAgOiBMYXllckNocm9taXVtKCkKK3sKKyAgICBPd25QdHI8Q0NG
b250QXRsYXM+IGZvbnRBdGxhczsKKworICAgIEludFNpemUgYm91bmRzOworICAgIGlmIChzZXR0
aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgfHwgc2V0dGluZ3Muc2hvd0RlYnVnUmVjdHMoKSkg
eworICAgICAgICBib3VuZHMuc2V0V2lkdGgoc3RkOjptaW4obWF4VGV4dHVyZVNpemUsIGxheWVy
VHJlZUhvc3QoKS0+ZGV2aWNlVmlld3BvcnRTaXplKCkud2lkdGgoKSkpOworICAgICAgICBib3Vu
ZHMuc2V0SGVpZ2h0KHN0ZDo6bWluKG1heFRleHR1cmVTaXplLCBsYXllclRyZWVIb3N0KCktPmRl
dmljZVZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYm91
bmRzLnNldFdpZHRoKDUxMik7CisgICAgICAgIGJvdW5kcy5zZXRIZWlnaHQoMTI4KTsKKyAgICB9
CisgICAgc2V0Qm91bmRzKGJvdW5kcyk7CisKKyAgICAvLyBPbmx5IGFsbG9jYXRlIHRoZSBmb250
IGF0bGFzIGlmIHdlIGhhdmUgcmVhc29uIHRvIHVzZSB0aGUgaGVhZHMtdXAgZGlzcGxheS4KKyAg
ICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5
ZXJUcmVlKSB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiSGVhZHNVcERpc3BsYXlMYXll
ckNocm9taXVtOjppbml0aWFsaXplRm9udEF0bGFzIik7CisgICAgICAgIG1fZm9udEF0bGFzID0g
Q0NGb250QXRsYXM6OmNyZWF0ZSgpOworICAgICAgICBtX2ZvbnRBdGxhcy0+aW5pdGlhbGl6ZSgp
OworICAgIH0KK30KKworSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtOjp+SGVhZHNVcERpc3Bs
YXlMYXllckNocm9taXVtKCkKK3sKK30KKworUGFzc093blB0cjxDQ0xheWVySW1wbD4gSGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCit7CisgICAgcmV0dXJu
IENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQsIG1fZm9udEF0bGFz
LnJlbGVhc2UoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSGVhZHNVcERpc3BsYXlMYXllckNo
cm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdlMzEwZTE4NzA2MDE2MDliNjY2MjdjMjMzZmMyYWExN2Iz
YzQyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0hlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bS5oCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpZm5kZWYgSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtX2gKKyNkZWZpbmUg
SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtX2gKKworI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0u
aCIKKyNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBDQ0xheWVyVHJlZVNldHRpbmdzOworCitjbGFzcyBIZWFkc1VwRGlzcGxheUxheWVy
Q2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtPiBjcmVhdGUoY29uc3QgQ0NMYXll
clRyZWVTZXR0aW5ncyYsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgdmlydHVhbCB+SGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBQYXNzT3du
UHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpIE9WRVJSSURFOworCitwcm90ZWN0
ZWQ6CisgICAgSGVhZHNVcERpc3BsYXlMYXllckNocm9taXVtKGNvbnN0IENDTGF5ZXJUcmVlU2V0
dGluZ3MmLCBpbnQgbWF4VGV4dHVyZVNpemUpOworCitwcml2YXRlOgorICAgIE93blB0cjxDQ0Zv
bnRBdGxhcz4gbV9mb250QXRsYXM7Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGU1NjM3YTBmY2E3MDVkYmQxZDFmMDczYWFkODAzYTI2
Zjc2YmQxODcuLmYxOTk1ZTk3ODFmNzRkMTgyMzc3ZWI1NjQ0NTExNTU1ZDQ2OGNkOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzg1LDYgKzM4NSw4IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlz
dCYgcmVuZGVyUGFzc2VzLCBjb25zCiAgICAgICAgIEZsb2F0UmVjdCByb290U2Npc3NvclJlY3RJ
bkN1cnJlbnRTdXJmYWNlID0gcmVuZGVyUGFzcy0+dGFyZ2V0U3VyZmFjZSgpLT5jb21wdXRlUm9v
dFNjaXNzb3JSZWN0SW5DdXJyZW50U3VyZmFjZShyb290U2Npc3NvclJlY3QpOwogICAgICAgICBk
cmF3UmVuZGVyUGFzcyhyZW5kZXJQYXNzLCByb290U2Npc3NvclJlY3RJbkN1cnJlbnRTdXJmYWNl
KTsKICAgICB9CisKKyAgICBmaW5pc2hEcmF3aW5nRnJhbWUoKTsKIH0KIAogdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2luZ0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzcyogcm9v
dFJlbmRlclBhc3MpCkBAIC0xMTQwLDMxICsxMTQyLDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqIHF1YWQp
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShFeHRlbnNpb25zM0Q6
OlRFWFRVUkVfUkVDVEFOR0xFX0FSQiwgMCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSogaHVkVGV4dHVy
ZSwgY29uc3QgSW50U2l6ZSYgaHVkU2l6ZSkKLXsKLSAgICBBU1NFUlQoaHVkVGV4dHVyZS0+aWQo
KSk7Ci0KLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRl
eHQzRDo6QkxFTkQpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhH
cmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19B
TFBIQSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0Nv
bnRleHQzRDo6U0NJU1NPUl9URVNUKSk7Ci0gICAgdXNlUmVuZGVyUGFzcyhtX2RlZmF1bHRSZW5k
ZXJQYXNzKTsKLQotICAgIGNvbnN0IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogcHJvZ3JhbSA9IGhl
YWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwotICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmlu
aXRpYWxpemVkKCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YWN0aXZlVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIGh1ZFRleHR1cmUtPmlkKCkpOwotICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7Ci0gICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVy
TG9jYXRpb24oKSwgMCkpOwotCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4Owot
ICAgIG1hdHJpeC50cmFuc2xhdGUzZChodWRTaXplLndpZHRoKCkgKiAwLjUsIGh1ZFNpemUuaGVp
Z2h0KCkgKiAwLjUsIDApOwotICAgIGRyYXdUZXh0dXJlZFF1YWQobWF0cml4LCBodWRTaXplLndp
ZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAxLCBzaGFyZWRH
ZW9tZXRyeVF1YWQoKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwK
LSAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2Nh
dGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgLTEpOwotfQotCiB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKIHsKICAgICBtX2N1cnJlbnRGcmFtZWJ1
ZmZlckxvY2suY2xlYXIoKTsKQEAgLTE1NTgsMTcgKzE1MzUsNiBAQCBjb25zdCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OlNvbGlkQ29sb3JQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNv
bGlkQ29sbwogICAgIHJldHVybiBtX3NvbGlkQ29sb3JQcm9ncmFtLmdldCgpOwogfQogCi1jb25z
dCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkhlYWRzVXBEaXNwbGF5UHJvZ3JhbSogTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW0oKQotewotICAgIGlmICghbV9oZWFk
c1VwRGlzcGxheVByb2dyYW0pCi0gICAgICAgIG1faGVhZHNVcERpc3BsYXlQcm9ncmFtID0gYWRv
cHRQdHIobmV3IEhlYWRzVXBEaXNwbGF5UHJvZ3JhbShtX2NvbnRleHQpKTsKLSAgICBpZiAoIW1f
aGVhZHNVcERpc3BsYXlQcm9ncmFtLT5pbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VW
RU5UMCgiY2MiLCAiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpoZWFkc1VwRGlzcGxheVByb2dyYW06
OmluaXRpYWxpemUiKTsKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxheVByb2dyYW0tPmluaXRpYWxp
emUobV9jb250ZXh0LCBtX2lzVXNpbmdCaW5kVW5pZm9ybSk7Ci0gICAgfQotICAgIHJldHVybiBt
X2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS5nZXQoKTsKLX0KLQogY29uc3QgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpSZW5kZXJQYXNzUHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZW5kZXJQ
YXNzUHJvZ3JhbSgpCiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc1Byb2dyYW0pOwpAQCAtMTc3
Niw5ICsxNzQyLDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRP
YmplY3RzKCkKICAgICBpZiAobV9zb2xpZENvbG9yUHJvZ3JhbSkKICAgICAgICAgbV9zb2xpZENv
bG9yUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQpOwogCi0gICAgaWYgKG1faGVhZHNVcERpc3Bs
YXlQcm9ncmFtKQotICAgICAgICBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbS0+Y2xlYW51cChtX2Nv
bnRleHQpOwotCiAgICAgaWYgKG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkKICAgICAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX29mZnNjcmVlbkZyYW1l
YnVmZmVySWQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCAxOThh
ZWY5YTM0MzkxNDIyY2Y0YjRmZTI2NDE4ZDc2ZGM0NTFhMDUzLi45MGJkNzc0M2I5ZjFkMmZhOGE2
MDE2NGRlNjExODk4ZDNhZjhiZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aApAQCAtODEsOSArODEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYsIGNvbnN0IEZsb2F0
UmVjdCYgcm9vdFNjaXNzb3JSZWN0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
RHJhd2luZ0ZyYW1lKCkgT1ZFUlJJREU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0hlYWRzVXBE
aXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1ZFNpemUpIE9W
RVJSSURFOwogCiAgICAgLy8gd2FpdHMgZm9yIHJlbmRlcmluZyB0byBmaW5pc2gKICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoKCkgT1ZFUlJJREU7CkBAIC0xMjYsNiArMTIzLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgYmVnaW5EcmF3aW5nRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzKiByb290UmVu
ZGVyUGFzcyk7CiAgICAgdm9pZCBkcmF3UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqLCBj
b25zdCBGbG9hdFJlY3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCk7CisgICAgdm9pZCBmaW5pc2hE
cmF3aW5nRnJhbWUoKTsKIAogICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCopOwog
ICAgIHZvaWQgZHJhd0NoZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVh
ZCopOwpAQCAtMjEzLDEwICsyMTEsNiBAQCBwcml2YXRlOgogICAgIC8vIFNwZWNpYWwgcHVycG9z
ZSAvIGVmZmVjdHMgc2hhZGVycy4KICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNo
YWRlclBvcywgRnJhZ21lbnRTaGFkZXJDb2xvcj4gU29saWRDb2xvclByb2dyYW07CiAKLSAgICAv
LyBEZWJ1Z2dpbmcgc2hhZGVycy4KLSAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNo
YWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4U3dpenpsZUFscGhhPiBIZWFkc1VwRGlz
cGxheVByb2dyYW07Ci0KLQogICAgIGNvbnN0IFRpbGVQcm9ncmFtKiB0aWxlUHJvZ3JhbSgpOwog
ICAgIGNvbnN0IFRpbGVQcm9ncmFtT3BhcXVlKiB0aWxlUHJvZ3JhbU9wYXF1ZSgpOwogICAgIGNv
bnN0IFRpbGVQcm9ncmFtQUEqIHRpbGVQcm9ncmFtQUEoKTsKQEAgLTIzOSw4ICsyMzMsNiBAQCBw
cml2YXRlOgogCiAgICAgY29uc3QgU29saWRDb2xvclByb2dyYW0qIHNvbGlkQ29sb3JQcm9ncmFt
KCk7CiAKLSAgICBjb25zdCBIZWFkc1VwRGlzcGxheVByb2dyYW0qIGhlYWRzVXBEaXNwbGF5UHJv
Z3JhbSgpOwotCiAgICAgT3duUHRyPFRpbGVQcm9ncmFtPiBtX3RpbGVQcm9ncmFtOwogICAgIE93
blB0cjxUaWxlUHJvZ3JhbU9wYXF1ZT4gbV90aWxlUHJvZ3JhbU9wYXF1ZTsKICAgICBPd25QdHI8
VGlsZVByb2dyYW1BQT4gbV90aWxlUHJvZ3JhbUFBOwpAQCAtMjYyLDcgKzI1NCw2IEBAIHByaXZh
dGU6CiAgICAgT3duUHRyPFZpZGVvU3RyZWFtVGV4dHVyZVByb2dyYW0+IG1fdmlkZW9TdHJlYW1U
ZXh0dXJlUHJvZ3JhbTsKIAogICAgIE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4gbV9zb2xpZENv
bG9yUHJvZ3JhbTsKLSAgICBPd25QdHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBtX2hlYWRzVXBE
aXNwbGF5UHJvZ3JhbTsKIAogICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3Zp
ZGVyOwogICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNvcGll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCmluZGV4IGM2MTMyMTc4ZTE2
MzkzMzVkMDE0Yzg2ZGViODY2YTYzYjViZDc2NzguLjIzZWU4MjZmZDM0YTdjOGFhYzFlOTIwYWJk
MmNjNTk2MWY5NzhjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcApA
QCAtMzgsMTEgKzM4LDYgQEAgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpDQ0RlYnVnUmVjdEhpc3Rvcnko
KQogewogfQogCi1ib29sIENDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBDQ0xheWVy
VHJlZVNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50
UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNo
b3dTdXJmYWNlRGFtYWdlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwg
c2V0dGluZ3Muc2hvd1JlcGxpY2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dPY2Ns
dWRpbmdSZWN0czsKLX0KLQogdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3Rz
Rm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xh
eWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4m
IG9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNl
dHRpbmdzKQogewogICAgIC8vIEZvciBub3csIGNsZWFyIGFsbCByZWN0cyBmcm9tIHByZXZpb3Vz
IGZyYW1lcy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBzdG9yZQpAQCAtOTMsNyArODgs
MTAgQEAgdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVQcm9wZXJ0eUNoYW5nZWRSZWN0cyhj
b25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmUKICAgICAgICAgICAgIGlmIChDQ0xheWVyVHJl
ZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0PENDTGF5ZXJJbXBs
PihsYXllciwgcmVuZGVyU3VyZmFjZUxheWVyLT5pZCgpKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgaWYgKGxheWVyLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKQor
ICAgICAgICAgICAgaWYgKGxheWVyLT5sYXllcklzQWx3YXlzRGFtYWdlZCgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAobGF5ZXItPmxheWVyUHJvcGVydHlD
aGFuZ2VkKCkgfHwgbGF5ZXItPmxheWVyU3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgpKQogICAgICAg
ICAgICAgICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUHJvcGVydHlDaGFuZ2Vk
UmVjdFR5cGUsIENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGxheWVyLT5zY3JlZW5TcGFjZVRy
YW5zZm9ybSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsYXllci0+Ym91bmRzKCkp
KSkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaApp
bmRleCA3ZmQwMGMzZjYyNjIxMWJkNTIzY2ZhYzRjOWQzZGUzNjJjMGQ4OWU3Li4yNDA1YWEwZTJh
YmZlNDA2YTFjZGIyYjIwZGQxNDMzYmRmMDBlZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVj
dEhpc3RvcnkuaApAQCAtNzksOCArNzksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ0NEZWJ1Z1JlY3RIaXN0b3J5KCkpOwogICAgIH0KIAotICAgIGJvb2wgZW5hYmxl
ZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7Ci0KICAgICAvLyBOb3RlOiBTYXZpbmcgZGVi
dWcgcmVjdHMgbXVzdCBoYXBwZW4gYmVmb3JlIGxheWVycycgY2hhbmdlIHRyYWNraW5nIGlzIHJl
c2V0LgogICAgIHZvaWQgc2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwq
IHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cywg
Y29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjZmNmVlMGUyM2U5NWEyY2U0
ZWNlZGI0OTQwZmRiYjYwMGRmODg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjUwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLSNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCi0KLSNpbmNsdWRl
ICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
Ci0jaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1D
YW52YXMuaCIKLSNpbmNsdWRlICJjYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCIKLSNpbmNsdWRlICJj
Yy9DQ0ZyYW1lUmF0ZUNvdW50ZXIuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotQ0NIZWFkc1VwRGlzcGxheTo6fkNDSGVhZHNV
cERpc3BsYXkoKQotewotfQotCi12b2lkIENDSGVhZHNVcERpc3BsYXk6OnNldEZvbnRBdGxhcyhQ
YXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAgbV9mb250QXRsYXMgPSBm
b250QXRsYXM7Ci19Ci0KLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6ZW5hYmxlZChjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKLXsKLSAgICByZXR1cm4gc2hvd1BsYXRm
b3JtTGF5ZXJUcmVlKHNldHRpbmdzKSB8fCBzZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBzaG93
RGVidWdSZWN0cyhzZXR0aW5ncyk7Ci19Ci0KLWJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBjb25z
dAotewotICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWU7Ci19Ci0KLWJv
b2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYgc2V0dGluZ3MpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNldHRpbmdzLnNob3dQYWludFJl
Y3RzIHx8IHNldHRpbmdzLnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8fCBzZXR0aW5ncy5zaG93
U3VyZmFjZURhbWFnZVJlY3RzIHx8IHNldHRpbmdzLnNob3dTY3JlZW5TcGFjZVJlY3RzIHx8IHNl
dHRpbmdzLnNob3dSZXBsaWNhU2NyZWVuU3BhY2VSZWN0cyB8fCBzZXR0aW5ncy5zaG93T2NjbHVk
aW5nUmVjdHM7Ci19Ci0KLXZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhv
c3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKLXsKLSAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRl
cmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKLSAgICBpZiAoIW1faHVk
VGV4dHVyZSkKLSAgICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUo
bGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7Ci0KLSAgICBjb25zdCBDQ0xh
eWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygp
OwotICAgIC8vIFVzZSBhIGZ1bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4K
LSAgICBJbnRTaXplIGh1ZFNpemU7Ci0gICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0
aW5ncykgfHwgc2hvd0RlYnVnUmVjdHMoc2V0dGluZ3MpKSB7Ci0gICAgICAgIGh1ZFNpemUuc2V0
V2lkdGgobWluKDIwNDgsIGxheWVyVHJlZUhvc3RJbXBsLT5kZXZpY2VWaWV3cG9ydFNpemUoKS53
aWR0aCgpKSk7Ci0gICAgICAgIGh1ZFNpemUuc2V0SGVpZ2h0KG1pbigyMDQ4LCBsYXllclRyZWVI
b3N0SW1wbC0+ZGV2aWNlVmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBodWRTaXplLnNldFdpZHRoKDUxMik7Ci0gICAgICAgIGh1ZFNpemUuc2V0SGVpZ2h0
KDEyOCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkgJiYgIW1faHVkVGV4
dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIGh1ZFNpemUsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIFJlbmRlciBwaXhlbHMgaW50byB0aGUgdGV4dHVyZS4KLSAg
ICBQbGF0Zm9ybUNhbnZhcyBjYW52YXM7Ci0gICAgY2FudmFzLnJlc2l6ZShodWRTaXplKTsKLSAg
ICB7Ci0gICAgICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIHBhaW50ZXIoJmNhbnZhcywgUGxh
dGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQpOwotICAgICAgICBwYWludGVyLmNv
bnRleHQoKS0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNp
emUuaGVpZ2h0KCkpKTsKLSAgICAgICAgZHJhd0h1ZENvbnRlbnRzKHBhaW50ZXIuY29udGV4dCgp
LCBsYXllclRyZWVIb3N0SW1wbCwgc2V0dGluZ3MsIGh1ZFNpemUpOwotICAgIH0KLQotICAgIC8v
IFVwbG9hZCB0byBHTC4KLSAgICB7Ci0gICAgICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2Vy
IGxvY2tlcigmY2FudmFzKTsKLSAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KDAsIDApLCBo
dWRTaXplKTsKLSAgICAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKS0+
dXBsb2FkKG1faHVkVGV4dHVyZS0+aWQoKSwgbG9ja2VyLnBpeGVscygpLCByZWN0LCByZWN0LCBy
ZWN0KTsKLSAgICB9Ci0KLSAgICBsYXllclJlbmRlcmVyLT5kcmF3SGVhZHNVcERpc3BsYXkobV9o
dWRUZXh0dXJlLmdldCgpLCBodWRTaXplKTsKLX0KLQotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5Ojpk
cmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0xheWVyVHJlZUhvc3RJ
bXBsKiBsYXllclRyZWVIb3N0SW1wbCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MsIGNvbnN0IEludFNpemUmIGh1ZFNpemUpCi17Ci0gICAgaWYgKHNob3dQbGF0Zm9ybUxheWVy
VHJlZShzZXR0aW5ncykpIHsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAs
IDAsIDAsIDE5MiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBjb250ZXh0LT5maWxs
UmVjdChGbG9hdFJlY3QoMCwgMCwgaHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhlaWdodCgpKSk7
Ci0gICAgfQotCi0gICAgaW50IGZwc0NvdW50ZXJIZWlnaHQgPSA0MDsKLSAgICBpbnQgZnBzQ291
bnRlclRvcCA9IDI7Ci0gICAgaW50IHBsYXRmb3JtTGF5ZXJUcmVlVG9wOwotCi0gICAgaWYgKHNl
dHRpbmdzLnNob3dGUFNDb3VudGVyKQotICAgICAgICBwbGF0Zm9ybUxheWVyVHJlZVRvcCA9IGZw
c0NvdW50ZXJUb3AgKyBmcHNDb3VudGVySGVpZ2h0OwotICAgIGVsc2UKLSAgICAgICAgcGxhdGZv
cm1MYXllclRyZWVUb3AgPSAwOwotCi0gICAgaWYgKHNldHRpbmdzLnNob3dGUFNDb3VudGVyKQot
ICAgICAgICBkcmF3RlBTQ291bnRlcihjb250ZXh0LCBsYXllclRyZWVIb3N0SW1wbC0+ZnBzQ291
bnRlcigpLCBmcHNDb3VudGVyVG9wLCBmcHNDb3VudGVySGVpZ2h0KTsKLQotICAgIGlmIChzaG93
UGxhdGZvcm1MYXllclRyZWUoc2V0dGluZ3MpICYmIG1fZm9udEF0bGFzKSB7Ci0gICAgICAgIFN0
cmluZyBsYXllclRyZWUgPSBsYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJUcmVlQXNUZXh0KCk7Ci0g
ICAgICAgIG1fZm9udEF0bGFzLT5kcmF3VGV4dChjb250ZXh0LCBsYXllclRyZWUsIEludFBvaW50
KDIsIHBsYXRmb3JtTGF5ZXJUcmVlVG9wKSwgaHVkU2l6ZSk7Ci0gICAgfQotCi0gICAgaWYgKHNo
b3dEZWJ1Z1JlY3RzKHNldHRpbmdzKSkKLSAgICAgICAgZHJhd0RlYnVnUmVjdHMoY29udGV4dCwg
bGF5ZXJUcmVlSG9zdEltcGwtPmRlYnVnUmVjdEhpc3RvcnkoKSwgc2V0dGluZ3MpOwotfQotCi12
b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgQ0NGcmFtZVJhdGVDb3VudGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBpbnQgaGVpZ2h0
KQotewotICAgIGZsb2F0IHRleHRXaWR0aCA9IDE3MDsgLy8gc28gdGV4dCBmaXRzIG9uIGxpbnV4
LgotICAgIGZsb2F0IGdyYXBoV2lkdGggPSBmcHNDb3VudGVyLT50aW1lU3RhbXBIaXN0b3J5U2l6
ZSgpOwotCi0gICAgLy8gRHJhdyB0aGUgRlBTIHRleHQuCi0gICAgZHJhd0ZQU0NvdW50ZXJUZXh0
KGNvbnRleHQsIGZwc0NvdW50ZXIsIHRvcCwgdGV4dFdpZHRoLCBoZWlnaHQpOwotCi0gICAgLy8g
RHJhdyBGUFMgZ3JhcGguCi0gICAgY29uc3QgZG91YmxlIGxvRlBTID0gMDsKLSAgICBjb25zdCBk
b3VibGUgaGlGUFMgPSA4MDsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9r
ZSk7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDE1NCwgMjA1LCA1MCksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyICsgdGV4
dFdpZHRoLCB0b3AsIGdyYXBoV2lkdGgsIGhlaWdodCAvIDIpKTsKLSAgICBjb250ZXh0LT5zZXRG
aWxsQ29sb3IoQ29sb3IoMjU1LCAyNTAsIDIwNSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
IGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyICsgdGV4dFdpZHRoLCB0b3AgKyBoZWlnaHQg
LyAyLCBncmFwaFdpZHRoLCBoZWlnaHQgLyAyKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotCi0g
ICAgaW50IGdyYXBoTGVmdCA9IHN0YXRpY19jYXN0PGludD4odGV4dFdpZHRoICsgMyk7Ci0gICAg
SW50UG9pbnQgcHJldigtMSwgMCk7Ci0gICAgaW50IHggPSAwOwotICAgIGRvdWJsZSBoID0gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihoZWlnaHQgLSAyKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGZw
c0NvdW50ZXItPnRpbWVTdGFtcEhpc3RvcnlTaXplKCkgLSAxOyArK2kpIHsKLSAgICAgICAgaW50
IGogPSBpICsgMTsKLSAgICAgICAgZG91YmxlIGRlbHRhID0gZnBzQ291bnRlci0+dGltZVN0YW1w
T2ZSZWNlbnRGcmFtZShqKSAtIGZwc0NvdW50ZXItPnRpbWVTdGFtcE9mUmVjZW50RnJhbWUoaSk7
Ci0KLSAgICAgICAgLy8gU2tpcCBwbG90dGluZyB0aGlzIHBhcnRpY3VsYXIgaW5zdGFudGFuZW91
cyBmcmFtZSByYXRlIGlmIGl0IGlzIG5vdCBsaWtlbHkgdG8gaGF2ZSBiZWVuIHZhbGlkLgotICAg
ICAgICBpZiAoZnBzQ291bnRlci0+aXNCYWRGcmFtZUludGVydmFsKGRlbHRhKSkgewotICAgICAg
ICAgICAgeCArPSAxOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICBkb3VibGUgZnBzID0gMS4wIC8gZGVsdGE7Ci0KLSAgICAgICAgLy8gQ2xhbXAgdGhlIEZQUyB0
byB0aGUgcmFuZ2Ugd2Ugd2FudCB0byBwbG90IHZpc3VhbGx5LgotICAgICAgICBkb3VibGUgcCA9
IDEgLSAoKGZwcyAtIGxvRlBTKSAvIChoaUZQUyAtIGxvRlBTKSk7Ci0gICAgICAgIGlmIChwIDwg
MCkKLSAgICAgICAgICAgIHAgPSAwOwotICAgICAgICBpZiAocCA+IDEpCi0gICAgICAgICAgICBw
ID0gMTsKLQotICAgICAgICAvLyBQbG90IHRoaXMgZGF0YSBwb2ludC4KLSAgICAgICAgSW50UG9p
bnQgY3VyKGdyYXBoTGVmdCArIHgsIDEgKyB0b3AgKyBwKmgpOwotICAgICAgICBpZiAocHJldi54
KCkgIT0gLTEpCi0gICAgICAgICAgICBjb250ZXh0LT5kcmF3TGluZShwcmV2LCBjdXIpOwotICAg
ICAgICBwcmV2ID0gY3VyOwotICAgICAgICB4ICs9IDE7Ci0gICAgfQotfQotCi12b2lkIENDSGVh
ZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IENDRnJhbWVSYXRlQ291bnRlciogZnBzQ291bnRlciwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQotewotICAgIGRvdWJsZSBhdmVyYWdlRlBTLCBzdGREZXZpYXRpb247Ci0gICAgZnBz
Q291bnRlci0+Z2V0QXZlcmFnZUZQU0FuZFN0YW5kYXJkRGV2aWF0aW9uKGF2ZXJhZ2VGUFMsIHN0
ZERldmlhdGlvbik7Ci0KLSAgICAvLyBEcmF3IGJhY2tncm91bmQuCi0gICAgY29udGV4dC0+c2V0
RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
IGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgyLCB0b3AsIHdpZHRoLCBoZWlnaHQpKTsKLQot
ICAgIC8vIERyYXcgRlBTIHRleHQuCi0gICAgaWYgKG1fZm9udEF0bGFzKQotICAgICAgICBtX2Zv
bnRBdGxhcy0+ZHJhd1RleHQoY29udGV4dCwgU3RyaW5nOjpmb3JtYXQoIkZQUzogJTQuMWYgKy8t
ICUzLjFmIiwgYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9uKSwgSW50UG9pbnQoMTAsIGhlaWdodCAv
IDMpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5
OjpkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIENDRGVidWdSZWN0SGlz
dG9yeSogZGVidWdSZWN0SGlzdG9yeSwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGlu
Z3MpCi17Ci0gICAgY29uc3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cyA9IGRlYnVn
UmVjdEhpc3RvcnktPmRlYnVnUmVjdHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRl
YnVnUmVjdHMuc2l6ZSgpOyArK2kpIHsKLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBl
ID09IFBhaW50UmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFBhaW50IHJlY3RzIGluIHJlZAot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwLCAyNTUp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRl
YnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjU1LCAwLCAwLCAzMCksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3Qs
IDIuMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFBy
b3BlcnR5Q2hhbmdlZFJlY3RUeXBlKSB7Ci0gICAgICAgICAgICAvLyBQcm9wZXJ0eS1jaGFuZ2Vk
IHJlY3RzIGluIGJsdWUKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
KDAsIDAsIDI1NSwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDAsIDAsIDI1NSwgMzApLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVi
dWdSZWN0c1tpXS5yZWN0LCAyLjApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlYnVnUmVj
dHNbaV0udHlwZSA9PSBTdXJmYWNlRGFtYWdlUmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFN1
cmZhY2UgZGFtYWdlIHJlY3RzIGluIHllbGxvdy1vcmFuZ2UKLSAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKDIwMCwgMTAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwg
Q29sb3IoMjAwLCAxMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gUmVwbGljYVNjcmVlblNwYWNl
UmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIFNjcmVlbiBzcGFjZSByZWN0cyBpbiBncmVlbi4K
LSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMjAwLCAwLCAy
NTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAyMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0u
cmVjdCwgMi4wKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUg
PT0gU2NyZWVuU3BhY2VSZWN0VHlwZSkgewotICAgICAgICAgICAgLy8gU2NyZWVuIHNwYWNlIHJl
Y3RzIGluIHB1cnBsZS4KLSAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
KDEwMCwgMCwgMjAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAwLCAyMDAsIDEw
KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0
KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWJ1
Z1JlY3RzW2ldLnR5cGUgPT0gT2NjbHVkaW5nUmVjdFR5cGUpIHsKLSAgICAgICAgICAgIC8vIE9j
Y2x1ZGluZyByZWN0cyBpbiBhIHJlZGRpc2ggY29sb3IuCi0gICAgICAgICAgICBjb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDAsIDEwMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENv
bG9yKDIwMCwgMCwgMTAwLCAxMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAg
Y29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSGVhZHNVcERpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjY2YmY1MWUxZjRlZGM2YzYwYzIxNjMyMzA4Y2UyNjhmMWQzYWE2MC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENDSGVhZHNVcERpc3BsYXlf
aAotI2RlZmluZSBDQ0hlYWRzVXBEaXNwbGF5X2gKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLQotI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCi0jaW5jbHVkZSAiY2MvQ0NT
Y29wZWRUZXh0dXJlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5OwotY2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOwotY2xhc3MgQ0NMYXllclRyZWVI
b3N0SW1wbDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFRleHVyZUFsbG9jYXRvcjsK
LQotc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3M7Ci0KLS8vIENsYXNzIHRoYXQgaGFuZGxlcyBk
cmF3aW5nIG9mIGNvbXBvc2l0ZWQgcmVuZGVyIGxheWVycyB1c2luZyBHTC4KLWNsYXNzIENDSGVh
ZHNVcERpc3BsYXkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDSGVhZHNVcERpc3BsYXkp
OwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDSGVhZHNVcERpc3BsYXk+IGNyZWF0
ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSGVhZHNVcERpc3BsYXko
KSk7Ci0gICAgfQotCi0gICAgfkNDSGVhZHNVcERpc3BsYXkoKTsKLQotICAgIHZvaWQgc2V0Rm9u
dEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKLQotICAgIGJvb2wgZW5hYmxlZChjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJikgY29uc3Q7Ci0gICAgdm9pZCBkcmF3KENDTGF5ZXJUcmVl
SG9zdEltcGwqKTsKLQotcHJpdmF0ZToKLSAgICBDQ0hlYWRzVXBEaXNwbGF5KCkgeyB9OwotCi0g
ICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NMYXllclRyZWVIb3N0
SW1wbCosIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmLCBjb25zdCBJbnRTaXplJiBodWRTaXpl
KTsKLSAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRl
Q291bnRlciosIGludCB0b3AsIGludCBoZWlnaHQpOwotICAgIHZvaWQgZHJhd0ZQU0NvdW50ZXJU
ZXh0KEdyYXBoaWNzQ29udGV4dCosIENDRnJhbWVSYXRlQ291bnRlciosIGludCB0b3AsIGludCB3
aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRl
eHQqLCBDQ0RlYnVnUmVjdEhpc3RvcnkqLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7Ci0K
LSAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdz
JikgY29uc3Q7Ci0gICAgYm9vbCBzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRp
bmdzJikgY29uc3Q7Ci0KLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBtX2h1ZFRleHR1cmU7
Ci0gICAgT3duUHRyPENDRm9udEF0bGFzPiBtX2ZvbnRBdGxhczsKLX07Ci0KLX0KLQotI2VuZGlm
IC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NmZkYzg0
ZGRlMTZjODBkMWQ0Mzc0NDdjOTJkN2UyYTZhOWY4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaCIKKworI2luY2x1
ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUNhbnZhcy5oIgorI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgorI2luY2x1ZGUg
ImNjL0NDRm9udEF0bGFzLmgiCisjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmgiCisj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgorI2luY2x1ZGUgImNjL0NDUXVhZFNp
bmsuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NDSGVhZHNVcERpc3BsYXlM
YXllckltcGw6OkNDSGVhZHNVcERpc3BsYXlMYXllckltcGwoaW50IGlkLCBQYXNzT3duUHRyPEND
Rm9udEF0bGFzPiBmb250QXRsYXMpCisgICAgOiBDQ0xheWVySW1wbChpZCksCisgICAgICBtX2Zv
bnRBdGxhcyhmb250QXRsYXMpCit7Cit9CisKK0NDSGVhZHNVcERpc3BsYXlMYXllckltcGw6On5D
Q0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKCkKK3sKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIp
Cit7CisgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KHJlc291cmNlUHJvdmlkZXIpOworCisgICAg
aWYgKCFtX2h1ZFRleHR1cmUpCisgICAgICAgIG1faHVkVGV4dHVyZSA9IENDU2NvcGVkVGV4dHVy
ZTo6Y3JlYXRlKHJlc291cmNlUHJvdmlkZXIpOworCisgICAgLy8gRklYTUU6IFNjYWxlIHRoZSBI
VUQgYnkgZGV2aWNlU2NhbGUgdG8gbWFrZSBpdCBtb3JlIGZyaWVuZGx5IHVuZGVyIGhpZ2ggRFBJ
LgorCisgICAgaWYgKG1faHVkVGV4dHVyZS0+c2l6ZSgpICE9IGJvdW5kcygpKQorICAgICAgICBt
X2h1ZFRleHR1cmUtPmZyZWUoKTsKKworICAgIGlmICghbV9odWRUZXh0dXJlLT5pZCgpICYmICFt
X2h1ZFRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBib3VuZHMoKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVuZGVyIHBpeGVscyBpbnRvIHRoZSB0ZXh0
dXJlLgorICAgIFBsYXRmb3JtQ2FudmFzIGNhbnZhczsKKyAgICBjYW52YXMucmVzaXplKGJvdW5k
cygpKTsKKyAgICB7CisgICAgICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIHBhaW50ZXIoJmNh
bnZhcywgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQpOworICAgICAgICBw
YWludGVyLmNvbnRleHQoKS0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBib3VuZHMoKS53aWR0
aCgpLCBib3VuZHMoKS5oZWlnaHQoKSkpOworICAgICAgICBkcmF3SHVkQ29udGVudHMocGFpbnRl
ci5jb250ZXh0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1
dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOworICAgICAgICBJbnRSZWN0IGxheWVyUmVjdChJbnRQ
b2ludCgpLCBib3VuZHMoKSk7CisgICAgICAgIHJlc291cmNlUHJvdmlkZXItPnVwbG9hZChtX2h1
ZFRleHR1cmUtPmlkKCksIGxvY2tlci5waXhlbHMoKSwgbGF5ZXJSZWN0LCBsYXllclJlY3QsIGxh
eWVyUmVjdCk7CisgICAgfQorfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3sKKyAgICBpZiAoIW1faHVkVGV4dHVyZS0+aWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBib3Vu
ZHMoKSk7CisgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOworICAgIEZsb2F0UmVj
dCB1dlJlY3QoMCwgMCwgMSwgMSk7CisgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CisgICAgcXVh
ZExpc3QuYXBwZW5kKFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgcXVhZFJlY3QsIG1faHVkVGV4dHVyZS0+aWQoKSwgcHJlbXVsdGlwbGllZEFscGhhLCB1
dlJlY3QsIGZsaXBwZWQpKTsKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpk
aWREcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKK3sKKyAgICBDQ0xh
eWVySW1wbDo6ZGlkRHJhdyhyZXNvdXJjZVByb3ZpZGVyKTsKKworICAgIGlmICghbV9odWRUZXh0
dXJlLT5pZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2lu
ZyBhc3NlcnQgd2lsbCBub3QgYmUgdHJ1ZSB3aGVuIHNlbmRpbmcgcmVzb3VyY2VzIHRvIGEKKyAg
ICAvLyBwYXJlbnQgY29tcG9zaXRvci4gV2Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGhvbGQgb24g
dG8gbV9odWRUZXh0dXJlIGZvcgorICAgIC8vIGxvbmdlciwgYW5kIGhhdmUgc2V2ZXJhbCBIVUQg
dGV4dHVyZXMgaW4gdGhlIHBpcGVsaW5lLgorICAgIEFTU0VSVCghcmVzb3VyY2VQcm92aWRlci0+
aW5Vc2VCeUNvbnN1bWVyKG1faHVkVGV4dHVyZS0+aWQoKSkpOworfQorCit2b2lkIENDSGVhZHNV
cERpc3BsYXlMYXllckltcGw6OmRpZExvc2VDb250ZXh0KCkKK3sKKyAgICBtX2h1ZFRleHR1cmUt
PmxlYWsoKTsKK30KKwordm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjpkcmF3SHVkQ29u
dGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQoreworICAgIGNvbnN0IENDTGF5ZXJUcmVl
U2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdEltcGwoKS0+c2V0dGluZ3MoKTsKKwor
ICAgIGlmIChzZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKKyAgICAgICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yKDAsIDAsIDAsIDE5MiksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoMCwgMCwgYm91bmRzKCkud2lk
dGgoKSwgYm91bmRzKCkuaGVpZ2h0KCkpKTsKKyAgICB9CisKKyAgICBpbnQgZnBzQ291bnRlckhl
aWdodCA9IDQwOworICAgIGludCBmcHNDb3VudGVyVG9wID0gMjsKKyAgICBpbnQgcGxhdGZvcm1M
YXllclRyZWVUb3A7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpCisgICAgICAg
IHBsYXRmb3JtTGF5ZXJUcmVlVG9wID0gZnBzQ291bnRlclRvcCArIGZwc0NvdW50ZXJIZWlnaHQ7
CisgICAgZWxzZQorICAgICAgICBwbGF0Zm9ybUxheWVyVHJlZVRvcCA9IDA7CisKKyAgICBpZiAo
c2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpCisgICAgICAgIGRyYXdGUFNDb3VudGVyKGNvbnRleHQs
IGxheWVyVHJlZUhvc3RJbXBsKCktPmZwc0NvdW50ZXIoKSwgZnBzQ291bnRlclRvcCwgZnBzQ291
bnRlckhlaWdodCk7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlICYm
IG1fZm9udEF0bGFzKSB7CisgICAgICAgIFN0cmluZyBsYXllclRyZWUgPSBsYXllclRyZWVIb3N0
SW1wbCgpLT5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgbV9mb250QXRsYXMtPmRyYXdUZXh0
KGNvbnRleHQsIGxheWVyVHJlZSwgSW50UG9pbnQoMiwgcGxhdGZvcm1MYXllclRyZWVUb3ApLCBi
b3VuZHMoKSk7CisgICAgfQorCisgICAgaWYgKHNldHRpbmdzLnNob3dEZWJ1Z1JlY3RzKCkpCisg
ICAgICAgIGRyYXdEZWJ1Z1JlY3RzKGNvbnRleHQsIGxheWVyVHJlZUhvc3RJbXBsKCktPmRlYnVn
UmVjdEhpc3RvcnkoKSk7Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6ZHJh
d0ZQU0NvdW50ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDQ0ZyYW1lUmF0ZUNvdW50ZXIq
IGZwc0NvdW50ZXIsIGludCB0b3AsIGludCBoZWlnaHQpCit7CisgICAgZmxvYXQgdGV4dFdpZHRo
ID0gMTcwOyAvLyBzbyB0ZXh0IGZpdHMgb24gbGludXguCisgICAgZmxvYXQgZ3JhcGhXaWR0aCA9
IGZwc0NvdW50ZXItPnRpbWVTdGFtcEhpc3RvcnlTaXplKCk7CisKKyAgICAvLyBEcmF3IHRoZSBG
UFMgdGV4dC4KKyAgICBkcmF3RlBTQ291bnRlclRleHQoY29udGV4dCwgZnBzQ291bnRlciwgdG9w
LCB0ZXh0V2lkdGgsIGhlaWdodCk7CisKKyAgICAvLyBEcmF3IEZQUyBncmFwaC4KKyAgICBjb25z
dCBkb3VibGUgbG9GUFMgPSAwOworICAgIGNvbnN0IGRvdWJsZSBoaUZQUyA9IDgwOworICAgIGNv
bnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBjb250ZXh0LT5zZXRGaWxs
Q29sb3IoQ29sb3IoMTU0LCAyMDUsIDUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29u
dGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCwgZ3JhcGhXaWR0aCwg
aGVpZ2h0IC8gMikpOworICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1MCwg
MjA1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRS
ZWN0KDIgKyB0ZXh0V2lkdGgsIHRvcCArIGhlaWdodCAvIDIsIGdyYXBoV2lkdGgsIGhlaWdodCAv
IDIpKTsKKyAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDApLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAw
LCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICBpbnQgZ3JhcGhMZWZ0ID0gc3RhdGlj
X2Nhc3Q8aW50Pih0ZXh0V2lkdGggKyAzKTsKKyAgICBJbnRQb2ludCBwcmV2KC0xLCAwKTsKKyAg
ICBpbnQgeCA9IDA7CisgICAgZG91YmxlIGggPSBzdGF0aWNfY2FzdDxkb3VibGU+KGhlaWdodCAt
IDIpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnBzQ291bnRlci0+dGltZVN0YW1wSGlzdG9y
eVNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBpbnQgaiA9IGkgKyAxOworICAgICAgICBkb3Vi
bGUgZGVsdGEgPSBmcHNDb3VudGVyLT50aW1lU3RhbXBPZlJlY2VudEZyYW1lKGopIC0gZnBzQ291
bnRlci0+dGltZVN0YW1wT2ZSZWNlbnRGcmFtZShpKTsKKworICAgICAgICAvLyBTa2lwIHBsb3R0
aW5nIHRoaXMgcGFydGljdWxhciBpbnN0YW50YW5lb3VzIGZyYW1lIHJhdGUgaWYgaXQgaXMgbm90
IGxpa2VseSB0byBoYXZlIGJlZW4gdmFsaWQuCisgICAgICAgIGlmIChmcHNDb3VudGVyLT5pc0Jh
ZEZyYW1lSW50ZXJ2YWwoZGVsdGEpKSB7CisgICAgICAgICAgICB4ICs9IDE7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSBmcHMgPSAxLjAgLyBkZWx0
YTsKKworICAgICAgICAvLyBDbGFtcCB0aGUgRlBTIHRvIHRoZSByYW5nZSB3ZSB3YW50IHRvIHBs
b3QgdmlzdWFsbHkuCisgICAgICAgIGRvdWJsZSBwID0gMSAtICgoZnBzIC0gbG9GUFMpIC8gKGhp
RlBTIC0gbG9GUFMpKTsKKyAgICAgICAgaWYgKHAgPCAwKQorICAgICAgICAgICAgcCA9IDA7Cisg
ICAgICAgIGlmIChwID4gMSkKKyAgICAgICAgICAgIHAgPSAxOworCisgICAgICAgIC8vIFBsb3Qg
dGhpcyBkYXRhIHBvaW50LgorICAgICAgICBJbnRQb2ludCBjdXIoZ3JhcGhMZWZ0ICsgeCwgMSAr
IHRvcCArIHAqaCk7CisgICAgICAgIGlmIChwcmV2LngoKSAhPSAtMSkKKyAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdMaW5lKHByZXYsIGN1cik7CisgICAgICAgIHByZXYgPSBjdXI7CisgICAgICAg
IHggKz0gMTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6ZHJh
d0ZQU0NvdW50ZXJUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NGcmFtZVJhdGVDb3Vu
dGVyKiBmcHNDb3VudGVyLCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAg
ZG91YmxlIGF2ZXJhZ2VGUFMsIHN0ZERldmlhdGlvbjsKKyAgICBmcHNDb3VudGVyLT5nZXRBdmVy
YWdlRlBTQW5kU3RhbmRhcmREZXZpYXRpb24oYXZlcmFnZUZQUywgc3RkRGV2aWF0aW9uKTsKKwor
ICAgIC8vIERyYXcgYmFja2dyb3VuZC4KKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3Io
MCwgMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC0+ZmlsbFJl
Y3QoRmxvYXRSZWN0KDIsIHRvcCwgd2lkdGgsIGhlaWdodCkpOworCisgICAgLy8gRHJhdyBGUFMg
dGV4dC4KKyAgICBpZiAobV9mb250QXRsYXMpCisgICAgICAgIG1fZm9udEF0bGFzLT5kcmF3VGV4
dChjb250ZXh0LCBTdHJpbmc6OmZvcm1hdCgiRlBTOiAlNC4xZiArLy0gJTMuMWYiLCBhdmVyYWdl
RlBTLCBzdGREZXZpYXRpb24pLCBJbnRQb2ludCgxMCwgaGVpZ2h0IC8gMyksIEludFNpemUod2lk
dGgsIGhlaWdodCkpOworfQorCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmRyYXdE
ZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBk
ZWJ1Z1JlY3RIaXN0b3J5KQoreworICAgIGNvbnN0IFZlY3RvcjxDQ0RlYnVnUmVjdD4mIGRlYnVn
UmVjdHMgPSBkZWJ1Z1JlY3RIaXN0b3J5LT5kZWJ1Z1JlY3RzKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkZWJ1Z1JlY3RzLnNpemUoKTsgKytpKSB7CisKKyAgICAgICAgaWYgKGRlYnVn
UmVjdHNbaV0udHlwZSA9PSBQYWludFJlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBQYWludCBy
ZWN0cyBpbiByZWQKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDI1
NSwgMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDI1NSwgMCwgMCwgMzApLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdS
ZWN0c1tpXS5yZWN0LCAyLjApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlYnVnUmVjdHNb
aV0udHlwZSA9PSBQcm9wZXJ0eUNoYW5nZWRSZWN0VHlwZSkgeworICAgICAgICAgICAgLy8gUHJv
cGVydHktY2hhbmdlZCByZWN0cyBpbiBibHVlCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihDb2xvcigwLCAwLCAyNTUsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigwLCAw
LCAyNTUsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5z
dHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU3VyZmFjZURhbWFnZVJlY3RUeXBlKSB7CisgICAg
ICAgICAgICAvLyBTdXJmYWNlIGRhbWFnZSByZWN0cyBpbiB5ZWxsb3ctb3JhbmdlCisgICAgICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDEwMCwgMCwgMjU1KSwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1Jl
Y3RzW2ldLnJlY3QsIENvbG9yKDIwMCwgMTAwLCAwLCAzMCksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIu
MCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IFJlcGxp
Y2FTY3JlZW5TcGFjZVJlY3RUeXBlKSB7CisgICAgICAgICAgICAvLyBTY3JlZW4gc3BhY2UgcmVj
dHMgaW4gZ3JlZW4uCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigx
MDAsIDIwMCwgMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDEwMCwgMjAwLCAwLCAzMCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChk
ZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVidWdS
ZWN0c1tpXS50eXBlID09IFNjcmVlblNwYWNlUmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8vIFNj
cmVlbiBzcGFjZSByZWN0cyBpbiBwdXJwbGUuCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJv
a2VDb2xvcihDb2xvcigxMDAsIDAsIDIwMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDEw
MCwgMCwgMjAwLCAxMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4
dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoZGVidWdSZWN0c1tpXS50eXBlID09IE9jY2x1ZGluZ1JlY3RUeXBlKSB7CisgICAg
ICAgICAgICAvLyBPY2NsdWRpbmcgcmVjdHMgaW4gYSByZWRkaXNoIGNvbG9yLgorICAgICAgICAg
ICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjAwLCAwLCAxMDAsIDI1NSksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0
c1tpXS5yZWN0LCBDb2xvcigyMDAsIDAsIDEwMCwgMTApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjAp
OworICAgICAgICB9CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5TGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgzNzhhNWZlOWVlZTA1MTE2OWM2OWEwODdi
MjYzNDYwMTc3YTUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaApAQCAtMCww
ICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsX2gKKyNk
ZWZpbmUgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbF9oCisKKyNpbmNsdWRlICJjYy9DQ0xheWVy
SW1wbC5oIgorI2luY2x1ZGUgImNjL0NDU2NvcGVkVGV4dHVyZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIENDRGVidWdSZWN0SGlzdG9yeTsKK2NsYXNzIENDRm9udEF0bGFzOwor
Y2xhc3MgQ0NGcmFtZVJhdGVDb3VudGVyOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworCitjbGFz
cyBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsPiBjcmVh
dGUoaW50IGlkLCBQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSGVhZHNVcERpc3BsYXlMYXllckltcGwoaWQsIGZv
bnRBdGxhcykpOworICAgIH0KKyAgICB2aXJ0dWFsIH5DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBs
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwg
Ym9vbCBsYXllcklzQWx3YXlzRGFtYWdlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKworcHJpdmF0ZToKKyAgICBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsKGludCwgUGFzc093
blB0cjxDQ0ZvbnRBdGxhcz4pOworCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXllclR5cGVB
c1N0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJIZWFkc1VwRGlzcGxheUxheWVyIjsg
fQorCisgICAgdm9pZCBkcmF3SHVkQ29udGVudHMoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9p
ZCBkcmF3RlBTQ291bnRlcihHcmFwaGljc0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBp
bnQgdG9wLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIGRyYXdGUFNDb3VudGVyVGV4dChHcmFwaGlj
c0NvbnRleHQqLCBDQ0ZyYW1lUmF0ZUNvdW50ZXIqLCBpbnQgdG9wLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpOworICAgIHZvaWQgZHJhd0RlYnVnUmVjdHMoR3JhcGhpY3NDb250ZXh0KiwgQ0NEZWJ1
Z1JlY3RIaXN0b3J5Kik7CisKKyAgICBPd25QdHI8Q0NGb250QXRsYXM+IG1fZm9udEF0bGFzOwor
ICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IG1faHVkVGV4dHVyZTsKK307CisKK30KKworI2Vu
ZGlmIC8vIENDSGVhZHNVcERpc3BsYXlMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5k
ZXggMjViZWRjMjIwN2U3MjkwY2ViN2FmOWI4NTVmZGIyYzU3NTc3ZjZjMi4uOTBhNTExMjdmOTI0
MmRkYmRjNDBiZDZkY2JkYTc5NTdiZDNkN2NlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0y
NTUsMTEgKzI1NSwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFN0YWNraW5nT3JkZXJDaGFu
Z2VkKGJvb2wpOwogCi0gICAgYm9vbCBsYXllclByb3BlcnR5Q2hhbmdlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQ7IH0KKyAgICBib29sIGxheWVyUHJvcGVydHlDaGFu
Z2VkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclByb3BlcnR5Q2hhbmdlZCB8fCBsYXllcklzQWx3
YXlzRGFtYWdlZCgpOyB9CiAgICAgYm9vbCBsYXllclN1cmZhY2VQcm9wZXJ0eUNoYW5nZWQoKSBj
b25zdDsKIAogICAgIHZvaWQgcmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCBsYXllcklzQWx3YXlzRGFtYWdlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogbGF5ZXJBbmltYXRpb25D
b250cm9sbGVyKCkgeyByZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0K
IAogICAgIHZpcnR1YWwgUmVnaW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBkMmE3OWViMWJmYmU1ZjY2ZGUx
ZjI5MGJlNTcxMmJmMTBhNmZhMTc1Li45MTRkZjAzNDYyMDJiNGEwMTdjODQ2MDY5YzJjNTM1NTdi
MTBhMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCisjaW5jbHVkZSAiSGVhZHNV
cERpc3BsYXlMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKQEAgLTEwNiwxNCArMTA3
LDYgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogICAgIGlmICghbV9wcm94
eS0+aW5pdGlhbGl6ZUNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8g
T25seSBhbGxvY2F0ZSB0aGUgZm9udCBhdGxhcyBpZiB3ZSBoYXZlIHJlYXNvbiB0byB1c2UgdGhl
IGhlYWRzLXVwIGRpc3BsYXkuCi0gICAgaWYgKG1fc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwg
bV9zZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemU6OmluaXRpYWxpemVGb250QXRsYXMi
KTsKLSAgICAgICAgT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMoQ0NGb250QXRsYXM6OmNy
ZWF0ZSgpKTsKLSAgICAgICAgZm9udEF0bGFzLT5pbml0aWFsaXplKCk7Ci0gICAgICAgIG1fcHJv
eHktPnNldEZvbnRBdGxhcyhmb250QXRsYXMucmVsZWFzZSgpKTsKLSAgICB9Ci0KICAgICBtX2Nv
bXBvc2l0b3JJZGVudGlmaWVyID0gbV9wcm94eS0+Y29tcG9zaXRvcklkZW50aWZpZXIoKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI1OSw4ICsyNTIsMjAgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1w
bCkKICAgICBtX2NvbW1pdE51bWJlcisrOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6d2ls
bENvbW1pdCgpCit7CisgICAgbV9jbGllbnQtPndpbGxDb21taXQoKTsKKyAgICBpZiAobV9zZXR0
aW5ncy5zaG93RGVidWdJbmZvKCkpIHsKKyAgICAgICAgaWYgKCFtX2h1ZExheWVyKQorICAgICAg
ICAgICAgbV9odWRMYXllciA9IEhlYWRzVXBEaXNwbGF5TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKG1f
c2V0dGluZ3MsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7Cisg
ICAgICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX2h1ZExheWVyKTsKKyAgICB9Cit9CisKIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSgpCiB7CisgICAgaWYgKG1faHVkTGF5
ZXIpCisgICAgICAgIG1faHVkTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICBtX2RlbGV0
ZVRleHR1cmVBZnRlckNvbW1pdExpc3QuY2xlYXIoKTsKICAgICBtX2NsaWVudC0+ZGlkQ29tbWl0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDgzOTc4NTkwNTNlY2U2MjAy
ZDFkMTkwOWRkOTZlMWIwMjdmMThhMjEuLjNmZTQ1MWMxMTE3Y2U3M2VhNTRlYTg4ODY5MjJhZjVm
Y2NjNjU2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMTIsNiArMTEyLDkg
QEAgc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3MgewogICAgIEludFNpemUgZGVmYXVsdFRpbGVT
aXplOwogICAgIEludFNpemUgbWF4VW50aWxlZExheWVyU2l6ZTsKICAgICBJbnRTaXplIG1pbmlt
dW1PY2NsdXNpb25UcmFja2luZ1NpemU7CisKKyAgICBib29sIHNob3dEZWJ1Z0luZm8oKSBjb25z
dCB7IHJldHVybiBzaG93UGxhdGZvcm1MYXllclRyZWUgfHwgc2hvd0ZQU0NvdW50ZXIgfHwgc2hv
d0RlYnVnUmVjdHMoKTsgfQorICAgIGJvb2wgc2hvd0RlYnVnUmVjdHMoKSBjb25zdCB7IHJldHVy
biBzaG93UGFpbnRSZWN0cyB8fCBzaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2hvd1N1cmZh
Y2VEYW1hZ2VSZWN0cyB8fCBzaG93U2NyZWVuU3BhY2VSZWN0cyB8fCBzaG93UmVwbGljYVNjcmVl
blNwYWNlUmVjdHMgfHwgc2hvd09jY2x1ZGluZ1JlY3RzOyB9CiB9OwogCiAvLyBQcm92aWRlcyBp
bmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBiYWNrIHRvIHRo
ZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE2OCw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
YXlvdXQoKTsKICAgICB2b2lkIGJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqKTsKICAgICB2b2lkIGZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhv
c3RJbXBsKik7CisgICAgdm9pZCB3aWxsQ29tbWl0KCk7CiAgICAgdm9pZCBjb21taXRDb21wbGV0
ZSgpOwogICAgIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQoKTsK
ICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJU
cmVlSG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCopOwpAQCAtMTc4LDcgKzE4Miw2
IEBAIHB1YmxpYzoKICAgICAgICAgUmVjcmVhdGVGYWlsZWRBbmRHYXZlVXAsCiAgICAgfTsKICAg
ICBSZWNyZWF0ZVJlc3VsdCByZWNyZWF0ZUNvbnRleHQoKTsKLSAgICB2b2lkIHdpbGxDb21taXQo
KSB7IG1fY2xpZW50LT53aWxsQ29tbWl0KCk7IH0KICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdGcmFtZSgpOyB9CiAgICAgdm9pZCBk
aWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpOyB9CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKENDUmVz
b3VyY2VQcm92aWRlciopOwpAQCAtMzEwLDYgKzMxMyw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
bnVtRmFpbGVkUmVjcmVhdGVBdHRlbXB0czsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBt
X3Jvb3RMYXllcjsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9odWRMYXllcjsKICAgICBP
d25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXI7CiAgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiBtX3N1cmZhY2VNZW1vcnlQbGFj
ZWhvbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAw
ZDlkN2ZmNDFlNWViNTFmZDQ4ZjAyZmZmZDJkNTlhZjljYzQxMDcwLi40Njk2NzM3MzExYzgwM2Fl
ZDI4YTM1ODdlMDVjZTA0NzA2NjRhYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRp
bWVTb3VyY2UuaCIKICNpbmNsdWRlICJjYy9DQ0ZvbnRBdGxhcy5oIgogI2luY2x1ZGUgImNjL0ND
RnJhbWVSYXRlQ291bnRlci5oIgotI2luY2x1ZGUgImNjL0NDSGVhZHNVcERpc3BsYXkuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKQEAgLTEyMyw3ICsx
MjIsNiBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IEND
TGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQwogICAgICwgbV92aXNpYmxlKHRydWUpCiAg
ICAgLCBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KGZhbHNlKQog
ICAgICwgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXQoKSkKLSAgICAsIG1faGVhZHNVcERp
c3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2VTY2FsZSgxKQog
ICAgICwgbV9wYWdlU2NhbGVEZWx0YSgxKQogICAgICwgbV9zZW50UGFnZVNjYWxlRGVsdGEoMSkK
QEAgLTU1MiwxNCArNTUwLDExIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVy
cyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogICAgIG1fZnBzQ291bnRlci0+bWFya0JlZ2lubmlu
Z09mRnJhbWUoY3VycmVudFRpbWUoKSk7CiAKICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdGcmFt
ZShmcmFtZS5yZW5kZXJQYXNzZXMsIG1fcm9vdFNjaXNzb3JSZWN0KTsKLSAgICBpZiAobV9oZWFk
c1VwRGlzcGxheS0+ZW5hYmxlZChzZXR0aW5ncygpKSkKLSAgICAgICAgbV9oZWFkc1VwRGlzcGxh
eS0+ZHJhdyh0aGlzKTsKLSAgICBtX2xheWVyUmVuZGVyZXItPmZpbmlzaERyYXdpbmdGcmFtZSgp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXMu
c2l6ZSgpOyBpKyspCiAgICAgICAgIGZyYW1lLnJlbmRlclBhc3Nlc1tpXS0+dGFyZ2V0U3VyZmFj
ZSgpLT5kYW1hZ2VUcmFja2VyKCktPmRpZERyYXdEYW1hZ2VkQXJlYSgpOwogCi0gICAgaWYgKG1f
ZGVidWdSZWN0SGlzdG9yeS0+ZW5hYmxlZChzZXR0aW5ncygpKSkKKyAgICBpZiAobV9zZXR0aW5n
cy5zaG93RGVidWdSZWN0cygpKQogICAgICAgICBtX2RlYnVnUmVjdEhpc3RvcnktPnNhdmVEZWJ1
Z1JlY3RzRm9yQ3VycmVudEZyYW1lKG1fcm9vdExheWVySW1wbC5nZXQoKSwgKmZyYW1lLnJlbmRl
clN1cmZhY2VMYXllckxpc3QsIGZyYW1lLm9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMsIHNldHRp
bmdzKCkpOwogCiAgICAgKyttX3NvdXJjZUFuaW1hdGlvbkZyYW1lTnVtYmVyOwpAQCAtMTE2MCwx
MSArMTE1NSw2IEBAIFN0cmluZyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpsYXllclRyZWVBc1RleHQo
KSBjb25zdAogICAgIHJldHVybiB0cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+IGZvbnRBdGxhcykK
LXsKLSAgICBtX2hlYWRzVXBEaXNwbGF5LT5zZXRGb250QXRsYXMoZm9udEF0bGFzKTsKLX0KLQog
dm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkdW1wUmVuZGVyU3VyZmFjZXMoVGV4dFN0cmVhbSYg
dHMsIGludCBpbmRlbnQsIGNvbnN0IENDTGF5ZXJJbXBsKiBsYXllcikgY29uc3QKIHsKICAgICBp
ZiAobGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAppbmRleCBmOTM2ZTM0ZGQyYzNjNDMyOTJmMjNiMjhmMDE5OTMxNjVlNTNiNDUyLi5jYjA5
NjdlNDRiOWM2YzM3NjFjMWU5ZTU2NmY4NjVlMDkzNzc4Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCkBAIC0zOSw5ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjsKIGNsYXNzIENDQ29tcGxldGlvbkV2ZW50
OwogY2xhc3MgQ0NEZWJ1Z1JlY3RIaXN0b3J5OwotY2xhc3MgQ0NGb250QXRsYXM7CiBjbGFzcyBD
Q0ZyYW1lUmF0ZUNvdW50ZXI7Ci1jbGFzcyBDQ0hlYWRzVXBEaXNwbGF5OwogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI7CiBjbGFz
cyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKQEAgLTExOCw3ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAg
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKIAogICAgIFN0cmluZyBsYXllclRy
ZWVBc1RleHQoKSBjb25zdDsKLSAgICB2b2lkIHNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9u
dEF0bGFzPik7CiAKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgIGludCBzb3Vy
Y2VBbmltYXRpb25GcmFtZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQW5pbWF0aW9u
RnJhbWVOdW1iZXI7IH0KQEAgLTI2Niw4ICsyNjMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9j
b250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdDsKICAgICBzaXplX3QgbV9t
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlczsKIAotICAgIE93blB0cjxDQ0hlYWRzVXBEaXNwbGF5
PiBtX2hlYWRzVXBEaXNwbGF5OwotCiAgICAgZmxvYXQgbV9wYWdlU2NhbGU7CiAgICAgZmxvYXQg
bV9wYWdlU2NhbGVEZWx0YTsKICAgICBmbG9hdCBtX3NlbnRQYWdlU2NhbGVEZWx0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaAppbmRleCBmMTkwMzJhYmJmNjY2YTQ1ZjliNGQ4YzFlMGI5YjRjMWQ4ZGUwNjVhLi4zYjZk
YzdmOWM0NDg2ZDU2ZmZkNGZiNWM0OGRkZjVmYjVmYjdhY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0z
Myw3ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NGb250QXRsYXM7
CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0Owogc3RydWN0IENDUmVu
ZGVyaW5nU3RhdHM7CkBAIC0xMDYsOCArMTA1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGFjcXVpcmVMYXllclRleHR1cmVzKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEZv
bnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPikgPSAwOwotCiAgICAgLy8gRGVidWcgaG9v
a3MKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIGJvb2wgaXNNYWluVGhyZWFkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlcmVyLmgKaW5kZXggZDkzMTAyMmRjNTU1NzVlMWU4ZWY2ZjliODMzMjMzYTZmNzE0YmYz
MS4uOTM5Nzg3MTc3NTdhZTQxNWNhNDIyMTEwMmJhOTI5OTM0NTBiY2NhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyZXIuaApAQCAtODEsOSArODEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhdmVD
YWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50KSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiByb290U2Npc3NvclJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoRHJhd2luZ0ZyYW1lKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0hlYWRzVXBE
aXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSosIGNvbnN0IEludFNpemUmIGh1ZFNpemUpID0g
MDsKIAogICAgIC8vIHdhaXRzIGZvciByZW5kZXJpbmcgdG8gZmluaXNoCiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
aW5kZXggMDAyYzdhN2JmYWVhNTA1ZDRkNDRlNzVjNmUzN2FlZjcwMWQ2ZGM0Mi4uMTcyMmUzYWNj
OWZlZDMwYTAwOTdmYTJlNDhkZWU1YzU1NmFiOTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlRyYWNlRXZl
bnQuaCIKICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NGb250QXRs
YXMuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKQEAgLTI2
OCwxMyArMjY3LDYgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xh
eWVyVHJlZUhvc3QgPSAwOwogfQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldEZvbnRB
dGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMpCi17Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKLSAgICBt
X2xheWVyVHJlZUhvc3RJbXBsLT5zZXRGb250QXRsYXMoZm9udEF0bGFzKTsKLX0KLQogdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5Ojpwb3N0QW5pbWF0aW9uRXZlbnRzVG9NYWluVGhyZWFkT25JbXBs
VGhyZWFkKFBhc3NPd25QdHI8Q0NBbmltYXRpb25FdmVudHNWZWN0b3I+IGV2ZW50cywgZG91Ymxl
IHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlOGFhNzU1MTUzNjZkZjQ2
MDI4NTJlYzU1YmE1ZTNjZTQ4NjU2MTM1Li42ZGNlMWMzNWU4NGZlN2Q1MDI5YWU2YjE0N2MwZjc0
MDU3YTg4OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC02Myw3
ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXMoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzKCkgT1ZFUlJJREU7CiAK
ICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDliNmRmZTNhY2UzOTAxZWMxZTYzNWVkZGU1NzM1NDk2
OWY5Yzk0NDIuLjMwODVkZjNlZTAxM2JhZmRlOTI5ZGQ0NTdjNDYzZGE5ZGMyNDkwZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiVHJh
Y2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGVsYXlCYXNlZFRpbWVTb3VyY2UuaCIKICNpbmNs
dWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NGb250QXRsYXMuaCIKICNpbmNs
dWRlICJjYy9DQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCkBAIC04NjYsMTkgKzg2
NSw2IEBAIHNpemVfdCBDQ1RocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBj
b25zdAogICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOwogfQogCi12b2lkIENDVGhy
ZWFkUHJveHk6OnNldEZvbnRBdGxhcyhQYXNzT3duUHRyPENDRm9udEF0bGFzPiBmb250QXRsYXMp
Ci17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBDQ1Byb3h5OjppbXBsVGhyZWFk
KCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0
Rm9udEF0bGFzT25JbXBsVGhyZWFkLCBmb250QXRsYXMpKTsKLQotfQotCi12b2lkIENDVGhyZWFk
UHJveHk6OnNldEZvbnRBdGxhc09uSW1wbFRocmVhZChQYXNzT3duUHRyPENDRm9udEF0bGFzPiBm
b250QXRsYXMpCi17Ci0gICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5zZXRGb250QXRsYXMoZm9udEF0bGFzKTsKLX0KLQogdm9pZCBDQ1RocmVhZFBy
b3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpb24sIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyLCBib29sKiByZWNyZWF0ZVN1Y2Nl
ZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVzKQogewogICAgIFRS
QUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhy
ZWFkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMGY4YTM1NDA0MGU0ZjA1MDhmODE3
NGY5YTRjOTVhNDFjNDEyYTIyMS4uODYwYTIwMTczODY2NGJlNzk0ZWI3ODk4NGNkZWZhMWNiOTZm
OGU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHNpemVfdCBt
YXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgYWNxdWlyZUxheWVyVGV4dHVyZXMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzKCkgT1ZFUlJJREU7CiAKICAgICAvLyBD
Q0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCkBAIC0xNDQsNyArMTQzLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCosIENDR3JhcGhpY3NDb250ZXh0KiwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQs
IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMqKTsKICAgICB2b2lkIGltcGxTaWRlUmVuZGVyaW5n
U3RhdHNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1JlbmRlcmluZ1N0YXRzKik7
CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7Ci0gICAgdm9pZCBzZXRGb250QXRs
YXNPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0ZvbnRBdGxhcz4pOwogICAgIHZvaWQgZm9yY2VT
ZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAg
ICAgdm9pZCBzZXROZWVkc0ZvcmNlZENvbW1pdE9uSW1wbFRocmVhZCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0LmNwcAppbmRleCAxYjZiODAyOGI0ZmY1NGQ1OTY0OTJhOGE3YTNkYWUzZmI4MDkzMWRlLi5m
MWQ4ZGMxZDAzYmZlODIwMGQ1YWMzZDE1MzI5MmE0Njg2ZTUwOTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVz
dC5jcHAKQEAgLTQxOSw3ICs0MTksNiBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qy
LCBvcGFxdWVCYWNrZ3JvdW5kKQogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVuZGVyZXJDaHJvbWl1
bS5pbml0aWFsaXplKCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmRyYXdGcmFtZSht
b2NrQ2xpZW50LnJlbmRlclBhc3NlcygpLCBGbG9hdFJlY3QoKSk7Ci0gICAgbGF5ZXJSZW5kZXJl
ckNocm9taXVtLmZpbmlzaERyYXdpbmdGcmFtZSgpOwogCiAgICAgLy8gT24gREVCVUcgYnVpbGRz
LCByZW5kZXIgcGFzc2VzIHdpdGggb3BhcXVlIGJhY2tncm91bmQgY2xlYXIgdG8gYmx1ZSB0bwog
ICAgIC8vIGVhc2lseSBzZWUgcmVnaW9ucyB0aGF0IHdlcmUgbm90IGRyYXduIG9uIHRoZSBzY3Jl
ZW4uCkBAIC00NDMsNyArNDQyLDYgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Miwg
dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVuZGVyZXJDaHJv
bWl1bS5pbml0aWFsaXplKCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmRyYXdGcmFt
ZShtb2NrQ2xpZW50LnJlbmRlclBhc3NlcygpLCBGbG9hdFJlY3QoKSk7Ci0gICAgbGF5ZXJSZW5k
ZXJlckNocm9taXVtLmZpbmlzaERyYXdpbmdGcmFtZSgpOwogCiAgICAgRVhQRUNUX0VRKDEsIGNv
bnRleHQtPmNsZWFyQ291bnQoKSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>