<?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>70084</bug_id>
          
          <creation_ts>2011-10-13 18:37:28 -0700</creation_ts>
          <short_desc>[Chromium] Add WebAcceleratedContentLayer backed by a texture to support accelerated content hosting</short_desc>
          <delta_ts>2011-10-15 00:43:51 -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>0</everconfirmed>
          <reporter name="Antoine Labour">piman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>483715</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-13 18:37:28 -0700</bug_when>
    <thetext>Add WebAcceleratedContentLayer backed by a texture to support accelerated content hosting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483716</commentid>
    <comment_count>1</comment_count>
      <attachid>110948</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-13 18:38:09 -0700</bug_when>
    <thetext>Created attachment 110948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483719</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-13 18:40:34 -0700</bug_when>
    <thetext>Since PluginLayerChromium essentially does the job, I reused it. The naming might be confusing, I&apos;d be ok renaming if that makes it clearer.
I also had to add a path that doesn&apos;t flip the texture, because depending on the cross-process texture transport (EGL vs GLX), texture is flipped or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483720</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 18:40:58 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483753</commentid>
    <comment_count>4</comment_count>
      <attachid>110948</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-13 21:55:35 -0700</bug_when>
    <thetext>Comment on attachment 110948
Patch

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

&gt; Source/WebKit/chromium/public/WebAcceleratedContentLayer.h:36
&gt; +class WebAcceleratedContentLayer : public WebLayer {

isn&apos;t WebContentLayer accelerated too?  i&apos;m not sure i understand what the
accelerated prefix means here.

perhaps WebExternalContentLayer would be a better name?  it seems like this
is intended to provide the embedder with a way to define a layer from a
given textureId.

perhaps it is obvious to everyone else, but could you explain what setFlip
and flip() are?  it looks like it is a property, but &quot;flip&quot; seems like a
verb to me, and yet you are using it like it is a thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483754</commentid>
    <comment_count>5</comment_count>
      <attachid>110948</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-13 21:56:47 -0700</bug_when>
    <thetext>Comment on attachment 110948
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebAcceleratedContentLayer.h:36
&gt;&gt; +class WebAcceleratedContentLayer : public WebLayer {
&gt; 
&gt; isn&apos;t WebContentLayer accelerated too?  i&apos;m not sure i understand what the
&gt; accelerated prefix means here.
&gt; 
&gt; perhaps WebExternalContentLayer would be a better name?  it seems like this
&gt; is intended to provide the embedder with a way to define a layer from a
&gt; given textureId.
&gt; 
&gt; perhaps it is obvious to everyone else, but could you explain what setFlip
&gt; and flip() are?  it looks like it is a property, but &quot;flip&quot; seems like a
&gt; verb to me, and yet you are using it like it is a thing.

also, since this doesn&apos;t extend from WebContentLayer, should its name
really have &quot;Content&quot; in it?  maybe WebExternalLayer?  I admit that I
don&apos;t really understand the difference between WebLayer and WebContentLayer
so my advice may be poor :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484325</commentid>
    <comment_count>6</comment_count>
      <attachid>110948</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-14 14:56:41 -0700</bug_when>
    <thetext>Comment on attachment 110948
Patch

I like the idea of avoiding content in the name.

It would be cool to convey the unmanaged/externality of the texture in the name. I.e. something that the compositor is not creating for you, just passing it right on through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484371</commentid>
    <comment_count>7</comment_count>
      <attachid>111099</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-14 15:43:22 -0700</bug_when>
    <thetext>Created attachment 111099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484372</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-14 15:44:25 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 110948 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110948&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebAcceleratedContentLayer.h:36
&gt; &gt; +class WebAcceleratedContentLayer : public WebLayer {
&gt; 
&gt; isn&apos;t WebContentLayer accelerated too?  i&apos;m not sure i understand what the
&gt; accelerated prefix means here.
&gt; 
&gt; perhaps WebExternalContentLayer would be a better name?  it seems like this
&gt; is intended to provide the embedder with a way to define a layer from a
&gt; given textureId.

Done. WebExternalTextureLayer we all agreed upon.
&gt; 
&gt; perhaps it is obvious to everyone else, but could you explain what setFlip
&gt; and flip() are?  it looks like it is a property, but &quot;flip&quot; seems like a
&gt; verb to me, and yet you are using it like it is a thing.

Done. &quot;flipped&quot;. Added doc to explain what it means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484375</commentid>
    <comment_count>9</comment_count>
      <attachid>111099</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-14 15:50:04 -0700</bug_when>
    <thetext>Comment on attachment 111099
Patch

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

WebKit API LGTM.  You should get someone else to review the WebCore changes.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Add WebAcceleratedContentLayer backed by a texture to support accelerated content hosting

nit: fix up the changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484406</commentid>
    <comment_count>10</comment_count>
      <attachid>111099</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-14 16:48:13 -0700</bug_when>
    <thetext>Comment on attachment 111099
Patch

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

I think you should explicitly document how the compositor will use the passed-in texture.  I believe that with our current implementation it would be something like:

In single threaded mode, the texture will only be used during an invocation of WebLayerTreeView::composite()
In multi threaded mode, the texture may be used starting at some undetermined time after the texture ID is set (specifically at the first commit) and then used at arbitrary points in time up until an undetermined time after the texture id or layer is destroyed, or until the WebLayerTreeView is destroyed.

I&apos;m not sure if the second is workable - we might pick up weird intermediate states if the compositor tries to draw from a texture id that is bound to an FBO as a color attachment in another context. So far in the WebCore compositor we&apos;ve been ignoring this problem as other issues are currently higher priority, but if this is exposed as API that&apos;s a little less workable.

R=me on the implementation stuff.

&gt; Source/WebKit/chromium/src/WebExternalTextureLayerImpl.cpp:58
&gt; +void WebExternalTextureLayerImpl::paintContents(GraphicsContext&amp; gc, const IntRect&amp; clip)

nit: webkit style when an implementation doesn&apos;t use a parameter is to omit the name of the parameter. this avoids unused variable warnings on some compilers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484437</commentid>
    <comment_count>11</comment_count>
      <attachid>111115</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-14 17:45:00 -0700</bug_when>
    <thetext>Created attachment 111115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484443</commentid>
    <comment_count>12</comment_count>
      <attachid>111117</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-14 17:53:18 -0700</bug_when>
    <thetext>Created attachment 111117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484445</commentid>
    <comment_count>13</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-14 18:00:59 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 111099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111099&amp;action=review
&gt; 
&gt; I think you should explicitly document how the compositor will use the passed-in texture.  I believe that with our current implementation it would be something like:
&gt; 
&gt; In single threaded mode, the texture will only be used during an invocation of WebLayerTreeView::composite()
&gt; In multi threaded mode, the texture may be used starting at some undetermined time after the texture ID is set (specifically at the first commit) and then used at arbitrary points in time up until an undetermined time after the texture id or layer is destroyed, or until the WebLayerTreeView is destroyed.

Done.

&gt; 
&gt; I&apos;m not sure if the second is workable - we might pick up weird intermediate states if the compositor tries to draw from a texture id that is bound to an FBO as a color attachment in another context. So far in the WebCore compositor we&apos;ve been ignoring this problem as other issues are currently higher priority, but if this is exposed as API that&apos;s a little less workable.

There&apos;s more than that that needs to be fixed for correct synchronization. Essentially we need to know when a compositing pass is done presenting the latest changes (so that you can have end-to-end synchronization). This is probably already problematic with out-of-thread compositor + plugins.
Right now, the only practical way is to look at the swapBuffers after the next swapBuffers.
Note however 2 things:
- The texture id is still propagated through the commit step. That means you can deal with a queue of textures and retiring/reusing them when you know it&apos;s not in use any more (2 swaps), and still get correct frames.
- The method used to generate those textures in the case of cross-process transport has some weak atomicity guarantees by the driver (i.e. the texture should be a complete frame).

&gt; 
&gt; R=me on the implementation stuff.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebExternalTextureLayerImpl.cpp:58
&gt; &gt; +void WebExternalTextureLayerImpl::paintContents(GraphicsContext&amp; gc, const IntRect&amp; clip)
&gt; 
&gt; nit: webkit style when an implementation doesn&apos;t use a parameter is to omit the name of the parameter. this avoids unused variable warnings on some compilers

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484447</commentid>
    <comment_count>14</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-14 18:01:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 111099 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111099&amp;action=review
&gt; 
&gt; WebKit API LGTM.  You should get someone else to review the WebCore changes.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Add WebAcceleratedContentLayer backed by a texture to support accelerated content hosting
&gt; 
&gt; nit: fix up the changelog

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484537</commentid>
    <comment_count>15</comment_count>
      <attachid>111117</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-15 00:43:46 -0700</bug_when>
    <thetext>Comment on attachment 111117
Patch

Clearing flags on attachment: 111117

Committed r97550: &lt;http://trac.webkit.org/changeset/97550&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484538</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-15 00:43:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110948</attachid>
            <date>2011-10-13 18:38:09 -0700</date>
            <delta_ts>2011-10-14 15:43:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70084-20111013183808.patch</filename>
            <type>text/plain</type>
            <size>26237</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc0MzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjUzNDBiMTZmMjU2MDJi
Y2JlYzA5MTYxYWIzZDc0Yjk0NDNiYzM1Li4xNTMzM2MzMGQ4YWM4MDEyZjU5YzdmNjZkOGI3NzE5
NGU2NzI1NDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMTAtMTMgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllciBiYWNrZWQgYnkgYSB0ZXh0dXJlIHRvIHN1cHBvcnQgYWNjZWxlcmF0
ZWQgY29udGVudCBob3N0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MDA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcvIHRlc3RzCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9n
cmFtRmxpcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFu
dXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxh
eWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXll
ckNocm9taXVtOjpzZXRGbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVy
Q2hyb21pdW06OmZsaXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUGx1Z2luTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5ZXJJ
bXBsOjpDQ1BsdWdpbkxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BsdWdpbkxheWVy
SW1wbDo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
bHVnaW5MYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5ZXJJbXBsOjpz
ZXRGbGlwKToKKwogMjAxMS0xMC0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgI2luY2x1ZGUgb2YgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZS5oPiBpbiBhIHdpZGVseS11c2VkIGhlYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiZTBl
Nzk2MDZiYjI5M2JjMDBmYjNmZThkZDJmMjVlNjM2ZDhkYmQ5Li5iNWQ2NDgzYzk4ODg3YWJmOWY4
N2RkMjY5NWQzZTIwOTY2YmNmN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yMDgsNiArMjA4
LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIGhvbGQgY29udGV4dC1kZXBlbmRlbnQgcmVzb3VyY2Vz
IHN1Y2ggYXMgdGV4dHVyZXMuCiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsK
IAorICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKKwogICAgIEZsb2F0UmVjdCBtX2RpcnR5UmVj
dDsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX21hc2tMYXllcjsKQEAgLTIxOSw4ICsy
MjEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fbGF5ZXJJZDsKIAogcHJpdmF0ZToKLSAgICB2
b2lkIHNldE5lZWRzQ29tbWl0KCk7Ci0KICAgICB2b2lkIHNldFBhcmVudChMYXllckNocm9taXVt
Kik7CiAgICAgYm9vbCBoYXNBbmNlc3RvcihMYXllckNocm9taXVtKikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGM1MjVjMWQyM2ViZjY0Nzg4NTMy
ODgyMjcyZDg4MjJhZjVjYTY3YzAuLmE1MGZlZGRjNmE5MDNjNzk3ZDJhNjk0NTFkOTM4YmU4ZTQ2
YjNhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNzUyLDYg
Kzc1MiwxNyBAQCBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpwbHVnaW5MYXllclByb2dyYW0oKQogICAgIHJldHVybiBtX3BsdWdpbkxheWVy
UHJvZ3JhbS5nZXQoKTsKIH0KIAorY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlw
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnBsdWdpbkxheWVyUHJvZ3JhbUZsaXAoKQoreworICAg
IGlmICghbV9wbHVnaW5MYXllclByb2dyYW1GbGlwKQorICAgICAgICBtX3BsdWdpbkxheWVyUHJv
Z3JhbUZsaXAgPSBhZG9wdFB0cihuZXcgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlwKG1f
Y29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV9wbHVnaW5MYXllclByb2dyYW1GbGlwLT5pbml0
aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06
OnBsdWdpbkxheWVyUHJvZ3JhbUZsaXA6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAg
bV9wbHVnaW5MYXllclByb2dyYW1GbGlwLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7Cisg
ICAgfQorICAgIHJldHVybiBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAuZ2V0KCk7Cit9CisKIGNv
bnN0IENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJSR0JBUHJv
Z3JhbSkKQEAgLTc5Nyw2ICs4MDgsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xl
YW51cFNoYXJlZE9iamVjdHMoKQogICAgICAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS0+Y2xlYW51
cChtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX3BsdWdpbkxheWVyUHJvZ3JhbSkKICAgICAg
ICAgbV9wbHVnaW5MYXllclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBp
ZiAobV9wbHVnaW5MYXllclByb2dyYW1GbGlwKQorICAgICAgICBtX3BsdWdpbkxheWVyUHJvZ3Jh
bUZsaXAtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9yZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW0pCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5jbGVhbnVw
KG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEp
CkBAIC04MTgsNiArODMxLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBT
aGFyZWRPYmplY3RzKCkKICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS5jbGVhcigpOwogICAg
IG1fY2FudmFzTGF5ZXJQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV9wbHVnaW5MYXllclByb2dyYW0u
Y2xlYXIoKTsKKyAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAuY2xlYXIoKTsKICAgICBtX3Jl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbS5jbGVhcigpOwogICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQ
cm9ncmFtQUEuY2xlYXIoKTsKICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDBmZDg5NjVlMzM1ZGQwMjI5YWQ0
ZTk0YjYwMGIzZGU1YzZiZDYyYTAuLjQyZWRkZjA5ZmFhYWUyMWRhMjgxZWZlNWMzMTI3YzY2YWYz
MWY1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjYsNiArMTI2
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxl
QUEqIHRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpOwogICAgIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBs
OjpQcm9ncmFtKiBjYW52YXNMYXllclByb2dyYW0oKTsKICAgICBjb25zdCBDQ1BsdWdpbkxheWVy
SW1wbDo6UHJvZ3JhbSogcGx1Z2luTGF5ZXJQcm9ncmFtKCk7CisgICAgY29uc3QgQ0NQbHVnaW5M
YXllckltcGw6OlByb2dyYW1GbGlwKiBwbHVnaW5MYXllclByb2dyYW1GbGlwKCk7CiAgICAgY29u
c3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgp
OwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQ
cm9ncmFtKCk7CiAKQEAgLTIwNSw2ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQTsK
ICAgICBPd25QdHI8Q0NDYW52YXNMYXllckltcGw6OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9n
cmFtOwogICAgIE93blB0cjxDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbT4gbV9wbHVnaW5MYXll
clByb2dyYW07CisgICAgT3duUHRyPENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtRmxpcD4gbV9w
bHVnaW5MYXllclByb2dyYW1GbGlwOwogICAgIE93blB0cjxDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQ
cm9ncmFtPiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NSZW5kZXJT
dXJmYWNlOjpQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtOwogICAgIE93blB0cjxDQ1Jl
bmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtQUE+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDIwMTQ2ODc1NTgzMTFkZjA4
NTczNGM0YmM1OGI0YTdiZGEzMDdmMmUuLjQxYWZkNzk1MDMxZjBkMjJmNWM2Mjc0ODUyYjZhMmVl
MWIxYmJjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC01NSw2ICs1
NSwxMyBAQCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVtOjpjcmVh
dGVDQ0xheWVySW1wbCgpCiB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCh1
bnNpZ25lZCBpZCkKIHsKICAgICBtX3RleHR1cmVJZCA9IGlkOworICAgIHNldE5lZWRzQ29tbWl0
KCk7Cit9CisKK3ZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6c2V0RmxpcChib29sIGZsaXApCit7
CisgICAgbV9mbGlwID0gZmxpcDsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIFBs
dWdpbkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpA
QCAtNjMsNiArNzAsNyBAQCB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQogCiAgICAgQ0NQbHVnaW5MYXllckltcGwqIHBsdWdpbkxh
eWVyID0gc3RhdGljX2Nhc3Q8Q0NQbHVnaW5MYXllckltcGwqPihsYXllcik7CiAgICAgcGx1Z2lu
TGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7CisgICAgcGx1Z2luTGF5ZXItPnNldEZs
aXAobV9mbGlwKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDE4
MzRkZmQ4MjZiOWQxMjQyZDJmOTQ0MjM5NzU4NGU3NWFjZTY0ZGQuLjEzZjVkYWNmNDVlN2FmNWIz
YTljN2JhM2NlNGQ2YjhkOGFiOTJjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgK
QEAgLTQzLDEyICs0MywxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNp
Z25lZCB0ZXh0dXJlSWQpOwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dHVyZUlkOyB9CisgICAgdm9pZCBzZXRGbGlwKGJvb2wpOworICAgIGJvb2wgZmxpcCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmxpcDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0
aWVzVG8oQ0NMYXllckltcGwqKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNp
dCBQbHVnaW5MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSopOworCitwcml2YXRlOgogICAg
IHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIGJvb2wgbV9mbGlwOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVn
aW5MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCmluZGV4IDY0YTg4NGRhZDY2Zjg4YjkxMjNjNjRm
ZTAwM2I2ZDI3OTNmM2M0YTkuLmVkNTEwNGM1NDM2NTk1YmE0YmI1N2I0MGU3NWJlNjg5N2FkM2Q5
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKQEAgLTM0LDExICszNCwz
MSBAQAogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAorbmFtZXNwYWNlIHsKKworc3RydWN0IFBsdWdpblByb2dyYW1CaW5kaW5nIHsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBQcm9ncmFtPiB2b2lkIHNldChQcm9ncmFtKiBwcm9ncmFtKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7Cisg
ICAgICAgIHByb2dyYW1JZCA9IHByb2dyYW0tPnByb2dyYW0oKTsKKyAgICAgICAgc2FtcGxlckxv
Y2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKTsKKyAg
ICAgICAgbWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2Nh
dGlvbigpOworICAgICAgICBhbHBoYUxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIo
KS5hbHBoYUxvY2F0aW9uKCk7CisgICAgfQorICAgIGludCBwcm9ncmFtSWQ7CisgICAgaW50IHNh
bXBsZXJMb2NhdGlvbjsKKyAgICBpbnQgbWF0cml4TG9jYXRpb247CisgICAgaW50IGFscGhhTG9j
YXRpb247Cit9OworCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBDQ1BsdWdpbkxheWVySW1wbDo6Q0NQbHVnaW5MYXllckltcGwoaW50IGlkKQogICAg
IDogQ0NMYXllckltcGwoaWQpCiAgICAgLCBtX3RleHR1cmVJZCgwKQorICAgICwgbV9mbGlwKHRy
dWUpCiB7CiB9CiAKQEAgLTQ5LDggKzY5LDEyIEBAIENDUGx1Z2luTGF5ZXJJbXBsOjp+Q0NQbHVn
aW5MYXllckltcGwoKQogdm9pZCBDQ1BsdWdpbkxheWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcHJvZ3JhbSA9
IGxheWVyUmVuZGVyZXItPnBsdWdpbkxheWVyUHJvZ3JhbSgpOwotICAgIEFTU0VSVChwcm9ncmFt
ICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOworICAgIFBsdWdpblByb2dyYW1CaW5kaW5nIGJp
bmRpbmc7CisgICAgaWYgKG1fZmxpcCkKKyAgICAgICAgYmluZGluZy5zZXQobGF5ZXJSZW5kZXJl
ci0+cGx1Z2luTGF5ZXJQcm9ncmFtRmxpcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGJpbmRpbmcu
c2V0KGxheWVyUmVuZGVyZXItPnBsdWdpbkxheWVyUHJvZ3JhbSgpKTsKKwogICAgIEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
MCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpKTsKQEAgLTYyLDExICs4NiwxMSBAQCB2b2lk
IENDUGx1Z2luTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcikKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBH
cmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19F
REdFKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5w
cm9ncmFtKCkpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dXNlUHJvZ3JhbShiaW5kaW5nLnByb2dyYW1JZCkpOworICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoYmluZGluZy5zYW1wbGVyTG9jYXRpb24sIDApKTsKICAg
ICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGRyYXdUcmFuc2Zvcm0oKSwgYm91bmRz
KCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksIGxheWVyUmVuZGVy
ZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxw
aGFMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGlu
Zy5tYXRyaXhMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJp
bmRpbmcuYWxwaGFMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0xKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggM2RiNzA2Y2Yw
MzRlMzI1OWYzYWYzMjYwNjU1MDljMDBmNDY5ZTZkNS4uNmRhOGJkMGQ2OTUwMDMzNDE0ODNmOTg5
Mzg2OTdlZjdhNjA3NDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBAIC00
MCwxMyArNDAsMTUgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1BsdWdpbkxheWVy
SW1wbCgpOwogCi0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgs
IEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFBy
b2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxw
aGE+IFByb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NU
ZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbUZsaXA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsK
IAogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKSB7IG1fdGV4dHVyZUlkID0gaWQ7
IH0KKyAgICB2b2lkIHNldEZsaXAoYm9vbCBmbGlwKSB7IG1fZmxpcCA9IGZsaXA7IH0KIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBDQ1BsdWdpbkxheWVySW1wbChpbnQpOwpAQCAtNTQsNiArNTYs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmco
KSBjb25zdCB7IHJldHVybiAiUGx1Z2luTGF5ZXIiOyB9CiAKICAgICB1bnNpZ25lZCBtX3RleHR1
cmVJZDsKKyAgICBib29sIG1fZmxpcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZmI0OGQ5ODg5MGI3NDg5NmNhNGZiZWIzNTNkMmU4ZmRiYmQ3ZjU3YS4uYThmMjg5OWJk
MDhkMGM4NWIyNjU5MDhlM2YyOGZjNjI3ODZhZWE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0xMC0xMyAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVyIGJh
Y2tlZCBieSBhIHRleHR1cmUgdG8gc3VwcG9ydCBhY2NlbGVyYXRlZCBjb250ZW50IGhvc3RpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMDg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllci5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bs
dWdpbkxheWVySW1wbC5oLgorICAgICAgICAoV2ViS2l0OjpXZWJBY2NlbGVyYXRlZENvbnRlbnRM
YXllcjo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
Y2NlbGVyYXRlZENvbnRlbnRMYXllcjo6fldlYkFjY2VsZXJhdGVkQ29udGVudExheWVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXI6Om9wZXJhdG9yPSk6Cisg
ICAgICAgICogc3JjL1dlYkFjY2VsZXJhdGVkQ29udGVudExheWVyLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXll
ckltcGwuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2VsZXJhdGVkQ29udGVudExheWVyOjpzZXRU
ZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllcjo6
dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXI6
OnNldEZsaXApOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllcjo6
ZmxpcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2VsZXJhdGVkQ29udGVudExheWVyOjpXZWJB
Y2NlbGVyYXRlZENvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2VsZXJhdGVk
Q29udGVudExheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2NlbGVyYXRl
ZENvbnRlbnRMYXllcjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJBY2NlbGVyYXRlZENvbnRlbnRM
YXllckltcGw+KToKKyAgICAgICAgKiBzcmMvV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBs
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZWxlcmF0
ZWRDb250ZW50TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllckltcGw6OldlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbDo6fldlYkFjY2Vs
ZXJhdGVkQ29udGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2VsZXJhdGVk
Q29udGVudExheWVySW1wbDo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNj
ZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsOjpub3RpZnlTeW5jUmVxdWlyZWQpOgor
ICAgICAgICAqIHNyYy9XZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllckltcGwuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5M
YXllckltcGwuaC4KKwogMjAxMS0xMC0xMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbGF5ZXJYIC8gbGF5ZXJZIGZyb20gdGhlIENo
cm9taXVtIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDAwYjNmOWVmMjQ5ZGE3
YWEzMzVhMGY3NDYxYmUyZDBlMzVjNDk4ZGEuLmMwMWRlNTQyNDFlYzJlODhjMGU3MmQ3ZjZjNWRm
YzFkNWJhYWFhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTEwNCw2ICsxMDQs
NyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvbWFjL1dlYlNjcmVlbkluZm9GYWN0b3J5Lmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvbWFjL1dlYlN1YnN0cmluZ1V0aWwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9tYWMvV2ViVGhlbWVFbmdpbmUuaCcsCisgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllci5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUuaCcsCkBAIC00MzksNiArNDQwLDkgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
QW5pbWF0aW9uQ29udHJvbGxlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFu
aW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkFjY2VsZXJhdGVkQ29udGVudExheWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmI5NWI1ZjQ5OGU4ZTI4ZDdhMWJjNjI5ZTY5MWYzNjQzOWZmM2Q1ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2VsZXJhdGVkQ29udGVudExh
eWVyLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQWNjZWxlcmF0ZWRDb250
ZW50TGF5ZXJfaAorI2RlZmluZSBXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllcl9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJMYXllci5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK2NsYXNzIFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbDsKK2NsYXNzIFdlYkxh
eWVyQ2xpZW50OworCitjbGFzcyBXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllciA6IHB1YmxpYyBX
ZWJMYXllciB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVy
IGNyZWF0ZShXZWJMYXllckNsaWVudCopOworCisgICAgV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5
ZXIoKSB7IH0KKyAgICBXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllcihjb25zdCBXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllciYgbGF5ZXIpIDogV2ViTGF5ZXIobGF5ZXIpIHsgfQorICAgIHZpcnR1
YWwgfldlYkFjY2VsZXJhdGVkQ29udGVudExheWVyKCkgeyB9CisgICAgV2ViQWNjZWxlcmF0ZWRD
b250ZW50TGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllciYg
bGF5ZXIpCisgICAgeworICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUZXh0dXJl
SWQodW5zaWduZWQpOworICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29u
c3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZsaXAoYm9vbCk7CisgICAgV0VCS0lUX0VY
UE9SVCBib29sIGZsaXAoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJBY2Nl
bGVyYXRlZENvbnRlbnRMYXllckltcGw+Jik7CisgICAgV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5
ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQWNjZWxlcmF0ZWRDb250ZW50
TGF5ZXJJbXBsPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJBY2NlbGVyYXRl
ZENvbnRlbnRMYXllckltcGw+KCkgY29uc3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZWxlcmF0ZWRDb250ZW50
TGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OWMwMTA5NTU1YzQ2ZWMyMGRkODkzY2M3YWFiZjdiYjNl
NmJmNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
Y2NlbGVyYXRlZENvbnRlbnRMYXllci5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllci5oIgor
CisjaW5jbHVkZSAiV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAi
V2ViRmxvYXRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBY2NlbGVyYXRlZENv
bnRlbnRMYXllciBXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllcjo6Y3JlYXRlKFdlYkxheWVyQ2xp
ZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVyKFdl
YkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbDo6Y3JlYXRlKGNsaWVudCkpOworfQorCit2b2lk
IFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVyOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7
CisgICAgdW53cmFwPFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbD4oKS0+c2V0VGV4dHVy
ZUlkKGlkKTsKK30KKwordW5zaWduZWQgV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXI6OnRleHR1
cmVJZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0VW53cmFwPFdlYkFjY2VsZXJhdGVkQ29u
dGVudExheWVySW1wbD4oKS0+dGV4dHVyZUlkKCk7Cit9CisKK3ZvaWQgV2ViQWNjZWxlcmF0ZWRD
b250ZW50TGF5ZXI6OnNldEZsaXAoYm9vbCBmbGlwKQoreworICAgIHVud3JhcDxXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllckltcGw+KCktPnNldEZsaXAoZmxpcCk7Cit9CisKK2Jvb2wgV2ViQWNj
ZWxlcmF0ZWRDb250ZW50TGF5ZXI6OmZsaXAoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdFVu
d3JhcDxXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllckltcGw+KCktPmZsaXAoKTsKK30KKworV2Vi
QWNjZWxlcmF0ZWRDb250ZW50TGF5ZXI6OldlYkFjY2VsZXJhdGVkQ29udGVudExheWVyKGNvbnN0
IFBhc3NSZWZQdHI8V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsPiYgbm9kZSkKKyAgICA6
IFdlYkxheWVyKG5vZGUpCit7Cit9CisKK1dlYkFjY2VsZXJhdGVkQ29udGVudExheWVyJiBXZWJB
Y2NlbGVyYXRlZENvbnRlbnRMYXllcjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8V2ViQWNj
ZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsPiYgbm9kZSkKK3sKKyAgICBtX3ByaXZhdGUgPSBub2Rl
OworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXI6Om9w
ZXJhdG9yIFBhc3NSZWZQdHI8V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsPigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1w
bCo+KG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2VsZXJhdGVkQ29u
dGVudExheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmYTA4YjkxZDdlNDViMTA2MDhiYjVkYTUx
Njk1OWQyMzFmMzVmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbC5jcHAKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBY2NlbGVyYXRlZENvbnRl
bnRMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNhbnZhcy5oIgorI2luY2x1ZGUgIldlYkxheWVyQ2xpZW50LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJBY2Nl
bGVyYXRlZENvbnRlbnRMYXllckltcGw+IFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbDo6
Y3JlYXRlKFdlYkxheWVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllckltcGwoY2xpZW50KSk7Cit9CisKK1dlYkFjY2Vs
ZXJhdGVkQ29udGVudExheWVySW1wbDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsKFdl
YkxheWVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBQbHVnaW5MYXllckNocm9taXVtKHRoaXMpCisg
ICAgLCBtX2NsaWVudChjbGllbnQpCit7CisgICAgc2V0RmxpcChmYWxzZSk7Cit9CisKK1dlYkFj
Y2VsZXJhdGVkQ29udGVudExheWVySW1wbDo6fldlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1w
bCgpCit7Cit9CisKK2Jvb2wgV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsOjpkcmF3c0Nv
bnRlbnQoKSBjb25zdAoreworICAgIHJldHVybiAhIXRleHR1cmVJZCgpOworfQorCit2b2lkIFdl
YkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbDo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmIGdjLCBjb25zdCBJbnRSZWN0JiBjbGlwKQoreworfQorCit2b2lkIFdlYkFjY2VsZXJhdGVk
Q29udGVudExheWVySW1wbDo6bm90aWZ5U3luY1JlcXVpcmVkKCkKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5ub3RpZnlOZWVkc0NvbXBvc2l0ZSgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQwZjE3
OTNkNjc2ZmRiYTY5ODBiZDQ2ZWVjYjA3ZjA1NTI3MjEyZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbC5o
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFjY2VsZXJhdGVkQ29udGVudExh
eWVySW1wbF9oCisjZGVmaW5lIFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbF9oCisKKyNp
bmNsdWRlICJQbHVnaW5MYXllckNocm9taXVtLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXllckNsaWVudDsKKworY2xhc3Mg
V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OlBsdWdpbkxh
eWVyQ2hyb21pdW0sIHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGUgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbD4gY3Jl
YXRlKFdlYkxheWVyQ2xpZW50Kik7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJBY2NlbGVyYXRlZENv
bnRlbnRMYXllckltcGwoV2ViTGF5ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5XZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwKTsK
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKCk7CisgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0OworCisgICAgV2ViTGF5ZXJDbGllbnQqIG1fY2xpZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJBY2NlbGVyYXRlZENv
bnRlbnRMYXllckltcGxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111099</attachid>
            <date>2011-10-14 15:43:22 -0700</date>
            <delta_ts>2011-10-14 17:44:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70084-20111014154321.patch</filename>
            <type>text/plain</type>
            <size>26636</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc0MzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjUzNDBiMTZmMjU2MDJi
Y2JlYzA5MTYxYWIzZDc0Yjk0NDNiYzM1Li4xNTMzM2MzMGQ4YWM4MDEyZjU5YzdmNjZkOGI3NzE5
NGU2NzI1NDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMTAtMTMgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllciBiYWNrZWQgYnkgYSB0ZXh0dXJlIHRvIHN1cHBvcnQgYWNjZWxlcmF0
ZWQgY29udGVudCBob3N0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MDA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcvIHRlc3RzCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9n
cmFtRmxpcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFu
dXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxh
eWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXll
ckNocm9taXVtOjpzZXRGbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVy
Q2hyb21pdW06OmZsaXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUGx1Z2luTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5ZXJJ
bXBsOjpDQ1BsdWdpbkxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BsdWdpbkxheWVy
SW1wbDo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
bHVnaW5MYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5ZXJJbXBsOjpz
ZXRGbGlwKToKKwogMjAxMS0xMC0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgI2luY2x1ZGUgb2YgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZS5oPiBpbiBhIHdpZGVseS11c2VkIGhlYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiZTBl
Nzk2MDZiYjI5M2JjMDBmYjNmZThkZDJmMjVlNjM2ZDhkYmQ5Li5iNWQ2NDgzYzk4ODg3YWJmOWY4
N2RkMjY5NWQzZTIwOTY2YmNmN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yMDgsNiArMjA4
LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIGhvbGQgY29udGV4dC1kZXBlbmRlbnQgcmVzb3VyY2Vz
IHN1Y2ggYXMgdGV4dHVyZXMuCiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsK
IAorICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKKwogICAgIEZsb2F0UmVjdCBtX2RpcnR5UmVj
dDsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX21hc2tMYXllcjsKQEAgLTIxOSw4ICsy
MjEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fbGF5ZXJJZDsKIAogcHJpdmF0ZToKLSAgICB2
b2lkIHNldE5lZWRzQ29tbWl0KCk7Ci0KICAgICB2b2lkIHNldFBhcmVudChMYXllckNocm9taXVt
Kik7CiAgICAgYm9vbCBoYXNBbmNlc3RvcihMYXllckNocm9taXVtKikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGM1MjVjMWQyM2ViZjY0Nzg4NTMy
ODgyMjcyZDg4MjJhZjVjYTY3YzAuLmE1MGZlZGRjNmE5MDNjNzk3ZDJhNjk0NTFkOTM4YmU4ZTQ2
YjNhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNzUyLDYg
Kzc1MiwxNyBAQCBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpwbHVnaW5MYXllclByb2dyYW0oKQogICAgIHJldHVybiBtX3BsdWdpbkxheWVy
UHJvZ3JhbS5nZXQoKTsKIH0KIAorY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlw
KiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnBsdWdpbkxheWVyUHJvZ3JhbUZsaXAoKQoreworICAg
IGlmICghbV9wbHVnaW5MYXllclByb2dyYW1GbGlwKQorICAgICAgICBtX3BsdWdpbkxheWVyUHJv
Z3JhbUZsaXAgPSBhZG9wdFB0cihuZXcgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlwKG1f
Y29udGV4dC5nZXQoKSkpOworICAgIGlmICghbV9wbHVnaW5MYXllclByb2dyYW1GbGlwLT5pbml0
aWFsaXplZCgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06
OnBsdWdpbkxheWVyUHJvZ3JhbUZsaXA6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAg
bV9wbHVnaW5MYXllclByb2dyYW1GbGlwLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7Cisg
ICAgfQorICAgIHJldHVybiBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAuZ2V0KCk7Cit9CisKIGNv
bnN0IENDVmlkZW9MYXllckltcGw6OlJHQkFQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpCiB7CiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJSR0JBUHJv
Z3JhbSkKQEAgLTc5Nyw2ICs4MDgsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xl
YW51cFNoYXJlZE9iamVjdHMoKQogICAgICAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS0+Y2xlYW51
cChtX2NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChtX3BsdWdpbkxheWVyUHJvZ3JhbSkKICAgICAg
ICAgbV9wbHVnaW5MYXllclByb2dyYW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBp
ZiAobV9wbHVnaW5MYXllclByb2dyYW1GbGlwKQorICAgICAgICBtX3BsdWdpbkxheWVyUHJvZ3Jh
bUZsaXAtPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKICAgICBpZiAobV9yZW5kZXJTdXJmYWNl
TWFza1Byb2dyYW0pCiAgICAgICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5jbGVhbnVw
KG1fY29udGV4dC5nZXQoKSk7CiAgICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEp
CkBAIC04MTgsNiArODMxLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBT
aGFyZWRPYmplY3RzKCkKICAgICBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS5jbGVhcigpOwogICAg
IG1fY2FudmFzTGF5ZXJQcm9ncmFtLmNsZWFyKCk7CiAgICAgbV9wbHVnaW5MYXllclByb2dyYW0u
Y2xlYXIoKTsKKyAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAuY2xlYXIoKTsKICAgICBtX3Jl
bmRlclN1cmZhY2VNYXNrUHJvZ3JhbS5jbGVhcigpOwogICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQ
cm9ncmFtQUEuY2xlYXIoKTsKICAgICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDBmZDg5NjVlMzM1ZGQwMjI5YWQ0
ZTk0YjYwMGIzZGU1YzZiZDYyYTAuLjQyZWRkZjA5ZmFhYWUyMWRhMjgxZWZlNWMzMTI3YzY2YWYz
MWY1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjYsNiArMTI2
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxl
QUEqIHRpbGVyUHJvZ3JhbVN3aXp6bGVBQSgpOwogICAgIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBs
OjpQcm9ncmFtKiBjYW52YXNMYXllclByb2dyYW0oKTsKICAgICBjb25zdCBDQ1BsdWdpbkxheWVy
SW1wbDo6UHJvZ3JhbSogcGx1Z2luTGF5ZXJQcm9ncmFtKCk7CisgICAgY29uc3QgQ0NQbHVnaW5M
YXllckltcGw6OlByb2dyYW1GbGlwKiBwbHVnaW5MYXllclByb2dyYW1GbGlwKCk7CiAgICAgY29u
c3QgQ0NWaWRlb0xheWVySW1wbDo6UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgp
OwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQ
cm9ncmFtKCk7CiAKQEAgLTIwNSw2ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsOjpQcm9ncmFtU3dpenpsZUFBPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQTsK
ICAgICBPd25QdHI8Q0NDYW52YXNMYXllckltcGw6OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9n
cmFtOwogICAgIE93blB0cjxDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbT4gbV9wbHVnaW5MYXll
clByb2dyYW07CisgICAgT3duUHRyPENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtRmxpcD4gbV9w
bHVnaW5MYXllclByb2dyYW1GbGlwOwogICAgIE93blB0cjxDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQ
cm9ncmFtPiBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NSZW5kZXJT
dXJmYWNlOjpQcm9ncmFtPiBtX3JlbmRlclN1cmZhY2VQcm9ncmFtOwogICAgIE93blB0cjxDQ1Jl
bmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtQUE+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDIwMTQ2ODc1NTgzMTFkZjA4
NTczNGM0YmM1OGI0YTdiZGEzMDdmMmUuLjEzODY4MWY5MGI3Y2I4M2VmYTUzN2I5YzMwNmQ2Yzg1
MWZlYjUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw2ICs0
NCw3IEBAIFBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2luTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsCiBQbHVnaW5MYXllckNocm9taXVtOjpQbHVn
aW5MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBMYXllckNo
cm9taXVtKGRlbGVnYXRlKQogICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fZmxpcHBlZCh0
cnVlKQogewogfQogCkBAIC01NSw2ICs1NiwxMyBAQCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBQ
bHVnaW5MYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiB2b2lkIFBsdWdpbkxheWVy
Q2hyb21pdW06OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKIHsKICAgICBtX3RleHR1cmVJZCA9
IGlkOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1
bTo6c2V0RmxpcHBlZChib29sIGZsaXBwZWQpCit7CisgICAgbV9mbGlwcGVkID0gZmxpcHBlZDsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtNjMsNiArNzEsNyBAQCB2b2lk
IFBsdWdpbkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQogCiAgICAgQ0NQbHVnaW5MYXllckltcGwqIHBsdWdpbkxheWVyID0gc3RhdGljX2Nhc3Q8Q0NQ
bHVnaW5MYXllckltcGwqPihsYXllcik7CiAgICAgcGx1Z2luTGF5ZXItPnNldFRleHR1cmVJZCht
X3RleHR1cmVJZCk7CisgICAgcGx1Z2luTGF5ZXItPnNldEZsaXBwZWQobV9mbGlwcGVkKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDE4MzRkZmQ4MjZiOWQxMjQy
ZDJmOTQ0MjM5NzU4NGU3NWFjZTY0ZGQuLmUzNWU2M2M0ZWY4YjgyNjI4MTQ2ZDA4OWRmZmZmYzIz
NGVhNjQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKQEAgLTQzLDEyICs0Mywx
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQp
OwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9
CisgICAgdm9pZCBzZXRGbGlwcGVkKGJvb2wpOworICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxpcHBlZDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBQbHVn
aW5MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSopOworCitwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fdGV4dHVyZUlkOworICAgIGJvb2wgbV9mbGlwcGVkOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5M
YXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCmluZGV4IDY0YTg4NGRhZDY2Zjg4YjkxMjNjNjRmZTAw
M2I2ZDI3OTNmM2M0YTkuLjZhZmU4MDEyNGI3OTdkMjE2MTc0ZjdmOGQ0OTNiZDg3N2VmZmVjYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUGx1Z2luTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKQEAgLTM0LDExICszNCwzMSBA
QAogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorbmFtZXNwYWNlIHsKKworc3RydWN0IFBsdWdpblByb2dyYW1CaW5kaW5nIHsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBQcm9ncmFtPiB2b2lkIHNldChQcm9ncmFtKiBwcm9ncmFtKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CisgICAg
ICAgIHByb2dyYW1JZCA9IHByb2dyYW0tPnByb2dyYW0oKTsKKyAgICAgICAgc2FtcGxlckxvY2F0
aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKTsKKyAgICAg
ICAgbWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlv
bigpOworICAgICAgICBhbHBoYUxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5h
bHBoYUxvY2F0aW9uKCk7CisgICAgfQorICAgIGludCBwcm9ncmFtSWQ7CisgICAgaW50IHNhbXBs
ZXJMb2NhdGlvbjsKKyAgICBpbnQgbWF0cml4TG9jYXRpb247CisgICAgaW50IGFscGhhTG9jYXRp
b247Cit9OworCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBDQ1BsdWdpbkxheWVySW1wbDo6Q0NQbHVnaW5MYXllckltcGwoaW50IGlkKQogICAgIDog
Q0NMYXllckltcGwoaWQpCiAgICAgLCBtX3RleHR1cmVJZCgwKQorICAgICwgbV9mbGlwcGVkKHRy
dWUpCiB7CiB9CiAKQEAgLTQ5LDggKzY5LDEyIEBAIENDUGx1Z2luTGF5ZXJJbXBsOjp+Q0NQbHVn
aW5MYXllckltcGwoKQogdm9pZCBDQ1BsdWdpbkxheWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcHJvZ3JhbSA9
IGxheWVyUmVuZGVyZXItPnBsdWdpbkxheWVyUHJvZ3JhbSgpOwotICAgIEFTU0VSVChwcm9ncmFt
ICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOworICAgIFBsdWdpblByb2dyYW1CaW5kaW5nIGJp
bmRpbmc7CisgICAgaWYgKG1fZmxpcHBlZCkKKyAgICAgICAgYmluZGluZy5zZXQobGF5ZXJSZW5k
ZXJlci0+cGx1Z2luTGF5ZXJQcm9ncmFtRmxpcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGJpbmRp
bmcuc2V0KGxheWVyUmVuZGVyZXItPnBsdWdpbkxheWVyUHJvZ3JhbSgpKTsKKwogICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpKTsKQEAgLTYyLDExICs4NiwxMSBAQCB2
b2lkIENDUGx1Z2luTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJS
ZW5kZXJlcikKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9T
LCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwogICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9U
T19FREdFKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFt
LT5wcm9ncmFtKCkpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShiaW5kaW5nLnByb2dyYW1JZCkpOworICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWkoYmluZGluZy5zYW1wbGVyTG9jYXRpb24sIDApKTsK
ICAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGRyYXdUcmFuc2Zvcm0oKSwgYm91
bmRzKCkud2lkdGgoKSwgYm91bmRzKCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksIGxheWVyUmVu
ZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
YWxwaGFMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlu
ZGluZy5tYXRyaXhMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJpbmRpbmcuYWxwaGFMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0xKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggM2RiNzA2
Y2YwMzRlMzI1OWYzYWYzMjYwNjU1MDljMDBmNDY5ZTZkNS4uNTYwZTE3NDdjYTE1NGQwZjk0N2Vi
YjMxNWFiYzQ4MThmMGVjNTY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBA
IC00MCwxMyArNDAsMTUgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1BsdWdpbkxh
eWVySW1wbCgpOwogCi0gICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NU
ZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVm
IFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
QWxwaGE+IFByb2dyYW07CisgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQ
b3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbUZsaXA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25z
dDsKIAogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKSB7IG1fdGV4dHVyZUlkID0g
aWQ7IH0KKyAgICB2b2lkIHNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKSB7IG1fZmxpcHBlZCA9IGZs
aXBwZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ1BsdWdpbkxheWVySW1wbChpbnQp
OwpAQCAtNTQsNiArNTYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5
ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiAiUGx1Z2luTGF5ZXIiOyB9CiAKICAgICB1
bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICBib29sIG1fZmxpcHBlZDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZmI0OGQ5ODg5MGI3NDg5NmNhNGZiZWIzNTNkMmU4ZmRi
YmQ3ZjU3YS4uYThmMjg5OWJkMDhkMGM4NWIyNjU5MDhlM2YyOGZjNjI3ODZhZWE2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0xMC0xMyAgQW50b2lu
ZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFdlYkFjY2VsZXJh
dGVkQ29udGVudExheWVyIGJhY2tlZCBieSBhIHRleHR1cmUgdG8gc3VwcG9ydCBhY2NlbGVyYXRl
ZCBjb250ZW50IGhvc3RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcwMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJBY2NlbGVyYXRlZENv
bnRlbnRMYXllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oLgorICAgICAgICAoV2ViS2l0OjpXZWJB
Y2NlbGVyYXRlZENvbnRlbnRMYXllcjo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllcjo6fldlYkFjY2VsZXJhdGVk
Q29udGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5
ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogc3JjL1dlYkFjY2VsZXJhdGVkQ29udGVudExheWVy
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZWxlcmF0
ZWRDb250ZW50TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2VsZXJhdGVk
Q29udGVudExheWVyOjpzZXRUZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllcjo6dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZWxl
cmF0ZWRDb250ZW50TGF5ZXI6OnNldEZsaXApOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllcjo6ZmxpcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2VsZXJhdGVk
Q29udGVudExheWVyOjpXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkFjY2VsZXJhdGVkQ29udGVudExheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllcjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJB
Y2NlbGVyYXRlZENvbnRlbnRMYXllckltcGw+KToKKyAgICAgICAgKiBzcmMvV2ViQWNjZWxlcmF0
ZWRDb250ZW50TGF5ZXJJbXBsLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaC4KKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBY2NlbGVyYXRlZENvbnRlbnRMYXllckltcGw6OldlYkFjY2VsZXJhdGVkQ29u
dGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2VsZXJhdGVkQ29udGVudExh
eWVySW1wbDo6fldlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkFjY2VsZXJhdGVkQ29udGVudExheWVySW1wbDo6ZHJhd3NDb250ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZWxlcmF0ZWRDb250ZW50TGF5ZXJJbXBsOjpub3Rp
ZnlTeW5jUmVxdWlyZWQpOgorICAgICAgICAqIHNyYy9XZWJBY2NlbGVyYXRlZENvbnRlbnRMYXll
ckltcGwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaC4KKwogMjAxMS0xMC0xMyAgSnVsaWVuIENoYWZm
cmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbGF5ZXJYIC8g
bGF5ZXJZIGZyb20gdGhlIENocm9taXVtIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IDAwYjNmOWVmMjQ5ZGE3YWEzMzVhMGY3NDYxYmUyZDBlMzVjNDk4ZGEuLmI2MGIzMGY3Mzli
YWVmYTgyZTE2ZTdjZGRhMzkzZTE3NDNjMTRmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKQEAgLTE2Myw2ICsxNjMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXhjZXB0
aW9uQ29kZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQu
aCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyUGFyYW1zLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViRmlsZUVycm9yLmgnLApAQCAtNDgzLDYgKzQ4NCw5IEBACiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJFbnRpdGllcy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMuaCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAnLAorICAgICAg
ICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYyMjhjODM4OTM3YTg3YTcyMjg4YTEzMmVmZmI4MzcxYTllZWE3MTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyX2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw7CitjbGFzcyBXZWJMYXll
ckNsaWVudDsKKworLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgbGF5ZXIgdGhhdCByZW5kZXJz
IGEgdGV4dHVyZSB0aGF0IGlzIGdlbmVyYXRlZAorLy8gZXh0ZXJuYWxseSAobm90IG1hbmFnZWQg
YnkgdGhlIFdlYkxheWVyVHJlZVZpZXcpLgorY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIg
OiBwdWJsaWMgV2ViTGF5ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJFeHRlcm5hbFRleHR1
cmVMYXllciBjcmVhdGUoV2ViTGF5ZXJDbGllbnQqKTsKKworICAgIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyKCkgeyB9CisgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoY29uc3QgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXImIGxheWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0KKyAgICB2aXJ0dWFs
IH5XZWJFeHRlcm5hbFRleHR1cmVMYXllcigpIHsgfQorICAgIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIGxheWVyKQorICAg
IHsKKyAgICAgICAgV2ViTGF5ZXI6OmFzc2lnbihsYXllcik7CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisKKyAgICAvLyBTZXRzIHRoZSB0ZXh0dXJlIGlkIHRoYXQgcmVwcmVzZW50cyB0
aGUgbGF5ZXIsIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlCisgICAgLy8gY29tcG9zaXRvciBjb250
ZXh0LgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpOworICAg
IFdFQktJVF9FWFBPUlQgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Q7CisKKyAgICAvLyBTZXRz
IHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRoZSBZIGRp
cmVjdGlvbiB3aGVuCisgICAgLy8gcmVuZGVyZWQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dEZsaXBwZWQoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGZsaXBwZWQoKSBjb25zdDsK
KworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+Jik7Cisg
ICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFz
c1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkgY29uc3Q7CisjZW5kaWYKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNjFkMDRlMmVjMGVjNDYwMTM3NjU4ODdj
NWU0NWI3NGY1ZTMwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllci5o
IgorCisjaW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAi
V2ViRmxvYXRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJFeHRlcm5hbFRleHR1
cmVMYXllciBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKFdlYkxheWVyQ2xpZW50KiBj
bGllbnQpCit7CisgICAgcmV0dXJuIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlKGNsaWVudCkpOworfQorCit2b2lkIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgdW53cmFwPFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4oKS0+c2V0VGV4dHVyZUlkKGlkKTsKK30KKwordW5z
aWduZWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnRleHR1cmVJZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNvbnN0VW53cmFwPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4oKS0+dGV4dHVy
ZUlkKCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldEZsaXBwZWQoYm9v
bCBmbGlwcGVkKQoreworICAgIHVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkt
PnNldEZsaXBwZWQoZmxpcHBlZCk7Cit9CisKK2Jvb2wgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6
OmZsaXBwZWQoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdFVud3JhcDxXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw+KCktPmZsaXBwZWQoKTsKK30KKworV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyKGNvbnN0IFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsPiYgbm9kZSkKKyAgICA6IFdlYkxheWVyKG5vZGUpCit7Cit9CisKK1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyJiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6b3BlcmF0b3I9
KGNvbnN0IFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYgbm9kZSkKK3sK
KyAgICBtX3ByaXZhdGUgPSBub2RlOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbCo+KG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFkZTQyMTBhZTk0OGJjYWNjYzBi
NDBlODMxNmQxOWE1MjZlOTc4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNhbnZhcy5oIgorI2luY2x1ZGUgIldlYkxheWVyQ2xpZW50LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGw+IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRl
KFdlYkxheWVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGwoY2xpZW50KSk7Cit9CisKK1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkxheWVyQ2xpZW50KiBj
bGllbnQpCisgICAgOiBQbHVnaW5MYXllckNocm9taXVtKHRoaXMpCisgICAgLCBtX2NsaWVudChj
bGllbnQpCit7CisgICAgc2V0RmxpcHBlZChmYWxzZSk7Cit9CisKK1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6fldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpCit7Cit9CisKK2Jvb2wg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQoKSBjb25zdAoreworICAg
IHJldHVybiAhIXRleHR1cmVJZCgpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbDo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGdjLCBjb25zdCBJbnRSZWN0JiBj
bGlwKQoreworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6bm90aWZ5U3lu
Y1JlcXVpcmVkKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5ub3Rp
ZnlOZWVkc0NvbXBvc2l0ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGY5YTk4NzI3Yzk3ZDliNWM5NTg3NDRjMjY5Yjg4NGQxODUzZTc2
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbF9oCisjZGVmaW5lIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbF9oCisKKyNpbmNsdWRlICJQbHVnaW5MYXllckNocm9taXVtLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXllckNs
aWVudDsKKworY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsIDogcHVibGljIFdlYkNv
cmU6OlBsdWdpbkxheWVyQ2hyb21pdW0sIHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGUg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbD4gY3JlYXRlKFdlYkxheWVyQ2xpZW50Kik7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwoV2ViTGF5ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5XZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlw
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKCk7CisgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0OworCisgICAgV2ViTGF5ZXJDbGllbnQqIG1fY2xpZW50
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111115</attachid>
            <date>2011-10-14 17:45:00 -0700</date>
            <delta_ts>2011-10-14 17:53:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70084-20111014174459.patch</filename>
            <type>text/plain</type>
            <size>26569</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc1MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NzI0OWQxODFjMzgzNjc2
ODc4ZDkyNDBmMTBmMjlmNGFlY2M1MTJlLi5mMjcyZDRjMzI3MTRjMTc1ZWM2MGUyZmVjNmVjYzll
ZmZjNGY1MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTAtMTQgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllciBiYWNrZWQgYnkgYSB0ZXh0dXJlIHRvIHN1cHBvcnQgYWNjZWxlcmF0
ZWQgY29udGVudCBob3N0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MDA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcvIHRlc3RzCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9n
cmFtRmxpcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFu
dXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxh
eWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
bkxheWVyQ2hyb21pdW06OnNldEZsaXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luTGF5ZXJDaHJvbWl1bTo6ZmxpcHBlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
bHVnaW5MYXllckltcGw6OkNDUGx1Z2luTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UGx1Z2luTGF5ZXJJbXBsOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5M
YXllckltcGw6OnNldEZsaXBwZWQpOgorCiAyMDExLTA5LTI4ICBSb2JlcnQgSG9nYW4gIDxyb2Jl
cnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXBsYWNlZCBlbGVtZW50cyBzcXVlZXplZCB3aGVu
IHdpZHRoIGlzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIGluc2lkZSBhIHRhYmxlIHdpdGggQXV0
byBsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiZTBlNzk2MDZiYjI5M2JjMDBmYjNmZThk
ZDJmMjVlNjM2ZDhkYmQ5Li5iNWQ2NDgzYzk4ODg3YWJmOWY4N2RkMjY5NWQzZTIwOTY2YmNmN2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yMDgsNiArMjA4LDggQEAgcHJvdGVjdGVkOgogICAg
IC8vIGhvbGQgY29udGV4dC1kZXBlbmRlbnQgcmVzb3VyY2VzIHN1Y2ggYXMgdGV4dHVyZXMuCiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAorICAgIHZvaWQgc2V0TmVlZHND
b21taXQoKTsKKwogICAgIEZsb2F0UmVjdCBtX2RpcnR5UmVjdDsKIAogICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBtX21hc2tMYXllcjsKQEAgLTIxOSw4ICsyMjEsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgaW50IG1fbGF5ZXJJZDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7
Ci0KICAgICB2b2lkIHNldFBhcmVudChMYXllckNocm9taXVtKik7CiAgICAgYm9vbCBoYXNBbmNl
c3RvcihMYXllckNocm9taXVtKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCmluZGV4IGM1MjVjMWQyM2ViZjY0Nzg4NTMyODgyMjcyZDg4MjJhZjVjYTY3YzAu
LmE1MGZlZGRjNmE5MDNjNzk3ZDJhNjk0NTFkOTM4YmU4ZTQ2YjNhNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNzUyLDYgKzc1MiwxNyBAQCBjb25zdCBDQ1Bs
dWdpbkxheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXll
clByb2dyYW0oKQogICAgIHJldHVybiBtX3BsdWdpbkxheWVyUHJvZ3JhbS5nZXQoKTsKIH0KIAor
Y29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlwKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnBsdWdpbkxheWVyUHJvZ3JhbUZsaXAoKQoreworICAgIGlmICghbV9wbHVnaW5MYXllclBy
b2dyYW1GbGlwKQorICAgICAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAgPSBhZG9wdFB0cihu
ZXcgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlwKG1fY29udGV4dC5nZXQoKSkpOworICAg
IGlmICghbV9wbHVnaW5MYXllclByb2dyYW1GbGlwLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAg
IFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnBsdWdpbkxheWVyUHJvZ3JhbUZs
aXA6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV9wbHVnaW5MYXllclByb2dyYW1G
bGlwLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtX3Bs
dWdpbkxheWVyUHJvZ3JhbUZsaXAuZ2V0KCk7Cit9CisKIGNvbnN0IENDVmlkZW9MYXllckltcGw6
OlJHQkFQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJSR0JBUHJvZ3Jh
bSgpCiB7CiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSkKQEAgLTc5Nyw2ICs4MDgs
OCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQog
ICAgICAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwog
ICAgIGlmIChtX3BsdWdpbkxheWVyUHJvZ3JhbSkKICAgICAgICAgbV9wbHVnaW5MYXllclByb2dy
YW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAobV9wbHVnaW5MYXllclByb2dy
YW1GbGlwKQorICAgICAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAtPmNsZWFudXAobV9jb250
ZXh0LmdldCgpKTsKICAgICBpZiAobV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0pCiAgICAgICAg
IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAg
ICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpCkBAIC04MTgsNiArODMxLDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBt
X3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS5jbGVhcigpOwogICAgIG1fY2FudmFzTGF5ZXJQcm9ncmFt
LmNsZWFyKCk7CiAgICAgbV9wbHVnaW5MYXllclByb2dyYW0uY2xlYXIoKTsKKyAgICBtX3BsdWdp
bkxheWVyUHJvZ3JhbUZsaXAuY2xlYXIoKTsKICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3Jh
bS5jbGVhcigpOwogICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEuY2xlYXIoKTsKICAg
ICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oCmluZGV4IDBmZDg5NjVlMzM1ZGQwMjI5YWQ0ZTk0YjYwMGIzZGU1YzZiZDYyYTAu
LjQyZWRkZjA5ZmFhYWUyMWRhMjgxZWZlNWMzMTI3YzY2YWYzMWY1MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjYsNiArMTI2LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlQUEqIHRpbGVyUHJvZ3JhbVN3aXp6
bGVBQSgpOwogICAgIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBjYW52YXNMYXll
clByb2dyYW0oKTsKICAgICBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcGx1Z2lu
TGF5ZXJQcm9ncmFtKCk7CisgICAgY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlw
KiBwbHVnaW5MYXllclByb2dyYW1GbGlwKCk7CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6
UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQcm9ncmFtKCk7CiAKQEAgLTIwNSw2
ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFt
U3dpenpsZUFBPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQTsKICAgICBPd25QdHI8Q0NDYW52YXNM
YXllckltcGw6OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9ncmFtOwogICAgIE93blB0cjxDQ1Bs
dWdpbkxheWVySW1wbDo6UHJvZ3JhbT4gbV9wbHVnaW5MYXllclByb2dyYW07CisgICAgT3duUHRy
PENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtRmxpcD4gbV9wbHVnaW5MYXllclByb2dyYW1GbGlw
OwogICAgIE93blB0cjxDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtPiBtX3JlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NSZW5kZXJTdXJmYWNlOjpQcm9ncmFtPiBtX3Jl
bmRlclN1cmZhY2VQcm9ncmFtOwogICAgIE93blB0cjxDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9n
cmFtQUE+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDIwMTQ2ODc1NTgzMTFkZjA4NTczNGM0YmM1OGI0YTdiZGEzMDdm
MmUuLjEzODY4MWY5MGI3Y2I4M2VmYTUzN2I5YzMwNmQ2Yzg1MWZlYjUxOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw2ICs0NCw3IEBAIFBhc3NSZWZQdHI8UGx1
Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxl
Z2F0ZSogZGVsCiBQbHVnaW5MYXllckNocm9taXVtOjpQbHVnaW5MYXllckNocm9taXVtKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAg
ICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fZmxpcHBlZCh0cnVlKQogewogfQogCkBAIC01NSw2
ICs1NiwxMyBAQCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVtOjpj
cmVhdGVDQ0xheWVySW1wbCgpCiB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnNldFRleHR1cmVJ
ZCh1bnNpZ25lZCBpZCkKIHsKICAgICBtX3RleHR1cmVJZCA9IGlkOworICAgIHNldE5lZWRzQ29t
bWl0KCk7Cit9CisKK3ZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6c2V0RmxpcHBlZChib29sIGZs
aXBwZWQpCit7CisgICAgbV9mbGlwcGVkID0gZmxpcHBlZDsKKyAgICBzZXROZWVkc0NvbW1pdCgp
OwogfQogCiB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ckltcGwqIGxheWVyKQpAQCAtNjMsNiArNzEsNyBAQCB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogCiAgICAgQ0NQbHVnaW5MYXll
ckltcGwqIHBsdWdpbkxheWVyID0gc3RhdGljX2Nhc3Q8Q0NQbHVnaW5MYXllckltcGwqPihsYXll
cik7CiAgICAgcGx1Z2luTGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7CisgICAgcGx1
Z2luTGF5ZXItPnNldEZsaXBwZWQobV9mbGlwcGVkKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDE4MzRkZmQ4MjZiOWQxMjQyZDJmOTQ0MjM5NzU4NGU3NWFjZTY0
ZGQuLmUzNWU2M2M0ZWY4YjgyNjI4MTQ2ZDA4OWRmZmZmYzIzNGVhNjQzYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmgKQEAgLTQzLDEyICs0MywxNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpOwogICAgIHVuc2lnbmVkIHRleHR1
cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisgICAgdm9pZCBzZXRGbGlwcGVk
KGJvb2wpOworICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKIAotcHJp
dmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBQbHVnaW5MYXllckNocm9taXVtKENDTGF5
ZXJEZWxlZ2F0ZSopOworCitwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAg
IGJvb2wgbV9mbGlwcGVkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwu
Y3BwCmluZGV4IDY0YTg4NGRhZDY2Zjg4YjkxMjNjNjRmZTAwM2I2ZDI3OTNmM2M0YTkuLjZhZmU4
MDEyNGI3OTdkMjE2MTc0ZjdmOGQ0OTNiZDg3N2VmZmVjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bs
dWdpbkxheWVySW1wbC5jcHAKQEAgLTM0LDExICszNCwzMSBAQAogI2luY2x1ZGUgImNjL0NDUHJv
eHkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIHsKKwor
c3RydWN0IFBsdWdpblByb2dyYW1CaW5kaW5nIHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBQcm9ncmFt
PiB2b2lkIHNldChQcm9ncmFtKiBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByb2dy
YW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CisgICAgICAgIHByb2dyYW1JZCA9IHByb2dy
YW0tPnByb2dyYW0oKTsKKyAgICAgICAgc2FtcGxlckxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKTsKKyAgICAgICAgbWF0cml4TG9jYXRpb24gPSBw
cm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpOworICAgICAgICBhbHBoYUxv
Y2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7CisgICAg
fQorICAgIGludCBwcm9ncmFtSWQ7CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbjsKKyAgICBpbnQg
bWF0cml4TG9jYXRpb247CisgICAgaW50IGFscGhhTG9jYXRpb247Cit9OworCit9IC8vIGFub255
bW91cyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ1BsdWdpbkxheWVySW1w
bDo6Q0NQbHVnaW5MYXllckltcGwoaW50IGlkKQogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAg
LCBtX3RleHR1cmVJZCgwKQorICAgICwgbV9mbGlwcGVkKHRydWUpCiB7CiB9CiAKQEAgLTQ5LDgg
KzY5LDEyIEBAIENDUGx1Z2luTGF5ZXJJbXBsOjp+Q0NQbHVnaW5MYXllckltcGwoKQogdm9pZCBD
Q1BsdWdpbkxheWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBjb25zdCBD
Q1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnBsdWdp
bkxheWVyUHJvZ3JhbSgpOwotICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxp
emVkKCkpOworICAgIFBsdWdpblByb2dyYW1CaW5kaW5nIGJpbmRpbmc7CisgICAgaWYgKG1fZmxp
cHBlZCkKKyAgICAgICAgYmluZGluZy5zZXQobGF5ZXJSZW5kZXJlci0+cGx1Z2luTGF5ZXJQcm9n
cmFtRmxpcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGJpbmRpbmcuc2V0KGxheWVyUmVuZGVyZXIt
PnBsdWdpbkxheWVyUHJvZ3JhbSgpKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bV90ZXh0dXJlSWQpKTsKQEAgLTYyLDExICs4NiwxMSBAQCB2b2lkIENDUGx1Z2luTGF5ZXJJbXBs
OjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CiAKLSAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
c2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJv
Z3JhbShiaW5kaW5nLnByb2dyYW1JZCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtMWkoYmluZGluZy5zYW1wbGVyTG9jYXRpb24sIDApKTsKICAgICBsYXllclJlbmRlcmVyLT5k
cmF3VGV4dHVyZWRRdWFkKGRyYXdUcmFuc2Zvcm0oKSwgYm91bmRzKCkud2lkdGgoKSwgYm91bmRz
KCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksIGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5
UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZy5tYXRyaXhMb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcuYWxwaGFMb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVn
aW5MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggM2RiNzA2Y2YwMzRlMzI1OWYzYWYzMjYwNjU1
MDljMDBmNDY5ZTZkNS4uNTYwZTE3NDdjYTE1NGQwZjk0N2ViYjMxNWFiYzQ4MThmMGVjNTY1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQbHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBAIC00MCwxMyArNDAsMTUgQEAgcHVi
bGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1BsdWdpbkxheWVySW1wbCgpOwogCi0gICAgdHlw
ZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdC
QVRleEZsaXBBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRl
eFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07CisgICAg
dHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVy
UkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbUZsaXA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhM
YXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9w
ZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4
dHVyZUlkKHVuc2lnbmVkIGlkKSB7IG1fdGV4dHVyZUlkID0gaWQ7IH0KKyAgICB2b2lkIHNldEZs
aXBwZWQoYm9vbCBmbGlwcGVkKSB7IG1fZmxpcHBlZCA9IGZsaXBwZWQ7IH0KIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDQ1BsdWdpbkxheWVySW1wbChpbnQpOwpAQCAtNTQsNiArNTYsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25z
dCB7IHJldHVybiAiUGx1Z2luTGF5ZXIiOyB9CiAKICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsK
KyAgICBib29sIG1fZmxpcHBlZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMWEyMjhlZGVmYWZiZDIzNzY1NDc0ZDRjNTgzODVkNDdhYTQ1Y2IwYy4uMmQzMTdjMzhmNDk4
NjA1ZjM1YzJmMmY2ZDQ5ZWE5ZDFlZjEwOTZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMyBAQAorMjAxMS0xMC0xNCAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVyIGJhY2tl
ZCBieSBhIHRleHR1cmUgdG8gc3VwcG9ydCBhY2NlbGVyYXRlZCBjb250ZW50IGhvc3RpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMDg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6On5XZWJF
eHRlcm5hbFRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmguCisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1
cmVMYXllcjo6c2V0VGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI6OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpzZXRGbGlwcGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OmZsaXBwZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXll
cjo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsPik6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGx1Z2luTGF5ZXJJbXBsLmguCisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmRyYXdzQ29u
dGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bDo6bm90aWZ5U3luY1JlcXVpcmVkKToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmguCisKIDIwMTEtMTAtMTQgIERtaXRyeSBM
b21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRl
eCAxODYxMWE2M2E1ZTk1YzNhNDJmZjBiODM5ZjFjMjFiMTg0MzhiZmE5Li4zZjQ2YTI0YWMzODc1
MTMwODBmYzc2ZjU3OGJjZDA2NzlkZDMwNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CkBAIC0xNjMsNiArMTYzLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4Y2VwdGlv
bkNvZGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50Lmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVFcnJvci5oJywKQEAgLTQ4Myw2ICs0ODQsOSBAQAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RW50aXRpZXMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkVudGl0aWVzLmgnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMjI4YzgzODkzN2E4N2E3MjI4OGExMzJlZmZiODM3MWE5ZWVhNzE2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcl9oCisjZGVmaW5lIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyX2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkxheWVyLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOworY2xhc3MgV2ViTGF5ZXJD
bGllbnQ7CisKKy8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBh
IHRleHR1cmUgdGhhdCBpcyBnZW5lcmF0ZWQKKy8vIGV4dGVybmFsbHkgKG5vdCBtYW5hZ2VkIGJ5
IHRoZSBXZWJMYXllclRyZWVWaWV3KS4KK2NsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIDog
cHVibGljIFdlYkxheWVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIgY3JlYXRlKFdlYkxheWVyQ2xpZW50Kik7CisKKyAgICBXZWJFeHRlcm5hbFRleHR1cmVM
YXllcigpIHsgfQorICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKGNvbnN0IFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyJiBsYXllcikgOiBXZWJMYXllcihsYXllcikgeyB9CisgICAgdmlydHVhbCB+
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXll
ciYgb3BlcmF0b3I9KGNvbnN0IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyJiBsYXllcikKKyAgICB7
CisgICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgLy8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0aGF0IHJlcHJlc2VudHMgdGhl
IGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQorICAgIC8vIGNvbXBvc2l0b3IgY29udGV4
dC4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKTsKKyAgICBX
RUJLSVRfRVhQT1JUIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0OworCisgICAgLy8gU2V0cyB3
aGV0aGVyIG9yIG5vdCB0aGUgdGV4dHVyZSBzaG91bGQgYmUgZmxpcHBlZCBpbiB0aGUgWSBkaXJl
Y3Rpb24gd2hlbgorICAgIC8vIHJlbmRlcmVkLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRG
bGlwcGVkKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBmbGlwcGVkKCkgY29uc3Q7CisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllcihj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYpOworICAg
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NS
ZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPigpIGNvbnN0OworI2VuZGlmCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTYxZDA0ZTJlYzBlYzQ2MDEzNzY1ODg3YzVl
NDViNzRmNWUzMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCIK
KworI2luY2x1ZGUgIldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIgorI2luY2x1ZGUgIldl
YkZsb2F0UmVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZShXZWJMYXllckNsaWVudCogY2xp
ZW50KQoreworICAgIHJldHVybiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcihXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OmNyZWF0ZShjbGllbnQpKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcjo6c2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQoreworICAgIHVud3JhcDxXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPnNldFRleHR1cmVJZChpZCk7Cit9CisKK3Vuc2ln
bmVkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjp0ZXh0dXJlSWQoKSBjb25zdAoreworICAgIHJl
dHVybiBjb25zdFVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPnRleHR1cmVJ
ZCgpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRGbGlwcGVkKGJvb2wg
ZmxpcHBlZCkKK3sKKyAgICB1bndyYXA8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPigpLT5z
ZXRGbGlwcGVkKGZsaXBwZWQpOworfQorCitib29sIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpm
bGlwcGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RVbndyYXA8V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsPigpLT5mbGlwcGVkKCk7Cit9CisKK1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcihjb25zdCBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbD4mIG5vZGUpCisgICAgOiBXZWJMYXllcihub2RlKQoreworfQorCitXZWJF
eHRlcm5hbFRleHR1cmVMYXllciYgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6Om9wZXJhdG9yPShj
b25zdCBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4mIG5vZGUpCit7Cisg
ICAgbV9wcml2YXRlID0gbm9kZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbD4oKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGwqPihtX3ByaXZhdGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNDc4NmUyMTBhYmU2ZjZkNzEyMDM2
OTQ1NjFkMTk3NmIwNjgzMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCkBAIC0wLDAgKzEsNjggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJDYW52YXMuaCIKKyNpbmNsdWRlICJXZWJMYXllckNsaWVudC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsPiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNyZWF0ZShX
ZWJMYXllckNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKGNsaWVudCkpOworfQorCitXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbChXZWJMYXllckNsaWVudCogY2xp
ZW50KQorICAgIDogUGx1Z2luTGF5ZXJDaHJvbWl1bSh0aGlzKQorICAgICwgbV9jbGllbnQoY2xp
ZW50KQoreworICAgIHNldEZsaXBwZWQoZmFsc2UpOworfQorCitXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKQoreworfQorCitib29sIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6ZHJhd3NDb250ZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gISF0ZXh0dXJlSWQoKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGw6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpCit7Cit9
CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpub3RpZnlTeW5jUmVxdWlyZWQo
KQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeU5lZWRzQ29t
cG9zaXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZjlhOTg3MjdjOTdkOWI1Yzk1ODc0NGMyNjliODg0ZDE4NTNlNzZmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsX2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gK
KworI2luY2x1ZGUgIlBsdWdpbkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVyQ2xpZW50OworCitj
bGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2lu
TGF5ZXJDaHJvbWl1bSwgcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJEZWxlZ2F0ZSB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBjcmVh
dGUoV2ViTGF5ZXJDbGllbnQqKTsKKworcHJvdGVjdGVkOgorICAgIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbChXZWJMYXllckNsaWVudCopOworICAgIHZpcnR1YWwgfldlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbCgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXApOworICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgY29uc3Q7CisKKyAgICBXZWJMYXllckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111117</attachid>
            <date>2011-10-14 17:53:18 -0700</date>
            <delta_ts>2011-10-15 00:43:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70084-20111014175317.patch</filename>
            <type>text/plain</type>
            <size>26850</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc1MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NzI0OWQxODFjMzgzNjc2
ODc4ZDkyNDBmMTBmMjlmNGFlY2M1MTJlLi5mMjcyZDRjMzI3MTRjMTc1ZWM2MGUyZmVjNmVjYzll
ZmZjNGY1MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTAtMTQgIEFudG9p
bmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBXZWJBY2NlbGVy
YXRlZENvbnRlbnRMYXllciBiYWNrZWQgYnkgYSB0ZXh0dXJlIHRvIHN1cHBvcnQgYWNjZWxlcmF0
ZWQgY29udGVudCBob3N0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MDA4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcvIHRlc3RzCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cGx1Z2luTGF5ZXJQcm9n
cmFtRmxpcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFu
dXBTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxh
eWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
bkxheWVyQ2hyb21pdW06OnNldEZsaXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luTGF5ZXJDaHJvbWl1bTo6ZmxpcHBlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
bHVnaW5MYXllckltcGw6OkNDUGx1Z2luTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UGx1Z2luTGF5ZXJJbXBsOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5M
YXllckltcGw6OnNldEZsaXBwZWQpOgorCiAyMDExLTA5LTI4ICBSb2JlcnQgSG9nYW4gIDxyb2Jl
cnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXBsYWNlZCBlbGVtZW50cyBzcXVlZXplZCB3aGVu
IHdpZHRoIGlzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIGluc2lkZSBhIHRhYmxlIHdpdGggQXV0
byBsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiZTBlNzk2MDZiYjI5M2JjMDBmYjNmZThk
ZDJmMjVlNjM2ZDhkYmQ5Li5iNWQ2NDgzYzk4ODg3YWJmOWY4N2RkMjY5NWQzZTIwOTY2YmNmN2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yMDgsNiArMjA4LDggQEAgcHJvdGVjdGVkOgogICAg
IC8vIGhvbGQgY29udGV4dC1kZXBlbmRlbnQgcmVzb3VyY2VzIHN1Y2ggYXMgdGV4dHVyZXMuCiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAorICAgIHZvaWQgc2V0TmVlZHND
b21taXQoKTsKKwogICAgIEZsb2F0UmVjdCBtX2RpcnR5UmVjdDsKIAogICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBtX21hc2tMYXllcjsKQEAgLTIxOSw4ICsyMjEsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgaW50IG1fbGF5ZXJJZDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7
Ci0KICAgICB2b2lkIHNldFBhcmVudChMYXllckNocm9taXVtKik7CiAgICAgYm9vbCBoYXNBbmNl
c3RvcihMYXllckNocm9taXVtKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCmluZGV4IGM1MjVjMWQyM2ViZjY0Nzg4NTMyODgyMjcyZDg4MjJhZjVjYTY3YzAu
LmE1MGZlZGRjNmE5MDNjNzk3ZDJhNjk0NTFkOTM4YmU4ZTQ2YjNhNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNzUyLDYgKzc1MiwxNyBAQCBjb25zdCBDQ1Bs
dWdpbkxheWVySW1wbDo6UHJvZ3JhbSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwbHVnaW5MYXll
clByb2dyYW0oKQogICAgIHJldHVybiBtX3BsdWdpbkxheWVyUHJvZ3JhbS5nZXQoKTsKIH0KIAor
Y29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlwKiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnBsdWdpbkxheWVyUHJvZ3JhbUZsaXAoKQoreworICAgIGlmICghbV9wbHVnaW5MYXllclBy
b2dyYW1GbGlwKQorICAgICAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAgPSBhZG9wdFB0cihu
ZXcgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlwKG1fY29udGV4dC5nZXQoKSkpOworICAg
IGlmICghbV9wbHVnaW5MYXllclByb2dyYW1GbGlwLT5pbml0aWFsaXplZCgpKSB7CisgICAgICAg
IFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnBsdWdpbkxheWVyUHJvZ3JhbUZs
aXA6OmluaXRpYWxpemUiLCB0aGlzLCAwKTsKKyAgICAgICAgbV9wbHVnaW5MYXllclByb2dyYW1G
bGlwLT5pbml0aWFsaXplKG1fY29udGV4dC5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtX3Bs
dWdpbkxheWVyUHJvZ3JhbUZsaXAuZ2V0KCk7Cit9CisKIGNvbnN0IENDVmlkZW9MYXllckltcGw6
OlJHQkFQcm9ncmFtKiBMYXllclJlbmRlcmVyQ2hyb21pdW06OnZpZGVvTGF5ZXJSR0JBUHJvZ3Jh
bSgpCiB7CiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSkKQEAgLTc5Nyw2ICs4MDgs
OCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQog
ICAgICAgICBtX2NhbnZhc0xheWVyUHJvZ3JhbS0+Y2xlYW51cChtX2NvbnRleHQuZ2V0KCkpOwog
ICAgIGlmIChtX3BsdWdpbkxheWVyUHJvZ3JhbSkKICAgICAgICAgbV9wbHVnaW5MYXllclByb2dy
YW0tPmNsZWFudXAobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAobV9wbHVnaW5MYXllclByb2dy
YW1GbGlwKQorICAgICAgICBtX3BsdWdpbkxheWVyUHJvZ3JhbUZsaXAtPmNsZWFudXAobV9jb250
ZXh0LmdldCgpKTsKICAgICBpZiAobV9yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0pCiAgICAgICAg
IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtLT5jbGVhbnVwKG1fY29udGV4dC5nZXQoKSk7CiAg
ICAgaWYgKG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEpCkBAIC04MTgsNiArODMxLDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICBt
X3RpbGVyUHJvZ3JhbVN3aXp6bGVBQS5jbGVhcigpOwogICAgIG1fY2FudmFzTGF5ZXJQcm9ncmFt
LmNsZWFyKCk7CiAgICAgbV9wbHVnaW5MYXllclByb2dyYW0uY2xlYXIoKTsKKyAgICBtX3BsdWdp
bkxheWVyUHJvZ3JhbUZsaXAuY2xlYXIoKTsKICAgICBtX3JlbmRlclN1cmZhY2VNYXNrUHJvZ3Jh
bS5jbGVhcigpOwogICAgIG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUEuY2xlYXIoKTsKICAg
ICBtX3JlbmRlclN1cmZhY2VQcm9ncmFtLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oCmluZGV4IDBmZDg5NjVlMzM1ZGQwMjI5YWQ0ZTk0YjYwMGIzZGU1YzZiZDYyYTAu
LjQyZWRkZjA5ZmFhYWUyMWRhMjgxZWZlNWMzMTI3YzY2YWYzMWY1MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMjYsNiArMTI2LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IENDVGlsZWRMYXllckltcGw6OlByb2dyYW1Td2l6emxlQUEqIHRpbGVyUHJvZ3JhbVN3aXp6
bGVBQSgpOwogICAgIGNvbnN0IENDQ2FudmFzTGF5ZXJJbXBsOjpQcm9ncmFtKiBjYW52YXNMYXll
clByb2dyYW0oKTsKICAgICBjb25zdCBDQ1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcGx1Z2lu
TGF5ZXJQcm9ncmFtKCk7CisgICAgY29uc3QgQ0NQbHVnaW5MYXllckltcGw6OlByb2dyYW1GbGlw
KiBwbHVnaW5MYXllclByb2dyYW1GbGlwKCk7CiAgICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6
UkdCQVByb2dyYW0qIHZpZGVvTGF5ZXJSR0JBUHJvZ3JhbSgpOwogICAgIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OllVVlByb2dyYW0qIHZpZGVvTGF5ZXJZVVZQcm9ncmFtKCk7CiAKQEAgLTIwNSw2
ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsOjpQcm9ncmFt
U3dpenpsZUFBPiBtX3RpbGVyUHJvZ3JhbVN3aXp6bGVBQTsKICAgICBPd25QdHI8Q0NDYW52YXNM
YXllckltcGw6OlByb2dyYW0+IG1fY2FudmFzTGF5ZXJQcm9ncmFtOwogICAgIE93blB0cjxDQ1Bs
dWdpbkxheWVySW1wbDo6UHJvZ3JhbT4gbV9wbHVnaW5MYXllclByb2dyYW07CisgICAgT3duUHRy
PENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9ncmFtRmxpcD4gbV9wbHVnaW5MYXllclByb2dyYW1GbGlw
OwogICAgIE93blB0cjxDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9ncmFtPiBtX3JlbmRlclN1cmZh
Y2VNYXNrUHJvZ3JhbTsKICAgICBPd25QdHI8Q0NSZW5kZXJTdXJmYWNlOjpQcm9ncmFtPiBtX3Jl
bmRlclN1cmZhY2VQcm9ncmFtOwogICAgIE93blB0cjxDQ1JlbmRlclN1cmZhY2U6Ok1hc2tQcm9n
cmFtQUE+IG1fcmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtQUE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDIwMTQ2ODc1NTgzMTFkZjA4NTczNGM0YmM1OGI0YTdiZGEzMDdm
MmUuLjEzODY4MWY5MGI3Y2I4M2VmYTUzN2I5YzMwNmQ2Yzg1MWZlYjUxOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw2ICs0NCw3IEBAIFBhc3NSZWZQdHI8UGx1
Z2luTGF5ZXJDaHJvbWl1bT4gUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxl
Z2F0ZSogZGVsCiBQbHVnaW5MYXllckNocm9taXVtOjpQbHVnaW5MYXllckNocm9taXVtKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAg
ICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fZmxpcHBlZCh0cnVlKQogewogfQogCkBAIC01NSw2
ICs1NiwxMyBAQCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBQbHVnaW5MYXllckNocm9taXVtOjpj
cmVhdGVDQ0xheWVySW1wbCgpCiB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnNldFRleHR1cmVJ
ZCh1bnNpZ25lZCBpZCkKIHsKICAgICBtX3RleHR1cmVJZCA9IGlkOworICAgIHNldE5lZWRzQ29t
bWl0KCk7Cit9CisKK3ZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6c2V0RmxpcHBlZChib29sIGZs
aXBwZWQpCit7CisgICAgbV9mbGlwcGVkID0gZmxpcHBlZDsKKyAgICBzZXROZWVkc0NvbW1pdCgp
OwogfQogCiB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ckltcGwqIGxheWVyKQpAQCAtNjMsNiArNzEsNyBAQCB2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogCiAgICAgQ0NQbHVnaW5MYXll
ckltcGwqIHBsdWdpbkxheWVyID0gc3RhdGljX2Nhc3Q8Q0NQbHVnaW5MYXllckltcGwqPihsYXll
cik7CiAgICAgcGx1Z2luTGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7CisgICAgcGx1
Z2luTGF5ZXItPnNldEZsaXBwZWQobV9mbGlwcGVkKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDE4MzRkZmQ4MjZiOWQxMjQyZDJmOTQ0MjM5NzU4NGU3NWFjZTY0
ZGQuLmUzNWU2M2M0ZWY4YjgyNjI4MTQ2ZDA4OWRmZmZmYzIzNGVhNjQzYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmgKQEAgLTQzLDEyICs0MywxNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpOwogICAgIHVuc2lnbmVkIHRleHR1
cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisgICAgdm9pZCBzZXRGbGlwcGVk
KGJvb2wpOworICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKIAotcHJp
dmF0ZToKK3Byb3RlY3RlZDoKICAgICBleHBsaWNpdCBQbHVnaW5MYXllckNocm9taXVtKENDTGF5
ZXJEZWxlZ2F0ZSopOworCitwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAg
IGJvb2wgbV9mbGlwcGVkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwu
Y3BwCmluZGV4IDY0YTg4NGRhZDY2Zjg4YjkxMjNjNjRmZTAwM2I2ZDI3OTNmM2M0YTkuLjZhZmU4
MDEyNGI3OTdkMjE2MTc0ZjdmOGQ0OTNiZDg3N2VmZmVjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bs
dWdpbkxheWVySW1wbC5jcHAKQEAgLTM0LDExICszNCwzMSBAQAogI2luY2x1ZGUgImNjL0NDUHJv
eHkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIHsKKwor
c3RydWN0IFBsdWdpblByb2dyYW1CaW5kaW5nIHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBQcm9ncmFt
PiB2b2lkIHNldChQcm9ncmFtKiBwcm9ncmFtKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByb2dy
YW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7CisgICAgICAgIHByb2dyYW1JZCA9IHByb2dy
YW0tPnByb2dyYW0oKTsKKyAgICAgICAgc2FtcGxlckxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKTsKKyAgICAgICAgbWF0cml4TG9jYXRpb24gPSBw
cm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpOworICAgICAgICBhbHBoYUxv
Y2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7CisgICAg
fQorICAgIGludCBwcm9ncmFtSWQ7CisgICAgaW50IHNhbXBsZXJMb2NhdGlvbjsKKyAgICBpbnQg
bWF0cml4TG9jYXRpb247CisgICAgaW50IGFscGhhTG9jYXRpb247Cit9OworCit9IC8vIGFub255
bW91cyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ1BsdWdpbkxheWVySW1w
bDo6Q0NQbHVnaW5MYXllckltcGwoaW50IGlkKQogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAg
LCBtX3RleHR1cmVJZCgwKQorICAgICwgbV9mbGlwcGVkKHRydWUpCiB7CiB9CiAKQEAgLTQ5LDgg
KzY5LDEyIEBAIENDUGx1Z2luTGF5ZXJJbXBsOjp+Q0NQbHVnaW5MYXllckltcGwoKQogdm9pZCBD
Q1BsdWdpbkxheWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKLSAgICBjb25zdCBD
Q1BsdWdpbkxheWVySW1wbDo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnBsdWdp
bkxheWVyUHJvZ3JhbSgpOwotICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxp
emVkKCkpOworICAgIFBsdWdpblByb2dyYW1CaW5kaW5nIGJpbmRpbmc7CisgICAgaWYgKG1fZmxp
cHBlZCkKKyAgICAgICAgYmluZGluZy5zZXQobGF5ZXJSZW5kZXJlci0+cGx1Z2luTGF5ZXJQcm9n
cmFtRmxpcCgpKTsKKyAgICBlbHNlCisgICAgICAgIGJpbmRpbmcuc2V0KGxheWVyUmVuZGVyZXIt
PnBsdWdpbkxheWVyUHJvZ3JhbSgpKTsKKwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bV90ZXh0dXJlSWQpKTsKQEAgLTYyLDExICs4NiwxMSBAQCB2b2lkIENDUGx1Z2luTGF5ZXJJbXBs
OjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CiAKLSAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKLSAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
c2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJv
Z3JhbShiaW5kaW5nLnByb2dyYW1JZCkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlm
b3JtMWkoYmluZGluZy5zYW1wbGVyTG9jYXRpb24sIDApKTsKICAgICBsYXllclJlbmRlcmVyLT5k
cmF3VGV4dHVyZWRRdWFkKGRyYXdUcmFuc2Zvcm0oKSwgYm91bmRzKCkud2lkdGgoKSwgYm91bmRz
KCkuaGVpZ2h0KCksIGRyYXdPcGFjaXR5KCksIGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5
UXVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZy5tYXRyaXhMb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcuYWxwaGFMb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVn
aW5MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggM2RiNzA2Y2YwMzRlMzI1OWYzYWYzMjYwNjU1
MDljMDBmNDY5ZTZkNS4uNTYwZTE3NDdjYTE1NGQwZjk0N2ViYjMxNWFiYzQ4MThmMGVjNTY1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQbHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBAIC00MCwxMyArNDAsMTUgQEAgcHVi
bGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1BsdWdpbkxheWVySW1wbCgpOwogCi0gICAgdHlw
ZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdC
QVRleEZsaXBBbHBoYT4gUHJvZ3JhbTsKKyAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRl
eFNoYWRlclBvc1RleCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07CisgICAg
dHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVy
UkdCQVRleEZsaXBBbHBoYT4gUHJvZ3JhbUZsaXA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhM
YXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9w
ZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4
dHVyZUlkKHVuc2lnbmVkIGlkKSB7IG1fdGV4dHVyZUlkID0gaWQ7IH0KKyAgICB2b2lkIHNldEZs
aXBwZWQoYm9vbCBmbGlwcGVkKSB7IG1fZmxpcHBlZCA9IGZsaXBwZWQ7IH0KIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDQ1BsdWdpbkxheWVySW1wbChpbnQpOwpAQCAtNTQsNiArNTYsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25z
dCB7IHJldHVybiAiUGx1Z2luTGF5ZXIiOyB9CiAKICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsK
KyAgICBib29sIG1fZmxpcHBlZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMWEyMjhlZGVmYWZiZDIzNzY1NDc0ZDRjNTgzODVkNDdhYTQ1Y2IwYy4uMmQzMTdjMzhmNDk4
NjA1ZjM1YzJmMmY2ZDQ5ZWE5ZDFlZjEwOTZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMyBAQAorMjAxMS0xMC0xNCAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgQWRkIFdlYkFjY2VsZXJhdGVkQ29udGVudExheWVyIGJhY2tl
ZCBieSBhIHRleHR1cmUgdG8gc3VwcG9ydCBhY2NlbGVyYXRlZCBjb250ZW50IGhvc3RpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMDg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6On5XZWJF
eHRlcm5hbFRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmguCisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1
cmVMYXllcjo6c2V0VGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI6OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpzZXRGbGlwcGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OmZsaXBwZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXll
cjo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsPik6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGx1Z2luTGF5ZXJJbXBsLmguCisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmRyYXdzQ29u
dGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bDo6bm90aWZ5U3luY1JlcXVpcmVkKToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmguCisKIDIwMTEtMTAtMTQgIERtaXRyeSBM
b21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAxMjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRl
eCAxODYxMWE2M2E1ZTk1YzNhNDJmZjBiODM5ZjFjMjFiMTg0MzhiZmE5Li4zZjQ2YTI0YWMzODc1
MTMwODBmYzc2ZjU3OGJjZDA2NzlkZDMwNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CkBAIC0xNjMsNiArMTYzLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4Y2VwdGlv
bkNvZGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50Lmgn
LAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVFcnJvci5oJywKQEAgLTQ4Myw2ICs0ODQsOSBAQAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RW50aXRpZXMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkVudGl0aWVzLmgnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwJywKKyAgICAgICAg
ICAgICAgICAnc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41M2RkZDg1YzM4MDZmNzQwNmFiZWVmZTI5Y2Y3N2MyYmVkOTUxYTFmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcl9oCisjZGVmaW5lIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyX2gKKworI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkxheWVyLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOworY2xhc3MgV2ViTGF5ZXJD
bGllbnQ7CisKKy8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBh
IHRleHR1cmUgdGhhdCBpcyBnZW5lcmF0ZWQKKy8vIGV4dGVybmFsbHkgKG5vdCBtYW5hZ2VkIGJ5
IHRoZSBXZWJMYXllclRyZWVWaWV3KS4KKy8vIFRoZSB0ZXh0dXJlIHdpbGwgYmUgdXNlZCBieSB0
aGUgV2ViTGF5ZXJUcmVlVmlldyBkdXJpbmcgY29tcG9zaXRpbmcgcGFzc2VzLgorLy8gV2hlbiBp
biBzaW5nbGUtdGhyZWFkIG1vZGUsIHRoaXMgbWVhbnMgZHVyaW5nIFdlYkxheWVyVHJlZVZpZXc6
OmNvbXBvc2l0ZSgpLgorLy8gV2hlbiB1c2luZyB0aGUgdGhyZWFkZWQgY29tcG9zaXRvciwgdGhp
cyBjYW4gbWVhbiBhdCBhbiBhcmJpdHJhcnkgdGltZSB1bnRpbAorLy8gdGhlIFdlYkxheWVyVHJl
ZVZpZXcgaXMgZGVzdHJveWVkLgorY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgOiBwdWJs
aWMgV2ViTGF5ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJFeHRlcm5hbFRleHR1cmVMYXll
ciBjcmVhdGUoV2ViTGF5ZXJDbGllbnQqKTsKKworICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
KCkgeyB9CisgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoY29uc3QgV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXImIGxheWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJF
eHRlcm5hbFRleHR1cmVMYXllcigpIHsgfQorICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyJiBv
cGVyYXRvcj0oY29uc3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIGxheWVyKQorICAgIHsKKyAg
ICAgICAgV2ViTGF5ZXI6OmFzc2lnbihsYXllcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICAvLyBTZXRzIHRoZSB0ZXh0dXJlIGlkIHRoYXQgcmVwcmVzZW50cyB0aGUgbGF5
ZXIsIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlCisgICAgLy8gY29tcG9zaXRvciBjb250ZXh0Lgor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpOworICAgIFdFQktJ
VF9FWFBPUlQgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIHdoZXRo
ZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRoZSBZIGRpcmVjdGlv
biB3aGVuCisgICAgLy8gcmVuZGVyZWQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZsaXBw
ZWQoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGZsaXBwZWQoKSBjb25zdDsKKworI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+Jik7CisgICAgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0
cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkgY29uc3Q7CisjZW5kaWYKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNjFkMDRlMmVjMGVjNDYwMTM3NjU4ODdjNWU0NWI3
NGY1ZTMwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIgorCisj
aW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiV2ViRmxv
YXRSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJFeHRlcm5hbFRleHR1cmVMYXll
ciBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKFdlYkxheWVyQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgcmV0dXJuIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6Y3JlYXRlKGNsaWVudCkpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgdW53cmFwPFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbD4oKS0+c2V0VGV4dHVyZUlkKGlkKTsKK30KKwordW5zaWduZWQg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnRleHR1cmVJZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNvbnN0VW53cmFwPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4oKS0+dGV4dHVyZUlkKCk7
Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldEZsaXBwZWQoYm9vbCBmbGlw
cGVkKQoreworICAgIHVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPnNldEZs
aXBwZWQoZmxpcHBlZCk7Cit9CisKK2Jvb2wgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmZsaXBw
ZWQoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdFVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw+KCktPmZsaXBwZWQoKTsKK30KKworV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6Oldl
YkV4dGVybmFsVGV4dHVyZUxheWVyKGNvbnN0IFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsPiYgbm9kZSkKKyAgICA6IFdlYkxheWVyKG5vZGUpCit7Cit9CisKK1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyJiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6b3BlcmF0b3I9KGNvbnN0
IFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYgbm9kZSkKK3sKKyAgICBt
X3ByaXZhdGUgPSBub2RlOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
PigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbCo+KG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM0Nzg2ZTIxMGFiZTZmNmQ3MTIwMzY5NDU2
MWQxOTc2YjA2ODMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGwuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNh
bnZhcy5oIgorI2luY2x1ZGUgIldlYkxheWVyQ2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw+IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlKFdlYkxh
eWVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwoY2xpZW50KSk7Cit9CisKK1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkxheWVyQ2xpZW50KiBjbGllbnQp
CisgICAgOiBQbHVnaW5MYXllckNocm9taXVtKHRoaXMpCisgICAgLCBtX2NsaWVudChjbGllbnQp
Cit7CisgICAgc2V0RmxpcHBlZChmYWxzZSk7Cit9CisKK1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbDo6fldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpCit7Cit9CisKK2Jvb2wgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQoKSBjb25zdAoreworICAgIHJldHVy
biAhIXRleHR1cmVJZCgpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6
cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikKK3sKK30KKwor
dm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6Om5vdGlmeVN5bmNSZXF1aXJlZCgpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5TmVlZHNDb21wb3Np
dGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRmOWE5ODcyN2M5N2Q5YjVjOTU4NzQ0YzI2OWI4ODRkMTg1M2U3NmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGwuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGxfaAorI2RlZmluZSBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxfaAorCisj
aW5jbHVkZSAiUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTGF5ZXJDbGllbnQ7CisKK2NsYXNz
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5MYXll
ckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+IGNyZWF0ZShX
ZWJMYXllckNsaWVudCopOworCitwcm90ZWN0ZWQ6CisgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsKFdlYkxheWVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsKCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcCk7CisgICAgdmlydHVh
bCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpOworICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKKworICAgIFdlYkxheWVyQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
X2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>