<?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>75778</bug_id>
          
          <creation_ts>2012-01-07 09:37:19 -0800</creation_ts>
          <short_desc>[Texmap] Enable css filters in TextureMapperGL</short_desc>
          <delta_ts>2012-05-02 11:26:21 -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>Layout and Rendering</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>
          <dependson>75779</dependson>
          <blocked>75677</blocked>
    
    <blocked>75918</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>achicu</cc>
    
    <cc>jturcotte</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531663</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-07 09:37:19 -0800</bug_when>
    <thetext>Hardware-accelerate CSS filters using shaders in TextureMapperGL.
This, for now, does not include CSS shaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612287</commentid>
    <comment_count>1</comment_count>
      <attachid>139364</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-28 10:22:59 -0700</bug_when>
    <thetext>Created attachment 139364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612290</commentid>
    <comment_count>2</comment_count>
      <attachid>139364</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-28 10:42:15 -0700</bug_when>
    <thetext>Comment on attachment 139364
Patch

Attachment 139364 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12558638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612291</commentid>
    <comment_count>3</comment_count>
      <attachid>139364</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-28 10:44:30 -0700</bug_when>
    <thetext>Comment on attachment 139364
Patch

Attachment 139364 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12555673</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612292</commentid>
    <comment_count>4</comment_count>
      <attachid>139365</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-28 10:49:14 -0700</bug_when>
    <thetext>Created attachment 139365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614207</commentid>
    <comment_count>5</comment_count>
      <attachid>139365</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-05-02 05:37:03 -0700</bug_when>
    <thetext>Comment on attachment 139365
Patch

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

Can&apos;t say much about the OpenGL code, but it looks alright. The rest are mostly nitpicks.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:541
&gt; +        if (!filter)
&gt; +            continue;

In which case can this happen? Ideally this shouldn&apos;t be there.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:212
&gt;      m_textureMapperShaderProgramMap.clear();
&gt; +#if ENABLE(CSS_FILTERS)
&gt; +    m_filterMap.clear();
&gt; +#endif

Wouldn&apos;t those be implicit anyway?

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:66
&gt; +#if USE(UI_SIDE_COMPOSITING) &amp;&amp; ENABLE(CSS_FILTERS)
&gt; +#include &lt;WebCore/FilterOperations.h&gt;
&gt; +#endif

Could you limit the guards in WebCoreArgumentCoders to ENABLE(CSS_FILTERS) only?
The Animation coders aren&apos;t guarded, you also wouldn&apos;t need to guard the include in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614215</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-02 05:56:06 -0700</bug_when>
    <thetext>
&gt; &gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:66
&gt; &gt; +#if USE(UI_SIDE_COMPOSITING) &amp;&amp; ENABLE(CSS_FILTERS)
&gt; &gt; +#include &lt;WebCore/FilterOperations.h&gt;
&gt; &gt; +#endif
&gt; 
&gt; Could you limit the guards in WebCoreArgumentCoders to ENABLE(CSS_FILTERS) only?
&gt; The Animation coders aren&apos;t guarded, you also wouldn&apos;t need to guard the include in that case.

The animation coders are guarded with PLATFORM(QT), to smfr&apos;s request. The above guard seems reasonable. If another ports wants to unguard them, they can go ahead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614219</commentid>
    <comment_count>7</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-05-02 06:02:40 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The animation coders are guarded with PLATFORM(QT), to smfr&apos;s request. The above guard seems reasonable. If another ports wants to unguard them, they can go ahead.

Ok I didn&apos;t see that, makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614226</commentid>
    <comment_count>8</comment_count>
      <attachid>139796</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-02 06:09:01 -0700</bug_when>
    <thetext>Created attachment 139796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614231</commentid>
    <comment_count>9</comment_count>
      <attachid>139796</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-05-02 06:23:07 -0700</bug_when>
    <thetext>Comment on attachment 139796
Patch

(In reply to comment #5)
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:212
&gt; &gt;      m_textureMapperShaderProgramMap.clear();
&gt; &gt; +#if ENABLE(CSS_FILTERS)
&gt; &gt; +    m_filterMap.clear();
&gt; &gt; +#endif
&gt; 
&gt; Wouldn&apos;t those be implicit anyway?

Any comment on this?
For the rest, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614238</commentid>
    <comment_count>10</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-02 06:28:28 -0700</bug_when>
    <thetext>
&gt; &gt; Wouldn&apos;t those be implicit anyway?
&gt; 
&gt; Any comment on this?
&gt; For the rest, r=me

Oh, thought I&apos;d removed them. I&apos;ll remove this before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614260</commentid>
    <comment_count>11</comment_count>
      <attachid>139806</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-02 06:56:34 -0700</bug_when>
    <thetext>Created attachment 139806
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614262</commentid>
    <comment_count>12</comment_count>
      <attachid>139806</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 06:59:35 -0700</bug_when>
    <thetext>Comment on attachment 139806
Patch for landing

Rejecting attachment 139806 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebKit2/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12595809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614277</commentid>
    <comment_count>13</comment_count>
      <attachid>139812</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-02 07:23:53 -0700</bug_when>
    <thetext>Created attachment 139812
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614320</commentid>
    <comment_count>14</comment_count>
      <attachid>139812</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 08:29:49 -0700</bug_when>
    <thetext>Comment on attachment 139812
Patch for Landing

Clearing flags on attachment: 139812

Committed r115838: &lt;http://trac.webkit.org/changeset/115838&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614322</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 08:29:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614363</commentid>
    <comment_count>16</comment_count>
      <attachid>139812</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-05-02 09:42:07 -0700</bug_when>
    <thetext>Comment on attachment 139812
Patch for Landing

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

Sorry for adding comments so late. I&apos;m not a reviewer, so feel free to ignore them :)

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:512
&gt; +    RefPtr&lt;StandardFilterProgram&gt; program = data().sharedGLData().textureMapperShaderManager.getShaderForFilter(filter);

Not an issue right now, but I suppose you will need multiple passes for the blur and drop-shadow (ie. vertical, horizontal)

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:521
&gt; +    glUniform1i(program-&gt;textureUniform(), 0);

Some GL commands have GL_CMD and some don&apos;t. Is there a reason not to use it here?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:214
&gt; +    glDetachShader(m_id, m_vertexShader);

Do you need to make the GL context current here? What thread is going to run the destructor? I suppose it&apos;s the same as the one for ~TextureMapperShaderManager.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:345
&gt; +    glGetShaderInfoLog(fragmentShader, 100, &amp;len, log);

The &quot;log&quot; seems to be required only for debugging reasons.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:418
&gt; +    program-&gt;prepare(filter);

It seems weird to call prepare in a method called &quot;getShaderForFilter&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614370</commentid>
    <comment_count>17</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-02 09:48:58 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 139812 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139812&amp;action=review
&gt; 
&gt; Sorry for adding comments so late. I&apos;m not a reviewer, so feel free to ignore them :)
Already committed, but you comments are always welcome!

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:512
&gt; &gt; +    RefPtr&lt;StandardFilterProgram&gt; program = data().sharedGLData().textureMapperShaderManager.getShaderForFilter(filter);
&gt; 
&gt; Not an issue right now, but I suppose you will need multiple passes for the blur and drop-shadow (ie. vertical, horizontal)
Yes. The idea would be that this function would get a &quot;pass&quot; number.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:521
&gt; &gt; +    glUniform1i(program-&gt;textureUniform(), 0);
&gt; 
&gt; Some GL commands have GL_CMD and some don&apos;t. Is there a reason not to use it here?
Just an oversight, no reason :)

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:214
&gt; &gt; +    glDetachShader(m_id, m_vertexShader);
&gt; 
&gt; Do you need to make the GL context current here? What thread is going to run the destructor? I suppose it&apos;s the same as the one for ~TextureMapperShaderManager.
Yes. TextureMapperGL is only created and destroyed in a thread where the context is available.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:345
&gt; &gt; +    glGetShaderInfoLog(fragmentShader, 100, &amp;len, log);
&gt; 
&gt; The &quot;log&quot; seems to be required only for debugging reasons.
Oh, forgot it in.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperShaderManager.cpp:418
&gt; &gt; +    program-&gt;prepare(filter);
&gt; 
&gt; It seems weird to call prepare in a method called &quot;getShaderForFilter&quot;.
I think we need to refactor TextureMapperShaderManager at some point... not sure how to go about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614409</commentid>
    <comment_count>18</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-02 10:35:40 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614410</commentid>
    <comment_count>19</comment_count>
      <attachid>139836</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-02 10:35:44 -0700</bug_when>
    <thetext>Created attachment 139836
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614469</commentid>
    <comment_count>20</comment_count>
      <attachid>139836</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 11:26:15 -0700</bug_when>
    <thetext>Comment on attachment 139836
Patch for landing

Clearing flags on attachment: 139836

Committed r115855: &lt;http://trac.webkit.org/changeset/115855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614470</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-02 11:26:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139364</attachid>
            <date>2012-04-28 10:22:59 -0700</date>
            <delta_ts>2012-04-28 10:49:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75778-20120428102257.patch</filename>
            <type>text/plain</type>
            <size>41154</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk2NjE1N2YzY2U0NzJj
