<?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>97964</bug_id>
          
          <creation_ts>2012-09-29 07:22:52 -0700</creation_ts>
          <short_desc>Web Inspector: NMI make String* instrumentation non intrusive</short_desc>
          <delta_ts>2012-10-05 01:58:57 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>98125</dependson>
          <blocked>98500</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>benjamin</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>731192</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-29 07:22:52 -0700</bug_when>
    <thetext>EOM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731193</commentid>
    <comment_count>1</comment_count>
      <attachid>166361</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-29 07:27:41 -0700</bug_when>
    <thetext>Created attachment 166361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731194</commentid>
    <comment_count>2</comment_count>
      <attachid>166361</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-29 07:40:02 -0700</bug_when>
    <thetext>Comment on attachment 166361
Patch

Attachment 166361 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14084213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731197</commentid>
    <comment_count>3</comment_count>
      <attachid>166361</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-29 07:45:15 -0700</bug_when>
    <thetext>Comment on attachment 166361
Patch

Attachment 166361 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14091212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731198</commentid>
    <comment_count>4</comment_count>
      <attachid>166361</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-29 07:49:52 -0700</bug_when>
    <thetext>Comment on attachment 166361
Patch

Attachment 166361 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14078272</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731200</commentid>
    <comment_count>5</comment_count>
      <attachid>166361</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-29 07:56:04 -0700</bug_when>
    <thetext>Comment on attachment 166361
Patch

Attachment 166361 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14074243</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731201</commentid>
    <comment_count>6</comment_count>
      <attachid>166361</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-29 07:56:32 -0700</bug_when>
    <thetext>Comment on attachment 166361
Patch

Attachment 166361 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14079219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731204</commentid>
    <comment_count>7</comment_count>
      <attachid>166362</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-29 08:03:07 -0700</bug_when>
    <thetext>Created attachment 166362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731208</commentid>
    <comment_count>8</comment_count>
      <attachid>166364</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-29 08:21:42 -0700</bug_when>
    <thetext>Created attachment 166364
fix for KURL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731217</commentid>
    <comment_count>9</comment_count>
      <attachid>166364</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-29 09:09:23 -0700</bug_when>
    <thetext>Comment on attachment 166364
fix for KURL

Attachment 166364 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14088219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731218</commentid>
    <comment_count>10</comment_count>
      <attachid>166364</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-29 09:14:06 -0700</bug_when>
    <thetext>Comment on attachment 166364
fix for KURL

Attachment 166364 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14081247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731221</commentid>
    <comment_count>11</comment_count>
      <attachid>166364</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-29 09:28:52 -0700</bug_when>
    <thetext>Comment on attachment 166364
fix for KURL

Attachment 166364 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14089236</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731222</commentid>
    <comment_count>12</comment_count>
      <attachid>166364</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-29 09:49:44 -0700</bug_when>
    <thetext>Comment on attachment 166364
fix for KURL

Attachment 166364 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14089246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731245</commentid>
    <comment_count>13</comment_count>
      <attachid>166364</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-29 13:39:54 -0700</bug_when>
    <thetext>Comment on attachment 166364
fix for KURL

Attachment 166364 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14078352

New failing tests:
svg/animations/smil-leak-dynamically-added-element-instances.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731288</commentid>
    <comment_count>14</comment_count>
      <attachid>166364</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-30 01:38:10 -0700</bug_when>
    <thetext>Comment on attachment 166364
fix for KURL

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

&gt; Source/WTF/wtf/MemoryInstrumentation.h:34
&gt; +#include &lt;stdio.h&gt;

Remove this.

&gt; Source/WTF/wtf/MemoryInstrumentation.h:340
&gt; +void reportMemoryUsage(const String* const&amp;, MemoryObjectInfo*);

Please update comment at line 335

&gt; Source/WTF/wtf/text/StringImpl.h:456
&gt; +    bool usesInternalBuffer() const { return bufferOwnership() == BufferInternal &amp;&amp; !hasTerminatingNullCharacter(); }

Why do you need !hasTerminatingNullCharacter() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731412</commentid>
    <comment_count>15</comment_count>
      <attachid>166364</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-30 23:57:49 -0700</bug_when>
    <thetext>Comment on attachment 166364
fix for KURL

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

&gt; Source/WTF/wtf/MemoryInstrumentationString.h:46
&gt; +    if (stringImpl-&gt;usesInternalBuffer() &amp;&amp; !stringImpl-&gt;hasTerminatingNullCharacter())

It doesn&apos;t seem to work for BufferOwned type of character buffer ownership(everything created with StringImpl::adopt). Please fix that and provide a test for that case.

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:277
&gt;      }

Pleas add a test for substring and for a regular string without shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731528</commentid>
    <comment_count>16</comment_count>
      <attachid>166437</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-01 02:57:49 -0700</bug_when>
    <thetext>Created attachment 166437
comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731615</commentid>
    <comment_count>17</comment_count>
      <attachid>166437</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 05:41:24 -0700</bug_when>
    <thetext>Comment on attachment 166437
comments addressed

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

&gt; Source/WTF/wtf/MemoryInstrumentationString.h:46
&gt; +    if (stringImpl-&gt;usesInternalBuffer() &amp;&amp; !stringImpl-&gt;hasTerminatingNullCharacter())

BufferOwned case is still missing as well as test for that case, r- for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731668</commentid>
    <comment_count>18</comment_count>
      <attachid>166470</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-01 07:07:24 -0700</bug_when>
    <thetext>Created attachment 166470
comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731689</commentid>
    <comment_count>19</comment_count>
      <attachid>166470</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 07:41:37 -0700</bug_when>
    <thetext>Comment on attachment 166470
comments addressed

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

&gt; Source/WTF/wtf/text/StringImpl.h:456
&gt; +    bool usesInternalBuffer() const { return bufferOwnership() == BufferInternal &amp;&amp; !hasTerminatingNullCharacter(); }

hasInternalBuffer ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731703</commentid>
    <comment_count>20</comment_count>
      <attachid>166477</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-01 08:19:26 -0700</bug_when>
    <thetext>Created attachment 166477
usesInternalBuffer was renamed to hasInternalBuffer. hasOwnedBuffer was added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731729</commentid>
    <comment_count>21</comment_count>
      <attachid>166488</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-01 09:00:59 -0700</bug_when>
    <thetext>Created attachment 166488
rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732376</commentid>
    <comment_count>22</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-02 00:44:40 -0700</bug_when>
    <thetext>Committed r130129: &lt;http://trac.webkit.org/changeset/130129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732412</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 01:22:25 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 98125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732454</commentid>
    <comment_count>24</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-02 02:43:30 -0700</bug_when>
    <thetext>Committed r130144: &lt;http://trac.webkit.org/changeset/130144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735191</commentid>
    <comment_count>25</comment_count>
      <attachid>166488</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-10-04 17:49:45 -0700</bug_when>
    <thetext>Comment on attachment 166488
rebaselined.

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

&gt; Source/WTF/wtf/MemoryInstrumentationString.h:47
&gt; +    if (stringImpl-&gt;hasInternalBuffer())

This looks incorrect. StringImpl::createWithTerminatingNullCharacter() create strings with the same conditions as hasInternalBuffer().

&gt; Source/WTF/wtf/MemoryInstrumentationString.h:59
&gt; +                info.addRawBuffer(stringImpl-&gt;characters16(), stringImpl-&gt;length() * 2);

* 2, really?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735352</commentid>
    <comment_count>26</comment_count>
      <attachid>166488</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-04 22:34:37 -0700</bug_when>
    <thetext>Comment on attachment 166488
rebaselined.

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

&gt;&gt; Source/WTF/wtf/MemoryInstrumentationString.h:47
&gt;&gt; +    if (stringImpl-&gt;hasInternalBuffer())
&gt; 
&gt; This looks incorrect. StringImpl::createWithTerminatingNullCharacter() create strings with the same conditions as hasInternalBuffer().

Good point. Looks like in these two cases, construct from literal and create with terminating null character, we can&apos;t decide is the string uses internal buffer or not, and can&apos;t report correct physical size of the memory object.
The only way is to check that the buffer address equal to stringimpl address + sizeof(StringImpl).

&gt;&gt; Source/WTF/wtf/MemoryInstrumentationString.h:59
&gt;&gt; +                info.addRawBuffer(stringImpl-&gt;characters16(), stringImpl-&gt;length() * 2);
&gt; 
&gt; * 2, really?

why not?  we are calculating the size of buffer in bytes and this is 16-bit per symbol string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735356</commentid>
    <comment_count>27</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-10-04 22:39:33 -0700</bug_when>
    <thetext>&gt; The only way is to check that the buffer address equal to stringimpl address + sizeof(StringImpl).

Exactly (and that&apos;s cheaper to compute too) :)

&gt; &gt;&gt; +                info.addRawBuffer(stringImpl-&gt;characters16(), stringImpl-&gt;length() * 2);
&gt; &gt; 
&gt; &gt; * 2, really?
&gt; 
&gt; why not?  we are calculating the size of buffer in bytes and this is 16-bit per symbol string.

Typically in WebKit, we don&apos;t use magic numbers. In this case, one would use sizeof(UChar).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735434</commentid>
    <comment_count>28</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-05 00:18:58 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; The only way is to check that the buffer address equal to stringimpl address + sizeof(StringImpl).
&gt; 
&gt; Exactly (and that&apos;s cheaper to compute too) :)
&gt; 
&gt; &gt; &gt;&gt; +                info.addRawBuffer(stringImpl-&gt;characters16(), stringImpl-&gt;length() * 2);
&gt; &gt; &gt; 
&gt; &gt; &gt; * 2, really?
&gt; &gt; 
&gt; &gt; why not?  we are calculating the size of buffer in bytes and this is 16-bit per symbol string.
&gt; 
&gt; Typically in WebKit, we don&apos;t use magic numbers. In this case, one would use sizeof(UChar).

yep. my fault.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166361</attachid>
            <date>2012-09-29 07:27:41 -0700</date>
            <delta_ts>2012-09-29 08:02:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97964-20120929182656.patch</filename>
            <type>text/plain</type>
            <size>22682</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhkMmQzZDA4NzBjMDU5NjExZDE0NTY3
M2JkN2Q0Nzk1MGM0MDQ0MmYuLjRhMzZkOTM4YTU1ZTJhNWU4MDNiOTA2NjkzM2I3NTMzYWEwNTkz
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtYWtlIFN0
cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgg
d2FzIGFkZGVkLgorICAgICAgICBJbnRydXNpdmUgaW5zdHJ1bWVudGF0aW9uIHdhcyByZW1vdmVk
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToK
KyAgICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6bGVuZ3RoKToKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVzZXNJbnRlcm5hbEJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmJhc2VTdHJpbmcpOgorICAgICAgICAoU3RyaW5nSW1wbCk6CisKIDIw
MTItMDktMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgSmF2YSBicmlkZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMWIzMmQ5YzUxMTliMTAyZGQyMDBj
ZDIxNDdjOGU3ZDQ4ZTljYjM1Li4xZDVjMWZkYjUzZmU5OTllZTViNmZkZGIwYmUwNTlhODA3Yjg0
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5N
SSBtYWtlIFN0cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
U3RyaW5nLmggaW5jbHVkZSB3YXMgYWRkZWQuCisKKyAgICAgICAgKiBkb20vV2ViQ29yZU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oOgorCiAyMDEyLTA5LTI5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBTY3JvbGwgb2Zmc2V0IG9mIGZs
ZXggaXRlbXMgbG9zdCBkdXJpbmcgcmVsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMWRlY2NlMmNhNWRjYTNhMDI5ZDFhMTNjZDUxYjk2NjUwZDkzOGRmZi4uZTNmYmU5YzM1MzQ0
MGU0NTFiMGY2ZWVhYzQ3YWM1OTE1YzVlOGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1ha2UgU3RyaW5nKiBp
bnN0cnVtZW50YXRpb24gbm9uIGludHJ1c2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgZXhwZWN0YXRpb25zIHdlcmUgZml4ZWQgYmVjYXVzZSBv
bGQgaW5zdHJ1bWVudGF0aW9uIGhhZCB3cm9uZyBkZXRlY3RvciBmb3IgQnVmZmVySW50ZXJuYWwg
dHlwZSBvZiBzdG9yYWdlLgorCisgICAgICAgICogdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wOS0yOCAgSmlhbiBM
aSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGRyYWdnYWJsZSBwcm9wZXJ0
eSB0byBXZWJEcmFnZ2FibGVSZWdpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMGNlYjlm
ZGVlNGRhNjM0YjNlZmY3MzViOTQ1NmJlZTgxOThkYmYzOS4uZjBiOGYzMTE0Njc4NjAyM2RiNDZh
ZjIzNDIyNmY0ZDUxYWFmZjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtODIsNiArODIs
NyBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5
QnVmZmVyVmlldy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25I
YXNoU2V0LmggXAorICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmlu
Zy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCBc
CiAgICAgU291cmNlL1dURi93dGYvTWVzc2FnZVF1ZXVlLmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkgYi9T
b3VyY2UvV1RGL1dURi5neXBpCmluZGV4IGRlYWM1NzE5YzdhZTViOTljMmQxOGNiNDhiMmM1NTQ2
MjJiZDhiMTQuLmJhZTk0Y2MyM2QzY2ViNWNmNGEwOWNkM2M2MTA4ZDMwNWUyYzYwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLmd5cGkKKysrIGIvU291cmNlL1dURi9XVEYuZ3lwaQpAQCAt
NTIsNiArNTIsNyBAQAogICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcs
CiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5o
JywKICAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oJywKKyAg
ICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgnLAogICAgICAgICAg
ICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCcsCiAgICAgICAgICAgICAnd3Rm
L01lc3NhZ2VRdWV1ZS5oJywKICAgICAgICAgICAgICd3dGYvTm9uQ29weWluZ1NvcnQuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dURi5wcm8KaW5kZXgg
N2ExMGJlZmUzM2Q0ZThmNTZiOWU3ZGU1MGMyOTYyMzU5Y2U4NTQ3Yy4uOTc3MzIyODZjMjBkMjAw
OTg0ZTc3NWY2MDIxZmY4Yjg0NzUyZWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYucHJv
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtODksNiArODksNyBAQCBIRUFERVJTICs9IFwK
ICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
QXJyYXlCdWZmZXJWaWV3LmggXAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCBc
CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggXAogICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvblZlY3Rvci5oIFwKICAgICBNZXNzYWdlUXVldWUuaCBcCiAgICAgTWV0YUFsbG9jYXRv
ci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qIGIvU291
cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKaW5kZXggYjkyZTc3ODkwMzUzZmM4MTRiZDFh
MDllYTI0Y2Y3ZWY1MzhkMDk5Ni4uZTZmN2VmMmE5ZDMyYjU0MDcxZWE2NmNjODY2MmZiOWNkNTYz
ZGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKKysrIGIv
U291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKQEAgLTkxMyw2ICs5MTMsMTAgQEAKIAkJ
CT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cd3RmXE1l
bW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJ
CSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlx3dGZcTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
LmgiCiAJCQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk3M2IxYzgxNjQxNmY5YjkzOTA1MGY2NDE5NmYzNWExZjJhMmJiYzMuLmRjYzky
ODE2ZThlY2E3ZWM4MzQxYzg5Yzc4ZTA2ODcwYzVkZGFjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMsNiArNDMsNyBAQAogCQk0RjFCMkRCNjE2MEI0
NEFBMDA1ODY1NTkgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxQjJEQjUxNjBCNDRBQTAwNTg2
NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCAqLzsgfTsKIAkJNEYxRDExNTQx
NUZGMTFCRTAwMjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovOyB9OwogCQk0RkNCNzEwQTE2MEExQTA3MDA4
NDI1RUMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkNCNzEwOTE2MEExQTA3MDA4NDI1RUMgLyog
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggKi87IH07CisJCTRGQ0YyN0UxMTYxNzJFODYw
MENCRjAzNyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQ0YyN0UwMTYxNzJFODYwMENCRjAzNyAv
KiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCAqLzsgfTsKIAkJNEZEODU1NDcxNjEzM0Uw
RTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZEODU1NDYxNjEzM0Uw
RTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oICovOyB9
OwogCQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMjlDMzNEMTVGRkQ3
OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4MTM0MDEzODE1QjA5
MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICov
OyB9OwpAQCAtMzE0LDYgKzMxNSw3IEBACiAJCTRGMUIyREI1MTYwQjQ0QUEwMDU4NjU1OSAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEZDQjcxMDkxNjBBMUEwNzAw
ODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEZDRjI3RTAxNjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvblN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEZEODU1NDYxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5
QnVmZmVyVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0
cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5OCw2
ICs3MDAsNyBAQAogCQkJCTRGMUQxMTUzMTVGRjExQkUwMDI2RTkwOCAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCAqLywKIAkJCQk0RkQ4NTU0NjE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3LmggKi8sCiAJCQkJNEYxQjJEQjUxNjBCNDRBQTAw
NTg2NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCAqLywKKwkJCQk0RkNGMjdF
MDE2MTcyRTg2MDBDQkYwMzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggKi8sCiAJ
CQkJNEZDQjcxMDkxNjBBMUEwNzAwODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rv
ci5oICovLAogCQkJCUE4QTQ3MkNDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCAq
LywKIAkJCQlBOEE0NzJDRDE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8s
CkBAIC0xMTUzLDYgKzExNTYsNyBAQAogCQkJCTRGQ0I3MTBBMTYwQTFBMDcwMDg0MjVFQyAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGMUIyREI2
MTYwQjQ0QUEwMDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RkQ4NTU0NzE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQk0RkNGMjdFMTE2MTcy
RTg2MDBDQkYwMzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNjliMDIyNTRiMzdh
ZmE3MjBiMjU2MjY3YzI4OGM1OGYxZWVlNWM4Zi4uNjU5YjlkNjBmZDc0MWJlYzQ4NTQ4NjYzNDBk
YTFjZmU4OTU1MjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTMxLDYgKzMxLDggQEAKICNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKICNkZWZpbmUg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKIAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC0zMzQsNiArMzM2LDIxIEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+Ojpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGlv
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIFZlY3Rv
cjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+KiBjb25zdCYsIE1l
bW9yeU9iamVjdEluZm8qKTsKIAorY2xhc3MgU3RyaW5nOwordm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShjb25zdCBTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyopOworCitjbGFzcyBTdHJp
bmdJbXBsOwordm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYs
IE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgQXRvbWljU3RyaW5nOwordm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShjb25zdCBBdG9taWNTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyop
OworCitjbGFzcyBDU3RyaW5nOwordm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBDU3RyaW5n
KiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgQ1N0cmluZ0J1ZmZlcjsKK3Zv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZ0J1ZmZlciogY29uc3QmLCBNZW1vcnlP
YmplY3RJbmZvKik7CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gIWRlZmluZWQo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1l
bnRhdGlvblN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MmYyZDYxMTkyYWU5MWY1YWE1ZDliYzgwMDlj
NTFiMTBmZTVmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25TdHJpbmcuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZW1vcnlJbnN0cnVt
ZW50YXRpb25TdHJpbmdfaAorI2RlZmluZSBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmdfaAor
CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IFN0cmluZ0ltcGwqIGNvbnN0JiBzdHJpbmdJbXBs
LCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIHNpemVfdCBzZWxm
U2l6ZSA9IHNpemVvZihTdHJpbmdJbXBsKTsKKworICAgIC8vIENvdW50IHNpemUgdXNlZCBieSBp
bnRlcm5hbCBidWZmZXIgYnV0IHNraXAgc3RyaW5ncyB0aGF0IHdlcmUgY29uc3RydWN0ZWQgZnJv
bSBsaXRlcmFscy4KKyAgICBpZiAoc3RyaW5nSW1wbC0+dXNlc0ludGVybmFsQnVmZmVyKCkgJiYg
IXN0cmluZ0ltcGwtPmhhc1Rlcm1pbmF0aW5nTnVsbENoYXJhY3RlcigpKQorICAgICAgICBzZWxm
U2l6ZSArPSBzdHJpbmdJbXBsLT5sZW5ndGgoKSAqIChzdHJpbmdJbXBsLT5pczhCaXQoKSA/IHNp
emVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKTsKKworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHN0cmluZ0ltcGwsIDAsIHNlbGZTaXplKTsKKworICAgIGlmIChT
dHJpbmdJbXBsKiBiYXNlU3RyaW5nID0gc3RyaW5nSW1wbC0+YmFzZVN0cmluZygpKQorICAgICAg
ICBpbmZvLmFkZE1lbWJlcihiYXNlU3RyaW5nKTsKKyAgICBlbHNlIGlmIChzdHJpbmdJbXBsLT5o
YXMxNkJpdFNoYWRvdygpKSAvLyBTdWJzdHJpbmcgbmV2ZXIgaGFzIGl0cyBvd24gc2hhZG93Lgor
ICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlcihzdHJpbmdJbXBsLT5jaGFyYWN0ZXJzKCksIChzdHJp
bmdJbXBsLT5sZW5ndGgoKSArIChzdHJpbmdJbXBsLT5oYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0
ZXIoKSA/IDEgOiAwKSkgKiBzaXplb2YoVUNoYXIpKTsKK30KKworaW5saW5lIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoY29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHN0cmluZyk7CisgICAgaW5mby5hZGRNZW1iZXIoc3RyaW5nLT5pbXBsKCkpOwor
fQorCitpbmxpbmUgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBBdG9taWNTdHJpbmcqIGNv
bnN0JiBhdG9taWNTdHJpbmcsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgYXRvbWljU3RyaW5n
KTsKKyAgICBpbmZvLmFkZE1lbWJlcihhdG9taWNTdHJpbmctPnN0cmluZygpKTsKK30KKworaW5s
aW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZ0J1ZmZlciogY29uc3QmIGNT
dHJpbmdCdWZmZXIsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgY1N0cmluZ0J1ZmZlciwgMCwg
c2l6ZW9mKCpjU3RyaW5nQnVmZmVyKSArIGNTdHJpbmdCdWZmZXItPmxlbmd0aCgpKTsKK30KKwor
aW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZyogY29uc3QmIGNTdHJp
bmcsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgY1N0cmluZyk7CisgICAgaW5mby5hZGRNZW1i
ZXIoY1N0cmluZy0+YnVmZmVyKCkpOworfQorCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNZW1v
cnlJbnN0cnVtZW50YXRpb25WZWN0b3JfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNw
cAppbmRleCBiOTFjNjBlODBkMGMyOTZkZDQ1NjRiODA0ZmU2YzFmOGI1YjcyZmNmLi4wZGU2MDk2
ZGRkMTBlZmM2NTcyOTYyODExNDg3NDBjM2U3Zjg4ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuY3BwCkBAIC00MzYsMTAgKzQzNiw0IEBAIHZvaWQgQXRvbWljU3RyaW5nOjpzaG93
KCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lkIEF0b21pY1N0cmluZzo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzKTsKLSAgICBpbmZvLmFkZE1l
bWJlcihtX3N0cmluZyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmgKaW5kZXggMDY2YjA3MjZiZGRlNDA1ZWQ3MzU0MjMxZTY4NjM2NWNiODA0YWM4
NS4uYzI1YjEzNTliY2VlZGRkYWEyOTZjMDcyZGVmNDNiNGJiODdkNjA2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0xNTksOCArMTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2hvdygpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci0KIHByaXZhdGU6CiAg
ICAgLy8gVGhlIGV4cGxpY2l0IGNvbnN0cnVjdG9ycyB3aXRoIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwgbXVzdCBiZSB1c2VkIGZvciBsaXRlcmFscy4KICAgICBBdG9taWNTdHJp
bmcoQVNDSUlMaXRlcmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmlu
Zy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggMDNhYjNlNTRhN2NmYWE2
ZDE3NDJjNTA5NjRjOWNmZDY4MTU3OWUxOS4uNGQ4OTRiMTk2ZDAzOWUyNGMyODc4NWYxZmI0M2Ey
MzQzNzlkMmFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTM3LDEzICszNyw3IEBAIG5hbWVz
cGFjZSBXVEYgewogY2xhc3MgQ1N0cmluZ0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPENTdHJp
bmdCdWZmZXI+IHsKIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9k
YXRhOyB9Ci0gICAgc2l6ZV90IGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZvPgotICAgIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHR5cGVuYW1lIE1lbW9yeU9iamVjdEluZm86OkNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIDAsIHNpemVvZihDU3RyaW5nQnVmZmVyKSArIG1fbGVuZ3RoKTsKLSAg
ICB9CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENTdHJpbmc7CkBAIC04MSwxMyArNzUsNiBAQCBwdWJs
aWM6CiAKICAgICBDU3RyaW5nQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVtb3J5T2JqZWN0SW5mbz4KLSAg
ICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Ci0gICAgewotICAgICAgICB0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZvOjpDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzKTsKLSAgICAgICAgaW5mby5hZGRNZW1i
ZXIobV9idWZmZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICB2b2lkIGNvcHlCdWZmZXJJZk5l
ZWRlZCgpOwogICAgIHZvaWQgaW5pdChjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBjMDZhOTY2ZTdhZGQ2ZDFiNTJlNWQ1YmU1NjIw
MTQ0ODc5ZmU2Y2M2Li45OGQ1OTUzNmJlMDI4YTBjYzY3MTYzMjc2MGU4ZTUyYzRiNGYxMzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE3OTIsMjQgKzE3OTIsNCBAQCBzaXpl
X3QgU3RyaW5nSW1wbDo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplICsgc2l6
ZW9mKCp0aGlzKTsKIH0KIAotdm9pZCBTdHJpbmdJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIHNpemVfdCBzZWxm
U2l6ZSA9IHNpemVvZihTdHJpbmdJbXBsKTsKLQotICAgICAgICAvLyBDb3VudCBzaXplIHVzZWQg
YnkgaW50ZXJuYWwgYnVmZmVyIGJ1dCBza2lwIHN0cmluZ3MgdGhhdCB3ZXJlIGNvbnN0cnVjdGVk
IGZyb20gbGl0ZXJhbHMuCi0gICAgaWYgKChtX2hhc2hBbmRGbGFncyAmIEJ1ZmZlckludGVybmFs
KSAmJiAhaGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyKCkpCi0gICAgICAgIC8vIFRocmVlIGNh
c2VzIGFyZSBjb3ZlcmVkIGhlcmU6Ci0gICAgICAgIC8vIDEpIGEgbm9ybWFsIDgtYml0IHN0cmlu
ZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVybmFsKQotICAgICAgICAvLyAyKSBh
IG5vcm1hbCAxNi1iaXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVmZmVySW50ZXJu
YWwpCi0gICAgICAgIC8vIDMpIGVtcHR5IHVuaXF1ZSBzdHJpbmcgd2l0aCBsZW5ndGggPSAwIChC
dWZmZXJJbnRlcm5hbCkKLSAgICAgICAgc2VsZlNpemUgKz0gbV9sZW5ndGggKiAobV9oYXNoQW5k
RmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNo
YXIpKTsKLQotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IDAsIHNlbGZTaXplKTsKLQotICAgIGlmIChtX2hhc2hBbmRGbGFncyAmIEJ1ZmZlclN1YnN0cmlu
ZykKLSAgICAgICAgaW5mby5hZGRNZW1iZXIobV9zdWJzdHJpbmdCdWZmZXIpOwotICAgIGVsc2Ug
aWYgKG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0hhczE2Qml0U2hhZG93KSAvLyBTdWJzdHJp
bmcgbmV2ZXIgaGFzIGl0cyBvd24gc2hhZG93LgotICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlciht
X2NvcHlEYXRhMTYsIChtX2xlbmd0aCArIChoYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0ZXIoKSA/
IDEgOiAwKSkgKiBzaXplb2YoVUNoYXIpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAwYzYyODVkMjA3MTk5Nzg5NjkwOTUxZjMxNjNjOTQ4
ODc2ODk2OTEuLmMyOWFhNTY0MGI5ODlkMzcxOWQzN2Q0YWQ2M2NlZmNhNjcwMTA0MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00NTMsNiArNDUzLDggQEAgcHVibGljOgogCiAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBib29sIGlz
OEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZzhCaXRCdWZm
ZXI7IH0KKyAgICBib29sIHVzZXNJbnRlcm5hbEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZl
ck93bmVyc2hpcCgpID09IEJ1ZmZlckludGVybmFsICYmICFoYXNUZXJtaW5hdGluZ051bGxDaGFy
YWN0ZXIoKTsgfQorICAgIFN0cmluZ0ltcGwqIGJhc2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiBi
dWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcgPyBtX3N1YnN0cmluZ0J1ZmZlciA6
IDA7IH0KIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgYWxsIHVubmVjZXNzYXJ5IHVzYWdlcyBvZiBj
aGFyYWN0ZXJzKCkKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgp
IGNvbnN0IHsgQVNTRVJUKGlzOEJpdCgpKTsgcmV0dXJuIG1fZGF0YTg7IH0KQEAgLTcxNiw4ICs3
MTgsNiBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3RyaW5nU3RhdHMmIHN0
cmluZ1N0YXRzKCkgeyByZXR1cm4gbV9zdHJpbmdTdGF0czsgfQogI2VuZGlmCiAKLSAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBhdCBsZWFz
dCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJhY3RlciBz
dHJpbmdzIGZyb20gU21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2Nv
cHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJD
b3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYTk5ODExYjg0YjNlOTIwYmJkYzZkMDdk
MzUwZTFhZmU1YjJjZmNiMy4uYzMxNzk5YmFhNWY3MTdhNTJlMjU4MGI1MjUyODlmNGUxNWU2Yjlm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50
YXRpb25faAogCiAjaW5jbHVkZSAiUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKyNp
bmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2ds
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcAppbmRleCA2Zjgx
NDI2NzJhZDgxNzU5NjY3OGVkZjZjOWQ2YmYxZDBkYTI4MDIxLi5jOTI2NmVlNjdmMjIyNDU3OGIy
MzEwOGNhYTljYzQ0M2NkMGY5OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMR29vZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xl
LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcAppbmRleCBiZWMxYzAw
Zjc3ZTUxNmM4OTRlMGJiMmE3ZWUyZjEyZmVmMTMxZjY2Li40ZGQ5YzdhYzdkODQzNjY3MzFlNDA2
NDUwNDdhZDhmZWIxMzI2M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yNjIs
NyArMjYzLDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCB2aXNpdFN0cmluZ3Mp
CiAgICAgICAgIEluc3RydW1lbnRlZE93bmVyPFN0cmluZz4gc3RyaW5nSW5zdHJ1bWVudGVkT3du
ZXIoIlN0cmluZyIpOwogICAgICAgICBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmNo
YXJhY3RlcnMoKTsgLy8gRm9yY2UgMTZiaXQgc2hhZG93IGNyZWF0aW9uLgogICAgICAgICBoZWxw
ZXIuYWRkUm9vdE9iamVjdChzdHJpbmdJbnN0cnVtZW50ZWRPd25lcik7Ci0gICAgICAgIEVYUEVD
VF9FUShzaXplb2YoU3RyaW5nSW1wbCkgKyBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVl
Lmxlbmd0aCgpICogMiwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwpICsgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIu
bV92YWx1ZS5sZW5ndGgoKSAqIDMsIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsK
ICAgICAgICAgRVhQRUNUX0VRKDIsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKICAgICB9CiAK
QEAgLTI3MSw3ICsyNzIsNyBAQCBURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHZpc2l0
U3RyaW5ncykKICAgICAgICAgSW5zdHJ1bWVudGVkT3duZXI8QXRvbWljU3RyaW5nPiBhdG9taWNT
dHJpbmdJbnN0cnVtZW50ZWRPd25lcigiQXRvbWljU3RyaW5nIik7CiAgICAgICAgIGF0b21pY1N0
cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUuc3RyaW5nKCkuY2hhcmFjdGVycygpOyAvLyBG
b3JjZSAxNmJpdCBzaGFkb3cgY3JlYXRpb24uCiAgICAgICAgIGhlbHBlci5hZGRSb290T2JqZWN0
KGF0b21pY1N0cmluZ0luc3RydW1lbnRlZE93bmVyKTsKLSAgICAgICAgRVhQRUNUX0VRKHNpemVv
ZihTdHJpbmdJbXBsKSArIGF0b21pY1N0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVu
Z3RoKCkgKiAyLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgICAgIEVY
UEVDVF9FUShzaXplb2YoU3RyaW5nSW1wbCkgKyBhdG9taWNTdHJpbmdJbnN0cnVtZW50ZWRPd25l
ci5tX3ZhbHVlLmxlbmd0aCgpICogMywgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkp
OwogICAgICAgICBFWFBFQ1RfRVEoMiwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogICAgIH0K
IApAQCAtNDMxLDcgKzQzMiw3IEBAIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgdmVj
dG9yV2l0aEluc3RydW1lbnRlZFR5cGUpCiAgICAgICAgIHZhbHVlLT5hcHBlbmQoInN0cmluZyIp
OwogICAgIEluc3RydW1lbnRlZE93bmVyPFN0cmluZ1ZlY3RvciogPiByb290KHZhbHVlLmdldCgp
KTsKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChyb290KTsKLSAgICBFWFBFQ1RfRVEoc2l6ZW9m
KFN0cmluZ1ZlY3RvcikgKyBzaXplb2YoU3RyaW5nKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsgc2l6
ZW9mKFN0cmluZ0ltcGwpICogdmFsdWUtPnNpemUoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFs
bFR5cGVzKCkpOworICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5nVmVjdG9yKSArIHNpemVvZihT
dHJpbmcpICogdmFsdWUtPmNhcGFjaXR5KCkgKyAoc2l6ZW9mKFN0cmluZ0ltcGwpICsgNikgKiB2
YWx1ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgRVhQ
RUNUX0VRKGNvdW50ICsgMiwgKHNpemVfdCloZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CiB9CiAK
QEAgLTQ0Niw3ICs0NDcsNyBAQCBURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIGhhc2hT
ZXRXaXRoSW5zdHJ1bWVudGVkVHlwZSkKICAgICAgICAgdmFsdWUtPmFkZChTdHJpbmc6Om51bWJl
cihpKSk7CiAgICAgSW5zdHJ1bWVudGVkT3duZXI8VmFsdWVUeXBlKiA+IHJvb3QodmFsdWUuZ2V0
KCkpOwogICAgIGhlbHBlci5hZGRSb290T2JqZWN0KHJvb3QpOwotICAgIEVYUEVDVF9FUShzaXpl
b2YoVmFsdWVUeXBlKSArIHNpemVvZihTdHJpbmcpICogdmFsdWUtPmNhcGFjaXR5KCkgKyBzaXpl
b2YoU3RyaW5nSW1wbCkgKiB2YWx1ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxs
VHlwZXMoKSk7CisgICAgRVhQRUNUX0VRKHNpemVvZihWYWx1ZVR5cGUpICsgc2l6ZW9mKFN0cmlu
ZykgKiB2YWx1ZS0+Y2FwYWNpdHkoKSArIChzaXplb2YoU3RyaW5nSW1wbCkgKyAxKSAqIHZhbHVl
LT5zaXplKCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICBFWFBFQ1Rf
RVEoY291bnQgKyAxLCAoc2l6ZV90KWhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166362</attachid>
            <date>2012-09-29 08:03:07 -0700</date>
            <delta_ts>2012-09-29 08:21:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97964-20120929190222.patch</filename>
            <type>text/plain</type>
            <size>23750</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhkMmQzZDA4NzBjMDU5NjExZDE0NTY3
M2JkN2Q0Nzk1MGM0MDQ0MmYuLjRhMzZkOTM4YTU1ZTJhNWU4MDNiOTA2NjkzM2I3NTMzYWEwNTkz
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtYWtlIFN0
cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgg
d2FzIGFkZGVkLgorICAgICAgICBJbnRydXNpdmUgaW5zdHJ1bWVudGF0aW9uIHdhcyByZW1vdmVk
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToK
KyAgICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6bGVuZ3RoKToKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVzZXNJbnRlcm5hbEJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmJhc2VTdHJpbmcpOgorICAgICAgICAoU3RyaW5nSW1wbCk6CisKIDIw
MTItMDktMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgSmF2YSBicmlkZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMWIzMmQ5YzUxMTliMTAyZGQyMDBj
ZDIxNDdjOGU3ZDQ4ZTljYjM1Li4xZDVjMWZkYjUzZmU5OTllZTViNmZkZGIwYmUwNTlhODA3Yjg0
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5N
SSBtYWtlIFN0cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
U3RyaW5nLmggaW5jbHVkZSB3YXMgYWRkZWQuCisKKyAgICAgICAgKiBkb20vV2ViQ29yZU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oOgorCiAyMDEyLTA5LTI5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBTY3JvbGwgb2Zmc2V0IG9mIGZs
ZXggaXRlbXMgbG9zdCBkdXJpbmcgcmVsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMWRlY2NlMmNhNWRjYTNhMDI5ZDFhMTNjZDUxYjk2NjUwZDkzOGRmZi4uZTNmYmU5YzM1MzQ0
MGU0NTFiMGY2ZWVhYzQ3YWM1OTE1YzVlOGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1ha2UgU3RyaW5nKiBp
bnN0cnVtZW50YXRpb24gbm9uIGludHJ1c2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgZXhwZWN0YXRpb25zIHdlcmUgZml4ZWQgYmVjYXVzZSBv
bGQgaW5zdHJ1bWVudGF0aW9uIGhhZCB3cm9uZyBkZXRlY3RvciBmb3IgQnVmZmVySW50ZXJuYWwg
dHlwZSBvZiBzdG9yYWdlLgorCisgICAgICAgICogdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wOS0yOCAgSmlhbiBM
aSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGRyYWdnYWJsZSBwcm9wZXJ0
eSB0byBXZWJEcmFnZ2FibGVSZWdpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMGNlYjlm
ZGVlNGRhNjM0YjNlZmY3MzViOTQ1NmJlZTgxOThkYmYzOS4uZjBiOGYzMTE0Njc4NjAyM2RiNDZh
ZjIzNDIyNmY0ZDUxYWFmZjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtODIsNiArODIs
NyBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5
QnVmZmVyVmlldy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25I
YXNoU2V0LmggXAorICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmlu
Zy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCBc
CiAgICAgU291cmNlL1dURi93dGYvTWVzc2FnZVF1ZXVlLmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkgYi9T
b3VyY2UvV1RGL1dURi5neXBpCmluZGV4IGRlYWM1NzE5YzdhZTViOTljMmQxOGNiNDhiMmM1NTQ2
MjJiZDhiMTQuLmJhZTk0Y2MyM2QzY2ViNWNmNGEwOWNkM2M2MTA4ZDMwNWUyYzYwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLmd5cGkKKysrIGIvU291cmNlL1dURi9XVEYuZ3lwaQpAQCAt
NTIsNiArNTIsNyBAQAogICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcs
CiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5o
JywKICAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oJywKKyAg
ICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgnLAogICAgICAgICAg
ICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCcsCiAgICAgICAgICAgICAnd3Rm
L01lc3NhZ2VRdWV1ZS5oJywKICAgICAgICAgICAgICd3dGYvTm9uQ29weWluZ1NvcnQuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dURi5wcm8KaW5kZXgg
N2ExMGJlZmUzM2Q0ZThmNTZiOWU3ZGU1MGMyOTYyMzU5Y2U4NTQ3Yy4uOTc3MzIyODZjMjBkMjAw
OTg0ZTc3NWY2MDIxZmY4Yjg0NzUyZWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYucHJv
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtODksNiArODksNyBAQCBIRUFERVJTICs9IFwK
ICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
QXJyYXlCdWZmZXJWaWV3LmggXAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCBc
CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggXAogICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvblZlY3Rvci5oIFwKICAgICBNZXNzYWdlUXVldWUuaCBcCiAgICAgTWV0YUFsbG9jYXRv
ci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qIGIvU291
cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKaW5kZXggYjkyZTc3ODkwMzUzZmM4MTRiZDFh
MDllYTI0Y2Y3ZWY1MzhkMDk5Ni4uZTZmN2VmMmE5ZDMyYjU0MDcxZWE2NmNjODY2MmZiOWNkNTYz
ZGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKKysrIGIv
U291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKQEAgLTkxMyw2ICs5MTMsMTAgQEAKIAkJ
CT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cd3RmXE1l
bW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJ
CSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlx3dGZcTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
LmgiCiAJCQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk3M2IxYzgxNjQxNmY5YjkzOTA1MGY2NDE5NmYzNWExZjJhMmJiYzMuLmRjYzky
ODE2ZThlY2E3ZWM4MzQxYzg5Yzc4ZTA2ODcwYzVkZGFjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMsNiArNDMsNyBAQAogCQk0RjFCMkRCNjE2MEI0
NEFBMDA1ODY1NTkgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxQjJEQjUxNjBCNDRBQTAwNTg2
NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCAqLzsgfTsKIAkJNEYxRDExNTQx
NUZGMTFCRTAwMjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovOyB9OwogCQk0RkNCNzEwQTE2MEExQTA3MDA4
NDI1RUMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkNCNzEwOTE2MEExQTA3MDA4NDI1RUMgLyog
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggKi87IH07CisJCTRGQ0YyN0UxMTYxNzJFODYw
MENCRjAzNyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQ0YyN0UwMTYxNzJFODYwMENCRjAzNyAv
KiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCAqLzsgfTsKIAkJNEZEODU1NDcxNjEzM0Uw
RTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZEODU1NDYxNjEzM0Uw
RTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oICovOyB9
OwogCQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMjlDMzNEMTVGRkQ3
OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4MTM0MDEzODE1QjA5
MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICov
OyB9OwpAQCAtMzE0LDYgKzMxNSw3IEBACiAJCTRGMUIyREI1MTYwQjQ0QUEwMDU4NjU1OSAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEZDQjcxMDkxNjBBMUEwNzAw
ODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEZDRjI3RTAxNjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvblN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEZEODU1NDYxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5
QnVmZmVyVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0
cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5OCw2
ICs3MDAsNyBAQAogCQkJCTRGMUQxMTUzMTVGRjExQkUwMDI2RTkwOCAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCAqLywKIAkJCQk0RkQ4NTU0NjE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3LmggKi8sCiAJCQkJNEYxQjJEQjUxNjBCNDRBQTAw
NTg2NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCAqLywKKwkJCQk0RkNGMjdF
MDE2MTcyRTg2MDBDQkYwMzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggKi8sCiAJ
CQkJNEZDQjcxMDkxNjBBMUEwNzAwODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rv
ci5oICovLAogCQkJCUE4QTQ3MkNDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCAq
LywKIAkJCQlBOEE0NzJDRDE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8s
CkBAIC0xMTUzLDYgKzExNTYsNyBAQAogCQkJCTRGQ0I3MTBBMTYwQTFBMDcwMDg0MjVFQyAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGMUIyREI2
MTYwQjQ0QUEwMDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RkQ4NTU0NzE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQk0RkNGMjdFMTE2MTcy
RTg2MDBDQkYwMzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNjliMDIyNTRiMzdh
ZmE3MjBiMjU2MjY3YzI4OGM1OGYxZWVlNWM4Zi4uNjU5YjlkNjBmZDc0MWJlYzQ4NTQ4NjYzNDBk
YTFjZmU4OTU1MjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTMxLDYgKzMxLDggQEAKICNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKICNkZWZpbmUg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKIAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC0zMzQsNiArMzM2LDIxIEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+Ojpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGlv
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIFZlY3Rv
cjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+KiBjb25zdCYsIE1l
bW9yeU9iamVjdEluZm8qKTsKIAorY2xhc3MgU3RyaW5nOwordm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShjb25zdCBTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyopOworCitjbGFzcyBTdHJp
bmdJbXBsOwordm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYs
IE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgQXRvbWljU3RyaW5nOwordm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShjb25zdCBBdG9taWNTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyop
OworCitjbGFzcyBDU3RyaW5nOwordm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBDU3RyaW5n
KiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgQ1N0cmluZ0J1ZmZlcjsKK3Zv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZ0J1ZmZlciogY29uc3QmLCBNZW1vcnlP
YmplY3RJbmZvKik7CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gIWRlZmluZWQo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1l
bnRhdGlvblN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MmYyZDYxMTkyYWU5MWY1YWE1ZDliYzgwMDlj
NTFiMTBmZTVmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25TdHJpbmcuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZW1vcnlJbnN0cnVt
ZW50YXRpb25TdHJpbmdfaAorI2RlZmluZSBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmdfaAor
CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IFN0cmluZ0ltcGwqIGNvbnN0JiBzdHJpbmdJbXBs
LCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIHNpemVfdCBzZWxm
U2l6ZSA9IHNpemVvZihTdHJpbmdJbXBsKTsKKworICAgIC8vIENvdW50IHNpemUgdXNlZCBieSBp
bnRlcm5hbCBidWZmZXIgYnV0IHNraXAgc3RyaW5ncyB0aGF0IHdlcmUgY29uc3RydWN0ZWQgZnJv
bSBsaXRlcmFscy4KKyAgICBpZiAoc3RyaW5nSW1wbC0+dXNlc0ludGVybmFsQnVmZmVyKCkgJiYg
IXN0cmluZ0ltcGwtPmhhc1Rlcm1pbmF0aW5nTnVsbENoYXJhY3RlcigpKQorICAgICAgICBzZWxm
U2l6ZSArPSBzdHJpbmdJbXBsLT5sZW5ndGgoKSAqIChzdHJpbmdJbXBsLT5pczhCaXQoKSA/IHNp
emVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKTsKKworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHN0cmluZ0ltcGwsIDAsIHNlbGZTaXplKTsKKworICAgIGlmIChT
dHJpbmdJbXBsKiBiYXNlU3RyaW5nID0gc3RyaW5nSW1wbC0+YmFzZVN0cmluZygpKQorICAgICAg
ICBpbmZvLmFkZE1lbWJlcihiYXNlU3RyaW5nKTsKKyAgICBlbHNlIGlmIChzdHJpbmdJbXBsLT5o
YXMxNkJpdFNoYWRvdygpKSAvLyBTdWJzdHJpbmcgbmV2ZXIgaGFzIGl0cyBvd24gc2hhZG93Lgor
ICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlcihzdHJpbmdJbXBsLT5jaGFyYWN0ZXJzKCksIChzdHJp
bmdJbXBsLT5sZW5ndGgoKSArIChzdHJpbmdJbXBsLT5oYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0
ZXIoKSA/IDEgOiAwKSkgKiBzaXplb2YoVUNoYXIpKTsKK30KKworaW5saW5lIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoY29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHN0cmluZyk7CisgICAgaW5mby5hZGRNZW1iZXIoc3RyaW5nLT5pbXBsKCkpOwor
fQorCitpbmxpbmUgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBBdG9taWNTdHJpbmcqIGNv
bnN0JiBhdG9taWNTdHJpbmcsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgYXRvbWljU3RyaW5n
KTsKKyAgICBpbmZvLmFkZE1lbWJlcihhdG9taWNTdHJpbmctPnN0cmluZygpKTsKK30KKworaW5s
aW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZ0J1ZmZlciogY29uc3QmIGNT
dHJpbmdCdWZmZXIsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgY1N0cmluZ0J1ZmZlciwgMCwg
c2l6ZW9mKCpjU3RyaW5nQnVmZmVyKSArIGNTdHJpbmdCdWZmZXItPmxlbmd0aCgpKTsKK30KKwor
aW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZyogY29uc3QmIGNTdHJp
bmcsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgY1N0cmluZyk7CisgICAgaW5mby5hZGRNZW1i
ZXIoY1N0cmluZy0+YnVmZmVyKCkpOworfQorCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNZW1v
cnlJbnN0cnVtZW50YXRpb25WZWN0b3JfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNw
cAppbmRleCBiOTFjNjBlODBkMGMyOTZkZDQ1NjRiODA0ZmU2YzFmOGI1YjcyZmNmLi4wZGU2MDk2
ZGRkMTBlZmM2NTcyOTYyODExNDg3NDBjM2U3Zjg4ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuY3BwCkBAIC00MzYsMTAgKzQzNiw0IEBAIHZvaWQgQXRvbWljU3RyaW5nOjpzaG93
KCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lkIEF0b21pY1N0cmluZzo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzKTsKLSAgICBpbmZvLmFkZE1l
bWJlcihtX3N0cmluZyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmgKaW5kZXggMDY2YjA3MjZiZGRlNDA1ZWQ3MzU0MjMxZTY4NjM2NWNiODA0YWM4
NS4uYzI1YjEzNTliY2VlZGRkYWEyOTZjMDcyZGVmNDNiNGJiODdkNjA2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0xNTksOCArMTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2hvdygpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci0KIHByaXZhdGU6CiAg
ICAgLy8gVGhlIGV4cGxpY2l0IGNvbnN0cnVjdG9ycyB3aXRoIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwgbXVzdCBiZSB1c2VkIGZvciBsaXRlcmFscy4KICAgICBBdG9taWNTdHJp
bmcoQVNDSUlMaXRlcmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmlu
Zy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggMDNhYjNlNTRhN2NmYWE2
ZDE3NDJjNTA5NjRjOWNmZDY4MTU3OWUxOS4uNGQ4OTRiMTk2ZDAzOWUyNGMyODc4NWYxZmI0M2Ey
MzQzNzlkMmFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTM3LDEzICszNyw3IEBAIG5hbWVz
cGFjZSBXVEYgewogY2xhc3MgQ1N0cmluZ0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPENTdHJp
bmdCdWZmZXI+IHsKIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9k
YXRhOyB9Ci0gICAgc2l6ZV90IGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZvPgotICAgIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHR5cGVuYW1lIE1lbW9yeU9iamVjdEluZm86OkNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIDAsIHNpemVvZihDU3RyaW5nQnVmZmVyKSArIG1fbGVuZ3RoKTsKLSAg
ICB9CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENTdHJpbmc7CkBAIC04MSwxMyArNzUsNiBAQCBwdWJs
aWM6CiAKICAgICBDU3RyaW5nQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVtb3J5T2JqZWN0SW5mbz4KLSAg
ICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Ci0gICAgewotICAgICAgICB0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZvOjpDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzKTsKLSAgICAgICAgaW5mby5hZGRNZW1i
ZXIobV9idWZmZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICB2b2lkIGNvcHlCdWZmZXJJZk5l
ZWRlZCgpOwogICAgIHZvaWQgaW5pdChjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBjMDZhOTY2ZTdhZGQ2ZDFiNTJlNWQ1YmU1NjIw
MTQ0ODc5ZmU2Y2M2Li45OGQ1OTUzNmJlMDI4YTBjYzY3MTYzMjc2MGU4ZTUyYzRiNGYxMzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE3OTIsMjQgKzE3OTIsNCBAQCBzaXpl
X3QgU3RyaW5nSW1wbDo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplICsgc2l6
ZW9mKCp0aGlzKTsKIH0KIAotdm9pZCBTdHJpbmdJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIHNpemVfdCBzZWxm
U2l6ZSA9IHNpemVvZihTdHJpbmdJbXBsKTsKLQotICAgICAgICAvLyBDb3VudCBzaXplIHVzZWQg
YnkgaW50ZXJuYWwgYnVmZmVyIGJ1dCBza2lwIHN0cmluZ3MgdGhhdCB3ZXJlIGNvbnN0cnVjdGVk
IGZyb20gbGl0ZXJhbHMuCi0gICAgaWYgKChtX2hhc2hBbmRGbGFncyAmIEJ1ZmZlckludGVybmFs
KSAmJiAhaGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyKCkpCi0gICAgICAgIC8vIFRocmVlIGNh
c2VzIGFyZSBjb3ZlcmVkIGhlcmU6Ci0gICAgICAgIC8vIDEpIGEgbm9ybWFsIDgtYml0IHN0cmlu
ZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVybmFsKQotICAgICAgICAvLyAyKSBh
IG5vcm1hbCAxNi1iaXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVmZmVySW50ZXJu
YWwpCi0gICAgICAgIC8vIDMpIGVtcHR5IHVuaXF1ZSBzdHJpbmcgd2l0aCBsZW5ndGggPSAwIChC
dWZmZXJJbnRlcm5hbCkKLSAgICAgICAgc2VsZlNpemUgKz0gbV9sZW5ndGggKiAobV9oYXNoQW5k
RmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNo
YXIpKTsKLQotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IDAsIHNlbGZTaXplKTsKLQotICAgIGlmIChtX2hhc2hBbmRGbGFncyAmIEJ1ZmZlclN1YnN0cmlu
ZykKLSAgICAgICAgaW5mby5hZGRNZW1iZXIobV9zdWJzdHJpbmdCdWZmZXIpOwotICAgIGVsc2Ug
aWYgKG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0hhczE2Qml0U2hhZG93KSAvLyBTdWJzdHJp
bmcgbmV2ZXIgaGFzIGl0cyBvd24gc2hhZG93LgotICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlciht
X2NvcHlEYXRhMTYsIChtX2xlbmd0aCArIChoYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0ZXIoKSA/
IDEgOiAwKSkgKiBzaXplb2YoVUNoYXIpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAwYzYyODVkMjA3MTk5Nzg5NjkwOTUxZjMxNjNjOTQ4
ODc2ODk2OTEuLmMyOWFhNTY0MGI5ODlkMzcxOWQzN2Q0YWQ2M2NlZmNhNjcwMTA0MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00NTMsNiArNDUzLDggQEAgcHVibGljOgogCiAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBib29sIGlz
OEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZzhCaXRCdWZm
ZXI7IH0KKyAgICBib29sIHVzZXNJbnRlcm5hbEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZl
ck93bmVyc2hpcCgpID09IEJ1ZmZlckludGVybmFsICYmICFoYXNUZXJtaW5hdGluZ051bGxDaGFy
YWN0ZXIoKTsgfQorICAgIFN0cmluZ0ltcGwqIGJhc2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiBi
dWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcgPyBtX3N1YnN0cmluZ0J1ZmZlciA6
IDA7IH0KIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgYWxsIHVubmVjZXNzYXJ5IHVzYWdlcyBvZiBj
aGFyYWN0ZXJzKCkKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgp
IGNvbnN0IHsgQVNTRVJUKGlzOEJpdCgpKTsgcmV0dXJuIG1fZGF0YTg7IH0KQEAgLTcxNiw4ICs3
MTgsNiBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3RyaW5nU3RhdHMmIHN0
cmluZ1N0YXRzKCkgeyByZXR1cm4gbV9zdHJpbmdTdGF0czsgfQogI2VuZGlmCiAKLSAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBhdCBsZWFz
dCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJhY3RlciBz
dHJpbmdzIGZyb20gU21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2Nv
cHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4
IGY4OWQ4ZGEzNWRiNDhiYjI1ZWI4NDE2MzM4ZjQ3ZDkzN2NiODk0ZjMuLjkxMGNlNzQxNDFiZDdi
OTEwZDc3MTllNGFmNTJlOGExZTA0YWIwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
QEAgLTgzNSwxMiArODM1LDYgQEAgU3RyaW5nIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFs
bGJhY2soY29uc3QgTENoYXIqIHN0cmluZywgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHV0Zjg7
CiB9CiAKLXZvaWQgU3RyaW5nOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMpOwotICAgIGluZm8uYWRkTWVtYmVyKG1faW1wbCk7Ci19Ci0KIC8v
IFN0cmluZyBPcGVyYXRpb25zCiAKIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyQWxsb3dlZEluQmFz
ZShVQ2hhciBjLCBpbnQgYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDBhMjFiNjk5
NWFmMTc0ZWFkMTRlNGRiOWIwM2FiY2RhZjcyNDUyZTQuLmJmMjdmMTcyOTBmOTc1NmZmNDY5NTEy
YWUyMGJkYmZlNjJlZDE4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDU3LDggKzQ1
Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07CiAgICAgfQog
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwotCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBt
X2ltcGw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgKaW5kZXggYTk5ODExYjg0YjNlOTIwYmJkYzZkMDdkMzUwZTFhZmU1YjJjZmNi
My4uYzMxNzk5YmFhNWY3MTdhNTJlMjU4MGI1MjUyODlmNGUxNWU2YjlmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC0zMiw2
ICszMiw3IEBACiAjZGVmaW5lIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb25faAogCiAjaW5j
bHVkZSAiUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcAppbmRleCA2ZjgxNDI2NzJhZDgxNzU5NjY3
OGVkZjZjOWQ2YmYxZDBkYTI4MDIxLi5jOTI2NmVlNjdmMjIyNDU3OGIyMzEwOGNhYTljYzQ0M2Nk
MGY5OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcApAQCAtNDQsNiAr
NDQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01lbW9y
eUluc3RydW1lbnRhdGlvblRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9N
ZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcAppbmRleCBiZWMxYzAwZjc3ZTUxNmM4OTRlMGJi
MmE3ZWUyZjEyZmVmMTMxZjY2Li40ZGQ5YzdhYzdkODQzNjY3MzFlNDA2NDUwNDdhZDhmZWIxMzI2
M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01lbW9yeUluc3Ry
dW1lbnRhdGlvblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1
ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5o
PgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yNjIsNyArMjYzLDcgQEAgVEVT
VChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCB2aXNpdFN0cmluZ3MpCiAgICAgICAgIEluc3Ry
dW1lbnRlZE93bmVyPFN0cmluZz4gc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIoIlN0cmluZyIpOwog
ICAgICAgICBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmNoYXJhY3RlcnMoKTsgLy8g
Rm9yY2UgMTZiaXQgc2hhZG93IGNyZWF0aW9uLgogICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVj
dChzdHJpbmdJbnN0cnVtZW50ZWRPd25lcik7Ci0gICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3Ry
aW5nSW1wbCkgKyBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0aCgpICogMiwg
aGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoc2l6
ZW9mKFN0cmluZ0ltcGwpICsgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5sZW5ndGgo
KSAqIDMsIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICAgICAgRVhQRUNU
X0VRKDIsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKICAgICB9CiAKQEAgLTI3MSw3ICsyNzIs
NyBAQCBURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHZpc2l0U3RyaW5ncykKICAgICAg
ICAgSW5zdHJ1bWVudGVkT3duZXI8QXRvbWljU3RyaW5nPiBhdG9taWNTdHJpbmdJbnN0cnVtZW50
ZWRPd25lcigiQXRvbWljU3RyaW5nIik7CiAgICAgICAgIGF0b21pY1N0cmluZ0luc3RydW1lbnRl
ZE93bmVyLm1fdmFsdWUuc3RyaW5nKCkuY2hhcmFjdGVycygpOyAvLyBGb3JjZSAxNmJpdCBzaGFk
b3cgY3JlYXRpb24uCiAgICAgICAgIGhlbHBlci5hZGRSb290T2JqZWN0KGF0b21pY1N0cmluZ0lu
c3RydW1lbnRlZE93bmVyKTsKLSAgICAgICAgRVhQRUNUX0VRKHNpemVvZihTdHJpbmdJbXBsKSAr
IGF0b21pY1N0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVuZ3RoKCkgKiAyLCBoZWxw
ZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2Yo
U3RyaW5nSW1wbCkgKyBhdG9taWNTdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0
aCgpICogMywgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgICAgICBFWFBF
Q1RfRVEoMiwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogICAgIH0KIApAQCAtNDMxLDcgKzQz
Miw3IEBAIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgdmVjdG9yV2l0aEluc3RydW1l
bnRlZFR5cGUpCiAgICAgICAgIHZhbHVlLT5hcHBlbmQoInN0cmluZyIpOwogICAgIEluc3RydW1l
bnRlZE93bmVyPFN0cmluZ1ZlY3RvciogPiByb290KHZhbHVlLmdldCgpKTsKICAgICBoZWxwZXIu
YWRkUm9vdE9iamVjdChyb290KTsKLSAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ1ZlY3Rvcikg
KyBzaXplb2YoU3RyaW5nKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsgc2l6ZW9mKFN0cmluZ0ltcGwp
ICogdmFsdWUtPnNpemUoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAg
IEVYUEVDVF9FUShzaXplb2YoU3RyaW5nVmVjdG9yKSArIHNpemVvZihTdHJpbmcpICogdmFsdWUt
PmNhcGFjaXR5KCkgKyAoc2l6ZW9mKFN0cmluZ0ltcGwpICsgNikgKiB2YWx1ZS0+c2l6ZSgpLCBo
ZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgRVhQRUNUX0VRKGNvdW50ICsg
MiwgKHNpemVfdCloZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CiB9CiAKQEAgLTQ0Niw3ICs0NDcs
NyBAQCBURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIGhhc2hTZXRXaXRoSW5zdHJ1bWVu
dGVkVHlwZSkKICAgICAgICAgdmFsdWUtPmFkZChTdHJpbmc6Om51bWJlcihpKSk7CiAgICAgSW5z
dHJ1bWVudGVkT3duZXI8VmFsdWVUeXBlKiA+IHJvb3QodmFsdWUuZ2V0KCkpOwogICAgIGhlbHBl
ci5hZGRSb290T2JqZWN0KHJvb3QpOwotICAgIEVYUEVDVF9FUShzaXplb2YoVmFsdWVUeXBlKSAr
IHNpemVvZihTdHJpbmcpICogdmFsdWUtPmNhcGFjaXR5KCkgKyBzaXplb2YoU3RyaW5nSW1wbCkg
KiB2YWx1ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAg
RVhQRUNUX0VRKHNpemVvZihWYWx1ZVR5cGUpICsgc2l6ZW9mKFN0cmluZykgKiB2YWx1ZS0+Y2Fw
YWNpdHkoKSArIChzaXplb2YoU3RyaW5nSW1wbCkgKyAxKSAqIHZhbHVlLT5zaXplKCksIGhlbHBl
ci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICBFWFBFQ1RfRVEoY291bnQgKyAxLCAo
c2l6ZV90KWhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166364</attachid>
            <date>2012-09-29 08:21:42 -0700</date>
            <delta_ts>2012-10-01 02:57:41 -0700</delta_ts>
            <desc>fix for KURL</desc>
            <filename>bug-97964-20120929192058.patch</filename>
            <type>text/plain</type>
            <size>24222</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhkMmQzZDA4NzBjMDU5NjExZDE0NTY3