NzIzZTg1ZGQ0MTI4OTA2NWE3YmY2Mzk5ZC4uZWNjZmI0MmExYzk4Zjc1YWNhMjhiNTRjMzVkZGMz
ZTcyNDEzZjgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA0LTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gRW5hYmxlIGNzcyBmaWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBjb2xvciBm
aWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTC4gQmx1ciBhbmQgc2hhZG93IHdvdWxkIGJlIGRvbmUg
aW4gYQorICAgICAgICBkaWZmZXJlbnQgcGF0Y2guCisKKyAgICAgICAgTW9kaWZpZWQgQml0bWFw
VGV4dHVyZTo6YXBwbHlGaWx0ZXJzIHRvIHJldHVybiBhIHRleHR1cmUsIHNpbmNlIEdMIGNhbm5v
dCBwYWludCBhIHRleHR1cmUKKyAgICAgICAgaW50byBpdHNlbGYuCisgICAgICAgIENyZWF0ZWQg
YSBzaGFkZXIgbWFwIGZvciBzdGFuZGFyZCBmaWx0ZXJzLCBzaW5jZSBhbGwgb2YgdGhlbSB3b3Jr
IG1vcmUgb3IgbGVzcyB0aGUgc2FtZSB3YXkKKyAgICAgICAgd2l0aCBhIHNpbmdsZSB1bmlmb3Jt
LiBBZGRlZCB0aGUgY29sb3JpemF0aW9uIHNoYWRlcnMgYmFzZWQgb24gdGhlIFczQyBmaWx0ZXIg
c3BlYywgYXMKKyAgICAgICAgYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiBGRUZpbHRlclJlbmRlcmVy
LmNwcCBhbmQgRkVDb2xvck1hdHJpeC5jcHAuCisgICAgICAgIFdlIHVzZSB0d28gc3dhcHBpbmcg
dGV4dHVyZXMgdG8gcmVuZGVyIHRoZSBmaWx0ZXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgdGVz
dHMgaW4gY3NzMy9maWx0ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6YWNx
dWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OmFwcGx5
RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdMOjpkcmF3RmlsdGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjph
cHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpiaW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAoQml0bWFwVGV4dHVyZUdMKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlG
aWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmg6CisgICAgICAgIChCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVTZWxmKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6On5UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
YW5kYXJkRmlsdGVyUHJvZ3JhbTo6flN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnByZXBhcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlckZvckZpbHRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0YW5kYXJkRmlsdGVyUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnZlcnRleEF0dHJp
Yik6CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnRleENvb3JkQXR0
cmliKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6dGV4dHVyZVVu
aWZvcm0pOgorICAgICAgICAoVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIpOgorCiAyMDEyLTA0
LTI3ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAg
ICAgW1RleG1hcF0gVGV4dHVyZU1hcHBlckxheWVyIHVzZXMgaW50ZXJtZWRpYXRlIHN1cmZhY2Vz
IHRvbyBlYWdlcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzY1MWVhZDgyZWY0NzIyNTAyNmM2M2E4OTNmMWYw
ZDczMmM4NTAyZS4uNjExNzE3OTQ5ZjUyODdmNjU3ODgzZjdiN2E1MThmZjRkZmYyYTNlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA0LTI4ICBObydhbSBSb3NlbnRoYWwgIDxu
b2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1hcF0gRW5hYmxlIGNzcyBm
aWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzgKKworICAgICAgICBBZGQgdGhlIHBsdW1iaW5nIGluIHRo
ZSB1aS1zaWRlIGNvbXBvc2l0aW5nIGNvZGUgaW4gUXQgdG8gc3VwcG9ydCBmaWx0ZXJzLgorICAg
ICAgICBTZXJpYWxpemUgdGhlIGZpbHRlciBvcGVyYXRpb25zIGZvciBhIGxheWVyIHdoZW4gaXQn
cyBjaGFuZ2VkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBD
KToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6
c2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXllclRy
ZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyRmlsdGVycyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChXZWJMYXll
clRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnN5bmNGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJH
cmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0OjpzeW5jTGF5ZXJGaWx0
ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0Lmg6
CisgICAgICAgIChMYXllclRyZWVIb3N0UXQpOgorCiAyMDEyLTA0LTI2ICBObydhbSBSb3NlbnRo
YWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIEEgR3Jh
cGhpY3NTdXJmYWNlIGluc3RhbmNlIGlzIGNyZWF0ZWQgd2l0aCBldmVyeSB1cGRhdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmNwcAppbmRleCAxOGZiMDg2NTBhZWZhMmRlZGFlZDM4N2VlNDdjOGMzZWEyYjA3ZDlm
Li5jZWU0NWI5NjkwOWIxOGJkZDFjMjBmYTFiY2Q2MGQyMzQ0OGVmYjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVy
ZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzCiAgICAgICAg
IG1fdGV4dHVyZVBvb2wuYXBwZW5kKHNlbGVjdGVkVGV4dHVyZSk7CiAgICAgfQogCi0gICAgc2Vs
ZWN0ZWRUZXh0dXJlLT5yZXNldChzaXplKTsKKyAgICBzZWxlY3RlZFRleHR1cmUtPnJlc2V0KHNp
emUsIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIHJldHVybiBzZWxlY3RlZFRl
eHR1cmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDA0NWIyYTgyOTM2ODMxNWFlODZlYjEyNzc1
YjYxNTkwY2JiYzE1ZDkuLmNhMzFkMTc2OTk3NmZkYmFjOGRlZjFkMGVhZGY2NTllZjI1OWM4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgaW5saW5lIGJv
b2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiAhKG1fZmxhZ3MgJiBTdXBwb3J0c0FscGhhKTsg
fQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZpcnR1YWwgdm9pZCBhcHBseUZpbHRl
cnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmKSB7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlG
aWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsgfQogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKaW5kZXggZmYzYzhhZDRhYTkzNTUwM2YyYTk0YTlhNzM1NTZiMWMxOGZj
YzgwNi4uYmVlN2IyMjVkZDgwNWNmZWEyNDg0ZmE0NDIwZmM2ZTMxNWIxOTA1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKQEAgLTUwMyw4ICs1MDMsNTIgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6
OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwg
Y28KICNlbmRpZgogCiAgICAgdXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCB0YXJnZXRSZWN0LCBv
ZmZzZXQsIGJ5dGVzUGVyTGluZSk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNvdXJj
ZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIGZpbHRlcikKK3sKKyAgICAvLyBGb3Igc3RhbmRhcmQgZmlsdGVycywgd2Ug
YWx3YXlzIGRyYXcgdGhlIHdob2xlIHRleHR1cmUgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbnMuCisg
ICAgUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRH
TERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJGb3JGaWx0ZXIoZmls
dGVyKTsKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZHJhd1RleHR1cmUoc291cmNlVGV4
dHVyZSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgc291cmNlVGV4dHVyZS5zaXplKCkp
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBHTF9DTUQoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFtLT52ZXJ0ZXhBdHRy
aWIoKSkpOworICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0tPnRl
eENvb3JkQXR0cmliKCkpKTsKKyAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
KSk7CisgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc3RhdGljX2Nhc3Q8
Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oc291cmNlVGV4dHVyZSkuaWQoKSkpOworICAgIGdsVW5p
Zm9ybTFpKHByb2dyYW0tPnRleHR1cmVVbmlmb3JtKCksIDApOworICAgIGNvbnN0IEdMZmxvYXQg
dGFyZ2V0VmVydGljZXNbXSA9IHstMSwgLTEsIDEsIC0xLCAxLCAxLCAtMSwgMX07CisgICAgY29u
c3QgR0xmbG9hdCBzb3VyY2VWZXJ0aWNlc1tdID0gezAsIDAsIDEsIDAsIDEsIDEsIDAsIDF9Owor
ICAgIEdMX0NNRChnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS0+dmVydGV4QXR0cmliKCks
IDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdGFyZ2V0VmVydGljZXMpKTsKKyAgICBHTF9DTUQo
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0tPnRleENvb3JkQXR0cmliKCksIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgc291cmNlVmVydGljZXMpKTsKKyAgICBHTF9DTUQoZ2xEaXNhYmxl
KEdMX0JMRU5EKSk7CisgICAgR0xfQ01EKGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAs
IDQpKTsKKyAgICBHTF9DTUQoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVy
dGV4QXR0cmliKCkpKTsKKyAgICBHTF9DTUQoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocHJv
Z3JhbS0+dGV4Q29vcmRBdHRyaWIoKSkpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IEJpdG1hcFRleHR1cmVHTDo6YXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRl
bnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiBwcmV2aW91c1N1cmZhY2UgPSBtX3RleHR1cmVNYXBwZXItPmRhdGEo
KS5jdXJyZW50U3VyZmFjZTsKKworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzb3VyY2UgPSB0
aGlzOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0YXJnZXQgPSBtX3RleHR1cmVNYXBwZXIt
PmFjcXVpcmVUZXh0dXJlRnJvbVBvb2wobV90ZXh0dXJlU2l6ZSk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZmlsdGVyID0gZmlsdGVycy5hdChpKTsKKyAgICAgICAgaWYgKCFmaWx0ZXIpCisgICAg
ICAgICAgICBjb250aW51ZTsKIAorICAgICAgICBtX3RleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNl
KHRhcmdldC5nZXQoKSk7CisgICAgICAgIG1fdGV4dHVyZU1hcHBlci0+ZHJhd0ZpbHRlcmVkKGkg
PyAqc291cmNlLmdldCgpIDogY29udGVudFRleHR1cmUsIGNvbnRlbnRUZXh0dXJlLCAqZmlsdGVy
KTsKKyAgICAgICAgc3RkOjpzd2FwKHNvdXJjZSwgdGFyZ2V0KTsKKyAgICB9CisKKyAgICBtX3Rl
eHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHByZXZpb3VzU3VyZmFjZS5nZXQoKSk7CisgICAgcmV0
dXJuIHNvdXJjZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNyZWF0ZVByb2plY3Rpb25NYXRyaXgoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBtaXJy
b3JlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBkNmNjZWVkMTc2NzY1NzExYjhkOTc2NzVh
MzIwMmY4NWM4MDRmYTZhLi40Mjc5NDk5ZmM2OWM5YmU5YTNjMzY1ODY1NjRkM2M1MzI3OGYzYmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC02NSw2ICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwbGF0Zm9ybVVwZGF0ZUNvbnRlbnRzKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgQWNjZWxlcmF0aW9uTW9kZSBhY2NlbGVyYXRp
b25Nb2RlKCkgY29uc3QgeyByZXR1cm4gT3BlbkdMTW9kZTsgfQogCisjaWYgRU5BQkxFKENTU19G
SUxURVJTKQorICAgIHZvaWQgZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNvdXJj
ZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb24mKTsKKyNlbmRpZgorCisKIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgQ2xpcFN0
YXRlIHsKQEAgLTExNiw2ICsxMjEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQ
b2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lKTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlG
aWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHTHVpbnQgbV9pZDsKICAgICBJ
bnRTaXplIG1fdGV4dHVyZVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
Y3BwCmluZGV4IGNkYzcyMmZiZWUxOTA2ODEzMWUzMjAwOWU5MWE0ODkzN2VkOTBiZjEuLjIwOGI1
MzQ5ZjcxMmE4ZWJhNzlhZjgwNzdjMzk2NTE4NjcyY2Y0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXI6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUs
IGNvbnN0IEYKIH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXZvaWQgQml0bWFwVGV4dHVy
ZUltYWdlQnVmZmVyOjphcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRl
eHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCitQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKGNvbnN0IEJp
dG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKQogewogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gcmVuZGVyZXIgPSBGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CiAgICAgcmVuZGVyZXItPnNldFNvdXJjZUltYWdl
UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjb250ZW50VGV4dHVyZS5zaXplKCkp
KTsKQEAgLTEyMiw2ICsxMjIsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBw
bHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLAogICAgIGNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VC
dWZmZXImPihjb250ZW50VGV4dHVyZSkubV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgSW50UG9pbnQ6Onplcm8oKSk7CiAgICAgcmVuZGVyZXItPmFwcGx5KCk7CiAgICAgbV9pbWFn
ZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIocmVuZGVyZXItPm91dHB1dCgpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCByZW5kZXJlci0+b3V0cHV0UmVjdCgpKTsKKyAgICByZXR1cm4gdGhpczsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXggMzdj
OThhYjhlOWI4NTE2YWYwMDQ0MTFkM2Y3NGI5OWQ5ZTE5ZjE2MS4uOGEwMzU2MjhlYjNlNDA4NDQz
NzFkYTYzNGZhODI1OTEyNjYxYTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZm
ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUpOwogI2lm
IEVOQUJMRShDU1NfRklMVEVSUykKLSAgICB2b2lkIGFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBU
ZXh0dXJlJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOworICAgIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gYXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAKaW5kZXggMmMxNThiY2NmYmU2MzVhNjQ1ZDM2YzliZjlmZmM0ZGE3NTBiNDM4OS4uYzQ5MzU2
NWVmNDdiNThiZWY4ZTVlMjU0OTU3Y2M0YjY5NjY2ZWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKQEAgLTMxMiw4ICszMTIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgVAogICAg
ICAgICBmaWx0ZXJTdXJmYWNlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9v
bCh0YXJnZXRSZWN0LnNpemUoKSk7CiAgICAgfQogCi0gICAgZmlsdGVyU3VyZmFjZS0+YXBwbHlG
aWx0ZXJzKCpzb3VyY2UsIGZpbHRlcnMpOwotICAgIHJldHVybiBmaWx0ZXJTdXJmYWNlOworICAg
IHJldHVybiBmaWx0ZXJTdXJmYWNlLT5hcHBseUZpbHRlcnMoKnNvdXJjZSwgZmlsdGVycyk7CiB9
CiAjZW5kaWYKIApAQCAtNDUwLDcgKzQ0OSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
eW5jQ29tcG9zaXRpbmdTdGF0ZVNlbGYoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdyCiAg
ICAgbV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSA9IGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuVHJh
bnNmb3JtKCk7CiAgICAgbV9zdGF0ZS5vcGFjaXR5ID0gZ3JhcGhpY3NMYXllci0+b3BhY2l0eSgp
OwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBtX3N0YXRlLmZpbHRlcnMgPSBncmFwaGlj
c0xheWVyLT5maWx0ZXJzKCk7CisgICAgaWYgKGNoYW5nZU1hc2sgJiBGaWx0ZXJDaGFuZ2UpCisg
ICAgICAgIG1fc3RhdGUuZmlsdGVycyA9IGdyYXBoaWNzTGF5ZXItPmZpbHRlcnMoKTsKICNlbmRp
ZgogICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCmluZGV4IDE1
YjFmNTE4ODFmN2M2MTk4ODkwZGI1Njg5ZjQzNjU3NDljNzVkMWEuLjlkOGEyMzYzMWJiZmFmN2I3
NDkwOGI1ZWNhMTRhNDE4ZTQxMGM0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyLmNwcApAQCAtMjA3LDggKzIwNywyMjMgQEAgVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXI6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCkKIFRleHR1cmVNYXBwZXJTaGFkZXJN
YW5hZ2VyOjp+VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKQogewogICAgIG1fdGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW1NYXAuY2xlYXIoKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisg
ICAgbV9maWx0ZXJNYXAuY2xlYXIoKTsKKyNlbmRpZgogfQogCisjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQorU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjp+U3RhbmRhcmRGaWx0ZXJQcm9ncmFtKCkKK3sK
KyAgICBnbERldGFjaFNoYWRlcihtX2lkLCBtX3ZlcnRleFNoYWRlcik7CisgICAgZ2xEZWxldGVT
aGFkZXIobV92ZXJ0ZXhTaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKG1faWQsIG1fZnJhZ21l
bnRTaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVyKG1fZnJhZ21lbnRTaGFkZXIpOworICAgIGds
RGVsZXRlUHJvZ3JhbShtX2lkKTsKK30KKworU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjpTdGFuZGFy
ZEZpbHRlclByb2dyYW0oRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUpCisgICAg
OiBtX2lkKDApCit7CisgICAgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAg
ICAgICAgIFZFUlRFWF9TSEFERVIoCisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV92
ZXJ0ZXg7CisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV90ZXhDb29yZDsKKyAgICAg
ICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgICAgICAg
ICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHZfdGV4Q29vcmQgPSB2ZWMyKGFfdGV4Q29vcmQpOworICAgICAgICAgICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IGFfdmVydGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisK
KyNkZWZpbmUgU1RBTkRBUkRfRklMVEVSKHguLi4pIFwKKyAgICAgICAgT0VTMl9QUkVDSVNJT05f
REVGSU5JVElPTlNcCisgICAgICAgIE9FUzJfRlJBR01FTlRfU0hBREVSX0RFRkFVTFRfUFJFQ0lT
SU9OXAorICAgICAgICAidmFyeWluZyBoaWdocCB2ZWMyIHZfdGV4Q29vcmQ7XG4iXAorICAgICAg
ICAidW5pZm9ybSBoaWdocCBmbG9hdCB1X2Ftb3VudDtcbiJcCisgICAgICAgICJ1bmlmb3JtIHNh
bXBsZXIyRCB1X3RleHR1cmU7XG4iXAorICAgICAgICAjeFwKKyAgICAgICAgInZvaWQgbWFpbih2
b2lkKVxuIHsgZ2xfRnJhZ0NvbG9yID0gc2hhZGUodGV4dHVyZTJEKHVfdGV4dHVyZSwgdl90ZXhD
b29yZCkpOyB9IgorCisgICAgY29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSAwOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6
CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAg
ICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBsb3dwIGZsb2F0IGFtb3VudCA9IDEuMCAtIHVfYW1vdW50OworICAgICAg
ICAgICAgICAgIHJldHVybiB2ZWM0KCgwLjIxMjYgKyAwLjc4NzQgKiBhbW91bnQpICogY29sb3Iu
ciArICgwLjcxNTIgLSAwLjcxNTIgKiBhbW91bnQpICogY29sb3IuZyArICgwLjA3MjIgLSAwLjA3
MjIgKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4y
MTI2IC0gMC4yMTI2ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43MTUyICsgMC4yODQ4ICogYW1v
dW50KSAqIGNvbG9yLmcgKyAoMC4wNzIyIC0gMC4wNzIyICogYW1vdW50KSAqIGNvbG9yLmIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjEyNiAtIDAuMjEyNiAqIGFtb3VudCkgKiBj
b2xvci5yICsgKDAuNzE1MiAtIDAuNzE1MiAqIGFtb3VudCkgKiBjb2xvci5nICsgKDAuMDcyMiAr
IDAuOTI3OCAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291
cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3Ag
dmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb3dwIGZsb2F0IGFt
b3VudCA9IDEuMCAtIHVfYW1vdW50OworICAgICAgICAgICAgICAgIHJldHVybiB2ZWM0KCgwLjM5
MyArIDAuNjA3ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43NjkgLSAwLjc2OSAqIGFtb3VudCkg
KiBjb2xvci5nICsgKDAuMTg5IC0gMC4xODkgKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoMC4zNDkgLSAwLjM0OSAqIGFtb3VudCkgKiBjb2xvci5yICsg
KDAuNjg2ICsgMC4zMTQgKiBhbW91bnQpICogY29sb3IuZyArICgwLjE2OCAtIDAuMTY4ICogYW1v
dW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjcyIC0gMC4y
NzIgKiBhbW91bnQpICogY29sb3IuciArICgwLjUzNCAtIDAuNTM0ICogYW1vdW50KSAqIGNvbG9y
LmcgKyAoMC4xMzEgKyAwLjg2OSAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGZy
YWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2
ZWM0IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdmVjNCgoMC4yMTMgKyAwLjc4NyAqIHVfYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43
MTUgLSAwLjcxNSAqIHVfYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIgLSAwLjA3MiAqIHVfYW1v
dW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjEzIC0gMC4y
MTMgKiB1X2Ftb3VudCkgKiBjb2xvci5yICsgKDAuNzE1ICsgMC4yODUgKiB1X2Ftb3VudCkgKiBj
b2xvci5nICsgKDAuMDcyIC0gMC4wNzIgKiB1X2Ftb3VudCkgKiBjb2xvci5iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgwLjIxMyAtIDAuMjEzICogdV9hbW91bnQpICogY29sb3IuciAr
ICgwLjcxNSAtIDAuNzE1ICogdV9hbW91bnQpICogY29sb3IuZyArICgwLjA3MiArIDAuOTI4ICog
dV9hbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5h
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNl
ID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3AgdmVj
NCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBoaWdocCBmbG9hdCBwaSA9
IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisgICAgICAgICAgICAgICAgaGlnaHAgZmxvYXQgYyA9
IGNvcyh1X2Ftb3VudCAqIHBpIC8gMTgwLjApOworICAgICAgICAgICAgICAgIGhpZ2hwIGZsb2F0
IHMgPSBzaW4odV9hbW91bnQgKiBwaSAvIDE4MC4wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dmVjNChjb2xvci5yICogKDAuMjEzICsgYyAqIDAuNzg3IC0gcyAqIDAuMjEzKSArIGNvbG9yLmcg
KiAoMC43MTUgLSBjICogMC43MTUgLSBzICogMC43MTUpICsgY29sb3IuYiAqICgwLjA3MiAtIGMg
KiAwLjA3MiArIHMgKiAwLjkyOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Iu
ciAqICgwLjIxMyAtIGMgKiAwLjIxMyArIHMgKiAwLjE0MykgKyBjb2xvci5nICogKDAuNzE1ICsg
YyAqIDAuMjg1ICsgcyAqIDAuMTQwKSArIGNvbG9yLmIgKiAoMC4wNzIgLSBjICogMC4wNzIgLSBz
ICogMC4yODMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLnIgKiAoMC4yMTMg
LSBjICogMC4yMTMgLSBzICogMC43ODcpICsgIGNvbG9yLmcgKiAoMC43MTUgLSBjICogMC43MTUg
KyBzICogMC43MTUpICsgY29sb3IuYiAqICgwLjA3MiArIGMgKiAwLjkyOCArIHMgKiAwLjA3Miks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuYSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZF
UlQ6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAg
ICAgICAgICAgbG93cCBmbG9hdCBpbnZlcnQobG93cCBmbG9hdCBuKSB7IHJldHVybiAoMS4wIC0g
bikgKiB1X2Ftb3VudCArIG4gKiAoMS4wIC0gdV9hbW91bnQpOyB9CisgICAgICAgICAgICBsb3dw
IHZlYzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiB2ZWM0KGludmVydChjb2xvci5yKSwgaW52ZXJ0KGNvbG9yLmcpLCBpbnZlcnQo
Y29sb3IuYiksIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICAgICAgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dwIHZl
YzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiB2ZWM0KGNvbG9yLnJnYiAqICgxLjAgKyB1X2Ftb3VudCksIGNvbG9yLmEpOworICAg
ICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRB
UkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCBmbG9hdCBjb250cmFzdChsb3dwIGZsb2F0IG4p
IHsgcmV0dXJuIChuIC0gMC41KSAqIHVfYW1vdW50ICsgMC41OyB9CisgICAgICAgICAgICBsb3dw
IHZlYzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiB2ZWM0KGNvbnRyYXN0KGNvbG9yLnIpLCBjb250cmFzdChjb2xvci5nKSwgY29u
dHJhc3QoY29sb3IuYiksIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAgICAg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dw
IHZlYzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiB2ZWM0KGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgKiB1X2Ft
b3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghZnJhZ21lbnRTaGFkZXJT
b3VyY2UpCisgICAgICAgIHJldHVybjsKKyAgICBHTHVpbnQgdmVydGV4U2hhZGVyID0gZ2xDcmVh
dGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUik7CisgICAgR0x1aW50IGZyYWdtZW50U2hhZGVyID0g
Z2xDcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSKTsKKyAgICBnbFNoYWRlclNvdXJjZSh2
ZXJ0ZXhTaGFkZXIsIDEsICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UsIDApOworICAgIGdsU2hhZGVyU291
cmNlKGZyYWdtZW50U2hhZGVyLCAxLCAmZnJhZ21lbnRTaGFkZXJTb3VyY2UsIDApOworICAgIEdM
Y2hhciBsb2dbMTAwXTsKKyAgICBHTGludCBsZW47CisgICAgR0x1aW50IHByb2dyYW1JRCA9IGds
Q3JlYXRlUHJvZ3JhbSgpOworICAgIGdsQ29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAg
IGdsQ29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgZ2xHZXRTaGFkZXJJbmZvTG9n
KGZyYWdtZW50U2hhZGVyLCAxMDAsICZsZW4sIGxvZyk7CisgICAgZ2xBdHRhY2hTaGFkZXIocHJv
Z3JhbUlELCB2ZXJ0ZXhTaGFkZXIpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW1JRCwgZnJh
Z21lbnRTaGFkZXIpOworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbUlEKTsKKworICAgIG1fdmVy
dGV4QXR0cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtSUQsICJhX3ZlcnRleCIpOwor
ICAgIG1fdGV4Q29vcmRBdHRyaWIgPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW1JRCwgImFf
dGV4Q29vcmQiKTsKKyAgICBtX3RleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtSUQsICJ1X3RleHR1cmUiKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpTRVBJQToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OklOVkVSVDoKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9Q
QUNJVFk6CisgICAgICAgIG1fdW5pZm9ybUxvY2F0aW9ucy5hbW91bnQgPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtSUQsICJ1X2Ftb3VudCIpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgbV9pZCA9IHByb2dyYW1JRDsKKyAgICBt
X3ZlcnRleFNoYWRlciA9IHZlcnRleFNoYWRlcjsKKyAgICBtX2ZyYWdtZW50U2hhZGVyID0gZnJh
Z21lbnRTaGFkZXI7Cit9CisKK1Bhc3NSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBTdGFu
ZGFyZEZpbHRlclByb2dyYW06OmNyZWF0ZShGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUg
dHlwZSkKK3sKKyAgICBSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gYWRv
cHRSZWYobmV3IFN0YW5kYXJkRmlsdGVyUHJvZ3JhbSh0eXBlKSk7CisgICAgaWYgKCFwcm9ncmFt
LT5tX2lkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBwcm9ncmFtOworfQorCit2
b2lkIFN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6cHJlcGFyZShjb25zdCBGaWx0ZXJPcGVyYXRpb24m
IG9wZXJhdGlvbikKK3sKKyAgICBkb3VibGUgYW1vdW50OworICAgIHN3aXRjaCAob3BlcmF0aW9u
LmdldE9wZXJhdGlvblR5cGUoKSkgeworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NB
TEU6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpTQVRVUkFURToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToK
KyAgICAgICAgYW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbiY+KG9wZXJhdGlvbikuYW1vdW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJS
SUdIVE5FU1M6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgorICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgorICAgICAgICBhbW91bnQgPSBzdGF0aWNfY2FzdDxj
b25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJj4ob3BlcmF0aW9uKS5h
bW91bnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGdsVXNlUHJvZ3JhbShtX2lkKTsKKyAgICBnbFVuaWZvcm0xZihtX3VuaWZvcm1M
b2NhdGlvbnMuYW1vdW50LCBhbW91bnQpOworfQorCitQYXNzUmVmUHRyPFN0YW5kYXJkRmlsdGVy
UHJvZ3JhbT4gVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlckZvckZpbHRlcihj
b25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlcikKK3sKKyAgICBSZWZQdHI8U3RhbmRhcmRGaWx0
ZXJQcm9ncmFtPiBwcm9ncmFtOworICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0
eXBlID0gZmlsdGVyLmdldE9wZXJhdGlvblR5cGUoKTsKKyAgICBGaWx0ZXJNYXA6Oml0ZXJhdG9y
IGl0ZXJhdG9yID0gbV9maWx0ZXJNYXAuZmluZCh0eXBlKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9maWx0ZXJNYXAuZW5kKCkpIHsKKyAgICAgICAgcHJvZ3JhbSA9IFN0YW5kYXJkRmlsdGVyUHJv
Z3JhbTo6Y3JlYXRlKHR5cGUpOworICAgICAgICBpZiAoIXByb2dyYW0pCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKworICAgICAgICBtX2ZpbHRlck1hcC5hZGQodHlwZSwgcHJvZ3JhbSk7CisgICAg
fSBlbHNlCisgICAgICAgIHByb2dyYW0gPSBpdGVyYXRvci0+c2Vjb25kOworCisgICAgcHJvZ3Jh
bS0+cHJlcGFyZShmaWx0ZXIpOworICAgIHJldHVybiBwcm9ncmFtOworfQorCisjZW5kaWYKIH07
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaAppbmRleCA1
YjM5YTA5MjhmMmJhZmMwMTE4M2JkNGQxYjQ2ZWNiN2MwYjk1ZWQwLi45ZDkxNzBlN2JiYTVjOWMy
ZjI0YTFjNjEyZWQ3ODExZWZjNjM4MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRl
ck1hbmFnZXIuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNp
bmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBCaXRtYXBUZXh0dXJlOwpAQCAtNjUsNiArNjksMzUgQEAgcHJvdGVjdGVkOgog
ICAgIEdMaW50IG1fb3BhY2l0eVZhcmlhYmxlOwogfTsKIAorI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKK2NsYXNzIFN0YW5kYXJkRmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YW5k
YXJkRmlsdGVyUHJvZ3JhbT4geworcHVibGljOgorICAgIHZpcnR1YWwgflN0YW5kYXJkRmlsdGVy
UHJvZ3JhbSgpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlKGNvbnN0IEZpbHRlck9wZXJhdGlv
biYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4gY3JlYXRl
KEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSk7CisgICAgR0x1aW50IHZlcnRleEF0dHJp
YigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4QXR0cmliOyB9CisgICAgR0x1aW50IHRleENvb3Jk
QXR0cmliKCkgY29uc3QgeyByZXR1cm4gbV90ZXhDb29yZEF0dHJpYjsgfQorICAgIEdMdWludCB0
ZXh0dXJlVW5pZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZVVuaWZvcm1Mb2NhdGlvbjsg
fQorcHJpdmF0ZToKKyAgICBTdGFuZGFyZEZpbHRlclByb2dyYW0oRmlsdGVyT3BlcmF0aW9uOjpP
cGVyYXRpb25UeXBlKTsKKyAgICBHTHVpbnQgbV9pZDsKKyAgICBHTHVpbnQgbV92ZXJ0ZXhTaGFk
ZXI7CisgICAgR0x1aW50IG1fZnJhZ21lbnRTaGFkZXI7CisgICAgR0x1aW50IG1fdmVydGV4QXR0
cmliOworICAgIEdMdWludCBtX3RleENvb3JkQXR0cmliOworICAgIEdMdWludCBtX3RleHR1cmVV
bmlmb3JtTG9jYXRpb247CisgICAgdW5pb24geworICAgICAgICBHTHVpbnQgYW1vdW50OworICAg
ICAgICBHTHVpbnQgc3RkZGV2OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgR0x1aW50
IHN0ZGRldjsKKyAgICAgICAgICAgIEdMdWludCBjb2xvcjsKKyAgICAgICAgICAgIEdMdWludCBv
ZmZzZXQ7CisgICAgICAgIH0gc2hhZG93OworICAgIH0gbV91bmlmb3JtTG9jYXRpb25zOworfTsK
KyNlbmRpZgorCiBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZSA6IHB1Ymxp
YyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGU+IGNyZWF0ZSgpOwpAQCAtMTAx
LDYgKzEzNCw4IEBAIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpOwog
ICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCk7CiAKKyAgICBQYXNzUmVm
UHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4gZ2V0U2hhZGVyRm9yRmlsdGVyKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiYpOworCiAgICAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gZ2V0U2hhZGVyUHJvZ3JhbShTaGFkZXJUeXBlIHNoYWRlclR5cGUpCiAgICAgewogICAgICAg
ICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW07CkBAIC0xMjgsNiAr
MTYzLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFNoYWRlclR5
cGUsIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4sIERlZmF1bHRIYXNoPGludD46
Okhhc2gsIEhhc2hUcmFpdHM8aW50PiA+IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtTWFwOwog
ICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtTWFwIG1fdGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW1NYXA7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdHlwZWRlZiBIYXNoTWFw
PEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJv
Z3JhbT4sIERlZmF1bHRIYXNoPGludD46Okhhc2gsIEhhc2hUcmFpdHM8aW50PiA+IEZpbHRlck1h
cDsKKyAgICBGaWx0ZXJNYXAgbV9maWx0ZXJNYXA7CisjZW5kaWYKKwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjNmEx
NjczYjRjZDQ1NDI0MTM5MGZiYTllNmI4YjU1N2IyYzI1MGQzLi44MDQ1NjhjMmQ0MzliYTFlNGU5
OWE5ZjZkZDRkZTNmNzk2MmNkMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNjEsNiArNjEsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgogI2VuZGlmCiAKKyNpZiBVU0UoVUlf
U0lERV9DT01QT1NJVElORykgJiYgRU5BQkxFKENTU19GSUxURVJTKQorI2luY2x1ZGUgPFdlYkNv
cmUvRmlsdGVyT3BlcmF0aW9ucy5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTI0MSw2ICsxMjQ1LDExMCBAQCBib29s
IEFyZ3VtZW50Q29kZXI8S2V5ZnJhbWVWYWx1ZUxpc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBXZWJDb3JlOgogCiAjZW5kaWYKIAorI2lmIFVTRShVSV9TSURFX0NPTVBPU0lU
SU5HKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
RmlsdGVyT3BlcmF0aW9ucz46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0
IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgZW5jb2Rlci0+ZW5j
b2RlVUludDMyKGZpbHRlcnMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZp
bHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0
ZXIgPSBmaWx0ZXJzLmF0KGkpOworICAgICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5
cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3BlcmF0aW9uVHlwZSgpOworICAgICAgICBlbmNvZGVyLT5l
bmNvZGVFbnVtKHR5cGUpOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlNFUElBOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgorICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkJSSUdIVE5FU1M6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoK
KyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICBlbmNv
ZGVyLT5lbmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPmFtb3VudCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIEFyZ3Vt
ZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJG
aWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5zdGREZXZpYXRpb24oKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAg
ICAgICAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNf
Y2FzdDxjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKyAgICAgICAg
ICAgIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2Nh
dGlvbigpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2
aWF0aW9uKCkpOworICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNv
ZGVyLCBzaGFkb3ctPmNvbG9yKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQor
Citib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRlY29kZShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpCit7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQz
MihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFJlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMgPSBmaWx0ZXJzLm9wZXJhdGlvbnMoKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEZpbHRlck9wZXJh
dGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlOworICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiBmaWx0ZXI7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bSh0eXBlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CisgICAgICAgICAgICBk
b3VibGUgdmFsdWU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2YWx1
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVyID0g
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpJTlZFUlQ6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgorICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAgICAgICAgICBkb3VibGUgdmFsdWU7CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2YWx1ZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVyID0gQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7CisgICAg
ICAgICAgICBMZW5ndGggbGVuZ3RoOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExl
bmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShs
ZW5ndGgsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBJbnRQb2ludCBs
b2NhdGlvbjsKKyAgICAgICAgICAgIGludDMyX3Qgc3RkRGV2aWF0aW9uOworICAgICAgICAgICAg
Q29sb3IgY29sb3I7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+Ojpk
ZWNvZGUoZGVjb2RlciwgbG9jYXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIoc3RkRGV2aWF0aW9uKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29k
ZXI8Q29sb3I+OjpkZWNvZGUoZGVjb2RlciwgY29sb3IpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xvciwgdHlwZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmlsdGVyKQorICAgICAgICAgICAgb3BlcmF0aW9u
cy5hcHBlbmQoZmlsdGVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDAzM2UxNzk0Y2JjMjdkOGNkNzk4OTgw
NmJhYzIzYjg4MTkyYjNkZDguLmQwMmY1ZmMxN2M4ZDRjNTU4YzIzMmU2ZjQ2NTBiMjc5YTJkZjRm
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTg1LDYgKzg1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0KICNlbmRpZgogCisjaWYg
VVNFKFVJX1NJREVfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShDU1NfRklMVEVSUykKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOworfQorI2VuZGlmCisKIG5h
bWVzcGFjZSBDb3JlSVBDIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0+IHsKQEAgLTMwMSw2ICszMDcsMTMgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6QW5pbWF0aW9uPiA+IHsKIH07CiAj
ZW5kaWYKIAorI2lmIFVTRShVSV9TSURFX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJh
dGlvbnM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3Qg
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7Cit9OworI2VuZGlmCisK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0PiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0
JiBrZXlmcmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVy
VHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9z
dFByb3h5LmNwcAppbmRleCBiZTUzNzQzNjFkZmFkOTFkMjVlZDRkMDM1YmYyNTg4YmU2NWU3Mjdj
Li45NjI0NGFlMGJhYzRiMTIxNjljMmViOGNmMGU5YTUyYTE2MTNlYTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMTA1LDYgKzEw
NSwxMyBAQCB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6c2V0Q29tcG9zaXRpbmdMYXllckNoaWxk
cmVuKFdlYkxheWVySUQgaWQsIGNvbnN0IFZlY3RvcgogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQo
JldlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuLCBtX3JlbmRlcmVyLmdldCgp
LCBpZCwgY2hpbGRyZW4pKTsKIH0KIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKK3ZvaWQgTGF5
ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyRmlsdGVycyhXZWJMYXllcklEIGlk
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIGRpc3BhdGNoVXBkYXRl
KGJpbmQoJldlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckZpbHRlcnMsIG1fcmVuZGVyZXIu
Z2V0KCksIGlkLCBmaWx0ZXJzKSk7Cit9CisjZW5kaWYKKwogdm9pZCBMYXllclRyZWVIb3N0UHJv
eHk6OmRpZFJlbmRlckZyYW1lKCkKIHsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZXZWJMYXll
clRyZWVSZW5kZXJlcjo6Zmx1c2hMYXllckNoYW5nZXMsIG1fcmVuZGVyZXIuZ2V0KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaAppbmRleCBjMDhk
NjM3ZjM0NjVlMzE0YTllZmYwNTBiNTdkZWI5M2QwMmRhYWNhLi4zZDY3YzczNmY0Y2VjYThkMjI4
NDk4MDgyODZiMzhjOTMyMDg4N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
eWVyVHJlZUhvc3RQcm94eS5oCkBAIC01MCw2ICs1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5MYXllclRyZWVIb3N0UHJveHkoKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW5nTGF5ZXJTdGF0
ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKTsKICAgICB2b2lkIHNldENvbXBvc2l0
aW5nTGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4mKTsK
KyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVyRmls
dGVycyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7CisjZW5k
aWYKICAgICB2b2lkIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIoV2ViTGF5ZXJJRCk7CiAgICAgdm9p
ZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDdhMWVlMzAwYWNhZDA4
NDM5ZjI5ZjJmZThmNWFkNTc4MzY0NmViMy4uMWNkYWUwZDMzNTBmOGIyZGM1NDJmMTkyOTA2ZWFl
ZjFmNjYwNjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJl
ZUhvc3RQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw2ICsyMSw5IEBACiBtZXNzYWdlcyAt
PiBMYXllclRyZWVIb3N0UHJveHkgewogICAgIFNldENvbXBvc2l0aW5nTGF5ZXJTdGF0ZSh1aW50
MzJfdCBpZCwgV2ViS2l0OjpXZWJMYXllckluZm8gbGF5ZXJJbmZvKQogICAgIFNldENvbXBvc2l0
aW5nTGF5ZXJDaGlsZHJlbih1aW50MzJfdCBpZCwgVmVjdG9yPHVpbnQzMl90PiBjaGlsZHJlbikK
KyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgU2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMo
dWludDMyX3QgaWQsIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMgZmlsdGVycykKKyNlbmRpZgog
ICAgIFNldFJvb3RDb21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIERlbGV0ZUNvbXBv
c2l0aW5nTGF5ZXIodWludDMyX3QgaWQpCiAgICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90
IGxheWVySUQsIGludCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGFyZ2V0UmVjdCwgV2ViS2l0
OjpTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggOThlMGI1NDUyYWZkMjk5ZDRh
NGVkMmZiMmIwOTM5NTljOWFmNWExZC4uNjdiYmViYjBlZDlhMzY4ZmRhNGQxMDgyZjkyZTMxZGQx
NzBmNWJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJl
ZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwCkBAIC0yMDcsNiArMjA3LDE4IEBAIHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVy
ZXI6OnNldExheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWVy
CiAgICAgbGF5ZXItPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKIH0KIAorI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKK3ZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyRmlsdGVycyhXZWJM
YXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIGVuc3Vy
ZUxheWVyKGlkKTsKKyAgICBMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX2xheWVycy5maW5kKGlk
KTsKKyAgICBBU1NFUlQoaXQgIT0gbV9sYXllcnMuZW5kKCkpOworCisgICAgR3JhcGhpY3NMYXll
ciogbGF5ZXIgPSBpdC0+c2Vjb25kOworICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
fQorI2VuZGlmCisKIHZvaWQgV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyU3RhdGUoV2Vi
TGF5ZXJJRCBpZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBsYXllckluZm8pCiB7CiAgICAgZW5zdXJl
TGF5ZXIoaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVy
VHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVu
ZGVyZXIuaAppbmRleCA1Y2JmYWRkMGI4NmVkZGIzNTVjOTdjMWZmNWY4NDFhNmEyMDU1NmI5Li45
ODNjODBkMmEyZDhlNzUxMGYxZTA4NDU4ZmVhMDBlOTgwOTlmNjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtNzcsNiArNzcsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Um9vdExheWVySUQoV2ViTGF5ZXJJRCk7CiAgICAgdm9p
ZCBzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklEPiYp
OwogICAgIHZvaWQgc2V0TGF5ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8m
KTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdm9pZCBzZXRMYXllckZpbHRlcnMoV2Vi
TGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworI2VuZGlmCisKICAg
ICB2b2lkIGNyZWF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBmbG9hdCBzY2FsZSk7CiAgICAgdm9p
ZCByZW1vdmVUaWxlKFdlYkxheWVySUQsIGludCk7CiAgICAgdm9pZCB1cGRhdGVUaWxlKFdlYkxh
eWVySUQsIGludCwgY29uc3QgVGlsZVVwZGF0ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAK
aW5kZXggODA1MmEwMjYxNjc5ODExNjFmMzAyZDllOTdhMTBkZmRhNWYyOGRlNy4uNzNlZGYyNGMz
NTVhMTE2ODM5OTU4MzBjNDYxNjkzZmVhMTA3NWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC03NCw2ICs3NCwxNSBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmRpZENoYW5nZUNo
aWxkcmVuKCkKICAgICAgICAgY2xpZW50KCktPm5vdGlmeVN5bmNSZXF1aXJlZCh0aGlzKTsKIH0K
IAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hh
bmdlRmlsdGVycygpCit7CisgICAgbV9zaG91bGRTeW5jRmlsdGVycyA9IHRydWU7CisgICAgaWYg
KGNsaWVudCgpKQorICAgICAgICBjbGllbnQoKS0+bm90aWZ5U3luY1JlcXVpcmVkKHRoaXMpOwor
fQorI2VuZGlmCisKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0U2hvdWxkVXBkYXRlVmlzaWJs
ZVJlY3QoKQogewogICAgIGlmICghdHJhbnNmb3JtKCkuaXNBZmZpbmUoKSkKQEAgLTMwOSw2ICsz
MTgsMTcgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgp
CiAgICAgc2V0Q29udGVudHNUb0ltYWdlKGltYWdlLmdldCgpKTsKIH0KIAorI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKK2Jvb2wgV2ViR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBuZXdGaWx0ZXJzKQoreworICAgIGlmIChmaWx0ZXJzKCkgPT0gbmV3Rmls
dGVycykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGlkQ2hhbmdlRmlsdGVycygpOworICAg
IHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKG5ld0ZpbHRlcnMpOworfQorI2VuZGlm
CisKKwogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGlt
YWdlKQogewogICAgIGlmIChpbWFnZSA9PSBtX2ltYWdlKQpAQCAtNDEzLDYgKzQzMywxNiBAQCB2
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDaGlsZHJlbigpCiAgICAgbV93ZWJHcmFwaGljc0xh
eWVyQ2xpZW50LT5zeW5jTGF5ZXJDaGlsZHJlbihtX2lkLCBjaGlsZElEcyk7CiB9CiAKKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNGaWx0ZXJzKCkK
K3sKKyAgICBpZiAoIW1fc2hvdWxkU3luY0ZpbHRlcnMpCisgICAgICAgIHJldHVybjsKKyAgICBt
X3Nob3VsZFN5bmNGaWx0ZXJzID0gZmFsc2U7CisgICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50
LT5zeW5jTGF5ZXJGaWx0ZXJzKG1faWQsIGZpbHRlcnMoKSk7Cit9CisjZW5kaWYKKwogdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSgpCiAgewogICAgIGlmICghbV9zaG91bGRT
eW5jTGF5ZXJTdGF0ZSkKQEAgLTQ1Miw2ICs0ODIsOSBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAgICAgY29tcHV0ZVRyYW5z
Zm9ybWVkVmlzaWJsZVJlY3QoKTsKICAgICBzeW5jQ2hpbGRyZW4oKTsKICAgICBzeW5jTGF5ZXJT
dGF0ZSgpOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBzeW5jRmlsdGVycygpOworI2Vu
ZGlmCiAgICAgdXBkYXRlQ29udGVudEJ1ZmZlcnMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
aAppbmRleCAwZWJiYjUxZGNjNjNlOGQ5YWYwY2I5ZjI4ZDIyYThhNTdkOGJkYmU1Li5jMjJhODgy
NDMxMmEzMmVlMTg1ZmE5NWE0MzEyZjFhMWExNTA4YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
aApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VJbWFn
ZUJhY2tpbmdTdG9yZShpbnQ2NF90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0
YXRlKFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+
JikgPSAwOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICB2aXJ0dWFsIHZvaWQgc3luY0xh
eWVyRmlsdGVycyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJikg
PSAwOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaExheWVyKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVy
cygpID0gMDsKQEAgLTEwNCw2ICsxMDcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXNpYmxl
Q29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKKyAgICBib29sIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYpOworI2VuZGlmCiAKICAgICB2b2lkIHNldFJvb3RMYXllcihib29sKTsKIApAQCAtMTM4
LDYgKzE0NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQo
V2ViS2l0OjpXZWJHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAgICAgdm9pZCBzeW5jQ2hpbGRyZW4o
KTsKICAgICB2b2lkIHN5bmNMYXllclN0YXRlKCk7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQor
ICAgIHZvaWQgc3luY0ZpbHRlcnMoKTsKKyNlbmRpZgogICAgIHZvaWQgZW5zdXJlSW1hZ2VCYWNr
aW5nU3RvcmUoKTsKIAogICAgIHZvaWQgYWRqdXN0VmlzaWJsZVJlY3QoKTsKQEAgLTE1NywxMiAr
MTY2LDE3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFVwZGF0ZVZpc2libGVSZWN0OiAx
OwogICAgIGJvb2wgbV9zaG91bGRTeW5jTGF5ZXJTdGF0ZTogMTsKICAgICBib29sIG1fc2hvdWxk
U3luY0NoaWxkcmVuOiAxOworICAgIGJvb2wgbV9zaG91bGRTeW5jRmlsdGVyczogMTsKICAgICBi
b29sIG1fZml4ZWRUb1ZpZXdwb3J0IDogMTsKIAogICAgIHZvaWQgbm90aWZ5Q2hhbmdlKCk7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VHZW9tZXRyeSgpOwogICAgIHZvaWQgZGlkQ2hhbmdlTGF5ZXJTdGF0
ZSgpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ2hpbGRyZW4oKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCisgICAgdm9pZCBkaWRDaGFuZ2VGaWx0ZXJzKCk7CisjZW5kaWYKKwogICAgIHZvaWQgY3Jl
YXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBib29sIHNlbGZPckFuY2VzdG9ySGF2ZU5vbkFmZmlu
ZVRyYW5zZm9ybXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKaW5kZXggYWIxMjBjZDUwNWNkNjYxYjU5ZWY0
OTMyMTc0YjdlZjhkODViZGQ4Mi4uOTY0MzY2ZThkNjY1MDU4MDhjYmQwODMzZmJkNzQ0NTc2YWFk
Y2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xh
eWVyVHJlZUhvc3RRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKQEAgLTI1Niw2ICsyNTYsMTQgQEAgdm9pZCBMYXllclRy
ZWVIb3N0UXQ6OnN5bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxX
ZWJMYXllcklEPiYKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQ
cm94eTo6U2V0Q29tcG9zaXRpbmdMYXllckNoaWxkcmVuKGlkLCBjaGlsZHJlbikpOwogfQogCisj
aWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBMYXllclRyZWVIb3N0UXQ6OnN5bmNMYXllckZp
bHRlcnMoV2ViTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sK
KyAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJGaWx0ZXJzKGlkLCBm
aWx0ZXJzKSk7Cit9CisjZW5kaWYKKwogdm9pZCBMYXllclRyZWVIb3N0UXQ6OmF0dGFjaExheWVy
KFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIEFTU0VSVCghbV9yZWdpc3RlcmVkTGF5
ZXJzLmNvbnRhaW5zKGxheWVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgKaW5kZXggZTM5NDkwYWIxZDMzYmM3ODdj
YzE5MTdlYmRjM2NhNzVhNTg4OTZhZS4uZWVjYjYyZTYzYjYwNTkwMDNjMTc1MGQyZGYwNjgzMGMy
ZGZjMmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0
L0xheWVyVHJlZUhvc3RRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9xdC9MYXllclRyZWVIb3N0UXQuaApAQCAtNzYsNiArNzYsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNMYXllclN0YXRlKFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8
V2ViTGF5ZXJJRD4mKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdmlydHVhbCB2b2lk
IHN5bmNMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0
aW9ucyYpOworI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaExheWVyKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6
V2ViR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRMYXllcnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139365</attachid>
            <date>2012-04-28 10:49:14 -0700</date>
            <delta_ts>2012-05-02 06:08:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75778-20120428104912.patch</filename>
            <type>text/plain</type>
            <size>41158</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk2NjE1N2YzY2U0NzJj