M2JkN2Q0Nzk1MGM0MDQ0MmYuLjRhMzZkOTM4YTU1ZTJhNWU4MDNiOTA2NjkzM2I3NTMzYWEwNTkz
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtYWtlIFN0
cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgg
d2FzIGFkZGVkLgorICAgICAgICBJbnRydXNpdmUgaW5zdHJ1bWVudGF0aW9uIHdhcyByZW1vdmVk
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToK
KyAgICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6bGVuZ3RoKToKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVzZXNJbnRlcm5hbEJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmJhc2VTdHJpbmcpOgorICAgICAgICAoU3RyaW5nSW1wbCk6CisKIDIw
MTItMDktMjggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgSmF2YSBicmlkZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMWIzMmQ5YzUxMTliMTAyZGQyMDBj
ZDIxNDdjOGU3ZDQ4ZTljYjM1Li4xZDVjMWZkYjUzZmU5OTllZTViNmZkZGIwYmUwNTlhODA3Yjg0
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5N
SSBtYWtlIFN0cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
U3RyaW5nLmggaW5jbHVkZSB3YXMgYWRkZWQuCisKKyAgICAgICAgKiBkb20vV2ViQ29yZU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oOgorCiAyMDEyLTA5LTI5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBTY3JvbGwgb2Zmc2V0IG9mIGZs
ZXggaXRlbXMgbG9zdCBkdXJpbmcgcmVsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMWRlY2NlMmNhNWRjYTNhMDI5ZDFhMTNjZDUxYjk2NjUwZDkzOGRmZi4uZTNmYmU5YzM1MzQ0
MGU0NTFiMGY2ZWVhYzQ3YWM1OTE1YzVlOGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1ha2UgU3RyaW5nKiBp
bnN0cnVtZW50YXRpb24gbm9uIGludHJ1c2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgZXhwZWN0YXRpb25zIHdlcmUgZml4ZWQgYmVjYXVzZSBv
bGQgaW5zdHJ1bWVudGF0aW9uIGhhZCB3cm9uZyBkZXRlY3RvciBmb3IgQnVmZmVySW50ZXJuYWwg
dHlwZSBvZiBzdG9yYWdlLgorCisgICAgICAgICogdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wOS0yOCAgSmlhbiBM
aSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGRyYWdnYWJsZSBwcm9wZXJ0
eSB0byBXZWJEcmFnZ2FibGVSZWdpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMGNlYjlm
ZGVlNGRhNjM0YjNlZmY3MzViOTQ1NmJlZTgxOThkYmYzOS4uZjBiOGYzMTE0Njc4NjAyM2RiNDZh
ZjIzNDIyNmY0ZDUxYWFmZjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtODIsNiArODIs
NyBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5
QnVmZmVyVmlldy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25I
YXNoU2V0LmggXAorICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmlu
Zy5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCBc
CiAgICAgU291cmNlL1dURi93dGYvTWVzc2FnZVF1ZXVlLmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkgYi9T
b3VyY2UvV1RGL1dURi5neXBpCmluZGV4IGRlYWM1NzE5YzdhZTViOTljMmQxOGNiNDhiMmM1NTQ2
MjJiZDhiMTQuLmJhZTk0Y2MyM2QzY2ViNWNmNGEwOWNkM2M2MTA4ZDMwNWUyYzYwYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLmd5cGkKKysrIGIvU291cmNlL1dURi9XVEYuZ3lwaQpAQCAt
NTIsNiArNTIsNyBAQAogICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcs
CiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5o
JywKICAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oJywKKyAg
ICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgnLAogICAgICAgICAg
ICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCcsCiAgICAgICAgICAgICAnd3Rm
L01lc3NhZ2VRdWV1ZS5oJywKICAgICAgICAgICAgICd3dGYvTm9uQ29weWluZ1NvcnQuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9Tb3VyY2UvV1RGL1dURi5wcm8KaW5kZXgg
N2ExMGJlZmUzM2Q0ZThmNTZiOWU3ZGU1MGMyOTYyMzU5Y2U4NTQ3Yy4uOTc3MzIyODZjMjBkMjAw
OTg0ZTc3NWY2MDIxZmY4Yjg0NzUyZWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYucHJv
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtODksNiArODksNyBAQCBIRUFERVJTICs9IFwK
ICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
QXJyYXlCdWZmZXJWaWV3LmggXAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCBc
CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggXAogICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvblZlY3Rvci5oIFwKICAgICBNZXNzYWdlUXVldWUuaCBcCiAgICAgTWV0YUFsbG9jYXRv
ci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qIGIvU291
cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKaW5kZXggYjkyZTc3ODkwMzUzZmM4MTRiZDFh
MDllYTI0Y2Y3ZWY1MzhkMDk5Ni4uZTZmN2VmMmE5ZDMyYjU0MDcxZWE2NmNjODY2MmZiOWNkNTYz
ZGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKKysrIGIv
U291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKQEAgLTkxMyw2ICs5MTMsMTAgQEAKIAkJ
CT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cd3RmXE1l
bW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJ
CSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlx3dGZcTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
LmgiCiAJCQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDk3M2IxYzgxNjQxNmY5YjkzOTA1MGY2NDE5NmYzNWExZjJhMmJiYzMuLmRjYzky
ODE2ZThlY2E3ZWM4MzQxYzg5Yzc4ZTA2ODcwYzVkZGFjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMsNiArNDMsNyBAQAogCQk0RjFCMkRCNjE2MEI0
NEFBMDA1ODY1NTkgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxQjJEQjUxNjBCNDRBQTAwNTg2
NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCAqLzsgfTsKIAkJNEYxRDExNTQx
NUZGMTFCRTAwMjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovOyB9OwogCQk0RkNCNzEwQTE2MEExQTA3MDA4
NDI1RUMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkNCNzEwOTE2MEExQTA3MDA4NDI1RUMgLyog
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggKi87IH07CisJCTRGQ0YyN0UxMTYxNzJFODYw
MENCRjAzNyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQ0YyN0UwMTYxNzJFODYwMENCRjAzNyAv
KiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCAqLzsgfTsKIAkJNEZEODU1NDcxNjEzM0Uw
RTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZEODU1NDYxNjEzM0Uw
RTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oICovOyB9
OwogCQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMjlDMzNEMTVGRkQ3
OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4MTM0MDEzODE1QjA5
MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICov
OyB9OwpAQCAtMzE0LDYgKzMxNSw3IEBACiAJCTRGMUIyREI1MTYwQjQ0QUEwMDU4NjU1OSAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEZDQjcxMDkxNjBBMUEwNzAw
ODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEZDRjI3RTAxNjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvblN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEZEODU1NDYxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5
QnVmZmVyVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0
cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5OCw2
ICs3MDAsNyBAQAogCQkJCTRGMUQxMTUzMTVGRjExQkUwMDI2RTkwOCAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCAqLywKIAkJCQk0RkQ4NTU0NjE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3LmggKi8sCiAJCQkJNEYxQjJEQjUxNjBCNDRBQTAw
NTg2NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCAqLywKKwkJCQk0RkNGMjdF
MDE2MTcyRTg2MDBDQkYwMzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggKi8sCiAJ
CQkJNEZDQjcxMDkxNjBBMUEwNzAwODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rv
ci5oICovLAogCQkJCUE4QTQ3MkNDMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCAq
LywKIAkJCQlBOEE0NzJDRDE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8s
CkBAIC0xMTUzLDYgKzExNTYsNyBAQAogCQkJCTRGQ0I3MTBBMTYwQTFBMDcwMDg0MjVFQyAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGMUIyREI2
MTYwQjQ0QUEwMDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RkQ4NTU0NzE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQk0RkNGMjdFMTE2MTcy
RTg2MDBDQkYwMzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNjliMDIyNTRiMzdh
ZmE3MjBiMjU2MjY3YzI4OGM1OGYxZWVlNWM4Zi4uNjU5YjlkNjBmZDc0MWJlYzQ4NTQ4NjYzNDBk
YTFjZmU4OTU1MjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTMxLDYgKzMxLDggQEAKICNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKICNkZWZpbmUg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKIAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CkBAIC0zMzQsNiArMzM2LDIxIEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyPFQ+Ojpwcm9jZXNzKE1lbW9yeUluc3RydW1lbnRhdGlv
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGNsYXNzIFZlY3Rv
cjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+KiBjb25zdCYsIE1l
bW9yeU9iamVjdEluZm8qKTsKIAorY2xhc3MgU3RyaW5nOwordm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShjb25zdCBTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyopOworCitjbGFzcyBTdHJp
bmdJbXBsOwordm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYs
IE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgQXRvbWljU3RyaW5nOwordm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShjb25zdCBBdG9taWNTdHJpbmcqIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyop
OworCitjbGFzcyBDU3RyaW5nOwordm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBDU3RyaW5n
KiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgQ1N0cmluZ0J1ZmZlcjsKK3Zv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZ0J1ZmZlciogY29uc3QmLCBNZW1vcnlP
YmplY3RJbmZvKik7CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gIWRlZmluZWQo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1l
bnRhdGlvblN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MmYyZDYxMTkyYWU5MWY1YWE1ZDliYzgwMDlj
NTFiMTBmZTVmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25TdHJpbmcuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZW1vcnlJbnN0cnVt
ZW50YXRpb25TdHJpbmdfaAorI2RlZmluZSBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmdfaAor
CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IFN0cmluZ0ltcGwqIGNvbnN0JiBzdHJpbmdJbXBs
LCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIHNpemVfdCBzZWxm
U2l6ZSA9IHNpemVvZihTdHJpbmdJbXBsKTsKKworICAgIC8vIENvdW50IHNpemUgdXNlZCBieSBp
bnRlcm5hbCBidWZmZXIgYnV0IHNraXAgc3RyaW5ncyB0aGF0IHdlcmUgY29uc3RydWN0ZWQgZnJv
bSBsaXRlcmFscy4KKyAgICBpZiAoc3RyaW5nSW1wbC0+dXNlc0ludGVybmFsQnVmZmVyKCkgJiYg
IXN0cmluZ0ltcGwtPmhhc1Rlcm1pbmF0aW5nTnVsbENoYXJhY3RlcigpKQorICAgICAgICBzZWxm
U2l6ZSArPSBzdHJpbmdJbXBsLT5sZW5ndGgoKSAqIChzdHJpbmdJbXBsLT5pczhCaXQoKSA/IHNp
emVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKTsKKworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHN0cmluZ0ltcGwsIDAsIHNlbGZTaXplKTsKKworICAgIGlmIChT
dHJpbmdJbXBsKiBiYXNlU3RyaW5nID0gc3RyaW5nSW1wbC0+YmFzZVN0cmluZygpKQorICAgICAg
ICBpbmZvLmFkZE1lbWJlcihiYXNlU3RyaW5nKTsKKyAgICBlbHNlIGlmIChzdHJpbmdJbXBsLT5o
YXMxNkJpdFNoYWRvdygpKSAvLyBTdWJzdHJpbmcgbmV2ZXIgaGFzIGl0cyBvd24gc2hhZG93Lgor
ICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlcihzdHJpbmdJbXBsLT5jaGFyYWN0ZXJzKCksIChzdHJp
bmdJbXBsLT5sZW5ndGgoKSArIChzdHJpbmdJbXBsLT5oYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0
ZXIoKSA/IDEgOiAwKSkgKiBzaXplb2YoVUNoYXIpKTsKK30KKworaW5saW5lIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoY29uc3QgU3RyaW5nKiBjb25zdCYgc3RyaW5nLCBNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHN0cmluZyk7CisgICAgaW5mby5hZGRNZW1iZXIoc3RyaW5nLT5pbXBsKCkpOwor
fQorCitpbmxpbmUgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBBdG9taWNTdHJpbmcqIGNv
bnN0JiBhdG9taWNTdHJpbmcsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgYXRvbWljU3RyaW5n
KTsKKyAgICBpbmZvLmFkZE1lbWJlcihhdG9taWNTdHJpbmctPnN0cmluZygpKTsKK30KKworaW5s
aW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZ0J1ZmZlciogY29uc3QmIGNT
dHJpbmdCdWZmZXIsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgY1N0cmluZ0J1ZmZlciwgMCwg
c2l6ZW9mKCpjU3RyaW5nQnVmZmVyKSArIGNTdHJpbmdCdWZmZXItPmxlbmd0aCgpKTsKK30KKwor
aW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZyogY29uc3QmIGNTdHJp
bmcsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgY1N0cmluZyk7CisgICAgaW5mby5hZGRNZW1i
ZXIoY1N0cmluZy0+YnVmZmVyKCkpOworfQorCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNZW1v
cnlJbnN0cnVtZW50YXRpb25WZWN0b3JfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNw
cAppbmRleCBiOTFjNjBlODBkMGMyOTZkZDQ1NjRiODA0ZmU2YzFmOGI1YjcyZmNmLi4wZGU2MDk2
ZGRkMTBlZmM2NTcyOTYyODExNDg3NDBjM2U3Zjg4ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuY3BwCkBAIC00MzYsMTAgKzQzNiw0IEBAIHZvaWQgQXRvbWljU3RyaW5nOjpzaG93
KCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lkIEF0b21pY1N0cmluZzo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzKTsKLSAgICBpbmZvLmFkZE1l
bWJlcihtX3N0cmluZyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmgKaW5kZXggMDY2YjA3MjZiZGRlNDA1ZWQ3MzU0MjMxZTY4NjM2NWNiODA0YWM4
NS4uYzI1YjEzNTliY2VlZGRkYWEyOTZjMDcyZGVmNDNiNGJiODdkNjA2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0xNTksOCArMTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2hvdygpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci0KIHByaXZhdGU6CiAg
ICAgLy8gVGhlIGV4cGxpY2l0IGNvbnN0cnVjdG9ycyB3aXRoIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwgbXVzdCBiZSB1c2VkIGZvciBsaXRlcmFscy4KICAgICBBdG9taWNTdHJp
bmcoQVNDSUlMaXRlcmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmlu
Zy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggMDNhYjNlNTRhN2NmYWE2
ZDE3NDJjNTA5NjRjOWNmZDY4MTU3OWUxOS4uNGQ4OTRiMTk2ZDAzOWUyNGMyODc4NWYxZmI0M2Ey
MzQzNzlkMmFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTM3LDEzICszNyw3IEBAIG5hbWVz
cGFjZSBXVEYgewogY2xhc3MgQ1N0cmluZ0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPENTdHJp
bmdCdWZmZXI+IHsKIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9k
YXRhOyB9Ci0gICAgc2l6ZV90IGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZvPgotICAgIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHR5cGVuYW1lIE1lbW9yeU9iamVjdEluZm86OkNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIDAsIHNpemVvZihDU3RyaW5nQnVmZmVyKSArIG1fbGVuZ3RoKTsKLSAg
ICB9CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENTdHJpbmc7CkBAIC04MSwxMyArNzUsNiBAQCBwdWJs
aWM6CiAKICAgICBDU3RyaW5nQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVtb3J5T2JqZWN0SW5mbz4KLSAg
ICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Ci0gICAgewotICAgICAgICB0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZvOjpDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzKTsKLSAgICAgICAgaW5mby5hZGRNZW1i
ZXIobV9idWZmZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICB2b2lkIGNvcHlCdWZmZXJJZk5l
ZWRlZCgpOwogICAgIHZvaWQgaW5pdChjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCBjMDZhOTY2ZTdhZGQ2ZDFiNTJlNWQ1YmU1NjIw
MTQ0ODc5ZmU2Y2M2Li45OGQ1OTUzNmJlMDI4YTBjYzY3MTYzMjc2MGU4ZTUyYzRiNGYxMzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE3OTIsMjQgKzE3OTIsNCBAQCBzaXpl
X3QgU3RyaW5nSW1wbDo6c2l6ZUluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplICsgc2l6
ZW9mKCp0aGlzKTsKIH0KIAotdm9pZCBTdHJpbmdJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIHNpemVfdCBzZWxm
U2l6ZSA9IHNpemVvZihTdHJpbmdJbXBsKTsKLQotICAgICAgICAvLyBDb3VudCBzaXplIHVzZWQg
YnkgaW50ZXJuYWwgYnVmZmVyIGJ1dCBza2lwIHN0cmluZ3MgdGhhdCB3ZXJlIGNvbnN0cnVjdGVk
IGZyb20gbGl0ZXJhbHMuCi0gICAgaWYgKChtX2hhc2hBbmRGbGFncyAmIEJ1ZmZlckludGVybmFs
KSAmJiAhaGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyKCkpCi0gICAgICAgIC8vIFRocmVlIGNh
c2VzIGFyZSBjb3ZlcmVkIGhlcmU6Ci0gICAgICAgIC8vIDEpIGEgbm9ybWFsIDgtYml0IHN0cmlu
ZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVybmFsKQotICAgICAgICAvLyAyKSBh
IG5vcm1hbCAxNi1iaXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVmZmVySW50ZXJu
YWwpCi0gICAgICAgIC8vIDMpIGVtcHR5IHVuaXF1ZSBzdHJpbmcgd2l0aCBsZW5ndGggPSAwIChC
dWZmZXJJbnRlcm5hbCkKLSAgICAgICAgc2VsZlNpemUgKz0gbV9sZW5ndGggKiAobV9oYXNoQW5k
RmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlciA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNo
YXIpKTsKLQotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IDAsIHNlbGZTaXplKTsKLQotICAgIGlmIChtX2hhc2hBbmRGbGFncyAmIEJ1ZmZlclN1YnN0cmlu
ZykKLSAgICAgICAgaW5mby5hZGRNZW1iZXIobV9zdWJzdHJpbmdCdWZmZXIpOwotICAgIGVsc2Ug
aWYgKG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0hhczE2Qml0U2hhZG93KSAvLyBTdWJzdHJp
bmcgbmV2ZXIgaGFzIGl0cyBvd24gc2hhZG93LgotICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlciht
X2NvcHlEYXRhMTYsIChtX2xlbmd0aCArIChoYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0ZXIoKSA/
IDEgOiAwKSkgKiBzaXplb2YoVUNoYXIpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAwYzYyODVkMjA3MTk5Nzg5NjkwOTUxZjMxNjNjOTQ4
ODc2ODk2OTEuLmMyOWFhNTY0MGI5ODlkMzcxOWQzN2Q0YWQ2M2NlZmNhNjcwMTA0MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00NTMsNiArNDUzLDggQEAgcHVibGljOgogCiAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBib29sIGlz
OEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZzhCaXRCdWZm
ZXI7IH0KKyAgICBib29sIHVzZXNJbnRlcm5hbEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZl
ck93bmVyc2hpcCgpID09IEJ1ZmZlckludGVybmFsICYmICFoYXNUZXJtaW5hdGluZ051bGxDaGFy
YWN0ZXIoKTsgfQorICAgIFN0cmluZ0ltcGwqIGJhc2VTdHJpbmcoKSBjb25zdCB7IHJldHVybiBi
dWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcgPyBtX3N1YnN0cmluZ0J1ZmZlciA6
IDA7IH0KIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgYWxsIHVubmVjZXNzYXJ5IHVzYWdlcyBvZiBj
aGFyYWN0ZXJzKCkKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgp
IGNvbnN0IHsgQVNTRVJUKGlzOEJpdCgpKTsgcmV0dXJuIG1fZGF0YTg7IH0KQEAgLTcxNiw4ICs3
MTgsNiBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3RyaW5nU3RhdHMmIHN0
cmluZ1N0YXRzKCkgeyByZXR1cm4gbV9zdHJpbmdTdGF0czsgfQogI2VuZGlmCiAKLSAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBhdCBsZWFz
dCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1wdHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJhY3RlciBz
dHJpbmdzIGZyb20gU21hbGxTdHJpbmdzLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2Nv
cHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4
IGY4OWQ4ZGEzNWRiNDhiYjI1ZWI4NDE2MzM4ZjQ3ZDkzN2NiODk0ZjMuLjkxMGNlNzQxNDFiZDdi
OTEwZDc3MTllNGFmNTJlOGExZTA0YWIwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
QEAgLTgzNSwxMiArODM1LDYgQEAgU3RyaW5nIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFs
bGJhY2soY29uc3QgTENoYXIqIHN0cmluZywgc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHV0Zjg7
CiB9CiAKLXZvaWQgU3RyaW5nOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMpOwotICAgIGluZm8uYWRkTWVtYmVyKG1faW1wbCk7Ci19Ci0KIC8v
IFN0cmluZyBPcGVyYXRpb25zCiAKIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyQWxsb3dlZEluQmFz
ZShVQ2hhciBjLCBpbnQgYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDBhMjFiNjk5
NWFmMTc0ZWFkMTRlNGRiOWIwM2FiY2RhZjcyNDUyZTQuLmJmMjdmMTcyOTBmOTc1NmZmNDY5NTEy
YWUyMGJkYmZlNjJlZDE4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDU3LDggKzQ1
Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07CiAgICAgfQog
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwotCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBt
X2ltcGw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgKaW5kZXggYTk5ODExYjg0YjNlOTIwYmJkYzZkMDdkMzUwZTFhZmU1YjJjZmNi
My4uYzMxNzk5YmFhNWY3MTdhNTJlMjU4MGI1MjUyODlmNGUxNWU2YjlmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC0zMiw2
ICszMiw3IEBACiAjZGVmaW5lIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb25faAogCiAjaW5j
bHVkZSAiUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMLmNwcAppbmRleCBjM2Q1MDk5ZjNhY2I5ZGZkN2FlNGIyZDRlNDViY2I0
MDMzMmEyZmYwLi4wZDJhNmQ4YjM2YmE0MWQzODkyZWViNTgxZTQzMGU1MjY1MjczYWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lmICFVU0UoV1RGVVJM
KQogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNlbmRpZgorI2luY2x1ZGUgPHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29n
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAKaW5kZXggNmY4
MTQyNjcyYWQ4MTc1OTY2NzhlZGY2YzlkNmJmMWQwZGEyODAyMS4uYzkyNjZlZTY3ZjIyMjQ1Nzhi
MjMxMDhjYWE5Y2M0NDNjZDBmOTlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS1VSTEdvb2dsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2ds
ZS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKaW5kZXggYmVjMWMw
MGY3N2U1MTZjODk0ZTBiYjJhN2VlMmYxMmZlZjEzMWY2Ni4uNGRkOWM3YWM3ZDg0MzY2NzMxZTQw
NjQ1MDQ3YWQ4ZmViMTMyNjNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1l
bnRhdGlvbkhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjYy
LDcgKzI2Myw3IEBAIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgdmlzaXRTdHJpbmdz
KQogICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+IHN0cmluZ0luc3RydW1lbnRlZE93
bmVyKCJTdHJpbmciKTsKICAgICAgICAgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5j
aGFyYWN0ZXJzKCk7IC8vIEZvcmNlIDE2Yml0IHNoYWRvdyBjcmVhdGlvbi4KICAgICAgICAgaGVs
cGVyLmFkZFJvb3RPYmplY3Qoc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIpOwotICAgICAgICBFWFBF
Q1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwpICsgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1
ZS5sZW5ndGgoKSAqIDIsIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKHNpemVvZihTdHJpbmdJbXBsKSArIHN0cmluZ0luc3RydW1lbnRlZE93bmVy
Lm1fdmFsdWUubGVuZ3RoKCkgKiAzLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgyLCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CiAgICAgfQog
CkBAIC0yNzEsNyArMjcyLDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCB2aXNp
dFN0cmluZ3MpCiAgICAgICAgIEluc3RydW1lbnRlZE93bmVyPEF0b21pY1N0cmluZz4gYXRvbWlj
U3RyaW5nSW5zdHJ1bWVudGVkT3duZXIoIkF0b21pY1N0cmluZyIpOwogICAgICAgICBhdG9taWNT
dHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLnN0cmluZygpLmNoYXJhY3RlcnMoKTsgLy8g
Rm9yY2UgMTZiaXQgc2hhZG93IGNyZWF0aW9uLgogICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVj
dChhdG9taWNTdHJpbmdJbnN0cnVtZW50ZWRPd25lcik7Ci0gICAgICAgIEVYUEVDVF9FUShzaXpl
b2YoU3RyaW5nSW1wbCkgKyBhdG9taWNTdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxl
bmd0aCgpICogMiwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgICAgICBF
WFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwpICsgYXRvbWljU3RyaW5nSW5zdHJ1bWVudGVkT3du
ZXIubV92YWx1ZS5sZW5ndGgoKSAqIDMsIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygp
KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKICAgICB9
CiAKQEAgLTQzMSw3ICs0MzIsNyBAQCBURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHZl
Y3RvcldpdGhJbnN0cnVtZW50ZWRUeXBlKQogICAgICAgICB2YWx1ZS0+YXBwZW5kKCJzdHJpbmci
KTsKICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmdWZWN0b3IqID4gcm9vdCh2YWx1ZS5nZXQo
KSk7CiAgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qocm9vdCk7Ci0gICAgRVhQRUNUX0VRKHNpemVv
ZihTdHJpbmdWZWN0b3IpICsgc2l6ZW9mKFN0cmluZykgKiB2YWx1ZS0+Y2FwYWNpdHkoKSArIHNp
emVvZihTdHJpbmdJbXBsKSAqIHZhbHVlLT5zaXplKCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JB
bGxUeXBlcygpKTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ1ZlY3RvcikgKyBzaXplb2Yo
U3RyaW5nKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsgKHNpemVvZihTdHJpbmdJbXBsKSArIDYpICog
dmFsdWUtPnNpemUoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgIEVY
UEVDVF9FUShjb3VudCArIDIsIChzaXplX3QpaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogfQog
CkBAIC00NDYsNyArNDQ3LDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBoYXNo
U2V0V2l0aEluc3RydW1lbnRlZFR5cGUpCiAgICAgICAgIHZhbHVlLT5hZGQoU3RyaW5nOjpudW1i
ZXIoaSkpOwogICAgIEluc3RydW1lbnRlZE93bmVyPFZhbHVlVHlwZSogPiByb290KHZhbHVlLmdl
dCgpKTsKICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChyb290KTsKLSAgICBFWFBFQ1RfRVEoc2l6
ZW9mKFZhbHVlVHlwZSkgKyBzaXplb2YoU3RyaW5nKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsgc2l6
ZW9mKFN0cmluZ0ltcGwpICogdmFsdWUtPnNpemUoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFs
bFR5cGVzKCkpOworICAgIEVYUEVDVF9FUShzaXplb2YoVmFsdWVUeXBlKSArIHNpemVvZihTdHJp
bmcpICogdmFsdWUtPmNhcGFjaXR5KCkgKyAoc2l6ZW9mKFN0cmluZ0ltcGwpICsgMSkgKiB2YWx1
ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgRVhQRUNU
X0VRKGNvdW50ICsgMSwgKHNpemVfdCloZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166437</attachid>
            <date>2012-10-01 02:57:49 -0700</date>
            <delta_ts>2012-10-01 07:07:14 -0700</delta_ts>
            <desc>comments addressed</desc>
            <filename>bug-97964-20121001135702.patch</filename>
            <type>text/plain</type>
            <size>26482</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Zjk4OWUzNGEwNWZlZGM0OTFhY2Uz
NjEzZGUzZmRlOTNhYTY3MzcuLmVhN2FjODY1YTZiODcyMDlhNjQ4MzA3YzU0M2FiMmM0MjUzOTRk
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtYWtlIFN0
cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgg
d2FzIGFkZGVkLgorICAgICAgICBJbnRydXNpdmUgaW5zdHJ1bWVudGF0aW9uIHdhcyByZW1vdmVk
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToK
KyAgICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6bGVuZ3RoKToKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVzZXNJbnRlcm5hbEJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmJhc2VTdHJpbmcpOgorICAgICAgICAoU3RyaW5nSW1wbCk6CisKIDIw
MTItMDktMzAgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDbGVhbiB1cCBIYXNUcml2aWFsQ29uc3RydWN0b3IvRGVzdHJ1Y3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDY0YjFmZWUxMmJkOGI1ZWI4NjQ3NDQ2MzkyMDBmMTNkZTRkNDUxM2EuLmYwMjBhZmVkZDcw
ZGQzMTRiZDNjN2JlZmIzM2VlMzYwN2U4ZjY0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMi0wOS0yOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1ha2UgU3RyaW5nKiBpbnN0cnVtZW50YXRpb24g
bm9uIGludHJ1c2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTc5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBpbmNsdWRlIHdhcyBhZGRlZC4KKwor
ICAgICAgICAqIGRvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisKIDIwMTItMDkt
MzAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogU2VwYXJhdGUgQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZyBpbnRvIHJl
c291cmNlIGFuZCBjb250ZW50IGJpbmRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDY1NGExZWFjZWEyOWU5ZDM3OGQ0ZTQzMjVlMmY3NzNjZjFlZjZkMDEuLmU4ZGFhZWUwNDgwZTk4
ZWEzMDEwMGNiOGIyNmNhMDhlMmI1YzM2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtYWtlIFN0cmluZyogaW5z
dHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGV4cGVjdGF0aW9ucyB3ZXJlIGZpeGVkIGJlY2F1c2Ugb2xk
IGluc3RydW1lbnRhdGlvbiBoYWQgd3JvbmcgZGV0ZWN0b3IgZm9yIEJ1ZmZlckludGVybmFsIHR5
cGUgb2Ygc3RvcmFnZS4KKworICAgICAgICAqIHRlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMTAtMDEgIEFsZXhhbmRl
ciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBbRGV2aWNlIE1ldHJpY3NdIFJlbW92ZSB0aGUgZ3V0dGVyIG92ZXJsYXkgbW92aW5nIGl0cyBm
dW5jdGlvbmFsaXR5IGludG8gdGhlIEluc3BlY3Rvck92ZXJsYXkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCAwY2ViOWZkZWU0ZGE2MzRiM2VmZjczNWI5NDU2YmVlODE5OGRiZjM5Li5mMGI4ZjMx
MTQ2Nzg2MDIzZGI0NmFmMjM0MjI2ZjRkNTFhYWZmODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC04Miw2ICs4Miw3IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUlu
c3RydW1lbnRhdGlvbkhhc2hTZXQuaCBcCisgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uU3RyaW5nLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRh
dGlvblZlY3Rvci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaCBcCiAgICAg
U291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYuZ3lwaSBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKaW5kZXggZGVhYzU3MTljN2FlNWI5OWMy
ZDE4Y2I0OGIyYzU1NDYyMmJkOGIxNC4uYmFlOTRjYzIzZDNjZWI1Y2Y0YTA5Y2QzYzYxMDhkMzA1
ZTJjNjBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYuZ3lwaQorKysgYi9Tb3VyY2UvV1RG
L1dURi5neXBpCkBAIC01Miw2ICs1Miw3IEBACiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uQXJy
YXlCdWZmZXJWaWV3LmgnLAogICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25I
YXNoU2V0LmgnLAorICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcu
aCcsCiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oJywKICAg
ICAgICAgICAgICd3dGYvTWVzc2FnZVF1ZXVlLmgnLAogICAgICAgICAgICAgJ3d0Zi9Ob25Db3B5
aW5nU29ydC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnBybyBiL1NvdXJjZS9XVEYv
V1RGLnBybwppbmRleCA3YTEwYmVmZTMzZDRlOGY1NmI5ZTdkZTUwYzI5NjIzNTljZTg1NDdjLi45
NzczMjI4NmMyMGQyMDA5ODRlNzc1ZjYwMjFmZjhiODQ3NTJlZWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1dURi5wcm8KKysrIGIvU291cmNlL1dURi9XVEYucHJvCkBAIC04OSw2ICs4OSw3IEBA
IEhFQURFUlMgKz0gXAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKICAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCBcCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSGFzaFNldC5oIFwKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBcCiAgICAg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggXAogICAgIE1lc3NhZ2VRdWV1ZS5oIFwKICAg
ICBNZXRhQWxsb2NhdG9yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dU
Ri52Y3Byb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagppbmRleCBiOTJlNzc4
OTAzNTNmYzgxNGJkMWEwOWVhMjRjZjdlZjUzOGQwOTk2Li5lNmY3ZWYyYTlkMzJiNTQwNzFlYTY2
Y2M4NjYyZmI5Y2Q1NjNkZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RG
LnZjcHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagpAQCAtOTEzLDYg
KzkxMywxMCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCSAgICAgICAgUmVsYXRpdmVQ
YXRoPSIuLlx3dGZcTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgiCisJCQk+CisJCTwvRmls
ZT4KKwkJPEZpbGUKIAkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxNZW1vcnlJbnN0cnVt
ZW50YXRpb25WZWN0b3IuaCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTczYjFjODE2NDE2ZjliOTM5MDUwZjY0MTk2ZjM1YTFm
MmEyYmJjMy4uZGNjOTI4MTZlOGVjYTdlYzgzNDFjODljNzhlMDY4NzBjNWRkYWMzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Myw2ICs0Myw3IEBACiAJ
CTRGMUIyREI2MTYwQjQ0QUEwMDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjFCMkRC
NTE2MEI0NEFBMDA1ODY1NTkgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oICovOyB9
OwogCQk0RjFEMTE1NDE1RkYxMUJFMDAyNkU5MDggLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjFEMTE1MzE1
RkYxMUJFMDAyNkU5MDggLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCTRGQ0I3
MTBBMTYwQTFBMDcwMDg0MjVFQyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQ0I3MTA5MTYwQTFB
MDcwMDg0MjVFQyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCAqLzsgfTsKKwkJNEZD
RjI3RTExNjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZDRjI3RTAxNjE3
MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oICovOyB9OwogCQk0
RkQ4NTU0NzE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uQXJyYXlCdWZm
ZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RkQ4NTU0NjE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uQXJyYXlCdWZm
ZXJWaWV3LmggKi87IH07CiAJCTdFMjlDMzNFMTVGRkQ3OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGlt
ZUV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0UyOUMzM0QxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi87IH07CiAJ
CTgxMzQwMTM4MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzYxNUIwOTJGRDAwMUZGMEI4IC8q
IEJhc2U2NC5jcHAgKi87IH07CkBAIC0zMTQsNiArMzE1LDcgQEAKIAkJNEYxQjJEQjUxNjBCNDRB
QTAwNTg2NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjFEMTE1MzE1RkYxMUJFMDAyNkU5MDggLyogTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
bW9yeUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkNC
NzEwOTE2MEExQTA3MDA4NDI1RUMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RkNGMjdFMDE2MTcyRTg2MDBDQkYw
MzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0RkQ4NTU0NjE2MTMzRTBFMDBDNUI3MDQgLyogTWVtb3J5SW5zdHJ1
bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RDI0N0I2MjE0Njg5Qjg2MDBFNzhCNzYgLyogbGliV1RGLmEgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7
IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFzZS54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjk4LDYgKzcwMCw3IEBACiAJCQkJNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4IC8q
IE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovLAogCQkJCTRGRDg1NTQ2MTYxMzNFMEUwMEM1Qjcw
NCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQk0RjFC
MkRCNTE2MEI0NEFBMDA1ODY1NTkgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oICov
LAorCQkJCTRGQ0YyN0UwMTYxNzJFODYwMENCRjAzNyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25T
dHJpbmcuaCAqLywKIAkJCQk0RkNCNzEwOTE2MEExQTA3MDA4NDI1RUMgLyogTWVtb3J5SW5zdHJ1
bWVudGF0aW9uVmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8qIE1l
c3NhZ2VRdWV1ZS5oICovLAogCQkJCUE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmNwcCAqLywKQEAgLTExNTMsNiArMTE1Niw3IEBACiAJCQkJNEZDQjcxMEExNjBBMUEw
NzAwODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEYxQjJEQjYxNjBCNDRBQTAwNTg2NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhh
c2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGRDg1NTQ3MTYxMzNFMEUwMEM1QjcwNCAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTRGQ0YyN0UxMTYxNzJFODYwMENCRjAzNyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRl
eCA2OWIwMjI1NGIzN2FmYTcyMGIyNTYyNjdjMjg4YzU4ZjFlZWU1YzhmLi45MTcxYmJjZDZmOWY5
N2Q2YzMxYTVhYTEzZGJhYTg3ZDU5NjJlOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb24uaApAQCAtMzM0LDYgKzMzNCwyMSBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6SW5zdHJ1bWVudGVkUG9pbnRlcjxUPjo6cHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpbwog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBWZWN0b3I7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiogY29uc3QmLCBNZW1v
cnlPYmplY3RJbmZvKik7CiAKK2NsYXNzIFN0cmluZzsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
Y29uc3QgU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgU3RyaW5n
SW1wbDsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBN
ZW1vcnlPYmplY3RJbmZvKik7CisKK2NsYXNzIEF0b21pY1N0cmluZzsKK3ZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoY29uc3QgQXRvbWljU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsK
KworY2xhc3MgQ1N0cmluZzsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZyog
Y29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKik7CisKK2NsYXNzIENTdHJpbmdCdWZmZXI7Cit2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IENTdHJpbmdCdWZmZXIqIGNvbnN0JiwgTWVtb3J5T2Jq
ZWN0SW5mbyopOworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vICFkZWZpbmVkKE1l
bW9yeUluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25TdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODJmMmQ2MTE5MmFlOTFmNWFhNWQ5YmM4MDA5YzUx
YjEwZmU1ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uU3RyaW5nLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uU3RyaW5nX2gKKyNkZWZpbmUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nX2gKKwor
I2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitpbmxpbmUgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYgc3RyaW5nSW1wbCwg
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKK3sKKyAgICBzaXplX3Qgc2VsZlNp
emUgPSBzaXplb2YoU3RyaW5nSW1wbCk7CisKKyAgICAvLyBDb3VudCBzaXplIHVzZWQgYnkgaW50
ZXJuYWwgYnVmZmVyIGJ1dCBza2lwIHN0cmluZ3MgdGhhdCB3ZXJlIGNvbnN0cnVjdGVkIGZyb20g
bGl0ZXJhbHMuCisgICAgaWYgKHN0cmluZ0ltcGwtPnVzZXNJbnRlcm5hbEJ1ZmZlcigpICYmICFz
dHJpbmdJbXBsLT5oYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0ZXIoKSkKKyAgICAgICAgc2VsZlNp
emUgKz0gc3RyaW5nSW1wbC0+bGVuZ3RoKCkgKiAoc3RyaW5nSW1wbC0+aXM4Qml0KCkgPyBzaXpl
b2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKSk7CisKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCBzdHJpbmdJbXBsLCAwLCBzZWxmU2l6ZSk7CisKKyAgICBpZiAoU3Ry
aW5nSW1wbCogYmFzZVN0cmluZyA9IHN0cmluZ0ltcGwtPmJhc2VTdHJpbmcoKSkKKyAgICAgICAg
aW5mby5hZGRNZW1iZXIoYmFzZVN0cmluZyk7CisgICAgZWxzZSBpZiAoc3RyaW5nSW1wbC0+aGFz
MTZCaXRTaGFkb3coKSkgLy8gU3Vic3RyaW5nIG5ldmVyIGhhcyBpdHMgb3duIHNoYWRvdy4KKyAg
ICAgICAgaW5mby5hZGRSYXdCdWZmZXIoc3RyaW5nSW1wbC0+Y2hhcmFjdGVycygpLCAoc3RyaW5n
SW1wbC0+bGVuZ3RoKCkgKyAoc3RyaW5nSW1wbC0+aGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVy
KCkgPyAxIDogMCkpICogc2l6ZW9mKFVDaGFyKSk7Cit9CisKK2lubGluZSB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKGNvbnN0IFN0cmluZyogY29uc3QmIHN0cmluZywgTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCBzdHJpbmcpOworICAgIGluZm8uYWRkTWVtYmVyKHN0cmluZy0+aW1wbCgpKTsKK30K
KworaW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQXRvbWljU3RyaW5nKiBjb25z
dCYgYXRvbWljU3RyaW5nLCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQorewor
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIGF0b21pY1N0cmluZyk7
CisgICAgaW5mby5hZGRNZW1iZXIoYXRvbWljU3RyaW5nLT5zdHJpbmcoKSk7Cit9CisKK2lubGlu
ZSB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IENTdHJpbmdCdWZmZXIqIGNvbnN0JiBjU3Ry
aW5nQnVmZmVyLCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIGNTdHJpbmdCdWZmZXIsIDAsIHNp
emVvZigqY1N0cmluZ0J1ZmZlcikgKyBjU3RyaW5nQnVmZmVyLT5sZW5ndGgoKSk7Cit9CisKK2lu
bGluZSB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IENTdHJpbmcqIGNvbnN0JiBjU3RyaW5n
LCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIGNTdHJpbmcpOworICAgIGluZm8uYWRkTWVtYmVy
KGNTdHJpbmctPmJ1ZmZlcigpKTsKK30KKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVmVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAK
aW5kZXggYjkxYzYwZTgwZDBjMjk2ZGQ0NTY0YjgwNGZlNmMxZjhiNWI3MmZjZi4uMGRlNjA5NmRk
ZDEwZWZjNjU3Mjk2MjgxMTQ4NzQwYzNlN2Y4OGViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmNwcApAQCAtNDM2LDEwICs0MzYsNCBAQCB2b2lkIEF0b21pY1N0cmluZzo6c2hvdygp
IGNvbnN0CiB9CiAjZW5kaWYKIAotdm9pZCBBdG9taWNTdHJpbmc6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Ci17Ci0gICAgTWVtb3J5
Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcyk7Ci0gICAgaW5mby5hZGRNZW1i
ZXIobV9zdHJpbmcpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCmluZGV4IDA2NmIwNzI2YmRkZTQwNWVkNzM1NDIzMWU2ODYzNjVjYjgwNGFjODUu
LmMyNWIxMzU5YmNlZWRkZGFhMjk2YzA3MmRlZjQzYjRiYjg3ZDYwNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaApAQCAtMTU5LDggKzE1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNo
b3coKSBjb25zdDsKICNlbmRpZgogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwotCiBwcml2YXRlOgogICAg
IC8vIFRoZSBleHBsaWNpdCBjb25zdHJ1Y3RvcnMgd2l0aCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsIG11c3QgYmUgdXNlZCBmb3IgbGl0ZXJhbHMuCiAgICAgQXRvbWljU3RyaW5n
KEFTQ0lJTGl0ZXJhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCmluZGV4IDAzYWIzZTU0YTdjZmFhNmQx
NzQyYzUwOTY0YzljZmQ2ODE1NzllMTkuLjRkODk0YjE5NmQwMzllMjRjMjg3ODVmMWZiNDNhMjM0
Mzc5ZDJhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCkBAIC0zNywxMyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIGNsYXNzIENTdHJpbmdCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDU3RyaW5n
QnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJuIG1fZGF0
YTsgfQotICAgIHNpemVfdCBsZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsgfQotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgTWVtb3J5T2JqZWN0SW5mbz4KLSAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Ci0gICAgewotICAg
ICAgICB0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZvOjpDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCAwLCBzaXplb2YoQ1N0cmluZ0J1ZmZlcikgKyBtX2xlbmd0aCk7Ci0gICAg
fQorICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDU3RyaW5nOwpAQCAtODEsMTMgKzc1LDYgQEAgcHVibGlj
OgogCiAgICAgQ1N0cmluZ0J1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lbW9yeU9iamVjdEluZm8+Ci0gICAg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAotICAgIHsKLSAgICAgICAgdHlwZW5hbWUgTWVtb3J5T2JqZWN0SW5mbzo6Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcyk7Ci0gICAgICAgIGluZm8uYWRkTWVtYmVy
KG1fYnVmZmVyKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBjb3B5QnVmZmVySWZOZWVk
ZWQoKTsKICAgICB2b2lkIGluaXQoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggYzA2YTk2NmU3YWRkNmQxYjUyZTVkNWJlNTYyMDE0
NDg3OWZlNmNjNi4uOThkNTk1MzZiZTAyOGEwY2M2NzE2MzI3NjBlOGU1MmM0YjRmMTM1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xNzkyLDI0ICsxNzkyLDQgQEAgc2l6ZV90
IFN0cmluZ0ltcGw6OnNpemVJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gc2l6ZSArIHNpemVv
ZigqdGhpcyk7CiB9CiAKLXZvaWQgU3RyaW5nSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBzaXplX3Qgc2VsZlNp
emUgPSBzaXplb2YoU3RyaW5nSW1wbCk7Ci0KLSAgICAgICAgLy8gQ291bnQgc2l6ZSB1c2VkIGJ5
IGludGVybmFsIGJ1ZmZlciBidXQgc2tpcCBzdHJpbmdzIHRoYXQgd2VyZSBjb25zdHJ1Y3RlZCBm
cm9tIGxpdGVyYWxzLgotICAgIGlmICgobV9oYXNoQW5kRmxhZ3MgJiBCdWZmZXJJbnRlcm5hbCkg
JiYgIWhhc1Rlcm1pbmF0aW5nTnVsbENoYXJhY3RlcigpKQotICAgICAgICAvLyBUaHJlZSBjYXNl
cyBhcmUgY292ZXJlZCBoZXJlOgotICAgICAgICAvLyAxKSBhIG5vcm1hbCA4LWJpdCBzdHJpbmcg
d2l0aCBpbnRlcm5hbCBzdG9yYWdlIChCdWZmZXJJbnRlcm5hbCkKLSAgICAgICAgLy8gMikgYSBu
b3JtYWwgMTYtYml0IHN0cmluZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVybmFs
KQotICAgICAgICAvLyAzKSBlbXB0eSB1bmlxdWUgc3RyaW5nIHdpdGggbGVuZ3RoID0gMCAoQnVm
ZmVySW50ZXJuYWwpCi0gICAgICAgIHNlbGZTaXplICs9IG1fbGVuZ3RoICogKG1faGFzaEFuZEZs
YWdzICYgc19oYXNoRmxhZzhCaXRCdWZmZXIgPyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFy
KSk7Ci0KLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCAw
LCBzZWxmU2l6ZSk7Ci0KLSAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBCdWZmZXJTdWJzdHJpbmcp
Ci0gICAgICAgIGluZm8uYWRkTWVtYmVyKG1fc3Vic3RyaW5nQnVmZmVyKTsKLSAgICBlbHNlIGlm
IChtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdIYXMxNkJpdFNoYWRvdykgLy8gU3Vic3RyaW5n
IG5ldmVyIGhhcyBpdHMgb3duIHNoYWRvdy4KLSAgICAgICAgaW5mby5hZGRSYXdCdWZmZXIobV9j
b3B5RGF0YTE2LCAobV9sZW5ndGggKyAoaGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyKCkgPyAx
IDogMCkpICogc2l6ZW9mKFVDaGFyKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwMGM2Mjg1ZDIwNzE5OTc4OTY5MDk1MWYzMTYzYzk0ODg3
Njg5NjkxLi5jMjlhYTU2NDBiOTg5ZDM3MTlkMzdkNGFkNjNjZWZjYTY3MDEwNDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNDUzLDYgKzQ1Myw4IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgYm9vbCBpczhC
aXQoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWc4Qml0QnVmZmVy
OyB9CisgICAgYm9vbCB1c2VzSW50ZXJuYWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBidWZmZXJP
d25lcnNoaXAoKSA9PSBCdWZmZXJJbnRlcm5hbCAmJiAhaGFzVGVybWluYXRpbmdOdWxsQ2hhcmFj
dGVyKCk7IH0KKyAgICBTdHJpbmdJbXBsKiBiYXNlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gYnVm
ZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nID8gbV9zdWJzdHJpbmdCdWZmZXIgOiAw
OyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIGFsbCB1bm5lY2Vzc2FyeSB1c2FnZXMgb2YgY2hh
cmFjdGVycygpCiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBj
b25zdCB7IEFTU0VSVChpczhCaXQoKSk7IHJldHVybiBtX2RhdGE4OyB9CkBAIC03MTYsOCArNzE4
LDYgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFN0cmluZ1N0YXRzJiBzdHJp
bmdTdGF0cygpIHsgcmV0dXJuIG1fc3RyaW5nU3RhdHM7IH0KICNlbmRpZgogCi0gICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OwotCiBwcml2YXRlOgogICAgIC8vIFRoaXMgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3Qg
MiB0byBhdm9pZCBzaGFyaW5nIGVtcHR5LCBudWxsIGFzIHdlbGwgYXMgMSBjaGFyYWN0ZXIgc3Ry
aW5ncyBmcm9tIFNtYWxsU3RyaW5ncy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5
Q2hhcnNJbmxpbmVDdXRPZmYgPSAyMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBm
ODlkOGRhMzVkYjQ4YmIyNWViODQxNjMzOGY0N2Q5MzdjYjg5NGYzLi45MTBjZTc0MTQxYmQ3Yjkx
MGQ3NzE5ZTRhZjUyZThhMWUwNGFiMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBA
IC04MzUsMTIgKzgzNSw2IEBAIFN0cmluZyBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKGNvbnN0IExDaGFyKiBzdHJpbmcsIHNpemVfdCBzaXplKQogICAgIHJldHVybiB1dGY4Owog
fQogCi12b2lkIFN0cmluZzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2ltcGwpOwotfQotCiAvLyBT
dHJpbmcgT3BlcmF0aW9ucwogCiBzdGF0aWMgYm9vbCBpc0NoYXJhY3RlckFsbG93ZWRJbkJhc2Uo
VUNoYXIgYywgaW50IGJhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAwYTIxYjY5OTVh
ZjE3NGVhZDE0ZTRkYjliMDNhYmNkYWY3MjQ1MmU0Li5iZjI3ZjE3MjkwZjk3NTZmZjQ2OTUxMmFl
MjBiZGJmZTYyZWQxODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ1Nyw4ICs0NTcs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwogICAgIH0KIAot
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9p
bXBsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1l
bnRhdGlvbi5oCmluZGV4IGE5OTgxMWI4NGIzZTkyMGJiZGM2ZDA3ZDM1MGUxYWZlNWIyY2ZjYjMu
LmMzMTc5OWJhYTVmNzE3YTUyZTI1ODBiNTI1Mjg5ZjRlMTVlNmI5ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtMzIsNiAr
MzIsNyBAQAogI2RlZmluZSBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKIAogI2luY2x1
ZGUgIlBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9y
eUluc3RydW1lbnRhdGlvblN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS1VSTC5jcHAKaW5kZXggYzNkNTA5OWYzYWNiOWRmZDdhZTRiMmQ0ZTQ1YmNiNDAz
MzJhMmZmMC4uMGQyYTZkOGIzNmJhNDFkMzg5MmVlYjU4MWU0MzBlNTI2NTI3M2FiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vS1VSTC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpZiAhVVNFKFdURlVSTCkK
ICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjZW5kaWYKKyNpbmNsdWRlIDx3dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCmluZGV4IDZmODE0
MjY3MmFkODE3NTk2Njc4ZWRmNmM5ZDZiZjFkMGRhMjgwMjEuLmM5MjY2ZWU2N2YyMjI0NTc4YjIz
MTA4Y2FhOWNjNDQzY2QwZjk5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkxHb29nbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUu
Y3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDIyYjkwOTc0ZDRkY2I2
NDRhY2IyYmE0NTY4ZDNhNDYzZWQ3N2M5NTEuLjQ2YTg0YmJkODc1YjdmYzY1MGNmMDU2OTI4MmI0
Y2UyMGE0MGVlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBQ
bGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbl9oCiAKICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCmluZGV4IGJl
YzFjMDBmNzdlNTE2Yzg5NGUwYmIyYTdlZTJmMTJmZWYxMzFmNjYuLmViYjZkZDk5M2UyZTcwMGM5
OTM5MmEzZWE2ODc4NzI4NjFhZmRiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUlu
c3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlv
blN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTI1NywyMSArMjU4LDU3IEBAIHB1YmxpYzoKIAogVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25U
ZXN0LCB2aXNpdFN0cmluZ3MpCiB7Ci0gICAgeworICAgIHsgLy8gOC1iaXQgc3RyaW5nLgogICAg
ICAgICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKICAgICAgICAgSW5zdHJ1bWVu
dGVkT3duZXI8U3RyaW5nPiBzdHJpbmdJbnN0cnVtZW50ZWRPd25lcigiU3RyaW5nIik7Ci0gICAg
ICAgIHN0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUuY2hhcmFjdGVycygpOyAvLyBGb3Jj
ZSAxNmJpdCBzaGFkb3cgY3JlYXRpb24uCiAgICAgICAgIGhlbHBlci5hZGRSb290T2JqZWN0KHN0
cmluZ0luc3RydW1lbnRlZE93bmVyKTsKLSAgICAgICAgRVhQRUNUX0VRKHNpemVvZihTdHJpbmdJ
bXBsKSArIHN0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVuZ3RoKCkgKiAyLCBoZWxw
ZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2Yo
U3RyaW5nSW1wbCkgKyBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0aCgpLCBo
ZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxLCBo
ZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CisgICAgfQorCisgICAgeyAvLyA4LWJpdCBzdHJpbmcg
d2l0aCAxNmJpdCBzaGFkb3cuCisgICAgICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgaGVs
cGVyOworICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+IHN0cmluZ0luc3RydW1lbnRl
ZE93bmVyKCJTdHJpbmciKTsKKyAgICAgICAgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1
ZS5jaGFyYWN0ZXJzKCk7IAorICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChzdHJpbmdJbnN0
cnVtZW50ZWRPd25lcik7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5nSW1wbCkgKyBz
dHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0aCgpICogMywgaGVscGVyLnJlcG9y
dGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMiwgaGVscGVyLnZpc2l0
ZWRPYmplY3RzKCkpOwogICAgIH0KIAorICAgIHsgLy8gMTYgYml0IHN0cmluZy4KKyAgICAgICAg
SW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7CisgICAgICAgIFN0cmluZyBzdHJpbmco
IlN0cmluZyIpOworICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+IHN0cmluZ0luc3Ry
dW1lbnRlZE93bmVyKFN0cmluZyhzdHJpbmcuY2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCkp
KTsKKyAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qoc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIp
OworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwpICsgc3RyaW5nSW5zdHJ1bWVu
dGVkT3duZXIubV92YWx1ZS5sZW5ndGgoKSAqIDIsIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxU
eXBlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDEsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsK
KyAgICB9CisKKyAgICB7IC8vIEFTQ0lJTGl0ZXJhbAorICAgICAgICBJbnN0cnVtZW50YXRpb25U
ZXN0SGVscGVyIGhlbHBlcjsKKyAgICAgICAgQVNDSUlMaXRlcmFsIGxpdGVyYWwoIlN0cmluZyIp
OworICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+IHN0cmluZ0luc3RydW1lbnRlZE93
bmVyKGxpdGVyYWwpOworICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChzdHJpbmdJbnN0cnVt
ZW50ZWRPd25lcik7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5nSW1wbCksIGhlbHBl
ci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDEsIGhlbHBl
ci52aXNpdGVkT2JqZWN0cygpKTsKKyAgICB9CisKKyAgICB7IC8vIFN1YnN0cmluZworICAgICAg
ICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKyAgICAgICAgU3RyaW5nIGJhc2VT
dHJpbmcoIlN0cmluZyIpOworICAgICAgICBiYXNlU3RyaW5nLmNoYXJhY3RlcnMoKTsgLy8gRm9y
Y2UgMTYgc2hhZG93IGNyZWF0aW9uLgorICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+
IHN0cmluZ0luc3RydW1lbnRlZE93bmVyKGJhc2VTdHJpbmcuc3Vic3RyaW5nU2hhcmluZ0ltcGwo
MSwgNCkpOworICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChzdHJpbmdJbnN0cnVtZW50ZWRP
d25lcik7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5nSW1wbCkgKiAyICsgYmFzZVN0
cmluZy5sZW5ndGgoKSAqIDMsIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDMsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKKyAgICB9CisKICAg
ICB7CiAgICAgICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgaGVscGVyOwogICAgICAgICBJ
bnN0cnVtZW50ZWRPd25lcjxBdG9taWNTdHJpbmc+IGF0b21pY1N0cmluZ0luc3RydW1lbnRlZE93
bmVyKCJBdG9taWNTdHJpbmciKTsKICAgICAgICAgYXRvbWljU3RyaW5nSW5zdHJ1bWVudGVkT3du
ZXIubV92YWx1ZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCk7IC8vIEZvcmNlIDE2Yml0IHNoYWRvdyBj
cmVhdGlvbi4KICAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3QoYXRvbWljU3RyaW5nSW5zdHJ1
bWVudGVkT3duZXIpOwotICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwpICsgYXRv
bWljU3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5sZW5ndGgoKSAqIDIsIGhlbHBlci5y
ZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKHNpemVvZihTdHJp
bmdJbXBsKSArIGF0b21pY1N0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVuZ3RoKCkg
KiAzLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgyLCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CiAgICAgfQogCkBAIC00MzEsNyArNDY4LDcg
QEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCB2ZWN0b3JXaXRoSW5zdHJ1bWVudGVk
VHlwZSkKICAgICAgICAgdmFsdWUtPmFwcGVuZCgic3RyaW5nIik7CiAgICAgSW5zdHJ1bWVudGVk
T3duZXI8U3RyaW5nVmVjdG9yKiA+IHJvb3QodmFsdWUuZ2V0KCkpOwogICAgIGhlbHBlci5hZGRS
b290T2JqZWN0KHJvb3QpOwotICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5nVmVjdG9yKSArIHNp
emVvZihTdHJpbmcpICogdmFsdWUtPmNhcGFjaXR5KCkgKyBzaXplb2YoU3RyaW5nSW1wbCkgKiB2
YWx1ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgRVhQ
RUNUX0VRKHNpemVvZihTdHJpbmdWZWN0b3IpICsgc2l6ZW9mKFN0cmluZykgKiB2YWx1ZS0+Y2Fw
YWNpdHkoKSArIChzaXplb2YoU3RyaW5nSW1wbCkgKyA2KSAqIHZhbHVlLT5zaXplKCksIGhlbHBl
ci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICBFWFBFQ1RfRVEoY291bnQgKyAyLCAo
c2l6ZV90KWhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKIH0KIApAQCAtNDQ2LDcgKzQ4Myw3IEBA
IFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgaGFzaFNldFdpdGhJbnN0cnVtZW50ZWRU
eXBlKQogICAgICAgICB2YWx1ZS0+YWRkKFN0cmluZzo6bnVtYmVyKGkpKTsKICAgICBJbnN0cnVt
ZW50ZWRPd25lcjxWYWx1ZVR5cGUqID4gcm9vdCh2YWx1ZS5nZXQoKSk7CiAgICAgaGVscGVyLmFk
ZFJvb3RPYmplY3Qocm9vdCk7Ci0gICAgRVhQRUNUX0VRKHNpemVvZihWYWx1ZVR5cGUpICsgc2l6
ZW9mKFN0cmluZykgKiB2YWx1ZS0+Y2FwYWNpdHkoKSArIHNpemVvZihTdHJpbmdJbXBsKSAqIHZh
bHVlLT5zaXplKCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICBFWFBF
Q1RfRVEoc2l6ZW9mKFZhbHVlVHlwZSkgKyBzaXplb2YoU3RyaW5nKSAqIHZhbHVlLT5jYXBhY2l0
eSgpICsgKHNpemVvZihTdHJpbmdJbXBsKSArIDEpICogdmFsdWUtPnNpemUoKSwgaGVscGVyLnJl
cG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgIEVYUEVDVF9FUShjb3VudCArIDEsIChzaXpl
X3QpaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166470</attachid>
            <date>2012-10-01 07:07:24 -0700</date>
            <delta_ts>2012-10-01 08:19:18 -0700</delta_ts>
            <desc>comments addressed</desc>
            <filename>bug-97964-20121001180637.patch</filename>
            <type>text/plain</type>
            <size>27615</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmYjU4MDNmNmE2ZjdmOGRiYzA1OWRm