NzIzZTg1ZGQ0MTI4OTA2NWE3YmY2Mzk5ZC4uZWNjZmI0MmExYzk4Zjc1YWNhMjhiNTRjMzVkZGMz
ZTcyNDEzZjgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA0LTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gRW5hYmxlIGNzcyBmaWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBjb2xvciBm
aWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTC4gQmx1ciBhbmQgc2hhZG93IHdvdWxkIGJlIGRvbmUg
aW4gYQorICAgICAgICBkaWZmZXJlbnQgcGF0Y2guCisKKyAgICAgICAgTW9kaWZpZWQgQml0bWFw
VGV4dHVyZTo6YXBwbHlGaWx0ZXJzIHRvIHJldHVybiBhIHRleHR1cmUsIHNpbmNlIEdMIGNhbm5v
dCBwYWludCBhIHRleHR1cmUKKyAgICAgICAgaW50byBpdHNlbGYuCisgICAgICAgIENyZWF0ZWQg
YSBzaGFkZXIgbWFwIGZvciBzdGFuZGFyZCBmaWx0ZXJzLCBzaW5jZSBhbGwgb2YgdGhlbSB3b3Jr
IG1vcmUgb3IgbGVzcyB0aGUgc2FtZSB3YXkKKyAgICAgICAgd2l0aCBhIHNpbmdsZSB1bmlmb3Jt
LiBBZGRlZCB0aGUgY29sb3JpemF0aW9uIHNoYWRlcnMgYmFzZWQgb24gdGhlIFczQyBmaWx0ZXIg
c3BlYywgYXMKKyAgICAgICAgYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiBGRUZpbHRlclJlbmRlcmVy
LmNwcCBhbmQgRkVDb2xvck1hdHJpeC5jcHAuCisgICAgICAgIFdlIHVzZSB0d28gc3dhcHBpbmcg
dGV4dHVyZXMgdG8gcmVuZGVyIHRoZSBmaWx0ZXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgdGVz
dHMgaW4gY3NzMy9maWx0ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6YWNx
dWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OmFwcGx5
RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdMOjpkcmF3RmlsdGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjph
cHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpiaW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAoQml0bWFwVGV4dHVyZUdMKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlG
aWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmg6CisgICAgICAgIChCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVTZWxmKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6On5UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
YW5kYXJkRmlsdGVyUHJvZ3JhbTo6flN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnByZXBhcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlckZvckZpbHRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0YW5kYXJkRmlsdGVyUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnZlcnRleEF0dHJp
Yik6CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnRleENvb3JkQXR0
cmliKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6dGV4dHVyZVVu
aWZvcm0pOgorICAgICAgICAoVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIpOgorCiAyMDEyLTA0
LTI3ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAg
ICAgW1RleG1hcF0gVGV4dHVyZU1hcHBlckxheWVyIHVzZXMgaW50ZXJtZWRpYXRlIHN1cmZhY2Vz
IHRvbyBlYWdlcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzY1MWVhZDgyZWY0NzIyNTAyNmM2M2E4OTNmMWYw
ZDczMmM4NTAyZS4uNjExNzE3OTQ5ZjUyODdmNjU3ODgzZjdiN2E1MThmZjRkZmYyYTNlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA0LTI4ICBObydhbSBSb3NlbnRoYWwgIDxu
b2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1hcF0gRW5hYmxlIGNzcyBm
aWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzgKKworICAgICAgICBBZGQgdGhlIHBsdW1iaW5nIGluIHRo
ZSB1aS1zaWRlIGNvbXBvc2l0aW5nIGNvZGUgaW4gUXQgdG8gc3VwcG9ydCBmaWx0ZXJzLgorICAg
ICAgICBTZXJpYWxpemUgdGhlIGZpbHRlciBvcGVyYXRpb25zIGZvciBhIGxheWVyIHdoZW4gaXQn
cyBjaGFuZ2VkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBD
KToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6
c2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXllclRy
ZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyRmlsdGVycyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChXZWJMYXll
clRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnN5bmNGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJH
cmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0OjpzeW5jTGF5ZXJGaWx0
ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0Lmg6
CisgICAgICAgIChMYXllclRyZWVIb3N0UXQpOgorCiAyMDEyLTA0LTI2ICBObydhbSBSb3NlbnRo
YWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIEEgR3Jh
cGhpY3NTdXJmYWNlIGluc3RhbmNlIGlzIGNyZWF0ZWQgd2l0aCBldmVyeSB1cGRhdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmNwcAppbmRleCAxOGZiMDg2NTBhZWZhMmRlZGFlZDM4N2VlNDdjOGMzZWEyYjA3ZDlm
Li5jZWU0NWI5NjkwOWIxOGJkZDFjMjBmYTFiY2Q2MGQyMzQ0OGVmYjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVy
ZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiBzCiAgICAgICAg
IG1fdGV4dHVyZVBvb2wuYXBwZW5kKHNlbGVjdGVkVGV4dHVyZSk7CiAgICAgfQogCi0gICAgc2Vs
ZWN0ZWRUZXh0dXJlLT5yZXNldChzaXplKTsKKyAgICBzZWxlY3RlZFRleHR1cmUtPnJlc2V0KHNp
emUsIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIHJldHVybiBzZWxlY3RlZFRl
eHR1cmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDA0NWIyYTgyOTM2ODMxNWFlODZlYjEyNzc1
YjYxNTkwY2JiYzE1ZDkuLmNhMzFkMTc2OTk3NmZkYmFjOGRlZjFkMGVhZGY2NTllZjI1OWM4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgaW5saW5lIGJv
b2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiAhKG1fZmxhZ3MgJiBTdXBwb3J0c0FscGhhKTsg
fQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZpcnR1YWwgdm9pZCBhcHBseUZpbHRl
cnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmKSB7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlG
aWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsgfQogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKaW5kZXggZmYzYzhhZDRhYTkzNTUwM2YyYTk0YTlhNzM1NTZiMWMxOGZj
YzgwNi4uYmVlN2IyMjVkZDgwNWNmZWEyNDg0ZmE0NDIwZmM2ZTMxNWIxOTA1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKQEAgLTUwMyw4ICs1MDMsNTIgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6
OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwg
Y28KICNlbmRpZgogCiAgICAgdXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCB0YXJnZXRSZWN0LCBv
ZmZzZXQsIGJ5dGVzUGVyTGluZSk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNvdXJj
ZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIGZpbHRlcikKK3sKKyAgICAvLyBGb3Igc3RhbmRhcmQgZmlsdGVycywgd2Ug
YWx3YXlzIGRyYXcgdGhlIHdob2xlIHRleHR1cmUgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbnMuCisg
ICAgUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRH
TERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFkZXJGb3JGaWx0ZXIoZmls
dGVyKTsKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZHJhd1RleHR1cmUoc291cmNlVGV4
dHVyZSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgc291cmNlVGV4dHVyZS5zaXplKCkp
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBHTF9DTUQoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFtLT52ZXJ0ZXhBdHRy
aWIoKSkpOworICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0tPnRl
eENvb3JkQXR0cmliKCkpKTsKKyAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
KSk7CisgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc3RhdGljX2Nhc3Q8
Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oc291cmNlVGV4dHVyZSkuaWQoKSkpOworICAgIGdsVW5p
Zm9ybTFpKHByb2dyYW0tPnRleHR1cmVVbmlmb3JtKCksIDApOworICAgIGNvbnN0IEdMZmxvYXQg
dGFyZ2V0VmVydGljZXNbXSA9IHstMSwgLTEsIDEsIC0xLCAxLCAxLCAtMSwgMX07CisgICAgY29u
c3QgR0xmbG9hdCBzb3VyY2VWZXJ0aWNlc1tdID0gezAsIDAsIDEsIDAsIDEsIDEsIDAsIDF9Owor
ICAgIEdMX0NNRChnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS0+dmVydGV4QXR0cmliKCks
IDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdGFyZ2V0VmVydGljZXMpKTsKKyAgICBHTF9DTUQo
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0tPnRleENvb3JkQXR0cmliKCksIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgc291cmNlVmVydGljZXMpKTsKKyAgICBHTF9DTUQoZ2xEaXNhYmxl
KEdMX0JMRU5EKSk7CisgICAgR0xfQ01EKGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAs
IDQpKTsKKyAgICBHTF9DTUQoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVy
dGV4QXR0cmliKCkpKTsKKyAgICBHTF9DTUQoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocHJv
Z3JhbS0+dGV4Q29vcmRBdHRyaWIoKSkpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IEJpdG1hcFRleHR1cmVHTDo6YXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRl
bnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiBwcmV2aW91c1N1cmZhY2UgPSBtX3RleHR1cmVNYXBwZXItPmRhdGEo
KS5jdXJyZW50U3VyZmFjZTsKKworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzb3VyY2UgPSB0
aGlzOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0YXJnZXQgPSBtX3RleHR1cmVNYXBwZXIt
PmFjcXVpcmVUZXh0dXJlRnJvbVBvb2wobV90ZXh0dXJlU2l6ZSk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZmlsdGVyID0gZmlsdGVycy5hdChpKTsKKyAgICAgICAgaWYgKCFmaWx0ZXIpCisgICAg
ICAgICAgICBjb250aW51ZTsKIAorICAgICAgICBtX3RleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNl
KHRhcmdldC5nZXQoKSk7CisgICAgICAgIG1fdGV4dHVyZU1hcHBlci0+ZHJhd0ZpbHRlcmVkKGkg
PyAqc291cmNlLmdldCgpIDogY29udGVudFRleHR1cmUsIGNvbnRlbnRUZXh0dXJlLCAqZmlsdGVy
KTsKKyAgICAgICAgc3RkOjpzd2FwKHNvdXJjZSwgdGFyZ2V0KTsKKyAgICB9CisKKyAgICBtX3Rl
eHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHByZXZpb3VzU3VyZmFjZS5nZXQoKSk7CisgICAgcmV0
dXJuIHNvdXJjZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNyZWF0ZVByb2plY3Rpb25NYXRyaXgoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBtaXJy
b3JlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBkNmNjZWVkMTc2NzY1NzExYjhkOTc2NzVh
MzIwMmY4NWM4MDRmYTZhLi40Mjc5NDk5ZmM2OWM5YmU5YTNjMzY1ODY1NjRkM2M1MzI3OGYzYmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC02NSw2ICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwbGF0Zm9ybVVwZGF0ZUNvbnRlbnRzKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgQWNjZWxlcmF0aW9uTW9kZSBhY2NlbGVyYXRp
b25Nb2RlKCkgY29uc3QgeyByZXR1cm4gT3BlbkdMTW9kZTsgfQogCisjaWYgRU5BQkxFKENTU19G
SUxURVJTKQorICAgIHZvaWQgZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNvdXJj
ZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb24mKTsKKyNlbmRpZgorCisKIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgQ2xpcFN0
YXRlIHsKQEAgLTExNiw2ICsxMjEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQ
b2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lKTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlG
aWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHTHVpbnQgbV9pZDsKICAgICBJ
bnRTaXplIG1fdGV4dHVyZVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
Y3BwCmluZGV4IGNkYzcyMmZiZWUxOTA2ODEzMWUzMjAwOWU5MWE0ODkzN2VkOTBiZjEuLjIwOGI1
MzQ5ZjcxMmE4ZWJhNzlhZjgwNzdjMzk2NTE4NjcyY2Y0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXI6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUs
IGNvbnN0IEYKIH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXZvaWQgQml0bWFwVGV4dHVy
ZUltYWdlQnVmZmVyOjphcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRl
eHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCitQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKGNvbnN0IEJp
dG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKQogewogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gcmVuZGVyZXIgPSBGaWx0
ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CiAgICAgcmVuZGVyZXItPnNldFNvdXJjZUltYWdl
UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjb250ZW50VGV4dHVyZS5zaXplKCkp
KTsKQEAgLTEyMiw2ICsxMjIsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBw
bHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLAogICAgIGNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VC
dWZmZXImPihjb250ZW50VGV4dHVyZSkubV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgSW50UG9pbnQ6Onplcm8oKSk7CiAgICAgcmVuZGVyZXItPmFwcGx5KCk7CiAgICAgbV9pbWFn
ZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIocmVuZGVyZXItPm91dHB1dCgpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCByZW5kZXJlci0+b3V0cHV0UmVjdCgpKTsKKyAgICByZXR1cm4gdGhpczsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXggMzdj
OThhYjhlOWI4NTE2YWYwMDQ0MTFkM2Y3NGI5OWQ5ZTE5ZjE2MS4uOGEwMzU2MjhlYjNlNDA4NDQz
NzFkYTYzNGZhODI1OTEyNjYxYTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZm
ZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUpOwogI2lm
IEVOQUJMRShDU1NfRklMVEVSUykKLSAgICB2b2lkIGFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBU
ZXh0dXJlJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOworICAgIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gYXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAKaW5kZXggMmMxNThiY2NmYmU2MzVhNjQ1ZDM2YzliZjlmZmM0ZGE3NTBiNDM4OS4uYzQ5MzU2
NWVmNDdiNThiZWY4ZTVlMjU0OTU3Y2M0YjY5NjY2ZWZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKQEAgLTMxMiw4ICszMTIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgVAogICAg
ICAgICBmaWx0ZXJTdXJmYWNlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9v
bCh0YXJnZXRSZWN0LnNpemUoKSk7CiAgICAgfQogCi0gICAgZmlsdGVyU3VyZmFjZS0+YXBwbHlG
aWx0ZXJzKCpzb3VyY2UsIGZpbHRlcnMpOwotICAgIHJldHVybiBmaWx0ZXJTdXJmYWNlOworICAg
IHJldHVybiBmaWx0ZXJTdXJmYWNlLT5hcHBseUZpbHRlcnMoKnNvdXJjZSwgZmlsdGVycyk7CiB9
CiAjZW5kaWYKIApAQCAtNDUwLDcgKzQ0OSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
eW5jQ29tcG9zaXRpbmdTdGF0ZVNlbGYoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdyCiAg
ICAgbV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSA9IGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuVHJh
bnNmb3JtKCk7CiAgICAgbV9zdGF0ZS5vcGFjaXR5ID0gZ3JhcGhpY3NMYXllci0+b3BhY2l0eSgp
OwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBtX3N0YXRlLmZpbHRlcnMgPSBncmFwaGlj
c0xheWVyLT5maWx0ZXJzKCk7CisgICAgaWYgKGNoYW5nZU1hc2sgJiBGaWx0ZXJDaGFuZ2UpCisg
ICAgICAgIG1fc3RhdGUuZmlsdGVycyA9IGdyYXBoaWNzTGF5ZXItPmZpbHRlcnMoKTsKICNlbmRp
ZgogICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCmluZGV4IDE1
YjFmNTE4ODFmN2M2MTk4ODkwZGI1Njg5ZjQzNjU3NDljNzVkMWEuLjQ0ZDc2OTBhYTU2YTQ3MGM3
NzNjNWUxZDBkMzNhZmY4NGZlYWNmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyLmNwcApAQCAtMjA3LDggKzIwNywyMjMgQEAgVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXI6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCkKIFRleHR1cmVNYXBwZXJTaGFkZXJN
YW5hZ2VyOjp+VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKQogewogICAgIG1fdGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW1NYXAuY2xlYXIoKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisg
ICAgbV9maWx0ZXJNYXAuY2xlYXIoKTsKKyNlbmRpZgogfQogCisjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQorU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjp+U3RhbmRhcmRGaWx0ZXJQcm9ncmFtKCkKK3sK
KyAgICBnbERldGFjaFNoYWRlcihtX2lkLCBtX3ZlcnRleFNoYWRlcik7CisgICAgZ2xEZWxldGVT
aGFkZXIobV92ZXJ0ZXhTaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKG1faWQsIG1fZnJhZ21l
bnRTaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVyKG1fZnJhZ21lbnRTaGFkZXIpOworICAgIGds
RGVsZXRlUHJvZ3JhbShtX2lkKTsKK30KKworU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjpTdGFuZGFy
ZEZpbHRlclByb2dyYW0oRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUpCisgICAg
OiBtX2lkKDApCit7CisgICAgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAg
ICAgICAgIFZFUlRFWF9TSEFERVIoCisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV92
ZXJ0ZXg7CisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV90ZXhDb29yZDsKKyAgICAg
ICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgICAgICAg
ICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHZfdGV4Q29vcmQgPSB2ZWMyKGFfdGV4Q29vcmQpOworICAgICAgICAgICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IGFfdmVydGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisK
KyNkZWZpbmUgU1RBTkRBUkRfRklMVEVSKHguLi4pIFwKKyAgICAgICAgT0VTMl9QUkVDSVNJT05f
REVGSU5JVElPTlNcCisgICAgICAgIE9FUzJfRlJBR01FTlRfU0hBREVSX0RFRkFVTFRfUFJFQ0lT
SU9OXAorICAgICAgICAidmFyeWluZyBoaWdocCB2ZWMyIHZfdGV4Q29vcmQ7XG4iXAorICAgICAg
ICAidW5pZm9ybSBoaWdocCBmbG9hdCB1X2Ftb3VudDtcbiJcCisgICAgICAgICJ1bmlmb3JtIHNh
bXBsZXIyRCB1X3RleHR1cmU7XG4iXAorICAgICAgICAjeFwKKyAgICAgICAgInZvaWQgbWFpbih2
b2lkKVxuIHsgZ2xfRnJhZ0NvbG9yID0gc2hhZGUodGV4dHVyZTJEKHVfdGV4dHVyZSwgdl90ZXhD
b29yZCkpOyB9IgorCisgICAgY29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSAwOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6
CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAg
ICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBsb3dwIGZsb2F0IGFtb3VudCA9IDEuMCAtIHVfYW1vdW50OworICAgICAg
ICAgICAgICAgIHJldHVybiB2ZWM0KCgwLjIxMjYgKyAwLjc4NzQgKiBhbW91bnQpICogY29sb3Iu
ciArICgwLjcxNTIgLSAwLjcxNTIgKiBhbW91bnQpICogY29sb3IuZyArICgwLjA3MjIgLSAwLjA3
MjIgKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4y
MTI2IC0gMC4yMTI2ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43MTUyICsgMC4yODQ4ICogYW1v
dW50KSAqIGNvbG9yLmcgKyAoMC4wNzIyIC0gMC4wNzIyICogYW1vdW50KSAqIGNvbG9yLmIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjEyNiAtIDAuMjEyNiAqIGFtb3VudCkgKiBj
b2xvci5yICsgKDAuNzE1MiAtIDAuNzE1MiAqIGFtb3VudCkgKiBjb2xvci5nICsgKDAuMDcyMiAr
IDAuOTI3OCAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291
cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3Ag
dmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb3dwIGZsb2F0IGFt
b3VudCA9IDEuMCAtIHVfYW1vdW50OworICAgICAgICAgICAgICAgIHJldHVybiB2ZWM0KCgwLjM5
MyArIDAuNjA3ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43NjkgLSAwLjc2OSAqIGFtb3VudCkg
KiBjb2xvci5nICsgKDAuMTg5IC0gMC4xODkgKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoMC4zNDkgLSAwLjM0OSAqIGFtb3VudCkgKiBjb2xvci5yICsg
KDAuNjg2ICsgMC4zMTQgKiBhbW91bnQpICogY29sb3IuZyArICgwLjE2OCAtIDAuMTY4ICogYW1v
dW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjcyIC0gMC4y
NzIgKiBhbW91bnQpICogY29sb3IuciArICgwLjUzNCAtIDAuNTM0ICogYW1vdW50KSAqIGNvbG9y
LmcgKyAoMC4xMzEgKyAwLjg2OSAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGZy
YWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2
ZWM0IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdmVjNCgoMC4yMTMgKyAwLjc4NyAqIHVfYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43
MTUgLSAwLjcxNSAqIHVfYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIgLSAwLjA3MiAqIHVfYW1v
dW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjEzIC0gMC4y
MTMgKiB1X2Ftb3VudCkgKiBjb2xvci5yICsgKDAuNzE1ICsgMC4yODUgKiB1X2Ftb3VudCkgKiBj
b2xvci5nICsgKDAuMDcyIC0gMC4wNzIgKiB1X2Ftb3VudCkgKiBjb2xvci5iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgwLjIxMyAtIDAuMjEzICogdV9hbW91bnQpICogY29sb3IuciAr
ICgwLjcxNSAtIDAuNzE1ICogdV9hbW91bnQpICogY29sb3IuZyArICgwLjA3MiArIDAuOTI4ICog
dV9hbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5h
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNl
ID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3AgdmVj
NCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBoaWdocCBmbG9hdCBwaSA9
IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisgICAgICAgICAgICAgICAgaGlnaHAgZmxvYXQgYyA9
IGNvcyh1X2Ftb3VudCAqIHBpIC8gMTgwLjApOworICAgICAgICAgICAgICAgIGhpZ2hwIGZsb2F0
IHMgPSBzaW4odV9hbW91bnQgKiBwaSAvIDE4MC4wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dmVjNChjb2xvci5yICogKDAuMjEzICsgYyAqIDAuNzg3IC0gcyAqIDAuMjEzKSArIGNvbG9yLmcg
KiAoMC43MTUgLSBjICogMC43MTUgLSBzICogMC43MTUpICsgY29sb3IuYiAqICgwLjA3MiAtIGMg
KiAwLjA3MiArIHMgKiAwLjkyOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Iu
ciAqICgwLjIxMyAtIGMgKiAwLjIxMyArIHMgKiAwLjE0MykgKyBjb2xvci5nICogKDAuNzE1ICsg
YyAqIDAuMjg1ICsgcyAqIDAuMTQwKSArIGNvbG9yLmIgKiAoMC4wNzIgLSBjICogMC4wNzIgLSBz
ICogMC4yODMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLnIgKiAoMC4yMTMg
LSBjICogMC4yMTMgLSBzICogMC43ODcpICsgIGNvbG9yLmcgKiAoMC43MTUgLSBjICogMC43MTUg
KyBzICogMC43MTUpICsgY29sb3IuYiAqICgwLjA3MiArIGMgKiAwLjkyOCArIHMgKiAwLjA3Miks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuYSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZF
UlQ6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAg
ICAgICAgICAgbG93cCBmbG9hdCBpbnZlcnQobG93cCBmbG9hdCBuKSB7IHJldHVybiAoMS4wIC0g
bikgKiB1X2Ftb3VudCArIG4gKiAoMS4wIC0gdV9hbW91bnQpOyB9CisgICAgICAgICAgICBsb3dw
IHZlYzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiB2ZWM0KGludmVydChjb2xvci5yKSwgaW52ZXJ0KGNvbG9yLmcpLCBpbnZlcnQo
Y29sb3IuYiksIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICAgICAgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dwIHZl
YzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiB2ZWM0KGNvbG9yLnJnYiAqICgxLjAgKyB1X2Ftb3VudCksIGNvbG9yLmEpOworICAg
ICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRB
UkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCBmbG9hdCBjb250cmFzdChsb3dwIGZsb2F0IG4p
IHsgcmV0dXJuIChuIC0gMC41KSAqIHVfYW1vdW50ICsgMC41OyB9CisgICAgICAgICAgICBsb3dw
IHZlYzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiB2ZWM0KGNvbnRyYXN0KGNvbG9yLnIpLCBjb250cmFzdChjb2xvci5nKSwgY29u
dHJhc3QoY29sb3IuYiksIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAgICAg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dw
IHZlYzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiB2ZWM0KGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgKiB1X2Ft
b3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghZnJhZ21lbnRTaGFkZXJT
b3VyY2UpCisgICAgICAgIHJldHVybjsKKyAgICBHTHVpbnQgdmVydGV4U2hhZGVyID0gZ2xDcmVh
dGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUik7CisgICAgR0x1aW50IGZyYWdtZW50U2hhZGVyID0g
Z2xDcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSKTsKKyAgICBnbFNoYWRlclNvdXJjZSh2
ZXJ0ZXhTaGFkZXIsIDEsICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UsIDApOworICAgIGdsU2hhZGVyU291
cmNlKGZyYWdtZW50U2hhZGVyLCAxLCAmZnJhZ21lbnRTaGFkZXJTb3VyY2UsIDApOworICAgIEdM
Y2hhciBsb2dbMTAwXTsKKyAgICBHTGludCBsZW47CisgICAgR0x1aW50IHByb2dyYW1JRCA9IGds
Q3JlYXRlUHJvZ3JhbSgpOworICAgIGdsQ29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAg
IGdsQ29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgZ2xHZXRTaGFkZXJJbmZvTG9n
KGZyYWdtZW50U2hhZGVyLCAxMDAsICZsZW4sIGxvZyk7CisgICAgZ2xBdHRhY2hTaGFkZXIocHJv
Z3JhbUlELCB2ZXJ0ZXhTaGFkZXIpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW1JRCwgZnJh
Z21lbnRTaGFkZXIpOworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbUlEKTsKKworICAgIG1fdmVy
dGV4QXR0cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtSUQsICJhX3ZlcnRleCIpOwor
ICAgIG1fdGV4Q29vcmRBdHRyaWIgPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW1JRCwgImFf
dGV4Q29vcmQiKTsKKyAgICBtX3RleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtSUQsICJ1X3RleHR1cmUiKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpTRVBJQToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OklOVkVSVDoKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9Q
QUNJVFk6CisgICAgICAgIG1fdW5pZm9ybUxvY2F0aW9ucy5hbW91bnQgPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtSUQsICJ1X2Ftb3VudCIpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgbV9pZCA9IHByb2dyYW1JRDsKKyAgICBt
X3ZlcnRleFNoYWRlciA9IHZlcnRleFNoYWRlcjsKKyAgICBtX2ZyYWdtZW50U2hhZGVyID0gZnJh
Z21lbnRTaGFkZXI7Cit9CisKK1Bhc3NSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBTdGFu
ZGFyZEZpbHRlclByb2dyYW06OmNyZWF0ZShGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUg
dHlwZSkKK3sKKyAgICBSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gYWRv
cHRSZWYobmV3IFN0YW5kYXJkRmlsdGVyUHJvZ3JhbSh0eXBlKSk7CisgICAgaWYgKCFwcm9ncmFt
LT5tX2lkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBwcm9ncmFtOworfQorCit2
b2lkIFN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6cHJlcGFyZShjb25zdCBGaWx0ZXJPcGVyYXRpb24m
IG9wZXJhdGlvbikKK3sKKyAgICBkb3VibGUgYW1vdW50ID0gMDsKKyAgICBzd2l0Y2ggKG9wZXJh
dGlvbi5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JB
WVNDQUxFOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKKyAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RB
VEU6CisgICAgICAgIGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24mPihvcGVyYXRpb24pLmFtb3VudCgpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpCUklHSFRORVNTOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAgICAgYW1vdW50ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiY+KG9wZXJhdGlv
bikuYW1vdW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBnbFVzZVByb2dyYW0obV9pZCk7CisgICAgZ2xVbmlmb3JtMWYobV91bmlm
b3JtTG9jYXRpb25zLmFtb3VudCwgYW1vdW50KTsKK30KKworUGFzc1JlZlB0cjxTdGFuZGFyZEZp
bHRlclByb2dyYW0+IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpnZXRTaGFkZXJGb3JGaWx0
ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXIpCit7CisgICAgUmVmUHRyPFN0YW5kYXJk
RmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbTsKKyAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5
cGUgdHlwZSA9IGZpbHRlci5nZXRPcGVyYXRpb25UeXBlKCk7CisgICAgRmlsdGVyTWFwOjppdGVy
YXRvciBpdGVyYXRvciA9IG1fZmlsdGVyTWFwLmZpbmQodHlwZSk7CisgICAgaWYgKGl0ZXJhdG9y
ID09IG1fZmlsdGVyTWFwLmVuZCgpKSB7CisgICAgICAgIHByb2dyYW0gPSBTdGFuZGFyZEZpbHRl
clByb2dyYW06OmNyZWF0ZSh0eXBlKTsKKyAgICAgICAgaWYgKCFwcm9ncmFtKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgbV9maWx0ZXJNYXAuYWRkKHR5cGUsIHByb2dyYW0pOwor
ICAgIH0gZWxzZQorICAgICAgICBwcm9ncmFtID0gaXRlcmF0b3ItPnNlY29uZDsKKworICAgIHBy
b2dyYW0tPnByZXBhcmUoZmlsdGVyKTsKKyAgICByZXR1cm4gcHJvZ3JhbTsKK30KKworI2VuZGlm
CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKaW5k
ZXggNWIzOWEwOTI4ZjJiYWZjMDExODNiZDRkMWI0NmVjYjdjMGI5NWVkMC4uOWQ5MTcwZTdiYmE1
YzljMmYyNGExYzYxMmVkNzgxMWVmYzYzODIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJNYW5hZ2VyLmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQml0bWFwVGV4dHVyZTsKQEAgLTY1LDYgKzY5LDM1IEBAIHByb3RlY3Rl
ZDoKICAgICBHTGludCBtX29wYWNpdHlWYXJpYWJsZTsKIH07CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCitjbGFzcyBTdGFuZGFyZEZpbHRlclByb2dyYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxT
dGFuZGFyZEZpbHRlclByb2dyYW0+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TdGFuZGFyZEZp
bHRlclByb2dyYW0oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IGNy
ZWF0ZShGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUpOworICAgIEdMdWludCB2ZXJ0ZXhB
dHRyaWIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleEF0dHJpYjsgfQorICAgIEdMdWludCB0ZXhD
b29yZEF0dHJpYigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4Q29vcmRBdHRyaWI7IH0KKyAgICBHTHVp
bnQgdGV4dHVyZVVuaWZvcm0oKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVVbmlmb3JtTG9jYXRp
b247IH0KK3ByaXZhdGU6CisgICAgU3RhbmRhcmRGaWx0ZXJQcm9ncmFtKEZpbHRlck9wZXJhdGlv
bjo6T3BlcmF0aW9uVHlwZSk7CisgICAgR0x1aW50IG1faWQ7CisgICAgR0x1aW50IG1fdmVydGV4
U2hhZGVyOworICAgIEdMdWludCBtX2ZyYWdtZW50U2hhZGVyOworICAgIEdMdWludCBtX3ZlcnRl
eEF0dHJpYjsKKyAgICBHTHVpbnQgbV90ZXhDb29yZEF0dHJpYjsKKyAgICBHTHVpbnQgbV90ZXh0
dXJlVW5pZm9ybUxvY2F0aW9uOworICAgIHVuaW9uIHsKKyAgICAgICAgR0x1aW50IGFtb3VudDsK
KyAgICAgICAgR0x1aW50IHN0ZGRldjsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIEdM
dWludCBzdGRkZXY7CisgICAgICAgICAgICBHTHVpbnQgY29sb3I7CisgICAgICAgICAgICBHTHVp
bnQgb2Zmc2V0OworICAgICAgICB9IHNoYWRvdzsKKyAgICB9IG1fdW5pZm9ybUxvY2F0aW9uczsK
K307CisjZW5kaWYKKwogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGUgOiBw
dWJsaWMgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlPiBjcmVhdGUoKTsKQEAg
LTEwMSw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIo
KTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpOwogCisgICAgUGFz
c1JlZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IGdldFNoYWRlckZvckZpbHRlcihjb25zdCBG
aWx0ZXJPcGVyYXRpb24mKTsKKwogICAgIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0+IGdldFNoYWRlclByb2dyYW0oU2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogICAgIHsKICAg
ICAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtOwpAQCAtMTI4
LDYgKzE2MywxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTaGFk
ZXJUeXBlLCBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+LCBEZWZhdWx0SGFzaDxp
bnQ+OjpIYXNoLCBIYXNoVHJhaXRzPGludD4gPiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU1h
cDsKICAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU1hcCBtX3RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtTWFwOworCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHR5cGVkZWYgSGFz
aE1hcDxGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUsIFJlZlB0cjxTdGFuZGFyZEZpbHRl
clByb2dyYW0+LCBEZWZhdWx0SGFzaDxpbnQ+OjpIYXNoLCBIYXNoVHJhaXRzPGludD4gPiBGaWx0
ZXJNYXA7CisgICAgRmlsdGVyTWFwIG1fZmlsdGVyTWFwOworI2VuZGlmCisKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
YzZhMTY3M2I0Y2Q0NTQyNDEzOTBmYmE5ZTZiOGI1NTdiMmMyNTBkMy4uODA0NTY4YzJkNDM5YmEx
ZTRlOTlhOWY2ZGQ0ZGUzZjc5NjJjZDMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTYxLDYgKzYxLDEwIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KICNlbmRpZgogCisjaWYgVVNF
KFVJX1NJREVfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTEyNDEsNiArMTI0NSwxMTAgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPEtleWZyYW1lVmFsdWVMaXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgV2ViQ29yZToKIAogI2VuZGlmCiAKKyNpZiBVU0UoVUlfU0lERV9DT01Q
T1NJVElORykgJiYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIGVuY29kZXIt
PmVuY29kZVVJbnQzMihmaWx0ZXJzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
ZmlsdGVyID0gZmlsdGVycy5hdChpKTsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRp
b25UeXBlIHR5cGUgPSBmaWx0ZXItPmdldE9wZXJhdGlvblR5cGUoKTsKKyAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlRW51bSh0eXBlKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpTRVBJQToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKKyAgICAgICAgICAgIGVuY29k
ZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6CisgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpCUklHSFRORVNTOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJB
U1Q6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgorICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6CisgICAgICAgICAgICBB
cmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBC
bHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewor
ICAgICAgICAgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogc2hhZG93ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZpbHRlcik7CisgICAg
ICAgICAgICBBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+
bG9jYXRpb24oKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihzaGFkb3ctPnN0
ZERldmlhdGlvbigpKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUo
ZW5jb2Rlciwgc2hhZG93LT5jb2xvcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
K30KKworYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKQoreworICAgIHVpbnQzMl90IHNpemU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zID0gZmlsdGVycy5vcGVyYXRpb25zKCk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBGaWx0ZXJP
cGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZTsKKyAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gZmlsdGVyOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0odHlwZSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTRVBJQToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRF
OgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICAg
ICAgZG91YmxlIHZhbHVlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUo
dmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRl
ciA9IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6SU5WRVJUOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoK
KyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogeworICAgICAgICAgICAgZG91YmxlIHZhbHVlOworICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewor
ICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUobGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworICAgICAgICAgICAgSW50UG9p
bnQgbG9jYXRpb247CisgICAgICAgICAgICBpbnQzMl90IHN0ZERldmlhdGlvbjsKKyAgICAgICAg
ICAgIENvbG9yIGNvbG9yOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPEludFBvaW50
Pjo6ZGVjb2RlKGRlY29kZXIsIGxvY2F0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDMyKHN0ZERldmlhdGlvbikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFBcmd1bWVu
dENvZGVyPENvbG9yPjo6ZGVjb2RlKGRlY29kZXIsIGNvbG9yKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBEcm9wU2hhZG93RmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUobG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IsIHR5cGUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpbHRlcikKKyAgICAgICAgICAgIG9wZXJh
dGlvbnMuYXBwZW5kKGZpbHRlcik7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5k
aWYKKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwMzNlMTc5NGNiYzI3ZDhjZDc5
ODk4MDZiYWMyM2I4ODE5MmIzZGQ4Li5kMDJmNWZjMTdjOGQ0YzU1OGMyMzJlNmY0NjUwYjI3OWEy
ZGY0ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC04NSw2ICs4NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAjZW5kaWYKIAor
I2lmIFVTRShVSV9TSURFX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKK30KKyNlbmRpZgor
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtPiB7CkBAIC0zMDEsNiArMzA3LDEzIEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkFuaW1hdGlvbj4gPiB7CiB9
OwogI2VuZGlmCiAKKyNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElORykgJiYgRU5BQkxFKENTU19G
SUxURVJTKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNv
bnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworfTsKKyNlbmRp
ZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdD4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpLZXlmcmFtZVZhbHVl
TGlzdCYga2V5ZnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJl
ZUhvc3RQcm94eS5jcHAKaW5kZXggYmU1Mzc0MzYxZGZhZDkxZDI1ZWQ0ZDAzNWJmMjU4OGJlNjVl
NzI3Yy4uOTYyNDRhZTBiYWM0YjEyMTY5YzJlYjhjZjBlOWE1MmExNjEzZWEwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTEwNSw2
ICsxMDUsMTMgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnNldENvbXBvc2l0aW5nTGF5ZXJD
aGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3IKICAgICBkaXNwYXRjaFVwZGF0ZShi
aW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbiwgbV9yZW5kZXJlci5n
ZXQoKSwgaWQsIGNoaWxkcmVuKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lk
IExheWVyVHJlZUhvc3RQcm94eTo6c2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMoV2ViTGF5ZXJJ
RCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBkaXNwYXRjaFVw
ZGF0ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzLCBtX3JlbmRl
cmVyLmdldCgpLCBpZCwgZmlsdGVycykpOworfQorI2VuZGlmCisKIHZvaWQgTGF5ZXJUcmVlSG9z
dFByb3h5OjpkaWRSZW5kZXJGcmFtZSgpCiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmV2Vi
TGF5ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzLCBtX3JlbmRlcmVyLmdldCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXgg
YzA4ZDYzN2YzNDY1ZTMxNGE5ZWZmMDUwYjU3ZGViOTNkMDJkYWFjYS4uM2Q2N2M3MzZmNGNlY2E4
ZDIyODQ5ODA4Mjg2YjM4YzkzMjA4ODdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXllclRyZWVIb3N0UHJveHkuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+TGF5ZXJUcmVlSG9zdFByb3h5KCk7CiAgICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVy
U3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZvJik7CiAgICAgdm9pZCBzZXRDb21w
b3NpdGluZ0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+
Jik7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXll
ckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOwor
I2VuZGlmCiAgICAgdm9pZCBkZWxldGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAg
IHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViTGF5ZXJJRCk7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ3YTFlZTMwMGFj
YWQwODQzOWYyOWYyZmU4ZjVhZDU3ODM2NDZlYjMuLjFjZGFlMGQzMzUwZjhiMmRjNTQyZjE5Mjkw
NmVhZWYxZjY2MDYyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXll
clRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNiArMjEsOSBAQAogbWVzc2Fn
ZXMgLT4gTGF5ZXJUcmVlSG9zdFByb3h5IHsKICAgICBTZXRDb21wb3NpdGluZ0xheWVyU3RhdGUo
dWludDMyX3QgaWQsIFdlYktpdDo6V2ViTGF5ZXJJbmZvIGxheWVySW5mbykKICAgICBTZXRDb21w
b3NpdGluZ0xheWVyQ2hpbGRyZW4odWludDMyX3QgaWQsIFZlY3Rvcjx1aW50MzJfdD4gY2hpbGRy
ZW4pCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIFNldENvbXBvc2l0aW5nTGF5ZXJGaWx0
ZXJzKHVpbnQzMl90IGlkLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnMpCisjZW5k
aWYKICAgICBTZXRSb290Q29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAgICBEZWxldGVD
b21wb3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50
MzJfdCBsYXllcklELCBpbnQgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRhcmdldFJlY3QsIFdl
YktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDk4ZTBiNTQ1MmFmZDI5
OWQ0YTRlZDJmYjJiMDkzOTU5YzlhZjVhMWQuLjY3YmJlYmIwZWQ5YTM2OGZkYTRkMTA4MmY5MmUz
MWRkMTcwZjViZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXll
clRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVy
VHJlZVJlbmRlcmVyLmNwcApAQCAtMjA3LDYgKzIwNywxOCBAQCB2b2lkIFdlYkxheWVyVHJlZVJl
bmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxXZWJM
YXllcgogICAgIGxheWVyLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CiB9CiAKKyNpZiBFTkFCTEUo
Q1NTX0ZJTFRFUlMpCit2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckZpbHRlcnMo
V2ViTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBl
bnN1cmVMYXllcihpZCk7CisgICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9sYXllcnMuZmlu
ZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fbGF5ZXJzLmVuZCgpKTsKKworICAgIEdyYXBoaWNz
TGF5ZXIqIGxheWVyID0gaXQtPnNlY29uZDsKKyAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJz
KTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRl
KFdlYkxheWVySUQgaWQsIGNvbnN0IFdlYkxheWVySW5mbyYgbGF5ZXJJbmZvKQogewogICAgIGVu
c3VyZUxheWVyKGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJM
YXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJl
ZVJlbmRlcmVyLmgKaW5kZXggNWNiZmFkZDBiODZlZGRiMzU1Yzk3YzFmZjVmODQxYTZhMjA1NTZi
OS4uOTgzYzgwZDJhMmQ4ZTc1MTBmMWUwODQ1OGZlYTAwZTk4MDk5ZjYyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJvb3RMYXllcklEKFdlYkxheWVySUQpOwogICAg
IHZvaWQgc2V0TGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJ
RD4mKTsKICAgICB2b2lkIHNldExheWVyU3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJ
bmZvJik7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZvaWQgc2V0TGF5ZXJGaWx0ZXJz
KFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKKyNlbmRpZgor
CiAgICAgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIGludCwgZmxvYXQgc2NhbGUpOwogICAg
IHZvaWQgcmVtb3ZlVGlsZShXZWJMYXllcklELCBpbnQpOwogICAgIHZvaWQgdXBkYXRlVGlsZShX
ZWJMYXllcklELCBpbnQsIGNvbnN0IFRpbGVVcGRhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IDgwNTJhMDI2MTY3OTgxMTYxZjMwMmQ5ZTk3YTEwZGZkYTVmMjhkZTcuLjczZWRm
MjRjMzU1YTExNjgzOTk1ODMwYzQ2MTY5M2ZlYTEwNzVhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmNwcApAQCAtNzQsNiArNzQsMTUgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpkaWRDaGFu
Z2VDaGlsZHJlbigpCiAgICAgICAgIGNsaWVudCgpLT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7
CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmRp
ZENoYW5nZUZpbHRlcnMoKQoreworICAgIG1fc2hvdWxkU3luY0ZpbHRlcnMgPSB0cnVlOworICAg
IGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPm5vdGlmeVN5bmNSZXF1aXJlZCh0aGlz
KTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFNob3VsZFVwZGF0ZVZp
c2libGVSZWN0KCkKIHsKICAgICBpZiAoIXRyYW5zZm9ybSgpLmlzQWZmaW5lKCkpCkBAIC0zMDks
NiArMzE4LDE3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNOZWVkc0Rpc3Bs
YXkoKQogICAgIHNldENvbnRlbnRzVG9JbWFnZShpbWFnZS5nZXQoKSk7CiB9CiAKKyNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCitib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgbmV3RmlsdGVycykKK3sKKyAgICBpZiAoZmlsdGVycygpID09IG5l
d0ZpbHRlcnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRpZENoYW5nZUZpbHRlcnMoKTsK
KyAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhuZXdGaWx0ZXJzKTsKK30KKyNl
bmRpZgorCisKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdl
KiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UgPT0gbV9pbWFnZSkKQEAgLTQxMyw2ICs0MzMsMTYg
QEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ2hpbGRyZW4oKQogICAgIG1fd2ViR3JhcGhp
Y3NMYXllckNsaWVudC0+c3luY0xheWVyQ2hpbGRyZW4obV9pZCwgY2hpbGRJRHMpOwogfQogCisj
aWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jRmlsdGVy
cygpCit7CisgICAgaWYgKCFtX3Nob3VsZFN5bmNGaWx0ZXJzKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9zaG91bGRTeW5jRmlsdGVycyA9IGZhbHNlOworICAgIG1fd2ViR3JhcGhpY3NMYXllckNs
aWVudC0+c3luY0xheWVyRmlsdGVycyhtX2lkLCBmaWx0ZXJzKCkpOworfQorI2VuZGlmCisKIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogIHsKICAgICBpZiAoIW1fc2hv
dWxkU3luY0xheWVyU3RhdGUpCkBAIC00NTIsNiArNDgyLDkgQEAgdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGNvbXB1dGVU
cmFuc2Zvcm1lZFZpc2libGVSZWN0KCk7CiAgICAgc3luY0NoaWxkcmVuKCk7CiAgICAgc3luY0xh
eWVyU3RhdGUoKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgc3luY0ZpbHRlcnMoKTsK
KyNlbmRpZgogICAgIHVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmgKaW5kZXggMGViYmI1MWRjYzYzZThkOWFmMGNiOWYyOGQyMmE4YTU3ZDhiZGJlNS4uYzIy
YTg4MjQzMTJhMzJlZTE4NWZhOTVhNDMxMmYxYTFhMTUwOGIxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
SW1hZ2VCYWNraW5nU3RvcmUoaW50NjRfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5
ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXll
cklEPiYpID0gMDsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdmlydHVhbCB2b2lkIHN5
bmNMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
cyYpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMYXllcihXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpXZWJHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRM
YXllcnMoKSA9IDA7CkBAIC0xMDQsNiArMTA3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vmlz
aWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYpOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoYm9vbCk7CiAKQEAg
LTEzOCw2ICsxNDQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJHcmFwaGljc0xheWVyQ2xp
ZW50KFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNsaWVudCopOwogICAgIHZvaWQgc3luY0NoaWxk
cmVuKCk7CiAgICAgdm9pZCBzeW5jTGF5ZXJTdGF0ZSgpOworI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKKyAgICB2b2lkIHN5bmNGaWx0ZXJzKCk7CisjZW5kaWYKICAgICB2b2lkIGVuc3VyZUltYWdl
QmFja2luZ1N0b3JlKCk7CiAKICAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0KCk7CkBAIC0xNTcs
MTIgKzE2NiwxNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVWaXNpYmxlUmVj
dDogMTsKICAgICBib29sIG1fc2hvdWxkU3luY0xheWVyU3RhdGU6IDE7CiAgICAgYm9vbCBtX3No
b3VsZFN5bmNDaGlsZHJlbjogMTsKKyAgICBib29sIG1fc2hvdWxkU3luY0ZpbHRlcnM6IDE7CiAg
ICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9ydCA6IDE7CiAKICAgICB2b2lkIG5vdGlmeUNoYW5nZSgp
OwogICAgIHZvaWQgZGlkQ2hhbmdlR2VvbWV0cnkoKTsKICAgICB2b2lkIGRpZENoYW5nZUxheWVy
U3RhdGUoKTsKICAgICB2b2lkIGRpZENoYW5nZUNoaWxkcmVuKCk7CisjaWYgRU5BQkxFKENTU19G
SUxURVJTKQorICAgIHZvaWQgZGlkQ2hhbmdlRmlsdGVycygpOworI2VuZGlmCisKICAgICB2b2lk
IGNyZWF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgYm9vbCBzZWxmT3JBbmNlc3RvckhhdmVOb25B
ZmZpbmVUcmFuc2Zvcm1zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCmluZGV4IGFiMTIwY2Q1MDVjZDY2MWI1
OWVmNDkzMjE3NGI3ZWY4ZDg1YmRkODIuLjk2NDM2NmU4ZDY2NTA1ODA4Y2JkMDgzM2ZiZDc0NDU3
NmFhZGNmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9x
dC9MYXllclRyZWVIb3N0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCkBAIC0yNTYsNiArMjU2LDE0IEBAIHZvaWQgTGF5
ZXJUcmVlSG9zdFF0OjpzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0
b3I8V2ViTGF5ZXJJRD4mCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVI
b3N0UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwgY2hpbGRyZW4pKTsKIH0K
IAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKK3ZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzeW5jTGF5
ZXJGaWx0ZXJzKFdlYkxheWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMp
Cit7CisgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworICAgIG1fd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6TGF5ZXJUcmVlSG9zdFByb3h5OjpTZXRDb21wb3NpdGluZ0xheWVyRmlsdGVycyhp
ZCwgZmlsdGVycykpOworfQorI2VuZGlmCisKIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjphdHRhY2hM
YXllcihXZWJHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBBU1NFUlQoIW1fcmVnaXN0ZXJl
ZExheWVycy5jb250YWlucyhsYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCmluZGV4IGUzOTQ5MGFiMWQzM2Jj
Nzg3Y2MxOTE3ZWJkYzNjYTc1YTU4ODk2YWUuLmVlY2I2MmU2M2I2MDU5MDAzYzE3NTBkMmRmMDY4
MzBjMmRmYzJiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9xdC9MYXllclRyZWVIb3N0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgKQEAgLTc2LDYgKzc2LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1
YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVj
dG9yPFdlYkxheWVySUQ+Jik7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZpcnR1YWwg
dm9pZCBzeW5jTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbnMmKTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMYXllcihXZWJDb3Jl
OjpXZWJHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNv
cmU6OldlYkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJz
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139796</attachid>
            <date>2012-05-02 06:09:01 -0700</date>
            <delta_ts>2012-05-02 06:56:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75778-20120502060859.patch</filename>
            <type>text/plain</type>
            <size>41096</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM5NDk3ZjQ1YzAxMDBh