M2M1YzIzNGU3YzNiMDc0NDEuLjlkZDk1ODE4ZTM0ZjU2OTJlMmU2ZmNiOGI5YWM2NjRhNWRlMTc5
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtYWtlIFN0
cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgg
d2FzIGFkZGVkLgorICAgICAgICBJbnRydXNpdmUgaW5zdHJ1bWVudGF0aW9uIHdhcyByZW1vdmVk
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToK
KyAgICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6bGVuZ3RoKToKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVzZXNJbnRlcm5hbEJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmJhc2VTdHJpbmcpOgorICAgICAgICAoU3RyaW5nSW1wbCk6CisKIDIw
MTItMTAtMDEgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IENoZWNrIHRoYXQgX19jcGx1c3BsdXMgaXMgZGVmaW5lZCBiZWZvcmUgY29tcGFyaW5nIGl0cyB2
YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDVhOGViOTUyYTI5ZTVkNTYzMDllMmJjNDBiMWFmMjMyZTYyYTJh
OTIuLjkyZGUwMTVkMDQ4MGY5N2UwM2RjNGQ3MGU1NjcwZTRmOGIzZmRiZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1ha2UgU3RyaW5nKiBp
bnN0cnVtZW50YXRpb24gbm9uIGludHJ1c2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBpbmNsdWRl
IHdhcyBhZGRlZC4KKworICAgICAgICAqIGRvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9u
Lmg6CisKIDIwMTItMTAtMDEgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CiAKICAg
ICAgICAgW0NTUyBSZWdpb25zXSBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgQVBJIERvY3VtZW50Lndl
YmtpdEdldEZsb3dCeU5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjU0YTFlYWNl
YTI5ZTlkMzc4ZDRlNDMyNWUyZjc3M2NmMWVmNmQwMS4uZThkYWFlZTA0ODBlOThlYTMwMTAwY2I4
YjI2Y2EwOGUyYjVjMzZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0wOS0yOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1ha2UgU3RyaW5nKiBpbnN0cnVtZW50YXRp
b24gbm9uIGludHJ1c2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTc5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgZXhwZWN0YXRpb25zIHdlcmUgZml4ZWQgYmVjYXVzZSBvbGQgaW5zdHJ1bWVu
dGF0aW9uIGhhZCB3cm9uZyBkZXRlY3RvciBmb3IgQnVmZmVySW50ZXJuYWwgdHlwZSBvZiBzdG9y
YWdlLgorCisgICAgICAgICogdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0xMC0wMSAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtEZXZpY2Ug
TWV0cmljc10gUmVtb3ZlIHRoZSBndXR0ZXIgb3ZlcmxheSBtb3ZpbmcgaXRzIGZ1bmN0aW9uYWxp
dHkgaW50byB0aGUgSW5zcGVjdG9yT3ZlcmxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNm
NzYwNmJhODBlM2Y5MTAyMzdkNTdmYWEwMTYxODk5ZDZlYzYzOTcuLmE2OThiNTc3YWE3MmNmODFh
NGU0ODYzZDVjMGUxNGI3MDQxOGFmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTgyLDYg
KzgyLDcgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25B
cnJheUJ1ZmZlclZpZXcuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSGFzaFNldC5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25T
dHJpbmcuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9NZXRhQWxsb2NhdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5neXBp
IGIvU291cmNlL1dURi9XVEYuZ3lwaQppbmRleCBkZWFjNTcxOWM3YWU1Yjk5YzJkMThjYjQ4YjJj
NTU0NjIyYmQ4YjE0Li5iYWU5NGNjMjNkM2NlYjVjZjRhMDljZDNjNjEwOGQzMDVlMmM2MGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5cGkK
QEAgLTUyLDYgKzUyLDcgQEAKICAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgnLAogICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZp
ZXcuaCcsCiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCcs
CisgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oJywKICAgICAg
ICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmgnLAogICAgICAgICAgICAg
J3d0Zi9NZXNzYWdlUXVldWUuaCcsCiAgICAgICAgICAgICAnd3RmL05vbkNvcHlpbmdTb3J0Lmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYucHJvIGIvU291cmNlL1dURi9XVEYucHJvCmlu
ZGV4IDdhMTBiZWZlMzNkNGU4ZjU2YjllN2RlNTBjMjk2MjM1OWNlODU0N2MuLjk3NzMyMjg2YzIw
ZDIwMDk4NGU3NzVmNjAyMWZmOGI4NDc1MmVlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
LnBybworKysgYi9Tb3VyY2UvV1RGL1dURi5wcm8KQEAgLTg5LDYgKzg5LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvbkFycmF5QnVmZmVyVmlldy5oIFwKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0
LmggXAorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIFwKICAgICBNZW1vcnlJbnN0
cnVtZW50YXRpb25WZWN0b3IuaCBcCiAgICAgTWVzc2FnZVF1ZXVlLmggXAogICAgIE1ldGFBbGxv
Y2F0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCmluZGV4IGI5MmU3Nzg5MDM1M2ZjODE0
YmQxYTA5ZWEyNGNmN2VmNTM4ZDA5OTYuLmU2ZjdlZjJhOWQzMmI1NDA3MWVhNjZjYzg2NjJmYjlj
ZDU2M2RmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCisr
KyBiL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCkBAIC05MTMsNiArOTEzLDEwIEBA
CiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHd0
ZlxNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8Rmls
ZQogCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cd3RmXE1lbW9yeUluc3RydW1lbnRhdGlvblZl
Y3Rvci5oIgogCQkJPgogCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5NzNiMWM4MTY0MTZmOWI5MzkwNTBmNjQxOTZmMzVhMWYyYTJiYmMzLi5k
Y2M5MjgxNmU4ZWNhN2VjODM0MWM4OWM3OGUwNjg3MGM1ZGRhYzNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzLDYgKzQzLDcgQEAKIAkJNEYxQjJEQjYx
NjBCNDRBQTAwNTg2NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMUIyREI1MTYwQjQ0QUEw
MDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi87IH07CiAJCTRGMUQx
MTU0MTVGRjExQkUwMDI2RTkwOCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMUQxMTUzMTVGRjExQkUwMDI2
RTkwOCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKIAkJNEZDQjcxMEExNjBBMUEw
NzAwODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZDQjcxMDkxNjBBMUEwNzAwODQyNUVD
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oICovOyB9OworCQk0RkNGMjdFMTE2MTcy
RTg2MDBDQkYwMzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkNGMjdFMDE2MTcyRTg2MDBDQkYw
MzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggKi87IH07CiAJCTRGRDg1NTQ3MTYx
MzNFMEUwMEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDg1NTQ2MTYx
MzNFMEUwMEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCAq
LzsgfTsKIAkJN0UyOUMzM0UxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1
RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNw
cCAqLzsgfTsKQEAgLTMxNCw2ICszMTUsNyBAQAogCQk0RjFCMkRCNTE2MEI0NEFBMDA1ODY1NTkg
LyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRGMUQxMTUzMTVGRjExQkUwMDI2RTkwOCAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGQ0I3MTA5MTYwQTFB
MDcwMDg0MjVFQyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGQ0YyN0UwMTYxNzJFODYwMENCRjAzNyAvKiBNZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRGRDg1NTQ2MTYxMzNFMEUwMEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25B
cnJheUJ1ZmZlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5
SW5zdHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
OTgsNiArNzAwLDcgQEAKIAkJCQk0RjFEMTE1MzE1RkYxMUJFMDAyNkU5MDggLyogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmggKi8sCiAJCQkJNEZEODU1NDYxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9y
eUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oICovLAogCQkJCTRGMUIyREI1MTYwQjQ0
QUEwMDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi8sCisJCQkJNEZD
RjI3RTAxNjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oICov
LAogCQkJCTRGQ0I3MTA5MTYwQTFBMDcwMDg0MjVFQyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25W
ZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJDQzE1MUE4MjVCMDA0MTIzRkYgLyogTWVzc2FnZVF1ZXVl
LmggKi8sCiAJCQkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3Bw
ICovLApAQCAtMTE1Myw2ICsxMTU2LDcgQEAKIAkJCQk0RkNCNzEwQTE2MEExQTA3MDA4NDI1RUMg
LyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjFC
MkRCNjE2MEI0NEFBMDA1ODY1NTkgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEZEODU1NDcxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEZDRjI3RTEx
NjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDY5YjAyMjU0
YjM3YWZhNzIwYjI1NjI2N2MyODhjNThmMWVlZTVjOGYuLmU5OTg1YTg0NTlhODZjNTQzOWMzYzkz
MGUyZDhlMTQ3YzEyZGY0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
CkBAIC0zMzAsMTAgKzMzMCwyNSBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1
bWVudGVkUG9pbnRlcjxUPjo6cHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpbwogICAgIG1lbW9y
eUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKG1lbW9yeU9iamVjdEluZm8ub2JqZWN0
VHlwZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUoKSk7CiB9CiAKLS8vIExpbmsgdGlt
ZSBndWFyZCBmb3IgdmVjdG9yIG1lbW9yeSBpbnN0cnVtZW50YXRpb24uCisvLyBMaW5rIHRpbWUg
Z3VhcmQgZm9yIGNsYXNzZXMgd2l0aCBleHRlcm5hbCBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uLgog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBWZWN0b3I7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiogY29uc3QmLCBNZW1v
cnlPYmplY3RJbmZvKik7CiAKK2NsYXNzIFN0cmluZzsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
Y29uc3QgU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgU3RyaW5n
SW1wbDsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBN
ZW1vcnlPYmplY3RJbmZvKik7CisKK2NsYXNzIEF0b21pY1N0cmluZzsKK3ZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoY29uc3QgQXRvbWljU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsK
KworY2xhc3MgQ1N0cmluZzsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZyog
Y29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKik7CisKK2NsYXNzIENTdHJpbmdCdWZmZXI7Cit2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IENTdHJpbmdCdWZmZXIqIGNvbnN0JiwgTWVtb3J5T2Jq
ZWN0SW5mbyopOworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vICFkZWZpbmVkKE1l
bW9yeUluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25TdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTQ5NmZmM2YwMjgyYjRhNTY4NzIwNThkOTQxNjcw
OTZlNmZkYjY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uU3RyaW5nLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uU3RyaW5nX2gKKyNkZWZpbmUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nX2gKKwor
I2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworaW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
Y29uc3QgU3RyaW5nSW1wbCogY29uc3QmIHN0cmluZ0ltcGwsIE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pCit7CisgICAgc2l6ZV90IHNlbGZTaXplID0gc2l6ZW9mKFN0cmluZ0lt
cGwpOworCisgICAgLy8gQ291bnQgc2l6ZSB1c2VkIGJ5IGludGVybmFsIGJ1ZmZlciBidXQgc2tp
cCBzdHJpbmdzIHRoYXQgd2VyZSBjb25zdHJ1Y3RlZCBmcm9tIGxpdGVyYWxzLgorICAgIGlmIChz
dHJpbmdJbXBsLT51c2VzSW50ZXJuYWxCdWZmZXIoKSkKKyAgICAgICAgc2VsZlNpemUgKz0gc3Ry
aW5nSW1wbC0+bGVuZ3RoKCkgKiAoc3RyaW5nSW1wbC0+aXM4Qml0KCkgPyBzaXplb2YoTENoYXIp
IDogc2l6ZW9mKFVDaGFyKSk7CisKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCBzdHJpbmdJbXBsLCAwLCBzZWxmU2l6ZSk7CisKKyAgICBpZiAoU3RyaW5nSW1wbCog
YmFzZVN0cmluZyA9IHN0cmluZ0ltcGwtPmJhc2VTdHJpbmcoKSkKKyAgICAgICAgaW5mby5hZGRN
ZW1iZXIoYmFzZVN0cmluZyk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIGNvdW50IHNpemUgb2Yg
b3duZWQgYnVmZmVyIGlmIGl0IGlzIG5vdCBhIExpdGVyYWwgc3RyaW5nCisgICAgICAgIGlmICgh
c3RyaW5nSW1wbC0+dXNlc0ludGVybmFsQnVmZmVyKCkgJiYgIXN0cmluZ0ltcGwtPmhhc1Rlcm1p
bmF0aW5nTnVsbENoYXJhY3RlcigpKSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nSW1wbC0+aXM4
Qml0KCkpCisgICAgICAgICAgICAgICAgaW5mby5hZGRSYXdCdWZmZXIoc3RyaW5nSW1wbC0+Y2hh
cmFjdGVyczgoKSwgc3RyaW5nSW1wbC0+bGVuZ3RoKCkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGluZm8uYWRkUmF3QnVmZmVyKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMxNigp
LCBzdHJpbmdJbXBsLT5sZW5ndGgoKSAqIDIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0
cmluZ0ltcGwtPmhhczE2Qml0U2hhZG93KCkpCisgICAgICAgICAgICBpbmZvLmFkZFJhd0J1ZmZl
cihzdHJpbmdJbXBsLT5jaGFyYWN0ZXJzKCksIChzdHJpbmdJbXBsLT5sZW5ndGgoKSArIChzdHJp
bmdJbXBsLT5oYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0ZXIoKSA/IDEgOiAwKSkgKiBzaXplb2Yo
VUNoYXIpKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0
IFN0cmluZyogY29uc3QmIHN0cmluZywgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCBzdHJpbmcp
OworICAgIGluZm8uYWRkTWVtYmVyKHN0cmluZy0+aW1wbCgpKTsKK30KKworaW5saW5lIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQXRvbWljU3RyaW5nKiBjb25zdCYgYXRvbWljU3RyaW5n
LCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIGF0b21pY1N0cmluZyk7CisgICAgaW5mby5hZGRN
ZW1iZXIoYXRvbWljU3RyaW5nLT5zdHJpbmcoKSk7Cit9CisKK2lubGluZSB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKGNvbnN0IENTdHJpbmdCdWZmZXIqIGNvbnN0JiBjU3RyaW5nQnVmZmVyLCBNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIGNTdHJpbmdCdWZmZXIsIDAsIHNpemVvZigqY1N0cmluZ0J1
ZmZlcikgKyBjU3RyaW5nQnVmZmVyLT5sZW5ndGgoKSk7Cit9CisKK2lubGluZSB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKGNvbnN0IENTdHJpbmcqIGNvbnN0JiBjU3RyaW5nLCBNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKQoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIGNTdHJpbmcpOworICAgIGluZm8uYWRkTWVtYmVyKGNTdHJpbmctPmJ1ZmZl
cigpKTsKK30KKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VmVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggYjkxYzYwZTgw
ZDBjMjk2ZGQ0NTY0YjgwNGZlNmMxZjhiNWI3MmZjZi4uMGRlNjA5NmRkZDEwZWZjNjU3Mjk2Mjgx
MTQ4NzQwYzNlN2Y4OGViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAt
NDM2LDEwICs0MzYsNCBAQCB2b2lkIEF0b21pY1N0cmluZzo6c2hvdygpIGNvbnN0CiB9CiAjZW5k
aWYKIAotdm9pZCBBdG9taWNTdHJpbmc6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Ci17Ci0gICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9zdHJpbmcpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4
IDA2NmIwNzI2YmRkZTQwNWVkNzM1NDIzMWU2ODYzNjVjYjgwNGFjODUuLmMyNWIxMzU5YmNlZWRk
ZGFhMjk2YzA3MmRlZjQzYjRiYjg3ZDYwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aApAQCAtMTU5LDggKzE1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3coKSBjb25zdDsKICNl
bmRpZgogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwotCiBwcml2YXRlOgogICAgIC8vIFRoZSBleHBsaWNp
dCBjb25zdHJ1Y3RvcnMgd2l0aCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsIG11
c3QgYmUgdXNlZCBmb3IgbGl0ZXJhbHMuCiAgICAgQXRvbWljU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQ1N0cmluZy5oCmluZGV4IDAzYWIzZTU0YTdjZmFhNmQxNzQyYzUwOTY0YzljZmQ2
ODE1NzllMTkuLjRkODk0YjE5NmQwMzllMjRjMjg3ODVmMWZiNDNhMjM0Mzc5ZDJhYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQ1N0cmluZy5oCkBAIC0zNywxMyArMzcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNz
IENTdHJpbmdCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDU3RyaW5nQnVmZmVyPiB7CiBwdWJs
aWM6CiAgICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQotICAgIHNpemVf
dCBsZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
TWVtb3J5T2JqZWN0SW5mbz4KLSAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Ci0gICAgewotICAgICAgICB0eXBlbmFtZSBN
ZW1vcnlPYmplY3RJbmZvOjpDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCAw
LCBzaXplb2YoQ1N0cmluZ0J1ZmZlcikgKyBtX2xlbmd0aCk7Ci0gICAgfQorICAgIHNpemVfdCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBDU3RyaW5nOwpAQCAtODEsMTMgKzc1LDYgQEAgcHVibGljOgogCiAgICAgQ1N0cmlu
Z0J1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE1lbW9yeU9iamVjdEluZm8+Ci0gICAgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotICAgIHsK
LSAgICAgICAgdHlwZW5hbWUgTWVtb3J5T2JqZWN0SW5mbzo6Q2xhc3NJbmZvIGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcyk7Ci0gICAgICAgIGluZm8uYWRkTWVtYmVyKG1fYnVmZmVyKTsKLSAg
ICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBjb3B5QnVmZmVySWZOZWVkZWQoKTsKICAgICB2b2lk
IGluaXQoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKaW5kZXggYzA2YTk2NmU3YWRkNmQxYjUyZTVkNWJlNTYyMDE0NDg3OWZlNmNjNi4uOThk
NTk1MzZiZTAyOGEwY2M2NzE2MzI3NjBlOGU1MmM0YjRmMTM1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwCkBAIC0xNzkyLDI0ICsxNzkyLDQgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnNp
emVJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gc2l6ZSArIHNpemVvZigqdGhpcyk7CiB9CiAK
LXZvaWQgU3RyaW5nSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBzaXplX3Qgc2VsZlNpemUgPSBzaXplb2YoU3Ry
aW5nSW1wbCk7Ci0KLSAgICAgICAgLy8gQ291bnQgc2l6ZSB1c2VkIGJ5IGludGVybmFsIGJ1ZmZl
ciBidXQgc2tpcCBzdHJpbmdzIHRoYXQgd2VyZSBjb25zdHJ1Y3RlZCBmcm9tIGxpdGVyYWxzLgot
ICAgIGlmICgobV9oYXNoQW5kRmxhZ3MgJiBCdWZmZXJJbnRlcm5hbCkgJiYgIWhhc1Rlcm1pbmF0
aW5nTnVsbENoYXJhY3RlcigpKQotICAgICAgICAvLyBUaHJlZSBjYXNlcyBhcmUgY292ZXJlZCBo
ZXJlOgotICAgICAgICAvLyAxKSBhIG5vcm1hbCA4LWJpdCBzdHJpbmcgd2l0aCBpbnRlcm5hbCBz
dG9yYWdlIChCdWZmZXJJbnRlcm5hbCkKLSAgICAgICAgLy8gMikgYSBub3JtYWwgMTYtYml0IHN0
cmluZyB3aXRoIGludGVybmFsIHN0b3JhZ2UgKEJ1ZmZlckludGVybmFsKQotICAgICAgICAvLyAz
KSBlbXB0eSB1bmlxdWUgc3RyaW5nIHdpdGggbGVuZ3RoID0gMCAoQnVmZmVySW50ZXJuYWwpCi0g
ICAgICAgIHNlbGZTaXplICs9IG1fbGVuZ3RoICogKG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxh
ZzhCaXRCdWZmZXIgPyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKSk7Ci0KLSAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCAwLCBzZWxmU2l6ZSk7Ci0K
LSAgICBpZiAobV9oYXNoQW5kRmxhZ3MgJiBCdWZmZXJTdWJzdHJpbmcpCi0gICAgICAgIGluZm8u
YWRkTWVtYmVyKG1fc3Vic3RyaW5nQnVmZmVyKTsKLSAgICBlbHNlIGlmIChtX2hhc2hBbmRGbGFn
cyAmIHNfaGFzaEZsYWdIYXMxNkJpdFNoYWRvdykgLy8gU3Vic3RyaW5nIG5ldmVyIGhhcyBpdHMg
b3duIHNoYWRvdy4KLSAgICAgICAgaW5mby5hZGRSYXdCdWZmZXIobV9jb3B5RGF0YTE2LCAobV9s
ZW5ndGggKyAoaGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyKCkgPyAxIDogMCkpICogc2l6ZW9m
KFVDaGFyKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAppbmRleCAwMGM2Mjg1ZDIwNzE5OTc4OTY5MDk1MWYzMTYzYzk0ODg3Njg5NjkxLi5jMjlhYTU2
NDBiOTg5ZDM3MTlkMzdkNGFkNjNjZWZjYTY3MDEwNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaApAQCAtNDUzLDYgKzQ1Myw4IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJl
dHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9CisgICAgYm9vbCB1
c2VzSW50ZXJuYWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBidWZmZXJPd25lcnNoaXAoKSA9PSBC
dWZmZXJJbnRlcm5hbCAmJiAhaGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVyKCk7IH0KKyAgICBT
dHJpbmdJbXBsKiBiYXNlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyT3duZXJzaGlwKCkg
PT0gQnVmZmVyU3Vic3RyaW5nID8gbV9zdWJzdHJpbmdCdWZmZXIgOiAwOyB9CiAKICAgICAvLyBG
SVhNRTogUmVtb3ZlIGFsbCB1bm5lY2Vzc2FyeSB1c2FnZXMgb2YgY2hhcmFjdGVycygpCiAgICAg
QUxXQVlTX0lOTElORSBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IEFTU0VSVChp
czhCaXQoKSk7IHJldHVybiBtX2RhdGE4OyB9CkBAIC03MTYsOCArNzE4LDYgQEAgcHVibGljOgog
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFN0cmluZ1N0YXRzJiBzdHJpbmdTdGF0cygpIHsgcmV0
dXJuIG1fc3RyaW5nU3RhdHM7IH0KICNlbmRpZgogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwotCiBwcml2
YXRlOgogICAgIC8vIFRoaXMgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgMiB0byBhdm9pZCBzaGFy
aW5nIGVtcHR5LCBudWxsIGFzIHdlbGwgYXMgMSBjaGFyYWN0ZXIgc3RyaW5ncyBmcm9tIFNtYWxs
U3RyaW5ncy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5Q2hhcnNJbmxpbmVDdXRP
ZmYgPSAyMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBmODlkOGRhMzVkYjQ4YmIy
NWViODQxNjMzOGY0N2Q5MzdjYjg5NGYzLi45MTBjZTc0MTQxYmQ3YjkxMGQ3NzE5ZTRhZjUyZThh
MWUwNGFiMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC04MzUsMTIgKzgzNSw2
IEBAIFN0cmluZyBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IExDaGFy
KiBzdHJpbmcsIHNpemVfdCBzaXplKQogICAgIHJldHVybiB1dGY4OwogfQogCi12b2lkIFN0cmlu
Zzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
KTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2ltcGwpOwotfQotCiAvLyBTdHJpbmcgT3BlcmF0aW9u
cwogCiBzdGF0aWMgYm9vbCBpc0NoYXJhY3RlckFsbG93ZWRJbkJhc2UoVUNoYXIgYywgaW50IGJh
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAwYTIxYjY5OTVhZjE3NGVhZDE0ZTRkYjli
MDNhYmNkYWY3MjQ1MmU0Li5iZjI3ZjE3MjkwZjk3NTZmZjQ2OTUxMmFlMjBiZGJmZTYyZWQxODMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ1Nyw4ICs0NTcsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dDsKLQogcHJpdmF0ZToKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4
IGE5OTgxMWI4NGIzZTkyMGJiZGM2ZDA3ZDM1MGUxYWZlNWIyY2ZjYjMuLmMzMTc5OWJhYTVmNzE3
YTUyZTI1ODBiNTI1Mjg5ZjRlMTVlNmI5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmlu
ZSBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlv
blN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5j
cHAKaW5kZXggYzNkNTA5OWYzYWNiOWRmZDdhZTRiMmQ0ZTQ1YmNiNDAzMzJhMmZmMC4uMGQyYTZk
OGIzNmJhNDFkMzg5MmVlYjU4MWU0MzBlNTI2NTI3M2FiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VS
TC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpZiAhVVNFKFdURlVSTCkKICNpbmNsdWRlIDx3dGYv
SGV4TnVtYmVyLmg+CiAjZW5kaWYKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCmluZGV4IDZmODE0MjY3MmFkODE3NTk2Njc4
ZWRmNmM5ZDZiZjFkMGRhMjgwMjEuLmM5MjY2ZWU2N2YyMjI0NTc4YjIzMTA4Y2FhOWNjNDQzY2Qw
Zjk5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1l
bW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDIyYjkwOTc0ZDRkY2I2NDRhY2IyYmE0NTY4ZDNh
NDYzZWQ3N2M5NTEuLjQ2YTg0YmJkODc1YjdmYzY1MGNmMDU2OTI4MmI0Y2UyMGE0MGVlNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0
cnVtZW50YXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBQbGF0Zm9ybU1lbW9yeUlu
c3RydW1lbnRhdGlvbl9oCiAKICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCmluZGV4IGJlYzFjMDBmNzdlNTE2Yzg5
NGUwYmIyYTdlZTJmMTJmZWYxMzFmNjYuLmUwYTg1MzZhZGEzYzAxOWRiYjNkNjI2MGYwZTc3OGU1
ZDFhNGM0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcApAQCAtNDAsMTEgKzQwLDEzIEBACiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
QXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtMjU3LDEyICsyNTksNTcgQEAgcHVibGljOgogCiBURVNUKE1l
bW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHZpc2l0U3RyaW5ncykKIHsKLSAgICB7CisgICAgeyAv
LyA4LWJpdCBzdHJpbmcuCisgICAgICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgaGVscGVy
OworICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+IHN0cmluZ0luc3RydW1lbnRlZE93
bmVyKCJTdHJpbmciKTsKKyAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qoc3RyaW5nSW5zdHJ1
bWVudGVkT3duZXIpOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwpICsgc3Ry
aW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5sZW5ndGgoKSwgaGVscGVyLnJlcG9ydGVkU2l6
ZUZvckFsbFR5cGVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMSwgaGVscGVyLnZpc2l0ZWRPYmpl
Y3RzKCkpOworICAgIH0KKworICAgIHsgLy8gOC1iaXQgc3RyaW5nIHdpdGggMTZiaXQgc2hhZG93
LgogICAgICAgICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKICAgICAgICAgSW5z
dHJ1bWVudGVkT3duZXI8U3RyaW5nPiBzdHJpbmdJbnN0cnVtZW50ZWRPd25lcigiU3RyaW5nIik7
Ci0gICAgICAgIHN0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUuY2hhcmFjdGVycygpOyAv
LyBGb3JjZSAxNmJpdCBzaGFkb3cgY3JlYXRpb24uCisgICAgICAgIHN0cmluZ0luc3RydW1lbnRl
ZE93bmVyLm1fdmFsdWUuY2hhcmFjdGVycygpOyAKKyAgICAgICAgaGVscGVyLmFkZFJvb3RPYmpl
Y3Qoc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIpOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0
cmluZ0ltcGwpICsgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5sZW5ndGgoKSAqIDMs
IGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDIs
IGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKKyAgICB9CisKKyAgICB7IC8vIDE2IGJpdCBzdHJp
bmcuCisgICAgICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgaGVscGVyOworICAgICAgICBT
dHJpbmcgc3RyaW5nKCJTdHJpbmciKTsKKyAgICAgICAgSW5zdHJ1bWVudGVkT3duZXI8U3RyaW5n
PiBzdHJpbmdJbnN0cnVtZW50ZWRPd25lcihTdHJpbmcoc3RyaW5nLmNoYXJhY3RlcnMoKSwgc3Ry
aW5nLmxlbmd0aCgpKSk7CiAgICAgICAgIGhlbHBlci5hZGRSb290T2JqZWN0KHN0cmluZ0luc3Ry
dW1lbnRlZE93bmVyKTsKICAgICAgICAgRVhQRUNUX0VRKHNpemVvZihTdHJpbmdJbXBsKSArIHN0
cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVuZ3RoKCkgKiAyLCBoZWxwZXIucmVwb3J0
ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxLCBoZWxwZXIudmlzaXRl
ZE9iamVjdHMoKSk7CisgICAgfQorCisgICAgeyAvLyBBU0NJSUxpdGVyYWwKKyAgICAgICAgSW5z
dHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBsaXRl
cmFsKCJTdHJpbmciKTsKKyAgICAgICAgSW5zdHJ1bWVudGVkT3duZXI8U3RyaW5nPiBzdHJpbmdJ
bnN0cnVtZW50ZWRPd25lcihsaXRlcmFsKTsKKyAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qo
c3RyaW5nSW5zdHJ1bWVudGVkT3duZXIpOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmlu
Z0ltcGwpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgxLCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CisgICAgfQorCisgICAgeyAvLyBTdWJz
dHJpbmcKKyAgICAgICAgSW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7CisgICAgICAg
IFN0cmluZyBiYXNlU3RyaW5nKCJTdHJpbmciKTsKKyAgICAgICAgYmFzZVN0cmluZy5jaGFyYWN0
ZXJzKCk7IC8vIEZvcmNlIDE2IHNoYWRvdyBjcmVhdGlvbi4KKyAgICAgICAgSW5zdHJ1bWVudGVk
T3duZXI8U3RyaW5nPiBzdHJpbmdJbnN0cnVtZW50ZWRPd25lcihiYXNlU3RyaW5nLnN1YnN0cmlu
Z1NoYXJpbmdJbXBsKDEsIDQpKTsKKyAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qoc3RyaW5n
SW5zdHJ1bWVudGVkT3duZXIpOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwp
ICogMiArIGJhc2VTdHJpbmcubGVuZ3RoKCkgKiAzLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxs
VHlwZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgzLCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7
CisgICAgfQorCisgICAgeyAvLyBPd25lZCBidWZmZXIuCisgICAgICAgIEluc3RydW1lbnRhdGlv
blRlc3RIZWxwZXIgaGVscGVyOworICAgICAgICBTdHJpbmdCdWZmZXI8TENoYXI+IGJ1ZmZlcig2
KTsKKyAgICAgICAgSW5zdHJ1bWVudGVkT3duZXI8U3RyaW5nPiBzdHJpbmdJbnN0cnVtZW50ZWRP
d25lcihTdHJpbmc6OmFkb3B0KGJ1ZmZlcikpOworICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVj
dChzdHJpbmdJbnN0cnVtZW50ZWRPd25lcik7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3Ry
aW5nSW1wbCkgKyBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0aCgpLCBoZWxw
ZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgyLCBoZWxw
ZXIudmlzaXRlZE9iamVjdHMoKSk7CiAgICAgfQogCkBAIC0yNzEsNyArMzE4LDcgQEAgVEVTVChN
ZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCB2aXNpdFN0cmluZ3MpCiAgICAgICAgIEluc3RydW1l
bnRlZE93bmVyPEF0b21pY1N0cmluZz4gYXRvbWljU3RyaW5nSW5zdHJ1bWVudGVkT3duZXIoIkF0
b21pY1N0cmluZyIpOwogICAgICAgICBhdG9taWNTdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3Zh
bHVlLnN0cmluZygpLmNoYXJhY3RlcnMoKTsgLy8gRm9yY2UgMTZiaXQgc2hhZG93IGNyZWF0aW9u
LgogICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChhdG9taWNTdHJpbmdJbnN0cnVtZW50ZWRP
d25lcik7Ci0gICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5nSW1wbCkgKyBhdG9taWNTdHJp
bmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0aCgpICogMiwgaGVscGVyLnJlcG9ydGVk
U2l6ZUZvckFsbFR5cGVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwp
ICsgYXRvbWljU3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5sZW5ndGgoKSAqIDMsIGhl
bHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGhl
bHBlci52aXNpdGVkT2JqZWN0cygpKTsKICAgICB9CiAKQEAgLTQzMSw3ICs0NzgsNyBAQCBURVNU
KE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHZlY3RvcldpdGhJbnN0cnVtZW50ZWRUeXBlKQog
ICAgICAgICB2YWx1ZS0+YXBwZW5kKCJzdHJpbmciKTsKICAgICBJbnN0cnVtZW50ZWRPd25lcjxT
dHJpbmdWZWN0b3IqID4gcm9vdCh2YWx1ZS5nZXQoKSk7CiAgICAgaGVscGVyLmFkZFJvb3RPYmpl
Y3Qocm9vdCk7Ci0gICAgRVhQRUNUX0VRKHNpemVvZihTdHJpbmdWZWN0b3IpICsgc2l6ZW9mKFN0
cmluZykgKiB2YWx1ZS0+Y2FwYWNpdHkoKSArIHNpemVvZihTdHJpbmdJbXBsKSAqIHZhbHVlLT5z
aXplKCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICBFWFBFQ1RfRVEo
c2l6ZW9mKFN0cmluZ1ZlY3RvcikgKyBzaXplb2YoU3RyaW5nKSAqIHZhbHVlLT5jYXBhY2l0eSgp
ICsgKHNpemVvZihTdHJpbmdJbXBsKSArIDYpICogdmFsdWUtPnNpemUoKSwgaGVscGVyLnJlcG9y
dGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgIEVYUEVDVF9FUShjb3VudCArIDIsIChzaXplX3Qp
aGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogfQogCkBAIC00NDYsNyArNDkzLDcgQEAgVEVTVChN
ZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBoYXNoU2V0V2l0aEluc3RydW1lbnRlZFR5cGUpCiAg
ICAgICAgIHZhbHVlLT5hZGQoU3RyaW5nOjpudW1iZXIoaSkpOwogICAgIEluc3RydW1lbnRlZE93
bmVyPFZhbHVlVHlwZSogPiByb290KHZhbHVlLmdldCgpKTsKICAgICBoZWxwZXIuYWRkUm9vdE9i
amVjdChyb290KTsKLSAgICBFWFBFQ1RfRVEoc2l6ZW9mKFZhbHVlVHlwZSkgKyBzaXplb2YoU3Ry
aW5nKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsgc2l6ZW9mKFN0cmluZ0ltcGwpICogdmFsdWUtPnNp
emUoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgIEVYUEVDVF9FUShz
aXplb2YoVmFsdWVUeXBlKSArIHNpemVvZihTdHJpbmcpICogdmFsdWUtPmNhcGFjaXR5KCkgKyAo
c2l6ZW9mKFN0cmluZ0ltcGwpICsgMSkgKiB2YWx1ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRT
aXplRm9yQWxsVHlwZXMoKSk7CiAgICAgRVhQRUNUX0VRKGNvdW50ICsgMSwgKHNpemVfdCloZWxw
ZXIudmlzaXRlZE9iamVjdHMoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166477</attachid>
            <date>2012-10-01 08:19:26 -0700</date>
            <delta_ts>2012-10-01 09:00:50 -0700</delta_ts>
            <desc>usesInternalBuffer was renamed to hasInternalBuffer. hasOwnedBuffer was added.</desc>
            <filename>bug-97964-20121001191839.patch</filename>
            <type>text/plain</type>
            <size>27571</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmYjU4MDNmNmE2ZjdmOGRiYzA1OWRm
M2M1YzIzNGU3YzNiMDc0NDEuLjlkZDk1ODE4ZTM0ZjU2OTJlMmU2ZmNiOGI5YWM2NjRhNWRlMTc5
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtYWtlIFN0
cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgg
d2FzIGFkZGVkLgorICAgICAgICBJbnRydXNpdmUgaW5zdHJ1bWVudGF0aW9uIHdhcyByZW1vdmVk
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToK
KyAgICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6bGVuZ3RoKToKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVzZXNJbnRlcm5hbEJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmJhc2VTdHJpbmcpOgorICAgICAgICAoU3RyaW5nSW1wbCk6CisKIDIw
MTItMTAtMDEgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IENoZWNrIHRoYXQgX19jcGx1c3BsdXMgaXMgZGVmaW5lZCBiZWZvcmUgY29tcGFyaW5nIGl0cyB2
YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDVhOGViOTUyYTI5ZTVkNTYzMDllMmJjNDBiMWFmMjMyZTYyYTJh
OTIuLjkyZGUwMTVkMDQ4MGY5N2UwM2RjNGQ3MGU1NjcwZTRmOGIzZmRiZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1ha2UgU3RyaW5nKiBp
bnN0cnVtZW50YXRpb24gbm9uIGludHJ1c2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBpbmNsdWRl
IHdhcyBhZGRlZC4KKworICAgICAgICAqIGRvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9u
Lmg6CisKIDIwMTItMTAtMDEgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CiAKICAg
ICAgICAgW0NTUyBSZWdpb25zXSBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgQVBJIERvY3VtZW50Lndl
YmtpdEdldEZsb3dCeU5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjU0YTFlYWNl
YTI5ZTlkMzc4ZDRlNDMyNWUyZjc3M2NmMWVmNmQwMS4uZThkYWFlZTA0ODBlOThlYTMwMTAwY2I4
YjI2Y2EwOGUyYjVjMzZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0wOS0yOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1ha2UgU3RyaW5nKiBpbnN0cnVtZW50YXRp
b24gbm9uIGludHJ1c2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTc5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgZXhwZWN0YXRpb25zIHdlcmUgZml4ZWQgYmVjYXVzZSBvbGQgaW5zdHJ1bWVu
dGF0aW9uIGhhZCB3cm9uZyBkZXRlY3RvciBmb3IgQnVmZmVySW50ZXJuYWwgdHlwZSBvZiBzdG9y
YWdlLgorCisgICAgICAgICogdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0xMC0wMSAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtEZXZpY2Ug
TWV0cmljc10gUmVtb3ZlIHRoZSBndXR0ZXIgb3ZlcmxheSBtb3ZpbmcgaXRzIGZ1bmN0aW9uYWxp
dHkgaW50byB0aGUgSW5zcGVjdG9yT3ZlcmxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNm
NzYwNmJhODBlM2Y5MTAyMzdkNTdmYWEwMTYxODk5ZDZlYzYzOTcuLmE2OThiNTc3YWE3MmNmODFh
NGU0ODYzZDVjMGUxNGI3MDQxOGFmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTgyLDYg
KzgyLDcgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25B
cnJheUJ1ZmZlclZpZXcuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSGFzaFNldC5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25T
dHJpbmcuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9NZXRhQWxsb2NhdG9yLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5neXBp
IGIvU291cmNlL1dURi9XVEYuZ3lwaQppbmRleCBkZWFjNTcxOWM3YWU1Yjk5YzJkMThjYjQ4YjJj
NTU0NjIyYmQ4YjE0Li5iYWU5NGNjMjNkM2NlYjVjZjRhMDljZDNjNjEwOGQzMDVlMmM2MGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5cGkK
QEAgLTUyLDYgKzUyLDcgQEAKICAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgnLAogICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZp
ZXcuaCcsCiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCcs
CisgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oJywKICAgICAg
ICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmgnLAogICAgICAgICAgICAg
J3d0Zi9NZXNzYWdlUXVldWUuaCcsCiAgICAgICAgICAgICAnd3RmL05vbkNvcHlpbmdTb3J0Lmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYucHJvIGIvU291cmNlL1dURi9XVEYucHJvCmlu
ZGV4IDdhMTBiZWZlMzNkNGU4ZjU2YjllN2RlNTBjMjk2MjM1OWNlODU0N2MuLjk3NzMyMjg2YzIw
ZDIwMDk4NGU3NzVmNjAyMWZmOGI4NDc1MmVlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
LnBybworKysgYi9Tb3VyY2UvV1RGL1dURi5wcm8KQEAgLTg5LDYgKzg5LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvbkFycmF5QnVmZmVyVmlldy5oIFwKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0
LmggXAorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIFwKICAgICBNZW1vcnlJbnN0
cnVtZW50YXRpb25WZWN0b3IuaCBcCiAgICAgTWVzc2FnZVF1ZXVlLmggXAogICAgIE1ldGFBbGxv
Y2F0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCmluZGV4IGI5MmU3Nzg5MDM1M2ZjODE0
YmQxYTA5ZWEyNGNmN2VmNTM4ZDA5OTYuLmU2ZjdlZjJhOWQzMmI1NDA3MWVhNjZjYzg2NjJmYjlj
ZDU2M2RmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCisr
KyBiL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCkBAIC05MTMsNiArOTEzLDEwIEBA
CiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHd0
ZlxNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8Rmls
ZQogCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cd3RmXE1lbW9yeUluc3RydW1lbnRhdGlvblZl
Y3Rvci5oIgogCQkJPgogCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5NzNiMWM4MTY0MTZmOWI5MzkwNTBmNjQxOTZmMzVhMWYyYTJiYmMzLi5k
Y2M5MjgxNmU4ZWNhN2VjODM0MWM4OWM3OGUwNjg3MGM1ZGRhYzNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzLDYgKzQzLDcgQEAKIAkJNEYxQjJEQjYx
NjBCNDRBQTAwNTg2NTU5IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMUIyREI1MTYwQjQ0QUEw
MDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi87IH07CiAJCTRGMUQx
MTU0MTVGRjExQkUwMDI2RTkwOCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMUQxMTUzMTVGRjExQkUwMDI2
RTkwOCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKIAkJNEZDQjcxMEExNjBBMUEw
NzAwODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZDQjcxMDkxNjBBMUEwNzAwODQyNUVD
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oICovOyB9OworCQk0RkNGMjdFMTE2MTcy
RTg2MDBDQkYwMzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkNGMjdFMDE2MTcyRTg2MDBDQkYw
MzcgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggKi87IH07CiAJCTRGRDg1NTQ3MTYx
MzNFMEUwMEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDg1NTQ2MTYx
MzNFMEUwMEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCAq
LzsgfTsKIAkJN0UyOUMzM0UxNUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTI5QzMzRDE1
RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLzsgfTsKIAkJODEzNDAxMzgx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNw
cCAqLzsgfTsKQEAgLTMxNCw2ICszMTUsNyBAQAogCQk0RjFCMkRCNTE2MEI0NEFBMDA1ODY1NTkg
LyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRGMUQxMTUzMTVGRjExQkUwMDI2RTkwOCAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGQ0I3MTA5MTYwQTFB
MDcwMDg0MjVFQyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGQ0YyN0UwMTYxNzJFODYwMENCRjAzNyAvKiBNZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRGRDg1NTQ2MTYxMzNFMEUwMEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25B
cnJheUJ1ZmZlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5
SW5zdHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
OTgsNiArNzAwLDcgQEAKIAkJCQk0RjFEMTE1MzE1RkYxMUJFMDAyNkU5MDggLyogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmggKi8sCiAJCQkJNEZEODU1NDYxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9y
eUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oICovLAogCQkJCTRGMUIyREI1MTYwQjQ0
QUEwMDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi8sCisJCQkJNEZD
RjI3RTAxNjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oICov
LAogCQkJCTRGQ0I3MTA5MTYwQTFBMDcwMDg0MjVFQyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25W
ZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJDQzE1MUE4MjVCMDA0MTIzRkYgLyogTWVzc2FnZVF1ZXVl
LmggKi8sCiAJCQkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3Bw
ICovLApAQCAtMTE1Myw2ICsxMTU2LDcgQEAKIAkJCQk0RkNCNzEwQTE2MEExQTA3MDA4NDI1RUMg
LyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjFC
MkRCNjE2MEI0NEFBMDA1ODY1NTkgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEZEODU1NDcxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEZDRjI3RTEx
NjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDY5YjAyMjU0
YjM3YWZhNzIwYjI1NjI2N2MyODhjNThmMWVlZTVjOGYuLmU5OTg1YTg0NTlhODZjNTQzOWMzYzkz
MGUyZDhlMTQ3YzEyZGY0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5o
CkBAIC0zMzAsMTAgKzMzMCwyNSBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1
bWVudGVkUG9pbnRlcjxUPjo6cHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpbwogICAgIG1lbW9y
eUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXplKG1lbW9yeU9iamVjdEluZm8ub2JqZWN0
VHlwZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNpemUoKSk7CiB9CiAKLS8vIExpbmsgdGlt
ZSBndWFyZCBmb3IgdmVjdG9yIG1lbW9yeSBpbnN0cnVtZW50YXRpb24uCisvLyBMaW5rIHRpbWUg
Z3VhcmQgZm9yIGNsYXNzZXMgd2l0aCBleHRlcm5hbCBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uLgog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBWZWN0b3I7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiogY29uc3QmLCBNZW1v
cnlPYmplY3RJbmZvKik7CiAKK2NsYXNzIFN0cmluZzsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
Y29uc3QgU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3MgU3RyaW5n
SW1wbDsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgU3RyaW5nSW1wbCogY29uc3QmLCBN
ZW1vcnlPYmplY3RJbmZvKik7CisKK2NsYXNzIEF0b21pY1N0cmluZzsKK3ZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoY29uc3QgQXRvbWljU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsK
KworY2xhc3MgQ1N0cmluZzsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0cmluZyog
Y29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKik7CisKK2NsYXNzIENTdHJpbmdCdWZmZXI7Cit2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IENTdHJpbmdCdWZmZXIqIGNvbnN0JiwgTWVtb3J5T2Jq
ZWN0SW5mbyopOworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vICFkZWZpbmVkKE1l
bW9yeUluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25TdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDljOWM3MTQ4NjJjYmFjZTA2NDZjNTM0N2UzYTEw
ZDM5YTNlY2M1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uU3RyaW5nLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uU3RyaW5nX2gKKyNkZWZpbmUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nX2gKKwor
I2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworaW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
Y29uc3QgU3RyaW5nSW1wbCogY29uc3QmIHN0cmluZ0ltcGwsIE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pCit7CisgICAgc2l6ZV90IHNlbGZTaXplID0gc2l6ZW9mKFN0cmluZ0lt
cGwpOworCisgICAgLy8gQ291bnQgc2l6ZSB1c2VkIGJ5IGludGVybmFsIGJ1ZmZlciBidXQgc2tp
cCBzdHJpbmdzIHRoYXQgd2VyZSBjb25zdHJ1Y3RlZCBmcm9tIGxpdGVyYWxzLgorICAgIGlmIChz
dHJpbmdJbXBsLT5oYXNJbnRlcm5hbEJ1ZmZlcigpKQorICAgICAgICBzZWxmU2l6ZSArPSBzdHJp
bmdJbXBsLT5sZW5ndGgoKSAqIChzdHJpbmdJbXBsLT5pczhCaXQoKSA/IHNpemVvZihMQ2hhcikg
OiBzaXplb2YoVUNoYXIpKTsKKworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHN0cmluZ0ltcGwsIDAsIHNlbGZTaXplKTsKKworICAgIGlmIChTdHJpbmdJbXBsKiBi
YXNlU3RyaW5nID0gc3RyaW5nSW1wbC0+YmFzZVN0cmluZygpKQorICAgICAgICBpbmZvLmFkZE1l
bWJlcihiYXNlU3RyaW5nKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHN0cmluZ0ltcGwtPmhh
c093bmVkQnVmZmVyKCkpIHsKKyAgICAgICAgICAgIGlmIChzdHJpbmdJbXBsLT5pczhCaXQoKSkK
KyAgICAgICAgICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlcihzdHJpbmdJbXBsLT5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmdJbXBsLT5sZW5ndGgoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgaW5mby5hZGRSYXdCdWZmZXIoc3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KCksIHN0cmlu
Z0ltcGwtPmxlbmd0aCgpICogMik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RyaW5nSW1w
bC0+aGFzMTZCaXRTaGFkb3coKSkKKyAgICAgICAgICAgIGluZm8uYWRkUmF3QnVmZmVyKHN0cmlu
Z0ltcGwtPmNoYXJhY3RlcnMoKSwgKHN0cmluZ0ltcGwtPmxlbmd0aCgpICsgKHN0cmluZ0ltcGwt
Pmhhc1Rlcm1pbmF0aW5nTnVsbENoYXJhY3RlcigpID8gMSA6IDApKSAqIHNpemVvZihVQ2hhcikp
OworICAgIH0KK30KKworaW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgU3RyaW5n
KiBjb25zdCYgc3RyaW5nLCBNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQorewor
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHN0cmluZyk7CisgICAg
aW5mby5hZGRNZW1iZXIoc3RyaW5nLT5pbXBsKCkpOworfQorCitpbmxpbmUgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShjb25zdCBBdG9taWNTdHJpbmcqIGNvbnN0JiBhdG9taWNTdHJpbmcsIE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAgTWVtb3J5Q2xhc3NJbmZvIGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgYXRvbWljU3RyaW5nKTsKKyAgICBpbmZvLmFkZE1lbWJlcihh
dG9taWNTdHJpbmctPnN0cmluZygpKTsKK30KKworaW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoY29uc3QgQ1N0cmluZ0J1ZmZlciogY29uc3QmIGNTdHJpbmdCdWZmZXIsIE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVt
b3J5T2JqZWN0SW5mbywgY1N0cmluZ0J1ZmZlciwgMCwgc2l6ZW9mKCpjU3RyaW5nQnVmZmVyKSAr
IGNTdHJpbmdCdWZmZXItPmxlbmd0aCgpKTsKK30KKworaW5saW5lIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoY29uc3QgQ1N0cmluZyogY29uc3QmIGNTdHJpbmcsIE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pCit7CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0
SW5mbywgY1N0cmluZyk7CisgICAgaW5mby5hZGRNZW1iZXIoY1N0cmluZy0+YnVmZmVyKCkpOwor
fQorCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3Jf
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBiOTFjNjBlODBkMGMyOTZk
ZDQ1NjRiODA0ZmU2YzFmOGI1YjcyZmNmLi4wZGU2MDk2ZGRkMTBlZmM2NTcyOTYyODExNDg3NDBj
M2U3Zjg4ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC00MzYsMTAg
KzQzNiw0IEBAIHZvaWQgQXRvbWljU3RyaW5nOjpzaG93KCkgY29uc3QKIH0KICNlbmRpZgogCi12
b2lkIEF0b21pY1N0cmluZzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3N0cmluZyk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggMDY2YjA3
MjZiZGRlNDA1ZWQ3MzU0MjMxZTY4NjM2NWNiODA0YWM4NS4uYzI1YjEzNTliY2VlZGRkYWEyOTZj
MDcyZGVmNDNiNGJiODdkNjA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0x
NTksOCArMTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2hvdygpIGNvbnN0OwogI2VuZGlmCiAK
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgLy8gVGhlIGV4cGxpY2l0IGNvbnN0
cnVjdG9ycyB3aXRoIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgbXVzdCBiZSB1
c2VkIGZvciBsaXRlcmFscy4KICAgICBBdG9taWNTdHJpbmcoQVNDSUlMaXRlcmFsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9DU3RyaW5nLmgKaW5kZXggMDNhYjNlNTRhN2NmYWE2ZDE3NDJjNTA5NjRjOWNmZDY4MTU3OWUx
OS4uNGQ4OTRiMTk2ZDAzOWUyNGMyODc4NWYxZmI0M2EyMzQzNzlkMmFhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9D
U3RyaW5nLmgKQEAgLTM3LDEzICszNyw3IEBAIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgQ1N0cmlu
Z0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPENTdHJpbmdCdWZmZXI+IHsKIHB1YmxpYzoKICAg
ICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgc2l6ZV90IGxlbmd0
aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1vcnlP
YmplY3RJbmZvPgotICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIE1lbW9yeU9i
amVjdEluZm86OkNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIDAsIHNpemVv
ZihDU3RyaW5nQnVmZmVyKSArIG1fbGVuZ3RoKTsKLSAgICB9CisgICAgc2l6ZV90IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IENTdHJpbmc7CkBAIC04MSwxMyArNzUsNiBAQCBwdWJsaWM6CiAKICAgICBDU3RyaW5nQnVmZmVy
KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWVtb3J5T2JqZWN0SW5mbz4KLSAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Ci0gICAgewotICAgICAg
ICB0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZvOjpDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzKTsKLSAgICAgICAgaW5mby5hZGRNZW1iZXIobV9idWZmZXIpOwotICAgIH0KLQog
cHJpdmF0ZToKICAgICB2b2lkIGNvcHlCdWZmZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgaW5pdChj
b25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApp
bmRleCBjMDZhOTY2ZTdhZGQ2ZDFiNTJlNWQ1YmU1NjIwMTQ0ODc5ZmU2Y2M2Li45OGQ1OTUzNmJl
MDI4YTBjYzY3MTYzMjc2MGU4ZTUyYzRiNGYxMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKQEAgLTE3OTIsMjQgKzE3OTIsNCBAQCBzaXplX3QgU3RyaW5nSW1wbDo6c2l6ZUluQnl0
ZXMoKSBjb25zdAogICAgIHJldHVybiBzaXplICsgc2l6ZW9mKCp0aGlzKTsKIH0KIAotdm9pZCBT
dHJpbmdJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAotewotICAgIHNpemVfdCBzZWxmU2l6ZSA9IHNpemVvZihTdHJpbmdJbXBs
KTsKLQotICAgICAgICAvLyBDb3VudCBzaXplIHVzZWQgYnkgaW50ZXJuYWwgYnVmZmVyIGJ1dCBz
a2lwIHN0cmluZ3MgdGhhdCB3ZXJlIGNvbnN0cnVjdGVkIGZyb20gbGl0ZXJhbHMuCi0gICAgaWYg
KChtX2hhc2hBbmRGbGFncyAmIEJ1ZmZlckludGVybmFsKSAmJiAhaGFzVGVybWluYXRpbmdOdWxs
Q2hhcmFjdGVyKCkpCi0gICAgICAgIC8vIFRocmVlIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6Ci0g
ICAgICAgIC8vIDEpIGEgbm9ybWFsIDgtYml0IHN0cmluZyB3aXRoIGludGVybmFsIHN0b3JhZ2Ug
KEJ1ZmZlckludGVybmFsKQotICAgICAgICAvLyAyKSBhIG5vcm1hbCAxNi1iaXQgc3RyaW5nIHdp
dGggaW50ZXJuYWwgc3RvcmFnZSAoQnVmZmVySW50ZXJuYWwpCi0gICAgICAgIC8vIDMpIGVtcHR5
IHVuaXF1ZSBzdHJpbmcgd2l0aCBsZW5ndGggPSAwIChCdWZmZXJJbnRlcm5hbCkKLSAgICAgICAg
c2VsZlNpemUgKz0gbV9sZW5ndGggKiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1
ZmZlciA/IHNpemVvZihMQ2hhcikgOiBzaXplb2YoVUNoYXIpKTsKLQotICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIDAsIHNlbGZTaXplKTsKLQotICAgIGlm
IChtX2hhc2hBbmRGbGFncyAmIEJ1ZmZlclN1YnN0cmluZykKLSAgICAgICAgaW5mby5hZGRNZW1i
ZXIobV9zdWJzdHJpbmdCdWZmZXIpOwotICAgIGVsc2UgaWYgKG1faGFzaEFuZEZsYWdzICYgc19o
YXNoRmxhZ0hhczE2Qml0U2hhZG93KSAvLyBTdWJzdHJpbmcgbmV2ZXIgaGFzIGl0cyBvd24gc2hh
ZG93LgotICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlcihtX2NvcHlEYXRhMTYsIChtX2xlbmd0aCAr
IChoYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0ZXIoKSA/IDEgOiAwKSkgKiBzaXplb2YoVUNoYXIp
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4
IDAwYzYyODVkMjA3MTk5Nzg5NjkwOTUxZjMxNjNjOTQ4ODc2ODk2OTEuLjRkYTY3NjZhY2RlYzdk
YWRiNzRlYWEwMWJiYTZhNGZjOGNiYTllNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBA
IC00NTMsNiArNDUzLDkgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KKyAgICBib29sIGhhc0ludGVy
bmFsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVySW50
ZXJuYWwgJiYgIWhhc1Rlcm1pbmF0aW5nTnVsbENoYXJhY3RlcigpOyB9CisgICAgYm9vbCBoYXNP
d25lZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZlck93bmVyc2hpcCgpID09IEJ1ZmZlck93
bmVkOyB9CisgICAgU3RyaW5nSW1wbCogYmFzZVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZl
ck93bmVyc2hpcCgpID09IEJ1ZmZlclN1YnN0cmluZyA/IG1fc3Vic3RyaW5nQnVmZmVyIDogMDsg
fQogCiAgICAgLy8gRklYTUU6IFJlbW92ZSBhbGwgdW5uZWNlc3NhcnkgdXNhZ2VzIG9mIGNoYXJh
Y3RlcnMoKQogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29u
c3QgeyBBU1NFUlQoaXM4Qml0KCkpOyByZXR1cm4gbV9kYXRhODsgfQpAQCAtNzE2LDggKzcxOSw2
IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTdHJpbmdTdGF0cyYgc3RyaW5n
U3RhdHMoKSB7IHJldHVybiBtX3N0cmluZ1N0YXRzOyB9CiAjZW5kaWYKIAotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKLQogcHJpdmF0ZToKICAgICAvLyBUaGlzIG51bWJlciBtdXN0IGJlIGF0IGxlYXN0IDIg
dG8gYXZvaWQgc2hhcmluZyBlbXB0eSwgbnVsbCBhcyB3ZWxsIGFzIDEgY2hhcmFjdGVyIHN0cmlu
Z3MgZnJvbSBTbWFsbFN0cmluZ3MuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfY29weUNo
YXJzSW5saW5lQ3V0T2ZmID0gMjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggZjg5
ZDhkYTM1ZGI0OGJiMjVlYjg0MTYzMzhmNDdkOTM3Y2I4OTRmMy4uOTEwY2U3NDE0MWJkN2I5MTBk
NzcxOWU0YWY1MmU4YTFlMDRhYjA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAt
ODM1LDEyICs4MzUsNiBAQCBTdHJpbmcgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhjb25zdCBMQ2hhciogc3RyaW5nLCBzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4gdXRmODsKIH0K
IAotdm9pZCBTdHJpbmc6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0Ci17Ci0gICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcyk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9pbXBsKTsKLX0KLQogLy8gU3Ry
aW5nIE9wZXJhdGlvbnMKIAogc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJBbGxvd2VkSW5CYXNlKFVD
aGFyIGMsIGludCBiYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggMGEyMWI2OTk1YWYx
NzRlYWQxNGU0ZGI5YjAzYWJjZGFmNzI0NTJlNC4uYmYyN2YxNzI5MGY5NzU2ZmY0Njk1MTJhZTIw
YmRiZmU2MmVkMTgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC00NTcsOCArNDU3LDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gKCptX2ltcGwpW2luZGV4XTsKICAgICB9CiAKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1w
bDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50
YXRpb24uaAppbmRleCBhOTk4MTFiODRiM2U5MjBiYmRjNmQwN2QzNTBlMWFmZTViMmNmY2IzLi5j
MzE3OTliYWE1ZjcxN2E1MmUyNTgwYjUyNTI4OWY0ZTE1ZTZiOWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNkZWZpbmUgV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbl9oCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJ
bnN0cnVtZW50YXRpb25TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tVUkwuY3BwCmluZGV4IGMzZDUwOTlmM2FjYjlkZmQ3YWU0YjJkNGU0NWJjYjQwMzMy
YTJmZjAuLjBkMmE2ZDhiMzZiYTQxZDM4OTJlZWI1ODFlNDMwZTUyNjUyNzNhYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tVUkwuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaWYgIVVTRShXVEZVUkwpCiAj
aW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2VuZGlmCisjaW5jbHVkZSA8d3RmL01lbW9yeUlu
c3RydW1lbnRhdGlvblN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcAppbmRleCA2ZjgxNDI2
NzJhZDgxNzU5NjY3OGVkZjZjOWQ2YmYxZDBkYTI4MDIxLi5jOTI2NmVlNjdmMjIyNDU3OGIyMzEw
OGNhYTljYzQ0M2NkMGY5OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMR29vZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNw
cApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCAyMmI5MDk3NGQ0ZGNiNjQ0
YWNiMmJhNDU2OGQzYTQ2M2VkNzdjOTUxLi40NmE4NGJiZDg3NWI3ZmM2NTBjZjA1NjkyODJiNGNl
MjBhNDBlZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1l
bW9yeUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgUGxh
dGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb25faAogCiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcAppbmRleCBiZWMx
YzAwZjc3ZTUxNmM4OTRlMGJiMmE3ZWUyZjEyZmVmMTMxZjY2Li5lMGE4NTM2YWRhM2MwMTlkYmIz
ZDYyNjBmMGU3NzhlNWQxYTRjNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKQEAgLTQwLDExICs0
MCwxMyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUlu
c3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlv
blN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTI1NywxMiArMjU5LDU3IEBAIHB1Ymxp
YzoKIAogVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCB2aXNpdFN0cmluZ3MpCiB7Ci0g
ICAgeworICAgIHsgLy8gOC1iaXQgc3RyaW5nLgorICAgICAgICBJbnN0cnVtZW50YXRpb25UZXN0
SGVscGVyIGhlbHBlcjsKKyAgICAgICAgSW5zdHJ1bWVudGVkT3duZXI8U3RyaW5nPiBzdHJpbmdJ
bnN0cnVtZW50ZWRPd25lcigiU3RyaW5nIik7CisgICAgICAgIGhlbHBlci5hZGRSb290T2JqZWN0
KHN0cmluZ0luc3RydW1lbnRlZE93bmVyKTsKKyAgICAgICAgRVhQRUNUX0VRKHNpemVvZihTdHJp
bmdJbXBsKSArIHN0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVuZ3RoKCksIGhlbHBl
ci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDEsIGhlbHBl
ci52aXNpdGVkT2JqZWN0cygpKTsKKyAgICB9CisKKyAgICB7IC8vIDgtYml0IHN0cmluZyB3aXRo
IDE2Yml0IHNoYWRvdy4KICAgICAgICAgSW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7
CiAgICAgICAgIEluc3RydW1lbnRlZE93bmVyPFN0cmluZz4gc3RyaW5nSW5zdHJ1bWVudGVkT3du
ZXIoIlN0cmluZyIpOwotICAgICAgICBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmNo
YXJhY3RlcnMoKTsgLy8gRm9yY2UgMTZiaXQgc2hhZG93IGNyZWF0aW9uLgorICAgICAgICBzdHJp
bmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmNoYXJhY3RlcnMoKTsgCisgICAgICAgIGhlbHBl
ci5hZGRSb290T2JqZWN0KHN0cmluZ0luc3RydW1lbnRlZE93bmVyKTsKKyAgICAgICAgRVhQRUNU
X0VRKHNpemVvZihTdHJpbmdJbXBsKSArIHN0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUu
bGVuZ3RoKCkgKiAzLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgyLCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CisgICAgfQorCisgICAgeyAv
LyAxNiBiaXQgc3RyaW5nLgorICAgICAgICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBl
cjsKKyAgICAgICAgU3RyaW5nIHN0cmluZygiU3RyaW5nIik7CisgICAgICAgIEluc3RydW1lbnRl
ZE93bmVyPFN0cmluZz4gc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIoU3RyaW5nKHN0cmluZy5jaGFy
YWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSkpOwogICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVj
dChzdHJpbmdJbnN0cnVtZW50ZWRPd25lcik7CiAgICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3Ry
aW5nSW1wbCkgKyBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0aCgpICogMiwg
aGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMSwg
aGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworICAgIH0KKworICAgIHsgLy8gQVNDSUlMaXRlcmFs
CisgICAgICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgaGVscGVyOworICAgICAgICBBU0NJ
SUxpdGVyYWwgbGl0ZXJhbCgiU3RyaW5nIik7CisgICAgICAgIEluc3RydW1lbnRlZE93bmVyPFN0
cmluZz4gc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIobGl0ZXJhbCk7CisgICAgICAgIGhlbHBlci5h
ZGRSb290T2JqZWN0KHN0cmluZ0luc3RydW1lbnRlZE93bmVyKTsKKyAgICAgICAgRVhQRUNUX0VR
KHNpemVvZihTdHJpbmdJbXBsKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoMSwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworICAgIH0KKwor
ICAgIHsgLy8gU3Vic3RyaW5nCisgICAgICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgaGVs
cGVyOworICAgICAgICBTdHJpbmcgYmFzZVN0cmluZygiU3RyaW5nIik7CisgICAgICAgIGJhc2VT
dHJpbmcuY2hhcmFjdGVycygpOyAvLyBGb3JjZSAxNiBzaGFkb3cgY3JlYXRpb24uCisgICAgICAg
IEluc3RydW1lbnRlZE93bmVyPFN0cmluZz4gc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIoYmFzZVN0
cmluZy5zdWJzdHJpbmdTaGFyaW5nSW1wbCgxLCA0KSk7CisgICAgICAgIGhlbHBlci5hZGRSb290
T2JqZWN0KHN0cmluZ0luc3RydW1lbnRlZE93bmVyKTsKKyAgICAgICAgRVhQRUNUX0VRKHNpemVv
ZihTdHJpbmdJbXBsKSAqIDIgKyBiYXNlU3RyaW5nLmxlbmd0aCgpICogMywgaGVscGVyLnJlcG9y
dGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMywgaGVscGVyLnZpc2l0
ZWRPYmplY3RzKCkpOworICAgIH0KKworICAgIHsgLy8gT3duZWQgYnVmZmVyLgorICAgICAgICBJ
bnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKyAgICAgICAgU3RyaW5nQnVmZmVyPExD
aGFyPiBidWZmZXIoNik7CisgICAgICAgIEluc3RydW1lbnRlZE93bmVyPFN0cmluZz4gc3RyaW5n
SW5zdHJ1bWVudGVkT3duZXIoU3RyaW5nOjphZG9wdChidWZmZXIpKTsKKyAgICAgICAgaGVscGVy
LmFkZFJvb3RPYmplY3Qoc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIpOworICAgICAgICBFWFBFQ1Rf
RVEoc2l6ZW9mKFN0cmluZ0ltcGwpICsgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5s
ZW5ndGgoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgICAgICBFWFBF
Q1RfRVEoMiwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogICAgIH0KIApAQCAtMjcxLDcgKzMx
OCw3IEBAIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgdmlzaXRTdHJpbmdzKQogICAg
ICAgICBJbnN0cnVtZW50ZWRPd25lcjxBdG9taWNTdHJpbmc+IGF0b21pY1N0cmluZ0luc3RydW1l
bnRlZE93bmVyKCJBdG9taWNTdHJpbmciKTsKICAgICAgICAgYXRvbWljU3RyaW5nSW5zdHJ1bWVu
dGVkT3duZXIubV92YWx1ZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCk7IC8vIEZvcmNlIDE2Yml0IHNo
YWRvdyBjcmVhdGlvbi4KICAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3QoYXRvbWljU3RyaW5n
SW5zdHJ1bWVudGVkT3duZXIpOwotICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwp
ICsgYXRvbWljU3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5sZW5ndGgoKSAqIDIsIGhl
bHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKHNpemVv
ZihTdHJpbmdJbXBsKSArIGF0b21pY1N0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVu
Z3RoKCkgKiAzLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgyLCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CiAgICAgfQogCkBAIC00MzEsNyAr
NDc4LDcgQEAgVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCB2ZWN0b3JXaXRoSW5zdHJ1
bWVudGVkVHlwZSkKICAgICAgICAgdmFsdWUtPmFwcGVuZCgic3RyaW5nIik7CiAgICAgSW5zdHJ1
bWVudGVkT3duZXI8U3RyaW5nVmVjdG9yKiA+IHJvb3QodmFsdWUuZ2V0KCkpOwogICAgIGhlbHBl
ci5hZGRSb290T2JqZWN0KHJvb3QpOwotICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5nVmVjdG9y
KSArIHNpemVvZihTdHJpbmcpICogdmFsdWUtPmNhcGFjaXR5KCkgKyBzaXplb2YoU3RyaW5nSW1w
bCkgKiB2YWx1ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7Cisg
ICAgRVhQRUNUX0VRKHNpemVvZihTdHJpbmdWZWN0b3IpICsgc2l6ZW9mKFN0cmluZykgKiB2YWx1
ZS0+Y2FwYWNpdHkoKSArIChzaXplb2YoU3RyaW5nSW1wbCkgKyA2KSAqIHZhbHVlLT5zaXplKCks
IGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICBFWFBFQ1RfRVEoY291bnQg
KyAyLCAoc2l6ZV90KWhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKIH0KIApAQCAtNDQ2LDcgKzQ5
Myw3IEBAIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgaGFzaFNldFdpdGhJbnN0cnVt
ZW50ZWRUeXBlKQogICAgICAgICB2YWx1ZS0+YWRkKFN0cmluZzo6bnVtYmVyKGkpKTsKICAgICBJ
bnN0cnVtZW50ZWRPd25lcjxWYWx1ZVR5cGUqID4gcm9vdCh2YWx1ZS5nZXQoKSk7CiAgICAgaGVs
cGVyLmFkZFJvb3RPYmplY3Qocm9vdCk7Ci0gICAgRVhQRUNUX0VRKHNpemVvZihWYWx1ZVR5cGUp
ICsgc2l6ZW9mKFN0cmluZykgKiB2YWx1ZS0+Y2FwYWNpdHkoKSArIHNpemVvZihTdHJpbmdJbXBs
KSAqIHZhbHVlLT5zaXplKCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAg
ICBFWFBFQ1RfRVEoc2l6ZW9mKFZhbHVlVHlwZSkgKyBzaXplb2YoU3RyaW5nKSAqIHZhbHVlLT5j
YXBhY2l0eSgpICsgKHNpemVvZihTdHJpbmdJbXBsKSArIDEpICogdmFsdWUtPnNpemUoKSwgaGVs
cGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgIEVYUEVDVF9FUShjb3VudCArIDEs
IChzaXplX3QpaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166488</attachid>
            <date>2012-10-01 09:00:59 -0700</date>
            <delta_ts>2012-10-04 22:34:37 -0700</delta_ts>
            <desc>rebaselined.</desc>
            <filename>bug-97964-20121001200012.patch</filename>
            <type>text/plain</type>
            <size>27905</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNlNDdlZTYyMzU2ZWM1NDI0ODU2ZDY1