ODc0OWU0MGI1ZjVjMGY5MGY1Y2RmNGQ2Ni4uYTlmZmViMTc1ODA1YzU5Y2YyYjUxMGNhNWFlZjQw
OWYyNjA3ZjQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA0LTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gRW5hYmxlIGNzcyBmaWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBjb2xvciBm
aWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTC4gQmx1ciBhbmQgc2hhZG93IHdvdWxkIGJlIGRvbmUg
aW4gYQorICAgICAgICBkaWZmZXJlbnQgcGF0Y2guCisKKyAgICAgICAgTW9kaWZpZWQgQml0bWFw
VGV4dHVyZTo6YXBwbHlGaWx0ZXJzIHRvIHJldHVybiBhIHRleHR1cmUsIHNpbmNlIEdMIGNhbm5v
dCBwYWludCBhIHRleHR1cmUKKyAgICAgICAgaW50byBpdHNlbGYuCisgICAgICAgIENyZWF0ZWQg
YSBzaGFkZXIgbWFwIGZvciBzdGFuZGFyZCBmaWx0ZXJzLCBzaW5jZSBhbGwgb2YgdGhlbSB3b3Jr
IG1vcmUgb3IgbGVzcyB0aGUgc2FtZSB3YXkKKyAgICAgICAgd2l0aCBhIHNpbmdsZSB1bmlmb3Jt
LiBBZGRlZCB0aGUgY29sb3JpemF0aW9uIHNoYWRlcnMgYmFzZWQgb24gdGhlIFczQyBmaWx0ZXIg
c3BlYywgYXMKKyAgICAgICAgYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiBGRUZpbHRlclJlbmRlcmVy
LmNwcCBhbmQgRkVDb2xvck1hdHJpeC5jcHAuCisgICAgICAgIFdlIHVzZSB0d28gc3dhcHBpbmcg
dGV4dHVyZXMgdG8gcmVuZGVyIHRoZSBmaWx0ZXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgdGVz
dHMgaW4gY3NzMy9maWx0ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6YWNx
dWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OmFwcGx5
RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdMOjpkcmF3RmlsdGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjph
cHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpiaW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAoQml0bWFwVGV4dHVyZUdMKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlG
aWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmg6CisgICAgICAgIChCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVTZWxmKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6On5UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
YW5kYXJkRmlsdGVyUHJvZ3JhbTo6flN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnByZXBhcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlckZvckZpbHRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5h
Z2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0YW5kYXJkRmlsdGVyUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnZlcnRleEF0dHJp
Yik6CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnRleENvb3JkQXR0
cmliKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6dGV4dHVyZVVu
aWZvcm0pOgorICAgICAgICAoVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIpOgorCiAyMDEyLTA0
LTI5ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAg
ICAgW1RleG1hcF0gVGV4dHVyZU1hcHBlckxheWVyIHVzZXMgaW50ZXJtZWRpYXRlIHN1cmZhY2Vz
IHRvbyBlYWdlcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDAyMDc4MDM4Y2ViOTY2YzgyMDA0MWEyMjJmZDhk
ODQyY2U5NmViNi4uNWQ5ZGQ2NGVlZjJhODBlOGEyY2MwMjlkNDE1ZDI1OGU3MGZkMmYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA0LTI4ICBObydhbSBSb3NlbnRoYWwgIDxu
b2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1hcF0gRW5hYmxlIGNzcyBm
aWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzgKKworICAgICAgICBBZGQgdGhlIHBsdW1iaW5nIGluIHRo
ZSB1aS1zaWRlIGNvbXBvc2l0aW5nIGNvZGUgaW4gUXQgdG8gc3VwcG9ydCBmaWx0ZXJzLgorICAg
ICAgICBTZXJpYWxpemUgdGhlIGZpbHRlciBvcGVyYXRpb25zIGZvciBhIGxheWVyIHdoZW4gaXQn
cyBjaGFuZ2VkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBD
KToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6
c2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXllclRy
ZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyRmlsdGVycyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChXZWJMYXll
clRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnN5bmNGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJH
cmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0OjpzeW5jTGF5ZXJGaWx0
ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0Lmg6
CisgICAgICAgIChMYXllclRyZWVIb3N0UXQpOgorCiAyMDEyLTA0LTMwICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFZhbGlkYXRlIGtleXByZXNzIGNvbW1h
bmQgbmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAppbmRleCAxOGZiMDg2NTBhZWZhMmRlZGFlZDM4N2Vl
NDdjOGMzZWEyYjA3ZDlmLi5jZWU0NWI5NjkwOWIxOGJkZDFjMjBmYTFiY2Q2MGQyMzQ0OGVmYjM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRT
aXplJiBzCiAgICAgICAgIG1fdGV4dHVyZVBvb2wuYXBwZW5kKHNlbGVjdGVkVGV4dHVyZSk7CiAg
ICAgfQogCi0gICAgc2VsZWN0ZWRUZXh0dXJlLT5yZXNldChzaXplKTsKKyAgICBzZWxlY3RlZFRl
eHR1cmUtPnJlc2V0KHNpemUsIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIHJl
dHVybiBzZWxlY3RlZFRleHR1cmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDA0NWIyYTgyOTM2
ODMxNWFlODZlYjEyNzc1YjYxNTkwY2JiYzE1ZDkuLmNhMzFkMTc2OTk3NmZkYmFjOGRlZjFkMGVh
ZGY2NTllZjI1OWM4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6
CiAgICAgaW5saW5lIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiAhKG1fZmxhZ3MgJiBT
dXBwb3J0c0FscGhhKTsgfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZpcnR1YWwg
dm9pZCBhcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gYXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJl
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsgfQogI2VuZGlmCiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggZmYzYzhhZDRhYTkzNTUwM2YyYTk0
YTlhNzM1NTZiMWMxOGZjYzgwNi4uZGY5YjhiMDNlMmNlMTg2NTRiNTRlMzY1YmIwNDA1ODM0MGUy
ZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTUwMyw4ICs1MDMsNTEgQEAgdm9pZCBC
aXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgdGFyZ2V0UmVjdCwgY28KICNlbmRpZgogCiAgICAgdXBkYXRlQ29udGVudHMoaW1hZ2VEYXRh
LCB0YXJnZXRSZWN0LCBvZmZzZXQsIGJ5dGVzUGVyTGluZSk7Cit9CisKKyNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1h
cFRleHR1cmUmIHNvdXJjZVRleHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0
dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlcikKK3sKKyAgICAvLyBGb3Igc3RhbmRh
cmQgZmlsdGVycywgd2UgYWx3YXlzIGRyYXcgdGhlIHdob2xlIHRleHR1cmUgd2l0aG91dCB0cmFu
c2Zvcm1hdGlvbnMuCisgICAgUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9
IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5nZXRTaGFk
ZXJGb3JGaWx0ZXIoZmlsdGVyKTsKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZHJhd1Rl
eHR1cmUoc291cmNlVGV4dHVyZSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgc291cmNl
VGV4dHVyZS5zaXplKCkpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxLCAwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBHTF9DTUQoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9n
cmFtLT52ZXJ0ZXhBdHRyaWIoKSkpOworICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHByb2dyYW0tPnRleENvb3JkQXR0cmliKCkpKTsKKyAgICBHTF9DTUQoZ2xBY3RpdmVUZXh0
dXJlKEdMX1RFWFRVUkUwKSk7CisgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oc291cmNlVGV4dHVyZSkuaWQo
KSkpOworICAgIGdsVW5pZm9ybTFpKHByb2dyYW0tPnRleHR1cmVVbmlmb3JtKCksIDApOworICAg
IGNvbnN0IEdMZmxvYXQgdGFyZ2V0VmVydGljZXNbXSA9IHstMSwgLTEsIDEsIC0xLCAxLCAxLCAt
MSwgMX07CisgICAgY29uc3QgR0xmbG9hdCBzb3VyY2VWZXJ0aWNlc1tdID0gezAsIDAsIDEsIDAs
IDEsIDEsIDAsIDF9OworICAgIEdMX0NNRChnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS0+
dmVydGV4QXR0cmliKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdGFyZ2V0VmVydGljZXMp
KTsKKyAgICBHTF9DTUQoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0tPnRleENvb3JkQXR0
cmliKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgc291cmNlVmVydGljZXMpKTsKKyAgICBH
TF9DTUQoZ2xEaXNhYmxlKEdMX0JMRU5EKSk7CisgICAgR0xfQ01EKGdsRHJhd0FycmF5cyhHTF9U
UklBTkdMRV9GQU4sIDAsIDQpKTsKKyAgICBHTF9DTUQoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkocHJvZ3JhbS0+dmVydGV4QXR0cmliKCkpKTsKKyAgICBHTF9DTUQoZ2xEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkocHJvZ3JhbS0+dGV4Q29vcmRBdHRyaWIoKSkpOworfQorCitQYXNzUmVmUHRy
PEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6YXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1h
cFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQoreworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBwcmV2aW91c1N1cmZhY2UgPSBtX3RleHR1
cmVNYXBwZXItPmRhdGEoKS5jdXJyZW50U3VyZmFjZTsKKworICAgIFJlZlB0cjxCaXRtYXBUZXh0
dXJlPiBzb3VyY2UgPSB0aGlzOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0YXJnZXQgPSBt
X3RleHR1cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2wobV90ZXh0dXJlU2l6ZSk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNv
bnN0IEZpbHRlck9wZXJhdGlvbiogZmlsdGVyID0gZmlsdGVycy5hdChpKTsKKyAgICAgICAgQVNT
RVJUKGZpbHRlcik7CiAKKyAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5iaW5kU3VyZmFjZSh0YXJn
ZXQuZ2V0KCkpOworICAgICAgICBtX3RleHR1cmVNYXBwZXItPmRyYXdGaWx0ZXJlZChpID8gKnNv
dXJjZS5nZXQoKSA6IGNvbnRlbnRUZXh0dXJlLCBjb250ZW50VGV4dHVyZSwgKmZpbHRlcik7Cisg
ICAgICAgIHN0ZDo6c3dhcChzb3VyY2UsIHRhcmdldCk7CisgICAgfQorCisgICAgbV90ZXh0dXJl
TWFwcGVyLT5iaW5kU3VyZmFjZShwcmV2aW91c1N1cmZhY2UuZ2V0KCkpOworICAgIHJldHVybiBz
b3VyY2U7CiB9CisjZW5kaWYKIAogc3RhdGljIGlubGluZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBj
cmVhdGVQcm9qZWN0aW9uTWF0cml4KGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgbWlycm9yZWQp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggZDZjY2VlZDE3Njc2NTcxMWI4ZDk3Njc1YTMyMDJm
ODVjODA0ZmE2YS4uNDI3OTQ5OWZjNjljOWJlOWEzYzM2NTg2NTY0ZDNjNTMyNzhmM2JjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuaApAQCAtNjUsNiArNjUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcGxh
dGZvcm1VcGRhdGVDb250ZW50cyhOYXRpdmVJbWFnZVB0ciwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIEFjY2VsZXJhdGlvbk1vZGUgYWNjZWxlcmF0aW9uTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIE9wZW5HTE1vZGU7IH0KIAorI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKKyAgICB2b2lkIGRyYXdGaWx0ZXJlZChjb25zdCBCaXRtYXBUZXh0dXJlJiBzb3VyY2VUZXh0
dXJlLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJik7CisjZW5kaWYKKworCiBwcml2YXRlOgogCiAgICAgc3RydWN0IENsaXBTdGF0ZSB7
CkBAIC0xMTYsNiArMTIxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29u
dGVudHMoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQm
IHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSk7CiAgICAgdmlydHVhbCBib29sIGlzQmFj
a2VkQnlPcGVuR0woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVy
cyhjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR0x1aW50IG1faWQ7CiAgICAgSW50U2l6
ZSBtX3RleHR1cmVTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApp
bmRleCBjZGM3MjJmYmVlMTkwNjgxMzFlMzIwMDllOTFhNDg5MzdlZDkwYmYxLi4yMDhiNTM0OWY3
MTJhOGViYTc5YWY4MDc3YzM5NjUxODY3MmNmNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25z
dCBGCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi12b2lkIEJpdG1hcFRleHR1cmVJbWFn
ZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJl
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQorUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBU
ZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykK
IHsKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IHJlbmRlcmVyID0gRmlsdGVyRWZm
ZWN0UmVuZGVyZXI6OmNyZWF0ZSgpOwogICAgIHJlbmRlcmVyLT5zZXRTb3VyY2VJbWFnZVJlY3Qo
RmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY29udGVudFRleHR1cmUuc2l6ZSgpKSk7CkBA
IC0xMjIsNiArMTIyLDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5Rmls
dGVycyhjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwKICAgICBjb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVy
Jj4oY29udGVudFRleHR1cmUpLm1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFBvaW50Ojp6ZXJvKCkpOwogICAgIHJlbmRlcmVyLT5hcHBseSgpOwogICAgIG1faW1hZ2UtPmNv
bnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKHJlbmRlcmVyLT5vdXRwdXQoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgcmVuZGVyZXItPm91dHB1dFJlY3QoKSk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCmluZGV4IDM3Yzk4YWI4
ZTliODUxNmFmMDA0NDExZDNmNzRiOTlkOWUxOWYxNjEuLjhhMDM1NjI4ZWIzZTQwODQ0MzcxZGE2
MzRmYTgyNTkxMjY2MWE0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgK
QEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50
cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBj
b25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lKTsKICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCi0gICAgdm9pZCBhcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVy
ZSYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IGFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmlu
ZGV4IDljODQ2NDJjYjY0ODk5YzcyOWJjNjlmYmM5YjBlMThlZTYxNWJhYzkuLjlkODNjNGJkODRl
MWUxYTA5NTAwMjgxMzhmNDIzZjZhZTQxMWVmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwCkBAIC0zMDQsOCArMzA0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
YXBwbHlGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIFQKICAgICAgICAg
ZmlsdGVyU3VyZmFjZSA9IHRleHR1cmVNYXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2wodGFy
Z2V0UmVjdC5zaXplKCkpOwogICAgIH0KIAotICAgIGZpbHRlclN1cmZhY2UtPmFwcGx5RmlsdGVy
cygqc291cmNlLCBmaWx0ZXJzKTsKLSAgICByZXR1cm4gZmlsdGVyU3VyZmFjZTsKKyAgICByZXR1
cm4gZmlsdGVyU3VyZmFjZS0+YXBwbHlGaWx0ZXJzKCpzb3VyY2UsIGZpbHRlcnMpOwogfQogI2Vu
ZGlmCiAKQEAgLTQ0Miw3ICs0NDEsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c3luY0Nv
bXBvc2l0aW5nU3RhdGVTZWxmKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBncgogICAgIG1f
c3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gPSBncmFwaGljc0xheWVyLT5jaGlsZHJlblRyYW5zZm9y
bSgpOwogICAgIG1fc3RhdGUub3BhY2l0eSA9IGdyYXBoaWNzTGF5ZXItPm9wYWNpdHkoKTsKICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgbV9zdGF0ZS5maWx0ZXJzID0gZ3JhcGhpY3NMYXll
ci0+ZmlsdGVycygpOworICAgIGlmIChjaGFuZ2VNYXNrICYgRmlsdGVyQ2hhbmdlKQorICAgICAg
ICBtX3N0YXRlLmZpbHRlcnMgPSBncmFwaGljc0xheWVyLT5maWx0ZXJzKCk7CiAjZW5kaWYKICAg
ICBtX2ZpeGVkVG9WaWV3cG9ydCA9IGdyYXBoaWNzTGF5ZXItPmZpeGVkVG9WaWV3cG9ydCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAppbmRleCAxNWIxZjUx
ODgxZjdjNjE5ODg5MGRiNTY4OWY0MzY1NzQ5Yzc1ZDFhLi40NGQ3NjkwYWE1NmE0NzBjNzczYzVl
MWQwZDMzYWZmODRmZWFjZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlci5jcHAKQEAgLTIwNyw4ICsyMDcsMjIzIEBAIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
OjpUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpCiBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdl
cjo6flRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCkKIHsKICAgICBtX3RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtTWFwLmNsZWFyKCk7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIG1f
ZmlsdGVyTWFwLmNsZWFyKCk7CisjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
K1N0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6flN0YW5kYXJkRmlsdGVyUHJvZ3JhbSgpCit7CisgICAg
Z2xEZXRhY2hTaGFkZXIobV9pZCwgbV92ZXJ0ZXhTaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVy
KG1fdmVydGV4U2hhZGVyKTsKKyAgICBnbERldGFjaFNoYWRlcihtX2lkLCBtX2ZyYWdtZW50U2hh
ZGVyKTsKKyAgICBnbERlbGV0ZVNoYWRlcihtX2ZyYWdtZW50U2hhZGVyKTsKKyAgICBnbERlbGV0
ZVByb2dyYW0obV9pZCk7Cit9CisKK1N0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6U3RhbmRhcmRGaWx0
ZXJQcm9ncmFtKEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIDogbV9p
ZCgwKQoreworICAgIGNvbnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZSA9CisgICAgICAgICAg
ICBWRVJURVhfU0hBREVSKAorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfdmVydGV4
OworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfdGV4Q29vcmQ7CisgICAgICAgICAg
ICAgICAgdmFyeWluZyBoaWdocCB2ZWMyIHZfdGV4Q29vcmQ7CisgICAgICAgICAgICAgICAgdm9p
ZCBtYWluKHZvaWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2X3Rl
eENvb3JkID0gdmVjMihhX3RleENvb3JkKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xfUG9zaXRp
b24gPSBhX3ZlcnRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworCisjZGVm
aW5lIFNUQU5EQVJEX0ZJTFRFUih4Li4uKSBcCisgICAgICAgIE9FUzJfUFJFQ0lTSU9OX0RFRklO
SVRJT05TXAorICAgICAgICBPRVMyX0ZSQUdNRU5UX1NIQURFUl9ERUZBVUxUX1BSRUNJU0lPTlwK
KyAgICAgICAgInZhcnlpbmcgaGlnaHAgdmVjMiB2X3RleENvb3JkO1xuIlwKKyAgICAgICAgInVu
aWZvcm0gaGlnaHAgZmxvYXQgdV9hbW91bnQ7XG4iXAorICAgICAgICAidW5pZm9ybSBzYW1wbGVy
MkQgdV90ZXh0dXJlO1xuIlwKKyAgICAgICAgI3hcCisgICAgICAgICJ2b2lkIG1haW4odm9pZClc
biB7IGdsX0ZyYWdDb2xvciA9IHNoYWRlKHRleHR1cmUyRCh1X3RleHR1cmUsIHZfdGV4Q29vcmQp
KTsgfSIKKworICAgIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291cmNlID0gMDsKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgorICAg
ICAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNUQU5EQVJEX0ZJTFRFUigKKyAgICAgICAgICAg
IGxvd3AgdmVjNCBzaGFkZShsb3dwIHZlYzQgY29sb3IpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgbG93cCBmbG9hdCBhbW91bnQgPSAxLjAgLSB1X2Ftb3VudDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdmVjNCgoMC4yMTI2ICsgMC43ODc0ICogYW1vdW50KSAqIGNvbG9yLnIgKyAo
MC43MTUyIC0gMC43MTUyICogYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIyIC0gMC4wNzIyICog
YW1vdW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjEyNiAt
IDAuMjEyNiAqIGFtb3VudCkgKiBjb2xvci5yICsgKDAuNzE1MiArIDAuMjg0OCAqIGFtb3VudCkg
KiBjb2xvci5nICsgKDAuMDcyMiAtIDAuMDcyMiAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgwLjIxMjYgLSAwLjIxMjYgKiBhbW91bnQpICogY29sb3Iu
ciArICgwLjcxNTIgLSAwLjcxNTIgKiBhbW91bnQpICogY29sb3IuZyArICgwLjA3MjIgKyAwLjky
NzggKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xv
ci5hKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgICAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA9
IFNUQU5EQVJEX0ZJTFRFUigKKyAgICAgICAgICAgIGxvd3AgdmVjNCBzaGFkZShsb3dwIHZlYzQg
Y29sb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG93cCBmbG9hdCBhbW91bnQg
PSAxLjAgLSB1X2Ftb3VudDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmVjNCgoMC4zOTMgKyAw
LjYwNyAqIGFtb3VudCkgKiBjb2xvci5yICsgKDAuNzY5IC0gMC43NjkgKiBhbW91bnQpICogY29s
b3IuZyArICgwLjE4OSAtIDAuMTg5ICogYW1vdW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKDAuMzQ5IC0gMC4zNDkgKiBhbW91bnQpICogY29sb3IuciArICgwLjY4
NiArIDAuMzE0ICogYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4xNjggLSAwLjE2OCAqIGFtb3VudCkg
KiBjb2xvci5iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjI3MiAtIDAuMjcyICog
YW1vdW50KSAqIGNvbG9yLnIgKyAoMC41MzQgLSAwLjUzNCAqIGFtb3VudCkgKiBjb2xvci5nICsg
KDAuMTMxICsgMC44NjkgKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2xvci5hKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAgICAgICBmcmFnbWVu
dFNoYWRlclNvdXJjZSA9IFNUQU5EQVJEX0ZJTFRFUigKKyAgICAgICAgICAgIGxvd3AgdmVjNCBz
aGFkZShsb3dwIHZlYzQgY29sb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHZlYzQoKDAuMjEzICsgMC43ODcgKiB1X2Ftb3VudCkgKiBjb2xvci5yICsgKDAuNzE1IC0g
MC43MTUgKiB1X2Ftb3VudCkgKiBjb2xvci5nICsgKDAuMDcyIC0gMC4wNzIgKiB1X2Ftb3VudCkg
KiBjb2xvci5iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjIxMyAtIDAuMjEzICog
dV9hbW91bnQpICogY29sb3IuciArICgwLjcxNSArIDAuMjg1ICogdV9hbW91bnQpICogY29sb3Iu
ZyArICgwLjA3MiAtIDAuMDcyICogdV9hbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoMC4yMTMgLSAwLjIxMyAqIHVfYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43
MTUgLSAwLjcxNSAqIHVfYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIgKyAwLjkyOCAqIHVfYW1v
dW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuYSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpIVUVfUk9UQVRFOgorICAgICAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNU
QU5EQVJEX0ZJTFRFUigKKyAgICAgICAgICAgIGxvd3AgdmVjNCBzaGFkZShsb3dwIHZlYzQgY29s
b3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaGlnaHAgZmxvYXQgcGkgPSAzLjE0
MTU5MjY1MzU4OTc5MzIzODQ2OworICAgICAgICAgICAgICAgIGhpZ2hwIGZsb2F0IGMgPSBjb3Mo
dV9hbW91bnQgKiBwaSAvIDE4MC4wKTsKKyAgICAgICAgICAgICAgICBoaWdocCBmbG9hdCBzID0g
c2luKHVfYW1vdW50ICogcGkgLyAxODAuMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYzQo
Y29sb3IuciAqICgwLjIxMyArIGMgKiAwLjc4NyAtIHMgKiAwLjIxMykgKyBjb2xvci5nICogKDAu
NzE1IC0gYyAqIDAuNzE1IC0gcyAqIDAuNzE1KSArIGNvbG9yLmIgKiAoMC4wNzIgLSBjICogMC4w
NzIgKyBzICogMC45MjgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLnIgKiAo
MC4yMTMgLSBjICogMC4yMTMgKyBzICogMC4xNDMpICsgY29sb3IuZyAqICgwLjcxNSArIGMgKiAw
LjI4NSArIHMgKiAwLjE0MCkgKyBjb2xvci5iICogKDAuMDcyIC0gYyAqIDAuMDcyIC0gcyAqIDAu
MjgzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5yICogKDAuMjEzIC0gYyAq
IDAuMjEzIC0gcyAqIDAuNzg3KSArICBjb2xvci5nICogKDAuNzE1IC0gYyAqIDAuNzE1ICsgcyAq
IDAuNzE1KSArIGNvbG9yLmIgKiAoMC4wNzIgKyBjICogMC45MjggKyBzICogMC4wNzIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAg
ICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgor
ICAgICAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNUQU5EQVJEX0ZJTFRFUigKKyAgICAgICAg
ICAgIGxvd3AgZmxvYXQgaW52ZXJ0KGxvd3AgZmxvYXQgbikgeyByZXR1cm4gKDEuMCAtIG4pICog
dV9hbW91bnQgKyBuICogKDEuMCAtIHVfYW1vdW50KTsgfQorICAgICAgICAgICAgbG93cCB2ZWM0
IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdmVjNChpbnZlcnQoY29sb3IuciksIGludmVydChjb2xvci5nKSwgaW52ZXJ0KGNvbG9y
LmIpLCBjb2xvci5hKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAgIGZyYWdtZW50
U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0IHNo
YWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmVjNChjb2xvci5yZ2IgKiAoMS4wICsgdV9hbW91bnQpLCBjb2xvci5hKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkNPTlRSQVNUOgorICAgICAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNUQU5EQVJEX0ZJ
TFRFUigKKyAgICAgICAgICAgIGxvd3AgZmxvYXQgY29udHJhc3QobG93cCBmbG9hdCBuKSB7IHJl
dHVybiAobiAtIDAuNSkgKiB1X2Ftb3VudCArIDAuNTsgfQorICAgICAgICAgICAgbG93cCB2ZWM0
IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdmVjNChjb250cmFzdChjb2xvci5yKSwgY29udHJhc3QoY29sb3IuZyksIGNvbnRyYXN0
KGNvbG9yLmIpLCBjb2xvci5hKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6CisgICAgICAgIGZyYWdt
ZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0
IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdmVjNChjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xvci5hICogdV9hbW91bnQp
OworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIWZyYWdtZW50U2hhZGVyU291cmNl
KQorICAgICAgICByZXR1cm47CisgICAgR0x1aW50IHZlcnRleFNoYWRlciA9IGdsQ3JlYXRlU2hh
ZGVyKEdMX1ZFUlRFWF9TSEFERVIpOworICAgIEdMdWludCBmcmFnbWVudFNoYWRlciA9IGdsQ3Jl
YXRlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUik7CisgICAgZ2xTaGFkZXJTb3VyY2UodmVydGV4
U2hhZGVyLCAxLCAmdmVydGV4U2hhZGVyU291cmNlLCAwKTsKKyAgICBnbFNoYWRlclNvdXJjZShm
cmFnbWVudFNoYWRlciwgMSwgJmZyYWdtZW50U2hhZGVyU291cmNlLCAwKTsKKyAgICBHTGNoYXIg
bG9nWzEwMF07CisgICAgR0xpbnQgbGVuOworICAgIEdMdWludCBwcm9ncmFtSUQgPSBnbENyZWF0
ZVByb2dyYW0oKTsKKyAgICBnbENvbXBpbGVTaGFkZXIodmVydGV4U2hhZGVyKTsKKyAgICBnbENv
bXBpbGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOworICAgIGdsR2V0U2hhZGVySW5mb0xvZyhmcmFn
bWVudFNoYWRlciwgMTAwLCAmbGVuLCBsb2cpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW1J
RCwgdmVydGV4U2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtSUQsIGZyYWdtZW50
U2hhZGVyKTsKKyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW1JRCk7CisKKyAgICBtX3ZlcnRleEF0
dHJpYiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbUlELCAiYV92ZXJ0ZXgiKTsKKyAgICBt
X3RleENvb3JkQXR0cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtSUQsICJhX3RleENv
b3JkIik7CisgICAgbV90ZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbUlELCAidV90ZXh0dXJlIik7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
U0VQSUE6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZF
UlQ6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkNPTlRSQVNUOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZ
OgorICAgICAgICBtX3VuaWZvcm1Mb2NhdGlvbnMuYW1vdW50ID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbUlELCAidV9hbW91bnQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG1faWQgPSBwcm9ncmFtSUQ7CisgICAgbV92ZXJ0
ZXhTaGFkZXIgPSB2ZXJ0ZXhTaGFkZXI7CisgICAgbV9mcmFnbWVudFNoYWRlciA9IGZyYWdtZW50
U2hhZGVyOworfQorCitQYXNzUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4gU3RhbmRhcmRG
aWx0ZXJQcm9ncmFtOjpjcmVhdGUoRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUp
Cit7CisgICAgUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGFkb3B0UmVm
KG5ldyBTdGFuZGFyZEZpbHRlclByb2dyYW0odHlwZSkpOworICAgIGlmICghcHJvZ3JhbS0+bV9p
ZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcHJvZ3JhbTsKK30KKwordm9pZCBT
dGFuZGFyZEZpbHRlclByb2dyYW06OnByZXBhcmUoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvcGVy
YXRpb24pCit7CisgICAgZG91YmxlIGFtb3VudCA9IDA7CisgICAgc3dpdGNoIChvcGVyYXRpb24u
Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6CisgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OlNBVFVSQVRFOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgor
ICAgICAgICBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uJj4ob3BlcmF0aW9uKS5hbW91bnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJ
R0hUTkVTUzoKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6CisgICAgICAgIGFtb3VudCA9IHN0YXRpY19jYXN0PGNv
bnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mPihvcGVyYXRpb24pLmFt
b3VudCgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgZ2xVc2VQcm9ncmFtKG1faWQpOworICAgIGdsVW5pZm9ybTFmKG1fdW5pZm9ybUxv
Y2F0aW9ucy5hbW91bnQsIGFtb3VudCk7Cit9CisKK1Bhc3NSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQ
cm9ncmFtPiBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6Z2V0U2hhZGVyRm9yRmlsdGVyKGNv
bnN0IEZpbHRlck9wZXJhdGlvbiYgZmlsdGVyKQoreworICAgIFJlZlB0cjxTdGFuZGFyZEZpbHRl
clByb2dyYW0+IHByb2dyYW07CisgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5
cGUgPSBmaWx0ZXIuZ2V0T3BlcmF0aW9uVHlwZSgpOworICAgIEZpbHRlck1hcDo6aXRlcmF0b3Ig
aXRlcmF0b3IgPSBtX2ZpbHRlck1hcC5maW5kKHR5cGUpOworICAgIGlmIChpdGVyYXRvciA9PSBt
X2ZpbHRlck1hcC5lbmQoKSkgeworICAgICAgICBwcm9ncmFtID0gU3RhbmRhcmRGaWx0ZXJQcm9n
cmFtOjpjcmVhdGUodHlwZSk7CisgICAgICAgIGlmICghcHJvZ3JhbSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworCisgICAgICAgIG1fZmlsdGVyTWFwLmFkZCh0eXBlLCBwcm9ncmFtKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcHJvZ3JhbSA9IGl0ZXJhdG9yLT5zZWNvbmQ7CisKKyAgICBwcm9ncmFt
LT5wcmVwYXJlKGZpbHRlcik7CisgICAgcmV0dXJuIHByb2dyYW07Cit9CisKKyNlbmRpZgogfTsK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCmluZGV4IDVi
MzlhMDkyOGYyYmFmYzAxMTgzYmQ0ZDFiNDZlY2I3YzBiOTVlZDAuLjlkOTE3MGU3YmJhNWM5YzJm
MjRhMWM2MTJlZDc4MTFlZmM2MzgyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVy
TWFuYWdlci5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorI2lu
Y2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEJpdG1hcFRleHR1cmU7CkBAIC02NSw2ICs2OSwzNSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgR0xpbnQgbV9vcGFjaXR5VmFyaWFibGU7CiB9OwogCisjaWYgRU5BQkxFKENTU19GSUxURVJT
KQorY2xhc3MgU3RhbmRhcmRGaWx0ZXJQcm9ncmFtIDogcHVibGljIFJlZkNvdW50ZWQ8U3RhbmRh
cmRGaWx0ZXJQcm9ncmFtPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U3RhbmRhcmRGaWx0ZXJQ
cm9ncmFtKCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmUoY29uc3QgRmlsdGVyT3BlcmF0aW9u
Jik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBjcmVhdGUo
RmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlKTsKKyAgICBHTHVpbnQgdmVydGV4QXR0cmli
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhBdHRyaWI7IH0KKyAgICBHTHVpbnQgdGV4Q29vcmRB
dHRyaWIoKSBjb25zdCB7IHJldHVybiBtX3RleENvb3JkQXR0cmliOyB9CisgICAgR0x1aW50IHRl
eHR1cmVVbmlmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlVW5pZm9ybUxvY2F0aW9uOyB9
Citwcml2YXRlOgorICAgIFN0YW5kYXJkRmlsdGVyUHJvZ3JhbShGaWx0ZXJPcGVyYXRpb246Ok9w
ZXJhdGlvblR5cGUpOworICAgIEdMdWludCBtX2lkOworICAgIEdMdWludCBtX3ZlcnRleFNoYWRl
cjsKKyAgICBHTHVpbnQgbV9mcmFnbWVudFNoYWRlcjsKKyAgICBHTHVpbnQgbV92ZXJ0ZXhBdHRy
aWI7CisgICAgR0x1aW50IG1fdGV4Q29vcmRBdHRyaWI7CisgICAgR0x1aW50IG1fdGV4dHVyZVVu
aWZvcm1Mb2NhdGlvbjsKKyAgICB1bmlvbiB7CisgICAgICAgIEdMdWludCBhbW91bnQ7CisgICAg
ICAgIEdMdWludCBzdGRkZXY7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBHTHVpbnQg
c3RkZGV2OworICAgICAgICAgICAgR0x1aW50IGNvbG9yOworICAgICAgICAgICAgR0x1aW50IG9m
ZnNldDsKKyAgICAgICAgfSBzaGFkb3c7CisgICAgfSBtX3VuaWZvcm1Mb2NhdGlvbnM7Cit9Owor
I2VuZGlmCisKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlIDogcHVibGlj
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4gY3JlYXRlKCk7CkBAIC0xMDEs
NiArMTM0LDggQEAgcHVibGljOgogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCk7CiAg
ICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKTsKIAorICAgIFBhc3NSZWZQ
dHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBnZXRTaGFkZXJGb3JGaWx0ZXIoY29uc3QgRmlsdGVy
T3BlcmF0aW9uJik7CisKICAgICBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
PiBnZXRTaGFkZXJQcm9ncmFtKFNoYWRlclR5cGUgc2hhZGVyVHlwZSkKICAgICB7CiAgICAgICAg
IFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsKQEAgLTEyOCw2ICsx
NjMsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8U2hhZGVyVHlw
ZSwgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiwgRGVmYXVsdEhhc2g8aW50Pjo6
SGFzaCwgSGFzaFRyYWl0czxpbnQ+ID4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1NYXA7CiAg
ICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1NYXAgbV90ZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbU1hcDsKKworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICB0eXBlZGVmIEhhc2hNYXA8
RmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlLCBSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9n
cmFtPiwgRGVmYXVsdEhhc2g8aW50Pjo6SGFzaCwgSGFzaFRyYWl0czxpbnQ+ID4gRmlsdGVyTWFw
OworICAgIEZpbHRlck1hcCBtX2ZpbHRlck1hcDsKKyNlbmRpZgorCiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGM2YTE2
NzNiNGNkNDU0MjQxMzkwZmJhOWU2YjhiNTU3YjJjMjUwZDMuLjgwNDU2OGMyZDQzOWJhMWU0ZTk5
YTlmNmRkNGRlM2Y3OTYyY2QzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02MSw2ICs2MSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIFVTRShVSV9T
SURFX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVkZSA8V2ViQ29y
ZS9GaWx0ZXJPcGVyYXRpb25zLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xMjQxLDYgKzEyNDUsMTEwIEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxLZXlmcmFtZVZhbHVlTGlzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFdlYkNvcmU6CiAKICNlbmRpZgogCisjaWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJ
TkcpICYmIEVOQUJMRShDU1NfRklMVEVSUykKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBlbmNvZGVyLT5lbmNv
ZGVVSW50MzIoZmlsdGVycy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmls
dGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZpbHRl
ciA9IGZpbHRlcnMuYXQoaSk7CisgICAgICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlw
ZSB0eXBlID0gZmlsdGVyLT5nZXRPcGVyYXRpb25UeXBlKCk7CisgICAgICAgIGVuY29kZXItPmVu
Y29kZUVudW0odHlwZSk7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
U0VQSUE6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6CisgICAgICAgICAgICBlbmNvZGVyLT5l
bmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbio+KGZpbHRlciktPmFtb3VudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6QlJJR0hUTkVTUzoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAgICAgICAgIGVuY29k
ZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50KCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOgorICAgICAgICAgICAgQXJndW1l
bnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZp
bHRlck9wZXJhdGlvbio+KGZpbHRlciktPnN0ZERldmlhdGlvbigpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKKyAgICAg
ICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIHNoYWRvdyA9IHN0YXRpY19j
YXN0PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpOworICAgICAgICAg
ICAgQXJndW1lbnRDb2RlcjxJbnRQb2ludD46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmxvY2F0
aW9uKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIoc2hhZG93LT5zdGREZXZp
YXRpb24oKSk7CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPENvbG9yPjo6ZW5jb2RlKGVuY29k
ZXIsIHNoYWRvdy0+Y29sb3IoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKK3sKKyAgICB1aW50MzJfdCBzaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMy
KHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8UmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucyA9IGZpbHRlcnMub3BlcmF0aW9ucygpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgRmlsdGVyT3BlcmF0
aW9uOjpPcGVyYXRpb25UeXBlIHR5cGU7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+
IGZpbHRlcjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHR5cGUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6U0VQSUE6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAgICAgICAgIGRv
dWJsZSB2YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKHZhbHVl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBC
YXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUodmFsdWUsIHR5cGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OklOVkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246Ok9QQUNJVFk6IHsKKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAgICAgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKHZhbHVlKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUodmFsdWUsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKKyAgICAg
ICAgICAgIExlbmd0aCBsZW5ndGg7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVu
Z3RoPjo6ZGVjb2RlKGRlY29kZXIsIGxlbmd0aCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgZmlsdGVyID0gQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxl
bmd0aCwgdHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKKyAgICAgICAgICAgIEludFBvaW50IGxv
Y2F0aW9uOworICAgICAgICAgICAgaW50MzJfdCBzdGREZXZpYXRpb247CisgICAgICAgICAgICBD
b2xvciBjb2xvcjsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxJbnRQb2ludD46OmRl
Y29kZShkZWNvZGVyLCBsb2NhdGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJbnQzMihzdGREZXZpYXRpb24pKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxDb2xvcj46OmRlY29kZShkZWNvZGVyLCBjb2xvcikpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgZmlsdGVyID0gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yLCB0eXBlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChmaWx0ZXIpCisgICAgICAgICAgICBvcGVyYXRpb25z
LmFwcGVuZChmaWx0ZXIpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisK
ICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMDMzZTE3OTRjYmMyN2Q4Y2Q3OTg5ODA2
YmFjMjNiODgxOTJiM2RkOC4uZDAyZjVmYzE3YzhkNGM1NThjMjMyZTZmNDY1MGIyNzlhMmRmNGZm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtODUsNiArODUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogfQogI2VuZGlmCiAKKyNpZiBV
U0UoVUlfU0lERV9DT01QT1NJVElORykgJiYgRU5BQkxFKENTU19GSUxURVJTKQorbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7Cit9CisjZW5kaWYKKwogbmFt
ZXNwYWNlIENvcmVJUEMgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybT4gewpAQCAtMzAxLDYgKzMwNywxMyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpBbmltYXRpb24+ID4gewogfTsKICNl
bmRpZgogCisjaWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShDU1NfRklMVEVS
UykKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0
aW9ucz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBX
ZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciosIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKK307CisjZW5kaWYKKwog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3Q+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3Qm
IGtleWZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJU
cmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0
UHJveHkuY3BwCmluZGV4IDdhYzA5NjA5NmVhYTU3MGYyMTg0YjkwN2E0YWFiYzI3NTkwYjNhZmEu
LmQxNzI3MTA5N2FiYTNjYWY3M2NlMjQyYjJlYmVkNTM3OTcwMjc4ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC0xMDUsNiArMTA1
LDEzIEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRDb21wb3NpdGluZ0xheWVyQ2hpbGRy
ZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgm
V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyQ2hpbGRyZW4sIG1fcmVuZGVyZXIuZ2V0KCks
IGlkLCBjaGlsZHJlbikpOwogfQogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBMYXll
clRyZWVIb3N0UHJveHk6OnNldENvbXBvc2l0aW5nTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQgaWQs
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgZGlzcGF0Y2hVcGRhdGUo
YmluZCgmV2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyRmlsdGVycywgbV9yZW5kZXJlci5n
ZXQoKSwgaWQsIGZpbHRlcnMpKTsKK30KKyNlbmRpZgorCiB2b2lkIExheWVyVHJlZUhvc3RQcm94
eTo6ZGlkUmVuZGVyRnJhbWUoKQogewogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJldlYkxheWVy
VHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcywgbV9yZW5kZXJlci5nZXQoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4IGMwOGQ2
MzdmMzQ2NWUzMTRhOWVmZjA1MGI1N2RlYjkzZDAyZGFhY2EuLjNkNjdjNzM2ZjRjZWNhOGQyMjg0
OTgwODI4NmIzOGM5MzIwODg3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTUwLDYgKzUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkxheWVyVHJlZUhvc3RQcm94eSgpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXllclN0YXRl
KFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRp
bmdMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklEPiYpOwor
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICB2b2lkIHNldENvbXBvc2l0aW5nTGF5ZXJGaWx0
ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKKyNlbmRp
ZgogICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lk
IHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0N2ExZWUzMDBhY2FkMDg0
MzlmMjlmMmZlOGY1YWQ1NzgzNjQ2ZWIzLi4xY2RhZTBkMzM1MGY4YjJkYzU0MmYxOTI5MDZlYWVm
MWY2NjA2MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVl
SG9zdFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXll
clRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDYgKzIxLDkgQEAKIG1lc3NhZ2VzIC0+
IExheWVyVHJlZUhvc3RQcm94eSB7CiAgICAgU2V0Q29tcG9zaXRpbmdMYXllclN0YXRlKHVpbnQz
Ml90IGlkLCBXZWJLaXQ6OldlYkxheWVySW5mbyBsYXllckluZm8pCiAgICAgU2V0Q29tcG9zaXRp
bmdMYXllckNoaWxkcmVuKHVpbnQzMl90IGlkLCBWZWN0b3I8dWludDMyX3Q+IGNoaWxkcmVuKQor
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBTZXRDb21wb3NpdGluZ0xheWVyRmlsdGVycyh1
aW50MzJfdCBpZCwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzKQorI2VuZGlmCiAg
ICAgU2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIodWludDMyX3QgaWQpCiAgICAgRGVsZXRlQ29tcG9z
aXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAgICBDcmVhdGVUaWxlRm9yTGF5ZXIodWludDMyX3Qg
bGF5ZXJJRCwgaW50IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0YXJnZXRSZWN0LCBXZWJLaXQ6
OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCBhZDk0YjdlNDE4YmIxOGVjYjQw
ZTY4MmMyY2MyNGFkZjA3NjI3YWI0Li43YTgzNmFlMzk3NDM0NjUxMzQ1ZGVmZDg0NDNmYmU0MmM5
YjQ0YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVS
ZW5kZXJlci5jcHAKQEAgLTIwNiw2ICsyMDYsMTggQEAgdm9pZCBXZWJMYXllclRyZWVSZW5kZXJl
cjo6c2V0TGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8V2ViTGF5ZXIK
ICAgICBsYXllci0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwogfQogCisjaWYgRU5BQkxFKENTU19G
SUxURVJTKQordm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzKFdlYkxh
eWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgZW5zdXJl
TGF5ZXIoaWQpOworICAgIExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fbGF5ZXJzLmZpbmQoaWQp
OworICAgIEFTU0VSVChpdCAhPSBtX2xheWVycy5lbmQoKSk7CisKKyAgICBHcmFwaGljc0xheWVy
KiBsYXllciA9IGl0LT5zZWNvbmQ7CisgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Cit9
CisjZW5kaWYKKwogdm9pZCBXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJTdGF0ZShXZWJM
YXllcklEIGlkLCBjb25zdCBXZWJMYXllckluZm8mIGxheWVySW5mbykKIHsKICAgICBlbnN1cmVM
YXllcihpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJU
cmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5k
ZXJlci5oCmluZGV4IDVjYmZhZGQwYjg2ZWRkYjM1NWM5N2MxZmY1Zjg0MWE2YTIwNTU2YjkuLjk4
M2M4MGQyYTJkOGU3NTEwZjFlMDg0NThmZWEwMGU5ODA5OWY2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oCkBAIC03Nyw2ICs3NywxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSb290TGF5ZXJJRChXZWJMYXllcklEKTsKICAgICB2b2lk
IHNldExheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+Jik7
CiAgICAgdm9pZCBzZXRMYXllclN0YXRlKFdlYkxheWVySUQsIGNvbnN0IFdlYkxheWVySW5mbyYp
OworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICB2b2lkIHNldExheWVyRmlsdGVycyhXZWJM
YXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7CisjZW5kaWYKKwogICAg
IHZvaWQgY3JlYXRlVGlsZShXZWJMYXllcklELCBpbnQsIGZsb2F0IHNjYWxlKTsKICAgICB2b2lk
IHJlbW92ZVRpbGUoV2ViTGF5ZXJJRCwgaW50KTsKICAgICB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5
ZXJJRCwgaW50LCBjb25zdCBUaWxlVXBkYXRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcApp
bmRleCA4MDUyYTAyNjE2Nzk4MTE2MWYzMDJkOWU5N2ExMGRmZGE1ZjI4ZGU3Li43M2VkZjI0YzM1
NWExMTY4Mzk5NTgzMGM0NjE2OTNmZWExMDc1YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5j
cHAKQEAgLTc0LDYgKzc0LDE1IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlQ2hp
bGRyZW4oKQogICAgICAgICBjbGllbnQoKS0+bm90aWZ5U3luY1JlcXVpcmVkKHRoaXMpOwogfQog
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBXZWJHcmFwaGljc0xheWVyOjpkaWRDaGFu
Z2VGaWx0ZXJzKCkKK3sKKyAgICBtX3Nob3VsZFN5bmNGaWx0ZXJzID0gdHJ1ZTsKKyAgICBpZiAo
Y2xpZW50KCkpCisgICAgICAgIGNsaWVudCgpLT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7Cit9
CisjZW5kaWYKKwogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRTaG91bGRVcGRhdGVWaXNpYmxl
UmVjdCgpCiB7CiAgICAgaWYgKCF0cmFuc2Zvcm0oKS5pc0FmZmluZSgpKQpAQCAtMzA5LDYgKzMx
OCwxNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkK
ICAgICBzZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UuZ2V0KCkpOwogfQogCisjaWYgRU5BQkxFKENT
U19GSUxURVJTKQorYm9vbCBXZWJHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIG5ld0ZpbHRlcnMpCit7CisgICAgaWYgKGZpbHRlcnMoKSA9PSBuZXdGaWx0
ZXJzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkaWRDaGFuZ2VGaWx0ZXJzKCk7CisgICAg
cmV0dXJuIEdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMobmV3RmlsdGVycyk7Cit9CisjZW5kaWYK
KworCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1h
Z2UpCiB7CiAgICAgaWYgKGltYWdlID09IG1faW1hZ2UpCkBAIC00MTMsNiArNDMzLDE2IEBAIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0NoaWxkcmVuKCkKICAgICBtX3dlYkdyYXBoaWNzTGF5
ZXJDbGllbnQtPnN5bmNMYXllckNoaWxkcmVuKG1faWQsIGNoaWxkSURzKTsKIH0KIAorI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKK3ZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0ZpbHRlcnMoKQor
eworICAgIGlmICghbV9zaG91bGRTeW5jRmlsdGVycykKKyAgICAgICAgcmV0dXJuOworICAgIG1f
c2hvdWxkU3luY0ZpbHRlcnMgPSBmYWxzZTsKKyAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQt
PnN5bmNMYXllckZpbHRlcnMobV9pZCwgZmlsdGVycygpKTsKK30KKyNlbmRpZgorCiB2b2lkIFdl
YkdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICB7CiAgICAgaWYgKCFtX3Nob3VsZFN5
bmNMYXllclN0YXRlKQpAQCAtNDUyLDYgKzQ4Miw5IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6
c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAgICBjb21wdXRlVHJhbnNm
b3JtZWRWaXNpYmxlUmVjdCgpOwogICAgIHN5bmNDaGlsZHJlbigpOwogICAgIHN5bmNMYXllclN0
YXRlKCk7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHN5bmNGaWx0ZXJzKCk7CisjZW5k
aWYKICAgICB1cGRhdGVDb250ZW50QnVmZmVycygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5o
CmluZGV4IDBlYmJiNTFkY2M2M2U4ZDlhZjBjYjlmMjhkMjJhOGE1N2Q4YmRiZTUuLmMyMmE4ODI0
MzEyYTMyZWUxODVmYTk1YTQzMTJmMWExYTE1MDhiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5o
CkBAIC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUltYWdl
QmFja2luZ1N0b3JlKGludDY0X3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyU3Rh
dGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZvJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4m
KSA9IDA7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5
ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKSA9
IDA7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6V2ViR3Jh
cGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6
V2ViR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJz
KCkgPSAwOwpAQCAtMTA0LDYgKzEwNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpc2libGVD
b250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQb2ludCYpOwogICAgIHZpcnR1
YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisjaWYgRU5B
QkxFKENTU19GSUxURVJTKQorICAgIGJvb2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJik7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0Um9vdExheWVyKGJvb2wpOwogCkBAIC0xMzgs
NiArMTQ0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChX
ZWJLaXQ6OldlYkdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2b2lkIHN5bmNDaGlsZHJlbigp
OwogICAgIHZvaWQgc3luY0xheWVyU3RhdGUoKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisg
ICAgdm9pZCBzeW5jRmlsdGVycygpOworI2VuZGlmCiAgICAgdm9pZCBlbnN1cmVJbWFnZUJhY2tp
bmdTdG9yZSgpOwogCiAgICAgdm9pZCBhZGp1c3RWaXNpYmxlUmVjdCgpOwpAQCAtMTU3LDEyICsx
NjYsMTcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkVXBkYXRlVmlzaWJsZVJlY3Q6IDE7
CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNMYXllclN0YXRlOiAxOwogICAgIGJvb2wgbV9zaG91bGRT
eW5jQ2hpbGRyZW46IDE7CisgICAgYm9vbCBtX3Nob3VsZFN5bmNGaWx0ZXJzOiAxOwogICAgIGJv
b2wgbV9maXhlZFRvVmlld3BvcnQgOiAxOwogCiAgICAgdm9pZCBub3RpZnlDaGFuZ2UoKTsKICAg
ICB2b2lkIGRpZENoYW5nZUdlb21ldHJ5KCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VMYXllclN0YXRl
KCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VDaGlsZHJlbigpOworI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKKyAgICB2b2lkIGRpZENoYW5nZUZpbHRlcnMoKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjcmVh
dGVCYWNraW5nU3RvcmUoKTsKIAogICAgIGJvb2wgc2VsZk9yQW5jZXN0b3JIYXZlTm9uQWZmaW5l
VHJhbnNmb3JtcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcAppbmRleCBhYjEyMGNkNTA1Y2Q2NjFiNTllZjQ5
MzIxNzRiN2VmOGQ4NWJkZDgyLi45NjQzNjZlOGQ2NjUwNTgwOGNiZDA4MzNmYmQ3NDQ1NzZhYWRj
ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5
ZXJUcmVlSG9zdFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
cXQvTGF5ZXJUcmVlSG9zdFF0LmNwcApAQCAtMjU2LDYgKzI1NiwxNCBAQCB2b2lkIExheWVyVHJl
ZUhvc3RRdDo6c3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdl
YkxheWVySUQ+JgogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdFBy
b3h5OjpTZXRDb21wb3NpdGluZ0xheWVyQ2hpbGRyZW4oaWQsIGNoaWxkcmVuKSk7CiB9CiAKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIExheWVyVHJlZUhvc3RRdDo6c3luY0xheWVyRmls
dGVycyhXZWJMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQorewor
ICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OkxheWVyVHJlZUhvc3RQcm94eTo6U2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMoaWQsIGZp
bHRlcnMpKTsKK30KKyNlbmRpZgorCiB2b2lkIExheWVyVHJlZUhvc3RRdDo6YXR0YWNoTGF5ZXIo
V2ViR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgQVNTRVJUKCFtX3JlZ2lzdGVyZWRMYXll
cnMuY29udGFpbnMobGF5ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaAppbmRleCBlMzk0OTBhYjFkMzNiYzc4N2Nj
MTkxN2ViZGMzY2E3NWE1ODg5NmFlLi5lZWNiNjJlNjNiNjA1OTAwM2MxNzUwZDJkZjA2ODMwYzJk
ZmMyYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQv
TGF5ZXJUcmVlSG9zdFF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L3F0L0xheWVyVHJlZUhvc3RRdC5oCkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
ZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY0xheWVyU3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZvJik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxX
ZWJMYXllcklEPiYpOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY0xheWVyRmlsdGVycyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRp
b25zJik7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139806</attachid>
            <date>2012-05-02 06:56:34 -0700</date>
            <delta_ts>2012-05-02 07:23:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-75778-20120502065633.patch</filename>
            <type>text/plain</type>
            <size>41041</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM5NDk3ZjQ1YzAxMDBh
ODc0OWU0MGI1ZjVjMGY5MGY1Y2RmNGQ2Ni4uZWEzOTk3OTFlYjUyOTc4ZjhjZjExYjllOWQyY2E1
MzIyMDY1ZjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA0LTI4ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gRW5hYmxlIGNzcyBmaWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBKb2NlbHluIFR1cmNvdHRlLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGNvbG9y
IGZpbHRlcnMgaW4gVGV4dHVyZU1hcHBlckdMLiBCbHVyIGFuZCBzaGFkb3cgd291bGQgYmUgZG9u
ZSBpbiBhCisgICAgICAgIGRpZmZlcmVudCBwYXRjaC4KKworICAgICAgICBNb2RpZmllZCBCaXRt
YXBUZXh0dXJlOjphcHBseUZpbHRlcnMgdG8gcmV0dXJuIGEgdGV4dHVyZSwgc2luY2UgR0wgY2Fu
bm90IHBhaW50IGEgdGV4dHVyZQorICAgICAgICBpbnRvIGl0c2VsZi4KKyAgICAgICAgQ3JlYXRl
ZCBhIHNoYWRlciBtYXAgZm9yIHN0YW5kYXJkIGZpbHRlcnMsIHNpbmNlIGFsbCBvZiB0aGVtIHdv
cmsgbW9yZSBvciBsZXNzIHRoZSBzYW1lIHdheQorICAgICAgICB3aXRoIGEgc2luZ2xlIHVuaWZv
cm0uIEFkZGVkIHRoZSBjb2xvcml6YXRpb24gc2hhZGVycyBiYXNlZCBvbiB0aGUgVzNDIGZpbHRl
ciBzcGVjLCBhcworICAgICAgICBhbHJlYWR5IGltcGxlbWVudGVkIGluIEZFRmlsdGVyUmVuZGVy
ZXIuY3BwIGFuZCBGRUNvbG9yTWF0cml4LmNwcC4KKyAgICAgICAgV2UgdXNlIHR3byBzd2FwcGlu
ZyB0ZXh0dXJlcyB0byByZW5kZXIgdGhlIGZpbHRlcnMuCisKKyAgICAgICAgQ292ZXJlZCBieSB0
ZXN0cyBpbiBjc3MzL2ZpbHRlcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjph
Y3F1aXJlVGV4dHVyZUZyb21Qb29sKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZTo6YXBw
bHlGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29u
dGVudHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6
OmFwcGx5RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmJpbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaDoK
KyAgICAgICAgKFRleHR1cmVNYXBwZXJHTCk6CisgICAgICAgIChCaXRtYXBUZXh0dXJlR0wpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjphcHBs
eUZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZVNlbGYpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6flRleHR1cmVNYXBw
ZXJTaGFkZXJNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjp+U3RhbmRhcmRGaWx0ZXJQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6U3RhbmRhcmRGaWx0ZXJQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6cHJlcGFyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6Z2V0U2hhZGVyRm9yRmlsdGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3RhbmRhcmRGaWx0ZXJQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6dmVydGV4QXR0
cmliKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6dGV4Q29vcmRB
dHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6U3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjp0ZXh0dXJl
VW5pZm9ybSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcik6CisKIDIwMTIt
MDQtMjkgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAg
ICAgICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyTGF5ZXIgdXNlcyBpbnRlcm1lZGlhdGUgc3VyZmFj
ZXMgdG9vIGVhZ2VybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwMDIwNzgwMzhjZWI5NjZjODIwMDQxYTIyMmZk
OGQ4NDJjZTk2ZWI2Li41ZDlkZDY0ZWVmMmE4MGU4YTJjYzAyOWQ0MTVkMjU4ZTcwZmQyZjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDQtMjggIE5vJ2FtIFJvc2VudGhhbCAg
PG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAgICBbVGV4bWFwXSBFbmFibGUgY3Nz
IGZpbHRlcnMgaW4gVGV4dHVyZU1hcHBlckdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NTc3OAorCisgICAgICAgIEFkZCB0aGUgcGx1bWJpbmcgaW4g
dGhlIHVpLXNpZGUgY29tcG9zaXRpbmcgY29kZSBpbiBRdCB0byBzdXBwb3J0IGZpbHRlcnMuCisg
ICAgICAgIFNlcmlhbGl6ZSB0aGUgZmlsdGVyIG9wZXJhdGlvbnMgZm9yIGEgbGF5ZXIgd2hlbiBp
dCdzIGNoYW5nZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6Ojpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5
OjpzZXRDb21wb3NpdGluZ0xheWVyRmlsdGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0xheWVy
VHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKFdlYkxh
eWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHcmFwaGljc0xheWVyOjpkaWRDaGFuZ2VGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3Jh
cGhpY3NMYXllcjo6c3luY0ZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdl
YkdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoV2ViR3JhcGhpY3NMYXllcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHA6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6OnN5bmNMYXllckZp
bHRlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQu
aDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RRdCk6CisKIDIwMTItMDQtMzAgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgVmFsaWRhdGUga2V5cHJlc3MgY29t
bWFuZCBuYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCmluZGV4IDE4ZmIwODY1MGFlZmEyZGVkYWVkMzg3
ZWU0N2M4YzNlYTJiMDdkOWYuLmNlZTQ1Yjk2OTA5YjE4YmRkMWMyMGZhMWJjZDYwZDIzNDQ4ZWZi
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyOjphY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IElu
dFNpemUmIHMKICAgICAgICAgbV90ZXh0dXJlUG9vbC5hcHBlbmQoc2VsZWN0ZWRUZXh0dXJlKTsK
ICAgICB9CiAKLSAgICBzZWxlY3RlZFRleHR1cmUtPnJlc2V0KHNpemUpOworICAgIHNlbGVjdGVk
VGV4dHVyZS0+cmVzZXQoc2l6ZSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAgICAg
cmV0dXJuIHNlbGVjdGVkVGV4dHVyZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKaW5kZXggMDQ1YjJhODI5
MzY4MzE1YWU4NmViMTI3NzViNjE1OTBjYmJjMTVkOS4uY2EzMWQxNzY5OTc2ZmRiYWM4ZGVmMWQw
ZWFkZjY1OWVmMjU5YzhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1Ymxp
YzoKICAgICBpbmxpbmUgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuICEobV9mbGFncyAm
IFN1cHBvcnRzQWxwaGEpOyB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgdmlydHVh
bCB2b2lkIGFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1
cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0aGlzOyB9CiAjZW5kaWYKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBmZjNjOGFkNGFhOTM1NTAzZjJh
OTRhOWE3MzU1NmIxYzE4ZmNjODA2Li5kZjliOGIwM2UyY2UxODY1NGI1NGUzNjViYjA0MDU4MzQw
ZTJkMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtNTAzLDggKzUwMyw1MSBAQCB2b2lk
IEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXRSZWN0LCBjbwogI2VuZGlmCiAKICAgICB1cGRhdGVDb250ZW50cyhpbWFnZURh
dGEsIHRhcmdldFJlY3QsIG9mZnNldCwgYnl0ZXNQZXJMaW5lKTsKK30KKworI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0
bWFwVGV4dHVyZSYgc291cmNlVGV4dHVyZSwgY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRl
eHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgZmlsdGVyKQoreworICAgIC8vIEZvciBzdGFu
ZGFyZCBmaWx0ZXJzLCB3ZSBhbHdheXMgZHJhdyB0aGUgd2hvbGUgdGV4dHVyZSB3aXRob3V0IHRy
YW5zZm9ybWF0aW9ucy4KKyAgICBSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBwcm9ncmFt
ID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNo
YWRlckZvckZpbHRlcihmaWx0ZXIpOworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkcmF3
VGV4dHVyZShzb3VyY2VUZXh0dXJlLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzb3Vy
Y2VUZXh0dXJlLnNpemUoKSksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIDEsIDApOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBy
b2dyYW0tPnZlcnRleEF0dHJpYigpKSk7CisgICAgR0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkocHJvZ3JhbS0+dGV4Q29vcmRBdHRyaWIoKSkpOworICAgIEdMX0NNRChnbEFjdGl2ZVRl
eHR1cmUoR0xfVEVYVFVSRTApKTsKKyAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPihzb3VyY2VUZXh0dXJlKS5p
ZCgpKSk7CisgICAgZ2xVbmlmb3JtMWkocHJvZ3JhbS0+dGV4dHVyZVVuaWZvcm0oKSwgMCk7Cisg
ICAgY29uc3QgR0xmbG9hdCB0YXJnZXRWZXJ0aWNlc1tdID0gey0xLCAtMSwgMSwgLTEsIDEsIDEs
IC0xLCAxfTsKKyAgICBjb25zdCBHTGZsb2F0IHNvdXJjZVZlcnRpY2VzW10gPSB7MCwgMCwgMSwg
MCwgMSwgMSwgMCwgMX07CisgICAgR0xfQ01EKGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFt
LT52ZXJ0ZXhBdHRyaWIoKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0YXJnZXRWZXJ0aWNl
cykpOworICAgIEdMX0NNRChnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS0+dGV4Q29vcmRB
dHRyaWIoKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBzb3VyY2VWZXJ0aWNlcykpOworICAg
IEdMX0NNRChnbERpc2FibGUoR0xfQkxFTkQpKTsKKyAgICBHTF9DTUQoZ2xEcmF3QXJyYXlzKEdM
X1RSSUFOR0xFX0ZBTiwgMCwgNCkpOworICAgIEdMX0NNRChnbERpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheShwcm9ncmFtLT52ZXJ0ZXhBdHRyaWIoKSkpOworICAgIEdMX0NNRChnbERpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheShwcm9ncmFtLT50ZXhDb29yZEF0dHJpYigpKSk7Cit9CisKK1Bhc3NSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMoY29uc3QgQml0
bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpCit7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHByZXZpb3VzU3VyZmFjZSA9IG1fdGV4
dHVyZU1hcHBlci0+ZGF0YSgpLmN1cnJlbnRTdXJmYWNlOworCisgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHNvdXJjZSA9IHRoaXM7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRhcmdldCA9
IG1fdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChtX3RleHR1cmVTaXplKTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOworICAgICAgICBB
U1NFUlQoZmlsdGVyKTsKIAorICAgICAgICBtX3RleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHRh
cmdldC5nZXQoKSk7CisgICAgICAgIG1fdGV4dHVyZU1hcHBlci0+ZHJhd0ZpbHRlcmVkKGkgPyAq
c291cmNlLmdldCgpIDogY29udGVudFRleHR1cmUsIGNvbnRlbnRUZXh0dXJlLCAqZmlsdGVyKTsK
KyAgICAgICAgc3RkOjpzd2FwKHNvdXJjZSwgdGFyZ2V0KTsKKyAgICB9CisKKyAgICBtX3RleHR1
cmVNYXBwZXItPmJpbmRTdXJmYWNlKHByZXZpb3VzU3VyZmFjZS5nZXQoKSk7CisgICAgcmV0dXJu
IHNvdXJjZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNyZWF0ZVByb2plY3Rpb25NYXRyaXgoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBtaXJyb3Jl
ZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBkNmNjZWVkMTc2NzY1NzExYjhkOTc2NzVhMzIw
MmY4NWM4MDRmYTZhLi40Mjc5NDk5ZmM2OWM5YmU5YTNjMzY1ODY1NjRkM2M1MzI3OGYzYmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oCkBAIC02NSw2ICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
bGF0Zm9ybVVwZGF0ZUNvbnRlbnRzKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgQWNjZWxlcmF0aW9uTW9kZSBhY2NlbGVyYXRpb25N
b2RlKCkgY29uc3QgeyByZXR1cm4gT3BlbkdMTW9kZTsgfQogCisjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQorICAgIHZvaWQgZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNvdXJjZVRl
eHR1cmUsIGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb24mKTsKKyNlbmRpZgorCisKIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgQ2xpcFN0YXRl
IHsKQEAgLTExNiw2ICsxMjEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2lu
dCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNC
YWNrZWRCeU9wZW5HTCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0
ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHTHVpbnQgbV9pZDsKICAgICBJbnRT
aXplIG1fdGV4dHVyZVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3Bw
CmluZGV4IGNkYzcyMmZiZWUxOTA2ODEzMWUzMjAwOWU5MWE0ODkzN2VkOTBiZjEuLjIwOGI1MzQ5
ZjcxMmE4ZWJhNzlhZjgwNzdjMzk2NTE4NjcyY2Y0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXI6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNv
bnN0IEYKIH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXZvaWQgQml0bWFwVGV4dHVyZUlt
YWdlQnVmZmVyOjphcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1
cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCitQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1h
cFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQogewogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gcmVuZGVyZXIgPSBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKCk7CiAgICAgcmVuZGVyZXItPnNldFNvdXJjZUltYWdlUmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjb250ZW50VGV4dHVyZS5zaXplKCkpKTsK
QEAgLTEyMiw2ICsxMjIsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBwbHlG
aWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLAogICAgIGNvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZm
ZXImPihjb250ZW50VGV4dHVyZSkubV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
SW50UG9pbnQ6Onplcm8oKSk7CiAgICAgcmVuZGVyZXItPmFwcGx5KCk7CiAgICAgbV9pbWFnZS0+
Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIocmVuZGVyZXItPm91dHB1dCgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCByZW5kZXJlci0+b3V0cHV0UmVjdCgpKTsKKyAgICByZXR1cm4gdGhpczsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5kZXggMzdjOThh
YjhlOWI4NTE2YWYwMDQ0MTFkM2Y3NGI5OWQ5ZTE5ZjE2MS4uOGEwMzU2MjhlYjNlNDA4NDQzNzFk
YTYzNGZhODI1OTEyNjYxYTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
aApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRl
bnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQs
IGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUpOwogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKLSAgICB2b2lkIGFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBUZXh0
dXJlJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOworICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gYXBwbHlGaWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
aW5kZXggOWM4NDY0MmNiNjQ4OTljNzI5YmM2OWZiYzliMGUxOGVlNjE1YmFjOS4uOWQ4M2M0YmQ4
NGUxZTFhMDk1MDAyODEzOGY0MjNmNmFlNDExZWYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAKQEAgLTMwNCw4ICszMDQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiBhcHBseUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgVAogICAgICAg
ICBmaWx0ZXJTdXJmYWNlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbCh0
YXJnZXRSZWN0LnNpemUoKSk7CiAgICAgfQogCi0gICAgZmlsdGVyU3VyZmFjZS0+YXBwbHlGaWx0
ZXJzKCpzb3VyY2UsIGZpbHRlcnMpOwotICAgIHJldHVybiBmaWx0ZXJTdXJmYWNlOworICAgIHJl
dHVybiBmaWx0ZXJTdXJmYWNlLT5hcHBseUZpbHRlcnMoKnNvdXJjZSwgZmlsdGVycyk7CiB9CiAj
ZW5kaWYKIApAQCAtNDQyLDcgKzQ0MSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzeW5j
Q29tcG9zaXRpbmdTdGF0ZVNlbGYoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdyCiAgICAg
bV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSA9IGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuVHJhbnNm
b3JtKCk7CiAgICAgbV9zdGF0ZS5vcGFjaXR5ID0gZ3JhcGhpY3NMYXllci0+b3BhY2l0eSgpOwog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBtX3N0YXRlLmZpbHRlcnMgPSBncmFwaGljc0xh
eWVyLT5maWx0ZXJzKCk7CisgICAgaWYgKGNoYW5nZU1hc2sgJiBGaWx0ZXJDaGFuZ2UpCisgICAg
ICAgIG1fc3RhdGUuZmlsdGVycyA9IGdyYXBoaWNzTGF5ZXItPmZpbHRlcnMoKTsKICNlbmRpZgog
ICAgIG1fZml4ZWRUb1ZpZXdwb3J0ID0gZ3JhcGhpY3NMYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCmluZGV4IDE1YjFm
NTE4ODFmN2M2MTk4ODkwZGI1Njg5ZjQzNjU3NDljNzVkMWEuLmE3NTljNWY0Y2ExNWNlNzVlMTk4
NWYyYzY2ZmEyYTk3ODE5OTQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJN
YW5hZ2VyLmNwcApAQCAtMjA2LDkgKzIwNiwyMjAgQEAgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFn
ZXI6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCkKIAogVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXI6On5UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpCiB7Ci0gICAgbV90ZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbU1hcC5jbGVhcigpOwogfQogCisjaWYgRU5BQkxFKENTU19GSUxURVJT
KQorU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjp+U3RhbmRhcmRGaWx0ZXJQcm9ncmFtKCkKK3sKKyAg
ICBnbERldGFjaFNoYWRlcihtX2lkLCBtX3ZlcnRleFNoYWRlcik7CisgICAgZ2xEZWxldGVTaGFk
ZXIobV92ZXJ0ZXhTaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKG1faWQsIG1fZnJhZ21lbnRT
aGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVyKG1fZnJhZ21lbnRTaGFkZXIpOworICAgIGdsRGVs
ZXRlUHJvZ3JhbShtX2lkKTsKK30KKworU3RhbmRhcmRGaWx0ZXJQcm9ncmFtOjpTdGFuZGFyZEZp
bHRlclByb2dyYW0oRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgOiBt
X2lkKDApCit7CisgICAgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlID0KKyAgICAgICAg
ICAgIFZFUlRFWF9TSEFERVIoCisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV92ZXJ0
ZXg7CisgICAgICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgYV90ZXhDb29yZDsKKyAgICAgICAg
ICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdl90ZXhDb29yZDsKKyAgICAgICAgICAgICAgICB2
b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHZf
dGV4Q29vcmQgPSB2ZWMyKGFfdGV4Q29vcmQpOworICAgICAgICAgICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IGFfdmVydGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisKKyNk
ZWZpbmUgU1RBTkRBUkRfRklMVEVSKHguLi4pIFwKKyAgICAgICAgT0VTMl9QUkVDSVNJT05fREVG
SU5JVElPTlNcCisgICAgICAgIE9FUzJfRlJBR01FTlRfU0hBREVSX0RFRkFVTFRfUFJFQ0lTSU9O
XAorICAgICAgICAidmFyeWluZyBoaWdocCB2ZWMyIHZfdGV4Q29vcmQ7XG4iXAorICAgICAgICAi
dW5pZm9ybSBoaWdocCBmbG9hdCB1X2Ftb3VudDtcbiJcCisgICAgICAgICJ1bmlmb3JtIHNhbXBs
ZXIyRCB1X3RleHR1cmU7XG4iXAorICAgICAgICAjeFwKKyAgICAgICAgInZvaWQgbWFpbih2b2lk
KVxuIHsgZ2xfRnJhZ0NvbG9yID0gc2hhZGUodGV4dHVyZTJEKHVfdGV4dHVyZSwgdl90ZXhDb29y
ZCkpOyB9IgorCisgICAgY29uc3QgY2hhciogZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSAwOworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6Cisg
ICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAg
ICAgbG93cCB2ZWM0IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBsb3dwIGZsb2F0IGFtb3VudCA9IDEuMCAtIHVfYW1vdW50OworICAgICAgICAg
ICAgICAgIHJldHVybiB2ZWM0KCgwLjIxMjYgKyAwLjc4NzQgKiBhbW91bnQpICogY29sb3IuciAr
ICgwLjcxNTIgLSAwLjcxNTIgKiBhbW91bnQpICogY29sb3IuZyArICgwLjA3MjIgLSAwLjA3MjIg
KiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4yMTI2
IC0gMC4yMTI2ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43MTUyICsgMC4yODQ4ICogYW1vdW50
KSAqIGNvbG9yLmcgKyAoMC4wNzIyIC0gMC4wNzIyICogYW1vdW50KSAqIGNvbG9yLmIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjEyNiAtIDAuMjEyNiAqIGFtb3VudCkgKiBjb2xv
ci5yICsgKDAuNzE1MiAtIDAuNzE1MiAqIGFtb3VudCkgKiBjb2xvci5nICsgKDAuMDcyMiArIDAu
OTI3OCAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNl
ID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3AgdmVj
NCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb3dwIGZsb2F0IGFtb3Vu
dCA9IDEuMCAtIHVfYW1vdW50OworICAgICAgICAgICAgICAgIHJldHVybiB2ZWM0KCgwLjM5MyAr
IDAuNjA3ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43NjkgLSAwLjc2OSAqIGFtb3VudCkgKiBj
b2xvci5nICsgKDAuMTg5IC0gMC4xODkgKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoMC4zNDkgLSAwLjM0OSAqIGFtb3VudCkgKiBjb2xvci5yICsgKDAu
Njg2ICsgMC4zMTQgKiBhbW91bnQpICogY29sb3IuZyArICgwLjE2OCAtIDAuMTY4ICogYW1vdW50
KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjcyIC0gMC4yNzIg
KiBhbW91bnQpICogY29sb3IuciArICgwLjUzNCAtIDAuNTM0ICogYW1vdW50KSAqIGNvbG9yLmcg
KyAoMC4xMzEgKyAwLjg2OSAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGZyYWdt
ZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0
IHNoYWRlKGxvd3AgdmVjNCBjb2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdmVjNCgoMC4yMTMgKyAwLjc4NyAqIHVfYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43MTUg
LSAwLjcxNSAqIHVfYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIgLSAwLjA3MiAqIHVfYW1vdW50
KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMjEzIC0gMC4yMTMg
KiB1X2Ftb3VudCkgKiBjb2xvci5yICsgKDAuNzE1ICsgMC4yODUgKiB1X2Ftb3VudCkgKiBjb2xv
ci5nICsgKDAuMDcyIC0gMC4wNzIgKiB1X2Ftb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgwLjIxMyAtIDAuMjEzICogdV9hbW91bnQpICogY29sb3IuciArICgw
LjcxNSAtIDAuNzE1ICogdV9hbW91bnQpICogY29sb3IuZyArICgwLjA3MiArIDAuOTI4ICogdV9h
bW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5hKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0g
U1RBTkRBUkRfRklMVEVSKAorICAgICAgICAgICAgbG93cCB2ZWM0IHNoYWRlKGxvd3AgdmVjNCBj
b2xvcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBoaWdocCBmbG9hdCBwaSA9IDMu
MTQxNTkyNjUzNTg5NzkzMjM4NDY7CisgICAgICAgICAgICAgICAgaGlnaHAgZmxvYXQgYyA9IGNv
cyh1X2Ftb3VudCAqIHBpIC8gMTgwLjApOworICAgICAgICAgICAgICAgIGhpZ2hwIGZsb2F0IHMg
PSBzaW4odV9hbW91bnQgKiBwaSAvIDE4MC4wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmVj
NChjb2xvci5yICogKDAuMjEzICsgYyAqIDAuNzg3IC0gcyAqIDAuMjEzKSArIGNvbG9yLmcgKiAo
MC43MTUgLSBjICogMC43MTUgLSBzICogMC43MTUpICsgY29sb3IuYiAqICgwLjA3MiAtIGMgKiAw
LjA3MiArIHMgKiAwLjkyOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuciAq
ICgwLjIxMyAtIGMgKiAwLjIxMyArIHMgKiAwLjE0MykgKyBjb2xvci5nICogKDAuNzE1ICsgYyAq
IDAuMjg1ICsgcyAqIDAuMTQwKSArIGNvbG9yLmIgKiAoMC4wNzIgLSBjICogMC4wNzIgLSBzICog
MC4yODMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLnIgKiAoMC4yMTMgLSBj
ICogMC4yMTMgLSBzICogMC43ODcpICsgIGNvbG9yLmcgKiAoMC43MTUgLSBjICogMC43MTUgKyBz
ICogMC43MTUpICsgY29sb3IuYiAqICgwLjA3MiArIGMgKiAwLjkyOCArIHMgKiAwLjA3MiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuYSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6
CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRfRklMVEVSKAorICAgICAg
ICAgICAgbG93cCBmbG9hdCBpbnZlcnQobG93cCBmbG9hdCBuKSB7IHJldHVybiAoMS4wIC0gbikg
KiB1X2Ftb3VudCArIG4gKiAoMS4wIC0gdV9hbW91bnQpOyB9CisgICAgICAgICAgICBsb3dwIHZl
YzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiB2ZWM0KGludmVydChjb2xvci5yKSwgaW52ZXJ0KGNvbG9yLmcpLCBpbnZlcnQoY29s
b3IuYiksIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICAgICAgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dwIHZlYzQg
c2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiB2ZWM0KGNvbG9yLnJnYiAqICgxLjAgKyB1X2Ftb3VudCksIGNvbG9yLmEpOworICAgICAg
ICAgICAgfQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNlID0gU1RBTkRBUkRf
RklMVEVSKAorICAgICAgICAgICAgbG93cCBmbG9hdCBjb250cmFzdChsb3dwIGZsb2F0IG4pIHsg
cmV0dXJuIChuIC0gMC41KSAqIHVfYW1vdW50ICsgMC41OyB9CisgICAgICAgICAgICBsb3dwIHZl
YzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiB2ZWM0KGNvbnRyYXN0KGNvbG9yLnIpLCBjb250cmFzdChjb2xvci5nKSwgY29udHJh
c3QoY29sb3IuYiksIGNvbG9yLmEpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAgICAgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dwIHZl
YzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybiB2ZWM0KGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEgKiB1X2Ftb3Vu
dCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UpCisgICAgICAgIHJldHVybjsKKyAgICBHTHVpbnQgdmVydGV4U2hhZGVyID0gZ2xDcmVhdGVT
aGFkZXIoR0xfVkVSVEVYX1NIQURFUik7CisgICAgR0x1aW50IGZyYWdtZW50U2hhZGVyID0gZ2xD
cmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSKTsKKyAgICBnbFNoYWRlclNvdXJjZSh2ZXJ0
ZXhTaGFkZXIsIDEsICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UsIDApOworICAgIGdsU2hhZGVyU291cmNl
KGZyYWdtZW50U2hhZGVyLCAxLCAmZnJhZ21lbnRTaGFkZXJTb3VyY2UsIDApOworICAgIEdMY2hh
ciBsb2dbMTAwXTsKKyAgICBHTGludCBsZW47CisgICAgR0x1aW50IHByb2dyYW1JRCA9IGdsQ3Jl
YXRlUHJvZ3JhbSgpOworICAgIGdsQ29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworICAgIGds
Q29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKGZy
YWdtZW50U2hhZGVyLCAxMDAsICZsZW4sIGxvZyk7CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3Jh
bUlELCB2ZXJ0ZXhTaGFkZXIpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW1JRCwgZnJhZ21l
bnRTaGFkZXIpOworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbUlEKTsKKworICAgIG1fdmVydGV4
QXR0cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtSUQsICJhX3ZlcnRleCIpOworICAg
IG1fdGV4Q29vcmRBdHRyaWIgPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW1JRCwgImFfdGV4
Q29vcmQiKTsKKyAgICBtX3RleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtSUQsICJ1X3RleHR1cmUiKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpTRVBJQToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklO
VkVSVDoKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJ
VFk6CisgICAgICAgIG1fdW5pZm9ybUxvY2F0aW9ucy5hbW91bnQgPSBnbEdldFVuaWZvcm1Mb2Nh
dGlvbihwcm9ncmFtSUQsICJ1X2Ftb3VudCIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgbV9pZCA9IHByb2dyYW1JRDsKKyAgICBtX3Zl
cnRleFNoYWRlciA9IHZlcnRleFNoYWRlcjsKKyAgICBtX2ZyYWdtZW50U2hhZGVyID0gZnJhZ21l
bnRTaGFkZXI7Cit9CisKK1Bhc3NSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBTdGFuZGFy
ZEZpbHRlclByb2dyYW06OmNyZWF0ZShGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlw
ZSkKK3sKKyAgICBSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gYWRvcHRS
ZWYobmV3IFN0YW5kYXJkRmlsdGVyUHJvZ3JhbSh0eXBlKSk7CisgICAgaWYgKCFwcm9ncmFtLT5t
X2lkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBwcm9ncmFtOworfQorCit2b2lk
IFN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6cHJlcGFyZShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG9w
ZXJhdGlvbikKK3sKKyAgICBkb3VibGUgYW1vdW50ID0gMDsKKyAgICBzd2l0Y2ggKG9wZXJhdGlv
bi5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVND
QUxFOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKKyAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6
CisgICAgICAgIGFtb3VudCA9IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24mPihvcGVyYXRpb24pLmFtb3VudCgpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpC
UklHSFRORVNTOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAgICAgYW1vdW50ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiY+KG9wZXJhdGlvbiku
YW1vdW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBnbFVzZVByb2dyYW0obV9pZCk7CisgICAgZ2xVbmlmb3JtMWYobV91bmlmb3Jt
TG9jYXRpb25zLmFtb3VudCwgYW1vdW50KTsKK30KKworUGFzc1JlZlB0cjxTdGFuZGFyZEZpbHRl
clByb2dyYW0+IFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpnZXRTaGFkZXJGb3JGaWx0ZXIo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXIpCit7CisgICAgUmVmUHRyPFN0YW5kYXJkRmls
dGVyUHJvZ3JhbT4gcHJvZ3JhbTsKKyAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUg
dHlwZSA9IGZpbHRlci5nZXRPcGVyYXRpb25UeXBlKCk7CisgICAgRmlsdGVyTWFwOjppdGVyYXRv
ciBpdGVyYXRvciA9IG1fZmlsdGVyTWFwLmZpbmQodHlwZSk7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1fZmlsdGVyTWFwLmVuZCgpKSB7CisgICAgICAgIHByb2dyYW0gPSBTdGFuZGFyZEZpbHRlclBy
b2dyYW06OmNyZWF0ZSh0eXBlKTsKKyAgICAgICAgaWYgKCFwcm9ncmFtKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAgICAgbV9maWx0ZXJNYXAuYWRkKHR5cGUsIHByb2dyYW0pOworICAg
IH0gZWxzZQorICAgICAgICBwcm9ncmFtID0gaXRlcmF0b3ItPnNlY29uZDsKKworICAgIHByb2dy
YW0tPnByZXBhcmUoZmlsdGVyKTsKKyAgICByZXR1cm4gcHJvZ3JhbTsKK30KKworI2VuZGlmCiB9
OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKaW5kZXgg
NWIzOWEwOTI4ZjJiYWZjMDExODNiZDRkMWI0NmVjYjdjMGI5NWVkMC4uOWQ5MTcwZTdiYmE1Yzlj
MmYyNGExYzYxMmVkNzgxMWVmYzYzODIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyLmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisj
aW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQml0bWFwVGV4dHVyZTsKQEAgLTY1LDYgKzY5LDM1IEBAIHByb3RlY3RlZDoK
ICAgICBHTGludCBtX29wYWNpdHlWYXJpYWJsZTsKIH07CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCitjbGFzcyBTdGFuZGFyZEZpbHRlclByb2dyYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxTdGFu
ZGFyZEZpbHRlclByb2dyYW0+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TdGFuZGFyZEZpbHRl
clByb2dyYW0oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZShjb25zdCBGaWx0ZXJPcGVyYXRp
b24mKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IGNyZWF0
ZShGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUpOworICAgIEdMdWludCB2ZXJ0ZXhBdHRy
aWIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleEF0dHJpYjsgfQorICAgIEdMdWludCB0ZXhDb29y
ZEF0dHJpYigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4Q29vcmRBdHRyaWI7IH0KKyAgICBHTHVpbnQg
dGV4dHVyZVVuaWZvcm0oKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVVbmlmb3JtTG9jYXRpb247
IH0KK3ByaXZhdGU6CisgICAgU3RhbmRhcmRGaWx0ZXJQcm9ncmFtKEZpbHRlck9wZXJhdGlvbjo6
T3BlcmF0aW9uVHlwZSk7CisgICAgR0x1aW50IG1faWQ7CisgICAgR0x1aW50IG1fdmVydGV4U2hh
ZGVyOworICAgIEdMdWludCBtX2ZyYWdtZW50U2hhZGVyOworICAgIEdMdWludCBtX3ZlcnRleEF0
dHJpYjsKKyAgICBHTHVpbnQgbV90ZXhDb29yZEF0dHJpYjsKKyAgICBHTHVpbnQgbV90ZXh0dXJl
VW5pZm9ybUxvY2F0aW9uOworICAgIHVuaW9uIHsKKyAgICAgICAgR0x1aW50IGFtb3VudDsKKyAg
ICAgICAgR0x1aW50IHN0ZGRldjsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIEdMdWlu
dCBzdGRkZXY7CisgICAgICAgICAgICBHTHVpbnQgY29sb3I7CisgICAgICAgICAgICBHTHVpbnQg
b2Zmc2V0OworICAgICAgICB9IHNoYWRvdzsKKyAgICB9IG1fdW5pZm9ybUxvY2F0aW9uczsKK307
CisjZW5kaWYKKwogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1TaW1wbGUgOiBwdWJs
aWMgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlPiBjcmVhdGUoKTsKQEAgLTEw
MSw2ICsxMzQsOCBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKTsK
ICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpOwogCisgICAgUGFzc1Jl
ZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IGdldFNoYWRlckZvckZpbHRlcihjb25zdCBGaWx0
ZXJPcGVyYXRpb24mKTsKKwogICAgIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0+IGdldFNoYWRlclByb2dyYW0oU2hhZGVyVHlwZSBzaGFkZXJUeXBlKQogICAgIHsKICAgICAg
ICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtOwpAQCAtMTI4LDYg
KzE2MywxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTaGFkZXJU
eXBlLCBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+LCBEZWZhdWx0SGFzaDxpbnQ+
OjpIYXNoLCBIYXNoVHJhaXRzPGludD4gPiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU1hcDsK
ICAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbU1hcCBtX3RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtTWFwOworCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHR5cGVkZWYgSGFzaE1h
cDxGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUsIFJlZlB0cjxTdGFuZGFyZEZpbHRlclBy
b2dyYW0+LCBEZWZhdWx0SGFzaDxpbnQ+OjpIYXNoLCBIYXNoVHJhaXRzPGludD4gPiBGaWx0ZXJN
YXA7CisgICAgRmlsdGVyTWFwIG1fZmlsdGVyTWFwOworI2VuZGlmCisKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYzZh
MTY3M2I0Y2Q0NTQyNDEzOTBmYmE5ZTZiOGI1NTdiMmMyNTBkMy4uODA0NTY4YzJkNDM5YmExZTRl
OTlhOWY2ZGQ0ZGUzZjc5NjJjZDMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTYxLDYgKzYxLDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KICNlbmRpZgogCisjaWYgVVNFKFVJ
X1NJREVfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlIDxXZWJD
b3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTEyNDEsNiArMTI0NSwxMTAgQEAgYm9v
bCBBcmd1bWVudENvZGVyPEtleWZyYW1lVmFsdWVMaXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgV2ViQ29yZToKIAogI2VuZGlmCiAKKyNpZiBVU0UoVUlfU0lERV9DT01QT1NJ
VElORykgJiYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25z
dCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIGVuY29kZXItPmVu
Y29kZVVJbnQzMihmaWx0ZXJzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZmls
dGVyID0gZmlsdGVycy5hdChpKTsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaWx0ZXItPmdldE9wZXJhdGlvblR5cGUoKTsKKyAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bSh0eXBlKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpTRVBJQToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpCUklHSFRORVNTOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgorICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6CisgICAgICAgICAgICBBcmd1
bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBCbHVy
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworICAg
ICAgICAgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogc2hhZG93ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZpbHRlcik7CisgICAgICAg
ICAgICBBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+bG9j
YXRpb24oKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihzaGFkb3ctPnN0ZERl
dmlhdGlvbigpKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUoZW5j
b2Rlciwgc2hhZG93LT5jb2xvcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30K
KworYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKQoreworICAgIHVpbnQzMl90IHNpemU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50
MzIoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zID0gZmlsdGVycy5vcGVyYXRpb25zKCk7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBGaWx0ZXJPcGVy
YXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZTsKKyAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gZmlsdGVyOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0odHlwZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpTRVBJQToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICAgICAg
ZG91YmxlIHZhbHVlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFs
dWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9
IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6SU5WRVJUOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgorICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6T1BBQ0lUWTogeworICAgICAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogeworICAg
ICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxM
ZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
bGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworICAgICAgICAgICAgSW50UG9pbnQg
bG9jYXRpb247CisgICAgICAgICAgICBpbnQzMl90IHN0ZERldmlhdGlvbjsKKyAgICAgICAgICAg
IENvbG9yIGNvbG9yOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPEludFBvaW50Pjo6
ZGVjb2RlKGRlY29kZXIsIGxvY2F0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDMyKHN0ZERldmlhdGlvbikpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENv
ZGVyPENvbG9yPjo6ZGVjb2RlKGRlY29kZXIsIGNvbG9yKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUobG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IsIHR5cGUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpbHRlcikKKyAgICAgICAgICAgIG9wZXJhdGlv
bnMuYXBwZW5kKGZpbHRlcik7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYK
KwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwMzNlMTc5NGNiYzI3ZDhjZDc5ODk4
MDZiYWMyM2I4ODE5MmIzZGQ4Li5kMDJmNWZjMTdjOGQ0YzU1OGMyMzJlNmY0NjUwYjI3OWEyZGY0
ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC04NSw2ICs4NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAjZW5kaWYKIAorI2lm
IFVTRShVSV9TSURFX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKK30KKyNlbmRpZgorCiBu
YW1lc3BhY2UgQ29yZUlQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtPiB7CkBAIC0zMDEsNiArMzA3LDEzIEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkFuaW1hdGlvbj4gPiB7CiB9Owog
I2VuZGlmCiAKKyNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElORykgJiYgRU5BQkxFKENTU19GSUxU
RVJTKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0
IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworfTsKKyNlbmRpZgor
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdD4gewogICAgIHN0YXRpYyB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlz
dCYga2V5ZnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXll
clRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhv
c3RQcm94eS5jcHAKaW5kZXggN2FjMDk2MDk2ZWFhNTcwZjIxODRiOTA3YTRhYWJjMjc1OTBiM2Fm
YS4uZDE3MjcxMDk3YWJhM2NhZjczY2UyNDJiMmViZWQ1Mzc5NzAyNzhlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTEwNSw2ICsx
MDUsMTMgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnNldENvbXBvc2l0aW5nTGF5ZXJDaGls
ZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3IKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5k
KCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbiwgbV9yZW5kZXJlci5nZXQo
KSwgaWQsIGNoaWxkcmVuKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIExh
eWVyVHJlZUhvc3RQcm94eTo6c2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCBp
ZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBkaXNwYXRjaFVwZGF0
ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzLCBtX3JlbmRlcmVy
LmdldCgpLCBpZCwgZmlsdGVycykpOworfQorI2VuZGlmCisKIHZvaWQgTGF5ZXJUcmVlSG9zdFBy
b3h5OjpkaWRSZW5kZXJGcmFtZSgpCiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmV2ViTGF5
ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzLCBtX3JlbmRlcmVyLmdldCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggYzA4
ZDYzN2YzNDY1ZTMxNGE5ZWZmMDUwYjU3ZGViOTNkMDJkYWFjYS4uM2Q2N2M3MzZmNGNlY2E4ZDIy
ODQ5ODA4Mjg2YjM4YzkzMjA4ODdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXllclRyZWVIb3N0UHJveHkuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+TGF5ZXJUcmVlSG9zdFByb3h5KCk7CiAgICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVyU3Rh
dGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZvJik7CiAgICAgdm9pZCBzZXRDb21wb3Np
dGluZ0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+Jik7
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXllckZp
bHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworI2Vu
ZGlmCiAgICAgdm9pZCBkZWxldGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAgIHZv
aWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViTGF5ZXJJRCk7CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ3YTFlZTMwMGFjYWQw
ODQzOWYyOWYyZmU4ZjVhZDU3ODM2NDZlYjMuLjFjZGFlMGQzMzUwZjhiMmRjNTQyZjE5MjkwNmVh
ZWYxZjY2MDYyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRy
ZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
eWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNiArMjEsOSBAQAogbWVzc2FnZXMg
LT4gTGF5ZXJUcmVlSG9zdFByb3h5IHsKICAgICBTZXRDb21wb3NpdGluZ0xheWVyU3RhdGUodWlu
dDMyX3QgaWQsIFdlYktpdDo6V2ViTGF5ZXJJbmZvIGxheWVySW5mbykKICAgICBTZXRDb21wb3Np
dGluZ0xheWVyQ2hpbGRyZW4odWludDMyX3QgaWQsIFZlY3Rvcjx1aW50MzJfdD4gY2hpbGRyZW4p
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIFNldENvbXBvc2l0aW5nTGF5ZXJGaWx0ZXJz
KHVpbnQzMl90IGlkLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnMpCisjZW5kaWYK
ICAgICBTZXRSb290Q29tcG9zaXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAgICBEZWxldGVDb21w
b3NpdGluZ0xheWVyKHVpbnQzMl90IGlkKQogICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50MzJf
dCBsYXllcklELCBpbnQgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRhcmdldFJlY3QsIFdlYktp
dDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IGFkOTRiN2U0MThiYjE4ZWNi
NDBlNjgyYzJjYzI0YWRmMDc2MjdhYjQuLjdhODM2YWUzOTc0MzQ2NTEzNDVkZWZkODQ0M2ZiZTQy
YzliNDRiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRy
ZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJl
ZVJlbmRlcmVyLmNwcApAQCAtMjA2LDYgKzIwNiwxOCBAQCB2b2lkIFdlYkxheWVyVHJlZVJlbmRl
cmVyOjpzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxXZWJMYXll
cgogICAgIGxheWVyLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CiB9CiAKKyNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCit2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckZpbHRlcnMoV2Vi
TGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBlbnN1
cmVMYXllcihpZCk7CisgICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9sYXllcnMuZmluZChp
ZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fbGF5ZXJzLmVuZCgpKTsKKworICAgIEdyYXBoaWNzTGF5
ZXIqIGxheWVyID0gaXQtPnNlY29uZDsKKyAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
K30KKyNlbmRpZgorCiB2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKFdl
YkxheWVySUQgaWQsIGNvbnN0IFdlYkxheWVySW5mbyYgbGF5ZXJJbmZvKQogewogICAgIGVuc3Vy
ZUxheWVyKGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXll
clRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJl
bmRlcmVyLmgKaW5kZXggNWNiZmFkZDBiODZlZGRiMzU1Yzk3YzFmZjVmODQxYTZhMjA1NTZiOS4u
OTgzYzgwZDJhMmQ4ZTc1MTBmMWUwODQ1OGZlYTAwZTk4MDk5ZjYyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTc3LDYgKzc3LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJvb3RMYXllcklEKFdlYkxheWVySUQpOwogICAgIHZv
aWQgc2V0TGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25zdCBWZWN0b3I8V2ViTGF5ZXJJRD4m
KTsKICAgICB2b2lkIHNldExheWVyU3RhdGUoV2ViTGF5ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZv
Jik7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZvaWQgc2V0TGF5ZXJGaWx0ZXJzKFdl
YkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKKyNlbmRpZgorCiAg
ICAgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIGludCwgZmxvYXQgc2NhbGUpOwogICAgIHZv
aWQgcmVtb3ZlVGlsZShXZWJMYXllcklELCBpbnQpOwogICAgIHZvaWQgdXBkYXRlVGlsZShXZWJM
YXllcklELCBpbnQsIGNvbnN0IFRpbGVVcGRhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3Bw
CmluZGV4IDgwNTJhMDI2MTY3OTgxMTYxZjMwMmQ5ZTk3YTEwZGZkYTVmMjhkZTcuLjczZWRmMjRj
MzU1YTExNjgzOTk1ODMwYzQ2MTY5M2ZlYTEwNzVhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVy
LmNwcApAQCAtNzQsNiArNzQsMTUgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpkaWRDaGFuZ2VD
aGlsZHJlbigpCiAgICAgICAgIGNsaWVudCgpLT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7CiB9
CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmRpZENo
YW5nZUZpbHRlcnMoKQoreworICAgIG1fc2hvdWxkU3luY0ZpbHRlcnMgPSB0cnVlOworICAgIGlm
IChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPm5vdGlmeVN5bmNSZXF1aXJlZCh0aGlzKTsK
K30KKyNlbmRpZgorCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFNob3VsZFVwZGF0ZVZpc2li
bGVSZWN0KCkKIHsKICAgICBpZiAoIXRyYW5zZm9ybSgpLmlzQWZmaW5lKCkpCkBAIC0zMDksNiAr
MzE4LDE3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXko
KQogICAgIHNldENvbnRlbnRzVG9JbWFnZShpbWFnZS5nZXQoKSk7CiB9CiAKKyNpZiBFTkFCTEUo
Q1NTX0ZJTFRFUlMpCitib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgbmV3RmlsdGVycykKK3sKKyAgICBpZiAoZmlsdGVycygpID09IG5ld0Zp
bHRlcnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRpZENoYW5nZUZpbHRlcnMoKTsKKyAg
ICByZXR1cm4gR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhuZXdGaWx0ZXJzKTsKK30KKyNlbmRp
ZgorCisKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBp
bWFnZSkKIHsKICAgICBpZiAoaW1hZ2UgPT0gbV9pbWFnZSkKQEAgLTQxMyw2ICs0MzMsMTYgQEAg
dm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ2hpbGRyZW4oKQogICAgIG1fd2ViR3JhcGhpY3NM
YXllckNsaWVudC0+c3luY0xheWVyQ2hpbGRyZW4obV9pZCwgY2hpbGRJRHMpOwogfQogCisjaWYg
RU5BQkxFKENTU19GSUxURVJTKQordm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jRmlsdGVycygp
Cit7CisgICAgaWYgKCFtX3Nob3VsZFN5bmNGaWx0ZXJzKQorICAgICAgICByZXR1cm47CisgICAg
bV9zaG91bGRTeW5jRmlsdGVycyA9IGZhbHNlOworICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVu
dC0+c3luY0xheWVyRmlsdGVycyhtX2lkLCBmaWx0ZXJzKCkpOworfQorI2VuZGlmCisKIHZvaWQg
V2ViR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogIHsKICAgICBpZiAoIW1fc2hvdWxk
U3luY0xheWVyU3RhdGUpCkBAIC00NTIsNiArNDgyLDkgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVy
OjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGNvbXB1dGVUcmFu
c2Zvcm1lZFZpc2libGVSZWN0KCk7CiAgICAgc3luY0NoaWxkcmVuKCk7CiAgICAgc3luY0xheWVy
U3RhdGUoKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgc3luY0ZpbHRlcnMoKTsKKyNl
bmRpZgogICAgIHVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVy
LmgKaW5kZXggMGViYmI1MWRjYzYzZThkOWFmMGNiOWYyOGQyMmE4YTU3ZDhiZGJlNS4uYzIyYTg4
MjQzMTJhMzJlZTE4NWZhOTVhNDMxMmYxYTFhMTUwOGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVy
LmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlSW1h
Z2VCYWNraW5nU3RvcmUoaW50NjRfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJT
dGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcklE
PiYpID0gMDsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdmlydHVhbCB2b2lkIHN5bmNM
YXllckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYp
ID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMYXllcihXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3Jl
OjpXZWJHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRMYXll
cnMoKSA9IDA7CkBAIC0xMDQsNiArMTA3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlzaWJs
ZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoYm9vbCk7CiAKQEAgLTEz
OCw2ICsxNDQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50
KFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNsaWVudCopOwogICAgIHZvaWQgc3luY0NoaWxkcmVu
KCk7CiAgICAgdm9pZCBzeW5jTGF5ZXJTdGF0ZSgpOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
KyAgICB2b2lkIHN5bmNGaWx0ZXJzKCk7CisjZW5kaWYKICAgICB2b2lkIGVuc3VyZUltYWdlQmFj
a2luZ1N0b3JlKCk7CiAKICAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0KCk7CkBAIC0xNTcsMTIg
KzE2NiwxNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVWaXNpYmxlUmVjdDog
MTsKICAgICBib29sIG1fc2hvdWxkU3luY0xheWVyU3RhdGU6IDE7CiAgICAgYm9vbCBtX3Nob3Vs
ZFN5bmNDaGlsZHJlbjogMTsKKyAgICBib29sIG1fc2hvdWxkU3luY0ZpbHRlcnM6IDE7CiAgICAg
Ym9vbCBtX2ZpeGVkVG9WaWV3cG9ydCA6IDE7CiAKICAgICB2b2lkIG5vdGlmeUNoYW5nZSgpOwog
ICAgIHZvaWQgZGlkQ2hhbmdlR2VvbWV0cnkoKTsKICAgICB2b2lkIGRpZENoYW5nZUxheWVyU3Rh
dGUoKTsKICAgICB2b2lkIGRpZENoYW5nZUNoaWxkcmVuKCk7CisjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQorICAgIHZvaWQgZGlkQ2hhbmdlRmlsdGVycygpOworI2VuZGlmCisKICAgICB2b2lkIGNy
ZWF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgYm9vbCBzZWxmT3JBbmNlc3RvckhhdmVOb25BZmZp
bmVUcmFuc2Zvcm1zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCmluZGV4IGFiMTIwY2Q1MDVjZDY2MWI1OWVm
NDkzMjE3NGI3ZWY4ZDg1YmRkODIuLjk2NDM2NmU4ZDY2NTA1ODA4Y2JkMDgzM2ZiZDc0NDU3NmFh
ZGNmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9M
YXllclRyZWVIb3N0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCkBAIC0yNTYsNiArMjU2LDE0IEBAIHZvaWQgTGF5ZXJU
cmVlSG9zdFF0OjpzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8
V2ViTGF5ZXJJRD4mCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0
UHJveHk6OlNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwgY2hpbGRyZW4pKTsKIH0KIAor
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKK3ZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzeW5jTGF5ZXJG
aWx0ZXJzKFdlYkxheWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7
CisgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6TGF5ZXJUcmVlSG9zdFByb3h5OjpTZXRDb21wb3NpdGluZ0xheWVyRmlsdGVycyhpZCwg
ZmlsdGVycykpOworfQorI2VuZGlmCisKIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjphdHRhY2hMYXll
cihXZWJHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBBU1NFUlQoIW1fcmVnaXN0ZXJlZExh
eWVycy5jb250YWlucyhsYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCmluZGV4IGUzOTQ5MGFiMWQzM2JjNzg3
Y2MxOTE3ZWJkYzNjYTc1YTU4ODk2YWUuLmVlY2I2MmU2M2I2MDU5MDAzYzE3NTBkMmRmMDY4MzBj
MmRmYzJiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9x
dC9MYXllclRyZWVIb3N0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgKQEAgLTc2LDYgKzc2LDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jTGF5ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9y
PFdlYkxheWVySUQ+Jik7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZpcnR1YWwgdm9p
ZCBzeW5jTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJh
dGlvbnMmKTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMYXllcihXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7
Cg==
</data>
<flag name="commit-queue"
          id="145527"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139812</attachid>
            <date>2012-05-02 07:23:53 -0700</date>
            <delta_ts>2012-05-02 10:35:32 -0700</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>39715</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">Y29tbWl0IGQzOWRmYWJiMjU4ZWYwMDU0NzcxMGJkZDA5ZGE4NzM1NjQzMDFlNGUKQXV0aG9yOiBO