Y2VlZDk3MWE5MzMxZDY4NzQuLjY0YWRjMzQwNjZmMTdmMGQ1Njg3MTI3OGNiZWY3ZTA1YzllNWEw
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtYWtlIFN0
cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmgg
d2FzIGFkZGVkLgorICAgICAgICBJbnRydXNpdmUgaW5zdHJ1bWVudGF0aW9uIHdhcyByZW1vdmVk
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToK
KyAgICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg6CisgICAgICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6Q1N0cmluZ0J1ZmZlcjo6bGVuZ3RoKToKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVzZXNJbnRlcm5hbEJ1ZmZlcik6CisgICAgICAgIChX
VEY6OlN0cmluZ0ltcGw6OmJhc2VTdHJpbmcpOgorICAgICAgICAoU3RyaW5nSW1wbCk6CisKIDIw
MTItMTAtMDEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBIYXNo
TWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMzc5YTcyYTUwMjdlODkwZWUwNjczNTVkZmRjZTI0YmE3MTBiZjI5
OC4uMGJmNGZkMzRiMTU0MWFjYmFiZTRjMTZhMzE2MGU4Y2Y2YzMyNDQ0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTI5ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUkgbWFrZSBTdHJpbmcqIGlu
c3RydW1lbnRhdGlvbiBub24gaW50cnVzaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oIGluY2x1ZGUg
d2FzIGFkZGVkLgorCisgICAgICAgICogZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24u
aDoKKwogMjAxMi0xMC0wMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBDaHJvbWl1bSBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGRmN2EzNzVhNDU5MDJhYWFkN2Q3MjQ0MjkwNzA5NzFjMjU1OTBmNjku
LjliMWM4ZGNhODZjNzI1NTQwNjI5YTg2MjY2OWQ2YTA2ZmU3MzlmM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMjkgIElseWEgVGlraG9ub3Zz
a3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBt
YWtlIFN0cmluZyogaW5zdHJ1bWVudGF0aW9uIG5vbiBpbnRydXNpdmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3OTY0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4cGVjdGF0aW9ucyB3ZXJlIGZp
eGVkIGJlY2F1c2Ugb2xkIGluc3RydW1lbnRhdGlvbiBoYWQgd3JvbmcgZGV0ZWN0b3IgZm9yIEJ1
ZmZlckludGVybmFsIHR5cGUgb2Ygc3RvcmFnZS4KKworICAgICAgICAqIHRlc3RzL01lbW9yeUlu
c3RydW1lbnRhdGlvblRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTIt
MTAtMDEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBIYXNoTWFw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RG
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYmQ2ZTAxZjc2MzM0NTVkMDRiYmRmM2JlMGI3NGIx
YTZhMmI1MDA2My4uYWNlOGFmYzkxNzcyNjA0ZDVhMzFhYmJkZjgxZGQwM2Q5YmJlY2ZjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtODMsNiArODMsNyBAQCB3dGZfc291cmNlcyArPSBcCiAg
ICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3Lmgg
XAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaCBcCiAg
ICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oIFwKKyAgICBT
b3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBcCiAgICAgU291cmNl
L1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggXAogICAgIFNvdXJjZS9XVEYv
d3RmL01lc3NhZ2VRdWV1ZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5neXBpIGIvU291cmNlL1dURi9XVEYuZ3lw
aQppbmRleCAxZjk3ZmUwYzU2ODhkZjIyNDdhMjU1MDBlYjlkN2E0MDU5ZGJjYjZhLi5mODc2MGZh
ZDY5NWQ5MmQ3ZTcwOWIxODhjNTUwZjI5NDg5YzM1ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKQEAgLTUzLDYgKzUzLDcgQEAKICAg
ICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3LmgnLAog
ICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmgnLAogICAgICAg
ICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmgnLAorICAgICAgICAgICAg
J3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCcsCiAgICAgICAgICAgICAnd3RmL01l
bW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oJywKICAgICAgICAgICAgICd3dGYvTWVzc2FnZVF1
ZXVlLmgnLAogICAgICAgICAgICAgJ3d0Zi9Ob25Db3B5aW5nU29ydC5oJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvV1RGLnBybyBiL1NvdXJjZS9XVEYvV1RGLnBybwppbmRleCA3ZjJjYzYwMmUx
NmM1OGYyMTE2ZDNmMDI1NTg2MmNlMTY0YWU3ZWVlLi45YTA2MmM4Mzg3M2NhODg1MzE2MDRjNGNm
NjJmODJmNjY4ZmE3NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5wcm8KKysrIGIvU291
cmNlL1dURi9XVEYucHJvCkBAIC05MCw2ICs5MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIE1lbW9y
eUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oIFwKICAgICBNZW1vcnlJbnN0cnVtZW50
YXRpb25IYXNoTWFwLmggXAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCBcCisg
ICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmggXAogICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvblZlY3Rvci5oIFwKICAgICBNZXNzYWdlUXVldWUuaCBcCiAgICAgTWV0YUFsbG9jYXRvci5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qIGIvU291cmNl
L1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKaW5kZXggMmJkYTY4NzUyMjE3ZGYxN2MzNDhhNGQ3
OTIzZDZiMmQ4NTVkNDFmMy4uYTFhMmQyMmVkNGVjMGNhNDMxNzZhOTNiYjYxNjQ0ZDA3ZWYxMGRi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKKysrIGIvU291
cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKQEAgLTkxNyw2ICs5MTcsMTAgQEAKIAkJCT4K
IAkJPC9GaWxlPgogCQk8RmlsZQorCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cd3RmXE1lbW9y
eUluc3RydW1lbnRhdGlvblN0cmluZy5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCSAg
ICAgICAgUmVsYXRpdmVQYXRoPSIuLlx3dGZcTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmgi
CiAJCQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGU3ZTQ5MDMxYzllZWI3NzEzN2MxMTMyZDM3MWIxZDA4NTg3MTJkM2EuLjc2OWJmMjE0
ZjdmNDM4MDI0ZmI5MmM2ZDVmY2Y1ZjM3NmVjMDNjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMsNiArNDMsNyBAQAogCQk0RjFCMkRCNjE2MEI0NEFB
MDA1ODY1NTkgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxQjJEQjUxNjBCNDRBQTAwNTg2NTU5
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCAqLzsgfTsKIAkJNEYxRDExNTQxNUZG
MTFCRTAwMjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4IC8q
IE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovOyB9OwogCQk0RkNCNzEwQTE2MEExQTA3MDA4NDI1
RUMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RkNCNzEwOTE2MEExQTA3MDA4NDI1RUMgLyogTWVt
b3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmggKi87IH07CisJCTRGQ0YyN0UxMTYxNzJFODYwMENC
RjAzNyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQ0YyN0UwMTYxNzJFODYwMENCRjAzNyAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCAqLzsgfTsKIAkJNEZEODU1NDcxNjEzM0UwRTAw
QzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZEODU1NDYxNjEzM0UwRTAw
QzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oICovOyB9Owog
CQk3RTI5QzMzRTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMjlDMzNEMTVGRkQ3OUIw
MDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4MTM0MDEzODE1QjA5MkZE
MDAxRkYwQjggLyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovOyB9
OwpAQCAtMzE1LDYgKzMxNiw3IEBACiAJCTRGMUIyREI1MTYwQjQ0QUEwMDU4NjU1OSAvKiBNZW1v
cnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEYxRDExNTMxNUZGMTFCRTAwMjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEZDQjcxMDkxNjBBMUEwNzAwODQy
NUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNEZDRjI3RTAxNjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvblN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEZEODU1NDYxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVm
ZmVyVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVt
ZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRo
ID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwMSw2ICs3
MDMsNyBAQAogCQkJCTRGRDg1NTQ2MTYxMzNFMEUwMEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50
YXRpb25BcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQlGMzUyNUU0NTE2MTlBNEVFMDAyNzhCQzEg
LyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oICovLAogCQkJCTRGMUIyREI1MTYwQjQ0
QUEwMDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0LmggKi8sCisJCQkJNEZD
RjI3RTAxNjE3MkU4NjAwQ0JGMDM3IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oICov
LAogCQkJCTRGQ0I3MTA5MTYwQTFBMDcwMDg0MjVFQyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25W
ZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJDQzE1MUE4MjVCMDA0MTIzRkYgLyogTWVzc2FnZVF1ZXVl
LmggKi8sCiAJCQkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuY3Bw
ICovLApAQCAtMTE1Nyw2ICsxMTYwLDcgQEAKIAkJCQk0RjFCMkRCNjE2MEI0NEFBMDA1ODY1NTkg
LyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEZE
ODU1NDcxNjEzM0UwRTAwQzVCNzA0IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVy
Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM1MjVFNDYxNjE5QTRFRTAwMjc4QkMxIC8qIE1l
bW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTRGQ0YyN0Ux
MTYxNzJFODYwMENCRjAzNyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmggYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCBiMTQ5NmM4
MDdjODBhZjRmZjUzN2IzOTUxNDU4NDMxZWMwZTk0NjJlLi5iMDNmMWJlMjIwMDM3NDJhZTUwYjEz
MjU3MTE0Y2EwZTM3N2MzOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aApAQCAtMzA3LDEzICszMDcsMjggQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3Ry
dW1lbnRlZFBvaW50ZXI8VD46OnByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW8KICAgICBtZW1v
cnlJbnN0cnVtZW50YXRpb24tPmNvdW50T2JqZWN0U2l6ZShtZW1vcnlPYmplY3RJbmZvLm9iamVj
dFR5cGUoKSwgbWVtb3J5T2JqZWN0SW5mby5vYmplY3RTaXplKCkpOwogfQogCi0vLyBMaW5rIHRp
bWUgZ3VhcmQgZm9yIHZlY3RvciBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uLgorLy8gTGluayB0aW1l
IGd1YXJkIGZvciBjbGFzc2VzIHdpdGggZXh0ZXJuYWwgbWVtb3J5IGluc3RydW1lbnRhdGlvbi4K
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgVmVjdG9y
OwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4qIGNvbnN0JiwgTWVt
b3J5T2JqZWN0SW5mbyopOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1h
cHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFt
ZSBNYXBwZWRUcmFpdHNBcmc+IGNsYXNzIEhhc2hNYXA7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlB
cmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJh
aXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
Y29uc3QgSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmc+KiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsKIAorY2xhc3MgU3Ry
aW5nOwordm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTdHJpbmcqIGNvbnN0JiwgTWVtb3J5
T2JqZWN0SW5mbyopOworCitjbGFzcyBTdHJpbmdJbXBsOwordm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsKKworY2xhc3Mg
QXRvbWljU3RyaW5nOwordm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBBdG9taWNTdHJpbmcq
IGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyopOworCitjbGFzcyBDU3RyaW5nOwordm9pZCByZXBv
cnRNZW1vcnlVc2FnZShjb25zdCBDU3RyaW5nKiBjb25zdCYsIE1lbW9yeU9iamVjdEluZm8qKTsK
KworY2xhc3MgQ1N0cmluZ0J1ZmZlcjsKK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgQ1N0
cmluZ0J1ZmZlciogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZvKik7CisKIH0gLy8gbmFtZXNwYWNl
IFdURgogCiAjZW5kaWYgLy8gIWRlZmluZWQoTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaCBiL1Nv
dXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZk
OWM5YzcxNDg2MmNiYWNlMDY0NmM1MzQ3ZTNhMTBkMzlhM2VjYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmcuaApAQCAtMCwwICsx
LDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBNZW1vcnlJbnN0cnVtZW50YXRpb25TdHJpbmdfaAorI2RlZmluZSBNZW1v
cnlJbnN0cnVtZW50YXRpb25TdHJpbmdfaAorCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1l
bnRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitp
bmxpbmUgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTdHJpbmdJbXBsKiBjb25zdCYgc3Ry
aW5nSW1wbCwgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKK3sKKyAgICBzaXpl
X3Qgc2VsZlNpemUgPSBzaXplb2YoU3RyaW5nSW1wbCk7CisKKyAgICAvLyBDb3VudCBzaXplIHVz
ZWQgYnkgaW50ZXJuYWwgYnVmZmVyIGJ1dCBza2lwIHN0cmluZ3MgdGhhdCB3ZXJlIGNvbnN0cnVj
dGVkIGZyb20gbGl0ZXJhbHMuCisgICAgaWYgKHN0cmluZ0ltcGwtPmhhc0ludGVybmFsQnVmZmVy
KCkpCisgICAgICAgIHNlbGZTaXplICs9IHN0cmluZ0ltcGwtPmxlbmd0aCgpICogKHN0cmluZ0lt
cGwtPmlzOEJpdCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihVQ2hhcikpOworCisgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgc3RyaW5nSW1wbCwgMCwgc2VsZlNp
emUpOworCisgICAgaWYgKFN0cmluZ0ltcGwqIGJhc2VTdHJpbmcgPSBzdHJpbmdJbXBsLT5iYXNl
U3RyaW5nKCkpCisgICAgICAgIGluZm8uYWRkTWVtYmVyKGJhc2VTdHJpbmcpOworICAgIGVsc2Ug
eworICAgICAgICBpZiAoc3RyaW5nSW1wbC0+aGFzT3duZWRCdWZmZXIoKSkgeworICAgICAgICAg
ICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKQorICAgICAgICAgICAgICAgIGluZm8uYWRkUmF3
QnVmZmVyKHN0cmluZ0ltcGwtPmNoYXJhY3RlcnM4KCksIHN0cmluZ0ltcGwtPmxlbmd0aCgpKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbmZvLmFkZFJhd0J1ZmZlcihzdHJp
bmdJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nSW1wbC0+bGVuZ3RoKCkgKiAyKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChzdHJpbmdJbXBsLT5oYXMxNkJpdFNoYWRvdygpKQorICAgICAg
ICAgICAgaW5mby5hZGRSYXdCdWZmZXIoc3RyaW5nSW1wbC0+Y2hhcmFjdGVycygpLCAoc3RyaW5n
SW1wbC0+bGVuZ3RoKCkgKyAoc3RyaW5nSW1wbC0+aGFzVGVybWluYXRpbmdOdWxsQ2hhcmFjdGVy
KCkgPyAxIDogMCkpICogc2l6ZW9mKFVDaGFyKSk7CisgICAgfQorfQorCitpbmxpbmUgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShjb25zdCBTdHJpbmcqIGNvbnN0JiBzdHJpbmcsIE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVt
b3J5T2JqZWN0SW5mbywgc3RyaW5nKTsKKyAgICBpbmZvLmFkZE1lbWJlcihzdHJpbmctPmltcGwo
KSk7Cit9CisKK2lubGluZSB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IEF0b21pY1N0cmlu
ZyogY29uc3QmIGF0b21pY1N0cmluZywgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCBhdG9taWNT
dHJpbmcpOworICAgIGluZm8uYWRkTWVtYmVyKGF0b21pY1N0cmluZy0+c3RyaW5nKCkpOworfQor
CitpbmxpbmUgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBDU3RyaW5nQnVmZmVyKiBjb25z
dCYgY1N0cmluZ0J1ZmZlciwgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKK3sK
KyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCBjU3RyaW5nQnVmZmVy
LCAwLCBzaXplb2YoKmNTdHJpbmdCdWZmZXIpICsgY1N0cmluZ0J1ZmZlci0+bGVuZ3RoKCkpOwor
fQorCitpbmxpbmUgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBDU3RyaW5nKiBjb25zdCYg
Y1N0cmluZywgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCBjU3RyaW5nKTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihjU3RyaW5nLT5idWZmZXIoKSk7Cit9CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVk
KE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuY3BwCmluZGV4IGI5MWM2MGU4MGQwYzI5NmRkNDU2NGI4MDRmZTZjMWY4YjViNzJmY2YuLjBk
ZTYwOTZkZGQxMGVmYzY1NzI5NjI4MTE0ODc0MGMzZTdmODhlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZy5jcHAKQEAgLTQzNiwxMCArNDM2LDQgQEAgdm9pZCBBdG9taWNTdHJpbmc6
OnNob3coKSBjb25zdAogfQogI2VuZGlmCiAKLXZvaWQgQXRvbWljU3RyaW5nOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotewotICAg
IE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMpOwotICAgIGluZm8u
YWRkTWVtYmVyKG1fc3RyaW5nKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaAppbmRleCAwNjZiMDcyNmJkZGU0MDVlZDczNTQyMzFlNjg2MzY1Y2I4
MDRhYzg1Li5jMjViMTM1OWJjZWVkZGRhYTI5NmMwNzJkZWY0M2I0YmI4N2Q2MDYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTE1OSw4ICsxNTksNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzaG93KCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKLQogcHJpdmF0
ZToKICAgICAvLyBUaGUgZXhwbGljaXQgY29uc3RydWN0b3JzIHdpdGggQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCBtdXN0IGJlIHVzZWQgZm9yIGxpdGVyYWxzLgogICAgIEF0b21p
Y1N0cmluZyhBU0NJSUxpdGVyYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9D
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaAppbmRleCAwM2FiM2U1NGE3
Y2ZhYTZkMTc0MmM1MDk2NGM5Y2ZkNjgxNTc5ZTE5Li40ZDg5NGIxOTZkMDM5ZTI0YzI4Nzg1ZjFm
YjQzYTIzNDM3OWQyYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaApAQCAtMzcsMTMgKzM3LDcgQEAg
bmFtZXNwYWNlIFdURiB7CiBjbGFzcyBDU3RyaW5nQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8
Q1N0cmluZ0J1ZmZlcj4gewogcHVibGljOgogICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVy
biBtX2RhdGE7IH0KLSAgICBzaXplX3QgbGVuZ3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lbW9yeU9iamVjdEluZm8+Ci0gICAgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAotICAg
IHsKLSAgICAgICAgdHlwZW5hbWUgTWVtb3J5T2JqZWN0SW5mbzo6Q2xhc3NJbmZvIGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgMCwgc2l6ZW9mKENTdHJpbmdCdWZmZXIpICsgbV9sZW5ndGgp
OwotICAgIH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0K
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ1N0cmluZzsKQEAgLTgxLDEzICs3NSw2IEBA
IHB1YmxpYzoKIAogICAgIENTdHJpbmdCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1vcnlPYmplY3RJbmZv
PgotICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIE1lbW9yeU9iamVjdEluZm86
OkNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMpOwotICAgICAgICBpbmZvLmFk
ZE1lbWJlcihtX2J1ZmZlcik7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIHZvaWQgY29weUJ1ZmZl
cklmTmVlZGVkKCk7CiAgICAgdm9pZCBpbml0KGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGMwNmE5NjZlN2FkZDZkMWI1MmU1ZDVi
ZTU2MjAxNDQ4NzlmZTZjYzYuLjk4ZDU5NTM2YmUwMjhhMGNjNjcxNjMyNzYwZThlNTJjNGI0ZjEz
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTc5MiwyNCArMTc5Miw0IEBA
IHNpemVfdCBTdHJpbmdJbXBsOjpzaXplSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIHNpemUg
KyBzaXplb2YoKnRoaXMpOwogfQogCi12b2lkIFN0cmluZ0ltcGw6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Ci17Ci0gICAgc2l6ZV90
IHNlbGZTaXplID0gc2l6ZW9mKFN0cmluZ0ltcGwpOwotCi0gICAgICAgIC8vIENvdW50IHNpemUg
dXNlZCBieSBpbnRlcm5hbCBidWZmZXIgYnV0IHNraXAgc3RyaW5ncyB0aGF0IHdlcmUgY29uc3Ry
dWN0ZWQgZnJvbSBsaXRlcmFscy4KLSAgICBpZiAoKG1faGFzaEFuZEZsYWdzICYgQnVmZmVySW50
ZXJuYWwpICYmICFoYXNUZXJtaW5hdGluZ051bGxDaGFyYWN0ZXIoKSkKLSAgICAgICAgLy8gVGhy
ZWUgY2FzZXMgYXJlIGNvdmVyZWQgaGVyZToKLSAgICAgICAgLy8gMSkgYSBub3JtYWwgOC1iaXQg
c3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVmZmVySW50ZXJuYWwpCi0gICAgICAgIC8v
IDIpIGEgbm9ybWFsIDE2LWJpdCBzdHJpbmcgd2l0aCBpbnRlcm5hbCBzdG9yYWdlIChCdWZmZXJJ
bnRlcm5hbCkKLSAgICAgICAgLy8gMykgZW1wdHkgdW5pcXVlIHN0cmluZyB3aXRoIGxlbmd0aCA9
IDAgKEJ1ZmZlckludGVybmFsKQotICAgICAgICBzZWxmU2l6ZSArPSBtX2xlbmd0aCAqIChtX2hh
c2hBbmRGbGFncyAmIHNfaGFzaEZsYWc4Qml0QnVmZmVyID8gc2l6ZW9mKExDaGFyKSA6IHNpemVv
ZihVQ2hhcikpOwotCi0gICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgMCwgc2VsZlNpemUpOwotCi0gICAgaWYgKG1faGFzaEFuZEZsYWdzICYgQnVmZmVyU3Vi
c3RyaW5nKQotICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3N1YnN0cmluZ0J1ZmZlcik7Ci0gICAg
ZWxzZSBpZiAobV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSGFzMTZCaXRTaGFkb3cpIC8vIFN1
YnN0cmluZyBuZXZlciBoYXMgaXRzIG93biBzaGFkb3cuCi0gICAgICAgIGluZm8uYWRkUmF3QnVm
ZmVyKG1fY29weURhdGExNiwgKG1fbGVuZ3RoICsgKGhhc1Rlcm1pbmF0aW5nTnVsbENoYXJhY3Rl
cigpID8gMSA6IDApKSAqIHNpemVvZihVQ2hhcikpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggMDBjNjI4NWQyMDcxOTk3ODk2OTA5NTFmMzE2
M2M5NDg4NzY4OTY5MS4uNGRhNjc2NmFjZGVjN2RhZGI3NGVhYTAxYmJhNmE0ZmM4Y2JhOWU2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTQ1Myw2ICs0NTMsOSBAQCBwdWJsaWM6CiAK
ICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIGJv
b2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJp
dEJ1ZmZlcjsgfQorICAgIGJvb2wgaGFzSW50ZXJuYWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBi
dWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJJbnRlcm5hbCAmJiAhaGFzVGVybWluYXRpbmdOdWxs
Q2hhcmFjdGVyKCk7IH0KKyAgICBib29sIGhhc093bmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
YnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyT3duZWQ7IH0KKyAgICBTdHJpbmdJbXBsKiBiYXNl
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3Ry
aW5nID8gbV9zdWJzdHJpbmdCdWZmZXIgOiAwOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIGFs
bCB1bm5lY2Vzc2FyeSB1c2FnZXMgb2YgY2hhcmFjdGVycygpCiAgICAgQUxXQVlTX0lOTElORSBj
b25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IEFTU0VSVChpczhCaXQoKSk7IHJldHVy
biBtX2RhdGE4OyB9CkBAIC03MTYsOCArNzE5LDYgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIFN0cmluZ1N0YXRzJiBzdHJpbmdTdGF0cygpIHsgcmV0dXJuIG1fc3RyaW5nU3Rh
dHM7IH0KICNlbmRpZgogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwotCiBwcml2YXRlOgogICAgIC8vIFRo
aXMgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgMiB0byBhdm9pZCBzaGFyaW5nIGVtcHR5LCBudWxs
IGFzIHdlbGwgYXMgMSBjaGFyYWN0ZXIgc3RyaW5ncyBmcm9tIFNtYWxsU3RyaW5ncy4KICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc19jb3B5Q2hhcnNJbmxpbmVDdXRPZmYgPSAyMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBmODlkOGRhMzVkYjQ4YmIyNWViODQxNjMzOGY0N2Q5
MzdjYjg5NGYzLi45MTBjZTc0MTQxYmQ3YjkxMGQ3NzE5ZTRhZjUyZThhMWUwNGFiMDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC04MzUsMTIgKzgzNSw2IEBAIFN0cmluZyBTdHJp
bmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGNvbnN0IExDaGFyKiBzdHJpbmcsIHNpemVf
dCBzaXplKQogICAgIHJldHVybiB1dGY4OwogfQogCi12b2lkIFN0cmluZzo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKLXsKLSAgICBN
ZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzKTsKLSAgICBpbmZvLmFk
ZE1lbWJlcihtX2ltcGwpOwotfQotCiAvLyBTdHJpbmcgT3BlcmF0aW9ucwogCiBzdGF0aWMgYm9v
bCBpc0NoYXJhY3RlckFsbG93ZWRJbkJhc2UoVUNoYXIgYywgaW50IGJhc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaAppbmRleCAwYTIxYjY5OTVhZjE3NGVhZDE0ZTRkYjliMDNhYmNkYWY3MjQ1MmU0
Li5iZjI3ZjE3MjkwZjk3NTZmZjQ2OTUxMmFlMjBiZGJmZTYyZWQxODMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKQEAgLTQ1Nyw4ICs0NTcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAo
Km1faW1wbClbaW5kZXhdOwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKLQogcHJpdmF0ZToK
ICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IGE5OTgxMWI4NGIzZTky
MGJiZGM2ZDA3ZDM1MGUxYWZlNWIyY2ZjYjMuLmMzMTc5OWJhYTVmNzE3YTUyZTI1ODBiNTI1Mjg5
ZjRlMTVlNmI5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJDb3JlTWVtb3J5
SW5zdHJ1bWVudGF0aW9uX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKaW5kZXggYzNkNTA5
OWYzYWNiOWRmZDdhZTRiMmQ0ZTQ1YmNiNDAzMzJhMmZmMC4uMGQyYTZkOGIzNmJhNDFkMzg5MmVl
YjU4MWU0MzBlNTI2NTI3M2FiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
S1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpZiAhVVNFKFdURlVSTCkKICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAj
ZW5kaWYKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkxHb29nbGUuY3BwCmluZGV4IDZmODE0MjY3MmFkODE3NTk2Njc4ZWRmNmM5ZDZiZjFkMGRh
MjgwMjEuLmM5MjY2ZWU2N2YyMjI0NTc4YjIzMTA4Y2FhOWNjNDQzY2QwZjk5YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oCmluZGV4IDIyYjkwOTc0ZDRkY2I2NDRhY2IyYmE0NTY4ZDNhNDYzZWQ3N2M5NTEuLjQ2
YTg0YmJkODc1YjdmYzY1MGNmMDU2OTI4MmI0Y2UyMGE0MGVlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaApA
QCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbl9o
CiAKICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg+CisjaW5jbHVkZSA8d3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvblN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01lbW9yeUluc3Ry
dW1lbnRhdGlvblRlc3QuY3BwCmluZGV4IGQ0YjI1YTdjM2I5OGI3MTVkNDNjYjM3NTEwYTEzMDAw
NzAyMzIxZjYuLjUyNjRkNTE1NWE3Yjg4ZDQyYmM5Yjk5YWYyZGM3MDlhMDYyNjdiMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9NZW1vcnlJbnN0cnVt
ZW50YXRpb25UZXN0LmNwcApAQCAtNDIsMTEgKzQyLDEzIEBACiAjaW5jbHVkZSA8d3RmL01lbW9y
eUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJ
bnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRh
dGlvbkhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjc4LDEyICsyODAsNTcgQEAgcHVibGljOgogCiBU
RVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHZpc2l0U3RyaW5ncykKIHsKLSAgICB7Cisg
ICAgeyAvLyA4LWJpdCBzdHJpbmcuCisgICAgICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIg
aGVscGVyOworICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+IHN0cmluZ0luc3RydW1l
bnRlZE93bmVyKCJTdHJpbmciKTsKKyAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qoc3RyaW5n
SW5zdHJ1bWVudGVkT3duZXIpOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwp
ICsgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5sZW5ndGgoKSwgaGVscGVyLnJlcG9y
dGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMSwgaGVscGVyLnZpc2l0
ZWRPYmplY3RzKCkpOworICAgIH0KKworICAgIHsgLy8gOC1iaXQgc3RyaW5nIHdpdGggMTZiaXQg
c2hhZG93LgogICAgICAgICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKICAgICAg
ICAgSW5zdHJ1bWVudGVkT3duZXI8U3RyaW5nPiBzdHJpbmdJbnN0cnVtZW50ZWRPd25lcigiU3Ry
aW5nIik7Ci0gICAgICAgIHN0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUuY2hhcmFjdGVy
cygpOyAvLyBGb3JjZSAxNmJpdCBzaGFkb3cgY3JlYXRpb24uCisgICAgICAgIHN0cmluZ0luc3Ry
dW1lbnRlZE93bmVyLm1fdmFsdWUuY2hhcmFjdGVycygpOworICAgICAgICBoZWxwZXIuYWRkUm9v
dE9iamVjdChzdHJpbmdJbnN0cnVtZW50ZWRPd25lcik7CisgICAgICAgIEVYUEVDVF9FUShzaXpl
b2YoU3RyaW5nSW1wbCkgKyBzdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0aCgp
ICogMywgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMiwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworICAgIH0KKworICAgIHsgLy8gMTYgYml0
IHN0cmluZy4KKyAgICAgICAgSW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7CisgICAg
ICAgIFN0cmluZyBzdHJpbmcoIlN0cmluZyIpOworICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxT
dHJpbmc+IHN0cmluZ0luc3RydW1lbnRlZE93bmVyKFN0cmluZyhzdHJpbmcuY2hhcmFjdGVycygp
LCBzdHJpbmcubGVuZ3RoKCkpKTsKICAgICAgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qoc3RyaW5n
SW5zdHJ1bWVudGVkT3duZXIpOwogICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ0ltcGwp
ICsgc3RyaW5nSW5zdHJ1bWVudGVkT3duZXIubV92YWx1ZS5sZW5ndGgoKSAqIDIsIGhlbHBlci5y
ZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDEsIGhlbHBlci52
aXNpdGVkT2JqZWN0cygpKTsKKyAgICB9CisKKyAgICB7IC8vIEFTQ0lJTGl0ZXJhbAorICAgICAg
ICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKyAgICAgICAgQVNDSUlMaXRlcmFs
IGxpdGVyYWwoIlN0cmluZyIpOworICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+IHN0
cmluZ0luc3RydW1lbnRlZE93bmVyKGxpdGVyYWwpOworICAgICAgICBoZWxwZXIuYWRkUm9vdE9i
amVjdChzdHJpbmdJbnN0cnVtZW50ZWRPd25lcik7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2Yo
U3RyaW5nSW1wbCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDEsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKKyAgICB9CisKKyAgICB7IC8v
IFN1YnN0cmluZworICAgICAgICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKyAg
ICAgICAgU3RyaW5nIGJhc2VTdHJpbmcoIlN0cmluZyIpOworICAgICAgICBiYXNlU3RyaW5nLmNo
YXJhY3RlcnMoKTsgLy8gRm9yY2UgMTYgc2hhZG93IGNyZWF0aW9uLgorICAgICAgICBJbnN0cnVt
ZW50ZWRPd25lcjxTdHJpbmc+IHN0cmluZ0luc3RydW1lbnRlZE93bmVyKGJhc2VTdHJpbmcuc3Vi
c3RyaW5nU2hhcmluZ0ltcGwoMSwgNCkpOworICAgICAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChz
dHJpbmdJbnN0cnVtZW50ZWRPd25lcik7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5n
SW1wbCkgKiAyICsgYmFzZVN0cmluZy5sZW5ndGgoKSAqIDMsIGhlbHBlci5yZXBvcnRlZFNpemVG
b3JBbGxUeXBlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDMsIGhlbHBlci52aXNpdGVkT2JqZWN0
cygpKTsKKyAgICB9CisKKyAgICB7IC8vIE93bmVkIGJ1ZmZlci4KKyAgICAgICAgSW5zdHJ1bWVu
dGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7CisgICAgICAgIFN0cmluZ0J1ZmZlcjxMQ2hhcj4gYnVm
ZmVyKDYpOworICAgICAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmc+IHN0cmluZ0luc3RydW1l
bnRlZE93bmVyKFN0cmluZzo6YWRvcHQoYnVmZmVyKSk7CisgICAgICAgIGhlbHBlci5hZGRSb290
T2JqZWN0KHN0cmluZ0luc3RydW1lbnRlZE93bmVyKTsKKyAgICAgICAgRVhQRUNUX0VRKHNpemVv
ZihTdHJpbmdJbXBsKSArIHN0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVuZ3RoKCks
IGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDIs
IGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKICAgICB9CiAKQEAgLTI5Miw3ICszMzksNyBAQCBU
RVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIHZpc2l0U3RyaW5ncykKICAgICAgICAgSW5z
dHJ1bWVudGVkT3duZXI8QXRvbWljU3RyaW5nPiBhdG9taWNTdHJpbmdJbnN0cnVtZW50ZWRPd25l
cigiQXRvbWljU3RyaW5nIik7CiAgICAgICAgIGF0b21pY1N0cmluZ0luc3RydW1lbnRlZE93bmVy
Lm1fdmFsdWUuc3RyaW5nKCkuY2hhcmFjdGVycygpOyAvLyBGb3JjZSAxNmJpdCBzaGFkb3cgY3Jl
YXRpb24uCiAgICAgICAgIGhlbHBlci5hZGRSb290T2JqZWN0KGF0b21pY1N0cmluZ0luc3RydW1l
bnRlZE93bmVyKTsKLSAgICAgICAgRVhQRUNUX0VRKHNpemVvZihTdHJpbmdJbXBsKSArIGF0b21p
Y1N0cmluZ0luc3RydW1lbnRlZE93bmVyLm1fdmFsdWUubGVuZ3RoKCkgKiAyLCBoZWxwZXIucmVw
b3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5n
SW1wbCkgKyBhdG9taWNTdHJpbmdJbnN0cnVtZW50ZWRPd25lci5tX3ZhbHVlLmxlbmd0aCgpICog
MywgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
MiwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogICAgIH0KIApAQCAtNDUyLDcgKzQ5OSw3IEBA
IFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgdmVjdG9yV2l0aEluc3RydW1lbnRlZFR5
cGUpCiAgICAgICAgIHZhbHVlLT5hcHBlbmQoInN0cmluZyIpOwogICAgIEluc3RydW1lbnRlZE93
bmVyPFN0cmluZ1ZlY3RvciogPiByb290KHZhbHVlLmdldCgpKTsKICAgICBoZWxwZXIuYWRkUm9v
dE9iamVjdChyb290KTsKLSAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ1ZlY3RvcikgKyBzaXpl
b2YoU3RyaW5nKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsgc2l6ZW9mKFN0cmluZ0ltcGwpICogdmFs
dWUtPnNpemUoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgIEVYUEVD
VF9FUShzaXplb2YoU3RyaW5nVmVjdG9yKSArIHNpemVvZihTdHJpbmcpICogdmFsdWUtPmNhcGFj
aXR5KCkgKyAoc2l6ZW9mKFN0cmluZ0ltcGwpICsgNikgKiB2YWx1ZS0+c2l6ZSgpLCBoZWxwZXIu
cmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CiAgICAgRVhQRUNUX0VRKGNvdW50ICsgMiwgKHNp
emVfdCloZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CiB9CiAKQEAgLTQ2Nyw3ICs1MTQsNyBAQCBU
RVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIGhhc2hTZXRXaXRoSW5zdHJ1bWVudGVkVHlw
ZSkKICAgICAgICAgdmFsdWUtPmFkZChTdHJpbmc6Om51bWJlcihpKSk7CiAgICAgSW5zdHJ1bWVu
dGVkT3duZXI8VmFsdWVUeXBlKiA+IHJvb3QodmFsdWUuZ2V0KCkpOwogICAgIGhlbHBlci5hZGRS
b290T2JqZWN0KHJvb3QpOwotICAgIEVYUEVDVF9FUShzaXplb2YoVmFsdWVUeXBlKSArIHNpemVv
ZihTdHJpbmcpICogdmFsdWUtPmNhcGFjaXR5KCkgKyBzaXplb2YoU3RyaW5nSW1wbCkgKiB2YWx1
ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgRVhQRUNU
X0VRKHNpemVvZihWYWx1ZVR5cGUpICsgc2l6ZW9mKFN0cmluZykgKiB2YWx1ZS0+Y2FwYWNpdHko
KSArIChzaXplb2YoU3RyaW5nSW1wbCkgKyAxKSAqIHZhbHVlLT5zaXplKCksIGhlbHBlci5yZXBv
cnRlZFNpemVGb3JBbGxUeXBlcygpKTsKICAgICBFWFBFQ1RfRVEoY291bnQgKyAxLCAoc2l6ZV90
KWhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKIH0KIAo=
</data>
<flag name="review"
          id="178834"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>