bydhbSBSb3NlbnRoYWwgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KRGF0ZTogICBGcmkgQXBy
IDI3IDE2OjQ4OjU1IDIwMTIgLTA3MDAKCiAgICBmaWx0ZXJzCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYzOTQ5
N2YuLmVhMzk5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMi0wNC0yOCAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFtUZXht
YXBdIEVuYWJsZSBjc3MgZmlsdGVycyBpbiBUZXh0dXJlTWFwcGVyR0wKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzc4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSm9jZWx5biBUdXJjb3R0ZS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBjb2xv
ciBmaWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTC4gQmx1ciBhbmQgc2hhZG93IHdvdWxkIGJlIGRv
bmUgaW4gYQorICAgICAgICBkaWZmZXJlbnQgcGF0Y2guCisKKyAgICAgICAgTW9kaWZpZWQgQml0
bWFwVGV4dHVyZTo6YXBwbHlGaWx0ZXJzIHRvIHJldHVybiBhIHRleHR1cmUsIHNpbmNlIEdMIGNh
bm5vdCBwYWludCBhIHRleHR1cmUKKyAgICAgICAgaW50byBpdHNlbGYuCisgICAgICAgIENyZWF0
ZWQgYSBzaGFkZXIgbWFwIGZvciBzdGFuZGFyZCBmaWx0ZXJzLCBzaW5jZSBhbGwgb2YgdGhlbSB3
b3JrIG1vcmUgb3IgbGVzcyB0aGUgc2FtZSB3YXkKKyAgICAgICAgd2l0aCBhIHNpbmdsZSB1bmlm
b3JtLiBBZGRlZCB0aGUgY29sb3JpemF0aW9uIHNoYWRlcnMgYmFzZWQgb24gdGhlIFczQyBmaWx0
ZXIgc3BlYywgYXMKKyAgICAgICAgYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiBGRUZpbHRlclJlbmRl
cmVyLmNwcCBhbmQgRkVDb2xvck1hdHJpeC5jcHAuCisgICAgICAgIFdlIHVzZSB0d28gc3dhcHBp
bmcgdGV4dHVyZXMgdG8gcmVuZGVyIHRoZSBmaWx0ZXJzLgorCisgICAgICAgIENvdmVyZWQgYnkg
dGVzdHMgaW4gY3NzMy9maWx0ZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6
YWNxdWlyZVRleHR1cmVGcm9tUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OmFw
cGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdMOjpkcmF3RmlsdGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdM
OjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpiaW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6
CisgICAgICAgIChUZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAoQml0bWFwVGV4dHVyZUdMKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6YXBw
bHlGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmg6CisgICAgICAgIChCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVTZWxmKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6On5UZXh0dXJlTWFw
cGVyU2hhZGVyTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6flN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnByZXBhcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlckZvckZpbHRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0YW5kYXJkRmlsdGVyUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnZlcnRleEF0
dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpTdGFuZGFyZEZpbHRlclByb2dyYW06OnRleENvb3Jk
QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6dGV4dHVy
ZVVuaWZvcm0pOgorICAgICAgICAoVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIpOgorCiAyMDEy
LTA0LTI5ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAg
ICAgICAgW1RleG1hcF0gVGV4dHVyZU1hcHBlckxheWVyIHVzZXMgaW50ZXJtZWRpYXRlIHN1cmZh
Y2VzIHRvbyBlYWdlcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggMThmYjA4Ni4uY2VlNDViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6
ZSYgcwogICAgICAgICBtX3RleHR1cmVQb29sLmFwcGVuZChzZWxlY3RlZFRleHR1cmUpOwogICAg
IH0KIAotICAgIHNlbGVjdGVkVGV4dHVyZS0+cmVzZXQoc2l6ZSk7CisgICAgc2VsZWN0ZWRUZXh0
dXJlLT5yZXNldChzaXplLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhKTsKICAgICByZXR1
cm4gc2VsZWN0ZWRUZXh0dXJlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAppbmRleCAwNDViMmE4Li5jYTMx
ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIGlubGlu
ZSBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9ydHNBbHBo
YSk7IH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlG
aWx0ZXJzKGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJikgeyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFw
cGx5RmlsdGVycyhjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpIHsgcmV0dXJuIHRoaXM7IH0KICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IGZmM2M4YWQuLmRmOWI4YjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCkBAIC01MDMsOCArNTAzLDUxIEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRh
dGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiAj
ZW5kaWYKIAogICAgIHVwZGF0ZUNvbnRlbnRzKGltYWdlRGF0YSwgdGFyZ2V0UmVjdCwgb2Zmc2V0
LCBieXRlc1BlckxpbmUpOworfQorCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBUZXh0
dXJlTWFwcGVyR0w6OmRyYXdGaWx0ZXJlZChjb25zdCBCaXRtYXBUZXh0dXJlJiBzb3VyY2VUZXh0
dXJlLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJiBmaWx0ZXIpCit7CisgICAgLy8gRm9yIHN0YW5kYXJkIGZpbHRlcnMsIHdlIGFsd2F5
cyBkcmF3IHRoZSB3aG9sZSB0ZXh0dXJlIHdpdGhvdXQgdHJhbnNmb3JtYXRpb25zLgorICAgIFJl
ZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRh
KCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyRm9yRmlsdGVyKGZpbHRlcik7
CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRyYXdUZXh0dXJlKHNvdXJjZVRleHR1cmUs
IEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHNvdXJjZVRleHR1cmUuc2l6ZSgpKSwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgMSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
R0xfQ01EKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS0+dmVydGV4QXR0cmliKCkp
KTsKKyAgICBHTF9DTUQoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwcm9ncmFtLT50ZXhDb29y
ZEF0dHJpYigpKSk7CisgICAgR0xfQ01EKGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCkpOwor
ICAgIEdMX0NNRChnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHN0YXRpY19jYXN0PGNvbnN0
IEJpdG1hcFRleHR1cmVHTCY+KHNvdXJjZVRleHR1cmUpLmlkKCkpKTsKKyAgICBnbFVuaWZvcm0x
aShwcm9ncmFtLT50ZXh0dXJlVW5pZm9ybSgpLCAwKTsKKyAgICBjb25zdCBHTGZsb2F0IHRhcmdl
dFZlcnRpY2VzW10gPSB7LTEsIC0xLCAxLCAtMSwgMSwgMSwgLTEsIDF9OworICAgIGNvbnN0IEdM
ZmxvYXQgc291cmNlVmVydGljZXNbXSA9IHswLCAwLCAxLCAwLCAxLCAxLCAwLCAxfTsKKyAgICBH
TF9DTUQoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0tPnZlcnRleEF0dHJpYigpLCAyLCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsIHRhcmdldFZlcnRpY2VzKSk7CisgICAgR0xfQ01EKGdsVmVy
dGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLT50ZXhDb29yZEF0dHJpYigpLCAyLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIHNvdXJjZVZlcnRpY2VzKSk7CisgICAgR0xfQ01EKGdsRGlzYWJsZShHTF9C
TEVORCkpOworICAgIEdMX0NNRChnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KSk7
CisgICAgR0xfQ01EKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0tPnZlcnRleEF0
dHJpYigpKSk7CisgICAgR0xfQ01EKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0t
PnRleENvb3JkQXR0cmliKCkpKTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRt
YXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4
dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gcHJldmlvdXNTdXJmYWNlID0gbV90ZXh0dXJlTWFwcGVyLT5kYXRhKCkuY3Vy
cmVudFN1cmZhY2U7CisKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc291cmNlID0gdGhpczsK
KyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGFyZ2V0ID0gbV90ZXh0dXJlTWFwcGVyLT5hY3F1
aXJlVGV4dHVyZUZyb21Qb29sKG1fdGV4dHVyZVNpemUpOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgZmlsdGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZpbHRlciA9IGZpbHRlcnMuYXQoaSk7CisgICAgICAgIEFTU0VSVChmaWx0ZXIpOwogCisgICAg
ICAgIG1fdGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2UodGFyZ2V0LmdldCgpKTsKKyAgICAgICAg
bV90ZXh0dXJlTWFwcGVyLT5kcmF3RmlsdGVyZWQoaSA/ICpzb3VyY2UuZ2V0KCkgOiBjb250ZW50
VGV4dHVyZSwgY29udGVudFRleHR1cmUsICpmaWx0ZXIpOworICAgICAgICBzdGQ6OnN3YXAoc291
cmNlLCB0YXJnZXQpOworICAgIH0KKworICAgIG1fdGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uo
cHJldmlvdXNTdXJmYWNlLmdldCgpKTsKKyAgICByZXR1cm4gc291cmNlOwogfQorI2VuZGlmCiAK
IHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY3JlYXRlUHJvamVjdGlvbk1hdHJp
eChjb25zdCBJbnRTaXplJiBzaXplLCBib29sIG1pcnJvcmVkKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5o
CmluZGV4IGQ2Y2NlZWQuLjQyNzk0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTY1LDYgKzY1
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlQ29udGVudHMoTmF0aXZlSW1h
Z2VQdHIsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBBY2Nl
bGVyYXRpb25Nb2RlIGFjY2VsZXJhdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBPcGVuR0xNb2Rl
OyB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdm9pZCBkcmF3RmlsdGVyZWQoY29u
c3QgQml0bWFwVGV4dHVyZSYgc291cmNlVGV4dHVyZSwgY29uc3QgQml0bWFwVGV4dHVyZSYgY29u
dGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpOworI2VuZGlmCisKKwogcHJpdmF0
ZToKIAogICAgIHN0cnVjdCBDbGlwU3RhdGUgewpAQCAtMTE2LDYgKzEyMSwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1Blckxp
bmUpOwogICAgIHZpcnR1YWwgYm9vbCBpc0JhY2tlZEJ5T3BlbkdMKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVu
dFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIEdMdWludCBtX2lkOwogICAgIEludFNpemUgbV90ZXh0dXJlU2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1h
Z2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKaW5kZXggY2RjNzIyZi4uMjA4YjUzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4
dHVyZSYgdGV4dHVyZSwgY29uc3QgRgogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotdm9p
ZCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmFwcGx5RmlsdGVycyhjb25zdCBCaXRtYXBUZXh0
dXJlJiBjb250ZW50VGV4dHVyZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK1Bh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjphcHBseUZp
bHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBy
ZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjcmVhdGUoKTsKICAgICByZW5kZXJlci0+
c2V0U291cmNlSW1hZ2VSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNvbnRlbnRU
ZXh0dXJlLnNpemUoKSkpOwpAQCAtMTIyLDYgKzEyMiw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUlt
YWdlQnVmZmVyOjphcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYgY29udGVudFRleHR1
cmUsCiAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKHN0YXRpY19jYXN0PGNvbnN0IEJpdG1h
cFRleHR1cmVJbWFnZUJ1ZmZlciY+KGNvbnRlbnRUZXh0dXJlKS5tX2ltYWdlLmdldCgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludDo6emVybygpKTsKICAgICByZW5kZXJlci0+YXBwbHko
KTsKICAgICBtX2ltYWdlLT5jb250ZXh0KCktPmRyYXdJbWFnZUJ1ZmZlcihyZW5kZXJlci0+b3V0
cHV0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlbmRlcmVyLT5vdXRwdXRSZWN0KCkpOworICAg
IHJldHVybiB0aGlzOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZm
ZXIuaAppbmRleCAzN2M5OGFiLi44YTAzNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlci5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UG9pbnQmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3Qm
IHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSk7
CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIHZvaWQgYXBwbHlGaWx0ZXJzKGNvbnN0IEJp
dG1hcFRleHR1cmUmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcAppbmRleCA5Yzg0NjQyLi45ZDgzYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcApAQCAtMzA0LDggKzMwNCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IGFwcGx5RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBUCiAgICAgICAg
IGZpbHRlclN1cmZhY2UgPSB0ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHRh
cmdldFJlY3Quc2l6ZSgpKTsKICAgICB9CiAKLSAgICBmaWx0ZXJTdXJmYWNlLT5hcHBseUZpbHRl
cnMoKnNvdXJjZSwgZmlsdGVycyk7Ci0gICAgcmV0dXJuIGZpbHRlclN1cmZhY2U7CisgICAgcmV0
dXJuIGZpbHRlclN1cmZhY2UtPmFwcGx5RmlsdGVycygqc291cmNlLCBmaWx0ZXJzKTsKIH0KICNl
bmRpZgogCkBAIC00NDIsNyArNDQxLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnN5bmND
b21wb3NpdGluZ1N0YXRlU2VsZihHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogZ3IKICAgICBt
X3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtID0gZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW5UcmFuc2Zv
cm0oKTsKICAgICBtX3N0YXRlLm9wYWNpdHkgPSBncmFwaGljc0xheWVyLT5vcGFjaXR5KCk7CiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIG1fc3RhdGUuZmlsdGVycyA9IGdyYXBoaWNzTGF5
ZXItPmZpbHRlcnMoKTsKKyAgICBpZiAoY2hhbmdlTWFzayAmIEZpbHRlckNoYW5nZSkKKyAgICAg
ICAgbV9zdGF0ZS5maWx0ZXJzID0gZ3JhcGhpY3NMYXllci0+ZmlsdGVycygpOwogI2VuZGlmCiAg
ICAgbV9maXhlZFRvVmlld3BvcnQgPSBncmFwaGljc0xheWVyLT5maXhlZFRvVmlld3BvcnQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKaW5kZXggMTViMWY1
MS4uYTc1OWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3Bw
CkBAIC0yMDYsOSArMjA2LDIyMCBAQCBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6VGV4dHVy
ZU1hcHBlclNoYWRlck1hbmFnZXIoKQogCiBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcjo6flRl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCkKIHsKLSAgICBtX3RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtTWFwLmNsZWFyKCk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitTdGFuZGFy
ZEZpbHRlclByb2dyYW06On5TdGFuZGFyZEZpbHRlclByb2dyYW0oKQoreworICAgIGdsRGV0YWNo
U2hhZGVyKG1faWQsIG1fdmVydGV4U2hhZGVyKTsKKyAgICBnbERlbGV0ZVNoYWRlcihtX3ZlcnRl
eFNoYWRlcik7CisgICAgZ2xEZXRhY2hTaGFkZXIobV9pZCwgbV9mcmFnbWVudFNoYWRlcik7Cisg
ICAgZ2xEZWxldGVTaGFkZXIobV9mcmFnbWVudFNoYWRlcik7CisgICAgZ2xEZWxldGVQcm9ncmFt
KG1faWQpOworfQorCitTdGFuZGFyZEZpbHRlclByb2dyYW06OlN0YW5kYXJkRmlsdGVyUHJvZ3Jh
bShGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICA6IG1faWQoMCkKK3sK
KyAgICBjb25zdCBjaGFyKiB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQorICAgICAgICAgICAgVkVSVEVY
X1NIQURFUigKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3ZlcnRleDsKKyAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3RleENvb3JkOworICAgICAgICAgICAgICAgIHZh
cnlpbmcgaGlnaHAgdmVjMiB2X3RleENvb3JkOworICAgICAgICAgICAgICAgIHZvaWQgbWFpbih2
b2lkKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdl90ZXhDb29yZCA9
IHZlYzIoYV90ZXhDb29yZCk7CisgICAgICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gYV92
ZXJ0ZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKworI2RlZmluZSBTVEFO
REFSRF9GSUxURVIoeC4uLikgXAorICAgICAgICBPRVMyX1BSRUNJU0lPTl9ERUZJTklUSU9OU1wK
KyAgICAgICAgT0VTMl9GUkFHTUVOVF9TSEFERVJfREVGQVVMVF9QUkVDSVNJT05cCisgICAgICAg
ICJ2YXJ5aW5nIGhpZ2hwIHZlYzIgdl90ZXhDb29yZDtcbiJcCisgICAgICAgICJ1bmlmb3JtIGhp
Z2hwIGZsb2F0IHVfYW1vdW50O1xuIlwKKyAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHVfdGV4
dHVyZTtcbiJcCisgICAgICAgICN4XAorICAgICAgICAidm9pZCBtYWluKHZvaWQpXG4geyBnbF9G
cmFnQ29sb3IgPSBzaGFkZSh0ZXh0dXJlMkQodV90ZXh0dXJlLCB2X3RleENvb3JkKSk7IH0iCisK
KyAgICBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSA9IDA7CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dwIHZl
YzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGxvd3AgZmxvYXQgYW1vdW50ID0gMS4wIC0gdV9hbW91bnQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHZlYzQoKDAuMjEyNiArIDAuNzg3NCAqIGFtb3VudCkgKiBjb2xvci5yICsgKDAuNzE1MiAt
IDAuNzE1MiAqIGFtb3VudCkgKiBjb2xvci5nICsgKDAuMDcyMiAtIDAuMDcyMiAqIGFtb3VudCkg
KiBjb2xvci5iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjIxMjYgLSAwLjIxMjYg
KiBhbW91bnQpICogY29sb3IuciArICgwLjcxNTIgKyAwLjI4NDggKiBhbW91bnQpICogY29sb3Iu
ZyArICgwLjA3MjIgLSAwLjA3MjIgKiBhbW91bnQpICogY29sb3IuYiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoMC4yMTI2IC0gMC4yMTI2ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC43
MTUyIC0gMC43MTUyICogYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4wNzIyICsgMC45Mjc4ICogYW1v
dW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuYSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTRVBJQToKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFS
RF9GSUxURVIoCisgICAgICAgICAgICBsb3dwIHZlYzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxvd3AgZmxvYXQgYW1vdW50ID0gMS4wIC0g
dV9hbW91bnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYzQoKDAuMzkzICsgMC42MDcgKiBh
bW91bnQpICogY29sb3IuciArICgwLjc2OSAtIDAuNzY5ICogYW1vdW50KSAqIGNvbG9yLmcgKyAo
MC4xODkgLSAwLjE4OSAqIGFtb3VudCkgKiBjb2xvci5iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICgwLjM0OSAtIDAuMzQ5ICogYW1vdW50KSAqIGNvbG9yLnIgKyAoMC42ODYgKyAwLjMx
NCAqIGFtb3VudCkgKiBjb2xvci5nICsgKDAuMTY4IC0gMC4xNjggKiBhbW91bnQpICogY29sb3Iu
YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4yNzIgLSAwLjI3MiAqIGFtb3VudCkg
KiBjb2xvci5yICsgKDAuNTM0IC0gMC41MzQgKiBhbW91bnQpICogY29sb3IuZyArICgwLjEzMSAr
IDAuODY5ICogYW1vdW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29sb3IuYSk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dwIHZlYzQgc2hhZGUobG93
cCB2ZWM0IGNvbG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB2ZWM0
KCgwLjIxMyArIDAuNzg3ICogdV9hbW91bnQpICogY29sb3IuciArICgwLjcxNSAtIDAuNzE1ICog
dV9hbW91bnQpICogY29sb3IuZyArICgwLjA3MiAtIDAuMDcyICogdV9hbW91bnQpICogY29sb3Iu
YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4yMTMgLSAwLjIxMyAqIHVfYW1vdW50
KSAqIGNvbG9yLnIgKyAoMC43MTUgKyAwLjI4NSAqIHVfYW1vdW50KSAqIGNvbG9yLmcgKyAoMC4w
NzIgLSAwLjA3MiAqIHVfYW1vdW50KSAqIGNvbG9yLmIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKDAuMjEzIC0gMC4yMTMgKiB1X2Ftb3VudCkgKiBjb2xvci5yICsgKDAuNzE1IC0gMC43
MTUgKiB1X2Ftb3VudCkgKiBjb2xvci5nICsgKDAuMDcyICsgMC45MjggKiB1X2Ftb3VudCkgKiBj
b2xvci5iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLmEpOworICAgICAgICAg
ICAgfQorICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6SFVFX1JPVEFURToKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9G
SUxURVIoCisgICAgICAgICAgICBsb3dwIHZlYzQgc2hhZGUobG93cCB2ZWM0IGNvbG9yKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGhpZ2hwIGZsb2F0IHBpID0gMy4xNDE1OTI2NTM1
ODk3OTMyMzg0NjsKKyAgICAgICAgICAgICAgICBoaWdocCBmbG9hdCBjID0gY29zKHVfYW1vdW50
ICogcGkgLyAxODAuMCk7CisgICAgICAgICAgICAgICAgaGlnaHAgZmxvYXQgcyA9IHNpbih1X2Ft
b3VudCAqIHBpIC8gMTgwLjApOworICAgICAgICAgICAgICAgIHJldHVybiB2ZWM0KGNvbG9yLnIg
KiAoMC4yMTMgKyBjICogMC43ODcgLSBzICogMC4yMTMpICsgY29sb3IuZyAqICgwLjcxNSAtIGMg
KiAwLjcxNSAtIHMgKiAwLjcxNSkgKyBjb2xvci5iICogKDAuMDcyIC0gYyAqIDAuMDcyICsgcyAq
IDAuOTI4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5yICogKDAuMjEzIC0g
YyAqIDAuMjEzICsgcyAqIDAuMTQzKSArIGNvbG9yLmcgKiAoMC43MTUgKyBjICogMC4yODUgKyBz
ICogMC4xNDApICsgY29sb3IuYiAqICgwLjA3MiAtIGMgKiAwLjA3MiAtIHMgKiAwLjI4MyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuciAqICgwLjIxMyAtIGMgKiAwLjIxMyAt
IHMgKiAwLjc4NykgKyAgY29sb3IuZyAqICgwLjcxNSAtIGMgKiAwLjcxNSArIHMgKiAwLjcxNSkg
KyBjb2xvci5iICogKDAuMDcyICsgYyAqIDAuOTI4ICsgcyAqIDAuMDcyKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2xvci5hKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKKyAgICAgICAg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisgICAgICAgICAgICBsb3dw
IGZsb2F0IGludmVydChsb3dwIGZsb2F0IG4pIHsgcmV0dXJuICgxLjAgLSBuKSAqIHVfYW1vdW50
ICsgbiAqICgxLjAgLSB1X2Ftb3VudCk7IH0KKyAgICAgICAgICAgIGxvd3AgdmVjNCBzaGFkZShs
b3dwIHZlYzQgY29sb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZl
YzQoaW52ZXJ0KGNvbG9yLnIpLCBpbnZlcnQoY29sb3IuZyksIGludmVydChjb2xvci5iKSwgY29s
b3IuYSk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgorICAgICAgICBmcmFnbWVudFNoYWRlclNv
dXJjZSA9IFNUQU5EQVJEX0ZJTFRFUigKKyAgICAgICAgICAgIGxvd3AgdmVjNCBzaGFkZShsb3dw
IHZlYzQgY29sb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZlYzQo
Y29sb3IucmdiICogKDEuMCArIHVfYW1vdW50KSwgY29sb3IuYSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05U
UkFTVDoKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTVEFOREFSRF9GSUxURVIoCisg
ICAgICAgICAgICBsb3dwIGZsb2F0IGNvbnRyYXN0KGxvd3AgZmxvYXQgbikgeyByZXR1cm4gKG4g
LSAwLjUpICogdV9hbW91bnQgKyAwLjU7IH0KKyAgICAgICAgICAgIGxvd3AgdmVjNCBzaGFkZShs
b3dwIHZlYzQgY29sb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZl
YzQoY29udHJhc3QoY29sb3IuciksIGNvbnRyYXN0KGNvbG9yLmcpLCBjb250cmFzdChjb2xvci5i
KSwgY29sb3IuYSk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgorICAgICAgICBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IFNUQU5EQVJEX0ZJTFRFUigKKyAgICAgICAgICAgIGxvd3AgdmVjNCBzaGFkZShs
b3dwIHZlYzQgY29sb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZl
YzQoY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSAqIHVfYW1vdW50KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFmcmFnbWVudFNoYWRlclNvdXJjZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEdMdWludCB2ZXJ0ZXhTaGFkZXIgPSBnbENyZWF0ZVNoYWRlcihHTF9W
RVJURVhfU0hBREVSKTsKKyAgICBHTHVpbnQgZnJhZ21lbnRTaGFkZXIgPSBnbENyZWF0ZVNoYWRl
cihHTF9GUkFHTUVOVF9TSEFERVIpOworICAgIGdsU2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwg
MSwgJnZlcnRleFNoYWRlclNvdXJjZSwgMCk7CisgICAgZ2xTaGFkZXJTb3VyY2UoZnJhZ21lbnRT
aGFkZXIsIDEsICZmcmFnbWVudFNoYWRlclNvdXJjZSwgMCk7CisgICAgR0xjaGFyIGxvZ1sxMDBd
OworICAgIEdMaW50IGxlbjsKKyAgICBHTHVpbnQgcHJvZ3JhbUlEID0gZ2xDcmVhdGVQcm9ncmFt
KCk7CisgICAgZ2xDb21waWxlU2hhZGVyKHZlcnRleFNoYWRlcik7CisgICAgZ2xDb21waWxlU2hh
ZGVyKGZyYWdtZW50U2hhZGVyKTsKKyAgICBnbEdldFNoYWRlckluZm9Mb2coZnJhZ21lbnRTaGFk
ZXIsIDEwMCwgJmxlbiwgbG9nKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtSUQsIHZlcnRl
eFNoYWRlcik7CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbUlELCBmcmFnbWVudFNoYWRlcik7
CisgICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtSUQpOworCisgICAgbV92ZXJ0ZXhBdHRyaWIgPSBn
bEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW1JRCwgImFfdmVydGV4Iik7CisgICAgbV90ZXhDb29y
ZEF0dHJpYiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbUlELCAiYV90ZXhDb29yZCIpOwor
ICAgIG1fdGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW1JRCwgInVfdGV4dHVyZSIpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgor
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKKyAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6SFVFX1JPVEFURToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgorICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpDT05UUkFTVDoKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICAg
ICAgbV91bmlmb3JtTG9jYXRpb25zLmFtb3VudCA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW1JRCwgInVfYW1vdW50Iik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBtX2lkID0gcHJvZ3JhbUlEOworICAgIG1fdmVydGV4U2hhZGVy
ID0gdmVydGV4U2hhZGVyOworICAgIG1fZnJhZ21lbnRTaGFkZXIgPSBmcmFnbWVudFNoYWRlcjsK
K30KKworUGFzc1JlZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IFN0YW5kYXJkRmlsdGVyUHJv
Z3JhbTo6Y3JlYXRlKEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlKQoreworICAg
IFJlZlB0cjxTdGFuZGFyZEZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBhZG9wdFJlZihuZXcgU3Rh
bmRhcmRGaWx0ZXJQcm9ncmFtKHR5cGUpKTsKKyAgICBpZiAoIXByb2dyYW0tPm1faWQpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHByb2dyYW07Cit9CisKK3ZvaWQgU3RhbmRhcmRG
aWx0ZXJQcm9ncmFtOjpwcmVwYXJlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgb3BlcmF0aW9uKQor
eworICAgIGRvdWJsZSBhbW91bnQgPSAwOworICAgIHN3aXRjaCAob3BlcmF0aW9uLmdldE9wZXJh
dGlvblR5cGUoKSkgeworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpT
QVRVUkFURToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKKyAgICAgICAg
YW1vdW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
biY+KG9wZXJhdGlvbikuYW1vdW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpJTlZFUlQ6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6
CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgorICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpPUEFDSVRZOgorICAgICAgICBhbW91bnQgPSBzdGF0aWNfY2FzdDxjb25zdCBCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJj4ob3BlcmF0aW9uKS5hbW91bnQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGdsVXNlUHJvZ3JhbShtX2lkKTsKKyAgICBnbFVuaWZvcm0xZihtX3VuaWZvcm1Mb2NhdGlvbnMu
YW1vdW50LCBhbW91bnQpOworfQorCitQYXNzUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4g
VGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI6OmdldFNoYWRlckZvckZpbHRlcihjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIGZpbHRlcikKK3sKKyAgICBSZWZQdHI8U3RhbmRhcmRGaWx0ZXJQcm9ncmFt
PiBwcm9ncmFtOworICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlID0gZmls
dGVyLmdldE9wZXJhdGlvblR5cGUoKTsKKyAgICBGaWx0ZXJNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9y
ID0gbV9maWx0ZXJNYXAuZmluZCh0eXBlKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9maWx0ZXJN
YXAuZW5kKCkpIHsKKyAgICAgICAgcHJvZ3JhbSA9IFN0YW5kYXJkRmlsdGVyUHJvZ3JhbTo6Y3Jl
YXRlKHR5cGUpOworICAgICAgICBpZiAoIXByb2dyYW0pCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICBtX2ZpbHRlck1hcC5hZGQodHlwZSwgcHJvZ3JhbSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHByb2dyYW0gPSBpdGVyYXRvci0+c2Vjb25kOworCisgICAgcHJvZ3JhbS0+cHJlcGFy
ZShmaWx0ZXIpOworICAgIHJldHVybiBwcm9ncmFtOworfQorCisjZW5kaWYKIH07CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaAppbmRleCA1YjM5YTA5Li45
ZDkxNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaApAQCAtMzEs
NiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJPcGVy
YXRpb25zLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCaXRtYXBU
ZXh0dXJlOwpAQCAtNjUsNiArNjksMzUgQEAgcHJvdGVjdGVkOgogICAgIEdMaW50IG1fb3BhY2l0
eVZhcmlhYmxlOwogfTsKIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKK2NsYXNzIFN0YW5kYXJk
RmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4g
eworcHVibGljOgorICAgIHZpcnR1YWwgflN0YW5kYXJkRmlsdGVyUHJvZ3JhbSgpOworICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4gY3JlYXRlKEZpbHRlck9wZXJhdGlvbjo6
T3BlcmF0aW9uVHlwZSk7CisgICAgR0x1aW50IHZlcnRleEF0dHJpYigpIGNvbnN0IHsgcmV0dXJu
IG1fdmVydGV4QXR0cmliOyB9CisgICAgR0x1aW50IHRleENvb3JkQXR0cmliKCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXhDb29yZEF0dHJpYjsgfQorICAgIEdMdWludCB0ZXh0dXJlVW5pZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZVVuaWZvcm1Mb2NhdGlvbjsgfQorcHJpdmF0ZToKKyAgICBT
dGFuZGFyZEZpbHRlclByb2dyYW0oRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlKTsKKyAg
ICBHTHVpbnQgbV9pZDsKKyAgICBHTHVpbnQgbV92ZXJ0ZXhTaGFkZXI7CisgICAgR0x1aW50IG1f
ZnJhZ21lbnRTaGFkZXI7CisgICAgR0x1aW50IG1fdmVydGV4QXR0cmliOworICAgIEdMdWludCBt
X3RleENvb3JkQXR0cmliOworICAgIEdMdWludCBtX3RleHR1cmVVbmlmb3JtTG9jYXRpb247Cisg
ICAgdW5pb24geworICAgICAgICBHTHVpbnQgYW1vdW50OworICAgICAgICBHTHVpbnQgc3RkZGV2
OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgR0x1aW50IHN0ZGRldjsKKyAgICAgICAg
ICAgIEdMdWludCBjb2xvcjsKKyAgICAgICAgICAgIEdMdWludCBvZmZzZXQ7CisgICAgICAgIH0g
c2hhZG93OworICAgIH0gbV91bmlmb3JtTG9jYXRpb25zOworfTsKKyNlbmRpZgorCiBjbGFzcyBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW1TaW1wbGU+IGNyZWF0ZSgpOwpAQCAtMTAxLDYgKzEzNCw4IEBAIHB1Ymxp
YzoKICAgICBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpOwogICAgIHZpcnR1YWwgflRleHR1
cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCk7CiAKKyAgICBQYXNzUmVmUHRyPFN0YW5kYXJkRmlsdGVy
UHJvZ3JhbT4gZ2V0U2hhZGVyRm9yRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpOworCiAg
ICAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gZ2V0U2hhZGVyUHJvZ3Jh
bShTaGFkZXJUeXBlIHNoYWRlclR5cGUpCiAgICAgewogICAgICAgICBSZWZQdHI8VGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0+IHByb2dyYW07CkBAIC0xMjgsNiArMTYzLDEyIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFNoYWRlclR5cGUsIFJlZlB0cjxUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbT4sIERlZmF1bHRIYXNoPGludD46Okhhc2gsIEhhc2hUcmFpdHM8
aW50PiA+IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtTWFwOwogICAgIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtTWFwIG1fdGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1NYXA7CisKKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdHlwZWRlZiBIYXNoTWFwPEZpbHRlck9wZXJhdGlvbjo6
T3BlcmF0aW9uVHlwZSwgUmVmUHRyPFN0YW5kYXJkRmlsdGVyUHJvZ3JhbT4sIERlZmF1bHRIYXNo
PGludD46Okhhc2gsIEhhc2hUcmFpdHM8aW50PiA+IEZpbHRlck1hcDsKKyAgICBGaWx0ZXJNYXAg
bV9maWx0ZXJNYXA7CisjZW5kaWYKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDAwMjA3ODAuLjVk
OWRkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0wNC0yOCAgTm8nYW0gUm9z
ZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFtUZXhtYXBdIEVu
YWJsZSBjc3MgZmlsdGVycyBpbiBUZXh0dXJlTWFwcGVyR0wKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzc4CisKKyAgICAgICAgQWRkIHRoZSBwbHVt
YmluZyBpbiB0aGUgdWktc2lkZSBjb21wb3NpdGluZyBjb2RlIGluIFF0IHRvIHN1cHBvcnQgZmls
dGVycy4KKyAgICAgICAgU2VyaWFsaXplIHRoZSBmaWx0ZXIgb3BlcmF0aW9ucyBmb3IgYSBsYXll
ciB3aGVuIGl0J3MgY2hhbmdlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBKb2NlbHluIFR1cmNv
dHRlLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAg
ICAgIChDb3JlSVBDKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENv
cmVJUEM6Ojo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5ZXJUcmVlSG9z
dFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3RQcm94eTo6c2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlUmVuZGVyZXI6OnNldExheWVyRmls
dGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmg6CisgICAg
ICAgIChXZWJMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlRmlsdGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdyYXBoaWNzTGF5ZXI6OnN5bmNGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChXZWJHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkdyYXBoaWNzTGF5
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0Ojpz
eW5jTGF5ZXJGaWx0ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJU
cmVlSG9zdFF0Lmg6CisgICAgICAgIChMYXllclRyZWVIb3N0UXQpOgorCiAyMDEyLTA0LTMwICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFZhbGlkYXRlIGtl
eXByZXNzIGNvbW1hbmQgbmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggYzZhMTY3My4uODA0NTY4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTYxLDYgKzYxLDEw
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KICNl
bmRpZgogCisjaWYgVVNFKFVJX1NJREVfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShDU1NfRklMVEVS
UykKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTEyNDEs
NiArMTI0NSwxMTAgQEAgYm9vbCBBcmd1bWVudENvZGVyPEtleWZyYW1lVmFsdWVMaXN0Pjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZToKIAogI2VuZGlmCiAKKyNpZiBV
U0UoVUlfU0lERV9DT01QT1NJVElORykgJiYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQor
eworICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihmaWx0ZXJzLnNpemUoKSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogZmlsdGVyID0gZmlsdGVycy5hdChpKTsKKyAgICAgICAgRmlsdGVyT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUgPSBmaWx0ZXItPmdldE9wZXJhdGlvblR5cGUoKTsK
KyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRW51bSh0eXBlKTsKKyAgICAgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlNBVFVSQVRFOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKKyAg
ICAgICAgICAgIGVuY29kZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50KCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgorICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZ
OgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6
CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0
aWNfY2FzdDxjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+c3RkRGV2aWF0aW9u
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpE
Uk9QX1NIQURPVzogeworICAgICAgICAgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlv
biogc2hhZG93ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+
KGZpbHRlcik7CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZW5jb2RlKGVu
Y29kZXIsIHNoYWRvdy0+bG9jYXRpb24oKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVJ
bnQzMihzaGFkb3ctPnN0ZERldmlhdGlvbigpKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8
Q29sb3I+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5jb2xvcigpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIHVpbnQzMl90IHNpemU7CisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGVVSW50MzIoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zID0gZmlsdGVycy5v
cGVyYXRpb25zKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZTsKKyAgICAgICAgUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZUVudW0odHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OlNBVFVSQVRFOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFU
RTogeworICAgICAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGVEb3VibGUodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZSh2YWx1ZSwgdHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6QlJJR0hUTkVTUzoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogeworICAgICAgICAgICAgZG91
YmxlIHZhbHVlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6QkxVUjogeworICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgbGVuZ3RoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBCbHVyRmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUobGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworICAg
ICAgICAgICAgSW50UG9pbnQgbG9jYXRpb247CisgICAgICAgICAgICBpbnQzMl90IHN0ZERldmlh
dGlvbjsKKyAgICAgICAgICAgIENvbG9yIGNvbG9yOworICAgICAgICAgICAgaWYgKCFBcmd1bWVu
dENvZGVyPEludFBvaW50Pjo6ZGVjb2RlKGRlY29kZXIsIGxvY2F0aW9uKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDMy
KHN0ZERldmlhdGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKCFBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKGRlY29kZXIsIGNvbG9yKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBEcm9wU2hh
ZG93RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3Is
IHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpbHRlcikKKyAg
ICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKGZpbHRlcik7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisjZW5kaWYKKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwMzNl
MTc5Li5kMDJmNWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCkBAIC04NSw2ICs4NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAjZW5k
aWYKIAorI2lmIFVTRShVSV9TSURFX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKK30KKyNl
bmRpZgorCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtPiB7CkBAIC0zMDEsNiArMzA3LDEzIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkFuaW1hdGlvbj4g
PiB7CiB9OwogI2VuZGlmCiAKKyNpZiBVU0UoVUlfU0lERV9DT01QT1NJVElORykgJiYgRU5BQkxF
KENTU19GSUxURVJTKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb25zPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworfTsK
KyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdD4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpLZXlmcmFt
ZVZhbHVlTGlzdCYga2V5ZnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
eWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggN2FjMDk2MC4uZDE3MjcxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTEwNSw2ICsx
MDUsMTMgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnNldENvbXBvc2l0aW5nTGF5ZXJDaGls
ZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3IKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5k
KCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbiwgbV9yZW5kZXJlci5nZXQo
KSwgaWQsIGNoaWxkcmVuKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIExh
eWVyVHJlZUhvc3RQcm94eTo6c2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCBp
ZCwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBkaXNwYXRjaFVwZGF0
ZShiaW5kKCZXZWJMYXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJGaWx0ZXJzLCBtX3JlbmRlcmVy
LmdldCgpLCBpZCwgZmlsdGVycykpOworfQorI2VuZGlmCisKIHZvaWQgTGF5ZXJUcmVlSG9zdFBy
b3h5OjpkaWRSZW5kZXJGcmFtZSgpCiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmV2ViTGF5
ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzLCBtX3JlbmRlcmVyLmdldCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggYzA4
ZDYzNy4uM2Q2N2M3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVy
VHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVI
b3N0UHJveHkuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGF5ZXJU
cmVlSG9zdFByb3h5KCk7CiAgICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVyU3RhdGUoV2ViTGF5
ZXJJRCwgY29uc3QgV2ViTGF5ZXJJbmZvJik7CiAgICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVy
Q2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+Jik7CisjaWYgRU5B
QkxFKENTU19GSUxURVJTKQorICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdMYXllckZpbHRlcnMoV2Vi
TGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworI2VuZGlmCiAgICAg
dm9pZCBkZWxldGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQpOwogICAgIHZvaWQgc2V0Um9v
dENvbXBvc2l0aW5nTGF5ZXIoV2ViTGF5ZXJJRCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXll
clRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ3YTFlZTMuLjFjZGFlMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjEsNiArMjEsOSBAQAogbWVzc2FnZXMgLT4gTGF5ZXJUcmVlSG9zdFBy
b3h5IHsKICAgICBTZXRDb21wb3NpdGluZ0xheWVyU3RhdGUodWludDMyX3QgaWQsIFdlYktpdDo6
V2ViTGF5ZXJJbmZvIGxheWVySW5mbykKICAgICBTZXRDb21wb3NpdGluZ0xheWVyQ2hpbGRyZW4o
dWludDMyX3QgaWQsIFZlY3Rvcjx1aW50MzJfdD4gY2hpbGRyZW4pCisjaWYgRU5BQkxFKENTU19G
SUxURVJTKQorICAgIFNldENvbXBvc2l0aW5nTGF5ZXJGaWx0ZXJzKHVpbnQzMl90IGlkLCBXZWJD
b3JlOjpGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnMpCisjZW5kaWYKICAgICBTZXRSb290Q29tcG9z
aXRpbmdMYXllcih1aW50MzJfdCBpZCkKICAgICBEZWxldGVDb21wb3NpdGluZ0xheWVyKHVpbnQz
Ml90IGlkKQogICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCBpbnQgdGls
ZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRhcmdldFJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUlu
Zm8gdXBkYXRlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJM
YXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwCmluZGV4IGFkOTRiN2UuLjdhODM2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMjA2LDYgKzIw
NiwxOCBAQCB2b2lkIFdlYkxheWVyVHJlZVJlbmRlcmVyOjpzZXRMYXllckNoaWxkcmVuKFdlYkxh
eWVySUQgaWQsIGNvbnN0IFZlY3RvcjxXZWJMYXllcgogICAgIGxheWVyLT5zZXRDaGlsZHJlbihj
aGlsZHJlbik7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIFdlYkxheWVyVHJl
ZVJlbmRlcmVyOjpzZXRMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCBpZCwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBlbnN1cmVMYXllcihpZCk7CisgICAgTGF5ZXJNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9sYXllcnMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fbGF5
ZXJzLmVuZCgpKTsKKworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gaXQtPnNlY29uZDsKKyAg
ICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkxheWVy
VHJlZVJlbmRlcmVyOjpzZXRMYXllclN0YXRlKFdlYkxheWVySUQgaWQsIGNvbnN0IFdlYkxheWVy
SW5mbyYgbGF5ZXJJbmZvKQogewogICAgIGVuc3VyZUxheWVyKGlkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggNWNiZmFkZC4uOTgz
YzgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJl
bmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJlbmRl
cmVyLmgKQEAgLTc3LDYgKzc3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJvb3RMYXllcklE
KFdlYkxheWVySUQpOwogICAgIHZvaWQgc2V0TGF5ZXJDaGlsZHJlbihXZWJMYXllcklELCBjb25z
dCBWZWN0b3I8V2ViTGF5ZXJJRD4mKTsKICAgICB2b2lkIHNldExheWVyU3RhdGUoV2ViTGF5ZXJJ
RCwgY29uc3QgV2ViTGF5ZXJJbmZvJik7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZv
aWQgc2V0TGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJh
dGlvbnMmKTsKKyNlbmRpZgorCiAgICAgdm9pZCBjcmVhdGVUaWxlKFdlYkxheWVySUQsIGludCwg
ZmxvYXQgc2NhbGUpOwogICAgIHZvaWQgcmVtb3ZlVGlsZShXZWJMYXllcklELCBpbnQpOwogICAg
IHZvaWQgdXBkYXRlVGlsZShXZWJMYXllcklELCBpbnQsIGNvbnN0IFRpbGVVcGRhdGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDgwNTJhMDIuLjczZWRmMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmNwcApAQCAtNzQsNiArNzQsMTUgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVy
OjpkaWRDaGFuZ2VDaGlsZHJlbigpCiAgICAgICAgIGNsaWVudCgpLT5ub3RpZnlTeW5jUmVxdWly
ZWQodGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIFdlYkdyYXBoaWNz
TGF5ZXI6OmRpZENoYW5nZUZpbHRlcnMoKQoreworICAgIG1fc2hvdWxkU3luY0ZpbHRlcnMgPSB0
cnVlOworICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPm5vdGlmeVN5bmNSZXF1
aXJlZCh0aGlzKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFNob3Vs
ZFVwZGF0ZVZpc2libGVSZWN0KCkKIHsKICAgICBpZiAoIXRyYW5zZm9ybSgpLmlzQWZmaW5lKCkp
CkBAIC0zMDksNiArMzE4LDE3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNO
ZWVkc0Rpc3BsYXkoKQogICAgIHNldENvbnRlbnRzVG9JbWFnZShpbWFnZS5nZXQoKSk7CiB9CiAK
KyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgbmV3RmlsdGVycykKK3sKKyAgICBpZiAoZmlsdGVy
cygpID09IG5ld0ZpbHRlcnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRpZENoYW5nZUZp
bHRlcnMoKTsKKyAgICByZXR1cm4gR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhuZXdGaWx0ZXJz
KTsKK30KKyNlbmRpZgorCisKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0lt
YWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UgPT0gbV9pbWFnZSkKQEAgLTQxMyw2
ICs0MzMsMTYgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ2hpbGRyZW4oKQogICAgIG1f
d2ViR3JhcGhpY3NMYXllckNsaWVudC0+c3luY0xheWVyQ2hpbGRyZW4obV9pZCwgY2hpbGRJRHMp
OwogfQogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBXZWJHcmFwaGljc0xheWVyOjpz
eW5jRmlsdGVycygpCit7CisgICAgaWYgKCFtX3Nob3VsZFN5bmNGaWx0ZXJzKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9zaG91bGRTeW5jRmlsdGVycyA9IGZhbHNlOworICAgIG1fd2ViR3JhcGhp
Y3NMYXllckNsaWVudC0+c3luY0xheWVyRmlsdGVycyhtX2lkLCBmaWx0ZXJzKCkpOworfQorI2Vu
ZGlmCisKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogIHsKICAgICBp
ZiAoIW1fc2hvdWxkU3luY0xheWVyU3RhdGUpCkBAIC00NTIsNiArNDgyLDkgQEAgdm9pZCBXZWJH
cmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAg
IGNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCk7CiAgICAgc3luY0NoaWxkcmVuKCk7CiAg
ICAgc3luY0xheWVyU3RhdGUoKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgc3luY0Zp
bHRlcnMoKTsKKyNlbmRpZgogICAgIHVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhp
Y3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmgKaW5kZXggMGViYmI1MS4uYzIyYTg4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
SW1hZ2VCYWNraW5nU3RvcmUoaW50NjRfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5
ZXJTdGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNMYXllckNoaWxkcmVuKFdlYkxheWVySUQsIGNvbnN0IFZlY3RvcjxXZWJMYXll
cklEPiYpID0gMDsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgdmlydHVhbCB2b2lkIHN5
bmNMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
cyYpID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMYXllcihXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpXZWJHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRM
YXllcnMoKSA9IDA7CkBAIC0xMDQsNiArMTA3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vmlz
aWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBGbG9hdFBvaW50Jik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYpOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmKTsKKyNlbmRpZgogCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoYm9vbCk7CiAKQEAg
LTEzOCw2ICsxNDQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJHcmFwaGljc0xheWVyQ2xp
ZW50KFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNsaWVudCopOwogICAgIHZvaWQgc3luY0NoaWxk
cmVuKCk7CiAgICAgdm9pZCBzeW5jTGF5ZXJTdGF0ZSgpOworI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKKyAgICB2b2lkIHN5bmNGaWx0ZXJzKCk7CisjZW5kaWYKICAgICB2b2lkIGVuc3VyZUltYWdl
QmFja2luZ1N0b3JlKCk7CiAKICAgICB2b2lkIGFkanVzdFZpc2libGVSZWN0KCk7CkBAIC0xNTcs
MTIgKzE2NiwxNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVWaXNpYmxlUmVj
dDogMTsKICAgICBib29sIG1fc2hvdWxkU3luY0xheWVyU3RhdGU6IDE7CiAgICAgYm9vbCBtX3No
b3VsZFN5bmNDaGlsZHJlbjogMTsKKyAgICBib29sIG1fc2hvdWxkU3luY0ZpbHRlcnM6IDE7CiAg
ICAgYm9vbCBtX2ZpeGVkVG9WaWV3cG9ydCA6IDE7CiAKICAgICB2b2lkIG5vdGlmeUNoYW5nZSgp
OwogICAgIHZvaWQgZGlkQ2hhbmdlR2VvbWV0cnkoKTsKICAgICB2b2lkIGRpZENoYW5nZUxheWVy
U3RhdGUoKTsKICAgICB2b2lkIGRpZENoYW5nZUNoaWxkcmVuKCk7CisjaWYgRU5BQkxFKENTU19G
SUxURVJTKQorICAgIHZvaWQgZGlkQ2hhbmdlRmlsdGVycygpOworI2VuZGlmCisKICAgICB2b2lk
IGNyZWF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgYm9vbCBzZWxmT3JBbmNlc3RvckhhdmVOb25B
ZmZpbmVUcmFuc2Zvcm1zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwCmluZGV4IGFiMTIwY2QuLjk2NDM2NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRy
ZWVIb3N0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9M
YXllclRyZWVIb3N0UXQuY3BwCkBAIC0yNTYsNiArMjU2LDE0IEBAIHZvaWQgTGF5ZXJUcmVlSG9z
dFF0OjpzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8V2ViTGF5
ZXJJRD4mCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6
OlNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwgY2hpbGRyZW4pKTsKIH0KIAorI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKK3ZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzeW5jTGF5ZXJGaWx0ZXJz
KFdlYkxheWVySUQgaWQsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAg
bV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
TGF5ZXJUcmVlSG9zdFByb3h5OjpTZXRDb21wb3NpdGluZ0xheWVyRmlsdGVycyhpZCwgZmlsdGVy
cykpOworfQorI2VuZGlmCisKIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjphdHRhY2hMYXllcihXZWJH
cmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBBU1NFUlQoIW1fcmVnaXN0ZXJlZExheWVycy5j
b250YWlucyhsYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCmluZGV4IGUzOTQ5MGEuLmVlY2I2MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0
UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVl
SG9zdFF0LmgKQEAgLTc2LDYgKzc2LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBmbG9hdCBzY2FsZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJT
dGF0ZShXZWJMYXllcklELCBjb25zdCBXZWJMYXllckluZm8mKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCwgY29uc3QgVmVjdG9yPFdlYkxheWVySUQ+Jik7
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJGaWx0
ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKKyNlbmRp
ZgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMYXllcihXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVy
Kik7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139836</attachid>
            <date>2012-05-02 10:35:44 -0700</date>
            <delta_ts>2012-05-02 11:26:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-75778-20120502103543.patch</filename>
            <type>text/plain</type>
            <size>1403</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYwM2Q1NzIzNmRhNzg4
NTlkNzk0ZTQzNjdjNjIzNDFiNjM0OTYxZi4uOWRhNmZlMGQ1MTEyZWEwZWQ5NTM0MWE4MTM0NDVk
YTg4OTRlODMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA1LTAyICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1RleG1h
cF0gRW5hYmxlIGNzcyBmaWx0ZXJzIGluIFRleHR1cmVNYXBwZXJHTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzgKKworICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeCB0byBncmVlbmlmeSB0aGUgUXQgTWluaW1hbCBib3QuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaDoK
KwogMjAxMi0wNC0yOCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29t
PgogCiAgICAgICAgIFtRdF0gRW5hYmxlIENTUyBzaGFkZXJzIGluIFF0IChzb2Z0d2FyZSBtb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaAppbmRleCA5ZDkxNzBlN2Ji
YTVjOWMyZjI0YTFjNjEyZWQ3ODExZWZjNjM4MjFiLi5kMDU5M2U2YzdmZDg5YzUzYWQ0ODhmMjQ0
Y2MyMzBiY2MwOTY4MjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIu
aApAQCAtMTM0LDcgKzEzNCw5IEBAIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlcigpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCk7CiAKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgUGFzc1JlZlB0cjxTdGFuZGFyZEZpbHRlclByb2dy
YW0+IGdldFNoYWRlckZvckZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb24mKTsKKyNlbmRpZgog
CiAgICAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gZ2V0U2hhZGVyUHJv
Z3JhbShTaGFkZXJUeXBlIHNoYWRlclR5cGUpCiAgICAgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>