<?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>95271</bug_id>
          
          <creation_ts>2012-08-28 17:54:06 -0700</creation_ts>
          <short_desc>Replace JSC::UString by WTF::String</short_desc>
          <delta_ts>2012-08-30 14:23:37 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>hausmann</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706936</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 17:54:06 -0700</bug_when>
    <thetext>JSC is gonna be sweeeeeet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706962</commentid>
    <comment_count>1</comment_count>
      <attachid>161108</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 18:20:17 -0700</bug_when>
    <thetext>Created attachment 161108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706967</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 18:21:43 -0700</bug_when>
    <thetext>The EFL EWS is gonna fail, there is nothing I can do about it with the patch. The bot does not regenerate the bindings and it fails to build because the old generated files reference UString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706996</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-28 19:18:03 -0700</bug_when>
    <thetext>Please test SunSpider before landing. It&apos;s heavy in the string library functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707000</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 19:22:48 -0700</bug_when>
    <thetext>Thanks for the review, I was not expecting one tonight! :)

(In reply to comment #3)
&gt; Please test SunSpider before landing. It&apos;s heavy in the string library functions.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707027</commentid>
    <comment_count>5</comment_count>
      <attachid>161108</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-28 19:39:26 -0700</bug_when>
    <thetext>Comment on attachment 161108
Patch

Attachment 161108 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13683016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707128</commentid>
    <comment_count>6</comment_count>
      <attachid>161108</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-28 23:27:01 -0700</bug_when>
    <thetext>Comment on attachment 161108
Patch

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

&gt; Source/WebCore/bindings/js/JSIntentConstructor.cpp:68
&gt; +    const String type(MAYBE_MISSING_PARAMETER(exec, 1, DefaultIsUndefined).isEmpty() ? String() : MAYBE_MISSING_PARAMETER(exec, 1, DefaultIsUndefined).toWTFString(exec)));

It looks unneeded &quot;)&quot; is added at the end of line. When I remove &quot;)&quot;, EFL build is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707152</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-28 23:56:52 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/bindings/js/JSIntentConstructor.cpp:68
&gt; &gt; +    const String type(MAYBE_MISSING_PARAMETER(exec, 1, DefaultIsUndefined).isEmpty() ? String() : MAYBE_MISSING_PARAMETER(exec, 1, DefaultIsUndefined).toWTFString(exec)));
&gt; 
&gt; It looks unneeded &quot;)&quot; is added at the end of line. When I remove &quot;)&quot;, EFL build is fine.

Thanks for looking! I&apos;ll make an update tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708279</commentid>
    <comment_count>8</comment_count>
      <attachid>161396</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-29 21:30:09 -0700</bug_when>
    <thetext>Created attachment 161396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708284</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-29 21:36:19 -0700</bug_when>
    <thetext>Changes since last patch:
-Added getCharactersWithUpconvert&lt;&gt;() because the behavior of UString::getCharacters&lt;&gt;() was slightly different and we need the other behavior for StringPrototype.
-Added back WebCore::jsString, renamed it to jsStringWithCache so it is easier to differentiate when to use which function.

I haven&apos;t measured any difference on Sunspider with this version. Gavin gave me some tricks to perform more perf testing, I&apos;ll try that before landing.

The WebCore binary got even smaller with the changes and I have no clue why.

The EFL bot is covered, the GTK bot will be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708313</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-29 22:31:49 -0700</bug_when>
    <thetext>Totally awesome stuff :)

(In reply to comment #9)
&gt; The WebCore binary got even smaller with the changes and I have no clue why.

Perhaps it is the reduced number of entries in the PLT that contributes to the reduction in size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708330</commentid>
    <comment_count>11</comment_count>
      <attachid>161396</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-29 22:57:56 -0700</bug_when>
    <thetext>Comment on attachment 161396
Patch

Attachment 161396 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13694551</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708331</commentid>
    <comment_count>12</comment_count>
      <attachid>161396</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-08-29 22:58:34 -0700</bug_when>
    <thetext>Comment on attachment 161396
Patch

Attachment 161396 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13681556</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708332</commentid>
    <comment_count>13</comment_count>
      <attachid>161396</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-29 23:03:41 -0700</bug_when>
    <thetext>Comment on attachment 161396
Patch

Attachment 161396 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13683609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708360</commentid>
    <comment_count>14</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-08-30 00:16:27 -0700</bug_when>
    <thetext>I&apos;m looking into the GTK build failures and will hopefully produce a fix soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708365</commentid>
    <comment_count>15</comment_count>
      <attachid>161411</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-08-30 00:32:37 -0700</bug_when>
    <thetext>Created attachment 161411
Patch for GTK build fix

The symbols.filter file just needs an update for the jsStringWithCacheSlowCase symbol. With that the build should be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708397</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-30 01:01:18 -0700</bug_when>
    <thetext>&gt; The symbols.filter file just needs an update for the jsStringWithCacheSlowCase symbol. With that the build should be fixed.

Aw snap. Thanks for the patch. I&apos;ll make an update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708401</commentid>
    <comment_count>17</comment_count>
      <attachid>161423</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-30 01:07:42 -0700</bug_when>
    <thetext>Created attachment 161423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708403</commentid>
    <comment_count>18</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-30 01:15:57 -0700</bug_when>
    <thetext>&gt; Totally awesome stuff :)

Glad you like it :)

&gt; Perhaps it is the reduced number of entries in the PLT that contributes to the reduction in size.

Maybe. I don&apos;t think I removed symbols between the two patches but I could have forgot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708445</commentid>
    <comment_count>19</comment_count>
      <attachid>161423</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-30 02:30:36 -0700</bug_when>
    <thetext>Comment on attachment 161423
Patch

Attachment 161423 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13693649</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708452</commentid>
    <comment_count>20</comment_count>
      <attachid>161423</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-30 02:40:37 -0700</bug_when>
    <thetext>Comment on attachment 161423
Patch

Attachment 161423 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13694610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708708</commentid>
    <comment_count>21</comment_count>
      <attachid>161492</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-30 09:29:43 -0700</bug_when>
    <thetext>Created attachment 161492
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708842</commentid>
    <comment_count>22</comment_count>
      <attachid>161492</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-30 11:03:39 -0700</bug_when>
    <thetext>Comment on attachment 161492
Patch

Attachment 161492 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13691771</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708846</commentid>
    <comment_count>23</comment_count>
      <attachid>161492</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-30 11:10:29 -0700</bug_when>
    <thetext>Comment on attachment 161492
Patch

Attachment 161492 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13695756</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708918</commentid>
    <comment_count>24</comment_count>
      <attachid>161492</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-30 12:47:51 -0700</bug_when>
    <thetext>Comment on attachment 161492
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708925</commentid>
    <comment_count>25</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-30 12:52:27 -0700</bug_when>
    <thetext>Benjamin,

May I have 10 minutes just to try the patch locally here on EFL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708946</commentid>
    <comment_count>26</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-30 13:16:03 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Benjamin,
&gt; 
&gt; May I have 10 minutes just to try the patch locally here on EFL?

It is indeed failing, I tried a clean build. Need a couple more minutes to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708974</commentid>
    <comment_count>27</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-08-30 13:36:08 -0700</bug_when>
    <thetext>This patch is good to go on EFL after the change bellow (but looks unrelated to the error reported by the bot). Please apply the change and ignore any further EFL EWS errors on this patch:

diff --git a/Source/WebCore/bindings/js/Dictionary.cpp b/Source/WebCore/bindings/js/Dictionary.cpp
index a16b5b9..e126b95 100644
--- a/Source/WebCore/bindings/js/Dictionary.cpp
+++ b/Source/WebCore/bindings/js/Dictionary.cpp
@@ -90,7 +90,7 @@ bool Dictionary::getOwnPropertyNames(WTF::Vector&lt;String&gt;&amp; names) const
     PropertyNameArray propertyNames(exec);
     JSObject::getOwnPropertyNames(object, exec, propertyNames, ExcludeDontEnumProperties);
     for (PropertyNameArray::const_iterator it = propertyNames.begin(); it != propertyNames.end(); it++) {
-        String stringKey = ustringToString(it-&gt;ustring());
+        const String&amp; stringKey = it-&gt;ustring();
         if (!stringKey.isEmpty())
             names.append(stringKey);
     }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709030</commentid>
    <comment_count>28</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-30 14:23:37 -0700</bug_when>
    <thetext>Committed r127191: &lt;http://trac.webkit.org/changeset/127191&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161108</attachid>
            <date>2012-08-28 18:20:17 -0700</date>
            <delta_ts>2012-08-29 21:30:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95271-20120828182007.patch</filename>
            <type>text/plain</type>
            <size>519067</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODU5NTBiMDRiZTMwNGZiOTg5ZmMwYmNlZmE5YmE1OGFkYjViYTE3Li5mMDQ1MWVlMTc4ZGM3Y2E0
ZjQzMDc0YjJkYjlkZmY0ZGVmZDU2YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxMi0wOC0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgSlNDOjpV
U3RyaW5nIGFuZCBXVEY6OlN0cmluZyBpbmNyZWFzZSB0aGUgY29tcGxleGl0eSBvZiB3b3JraW5n
IG9uIFdlYktpdCwgYW5kCisgICAgICAgIGFkZCB1c2VsZXNzIGNvbnZlcnNpb25zIGluIHRoZSBi
aW5kaW5ncy4gSXQgYWxzbyBjYXVzZSBzb21lIGNvZGUgYmxvYXQuCisKKyAgICAgICAgVGhlIHBl
cmZvcm1hbmNlIGFkdmFudGFnZXMgb2YgVVN0cmluZyBoYXZlIGJlZW4gcG9ydGVkIG92ZXIgaW4g
cHJldmlvdXMgcGF0Y2hlcy4gVGhpcyBwYXRjaAorICAgICAgICBpcyB0aGUgbGFzdCBzdGVwOiBn
ZXR0aW5nIHJpZCBvZiBVU3RyaW5nLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzaW1w
bGlmaWVkIGNvZGUsIHRoaXMgYWxzbyByZWR1Y2UgdGhlIGJpbmFyeSBzaXplIGJ5IDE1a2Igb24g
eDg2XzY0LgorCisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9w
YXF1ZUpTU3RyaW5nOjp1c3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6dXN0cmluZyk6CisgICAgICAgIFRvIGF2b2lkIGNo
YW5naW5nIGV2ZXJ5dGhpbmcgYXQgb25jZSwgdGhlIGZ1bmN0aW9uIG5hbWVkIHVzdHJpbmcoKSB3
ZXJlIGtlcHQgYXMgaXMuIFRoZXkKKyAgICAgICAgd2lsbCBiZSByZW5hbWVkIGluIGEgZm9sbG93
IHVwIHBhdGNoLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmcp
OgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgIFNpbmNlIEpTVmFs
dWU6OnRvU3RyaW5nKCkgYWxyZWFkeSBleGlzdCAoYW5kIHJldHVybiB0aGUgSlNTdHJpbmcpLCB0
aGUgZGlyZWN0IGFjY2Vzc29yIGlzIHJlbmFtZWQKKyAgICAgICAgdG8gOjp0b1dURlN0cmluZygp
LiBXZSBtYXkgY2hhbmdlIDo6c3RyaW5nKCkgdG8gOjpqc1N0cmluZygpIGFuZCA6OnRvV1RGU3Ry
aW5nKCkgdG8gOjp0b1N0cmluZygpCisgICAgICAgIGluIHRoZSBmdXR1cmUuCisKIDIwMTItMDgt
MjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjYzcxZGRjMTQ3Y2ZjNzhh
NThmMzA1ZTFmYzMyNTExOTc4N2MyMDcuLjI5MTIzOGU3MDhlOWQ1YTk3Yjk4YmM0MDU0Mzk4OTk0
NTdlZDhiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMjggIEJlbmphbWluIFBvdWxh
aW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcg
YnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDogVXNlbGVzcyBlZGl0IHRvIGZvcmNlIGEgZnVsbCBidWls
ZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHNvbWUgYm90cyBmb3Igc29tZSByZWFzb24uCisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6IEV4cG9ydCBhIHN5bWJvbCB0aGF0IHdhcyBleHBvcnRl
ZCBvbiBVU3RyaW5nIGFuZCBuZWVkZWQgaW4gV2ViQ29yZS4KKwogMjAxMi0wOC0yOCAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyNjkxNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NmZjMmM2MDAyMzdmNDllN2Vl
NjVjNzMwYWExZWU5MWZhZTQxMTllLi5lMDY4ZmE1MDI0NGI2MGZmMzczYWY3OWY2MDZmZGVhMjBi
YTZjZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDgtMjggIEJlbmphbWlu
IFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVT
dHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHRoZSBjb2RlIHRvIHVzZSBTdHJpbmcgaW5zdGVhZCBvZiBVU3Ry
aW5nLgorCisgICAgICAgIE9uIHg4Nl82NCwgdGhpcyByZWR1Y2VzIHRoZSBiaW5hcnkgc2l6ZSBi
eSAxOGtiLgorCiAyMDEyLTA4LTI3ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2Jl
LmNvbT4KIAogICAgICAgICBbQ1NTIEZpbHRlcnNdIEZpbHRlcnMgc2hvdWxkIHJlbmRlciB1c2lu
ZyBzUkdCIHVudGlsIHRoZSBzcGVjaWZpY2F0aW9uIHNheXMgaG93IGl0IHdvcmtzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCA5MjIxYzI4YmRiMGM4OWM0ZmQ0N2JiYzIwZmU0NDA3
NTdhZTBjMjdlLi43YmVhNjYwM2NiMmNkMDk3OGE0NTFmOTVlMTFmZDEzZWEzM2Y0MTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0yOCAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNl
IEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIFVTdHJpbmcgYnkgU3RyaW5nLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VQ
b3B1cEJsYWNrQmVycnk6Omluc3RhbGxEb21GdW5jdGlvbik6CisKIDIwMTItMDgtMjggIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNTlkZjRhZTZjYjhi
MjExYzE5NDEyNTE1YzU3YjEyODAzMjExNGVlNy4uM2NiYzRlZWIzOTc5NDdjZGEwZDRkNDE0MDFk
YWI2NjRiYzY2YjRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA4
LTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
cGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgVVN0cmluZyBieSBTdHJpbmcuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZW5kV2ViSW50ZW50UmVzcG9uc2UpOgor
ICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3NjcmlwdF9l
eGVjdXRlKToKKwogMjAxMi0wOC0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjkxNC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCA4NGQ4MzEzMWEyY2RhNjBiZGE5ZDBhMzliN2I3ZGZiMWJhZWZjODM3
Li45ZWQ3NzZhMDA0N2ExMDkzYTllZTEzYThlMmJiMjY5YjI3MGM2NmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMjggIEJlbmphbWluIFBvdWxhaW4gIDxicG91
bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpT
dHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAgICAqIGdkb20vQ29udmVydFRvR0NoYXJQ
cml2YXRlLmg6CisgICAgICAgIChjb3B5QXNHY2hhcik6CisKIDIwMTItMDgtMjggIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMjY5MTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggN2QxOTIzNDNmZWYyY2M3
N2EzYjI2ZTg5N2Y0YjFiNjMxYzQ4NjQ3My4uNDg1NWUxZjY2NmZhMDM3MGJjZjAzM2I4NmFiYzE4
NGVjMTc3N2IyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTI4
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxh
Y2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdldCByaWQgb2YgVVN0cmluZywgcmVwbGFjZSBpdCBieSBT
dHJpbmcsIGFuZCBzaW1wbGlmeSB0aGUgY29kZSB3aGVuIHBvc3NpYmxlLgorCisgICAgICAgIE9u
IHg4Nl82NCwgdGhpcyByZWR1Y2VzIHRoZSBiaW5hcnkgc2l6ZSBieSA3a2IuCisKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAgKGlk
ZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmFkZFZhbHVlVG9BcnJheSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRl
KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAo
V2ViS2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBy
b3h5UnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQcm94
eUluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0
YW5jZTo6bWV0aG9kc05hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6Zmll
bGROYW1lZCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOmZvcmNlVXNlckdl
c3R1cmU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0RnJvbVN0cmluZzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0V29ybGQ6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJTY3Jp
cHRDYWxsRnJhbWUgZnVuY3Rpb25OYW1lXSk6CisgICAgICAgICgtW1dlYlNjcmlwdENhbGxGcmFt
ZSBldmFsdWF0ZVdlYlNjcmlwdDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFdlYlNjcmlw
dERlYnVnZ2VyKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAg
ICAgICAodG9OU1VSTCk6CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2Vk
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChhZURlc2NGcm9tSlNW
YWx1ZSk6CisKIDIwMTItMDgtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCmluZGV4IGI0MTIyYzg4MzI0MmEwNWQ5Y2ExNTNhYzE0ZDk4NDNiYjNkNDJmYzcuLmVm
YTAyZjQ4NDU1ZjRmYjVjZWU2YzRlODczZDNmZjYwMDQ2N2VhZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMjggIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBV
U3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAg
ICAgIChRV2ViRWxlbWVudDo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKwogMjAxMi0wOC0yOCAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyNjkxNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBkMmY1MGE4NDM2
YjY3N2Q1NGE2MzE1Njk5NDJjODRlNmVmZTc0OGExLi41ZTczYmJhNmY3YzY0MWRmYTE5NTM2NWQ0
Y2NiOWY4ZDUyZGZmZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTIt
MDgtMjggIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KKwor
ICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZCk6CisgICAgICAgICogV2ViVmlldy5jcHA6Cisg
ICAgICAgIChXZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZyk6
CisKIDIwMTItMDgtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjY5MTQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9n
CmluZGV4IDE5NTJiYmJmMDEzOWJlNGRiZWVlMjJhYzJkY2ZlY2VlNTQwODg5NjguLjA4MmZhZWY2
NDU0YTQwNGI2ZGVjYjg5ZmM4MzdhM2RhNjQ4MmM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDgtMjggIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSAjaW5j
bHVkZXMgdG8gdXNlIHRoZSBjb3JyZWN0IHR5cGVzLgorCisgICAgICAgICogV2ViRnJhbWUuY3Bw
OgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDEyLTA4LTEzICBUb20gU2VwZXogIDx0c2Vw
ZXpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gcmVsZWFzZSBGcmFtZUxvYWRl
ckNsaWVudEltcGw6Om1fcGx1Z2luV2lkZ2V0IHJlZnB0ciB1cG9uIFBsdWdpbiBEb2N1bWVudCBk
ZXRhY2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmY1ZWU3MmU2ZjJmOGEwMGY0MTQyMWY3YjNjNjU1OWQzMmRj
YzUxOC4uZTgwY2NhMzBmZGFmMTRlYTQ3MGY1ODljMTRjOTA4YmM1NzEzNDgwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA4LTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3Ry
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSB0byBjb2RlIHRvIHN3aXRjaCBmcm9tIFVTdHJpbmcgdG8gU3RyaW5nLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpKU05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhv
ZDo6Y3JlYXRlKToKKyAgICAgICAgKEpTTlBNZXRob2QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bnBJZGVu
dGlmaWVyRnJvbUlkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVP
YmplY3RNYXA6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFw
Ojptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorCiAyMDEyLTA4LTI4ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTI2OTE0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDU5ZGUxODZiMGFiYTdkMTE1MmVhZWIxOTE0M2My
OTBlOTk1ZWIwZTcuLjBmNjNkM2MxNjY5Y2YyZmQwOTRhZTI5MjBjNGRiY2VlZTllZmNiY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAK
QEAgLTQ5LDcgKzQ5LDcgQEAgSlNDYWxsYmFja0Z1bmN0aW9uOjpKU0NhbGxiYWNrRnVuY3Rpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWwKIHsKIH0KIAotdm9pZCBK
U0NhbGxiYWNrRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKK3ZvaWQgSlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja0Z1bmN0aW9uLmgKaW5kZXggNDBiZWY4YzQ4NzI0Yzk0MmM0YjMzOWFjYmVlYzQzMjFjNWFk
ZDg0MS4uNTA2MzBiNTUwM2U1ZTRlMjI2YjRjYzVkZTAwOTQ4Mjg1MDg5YmU1MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC0zNCwxMiAr
MzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0NhbGxiYWNrRnVuY3Rpb24gOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwcm90ZWN0ZWQ6CiAgICAgSlNDYWxsYmFja0Z1bmN0aW9u
KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrKTsKLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIG5hbWUpOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAg
c3RhdGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNh
bGxiYWNrLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHsKICAgICAgICAgSlNDYWxsYmFja0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkp
IEpTQ2FsbGJhY2tGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxiYWNrKTsKICAgICAgICAgZnVu
Y3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDJjM2UwZTg1OWYx
NmU4OTU4MWEyZmEzNTZiODQ5MmYyMDM3OTIwN2QuLjM2ZDdmYTljMjU2MGRlMDc1NzA5ZjYxOTI0
YmJlNmIyNTk4YmMxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCkBAIC0xNzEsNyArMTcxLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJy
aWRlc0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBQYXJlbnQ6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgotICAgIHN0
YXRpYyBVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOworICAgIHN0YXRpYyBTdHJp
bmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDE2MGY0ODg4N2I4NzJjMjliYzNlMmFkYmVkYzkx
ZWZhZmNkNGQ5MzkuLjgzMjZjMDU3OWFhMDcxYzM3NTczN2VmNjQyN2NlMzFkN2FjNjAxNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCkBAIC0xMTEsMTAgKzExMSwxMCBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6aW5pdChFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+
Ci1VU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2xhc3NOYW1lKGNvbnN0IEpTT2Jq
ZWN0KiBvYmplY3QpCitTdHJpbmcgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjbGFzc05hbWUo
Y29uc3QgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBjb25zdCBKU0NhbGxiYWNrT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwotICAg
IFVTdHJpbmcgdGhpc0NsYXNzTmFtZSA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCktPmNsYXNzTmFt
ZSgpOworICAgIFN0cmluZyB0aGlzQ2xhc3NOYW1lID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKS0+
Y2xhc3NOYW1lKCk7CiAgICAgaWYgKCF0aGlzQ2xhc3NOYW1lLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIHRoaXNDbGFzc05hbWU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Ns
YXNzUmVmLmNwcAppbmRleCAxMzQ0MzE2NTQ3ODkxNWY4YTEzYTRkYmQzODA0NDFlZDI0YmM0ZDJk
Li5hOTVkNDJlMzllZDEzMzkyNzI5NjkxZTE5MDMwMjg2MTc2NjBlMzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTQyLDIwICs0Miw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKIGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uIGtKU0NsYXNz
RGVmaW5pdGlvbkVtcHR5ID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwIH07CiAKLXN0YXRpYyBpbmxpbmUgVVN0cmluZyB0cnlDcmVhdGVTdHJpbmdG
cm9tVVRGOChjb25zdCBjaGFyKiBzdHJpbmcpCi17Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAg
IHJldHVybiBVU3RyaW5nKCk7Ci0KLSAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7
Ci0gICAgVmVjdG9yPFVDaGFyLCAxMDI0PiBidWZmZXIobGVuZ3RoKTsKLSAgICBVQ2hhciogcCA9
IGJ1ZmZlci5kYXRhKCk7Ci0gICAgaWYgKGNvbnZlcnNpb25PSyAhPSBjb252ZXJ0VVRGOFRvVVRG
MTYoJnN0cmluZywgc3RyaW5nICsgbGVuZ3RoLCAmcCwgcCArIGxlbmd0aCkpCi0gICAgICAgIHJl
dHVybiBVU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gVVN0cmluZyhidWZmZXIuZGF0YSgpLCBwIC0g
YnVmZmVyLmRhdGEoKSk7Ci19Ci0KIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1ZUpTQ2xhc3MoY29uc3Qg
SlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xhc3MqIHByb3RvQ2xhc3Mp
IAogICAgIDogcGFyZW50Q2xhc3MoZGVmaW5pdGlvbi0+cGFyZW50Q2xhc3MpCiAgICAgLCBwcm90
b3R5cGVDbGFzcygwKQpAQCAtNzAsMTQgKzU2LDE0IEBAIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1ZUpT
Q2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xhc3Mq
CiAgICAgLCBjYWxsQXNDb25zdHJ1Y3RvcihkZWZpbml0aW9uLT5jYWxsQXNDb25zdHJ1Y3RvcikK
ICAgICAsIGhhc0luc3RhbmNlKGRlZmluaXRpb24tPmhhc0luc3RhbmNlKQogICAgICwgY29udmVy
dFRvVHlwZShkZWZpbml0aW9uLT5jb252ZXJ0VG9UeXBlKQotICAgICwgbV9jbGFzc05hbWUodHJ5
Q3JlYXRlU3RyaW5nRnJvbVVURjgoZGVmaW5pdGlvbi0+Y2xhc3NOYW1lKSkKKyAgICAsIG1fY2xh
c3NOYW1lKFN0cmluZzo6ZnJvbVVURjgoZGVmaW5pdGlvbi0+Y2xhc3NOYW1lKSkKIHsKICAgICBp
bml0aWFsaXplVGhyZWFkaW5nKCk7CiAKICAgICBpZiAoY29uc3QgSlNTdGF0aWNWYWx1ZSogc3Rh
dGljVmFsdWUgPSBkZWZpbml0aW9uLT5zdGF0aWNWYWx1ZXMpIHsKICAgICAgICAgbV9zdGF0aWNW
YWx1ZXMgPSBhZG9wdFB0cihuZXcgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKTsKICAg
ICAgICAgd2hpbGUgKHN0YXRpY1ZhbHVlLT5uYW1lKSB7Ci0gICAgICAgICAgICBVU3RyaW5nIHZh
bHVlTmFtZSA9IHRyeUNyZWF0ZVN0cmluZ0Zyb21VVEY4KHN0YXRpY1ZhbHVlLT5uYW1lKTsKKyAg
ICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY1ZhbHVl
LT5uYW1lKTsKICAgICAgICAgICAgIGlmICghdmFsdWVOYW1lLmlzTnVsbCgpKQogICAgICAgICAg
ICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1lLmltcGwoKSwgYWRvcHRQdHIobmV3
IFN0YXRpY1ZhbHVlRW50cnkoc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+
c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzKSkpOwogICAgICAgICAgICAgKytz
dGF0aWNWYWx1ZTsKQEAgLTg3LDcgKzczLDcgQEAgT3BhcXVlSlNDbGFzczo6T3BhcXVlSlNDbGFz
cyhjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFzcyoKICAg
ICBpZiAoY29uc3QgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rpb24gPSBkZWZpbml0aW9u
LT5zdGF0aWNGdW5jdGlvbnMpIHsKICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMgPSBhZG9wdFB0
cihuZXcgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKTsKICAgICAgICAgd2hpbGUg
KHN0YXRpY0Z1bmN0aW9uLT5uYW1lKSB7Ci0gICAgICAgICAgICBVU3RyaW5nIGZ1bmN0aW9uTmFt
ZSA9IHRyeUNyZWF0ZVN0cmluZ0Zyb21VVEY4KHN0YXRpY0Z1bmN0aW9uLT5uYW1lKTsKKyAgICAg
ICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY0Z1bmN0
aW9uLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghZnVuY3Rpb25OYW1lLmlzTnVsbCgpKQogICAg
ICAgICAgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmltcGwoKSwg
YWRvcHRQdHIobmV3IFN0YXRpY0Z1bmN0aW9uRW50cnkoc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1
bmN0aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpKTsKICAgICAgICAgICAgICsrc3Rh
dGljRnVuY3Rpb247CkBAIC0xNzAsMTAgKzE1NiwxMCBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEmIE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gKmNvbnRleHREYXRhOwogfQogCi1VU3RyaW5nIE9wYXF1ZUpTQ2xhc3M6OmNsYXNzTmFtZSgp
CitTdHJpbmcgT3BhcXVlSlNDbGFzczo6Y2xhc3NOYW1lKCkKIHsKICAgICAvLyBNYWtlIGEgZGVl
cCBjb3B5LCBzbyB0aGF0IHRoZSBjYWxsZXIgaGFzIG5vIGNoYW5jZSB0byBwdXQgdGhlIG9yaWdp
bmFsIGludG8gSWRlbnRpZmllclRhYmxlLgotICAgIHJldHVybiBVU3RyaW5nKG1fY2xhc3NOYW1l
LmNoYXJhY3RlcnMoKSwgbV9jbGFzc05hbWUubGVuZ3RoKCkpOworICAgIHJldHVybiBtX2NsYXNz
TmFtZS5pc29sYXRlZENvcHkoKTsKIH0KIAogT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxl
KiBPcGFxdWVKU0NsYXNzOjpzdGF0aWNWYWx1ZXMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCmluZGV4IDgyYzdhYjNmOTcyOWUzZGZkY2Zh
OWRiOWRjN2IxYjhiODA4MTg1YWQuLjQ0ZDVkMTFiOTUyNWVkZTdiMjRkYTM0ZjEwZGNlZTJkMGZm
M2JmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oCkBAIC0zMSw4ICsz
MSw4IEBACiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUHJvdGVjdC5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdHJ1Y3QgU3RhdGljVmFs
dWVFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04OSw3ICs4OSw3IEBA
IHN0cnVjdCBPcGFxdWVKU0NsYXNzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE9wYXF1
ZUpTQ2xhc3M+IHsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU0NsYXNzPiBjcmVhdGVO
b0F1dG9tYXRpY1Byb3RvdHlwZShjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiopOwogICAgIH5PcGFx
dWVKU0NsYXNzKCk7CiAgICAgCi0gICAgSlNDOjpVU3RyaW5nIGNsYXNzTmFtZSgpOworICAgIFN0
cmluZyBjbGFzc05hbWUoKTsKICAgICBPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIHN0
YXRpY1ZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSopOwogICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5j
dGlvbnNUYWJsZSogc3RhdGljRnVuY3Rpb25zKEpTQzo6RXhlY1N0YXRlKik7CiAgICAgSlNDOjpK
U09iamVjdCogcHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xMTgsOCArMTE4LDggQEAg
cHJpdmF0ZToKIAogICAgIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgY29udGV4dERhdGEoSlND
OjpFeGVjU3RhdGUqKTsKIAotICAgIC8vIFVTdHJpbmdzIGluIHRoZXNlIGRhdGEgbWVtYmVycyBz
aG91bGQgbm90IGJlIHB1dCBpbnRvIGFueSBJZGVudGlmaWVyVGFibGUuCi0gICAgSlNDOjpVU3Ry
aW5nIG1fY2xhc3NOYW1lOworICAgIC8vIFN0cmluZ3MgaW4gdGhlc2UgZGF0YSBtZW1iZXJzIHNo
b3VsZCBub3QgYmUgcHV0IGludG8gYW55IElkZW50aWZpZXJUYWJsZS4KKyAgICBTdHJpbmcgbV9j
bGFzc05hbWU7CiAgICAgT3duUHRyPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4gbV9z
dGF0aWNWYWx1ZXM7CiAgICAgT3duUHRyPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJs
ZT4gbV9zdGF0aWNGdW5jdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuY3BwCmluZGV4IDdhNTcyODdkZWQ0ZTAyZDRiMGRjYzQ5OTdkZGE5MDQzMWI2ZGEx
YWIuLmJhZTMxMDEwNWIyNGI2YTJkMWZiNDZlZGYzMjY0ZWFmOWVkMTNjNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJKU0NsYXNzUmVmLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogI2lmIE9TKERBUldJTikKQEAgLTE2Nyw5ICsxNjcsOSBAQCBKU1N0cmluZ1JlZiBKU0Nv
bnRleHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tT
aXplKQogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCiAgICAgdW5zaWduZWQgY291bnQg
PSAwOwotICAgIFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gZXhlYzsKLSAgICBVU3RyaW5nIGZ1bmN0
aW9uTmFtZTsKKyAgICBTdHJpbmcgZnVuY3Rpb25OYW1lOwogICAgIGlmIChleGVjLT5jYWxsZWUo
KSkgewogICAgICAgICBpZiAoYXNPYmplY3QoZXhlYy0+Y2FsbGVlKCkpLT5pbmhlcml0cygmSW50
ZXJuYWxGdW5jdGlvbjo6c19pbmZvKSkgewogICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gYXNJ
bnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+bmFtZShleGVjKTsKQEAgLTE4MywxMCAr
MTgzLDEwIEBAIEpTU3RyaW5nUmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRS
ZWYgY3R4LCB1bnNpZ25lZCBtYXhTdGFja1NpemUpCiAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUp
OwogICAgICAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsKICAgICAgICAgaW50cHRyX3Qgc291cmNl
SUQ7Ci0gICAgICAgIFVTdHJpbmcgdXJsU3RyaW5nOworICAgICAgICBTdHJpbmcgdXJsU3RyaW5n
OwogICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwogICAgICAgICAKLSAgICAgICAgVVN0cmluZyBs
ZXZlbFN0ciA9IFVTdHJpbmc6Om51bWJlcihjb3VudCk7CisgICAgICAgIFN0cmluZyBsZXZlbFN0
ciA9IFN0cmluZzo6bnVtYmVyKGNvdW50KTsKICAgICAgICAgCiAgICAgICAgIGV4ZWMtPmludGVy
cHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihjYWxsRnJhbWUsIHNpZ25lZExpbmVOdW1iZXIs
IHNvdXJjZUlELCB1cmxTdHJpbmcsIGZ1bmN0aW9uKTsKIApAQCAtMjA4LDEyICsyMDgsMTIgQEAg
SlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBjdHgsIHVu
c2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIigpIGF0ICIpOwog
ICAgICAgICBidWlsZGVyLmFwcGVuZCh1cmxTdHJpbmcpOwogICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiOiIpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChVU3RyaW5nOjpudW1iZXIobGluZU51bWJl
cikpOworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihsaW5lTnVtYmVyKSk7
CiAgICAgICAgIGlmICghZnVuY3Rpb24gfHwgKytjb3VudCA9PSBtYXhTdGFja1NpemUpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZSgpOwogICAgIH0KLSAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShidWlsZGVyLnRv
VVN0cmluZygpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
YnVpbGRlci50b1N0cmluZygpKS5sZWFrUmVmKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKaW5kZXggMDg3N2ExM2U2MGIyNzg2NjgwYjZkOWNk
ODUzN2M1OTFlMGIyZWY1OC4uZTg3ZmQ4MzhkZTViNjY5ZmZiZjExZWQxNzFhYjM0ZTJiZWZkODJk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nUmVmLmgiCiAjaW5jbHVkZSAiT3BhcXVlSlNTdHJpbmcuaCIKLSNpbmNsdWRlIDxy
dW50aW1lL1VTdHJpbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KICNpbmNsdWRl
IDx3dGYvT3duQXJyYXlQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJl
Zi5jcHAKaW5kZXggOWI3MjY4YTJkYTYzMDA5ZWYyNTVkMDBiMzBjYjE3YmU5OGNlZGRiNi4uMGEx
MTMzOTM2NDQ4ZGU3MzMxZTg1MDJlZmFjY2M4NGJjNjhiY2QwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNsdWRlIDxy
dW50aW1lL0xpdGVyYWxQYXJzZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4K
ICNpbmNsdWRlIDxydW50aW1lL1Byb3RlY3QuaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPiAvLyBmb3Igc3RkOjptaW4K
IApAQCAtMjM0LDcgKzIzNCw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmlu
ZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0g
ICAgVVN0cmluZyBzdHIgPSBzdHJpbmctPnVzdHJpbmcoKTsKKyAgICBTdHJpbmcgc3RyID0gc3Ry
aW5nLT51c3RyaW5nKCk7CiAgICAgaWYgKHN0ci5pczhCaXQoKSkgewogICAgICAgICBMaXRlcmFs
UGFyc2VyPExDaGFyPiBwYXJzZXIoZXhlYywgc3RyLmNoYXJhY3RlcnM4KCksIHN0ci5sZW5ndGgo
KSwgU3RyaWN0SlNPTik7CiAgICAgICAgIHJldHVybiB0b1JlZihleGVjLCBwYXJzZXIudHJ5TGl0
ZXJhbFBhcnNlKCkpOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVDcmVh
dGVKU09OU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTVmFsdWVSZWYgYXBpVmFsdWUsIHVuc2ln
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0oZXhlYyk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgYXBpVmFsdWUpOwot
ICAgIFVTdHJpbmcgcmVzdWx0ID0gSlNPTlN0cmluZ2lmeShleGVjLCB2YWx1ZSwgaW5kZW50KTsK
KyAgICBTdHJpbmcgcmVzdWx0ID0gSlNPTlN0cmluZ2lmeShleGVjLCB2YWx1ZSwgaW5kZW50KTsK
ICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAqZXhjZXB0aW9uID0gMDsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVK
U1N0cmluZy5jcHAKaW5kZXggOWExMTZlNmIyZjYzOTM3ZDBkMDJkMDg4YzYxYTU1NGM5ZmMyM2I4
Ni4uY2RlNTdhY2RhZTNmMjAwYjI4NzhhYzYyNDUyNzU3ZmRmZDM4YjZiOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTMyLDE4ICszMiwxOCBA
QAogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1QYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBP
cGFxdWVKU1N0cmluZzo6Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHVzdHJpbmcpCitQYXNzUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewotICAgIGlmICghdXN0cmluZy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBPcGFxdWVKU1N0cmluZyh1c3RyaW5nLmNoYXJhY3RlcnMoKSwgdXN0cmluZy5sZW5n
dGgoKSkpOworICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE9wYXF1ZUpTU3RyaW5nKHN0cmluZy5jaGFyYWN0ZXJzKCksIHN0cmluZy5sZW5ndGgo
KSkpOwogICAgIHJldHVybiAwOwogfQogCi1VU3RyaW5nIE9wYXF1ZUpTU3RyaW5nOjp1c3RyaW5n
KCkgY29uc3QKK1N0cmluZyBPcGFxdWVKU1N0cmluZzo6dXN0cmluZygpIGNvbnN0CiB7CiAgICAg
aWYgKHRoaXMgJiYgbV9jaGFyYWN0ZXJzKQotICAgICAgICByZXR1cm4gVVN0cmluZyhtX2NoYXJh
Y3RlcnMsIG1fbGVuZ3RoKTsKLSAgICByZXR1cm4gVVN0cmluZygpOworICAgICAgICByZXR1cm4g
U3RyaW5nKG1fY2hhcmFjdGVycywgbV9sZW5ndGgpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAogSWRlbnRpZmllciBPcGFxdWVKU1N0cmluZzo6aWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09w
YXF1ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5n
LmgKaW5kZXggMWM2MzE1MGNmMTU0ZTcxYzhlM2E5NmY0N2ViZWJkODZmODgyNzk3Ny4uN2UyMjJj
NWVlODQ2ZDc1NTg3YTAyNTk0Zjg4NjgwZGY2NGIzZTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBPcGFx
dWVKU1N0cmluZ19oCiAKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLSNp
bmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSWRlbnRpZmllcjsKQEAgLTQ2LDEyICs0
NiwxMyBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVK
U1N0cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IEpTQzo6
VVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1
ZUpTU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBVQ2hhciogY2hhcmFjdGVy
cygpIHsgcmV0dXJuIHRoaXMgPyBtX2NoYXJhY3RlcnMgOiAwOyB9CiAgICAgdW5zaWduZWQgbGVu
Z3RoKCkgeyByZXR1cm4gdGhpcyA/IG1fbGVuZ3RoIDogMDsgfQogCi0gICAgSlNDOjpVU3RyaW5n
IHVzdHJpbmcoKSBjb25zdDsKKyAgICAvLyBGSVhNRTogcmVuYW1lIHRvIHN0cmluZygpLgorICAg
IFN0cmluZyB1c3RyaW5nKCkgY29uc3Q7CiAgICAgSlNDOjpJZGVudGlmaWVyIGlkZW50aWZpZXIo
SlNDOjpKU0dsb2JhbERhdGEqKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBhNDU4ZGNmMDlhMDQ0Y2RlNGJiYTYxMThhZWU3Yzc5ZTU4ZDEz
Y2JiLi4xZDE1ZWRkODUyYzJlZTdmOTVlMTljZWVjM2FmYzU3MzM0MDA4YjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNTQsNyArMjU0LDYgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAogICAgIHJ1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAKLSAgICBy
dW50aW1lL1VTdHJpbmcuY3BwCiAKICAgICB0b29scy9Db2RlUHJvZmlsZS5jcHAKICAgICB0b29s
cy9Db2RlUHJvZmlsaW5nLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA2M2NjZjM5NzcyNzlhODExOGFkNWM4NDk0MmMzMmVlNmJmZDQyNDZiLi44MjA5
YzI1Mjg0YWY0NDA3MzhkMzY4ZWI2OTYyMTQwNjFkY2MyMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjU3LDEwICs2NTcsNiBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UcmFjaW5nLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNldpdGhGcmFjdGlvbi5oIFwKLQlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcCBcCi0JU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VU3RyaW5nQnVpbGRlci5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9V
U3RyaW5nQ29uY2F0ZW5hdGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a0dDTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtSYW5kb20uaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCAx
YjA1ZjBhZWNlYjRjNzQ5ZDQ0YmVlZDNhMDRiNzFlMTExOWYwZTgwLi5mZTY0NzJkOWQxMjA5YzFl
YzNhNTI5N2Q4Zjk3MTcxYzM3YWRhYTVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMjQsMTIgKzI0LDggQEAgRVhQT1JUUwog
ICAgID8/MFN0cmluZ09iamVjdEBKU0NAQElBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZTdHJ1Y3R1
cmVAMUBAWgogICAgID8/MFN0cnVjdHVyZUBKU0NAQEFBRUBBQVZKU0dsb2JhbERhdGFAMUBQQVZK
U0dsb2JhbE9iamVjdEAxQFZKU1ZhbHVlQDFAQUJWVHlwZUluZm9AMUBQQlVDbGFzc0luZm9AMUBA
WgogICAgID8/MFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgotICAgID8/MFVTdHJpbmdASlND
QEBRQUVAUEJEQFoKLSAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCRElAWgotICAgID8/MFVTdHJp
bmdASlNDQEBRQUVAUEJfV0BaCi0gICAgPz8wVVN0cmluZ0BKU0NAQFFBRUBQQl9XSUBaCiAgICAg
Pz8wV1RGVGhyZWFkRGF0YUBXVEZAQFFBRUBYWgotICAgID8/MFlhcnJQYXR0ZXJuQFlhcnJASlND
QEBRQUVAQUJWVVN0cmluZ0AyQF9OMVBBUEJEQFoKKyAgICA/PzBZYXJyUGF0dGVybkBZYXJyQEpT
Q0BAUUFFQEFCVlN0cmluZ0BXVEZAQF9OMVBBUEJEQFoKICAgICA/PzFBcnJheUJ1ZmZlclZpZXdA
V1RGQEBVQUVAWFoKICAgICA/PzFDbGllbnREYXRhQEpTR2xvYmFsRGF0YUBKU0NAQFVBRUBYWgog
ICAgID8/MUNvbGxhdG9yQFdURkBAUUFFQFhaCkBAIC00NCw3ICs0MCw2IEBAIEVYUE9SVFMKICAg
ICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKICAgICA/PzFXVEZUaHJlYWREYXRhQFdU
RkBAUUFFQFhaCiAgICAgPz8xV2Vha0hhbmRsZU93bmVyQEpTQ0BAVUFFQFhaCi0gICAgPz84SlND
QEBZQV9OQUJWVVN0cmluZ0AwQDBAWgogICAgID8/OFdURkBAWUFfTkFCVkNTdHJpbmdAMEAwQFoK
ICAgICA/RWNtYVNjcmlwdENvbnZlcnRlckBEb3VibGVUb1N0cmluZ0NvbnZlcnRlckBkb3VibGVf
Y29udmVyc2lvbkBXVEZAQFNBQUJWMTIzQFhaCiAgICAgP1N0cmluZ1RvRG91YmxlQFN0cmluZ1Rv
RG91YmxlQ29udmVydGVyQGRvdWJsZV9jb252ZXJzaW9uQFdURkBAU0FOUEJESVBBSUBaCkBAIC03
MSw3ICs2Niw2IEBAIEVYUE9SVFMKICAgICA/YWxsb2NhdGVTbG93Q2FzZUBNYXJrZWRBbGxvY2F0
b3JASlNDQEBBQUVQQVhYWgogICAgID9hcHBlbmRAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhQQkVJ
QFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RGQEBRQUVYUEJfV0lAWgotICAgID9hc2Np
aUBVU3RyaW5nQEpTQ0BAUUJFP0FWQ1N0cmluZ0BXVEZAQFhaCiAgICAgP2F0dGFjaEBEZWJ1Z2dl
ckBKU0NAQFFBRVhQQVZKU0dsb2JhbE9iamVjdEAyQEBaCiAgICAgP2Jhc2U2NERlY29kZUBXVEZA
QFlBX05BQlZTdHJpbmdAMUBBQVY/JFZlY3RvckBEJDBBQEAxQFc0QmFzZTY0RGVjb2RlUG9saWN5
QDFAQFoKICAgICA/YmFzZTY0RW5jb2RlQFdURkBAWUE/QVZTdHJpbmdAMUBQQkRJVzRCYXNlNjRF
bmNvZGVQb2xpY3lAMUBAWgpAQCAtODQsNyArNzgsNyBAQCBFWFBPUlRTCiAgICAgP2NhbGN1bGF0
ZURTVE9mZnNldEBXVEZAQFlBTk5OQFoKICAgICA/Y2FsY3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0
aEZyb21VVEY4TWFza2luZ1RvcDhCaXRzQFVuaWNvZGVAV1RGQEBZQUlQQkQwQUFJMUBaCiAgICAg
P2NhbGN1bGF0ZVVUQ09mZnNldEBXVEZAQFlBSFhaCi0gICAgP2NhbGN1bGF0ZWRGdW5jdGlvbk5h
bWVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkU/QVZVU3RyaW5nQDJAWFoKKyAgICA/Y2FsY3Vs
YXRlZEZ1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRT9BVlN0cmluZ0BXVEZA
QFhaCiAgICAgP2NhbGxASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVjU3RhdGVAMUBWMjFAVzRD
YWxsVHlwZUAxQEFCVENhbGxEYXRhQDFAMUFCVkFyZ0xpc3RAMUBAWgogICAgID9jYWxsSG9zdEZ1
bmN0aW9uQXNDb25zdHJ1Y3RvckBKU0NAQFlJX0pQQVZFeGVjU3RhdGVAMUBAWgogICAgID9jYWxs
T25NYWluVGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCkBAIC05Nyw3ICs5MSw3IEBAIEVYUE9S
VFMKICAgICA/Y2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlQElkZW50aWZpZXJASlNDQEBDQVhQ
QVZKU0dsb2JhbERhdGFAMkBAWgogICAgID9jaGVja1N5bnRheEBKU0NAQFlBX05QQVZFeGVjU3Rh
dGVAMUBBQlZTb3VyY2VDb2RlQDFAUEFWSlNWYWx1ZUAxQEBaCiAgICAgP2NoZWNrc3VtQE1ENUBX
VEZAQFFBRVhBQVY/JFZlY3RvckBFJDBCQUBAMkBAWgotICAgID9jbGFzc05hbWVASlNPYmplY3RA
SlNDQEBTQT9BVlVTdHJpbmdAMkBQQlYxMkBAWgorICAgID9jbGFzc05hbWVASlNPYmplY3RASlND
QEBTQT9BVlN0cmluZ0BXVEZAQFBCVjEyQEBaCiAgICAgP2NsZWFyQFNvdXJjZVByb3ZpZGVyQ2Fj
aGVASlNDQEBRQUVYWFoKICAgICA/Y2xlYXJSYXJlRGF0YUBKU0dsb2JhbE9iamVjdEBKU0NAQENB
WFBBVkpTQ2VsbEAyQEBaCiAgICAgP2NvbGxhdGVAQ29sbGF0b3JAV1RGQEBRQkU/QVc0UmVzdWx0
QDEyQFBCX1dJMElAWgpAQCAtMTA3LDMxICsxMDEsMzAgQEAgRVhQT1JUUwogICAgID9jb25zdHJ1
Y3RASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAVkpTVmFsdWVAMUBXNENvbnN0
cnVjdFR5cGVAMUBBQlRDb25zdHJ1Y3REYXRhQDFAQUJWQXJnTGlzdEAxQEBaCiAgICAgP2NvbnN0
cnVjdEFycmF5QEpTQ0BAWUFQQVZKU0FycmF5QDFAUEFWRXhlY1N0YXRlQDFAQUJWQXJnTGlzdEAx
QEBaCiAgICAgP2NvbnN0cnVjdEVtcHR5T2JqZWN0QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4
ZWNTdGF0ZUAxQEBaCi0gICAgP2NvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFBBVkpTR2xvYmFsT2JqZWN0
QDFAQUJWQXJnTGlzdEAxQEFCVklkZW50aWZpZXJAMUBBQlZVU3RyaW5nQDFAQUJWVGV4dFBvc2l0
aW9uQFdURkBAQFoKKyAgICA/Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2tASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RA
MUBBQlZBcmdMaXN0QDFAQUJWSWRlbnRpZmllckAxQEFCVlN0cmluZ0BXVEZAQEFCVlRleHRQb3Np
dGlvbkA4QEBaCiAgICAgP2NvbnN0cnVjdE51bWJlckBKU0NAQFlBUEFWTnVtYmVyT2JqZWN0QDFA
UEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBWSlNWYWx1ZUAxQEBaCiAgICAgP2Nv
bnN0cnVjdFN0cmluZ0BKU0NAQFlBUEFWU3RyaW5nT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAUEFW
SlNHbG9iYWxPYmplY3RAMUBWSlNWYWx1ZUAxQEBaCiAgICAgP2NvbnZlcnRMYXRpbjFUb1VURjhA
VW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkVQQkVQQVBBRFBBREBa
CiAgICAgP2NvbnZlcnRVVEYxNlRvVVRGOEBVbmljb2RlQFdURkBAWUE/QVc0Q29udmVyc2lvblJl
c3VsdEAxMkBQQVBCX1dQQl9XUEFQQURQQURfTkBaCiAgICAgP2NvbnZlcnRVVEY4VG9VVEYxNkBV
bmljb2RlQFdURkBAWUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBCRFBCRFBBUEFfV1BBX1df
TkBaCi0gICAgP2NyZWF0ZUBKU0Z1bmN0aW9uQEpTQ0BAU0FQQVYxMkBQQVZFeGVjU3RhdGVAMkBQ
QVZKU0dsb2JhbE9iamVjdEAyQEhBQlZVU3RyaW5nQDJAUDZJX0owQFpXNEludHJpbnNpY0AyQDNA
WgorICAgID9jcmVhdGVASlNGdW5jdGlvbkBKU0NAQFNBUEFWMTJAUEFWRXhlY1N0YXRlQDJAUEFW
SlNHbG9iYWxPYmplY3RAMkBIQUJWU3RyaW5nQFdURkBAUDZJX0owQFpXNEludHJpbnNpY0AyQDNA
WgogICAgID9jcmVhdGVASlNHbG9iYWxEYXRhQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVkpTR2xv
YmFsRGF0YUBKU0NAQEBXVEZAQFc0VGhyZWFkU3RhY2tUeXBlQDJAVzRIZWFwVHlwZUAyQEBaCi0g
ICAgP2NyZWF0ZUBPcGFxdWVKU1N0cmluZ0BAU0E/QVY/JFBhc3NSZWZQdHJAVU9wYXF1ZUpTU3Ry
aW5nQEBAV1RGQEBBQlZVU3RyaW5nQEpTQ0BAQFoKLSAgICA/Y3JlYXRlQFJlZ0V4cEBKU0NAQFNB
UEFWMTJAQUFWSlNHbG9iYWxEYXRhQDJAQUJWVVN0cmluZ0AyQFc0UmVnRXhwRmxhZ3NAMkBAWgor
ICAgID9jcmVhdGVAUmVnRXhwQEpTQ0BAU0FQQVYxMkBBQVZKU0dsb2JhbERhdGFAMkBBQlZTdHJp
bmdAV1RGQEBXNFJlZ0V4cEZsYWdzQDJAQFoKICAgICA/Y3JlYXRlRW1wdHlTdHJpbmdAU21hbGxT
dHJpbmdzQEpTQ0BAQUFFWFBBVkpTR2xvYmFsRGF0YUAyQEBaCi0gICAgP2NyZWF0ZUVycm9yQEpT
Q0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID9j
cmVhdGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZTdHJpbmdA
V1RGQEBAWgogICAgID9jcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbkBKU0NAQFlB
UEFWSlNPYmplY3RAMUBQQVZKU0dsb2JhbERhdGFAMUBAWgogICAgID9jcmVhdGVMZWFrZWRASlNH
bG9iYWxEYXRhQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVkpTR2xvYmFsRGF0YUBKU0NAQEBXVEZA
QFc0VGhyZWFkU3RhY2tUeXBlQDJAVzRIZWFwVHlwZUAyQEBaCiAgICAgP2NyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEBaCi0g
ICAgP2NyZWF0ZVJhbmdlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFA
QUJWVVN0cmluZ0AxQEBaCi0gICAgP2NyZWF0ZVJlZmVyZW5jZUVycm9yQEpTQ0BAWUFQQVZKU09i
amVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID9jcmVhdGVSYW5nZUVy
cm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlN0cmluZ0BXVEZAQEBa
CisgICAgP2NyZWF0ZVJlZmVyZW5jZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNT
dGF0ZUAxQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgP2NyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmlu
Z0BTbWFsbFN0cmluZ3NASlNDQEBBQUVYUEFWSlNHbG9iYWxEYXRhQDJARUBaCiAgICAgP2NyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBA
WgotICAgID9jcmVhdGVTeW50YXhFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3Rh
dGVAMUBBQlZVU3RyaW5nQDFAQFoKKyAgICA/Y3JlYXRlU3ludGF4RXJyb3JASlNDQEBZQVBBVkpT
T2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWU3RyaW5nQFdURkBAQFoKICAgICA/Y3JlYXRlVGFi
bGVASGFzaFRhYmxlQEpTQ0BAQUJFWFBBVkpTR2xvYmFsRGF0YUAyQEBaCiAgICAgP2NyZWF0ZVRo
cmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMEBaCiAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2
QVBBWFBBWEBaMFBCREBaCiAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVhQQVhAWjBQQkRA
WgotICAgID9jcmVhdGVUeXBlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRl
QDFAQUJWVVN0cmluZ0AxQEBaCisgICAgP2NyZWF0ZVR5cGVFcnJvckBKU0NAQFlBUEFWSlNPYmpl
Y3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZTdHJpbmdAV1RGQEBAWgogICAgID9jcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlckBXVEZAQFlBSVhaCiAgICAgP2NyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
VmFsdWVzQFdURkBAWUFYUEFYSUBaCiAgICAgP2N1cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgpAQCAt
MTY0LDcgKzE1Nyw3IEBAIEVYUE9SVFMKICAgICA/ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCiAg
ICAgP2RpZFRpbWVPdXRAVGltZW91dENoZWNrZXJASlNDQEBRQUVfTlBBVkV4ZWNTdGF0ZUAyQEBa
CiAgICAgP2RlbGV0ZUFsbENvbXBpbGVkQ29kZUBIZWFwQEpTQ0BAUUFFWFhaCi0gICAgP2Rpc3Bs
YXlOYW1lQEpTRnVuY3Rpb25ASlNDQEBRQUU/QlZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoK
KyAgICA/ZGlzcGxheU5hbWVASlNGdW5jdGlvbkBKU0NAQFFBRT9CVlN0cmluZ0BXVEZAQFBBVkV4
ZWNTdGF0ZUAyQEBaCiAgICAgP2R0b2FAV1RGQEBZQVhRQUROQUFfTkFBSEFBSUBaCiAgICAgP2R1
bXBBbGxPcHRpb25zQE9wdGlvbnNASlNDQEBTQVhQQVVfaW9idWZAQEBaCiAgICAgP2R1bXBDYWxs
RnJhbWVASW50ZXJwcmV0ZXJASlNDQEBRQUVYUEFWRXhlY1N0YXRlQDJAQFoKQEAgLTE3Miw3ICsx
NjUsNyBAQCBFWFBPUlRTCiAgICAgP2VtcHR5QFN0cmluZ0ltcGxAV1RGQEBTQVBBVjEyQFhaCiAg
ICAgP2VudW1lcmFibGVAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFX05YWgogICAgID9lcXVh
bFVURjE2V2l0aFVURjhAVW5pY29kZUBXVEZAQFlBX05QQl9XMFBCRDFAWgotICAgID9ldmFsdWF0
ZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRT9BVkpTVmFsdWVAMkBBQlZVU3RyaW5nQDJAQUFW
MzJAQFoKKyAgICA/ZXZhbHVhdGVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkU/QVZKU1ZhbHVl
QDJAQUJWU3RyaW5nQFdURkBAQUFWMzJAQFoKICAgICA/ZXZhbHVhdGVASlNDQEBZQT9BVkpTVmFs
dWVAMUBQQVZFeGVjU3RhdGVAMUBQQVZTY29wZUNoYWluTm9kZUAxQEFCVlNvdXJjZUNvZGVAMUBW
MjFAUEFWMjFAQFoKICAgICA/ZXhjbHVkZUBQcm9maWxlQEpTQ0BAUUFFWFBCVlByb2ZpbGVOb2Rl
QDJAQFoKICAgICA/ZXhlY3V0ZUBQYXJhbGxlbEVudmlyb25tZW50QFdURkBAUUFFWFBBWEBaCkBA
IC0xOTEsNyArMTg0LDcgQEAgRVhQT1JUUwogICAgID9maW5kQWxsb2NhdG9yQFdlYWtTZXRASlND
QEBBQUVQQVVGcmVlQ2VsbEBXZWFrQmxvY2tAMkBYWgogICAgID9maW5pc2hDcmVhdGlvbkBCb29s
ZWFuT2JqZWN0QEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQEBaCiAgICAgP2ZpbmlzaENyZWF0
aW9uQERhdGVJbnN0YW5jZUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBOQFoKLSAgICA/Zmlu
aXNoQ3JlYXRpb25ASW50ZXJuYWxGdW5jdGlvbkBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBB
QlZVU3RyaW5nQDJAQFoKKyAgICA/ZmluaXNoQ3JlYXRpb25ASW50ZXJuYWxGdW5jdGlvbkBKU0NA
QElBRVhBQVZKU0dsb2JhbERhdGFAMkBBQlZTdHJpbmdAV1RGQEBAWgogICAgID9maW5pc2hDcmVh
dGlvbkBKU0FycmF5QEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQElAWgogICAgID9maW5pc2hD
cmVhdGlvbkBSZWdFeHBPYmplY3RASlNDQEBJQUVYUEFWSlNHbG9iYWxPYmplY3RAMkBAWgogICAg
ID9maW5pc2hDcmVhdGlvbkBTdHJpbmdPYmplY3RASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJA
UEFWSlNTdHJpbmdAMkBAWgpAQCAtMjAwLDggKzE5Myw3IEBAIEVYUE9SVFMKICAgICA/ZnJvbUBJ
ZGVudGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBIQFoKICAgICA/ZnJvbUBJZGVu
dGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/ZnVuY3Rpb25HZXR0
ZXJAUHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEBaCi0g
ICAgP2Z1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRVBCVlVTdHJpbmdAMkBY
WgotICAgID9nZXRDYWxjdWxhdGVkRGlzcGxheU5hbWVASlNDQEBZQT9BVlVTdHJpbmdAMUBQQVZF
eGVjU3RhdGVAMUBQQVZKU09iamVjdEAxQEBaCisgICAgP2dldENhbGN1bGF0ZWREaXNwbGF5TmFt
ZUBKU0NAQFlBP0FWU3RyaW5nQFdURkBAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgog
ICAgID9nZXRDYWxsRGF0YUBKU0NlbGxASlNDQEBTQT9BVzRDYWxsVHlwZUAyQFBBVjEyQEFBVENh
bGxEYXRhQDJAQFoKICAgICA/Z2V0Q2FsbGFibGVPYmplY3RTbG93QEpTQ0BAWUFQQVZKU0NlbGxA
MUBQQVYyMUBAWgogICAgID9nZXRDb25zdHJ1Y3REYXRhQEpTQ2VsbEBKU0NAQFNBP0FXNENvbnN0
cnVjdFR5cGVAMkBQQVYxMkBBQVRDb25zdHJ1Y3REYXRhQDJAQFoKQEAgLTIxNiw4ICsyMDgsOCBA
QCBFWFBPUlRTCiAgICAgP2dldFByb3BlcnR5TmFtZXNASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQ
QVZFeGVjU3RhdGVAMkBBQVZQcm9wZXJ0eU5hbWVBcnJheUAyQFc0RW51bWVyYXRpb25Nb2RlQDJA
QFoKICAgICA/Z2V0U2xpY2VAQXJnTGlzdEBKU0NAQFFCRVhIQUFWMTJAQFoKICAgICA/Z2V0U3Rh
Y2tUcmFjZUBJbnRlcnByZXRlckBKU0NAQFNBWFBBVkpTR2xvYmFsRGF0YUAyQEFBVj8kVmVjdG9y
QFVTdGFja0ZyYW1lQEpTQ0BAJDBBQEBXVEZAQEBaCi0gICAgP2dldFN0cmluZ0BKU0NlbGxASlND
QEBRQkU/QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKLSAgICA/Z2V0U3RyaW5nQEpTQ2Vs
bEBKU0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUFWVVN0cmluZ0AyQEBaCisgICAgP2dldFN0cmlu
Z0BKU0NlbGxASlNDQEBRQkU/QVZTdHJpbmdAV1RGQEBQQVZFeGVjU3RhdGVAMkBAWgorICAgID9n
ZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQVZTdHJpbmdAV1RGQEBA
WgogICAgID9nZXRAU3RydWN0dXJlQEpTQ0BAUUFFSEFBVkpTR2xvYmFsRGF0YUAyQFZQcm9wZXJ0
eU5hbWVAMkBBQUlBQVBBVkpTQ2VsbEAyQEBaCiAgICAgP2dldHRlckBQcm9wZXJ0eURlc2NyaXB0
b3JASlNDQEBRQkU/QVZKU1ZhbHVlQDJAWFoKICAgICA/Z2xvYmFsRXhlY0BKU0dsb2JhbE9iamVj
dEBKU0NAQFFBRVBBVkV4ZWNTdGF0ZUAyQFhaCkBAIC0yMzYsNyArMjI4LDcgQEAgRVhQT1JUUwog
ICAgID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFhaCiAgICAgP2luaXRpYWxpemVUaHJl
YWRpbmdASlNDQEBZQVhYWgogICAgID9pbml0aWFsaXplVGhyZWFkaW5nQFdURkBAWUFYWFoKLSAg
ICA/aW50ZXJwcmV0QFlhcnJASlNDQEBZQUlQQVVCeXRlY29kZVBhdHRlcm5AMTJAQUJWVVN0cmlu
Z0AyQElQQUlAWgorICAgID9pbnRlcnByZXRAWWFyckBKU0NAQFlBSVBBVUJ5dGVjb2RlUGF0dGVy
bkAxMkBBQlZTdHJpbmdAV1RGQEBJUEFJQFoKICAgICA/aXNBY2Nlc3NvckRlc2NyaXB0b3JAUHJv
cGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFX05YWgogICAgID9pc0J1c3lASGVhcEBKU0NAQFFBRV9O
WFoKICAgICA/aXNEYXRhRGVzY3JpcHRvckBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlha
CkBAIC0yNDYsMTkgKzIzOCwxNiBAQCBFWFBPUlRTCiAgICAgP2lzVGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbkBKU0NAQFlBX05WSlNWYWx1ZUAxQEBaCiAgICAgP2lzVmFsaWRBbGxvY2F0aW9u
QEhlYXBASlNDQEBBQUVfTklAWgogICAgID9pc1ZhbGlkQ2FsbGVlQEpTVmFsdWVASlNDQEBRQUVf
TlhaCi0gICAgP2pzT3duZWRTdHJpbmdASlNDQEBZQVBBVkpTU3RyaW5nQDFAUEFWSlNHbG9iYWxE
YXRhQDFAQUJWVVN0cmluZ0AxQEBaCi0gICAgP2pzU3RyaW5nQEpTQ0BAWUFQQVZKU1N0cmluZ0Ax
QFBBVkpTR2xvYmFsRGF0YUAxQEFCVlVTdHJpbmdAMUBAWgogICAgID9sZW5ndGhAQ1N0cmluZ0BX
VEZAQFFCRUlYWgogICAgID9sb2NrQEpTTG9ja0BKU0NAQFFBRVhYWgogICAgID9sb2NrQE11dGV4
QFdURkBAUUFFWFhaCiAgICAgP2xvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEBX
VEZAQFlBWFhaCi0gICAgP21hdGNoQFJlZ0V4cEBKU0NAQFFBRUhBQVZKU0dsb2JhbERhdGFAMkBB
QlZVU3RyaW5nQDJASUFBVj8kVmVjdG9yQEgkMENBQEBXVEZAQEBaCisgICAgP21hdGNoQFJlZ0V4
cEBKU0NAQFFBRUhBQVZKU0dsb2JhbERhdGFAMkBBQlZTdHJpbmdAV1RGQEBJQUFWPyRWZWN0b3JA
SCQwQ0FAQDVAQFoKICAgICA/bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcEBTdHJ1Y3R1cmVASlNDQEBB
QUVYQUFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
QFdURkBAWUFOWFoKICAgICA/bW9udGhGcm9tRGF5SW5ZZWFyQFdURkBAWUFISF9OQFoKICAgICA/
bXNUb1llYXJAV1RGQEBZQUhOQFoKLSAgICA/bmFtZUBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BAUUFF
QUJWVVN0cmluZ0AyQFBBVkV4ZWNTdGF0ZUAyQEBaCi0gICAgP25hbWVASlNGdW5jdGlvbkBKU0NA
QFFBRUFCVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgorICAgID9uYW1lQEpTRnVuY3Rpb25A
SlNDQEBRQUVBQlZTdHJpbmdAV1RGQEBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9uZXV0ZXJAQXJy
YXlCdWZmZXJWaWV3QFdURkBATUFFWFhaCiAgICAgP25ld1VuaW5pdGlhbGl6ZWRAQ1N0cmluZ0BX
VEZAQFNBP0FWMTJASUFBUEFEQFoKICAgICA/bm90aWZ5V3JpdGVTbG93QFN5bWJvbFRhYmxlRW50
cnlASlNDQEBBQUVYWFoKQEAgLTI5Miw3ICsyODEsNyBAQCBFWFBPUlRTCiAgICAgP3B1dERpcmVj
dFZpcnR1YWxASlNPYmplY3RASlNDQEBTQVhQQVYxMkBQQVZFeGVjU3RhdGVAMkBWUHJvcGVydHlO
YW1lQDJAVkpTVmFsdWVAMkBJQFoKICAgICA/cmFuZG9tTnVtYmVyQFdURkBAWUFOWFoKICAgICA/
cmVjb21waWxlQWxsSlNGdW5jdGlvbnNARGVidWdnZXJASlNDQEBRQUVYUEFWSlNHbG9iYWxEYXRh
QDJAQFoKLSAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBGbGFnc0AxQEFCVlVTdHJp
bmdAMUBAWgorICAgID9yZWdFeHBGbGFnc0BKU0NAQFlBP0FXNFJlZ0V4cEZsYWdzQDFAQUJWU3Ry
aW5nQFdURkBAQFoKICAgICA/cmVpZnlTdHJpbmdAU3RyaW5nQnVpbGRlckBXVEZAQEFCRVhYWgog
ICAgID9yZWxlYXNlRGVjb21taXR0ZWRAT1NBbGxvY2F0b3JAV1RGQEBTQVhQQVhJQFoKICAgICA/
cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnlASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCkBAIC0zMDks
NyArMjk4LDcgQEAgRVhQT1JUUwogICAgID9yZXNvbHZlUm9wZUBKU1JvcGVTdHJpbmdASlNDQEBB
QkVYUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/cmVzdG9yZUFsbEBQcm9maWxlQEpTQ0BAUUFFWFha
CiAgICAgP3JldHJpZXZlQ2FsbGVyRnJvbVZNQ29kZUBJbnRlcnByZXRlckBKU0NAQFFCRT9BVkpT
VmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBQQVZKU0Z1bmN0aW9uQDJAQFoKLSAgICA/cmV0cmlldmVM
YXN0Q2FsbGVyQEludGVycHJldGVyQEpTQ0BAUUJFWFBBVkV4ZWNTdGF0ZUAyQEFBSDFBQVZVU3Ry
aW5nQDJAQUFWSlNWYWx1ZUAyQEBaCisgICAgP3JldHJpZXZlTGFzdENhbGxlckBJbnRlcnByZXRl
ckBKU0NAQFFCRVhQQVZFeGVjU3RhdGVAMkBBQUgxQUFWU3RyaW5nQFdURkBAQUFWSlNWYWx1ZUAy
QEBaCiAgICAgP3NldENvbmZpZ3VyYWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYX05A
WgogICAgID9zZXREZXNjcmlwdG9yQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFBRVhWSlNWYWx1
ZUAyQElAWgogICAgID9zZXREdW1wc0dlbmVyYXRlZENvZGVAQnl0ZWNvZGVHZW5lcmF0b3JASlND
QEBTQVhfTkBaCkBAIC0zMzYsMTEgKzMyNSwxMCBAQCBFWFBPUlRTCiAgICAgP3Nsb3dWYWxpZGF0
ZUNlbGxASlNDQEBZQVhQQVZKU0NlbGxAMUBAWgogICAgID9zbG93VmFsaWRhdGVDZWxsQEpTQ0BA
WUFYUEFWSlNHbG9iYWxPYmplY3RAMUBAWgogICAgID9zb3VyY2VDb2RlQEpTRnVuY3Rpb25ASlND
QEBRQkVQQlZTb3VyY2VDb2RlQDJAWFoKLSAgICA/c3RhcnRQcm9maWxpbmdAUHJvZmlsZXJASlND
QEBRQUVYUEFWRXhlY1N0YXRlQDJAQUJWVVN0cmluZ0AyQEBaCisgICAgP3N0YXJ0UHJvZmlsaW5n
QFByb2ZpbGVyQEpTQ0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAg
P3N0YXJ0U2FtcGxpbmdASlNHbG9iYWxEYXRhQEpTQ0BAUUFFWFhaCi0gICAgP3N0b3BQcm9maWxp
bmdAUHJvZmlsZXJASlNDQEBRQUU/QVY/JFBhc3NSZWZQdHJAVlByb2ZpbGVASlNDQEBAV1RGQEBQ
QVZFeGVjU3RhdGVAMkBBQlZVU3RyaW5nQDJAQFoKKyAgICA/c3RvcFByb2ZpbGluZ0BQcm9maWxl
ckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4ZWNTdGF0
ZUAyQEFCVlN0cmluZ0A0QEBaCiAgICAgP3N0b3BTYW1wbGluZ0BKU0dsb2JhbERhdGFASlNDQEBR
QUVYWFoKLSAgICA/c3Vic3RyaW5nU2hhcmluZ0ltcGxAVVN0cmluZ0BKU0NAQFFCRT9BVjEyQElJ
QFoKICAgICA/c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5QFN0cnVjdHVyZUBK
U0NAQFFBRUlYWgogICAgID9zd2VlcGVyQEhlYXBASlNDQEBRQUVQQVZJbmNyZW1lbnRhbFN3ZWVw
ZXJAMkBYWgogICAgID9zeW50aGVzaXplUHJvdG90eXBlQEpTVmFsdWVASlNDQEBRQkVQQVZKU09i
amVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaCkBAIC0zNDksNyArMzM3LDcgQEAgRVhQT1JUUwogICAg
ID90aHJvd0Vycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFBBVjIxQEBa
CiAgICAgP3Rocm93U3ludGF4RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRl
QDFAQFoKICAgICA/dGhyb3dUeXBlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0
YXRlQDFAQFoKLSAgICA/dGhyb3dUeXBlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhl
Y1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBaCisgICAgP3Rocm93VHlwZUVycm9yQEpTQ0BAWUFQQVZK
U09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgP3RpbWVkV2Fp
dEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVfTkFBVk11dGV4QDJATkBaCiAgICAgP3Rsc0tleUNv
dW50QFdURkBAWUFBQUpYWgogICAgID90bHNLZXlzQFdURkBAWUFQQUtYWgpAQCAtMzY1LDYgKzM1
Myw3IEBAIEVYUE9SVFMKICAgICA/dG9TdHJpbmdTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFW
SlNTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID90b1RoaXNPYmplY3RASlNPYmplY3RA
SlNDQEBTQVBBVjEyQFBBVkpTQ2VsbEAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3RvVGhpc09i
amVjdFNsb3dDYXNlQEpTVmFsdWVASlNDQEBBQkVQQVZKU09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAy
QEBaCisgICAgP3RvV1RGU3RyaW5nU2xvd0Nhc2VASlNWYWx1ZUBKU0NAQEFCRT9BVlN0cmluZ0BX
VEZAQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3RyYW5zZmVyQEFycmF5QnVmZmVyQFdURkBAUUFF
X05BQVZBcnJheUJ1ZmZlckNvbnRlbnRzQDJAQUFWPyRWZWN0b3JAVj8kUmVmUHRyQFZBcnJheUJ1
ZmZlclZpZXdAV1RGQEBAV1RGQEAkMEFAQDJAQFoKICAgICA/dHJ5RmFzdENhbGxvY0BXVEZAQFlB
P0FVVHJ5TWFsbG9jUmV0dXJuVmFsdWVAMUBJSUBaCiAgICAgP3RyeUZhc3RNYWxsb2NAV1RGQEBZ
QT9BVVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUBaCkBAIC0zNzYsNyArMzY1LDYgQEAgRVhQT1JU
UwogICAgID91bmxvY2tATXV0ZXhAV1RGQEBRQUVYWFoKICAgICA/dW5sb2NrQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZQVhYWgogICAgID91bnByb3RlY3RASGVhcEBKU0NA
QFFBRV9OVkpTVmFsdWVAMkBAWgotICAgID91dGY4QFVTdHJpbmdASlNDQEBRQkU/QVZDU3RyaW5n
QFdURkBAX05AWgogICAgID92YWxpZGF0ZUBNYXJrU3RhY2tASlNDQEBLQVhQQVZKU0NlbGxAMkBA
WgogICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFsT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJA
QUFWU2xvdFZpc2l0b3JAMkBAWgogICAgID92aXNpdENoaWxkcmVuQEpTR2xvYmFsVGhpc0BKU0NA
QEtBWFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggYzc4Y2VmYjY4
ZGRkYzZkOWMyMzQyMjc2MTNkYTQxNjQ3MTUyMTk5OS4uOTUwOTUyMmQ5MzIzZTlkYzRlYmM0ZmJl
MTBjMmNlMTU1M2IzNWExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTEyODYsMjYgKzEyODYsNiBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFVT
dHJpbmcuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxydW50aW1lXFVTdHJpbmcuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQot
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nQnVpbGRlci5oIgotCQkJCT4K
LQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFVT
dHJpbmdDb25jYXRlbmF0ZS5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFVTdHJpbmdJbXBsLmgiCi0JCQkJPgotCQkJPC9GaWxl
PgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcV2Vha0dDTWFwLmgi
CiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjRm
NTZjNGM4MTQzMTNkM2FkZjg2MzQ0M2I5YmVlZWUyNTM0MDU4Li43NzJhMWFiMzY2Mjc4MzI4ZjFi
OGE1MTcxZTRjZjFkMDcwMTQyOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTgsNyArNTgsNiBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0JCTA4RERBNUMxMTI2NDYzMTcwMDc1MTcz
MiAvKiBVU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDhEREE1QkIxMjY0NUYxRDAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwNzc2
QkYxNEZGMDAyQjAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA3NzZCRDE0RkYwMDI4MDAxMDIz
MzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87
IH07CiAJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMjksNyArMzI4LDYgQEAKIAkJMTQ0NjlERUIx
MDdFQzdFNzAwNjUwNDQ2IC8qIFN0cmluZ0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0MwMEUxNkVFMzMwMEIzNDQ2MCAv
KiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTE0NDY5REVDMTA3RUM3RTcwMDY1MDQ0
NiAvKiBTdHJpbmdPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMxOEMzQzIwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5jcHAg
Ki87IH07CiAJCTE0NDY5REVEMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzUw
RTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgKi87IH07Ci0JCTE0NDY5REVF
MTA3RUM3RTcwMDY1MDQ0NiAvKiBVU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODg1MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5n
LmNwcCAqLzsgfTsKIAkJMTQ0ODM2RTcxMzJEQTdCRTAwNUJFNzg1IC8qIENvbnNlcnZhdGl2ZVJv
b3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDlE
QUFGMjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2VydmF0aXZlUm9vdHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDU3MjI4NjE0MzdFMTQwMDA1
RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ1NzIyODUxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDZB
QUIzODBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDZBQUIzNzBCNjZBOTQ0MDBFNTVGMTYg
LyogSlNTdHJpbmdSZWZDRi5jcHAgKi87IH07CkBAIC02NjEsNyArNjU5LDYgQEAKIAkJQkMxOEM0
NjgwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ09iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8qIFN0
cmluZ09iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDMThDNDZBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0M2MEUxNkVF
MzMwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ2QjBFMTZGNUNEMDBCMzQ0NjAgLyogU3lt
Ym9sVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDMThDNDc2MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBVU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNjkyQTg4NjAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDdBMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBXZWJLaXRB
dmFpbGFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCUJDMThDNTI0MEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLzsgfTsKIAkJQkMxOEM1MjYw
RTE2RkNBNzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDNTI1MEUxNkZDQTcwMEIzNDQ2MCAv
KiBTdHJpbmdQcm90b3R5cGUubHV0LmggKi87IH07CkBAIC04MTQsOCArODExLDYgQEAKIC8qIEVu
ZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCi0JCTA4OTZDMjlCMTI2NUFBRjYwMEIxQ0REMyAvKiBVU3RyaW5n
Q29uY2F0ZW5hdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVN0cmluZ0Nv
bmNhdGVuYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4RERBNUJCMTI2NDVG
MUQwMDc1MTczMiAvKiBVU3RyaW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVU3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjA3NzZCRDE0RkYwMDI4MDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29tcGlsYXRpb25FZmZvcnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50
RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJ
bnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRF
bnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTUxMyw4ICsxNTA4LDYgQEAKIAkJRjY5MkE4N0MwMjU1NTk3
RDAxRkY2MEY3IC8qIFJlZ0V4cE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGNjkyQTg3RDAyNTU1OTdEMDFGRjYwRjcgLyogUmVn
RXhwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlZ0V4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
fTsKIAkJRjY5MkE4N0UwMjU1NTk3RDAxRkY2MEY3IC8qIFJlZ0V4cC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwotCQlGNjkyQTg4NTAyNTU1OTdEMDFGRjYw
RjcgLyogVVN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB9OwotCQlGNjkyQTg4NjAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4ODcw
MjU1NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYzIC8q
IFZNSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZN
SW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0QTMzMUUxNUJE
MkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZNSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjI2
LDEwICsyMjE5LDYgQEAKIAkJCQk1RDUzNzI2RDBFMUM1NDZCMDAyMUU1NDkgLyogVHJhY2luZy5k
ICovLAogCQkJCTVENTM3MjZFMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFjaW5nLmggKi8sCiAJCQkJ
ODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovLAotCQkJ
CUY2OTJBODg1MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmNwcCAqLywKLQkJCQlGNjkyQTg4
NjAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5oICovLAotCQkJCTA4RERBNUJCMTI2NDVGMUQw
MDc1MTczMiAvKiBVU3RyaW5nQnVpbGRlci5oICovLAotCQkJCTA4OTZDMjlCMTI2NUFBRjYwMEIx
Q0REMyAvKiBVU3RyaW5nQ29uY2F0ZW5hdGUuaCAqLywKIAkJCQkxNEJGQ0U2ODEwQ0RCMUZDMDAz
NjRDQ0UgLyogV2Vha0dDTWFwLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQyIC8q
IFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVC
YXJyaWVyLmggKi8sCkBAIC0yNzc3LDggKzI3NjYsNiBAQAogCQkJCTVENTM3MjZGMEUxQzU0ODgw
MDIxRTU0OSAvKiBUcmFjaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjY3MzlEMzEzQkZERTcx
MDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVG
MDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQkMxOEM0NzYwRTE2RjVDRDAwQjM0NDYwIC8qIFVTdHJpbmcuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTA4RERBNUMxMTI2NDYzMTcwMDc1MTczMiAvKiBVU3RyaW5nQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJv
ZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDgxNDYwQ0JCMzAwMTMxRjhGIC8qIFZh
bHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ5MTQ2MENCQjcwMDEzMUY4
RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzQyMiw3ICszNDA5LDYg
QEAKIAkJCQlCQ0NGMEQwQzBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2Vu
ZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEE0MkUzRjBGNEY2MEVFMDA1OTkwOTkg
LyogVGltZW91dENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMTQ0NjlERUUxMDdFQzdF
NzAwNjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MTYxNDA1
MTFCNTAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QzgxNTBCMTQwNDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCmluZGV4IGVkOGQyNzhm
NmNlY2MzODRkYmY0NzdhNWIwN2VkNTk4ODUxNmUyZjguLjU0OTI3MmQzODc5OGM4NWNlNjk5ZDlm
NGJkOWEzNWVhZWU4ZDg2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCkBAIC0yNTQsNyAr
MjU0LDYgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKICAgICBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcCBcCiAgICAgcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHAg
XAotICAgIHJ1bnRpbWUvVVN0cmluZy5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcCBc
CiAgICAgdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAgXAogICAgIHlhcnIvWWFyckpJVC5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzZmUy
OTY1ZTUxZjEwMTIwMzEyNzM4MDg2Y2FkMjFkM2E5YTUxNjFhLi5kNTExMTI0YjcyOWI2YTEwZTlk
Yjk5MTVhZGI2NWE1ZGU3NzI4MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJNZXRob2RDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUg
IlJlcGF0Y2hCdWZmZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNs
dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvVW51c2VkUGFyYW0uaD4KQEAgLTYyLDM2ICs2MSwzNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVz
aW5nIG5hbWVzcGFjZSBERkc7CiAjZW5kaWYKIAotc3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVz
KGNvbnN0IFVTdHJpbmcmIHN0cikKK3N0YXRpYyBTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFN0
cmluZyYgc3RyKQogewotICAgIFVTdHJpbmcgcmVzdWx0ID0gc3RyOworICAgIFN0cmluZyByZXN1
bHQgPSBzdHI7CiAgICAgc2l6ZV90IHBvcyA9IDA7CiAgICAgd2hpbGUgKChwb3MgPSByZXN1bHQu
ZmluZCgnXCInLCBwb3MpKSAhPSBub3RGb3VuZCkgewotICAgICAgICByZXN1bHQgPSBtYWtlVVN0
cmluZyhyZXN1bHQuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgcG9zKSwgIlwiXFxcIlwiIiwgcmVz
dWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKHBvcyArIDEpKTsKKyAgICAgICAgcmVzdWx0ID0gbWFr
ZVN0cmluZyhyZXN1bHQuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgcG9zKSwgIlwiXFxcIlwiIiwg
cmVzdWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKHBvcyArIDEpKTsKICAgICAgICAgcG9zICs9IDQ7
CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBVU3RyaW5nIHZhbHVlVG9T
b3VyY2VTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbCkKK3N0YXRpYyBTdHJpbmcg
dmFsdWVUb1NvdXJjZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsKQogewogICAg
IGlmICghdmFsKQogICAgICAgICByZXR1cm4gIjAiOwogCiAgICAgaWYgKHZhbC5pc1N0cmluZygp
KQotICAgICAgICByZXR1cm4gbWFrZVVTdHJpbmcoIlwiIiwgZXNjYXBlUXVvdGVzKHZhbC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCAiXCIiKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIlwiIiwgZXNjYXBlUXVvdGVzKHZhbC50b1dURlN0cmluZyhleGVjKSksICJcIiIpOwogCiAg
ICAgcmV0dXJuIHZhbC5kZXNjcmlwdGlvbigpOwogfQogCiBzdGF0aWMgQ1N0cmluZyBjb25zdGFu
dE5hbWUoRXhlY1N0YXRlKiBleGVjLCBpbnQgaywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gbWFrZVVTdHJpbmcodmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCB2YWx1ZSksICIoQGsiLCBV
U3RyaW5nOjpudW1iZXIoayAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSwgIikiKS51dGY4
KCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcodmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCB2YWx1
ZSksICIoQGsiLCBTdHJpbmc6Om51bWJlcihrIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgp
LCAiKSIpLnV0ZjgoKTsKIH0KIAogc3RhdGljIENTdHJpbmcgaWROYW1lKGludCBpZDAsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQogewotICAgIHJldHVybiBtYWtlVVN0cmluZyhpZGVudC51c3Ry
aW5nKCksICIoQGlkIiwgVVN0cmluZzo6bnVtYmVyKGlkMCksICIpIikudXRmOCgpOworICAgIHJl
dHVybiBtYWtlU3RyaW5nKGlkZW50LnVzdHJpbmcoKSwgIihAaWQiLCBTdHJpbmc6Om51bWJlcihp
ZDApLCAiKSIpLnV0ZjgoKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZUNvbW1l
bnRBbmROZXdMaW5lKGludCBsb2NhdGlvbikKQEAgLTExNCwxMCArMTEzLDEwIEBAIENTdHJpbmcg
Q29kZUJsb2NrOjpyZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiBleGVjLCBpbnQgcikgY29uc3QKICAg
ICBpZiAoaXNDb25zdGFudFJlZ2lzdGVySW5kZXgocikpCiAgICAgICAgIHJldHVybiBjb25zdGFu
dE5hbWUoZXhlYywgciwgZ2V0Q29uc3RhbnQocikpOwogCi0gICAgcmV0dXJuIG1ha2VVU3RyaW5n
KCJyIiwgVVN0cmluZzo6bnVtYmVyKHIpKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
InIiLCBTdHJpbmc6Om51bWJlcihyKSkudXRmOCgpOwogfQogCi1zdGF0aWMgVVN0cmluZyByZWdl
eHBUb1NvdXJjZVN0cmluZyhSZWdFeHAqIHJlZ0V4cCkKK3N0YXRpYyBTdHJpbmcgcmVnZXhwVG9T
b3VyY2VTdHJpbmcoUmVnRXhwKiByZWdFeHApCiB7CiAgICAgY2hhciBwb3N0Zml4WzVdID0geyAn
LycsIDAsIDAsIDAsIDAgfTsKICAgICBpbnQgaW5kZXggPSAxOwpAQCAtMTI4LDE1ICsxMjcsMTUg
QEAgc3RhdGljIFVTdHJpbmcgcmVnZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRXhwKiByZWdFeHApCiAg
ICAgaWYgKHJlZ0V4cC0+bXVsdGlsaW5lKCkpCiAgICAgICAgIHBvc3RmaXhbaW5kZXhdID0gJ20n
OwogCi0gICAgcmV0dXJuIG1ha2VVU3RyaW5nKCIvIiwgcmVnRXhwLT5wYXR0ZXJuKCksIHBvc3Rm
aXgpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCIvIiwgcmVnRXhwLT5wYXR0ZXJuKCksIHBvc3Rm
aXgpOwogfQogCiBzdGF0aWMgQ1N0cmluZyByZWdleHBOYW1lKGludCByZSwgUmVnRXhwKiByZWdl
eHApCiB7Ci0gICAgcmV0dXJuIG1ha2VVU3RyaW5nKHJlZ2V4cFRvU291cmNlU3RyaW5nKHJlZ2V4
cCksICIoQHJlIiwgVVN0cmluZzo6bnVtYmVyKHJlKSwgIikiKS51dGY4KCk7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcocmVnZXhwVG9Tb3VyY2VTdHJpbmcocmVnZXhwKSwgIihAcmUiLCBTdHJpbmc6
Om51bWJlcihyZSksICIpIikudXRmOCgpOwogfQogCi1zdGF0aWMgVVN0cmluZyBwb2ludGVyVG9T
b3VyY2VTdHJpbmcodm9pZCogcCkKK3N0YXRpYyBTdHJpbmcgcG9pbnRlclRvU291cmNlU3RyaW5n
KHZvaWQqIHApCiB7CiAgICAgY2hhciBidWZmZXJbMiArIDIgKiBzaXplb2Yodm9pZCopICsgMV07
IC8vIDB4IFt0d28gY2hhcmFjdGVycyBwZXIgYnl0ZV0gXDAKICAgICBzbnByaW50ZihidWZmZXIs
IHNpemVvZihidWZmZXIpLCAiJXAiLCBwKTsKQEAgLTY0Miw3ICs2NDEsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIEFTU0VSVCghKChpICsgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJT
d2l0Y2hKdW1wVGFibGVzW2ldLm1pbikgJiB+MHhGRkZGKSk7CiAgICAgICAgICAgICAgICAgVUNo
YXIgY2ggPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZW50cnkgKyBtX3JhcmVEYXRhLT5tX2NoYXJhY3Rl
clN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCJcdFx0
XCIlc1wiID0+ICUwNGRcbiIsIFVTdHJpbmcoJmNoLCAxKS51dGY4KCkuZGF0YSgpLCAqaXRlcik7
CisgICAgICAgICAgICAgICAgZGF0YUxvZygiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmco
JmNoLCAxKS51dGY4KCkuZGF0YSgpLCAqaXRlcik7CiAgICAgICAgIH0KICAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwpAQCAtNjU2LDcgKzY1NSw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGRhdGFM
b2coIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmlu
Z09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICBmb3IgKFN0
cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYmVnaW4o
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCJcdFx0XCIl
c1wiID0+ICUwNGRcbiIsIFVTdHJpbmcoaXRlci0+Zmlyc3QpLnV0ZjgoKS5kYXRhKCksIGl0ZXIt
PnNlY29uZC5icmFuY2hPZmZzZXQpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIlx0XHRcIiVz
XCIgPT4gJTA0ZFxuIiwgU3RyaW5nKGl0ZXItPmZpcnN0KS51dGY4KCkuZGF0YSgpLCBpdGVyLT5z
ZWNvbmQuYnJhbmNoT2Zmc2V0KTsKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIH1cbiIpOwog
ICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CkBAIC0zMDAyLDEyICszMDAxLDEyIEBAIGJvb2wg
Q29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotVVN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihpbnQgcmVnaXN0ZXJO
dW1iZXIpCitTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoaW50IHJlZ2lzdGVyTnVt
YmVyKQogewogICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3N5bWJvbFRhYmxlLT5l
bmQoKTsKICAgICBmb3IgKFN5bWJvbFRhYmxlOjppdGVyYXRvciBwdHIgPSBtX3N5bWJvbFRhYmxl
LT5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICBpZiAocHRyLT5zZWNvbmQu
Z2V0SW5kZXgoKSA9PSByZWdpc3Rlck51bWJlcikKLSAgICAgICAgICAgIHJldHVybiBVU3RyaW5n
KHB0ci0+Zmlyc3QpOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhwdHItPmZpcnN0KTsKICAg
ICB9CiAgICAgaWYgKG5lZWRzQWN0aXZhdGlvbigpICYmIHJlZ2lzdGVyTnVtYmVyID09IGFjdGl2
YXRpb25SZWdpc3RlcigpKQogICAgICAgICByZXR1cm4gImFjdGl2YXRpb24iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDRhNTA4MGIyMDI0ZmQyNWI2
OWQwNDc2YjFjODhlNDk1ODUyNzNlMDcuLmE2NGZkNmRjYzQ3OTk3ZmEyODkyODdiMTU5NGU0MWNm
OTY2ZjZlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTY0LDcgKzY0LDYgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9i
amVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCi0jaW5jbHVkZSAiVVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNsdWRlICJWYWx1
ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCkBAIC03NSw2ICs3NCw3IEBACiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIC8vIFNldCBFTkFCTEVfQllURUNPREVfQ09NTUVOVFMgdG8gMSB0byBlbmFibGUgcmVjb3Jk
aW5nIGJ5dGVjb2RlIGdlbmVyYXRvcgogLy8gY29tbWVudHMgZm9yIHRoZSBieXRlY29kZXMgdGhh
dCBpdCBnZW5lcmF0ZXMuIFRoaXMgd2lsbCBhbGxvdwpAQCAtNTgzLDcgKzU4Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKICAgICAgICAgCi0g
ICAgICAgIFVTdHJpbmcgbmFtZUZvclJlZ2lzdGVyKGludCByZWdpc3Rlck51bWJlcik7CisgICAg
ICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoaW50IHJlZ2lzdGVyTnVtYmVyKTsKICAgICAgICAg
CiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAppbmRleCBmYmExZDMyZjVmZjAzODg2NDkzODg0
MTg2ZmJlMzMwNDI3ZDE1N2Q0Li44NjM5MTZhZTkzYmU1YWMwZDgwYjJiY2Y3Njc4MDBkMWM0MWJk
MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVD
YWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hl
LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNl
ci5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDUsMTQgKzQ0LDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRXZhbENvZGVDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFs
RXhlY3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBVU3RyaW5nJiBl
dmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKKyAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291
cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFpblN0cmljdENvbnRleHQgJiYgZXZhbFNvdXJjZS5sZW5ndGgoKSA8IG1heENhY2hlYWJs
ZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4tPmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2UuaW1w
bCgpKS5nZXQoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgVVN0cmluZyYgZXZh
bFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4Y2VwdGlvblZh
bHVlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5n
JiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNWYWx1ZSYgZXhjZXB0
aW9uVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhl
Y3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShldmFsU291
cmNlKSwgaW5TdHJpY3RDb250ZXh0KTsKICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gZXZh
bEV4ZWN1dGFibGUtPmNvbXBpbGUoZXhlYywgc2NvcGVDaGFpbik7CkBAIC02NSw3ICs2NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0KEV4ZWNTdGF0ZSog
ZXhlYywgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25z
dCBVU3RyaW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNWYWx1
ZSYgZXhjZXB0aW9uVmFsdWUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXQoRXhlY1N0YXRl
KiBleGVjLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIGNv
bnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFs
dWUmIGV4Y2VwdGlvblZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBFdmFsRXhlY3V0YWJs
ZSogZXZhbEV4ZWN1dGFibGUgPSB0cnlHZXQoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNlLCBz
Y29wZUNoYWluKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0p1bXBUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5o
CmluZGV4IDViYmUwNDcxMDdmNWIwMWMwMjg5YmVhMzMxODZlMWY4NGEzYWFmYzcuLmNiMGRlZjU2
ZWM3MGRmY2FlZjVmYjA2NzUzOWNjMjdhNmViNTkxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNkZWZpbmUgSnVtcFRh
YmxlX2gKIAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDA1ZGY5Y2FmYmMzMzQxMTdjYzMzN2RhMjQ4NzFkOGNlM2JiZGFk
YzQuLjU1NmYzNjFmZWVkMzQ1N2ZiMmZmNTdiNWVlZGQ3N2I4YmJjN2RhZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lz
dGVySUQqIGRzdAogICAgICAgICAgICAgJiYgc3JjMS0+aXNUZW1wb3JhcnkoKQogICAgICAgICAg
ICAgJiYgbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYzItPmluZGV4KCkp
CiAgICAgICAgICAgICAmJiBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT5pbmRl
eCgpKS5nZXQoKS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBjb25zdCBVU3RyaW5nJiB2YWx1
ZSA9IGFzU3RyaW5nKG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKHNyYzItPmluZGV4KCkp
LmdldCgpKS0+dHJ5R2V0VmFsdWUoKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUg
PSBhc1N0cmluZyhtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT5pbmRleCgpKS5n
ZXQoKSktPnRyeUdldFZhbHVlKCk7CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInVuZGVmaW5l
ZCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CiAgICAgICAgICAgICAgICAg
ZW1pdE9wY29kZShvcF9pc191bmRlZmluZWQpOwpAQCAtMjQ0Niw3ICsyNDQ2LDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeUFuZEVtaXRDYXRjaChUcnlEYXRhKiB0cnlE
YXRhLCBSZWdpc3RlcklEKgogICAgIHJldHVybiB0YXJnZXRSZWdpc3RlcjsKIH0KIAotdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgVVN0cmluZyYg
bWVzc2FnZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9y
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3JlZmVy
ZW5jZV9lcnJvcik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUo
anNTdHJpbmcoZ2xvYmFsRGF0YSgpLCBtZXNzYWdlKSktPmluZGV4KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IGJjMGY2ZGIyODRiNTU3OTE1M2M4Y2NlOTg5OGNmNDgxOGQ5ZWNlODguLjc5YTNmMzY4Mjdj
NWE2MGFmNzY4ZmFhZjdjY2FkYWEwNDczNDMzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUyMCw3ICs1
MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVtaXRVbmFyeU5vRHN0T3Aob3Bf
dGhyb3csIGV4Yyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVtaXRUaHJvd1JlZmVyZW5j
ZUVycm9yKGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpOworICAgICAgICB2b2lkIGVtaXRUaHJvd1Jl
ZmVyZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICAgICAgdm9pZCBlbWl0
UHVzaE5ld1Njb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHks
IFJlZ2lzdGVySUQqIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDBkNjM4MDgzYTYzYmZhNDg3MWExOWVj
MTQzZTFlOTZiNTI0OWQyYzQuLmFjMzc1NDUxNzcyNjA5NWZjZjA0ZjJkNGFkNTY0MDYzMjdhMmQy
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgog
I2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KQEAgLTc3LDcgKzc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YTo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK1JlZ2lzdGVySUQqIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKG1lc3NhZ2UpOwpAQCAtMTgwOCw3ICsxODA3
LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NsYXVzZUxpc3QoQ2xhdXNlTGlzdE5vZGUqIGxpc3Qs
IFZlY3RvcjxFeHByZXNzaW9uTm9kZSosIDg+JgogICAgICAgICAgICAgICAgIHR5cGVGb3JUYWJs
ZSA9IFN3aXRjaE5laXRoZXI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBjb25zdCBVU3RyaW5nJiB2YWx1ZSA9IHN0YXRpY19jYXN0PFN0cmluZ05v
ZGUqPihjbGF1c2VFeHByZXNzaW9uKS0+dmFsdWUoKS51c3RyaW5nKCk7CisgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHZhbHVlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KGNsYXVzZUV4cHJl
c3Npb24pLT52YWx1ZSgpLnVzdHJpbmcoKTsKICAgICAgICAgICAgIGlmIChzaW5nbGVDaGFyYWN0
ZXJTd2l0Y2ggJj0gdmFsdWUubGVuZ3RoKCkgPT0gMSkgewogICAgICAgICAgICAgICAgIGludDMy
X3QgaW50VmFsID0gdmFsdWVbMF07CiAgICAgICAgICAgICAgICAgaWYgKGludFZhbCA8IG1pbl9u
dW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCAw
YTY2ZDZmMzRlNmY0YmM5Y2M2ZDA0N2JmOTg2ZGZiNDFiNzBlYmQwLi5lZDU2YTUzY2Q2ODUxZDkx
NTc4ZWQ2M2VhYjEyZjU5Y2Q2YTFmNWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIFJlY29tcGlsZXI6On5S
ZWNvbXBpbGVyKCkKICAgICAvLyBKYXZhU2NyaXB0IGluIHRoZSBpbnNwZWN0b3IuCiAgICAgU291
cmNlUHJvdmlkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc291cmNlUHJvdmlkZXJzLmVu
ZCgpOwogICAgIGZvciAoU291cmNlUHJvdmlkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBt
X3NvdXJjZVByb3ZpZGVycy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICBt
X2RlYnVnZ2VyLT5zb3VyY2VQYXJzZWQoaXRlci0+c2Vjb25kLCBpdGVyLT5maXJzdCwgLTEsIFVT
dHJpbmcoKSk7CisgICAgICAgIG1fZGVidWdnZXItPnNvdXJjZVBhcnNlZChpdGVyLT5zZWNvbmQs
IGl0ZXItPmZpcnN0LCAtMSwgU3RyaW5nKCkpOwogfQogCiBpbmxpbmUgdm9pZCBSZWNvbXBpbGVy
OjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIERlYnVn
Z2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAg
ICAgZ2xvYmFsRGF0YS0+aGVhcC5vYmplY3RTcGFjZSgpLmZvckVhY2hDZWxsKHJlY29tcGlsZXIp
OwogfQogCi1KU1ZhbHVlIGV2YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWUoY29uc3QgVVN0cmluZyYg
c2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CitKU1ZhbHVlIGV2YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IEpTVmFsdWUmIGV4Y2VwdGlvbiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBDYWxsRnJhbWUqIGdsb2JhbENhbGxGcmFtZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBiYzc0
MzY3N2UyMjc0Mzc2ZjlkZDBkODVhYTVkNmQ4NzUxYjUwMTA5Li4zYzRhNGVkNzYyMTljYzIxZjRh
OTY2MzRjNGIyNjE3MTlkZThlYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuaApAQCAtMzIsNyArMzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIFNvdXJjZVByb3Zp
ZGVyOwotICAgIGNsYXNzIFVTdHJpbmc7CiAKICAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBE
ZWJ1Z2dlciB7CiAgICAgcHVibGljOgpAQCAtNDEsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzb3Vy
Y2VQYXJzZWQoRXhlY1N0YXRlKiwgU291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lTnVtYmVy
LCBjb25zdCBVU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmVO
dW1iZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qs
IGludCwgaW50LCBib29sKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgPSAwOwpAQCAtNjAs
NyArNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgLy8gVGhpcyBmdW5jdGlv
biBleGlzdHMgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBX
ZWJTY3JpcHREZWJ1Z2dlciBjbGllbnRzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0
aW9uLCBKU0dsb2JhbE9iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZh
bHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBXVEY6OlN0cmluZyYsIEpTVmFsdWUmIGV4Y2Vw
dGlvbiwgSlNHbG9iYWxPYmplY3QqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAK
aW5kZXggNGMyNTU0ZjFhMmNhNDI5YzIyOTViYmUwZDI5NjE0Y2YwMTkzYjg0Yy4uZTIzNDY4MDM1
MTQ1NDFkMTBjNTMyODYyODQ0MzBjMjAwYjk3NDk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9hY3RpdmF0aW9uKTsKIH0KIAotVVN0cmluZyBEZWJ1Z2dlckFjdGl2YXRpb246OmNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIERlYnVnZ2VyQWN0aXZhdGlvbjo6Y2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgRGVidWdnZXJBY3Rp
dmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IERlYnVnZ2VyQWN0aXZhdGlvbio+KG9i
amVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFibGUo
KS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5kZXgg
MDdkMjAxNDFmNDk5Yzc2ODk0NDBiZDBlMTgyM2Y3ZTg5ZWNkYzRiOC4uYzkzNDQwN2ZjMjI5M2I2
MjA4NWM0MzJhNTBlNzEzMjA0YjU0ZmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLSAgICAgICAgc3RhdGljIFVTdHJpbmcgY2xhc3NO
YW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNv
bnN0IEpTT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0Vmly
dHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBhNDhlN2QxNTYxMmNjYjdjMjlkMGRlZjlkMDNl
NjdkMGJlODMxZDc0Li4zZjhjOWNhMTVkODFlZWQ3OGY0YjA0ZDk4ZDViZjg5MjhkMWFlYTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IFVT
dHJpbmcqIERlYnVnZ2VyQ2FsbEZyYW1lOjpmdW5jdGlvbk5hbWUoKSBjb25zdAorY29uc3QgU3Ry
aW5nKiBEZWJ1Z2dlckNhbGxGcmFtZTo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MCwxNSAr
NTAsMTUgQEAgY29uc3QgVVN0cmluZyogRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuICZqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKS0+bmFtZSht
X2NhbGxGcmFtZSk7CiB9CiAgICAgCi1VU3RyaW5nIERlYnVnZ2VyQ2FsbEZyYW1lOjpjYWxjdWxh
dGVkRnVuY3Rpb25OYW1lKCkgY29uc3QKK1N0cmluZyBEZWJ1Z2dlckNhbGxGcmFtZTo6Y2FsY3Vs
YXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbGxGcmFtZS0+Y29kZUJs
b2NrKCkpCi0gICAgICAgIHJldHVybiBVU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IG1fY2FsbEZyYW1lLT5jYWxsZWUoKTsKIAog
ICAgIGlmICghZnVuY3Rpb24pCi0gICAgICAgIHJldHVybiBVU3RyaW5nKCk7CisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAogICAgIHJldHVybiBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUobV9j
YWxsRnJhbWUsIGZ1bmN0aW9uKTsKIH0KQEAgLTg0LDcgKzg0LDcgQEAgSlNPYmplY3QqIERlYnVn
Z2VyQ2FsbEZyYW1lOjp0aGlzT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gYXNPYmplY3QodGhp
c1ZhbHVlKTsKIH0KIAotSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3Qg
VVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0CitKU1ZhbHVlIERlYnVn
Z2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhj
ZXB0aW9uKSBjb25zdAogewogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAppbmRleCBkY2E3NDg3YzA3YjQwOGNhZWU5Y2VjOGNi
ZDdiOGEwNjBmZjUyYzcyLi5jNDU3Nzc1Y2ZjYzcxYThlNzNjYzkxMDk5YzQzMThiNDU5NDc4OWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuaApAQCAtNTEsMTEgKzUxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lOyB9CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsgfQogICAgICAgICBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7
IH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1l
KCkgY29uc3Q7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgY2FsY3VsYXRlZEZ1
bmN0aW9uTmFtZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBTdHJp
bmcqIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJp
bmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBUeXBlIHR5cGUoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmpl
Y3QqIHRoaXNPYmplY3QoKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTdHJpbmcmLCBK
U1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZXhjZXB0aW9uOyB9CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IYW5kbGUuaAppbmRleCA2MmYyNjdlMTJjMmZlNGEzMDNkOGQ5NDg0ZjYwMjNiNjE4
YjBlZTg5Li4zYjYyZTIwNTQ0ODJjNWJhMzA1YmE3OTg4NmIxMWVmODI0YzFkYThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBCYXNlPiBzdHJ1Y3QgSGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+IHsKICAg
ICBIYW5kbGU8SlNPYmplY3Q+IGFzT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIGpzVmFsdWUoKS5pc09iamVjdCgpOyB9CiAgICAgYm9vbCBnZXROdW1i
ZXIoZG91YmxlIG51bWJlcikgY29uc3QgeyByZXR1cm4ganNWYWx1ZSgpLmdldE51bWJlcihudW1i
ZXIpOyB9Ci0gICAgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgV1RG
OjpTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIGJvb2wgaXNVbmRlZmlu
ZWRPck51bGwoKSBjb25zdCB7IHJldHVybiBqc1ZhbHVlKCkuaXNVbmRlZmluZWRPck51bGwoKTsg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDZmMTNhZmI3MjVh
OTk5OWU3M2VjZjAzODQ3NDM2ZTVjM2EzM2YyMTQuLmUzNDkzYWM2NDY4NzI4NjI5Yjg0M2IzZmQ2
ZmI4M2Y5NTRmMmEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTU5LDExICs1
OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxl
OwotICAgIGNsYXNzIFVTdHJpbmc7CiAgICAgY2xhc3MgV2Vha0dDSGFuZGxlUG9vbDsKICAgICBj
bGFzcyBTbG90VmlzaXRvcjsKIAotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEpTVmFsdWUsIFVTdHJp
bmc+IFZhbHVlU3RyaW5nUGFpcjsKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxKU1ZhbHVlLCBXVEY6
OlN0cmluZz4gVmFsdWVTdHJpbmdQYWlyOwogICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8SlND
ZWxsKj4gUHJvdGVjdENvdW50U2V0OwogICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8Y29uc3Qg
Y2hhcio+IFR5cGVDb3VudFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5jcHAKaW5kZXggYjMxMzY2NDNiNGVkYjc4ZjFhZjExNTNjNzk1ZWMyMzEwMTRjOTU4ZS4uNmVm
OWY5ZTA0OWUwMjQ5NTdiOGRlY2E5NzdjY2VmNjAxNjFiMzMzNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiU2Nv
cGVDaGFpbi5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lTWV0aG9kcy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJXcml0ZUJh
cnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
CmluZGV4IGNmYmZiM2UzYWQwMzhmNzg1NDhhYzBmZmEyYTFjOTcyZmFhNTcwYzMuLmY4MjEyZWFm
ZTZhODAwMjYzOTRhMTM4MTk5MzFkNGEyYzEzMGQ4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHZvaWQg
Q2FsbEZyYW1lOjpkdW1wQ2FsbGVyKCkKIHsKICAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsKICAg
ICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICBTdHJpbmcg
dXJsU3RyaW5nOwogICAgIEpTVmFsdWUgZnVuY3Rpb247CiAgICAgCiAgICAgaW50ZXJwcmV0ZXIo
KS0+cmV0cmlldmVMYXN0Q2FsbGVyKHRoaXMsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1
cmxTdHJpbmcsIGZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDBmNTYwMjg3NzhiYjliMGE0MmYwMTQzMjJjZmMy
N2FhMzM0NWM3NGEuLjNhN2QzY2ZjZTc4NDE2NzllMmQ5MmNmMmIyYmYwOGE0NWJmZTVjZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cApAQCAtNjEsNyArNjEsNiBAQAogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUg
IlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTUwLDcgKzE0OSw3
IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHBy
b2dyYW07CiAgICAgCiAgICAgVG9wQ2FsbEZyYW1lU2V0dGVyIHRvcENhbGxGcmFtZShjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lKTsKLSAgICBVU3RyaW5nIHByb2dyYW1Tb3VyY2Ug
PSBhc1N0cmluZyhwcm9ncmFtKS0+dmFsdWUoY2FsbEZyYW1lKTsKKyAgICBTdHJpbmcgcHJvZ3Jh
bVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIGlmIChj
YWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
IApAQCAtMzYyLDcgKzM2MSw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgd2hpbGUgKGl0IDwgZW5kKSB7CiAgICAgICAgIEpTVmFs
dWUgdiA9IGl0LT5qc1ZhbHVlKCk7CiAgICAgICAgIGludCByZWdpc3Rlck51bWJlciA9IGl0IC0g
Y2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICAgICAgVVN0cmluZyBuYW1lID0gY29kZUJsb2Nr
LT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJOdW1iZXIpOworICAgICAgICBTdHJpbmcgbmFtZSA9
IGNvZGVCbG9jay0+bmFtZUZvclJlZ2lzdGVyKHJlZ2lzdGVyTnVtYmVyKTsKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQogICAgICAgICBkYXRhTG9nKCJbciUgM2QgJTE0c10gICAgICB8ICUxMHAgfCAl
LTE2cyAweCVsbHggXG4iLCByZWdpc3Rlck51bWJlciwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgaXQs
IHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbHNlCkBAIC00MDEsNyAr
NDAwLDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICAgICAgZG8gewogICAgICAgICAgICAgSlNWYWx1ZSB2ID0gaXQtPmpzVmFsdWUo
KTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck51bWJlciA9IGl0IC0gY2FsbEZyYW1lLT5yZWdp
c3RlcnMoKTsKLSAgICAgICAgICAgIFVTdHJpbmcgbmFtZSA9IGNvZGVCbG9jay0+bmFtZUZvclJl
Z2lzdGVyKHJlZ2lzdGVyTnVtYmVyKTsKKyAgICAgICAgICAgIFN0cmluZyBuYW1lID0gY29kZUJs
b2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJOdW1iZXIpOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgICAgICAgICBkYXRhTG9nKCJbciUgM2QgJTE0c10gICAgICB8ICUxMHAgfCAlLTE2
cyAweCVsbHggXG4iLCByZWdpc3Rlck51bWJlciwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgaXQsIHYu
ZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbHNlCkBAIC01MzIsMTAgKzUz
MSwxMCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgaWYgKCFqc01lc3NhZ2UgfHwgIWpz
TWVzc2FnZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBVU3RyaW5nIG1lc3Nh
Z2UgPSBhc1N0cmluZyhqc01lc3NhZ2UpLT52YWx1ZShjYWxsRnJhbWUpOworICAgIFN0cmluZyBt
ZXNzYWdlID0gYXNTdHJpbmcoanNNZXNzYWdlKS0+dmFsdWUoY2FsbEZyYW1lKTsKIAogICAgIGlm
IChleHByZXNzaW9uU3RhcnQgPCBleHByZXNzaW9uU3RvcCkKLSAgICAgICAgbWVzc2FnZSA9ICBt
YWtlVVN0cmluZyhtZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBjb2RlQmxvY2stPnNvdXJjZSgp
LT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25TdG9wKSwgIicpIik7CisgICAg
ICAgIG1lc3NhZ2UgPSAgbWFrZVN0cmluZyhtZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBjb2Rl
QmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25TdG9w
KSwgIicpIik7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIE5vIHJhbmdlIGluZm9ybWF0aW9uLCBz
byBnaXZlIGEgZmV3IGNoYXJhY3RlcnMgb2YgY29udGV4dAogICAgICAgICBjb25zdCBTdHJpbmdJ
bXBsKiBkYXRhID0gY29kZUJsb2NrLT5zb3VyY2UoKS0+ZGF0YSgpOwpAQCAtNTUyLDcgKzU1MSw3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAgICAgICAgIHN0b3ArKzsKICAgICAgICAg
d2hpbGUgKHN0b3AgPiBleHByZXNzaW9uU3RhcnQgJiYgaXNTdHJXaGl0ZVNwYWNlKCgqZGF0YSlb
c3RvcCAtIDFdKSkKICAgICAgICAgICAgIHN0b3AtLTsKLSAgICAgICAgbWVzc2FnZSA9IG1ha2VV
U3RyaW5nKG1lc3NhZ2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJh
bmdlKHN0YXJ0LCBzdG9wKSwgIi4uLicpIik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KG1lc3NhZ2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKHN0
YXJ0LCBzdG9wKSwgIi4uLicpIik7CiAgICAgfQogCiAgICAgZXhjZXB0aW9uLT5wdXREaXJlY3Qo
Kmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3RyaW5n
KGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsKQEAgLTY2NSw3ICs2NjQsNyBAQCBzdGF0aWMgQ2FsbEZy
YW1lKiBnZXRDYWxsZXJJbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsCiAgICAgcmV0dXJuIGNhbGxlckZyYW1lOwogfQogCi1zdGF0aWMgQUxXQVlTX0lO
TElORSBjb25zdCBVU3RyaW5nIGdldFNvdXJjZVVSTEZyb21DYWxsRnJhbWUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpIAorc3RhdGljIEFMV0FZU19JTkxJTkUgY29uc3QgU3RyaW5nIGdldFNvdXJjZVVS
TEZyb21DYWxsRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKCFjYWxs
RnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpOwogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVS
UFJFVEVSKQpAQCAtNzA2LDEzICs3MDUsMTMgQEAgdm9pZCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tU
cmFjZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmUKICAg
ICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPnRydWVDYWxsRnJhbWVGcm9tVk1Db2RlKCk7CiAKICAg
ICB3aGlsZSAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZSAhPSBDYWxsRnJhbWU6Om5vQ2FsbGVyKCkp
IHsKLSAgICAgICAgVVN0cmluZyBzb3VyY2VVUkw7CisgICAgICAgIFN0cmluZyBzb3VyY2VVUkw7
CiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpKSB7CiAgICAgICAgICAgICBzb3Vy
Y2VVUkwgPSBnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKGNhbGxGcmFtZSk7CiAgICAgICAgICAg
ICBTdGFja0ZyYW1lIHMgPSB7IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFt
ZS0+Y2FsbGVlKCkpLCBnZXRTdGFja0ZyYW1lQ29kZVR5cGUoY2FsbEZyYW1lKSwgU3Ryb25nPEV4
ZWN1dGFibGVCYXNlPigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJF
eGVjdXRhYmxlKCkpLCBsaW5lLCBzb3VyY2VVUkx9OwogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQocyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7IFN0
cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBTdGFja0Zy
YW1lTmF0aXZlQ29kZSwgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPigpLCAtMSwgVVN0cmluZygpfTsK
KyAgICAgICAgICAgIFN0YWNrRnJhbWUgcyA9IHsgU3Ryb25nPEpTT2JqZWN0PigqZ2xvYmFsRGF0
YSwgY2FsbEZyYW1lLT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhl
Y3V0YWJsZUJhc2U+KCksIC0xLCBTdHJpbmcoKX07CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChzKTsKICAgICAgICAgfQogICAgICAgICB1bnNpZ25lZCB1bnVzZWRCeXRlY29kZU9mZnNldCA9
IDA7CkBAIC03NDUsNyArNzQ0LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6YWRkU3RhY2tUcmFjZUlm
TmVjZXNzYXJ5KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZXJyb3IKICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIH0KICAgICAKLSAgICBlcnJvci0+cHV0RGly
ZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5zdGFjaywganNTdHJp
bmcoZ2xvYmFsRGF0YSwgVVN0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkuaW1wbCgpKSksIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSk7CisgICAgZXJyb3ItPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+c3RhY2ssIGpzU3RyaW5nKGdsb2JhbERhdGEsIGJ1aWxk
ZXIudG9TdHJpbmcoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiB9CiAKIE5FVkVSX0lOTElO
RSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomIGNh
bGxGcmFtZSwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQpAQCAtODQ4LDcgKzg0Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3Jh
bUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBTCiAgICAgRHluYW1p
Y0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKCpzY29wZUNoYWluLT5nbG9iYWxE
YXRhLCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIFZlY3RvcjxKU09OUERh
dGE+IEpTT05QRGF0YTsKICAgICBib29sIHBhcnNlUmVzdWx0OwotICAgIGNvbnN0IFVTdHJpbmcg
cHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgY29uc3Qg
U3RyaW5nIHByb2dyYW1Tb3VyY2UgPSBwcm9ncmFtLT5zb3VyY2UoKS50b1N0cmluZygpOwogICAg
IGlmIChwcm9ncmFtU291cmNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pczhCaXQoKSkgewpAQCAtNDk1Niw3ICs0OTU1LDcg
QEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgb3JpZ2luYWwgY29uc3RydWN0b3Is
IHVzaW5nIGNvbnN0YW50IG1lc3NhZ2UgYXMgdGhlCiAgICAgICAgICAgIG1lc3NhZ2Ugc3RyaW5n
LiBUaGUgcmVzdWx0IGlzIHRocm93bi4KICAgICAgICAgKi8KLSAgICAgICAgVVN0cmluZyBtZXNz
YWdlID0gY2FsbEZyYW1lLT5yKHZQQ1sxXS51Lm9wZXJhbmQpLmpzVmFsdWUoKS50b1N0cmluZyhj
YWxsRnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGNh
bGxGcmFtZS0+cih2UENbMV0udS5vcGVyYW5kKS5qc1ZhbHVlKCkudG9TdHJpbmcoY2FsbEZyYW1l
KS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlKGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKGNhbGxGcmFtZSwgbWVzc2FnZSkpOwogICAgICAgICBnb3RvIHZt
X3Rocm93OwogICAgIH0KQEAgLTUxNDAsMTEgKzUxMzksMTEgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6cmV0cmlldmVDYWxsZXJGcm9tVk1Db2RlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0
aW9uKgogICAgIHJldHVybiBjYWxsZXI7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZl
TGFzdENhbGxlcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJf
dCYgc291cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0
Cit2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIGludCYgbGluZU51bWJlciwgaW50cHRyX3QmIHNvdXJjZUlELCBTdHJpbmcmIHNvdXJjZVVS
TCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgZnVuY3Rpb24gPSBKU1ZhbHVlKCk7
CiAgICAgbGluZU51bWJlciA9IC0xOwotICAgIHNvdXJjZVVSTCA9IFVTdHJpbmcoKTsKKyAgICBz
b3VyY2VVUkwgPSBTdHJpbmcoKTsKIAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxs
RnJhbWUtPmNhbGxlckZyYW1lKCk7CiAgICAgaWYgKGNhbGxlckZyYW1lLT5oYXNIb3N0Q2FsbEZy
YW1lRmxhZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAppbmRleCBkMDdmODNjNDg1NWUzMDkwNjRjZjQ5MTFiZjNkN2QxMDg5MDViNjhmLi44
ODA5YmNjMGI2NTQ1M2FhNWU5Mjk5YmY2YTFhMjBkNWEyNzVmYzQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNzksOCArNzksOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhY2tGcmFtZUNvZGVUeXBlIGNvZGVUeXBlOwog
ICAgICAgICBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+IGV4ZWN1dGFibGU7CiAgICAgICAgIGludCBs
aW5lOwotICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTDsKLSAgICAgICAgVVN0cmluZyB0b1N0cmlu
ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkgY29uc3QKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsK
KyAgICAgICAgU3RyaW5nIHRvU3RyaW5nKENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAogICAg
ICAgICB7CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHRyYWNlQnVpbGQ7CiAgICAgICAgICAg
ICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gZnJpZW5kbHlGdW5jdGlvbk5hbWUoY2FsbEZyYW1lKTsK
QEAgLTIzMyw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU1ZhbHVlIHJl
dHJpZXZlQXJndW1lbnRzRnJvbVZNQ29kZShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29uc3Q7
CiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVDYWxsZXJGcm9tVk1Db2RlKENhbGxGcmFtZSosIEpT
RnVuY3Rpb24qKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXRyaWV2
ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291cmNl
SUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBp
bnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgU3RyaW5nJiBzb3VyY2VVUkwsIEpT
VmFsdWUmIGZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZ2V0QXJndW1l
bnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0
ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKQEAgLTI0MSw3
ICsyNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxl
ckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomLCBKU1ZhbHVlJiwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUq
LCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IFVTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSosIFN0
YWNrRnJhbWVDb2RlVHlwZSwgY29uc3QgVVN0cmluZyYsIGludCk7CisgICAgICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSosIFN0YWNrRnJhbWVDb2RlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgaW50KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3Vs
dHMpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2FsbEZy
YW1lKiwgSlNPYmplY3QqIGVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAppbmRleCBlMGZhYTBmYWYwNTMzNGMyOWI2Zjk4YWMyNWJiNjdlMDA0Yzc4NGEzLi5lZTA0
ZDUxNDcxOGNkNzcwY2RjMjM3MzUzNjkxOTk0MGY4MjExNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzQwOSw3ICszNDA5LDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCwgb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQogICAgIFNUVUJfSU5JVF9TVEFD
S19GUkFNRShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tG
cmFtZS5jYWxsRnJhbWU7Ci0gICAgVVN0cmluZyBtZXNzYWdlID0gc3RhY2tGcmFtZS5hcmdzWzBd
LmpzVmFsdWUoKS50b1N0cmluZyhjYWxsRnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpOworICAgIFN0
cmluZyBtZXNzYWdlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS50b1N0cmluZyhjYWxs
RnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uID0gY3JlYXRlUmVmZXJlbmNlRXJyb3IoY2FsbEZyYW1lLCBtZXNzYWdlKTsKICAgICBW
TV9USFJPV19FWENFUFRJT05fQVRfRU5EKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDE3
YWI1MTU4ODNjMmFkNWRhOWZiZDJmZmQ4OGVlMGZjMmNmNjljM2EuLmYzZDliMmUxMDU2OWE4NDAz
YjAyMDUwZjE0YTczZGM4YzIwZjZiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC04MCw3ICs4
MCw3IEBACiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAotc3Rh
dGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBVU3RyaW5nJiBmaWxl
TmFtZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpOworc3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhD
b250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZl
cik7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJpbnQo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkRlYnVnKEV4ZWNTdGF0ZSopOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBib29s
IG1fZHVtcDsKICAgICBib29sIG1fZXhpdENvZGU7CiAgICAgVmVjdG9yPFNjcmlwdD4gbV9zY3Jp
cHRzOwotICAgIFZlY3RvcjxVU3RyaW5nPiBtX2FyZ3VtZW50czsKKyAgICBWZWN0b3I8U3RyaW5n
PiBtX2FyZ3VtZW50czsKIAogICAgIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50LCBjaGFyKiopOwog
fTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIHR5cGVkZWYgSlNH
bG9iYWxPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8
VVN0cmluZz4mIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIEdsb2JhbE9iamVjdCogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhl
YXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBhcmd1bWVudHMpOwpAQCAtMTg3LDcgKzE4Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVk
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFZl
Y3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQogICAg
IHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgIApA
QCAtMjUyLDcgKzI1Miw3IEBAIEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgVVN0cmluZyYg
ZmlsZW5hbWUpCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0IGNoYXIq
IHV0ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7CiAgICAgLy8gRmluZCB0aGUgdGhlIGZp
cnN0IG5vbi1hc2NpaSBjaGFyYWN0ZXIsIG9yIG51bC4KICAgICBjb25zdCBjaGFyKiBwb3MgPSB1
dGY4OwpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NTb3Vy
Y2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgVVN0cmluZyYgZmlsZW5hbWUpCiAKICAgICAvLyBG
YXN0IGNhc2UgLSBzdHJpbmcgaXMgYWxsIGFzY2lpLgogICAgIGlmICghKnBvcykKLSAgICAgICAg
cmV0dXJuIG1ha2VTb3VyY2UoVVN0cmluZyh1dGY4LCBhc2NpaUxlbmd0aCksIGZpbGVuYW1lKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VTb3VyY2UoU3RyaW5nKHV0ZjgsIGFzY2lpTGVuZ3RoKSwgZmls
ZW5hbWUpOwogCiAgICAgLy8gU2xvdyBjYXNlIC0gY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3Rl
cnMsIHVzZSBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjay4KICAgICBBU1NFUlQoKnBvcyA8IDAp
OwpAQCAtMzQ3LDEyICszNDcsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblZlcnNpb24oRXhlY1N0YXRlKikKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgVVN0cmluZyBmaWxlTmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
ZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVu
dHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9wZW4gZmls
ZS4iKSkpOwogCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6
OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdWxsKCkpLCBWZWN0b3I8VVN0cmluZz4oKSk7CisgICAg
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVjLT5n
bG9iYWxEYXRhKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERh
dGEoKSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKIAogICAgIEpTVmFsdWUgZXhjZXB0
aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0zNzAsNyArMzcwLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEV4ZWNTdGF0ZSogZXhlYykK
IHsKLSAgICBVU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0Owog
ICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVy
cm9yKGV4ZWMsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSk7CkBAIC0zODYsNyArMzg2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiBleGVj
KQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFZlY3Rvcjxj
aGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVO
YW1lLCBzY3JpcHQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKTsKQEAgLTUy
Myw3ICs1MjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiBzdGF0aWMgYm9v
bCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9y
PFNjcmlwdD4mIHNjcmlwdHMsIGJvb2wgZHVtcCkKIHsKICAgICBjb25zdCBjaGFyKiBzY3JpcHQ7
Ci0gICAgVVN0cmluZyBmaWxlTmFtZTsKKyAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgVmVjdG9y
PGNoYXI+IHNjcmlwdEJ1ZmZlcjsKIAogICAgIGlmIChkdW1wKQpAQCAtNTg2LDcgKzU4Niw3IEBA
IHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAKIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIFVTdHJpbmcgaW50ZXJwcmV0ZXJOYW1l
KCJJbnRlcnByZXRlciIpOworICAgIFN0cmluZyBpbnRlcnByZXRlck5hbWUoIkludGVycHJldGVy
Iik7CiAKICAgICB3aGlsZSAodHJ1ZSkgewogI2lmIEhBVkUoUkVBRExJTkUpICYmICFSVU5OSU5H
X0ZST01fWENPREUKQEAgLTc1MCw3ICs3NTAsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGJvb2wgZmlsbEJ1ZmZl
cldpdGhDb250ZW50c09mRmlsZShjb25zdCBVU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNoYXI+
JiBidWZmZXIpCitzdGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAgIEZJTEUqIGYg
PSBmb3BlbihmaWxlTmFtZS51dGY4KCkuZGF0YSgpLCAiciIpOwogICAgIGlmICghZikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAyYThhOGRjOWUzNjNhZDNhMjI3
MTU5NmU3NWUxOWY1ZGNjMmIzMTMxLi4wNjMxNjhiZTEzYzE2YzRiZmRlMDNmYzQ5YmE5MDAwMDNm
NTgwZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMzY4LDcg
KzM2OCw3IEBAIExleGVyPFQ+Ojp+TGV4ZXIoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LVVTdHJpbmcgTGV4ZXI8VD46OmludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCkgY29uc3QKK1N0cmlu
ZyBMZXhlcjxUPjo6aW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdAogewogICAgIHN3aXRj
aCAobV9jdXJyZW50KSB7CiAgICAgY2FzZSAwOgpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgTGV4
ZXI8VD46OnNldENvZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSogYXJl
bmEpCiAgICAgbV9lcnJvciA9IGZhbHNlOwogICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAg
IG1fY29sdW1uTnVtYmVyID0gMDsKLSAgICBtX2xleEVycm9yTWVzc2FnZSA9IFVTdHJpbmcoKTsK
KyAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmluZygpOwogICAgIAogICAgIG1fYnVmZmVyOC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwogICAgIG1f
YnVmZmVyMTYucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgobV9jb2RlRW5kIC0gbV9jb2RlKSAvIDIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDFhYzgzMmEyYzdiNWYzODJi
MzNiNzhhNWM4MzA0YjE3NTU0MGY0NzIuLmQ3NWYyMDIwZDdjMDVlZGRkMzYyYmZhZmMyNmNhOTg3
YWI2MTRmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTEwMCwxMiAr
MTAwLDEyIEBAIHB1YmxpYzoKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgdXNlIGFmdGVyIHBhcnNp
bmcuCiAgICAgYm9vbCBzYXdFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KLSAgICBV
U3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4RXJyb3JNZXNzYWdl
OyB9CisgICAgU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4RXJy
b3JNZXNzYWdlOyB9CiAgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgc2V0T2Zmc2V0KGludCBv
ZmZzZXQpCiAgICAgewogICAgICAgICBtX2Vycm9yID0gMDsKLSAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBVU3RyaW5nKCk7CisgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nKCk7
CiAgICAgICAgIG1fY29kZSA9IG1fY29kZVN0YXJ0ICsgb2Zmc2V0OwogICAgICAgICBtX2J1ZmZl
cjgucmVzaXplKDApOwogICAgICAgICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsKQEAgLTEzNyw3ICsx
MzcsNyBAQCBwcml2YXRlOgogICAgIGludCBwYXJzZUZvdXJEaWdpdFVuaWNvZGVIZXgoKTsKICAg
ICB2b2lkIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKIAotICAgIFVTdHJpbmcgaW52YWxpZENoYXJh
Y3Rlck1lc3NhZ2UoKSBjb25zdDsKKyAgICBTdHJpbmcgaW52YWxpZENoYXJhY3Rlck1lc3NhZ2Uo
KSBjb25zdDsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFQqIGN1cnJlbnRDaGFyYWN0ZXIoKSBj
b25zdDsKICAgICBBTFdBWVNfSU5MSU5FIGludCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlIC0gbV9jb2RlU3RhcnQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0T2Zm
c2V0RnJvbUNoYXJPZmZzZXQoY29uc3QgVCogY2hhck9mZnNldCkgeyBzZXRPZmZzZXQoY2hhck9m
ZnNldCAtIG1fY29kZVN0YXJ0KTsgfQpAQCAtMTgxLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzUmVwYXJzaW5nOwogICAgIGJvb2wgbV9hdExpbmVTdGFydDsKICAgICBib29sIG1f
ZXJyb3I7Ci0gICAgVVN0cmluZyBtX2xleEVycm9yTWVzc2FnZTsKKyAgICBTdHJpbmcgbV9sZXhF
cnJvck1lc3NhZ2U7CiAKICAgICBUIG1fY3VycmVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCmluZGV4IGVkMWE4NWFhZmJjODljZTE4ZjQ1MTIwMDk4NGRjYmExMmVkNzlhZjku
LmRjNjk0Y2M4YmMxZTZiMjc4YmVjN2ExZWViZWEyYTA0ZjI2MmFiZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTI3OSw3ICsyNzksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdWludDE2X3QgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7
IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRocm93UmVmZXJl
bmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdWlu
dDMyX3QgbV9kaXZvdDsKQEAgLTEzODksNyArMTM4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAKICAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2U7IH0KLSAgICAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7IH0KKyAgICAgICAgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwo
KTsgfQogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
LnByb3ZpZGVySUQoKTsgfQogCiAgICAgICAgIHZvaWQgc2V0RmVhdHVyZXMoQ29kZUZlYXR1cmVz
IGZlYXR1cmVzKSB7IG1fZmVhdHVyZXMgPSBmZWF0dXJlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDRmZDY3MWZiNzM1ZjFkZDIxNTExMTI5MzMwMzIxODRm
MzhiYzc0MDUuLmRmZWVmZDU1YTBkNWNhNDIzMjY5Y2E1OTVjYzE0NjY5ZWE0NjAwZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgxLDkgKzgxLDkgQEAgUGFy
c2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgotVVN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCitTdHJpbmcgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogewotICAgIFVTdHJpbmcgcGFyc2VFcnJvciA9
IFVTdHJpbmcoKTsKKyAgICBTdHJpbmcgcGFyc2VFcnJvcjsKICAgICAKICAgICB1bnNpZ25lZCBv
bGRGdW5jdGlvbkNhY2hlU2l6ZSA9IG1fZnVuY3Rpb25DYWNoZSA/IG1fZnVuY3Rpb25DYWNoZS0+
Ynl0ZVNpemUoKSA6IDA7CiAgICAgQVNUQnVpbGRlciBjb250ZXh0KGNvbnN0X2Nhc3Q8SlNHbG9i
YWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgY29uc3RfY2FzdDxTb3VyY2VDb2RlKj4obV9zb3VyY2Up
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDc5YTk1YjY5NjNiNDEy
OTBiY2EzYjRmYTljODU4MGZjYjYyMzU1NzYuLjNkN2QyOTk0ZGE4MjAxOTllNzg0ZmQ4OTBjOTNl
MDFjZDdmODZjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTYs
NyArNTYsNiBAQCBjbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSlNHbG9iYWxEYXRhOwogY2xhc3Mg
UHJvZ3JhbU5vZGU7CiBjbGFzcyBTb3VyY2VDb2RlOwotY2xhc3MgVVN0cmluZzsKIAogI2RlZmlu
ZSBmYWlsKCkgZG8geyBpZiAoIW1fZXJyb3IpIHVwZGF0ZUVycm9yTWVzc2FnZSgpOyByZXR1cm4g
MDsgfSB3aGlsZSAoMCkKICNkZWZpbmUgZmFpbFdpdGhUb2tlbih0b2spIGRvIHsgaWYgKCFtX2Vy
cm9yKSB1cGRhdGVFcnJvck1lc3NhZ2UodG9rKTsgcmV0dXJuIDA7IH0gd2hpbGUgKDApCkBAIC00
ODksNyArNDg4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBQYXJzZXIoKTsKLSAgICBVU3Ry
aW5nIHBhcnNlSW5uZXIoKTsKKyAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBk
aWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0
aW9uU3RhY2tzOjpWYXJTdGFjaz4qLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2Vy
QXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJl
cywKQEAgLTUyOSw5ICs1MjgsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgZ2V0VG9rZW4oKSB7CisgICAg
QUxXQVlTX0lOTElORSBTdHJpbmcgZ2V0VG9rZW4oKSB7CiAgICAgICAgIFNvdXJjZVByb3ZpZGVy
KiBzb3VyY2VQcm92aWRlciA9IG1fc291cmNlLT5wcm92aWRlcigpOwotICAgICAgICByZXR1cm4g
VVN0cmluZyhzb3VyY2VQcm92aWRlci0+Z2V0UmFuZ2UodG9rZW5TdGFydCgpLCB0b2tlbkVuZCgp
KS5pbXBsKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nKHNvdXJjZVByb3ZpZGVyLT5nZXRSYW5n
ZSh0b2tlblN0YXJ0KCksIHRva2VuRW5kKCkpLmltcGwoKSk7CiAgICAgfQogICAgIAogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBtYXRjaChKU1Rva2VuVHlwZSBleHBlY3RlZCkKQEAgLTc5Myw3ICs3
OTIsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW5hbWUpIAogICAgICAgICAgICAgdXBkYXRl
RXJyb3JNZXNzYWdlU3BlY2lhbENhc2UobV90b2tlbi5tX3R5cGUpOwogICAgICAgICBlbHNlIAot
ICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBVU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJVbmV4
cGVjdGVkIHRva2VuICclcyciLCBuYW1lKS5pbXBsKCkpOworICAgICAgICAgICAgbV9lcnJvck1l
c3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCB0b2tlbiAnJXMnIiwgbmFtZSk7CiAg
ICAgfQogICAgIAogICAgIE5FVkVSX0lOTElORSB2b2lkIHVwZGF0ZUVycm9yTWVzc2FnZShKU1Rv
a2VuVHlwZSBleHBlY3RlZFRva2VuKSAKQEAgLTgwMSw3ICs4MDAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBtX2Vycm9yID0gdHJ1ZTsKICAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IGdldFRva2Vu
TmFtZShleHBlY3RlZFRva2VuKTsKICAgICAgICAgaWYgKG5hbWUpCi0gICAgICAgICAgICBtX2Vy
cm9yTWVzc2FnZSA9IFVTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIHRva2VuICclcyci
LCBuYW1lKS5pbXBsKCkpOworICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZv
cm1hdCgiRXhwZWN0ZWQgdG9rZW4gJyVzJyIsIG5hbWUpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGlmICghZ2V0VG9rZW5OYW1lKG1fdG9rZW4ubV90eXBlKSkKICAgICAgICAgICAgICAg
ICB1cGRhdGVFcnJvck1lc3NhZ2VTcGVjaWFsQ2FzZShtX3Rva2VuLm1fdHlwZSk7CkBAIC04MTAs
NyArODA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfSAKICAgICB9CiAgICAgCi0gICAgTkVWRVJf
SU5MSU5FIHZvaWQgdXBkYXRlRXJyb3JXaXRoTmFtZUFuZE1lc3NhZ2UoY29uc3QgY2hhciogYmVm
b3JlTXNnLCBVU3RyaW5nIG5hbWUsIGNvbnN0IGNoYXIqIGFmdGVyTXNnKSAKKyAgICBORVZFUl9J
TkxJTkUgdm9pZCB1cGRhdGVFcnJvcldpdGhOYW1lQW5kTWVzc2FnZShjb25zdCBjaGFyKiBiZWZv
cmVNc2csIFN0cmluZyBuYW1lLCBjb25zdCBjaGFyKiBhZnRlck1zZykKICAgICB7CiAgICAgICAg
IG1fZXJyb3IgPSB0cnVlOwogICAgICAgICBTdHJpbmcgcHJlZml4KGJlZm9yZU1zZyk7CkBAIC04
MjUsNyArODI0LDcgQEAgcHJpdmF0ZToKICAgICBORVZFUl9JTkxJTkUgdm9pZCB1cGRhdGVFcnJv
ck1lc3NhZ2UoY29uc3QgY2hhciogbXNnKSAKICAgICB7ICAgCiAgICAgICAgIG1fZXJyb3IgPSB0
cnVlOwotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFVTdHJpbmcobXNnKTsKKyAgICAgICAgbV9l
cnJvck1lc3NhZ2UgPSBTdHJpbmcobXNnKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBzdGFydExv
b3AoKSB7IGN1cnJlbnRTY29wZSgpLT5zdGFydExvb3AoKTsgfQpAQCAtOTM4LDcgKzkzNyw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgU3RhY2tCb3VuZHMgbV9zdGFjazsKICAgICBib29sIG1fZXJy
b3I7Ci0gICAgVVN0cmluZyBtX2Vycm9yTWVzc2FnZTsKKyAgICBTdHJpbmcgbV9lcnJvck1lc3Nh
Z2U7CiAgICAgSlNUb2tlbiBtX3Rva2VuOwogICAgIGJvb2wgbV9hbGxvd3NJbjsKICAgICBpbnQg
bV9sYXN0TGluZTsKQEAgLTk4Miw3ICs5ODEsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagog
ICAgIEFTU0VSVChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoZXhjZXB0aW9uICYm
ICEqZXhjZXB0aW9uKTsKICAgICBpbnQgZXJyTGluZTsKLSAgICBVU3RyaW5nIGVyck1zZzsKKyAg
ICBTdHJpbmcgZXJyTXNnOwogCiAgICAgaWYgKFBhcnNlZE5vZGU6OnNjb3BlSXNGdW5jdGlvbikK
ICAgICAgICAgbV9sZXhlci0+c2V0SXNSZXBhcnNpbmcoKTsKQEAgLTk5MCwxMyArOTg5LDEzIEBA
IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IDA7CiAKICAg
ICBlcnJMaW5lID0gLTE7Ci0gICAgZXJyTXNnID0gVVN0cmluZygpOworICAgIGVyck1zZyA9IFN0
cmluZygpOwogCi0gICAgVVN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJbm5lcigpOworICAgIFN0
cmluZyBwYXJzZUVycm9yID0gcGFyc2VJbm5lcigpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBt
X2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBsZXhFcnJvciA9IG1fbGV4ZXItPnNhd0Vy
cm9yKCk7Ci0gICAgVVN0cmluZyBsZXhFcnJvck1lc3NhZ2UgPSBsZXhFcnJvciA/IG1fbGV4ZXIt
PmdldEVycm9yTWVzc2FnZSgpIDogVVN0cmluZygpOworICAgIFN0cmluZyBsZXhFcnJvck1lc3Nh
Z2UgPSBsZXhFcnJvciA/IG1fbGV4ZXItPmdldEVycm9yTWVzc2FnZSgpIDogU3RyaW5nKCk7CiAg
ICAgQVNTRVJUKGxleEVycm9yTWVzc2FnZS5pc051bGwoKSAhPSBsZXhFcnJvcik7CiAgICAgbV9s
ZXhlci0+Y2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5oCmluZGV4IDJmZmZkMjdkMTNhYjJiZTYyY2RiM2ZhMmUwZTVkOTc2YTkzZGM1MzEuLjJmNWI0
NDdiMTY5YjAzNDVhZThlZDRlYzBiMzAyNTIwMDBjOTFiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAKICAgICBpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5h
OjptYWtlTnVtZXJpY0lkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBkb3VibGUg
bnVtYmVyKQogICAgIHsKLSAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcihn
bG9iYWxEYXRhLCBVU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSkpOwor
ICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKGdsb2JhbERhdGEsIFN0cmlu
Zzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51bWJlcikpKTsKICAgICAgICAgcmV0dXJuIG1f
aWRlbnRpZmllcnMubGFzdCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGUuaAppbmRleCAxMWEwMDMzN2RhODUzY2IwOWJkZDVkNjFlNWVkMjM5MjM0NWY0
NDhmLi5iZGE5MWIzYzhhNmYzYjYwZjFmMjNmYzY5ZmFiZjJhZTEwYzAzMDQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaApAQCAtNjAsMTAgKzYwLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBVU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3QKKyAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX3Byb3ZpZGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBV
U3RyaW5nKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICAgICAg
cmV0dXJuIG1fcHJvdmlkZXItPmdldFJhbmdlKG1fc3RhcnRDaGFyLCBtX2VuZENoYXIpOwogICAg
ICAgICB9CiAgICAgICAgIApAQCAtOTAsOSArOTAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgaW50IG1fZmlyc3RMaW5lOwogICAgIH07CiAKLSAgICBpbmxpbmUgU291cmNlQ29kZSBtYWtl
U291cmNlKGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVN0cmluZyYgdXJsID0gVVN0cmlu
ZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpKQorICAgIGlubGluZSBTb3VyY2VDb2RlIG1ha2VTb3VyY2UoY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsID0gU3RyaW5nKCksIGNvbnN0IFRleHRQ
b3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkp
CiAgICAgewotICAgICAgICByZXR1cm4gU291cmNlQ29kZShVU3RyaW5nU291cmNlUHJvdmlkZXI6
OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiksIHN0YXJ0UG9zaXRpb24ubV9saW5l
Lm9uZUJhc2VkSW50KCkpOworICAgICAgICByZXR1cm4gU291cmNlQ29kZShTdHJpbmdTb3VyY2VQ
cm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwgc3RhcnRQb3NpdGlv
bi5tX2xpbmUub25lQmFzZWRJbnQoKSk7CiAgICAgfQogCiAgICAgaW5saW5lIFNvdXJjZUNvZGUg
U291cmNlQ29kZTo6c3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNs
b3NlQnJhY2UsIGludCBmaXJzdExpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmgKaW5kZXggMmU3ZjcxNzg1NDY5NWY3ZjQ0ZjliNmNlNjgzZWI3ZDc1
MmY3MjRhZi4uN2YyZThkOTk1ZjViNTdlZmYzYzUwOTAyODkyZmI1NTMzNDE0NjNiOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtMzAsNyAr
MzAsNiBAQAogI2RlZmluZSBTb3VyY2VQcm92aWRlcl9oCiAKICNpbmNsdWRlICJTb3VyY2VQcm92
aWRlckNhY2hlLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVW51c2Vk
UGFyYW0uaD4KQEAgLTQyLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRyX3QgbnVsbElEID0gMTsKICAgICAgICAgCi0gICAg
ICAgIFNvdXJjZVByb3ZpZGVyKGNvbnN0IFVTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9u
JiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlckNhY2hlKiBjYWNoZSA9IDApCisgICAgICAg
IFNvdXJjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0
YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVyQ2FjaGUqIGNhY2hlID0gMCkKICAgICAgICAgICAg
IDogbV91cmwodXJsKQogICAgICAgICAgICAgLCBtX3N0YXJ0UG9zaXRpb24oc3RhcnRQb3NpdGlv
bikKICAgICAgICAgICAgICwgbV92YWxpZGF0ZWQoZmFsc2UpCkBAIC01NywxMSArNTYsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgZGVsZXRlIG1fY2FjaGU7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIFVTdHJpbmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5k
KSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldFJhbmdlKGludCBzdGFydCwg
aW50IGVuZCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZ0ltcGwqIGRh
dGEoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgaW50IGxlbmd0aCgpIGNvbnN0ID0gMDsK
ICAgICAgICAgCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHVybCgpIHsgcmV0dXJuIG1fdXJsOyB9
CisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgeyByZXR1cm4gbV91cmw7IH0KICAgICAgICAg
VGV4dFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0UG9zaXRp
b247IH0KICAgICAgICAgaW50cHRyX3QgYXNJRCgpCiAgICAgICAgIHsKQEAgLTgwLDIxICs3OSwy
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2FjaGVTaXplQ2hhbmdlZChpbnQgZGVsdGEpIHsgVU5VU0VEX1BBUkFNKGRlbHRhKTsgfQogCi0g
ICAgICAgIFVTdHJpbmcgbV91cmw7CisgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgVGV4
dFBvc2l0aW9uIG1fc3RhcnRQb3NpdGlvbjsKICAgICAgICAgYm9vbCBtX3ZhbGlkYXRlZDsKICAg
ICAgICAgU291cmNlUHJvdmlkZXJDYWNoZSogbV9jYWNoZTsKICAgICAgICAgYm9vbCBtX2NhY2hl
T3duZWQ7CiAgICAgfTsKIAotICAgIGNsYXNzIFVTdHJpbmdTb3VyY2VQcm92aWRlciA6IHB1Ymxp
YyBTb3VyY2VQcm92aWRlciB7CisgICAgY2xhc3MgU3RyaW5nU291cmNlUHJvdmlkZXIgOiBwdWJs
aWMgU291cmNlUHJvdmlkZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8VVN0cmluZ1NvdXJjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgVVN0cmluZyYgc291cmNlLCBj
b25zdCBVU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRl
eHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ1NvdXJjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9z
aXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFVTdHJpbmdTb3VyY2VQcm92aWRlcihzb3VyY2UsIHVybCwgc3RhcnRQb3Np
dGlvbikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJpbmdTb3VyY2VQcm92
aWRlcihzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbikpOwogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCBVU3RyaW5nIGdldFJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QgT1ZFUlJJ
REUKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBj
b25zdCBPVkVSUklERQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9zb3VyY2Uuc3Vi
c3RyaW5nU2hhcmluZ0ltcGwoc3RhcnQsIGVuZCAtIHN0YXJ0KTsKICAgICAgICAgfQpAQCAtMTAy
LDEzICsxMDEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZS5sZW5ndGgoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
VVN0cmluZ1NvdXJjZVByb3ZpZGVyKGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVN0cmlu
ZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pCisgICAgICAgIFN0cmlu
Z1NvdXJjZVByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uKQogICAgICAgICAgICAgOiBTb3VyY2VQ
cm92aWRlcih1cmwsIHN0YXJ0UG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fc291cmNlKHNvdXJj
ZSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgVVN0cmluZyBtX3NvdXJjZTsKKyAg
ICAgICAgU3RyaW5nIG1fc291cmNlOwogICAgIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9DYWxsSWRlbnRpZmll
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgKaW5k
ZXggMmRhOGEyZmYxMDRmOTg5M2Y1Zjg3ZDkwN2YzMjFjMGQyY2FkYmZlZC4uYmY5ZjkwNGIwYjlj
ZWM0MWRhMGQzZjYwMWU3NDc4MWMwMWNmYzZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgKQEAgLTI3LDE3ICsyNywxNyBAQAogI2lmbmRl
ZiBDYWxsSWRlbnRpZmllcl9oCiAjZGVmaW5lIENhbGxJZGVudGlmaWVyX2gKIAotI2luY2x1ZGUg
PHJ1bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgc3RydWN0IENhbGxJZGVudGlmaWVyIHsKICAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBVU3Ry
aW5nIG1fbmFtZTsKLSAgICAgICAgVVN0cmluZyBtX3VybDsKKyAgICAgICAgU3RyaW5nIG1fbmFt
ZTsKKyAgICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXI7
CiAKICAgICAgICAgQ2FsbElkZW50aWZpZXIoKQpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgQ2FsbElkZW50aWZpZXIoY29u
c3QgVVN0cmluZyYgbmFtZSwgY29uc3QgVVN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikKKyAg
ICAgICAgQ2FsbElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVy
bCwgaW50IGxpbmVOdW1iZXIpCiAgICAgICAgICAgICA6IG1fbmFtZShuYW1lKQogICAgICAgICAg
ICAgLCBtX3VybCghdXJsLmlzTnVsbCgpID8gdXJsIDogIiIpCiAgICAgICAgICAgICAsIG1fbGlu
ZU51bWJlcihsaW5lTnVtYmVyKQpAQCAtODcsNyArODcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbElkZW50aWZpZXI+IDogR2Vu
ZXJpY0hhc2hUcmFpdHM8SlNDOjpDYWxsSWRlbnRpZmllcj4gewogICAgICAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoSlNDOjpDYWxsSWRlbnRpZmllciYgc2xvdCkKICAgICAg
ICAgewotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmc2xvdCkgSlNDOjpDYWxsSWRlbnRpZmll
cihKU0M6OlVTdHJpbmcoKSwgSlNDOjpVU3RyaW5nKCksIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSk7CisgICAgICAgICAgICBuZXcgKE5vdE51bGwsICZzbG90KSBKU0M6OkNh
bGxJZGVudGlmaWVyKFN0cmluZygpLCBTdHJpbmcoKSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKTsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRW
YWx1ZShjb25zdCBKU0M6OkNhbGxJZGVudGlmaWVyJiB2YWx1ZSkKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCmluZGV4IDkyZTMyYzRiYTY2NGE0
MWY0MWE4OGU5MjljYTNmMGNlOGJmNzA3NmYuLjUxZjg3MTg5ODM4YzQ5Yjc0MGUyMWIwNmRkZjFi
ODc0ZjY0NWYwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5j
cHAKQEAgLTMyLDE4ICszMiwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotUGFzc1JlZlB0cjxQ
cm9maWxlPiBQcm9maWxlOjpjcmVhdGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVp
ZCkKK1Bhc3NSZWZQdHI8UHJvZmlsZT4gUHJvZmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIHVuc2lnbmVkIHVpZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2ZpbGUodGl0
bGUsIHVpZCkpOwogfQogCi1Qcm9maWxlOjpQcm9maWxlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1
bnNpZ25lZCB1aWQpCitQcm9maWxlOjpQcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2ln
bmVkIHVpZCkKICAgICA6IG1fdGl0bGUodGl0bGUpCiAgICAgLCBtX3VpZCh1aWQpCiB7CiAgICAg
Ly8gRklYTUU6IFdoZW4gbXVsdGktdGhyZWFkaW5nIGlzIHN1cHBvcnRlZCB0aGlzIHdpbGwgYmUg
YSB2ZWN0b3IgYW5kIGNhbGxzCiAgICAgLy8gaW50byB0aGUgcHJvZmlsZXIgd2lsbCBuZWVkIHRv
IGtub3cgd2hpY2ggdGhyZWFkIGl0IGlzIGV4ZWN1dGluZyBvbi4KLSAgICBtX2hlYWQgPSBQcm9m
aWxlTm9kZTo6Y3JlYXRlKDAsIENhbGxJZGVudGlmaWVyKCJUaHJlYWRfMSIsIFVTdHJpbmcoKSwg
MCksIDAsIDApOworICAgIG1faGVhZCA9IFByb2ZpbGVOb2RlOjpjcmVhdGUoMCwgQ2FsbElkZW50
aWZpZXIoIlRocmVhZF8xIiwgU3RyaW5nKCksIDApLCAwLCAwKTsKIH0KIAogUHJvZmlsZTo6flBy
b2ZpbGUoKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUHJvZmlsZTo6ZGVidWdQcmludERhdGFT
YW1wbGVTdHlsZSgpIGNvbnN0CiAKICAgICBzdGQ6OnNvcnQoc29ydGVkRnVuY3Rpb25zLmJlZ2lu
KCksIHNvcnRlZEZ1bmN0aW9ucy5lbmQoKSwgZnVuY3Rpb25OYW1lQ291bnRQYWlyQ29tcGFyYXRv
cik7CiAgICAgZm9yIChOYW1lQ291bnRQYWlyVmVjdG9yOjppdGVyYXRvciBpdCA9IHNvcnRlZEZ1
bmN0aW9ucy5iZWdpbigpOyBpdCAhPSBzb3J0ZWRGdW5jdGlvbnMuZW5kKCk7ICsraXQpCi0gICAg
ICAgIGRhdGFMb2coIiAgICAgICAgJS0xMmQlc1xuIiwgKCppdCkuc2Vjb25kLCBVU3RyaW5nKCgq
aXQpLmZpcnN0KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZGF0YUxvZygiICAgICAgICAlLTEy
ZCVzXG4iLCAoKml0KS5zZWNvbmQsIFN0cmluZygoKml0KS5maXJzdCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBkYXRhTG9nKCJcblNvcnQgYnkgdG9wIG9mIHN0YWNrLCBzYW1lIGNvbGxhcHNlZCAo
d2hlbiA+PSA1KTpcbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
LmgKaW5kZXggOTQ1NWUzNTk1MDMyZjJjM2Q5YzUyYTA4MDk1ZDU0YWM5OTg2ZWEwZS4uYzFjNjkx
OTNjYzJiYzExODM0OTkwOTU3MmNlMzJiMTM1NGZjMDU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZS5oCkBAIC0yNywxOCArMjcsMTggQEAKICNkZWZpbmUgUHJvZmls
ZV9oCiAKICNpbmNsdWRlICJQcm9maWxlTm9kZS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFByb2ZpbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxQcm9maWxlPiB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9maWxlPiBjcmVhdGUoY29uc3QgVVN0
cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBy
b2ZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOwogICAgICAg
ICB2aXJ0dWFsIH5Qcm9maWxlKCk7CiAKLSAgICAgICAgY29uc3QgVVN0cmluZyYgdGl0bGUoKSBj
b25zdCB7IHJldHVybiBtX3RpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBj
b25zdCB7IHJldHVybiBtX3RpdGxlOyB9CiAgICAgICAgIFByb2ZpbGVOb2RlKiBoZWFkKCkgY29u
c3QgeyByZXR1cm4gbV9oZWFkLmdldCgpOyB9CiAgICAgICAgIHZvaWQgc2V0SGVhZChQYXNzUmVm
UHRyPFByb2ZpbGVOb2RlPiBoZWFkKSB7IG1faGVhZCA9IGhlYWQ7IH0KICAgICAgICAgZG91Ymxl
IHRvdGFsVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZC0+dG90YWxUaW1lKCk7IH0KQEAgLTU2
LDEzICs1NiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICBQcm9maWxlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOworICAg
ICAgICBQcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIHJlbW92ZVByb2ZpbGVTdGFydCgpOwogICAgICAgICB2b2lk
IHJlbW92ZVByb2ZpbGVFbmQoKTsKICAKLSAgICAgICAgVVN0cmluZyBtX3RpdGxlOworICAgICAg
ICBTdHJpbmcgbV90aXRsZTsKICAgICAgICAgUmVmUHRyPFByb2ZpbGVOb2RlPiBtX2hlYWQ7CiAg
ICAgICAgIHVuc2lnbmVkIGludCBtX3VpZDsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCmluZGV4IDVkYjM4YmNhOGQ1
NmE1ZWYwMWQyOGE1Zjk0MmIwZmQ5MzAyN2ZiZTIuLjA5ODc3ZDNjOGM3ZjQ4N2EyMDdmOTFhNzlm
YjNiMWI4YzE4OTU3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIE5vbkpTRXhlY3V0aW9uID0gIihpZGxlKSI7CiAKLVBh
c3NSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gUHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKK1Bhc3NSZWZQ
dHI8UHJvZmlsZUdlbmVyYXRvcj4gUHJvZmlsZUdlbmVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUHJvZmlsZUdlbmVyYXRvcihleGVjLCB0aXRsZSwgdWlkKSk7CiB9CiAKLVBy
b2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBV
U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQorUHJvZmlsZUdlbmVyYXRvcjo6UHJvZmlsZUdl
bmVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVp
ZCkKICAgICA6IG1fb3JpZ2luKGV4ZWMgPyBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkgOiAw
KQogICAgICwgbV9wcm9maWxlR3JvdXAoZXhlYyA/IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+cHJvZmlsZUdyb3VwKCkgOiAwKQogewpAQCAtNTksNyArNTksNyBAQCB2b2lkIFByb2ZpbGVH
ZW5lcmF0b3I6OmFkZFBhcmVudEZvckNvbnNvbGVTdGFydChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgaW50IGxpbmVOdW1iZXI7CiAgICAgaW50cHRyX3Qgc291cmNlSUQ7Ci0gICAgVVN0cmluZyBz
b3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTDsKICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwog
CiAgICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKGV4ZWMsIGxpbmVO
dW1iZXIsIHNvdXJjZUlELCBzb3VyY2VVUkwsIGZ1bmN0aW9uKTsKQEAgLTY3LDcgKzY3LDcgQEAg
dm9pZCBQcm9maWxlR2VuZXJhdG9yOjphZGRQYXJlbnRGb3JDb25zb2xlU3RhcnQoRXhlY1N0YXRl
KiBleGVjKQogICAgIG1faGVhZC0+aW5zZXJ0Tm9kZShtX2N1cnJlbnROb2RlLmdldCgpKTsKIH0K
IAotY29uc3QgVVN0cmluZyYgUHJvZmlsZUdlbmVyYXRvcjo6dGl0bGUoKSBjb25zdAorY29uc3Qg
U3RyaW5nJiBQcm9maWxlR2VuZXJhdG9yOjp0aXRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cHJvZmlsZS0+dGl0bGUoKTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFByb2ZpbGVHZW5l
cmF0b3I6OnN0b3BQcm9maWxpbmcoKQogICAgIG1fY3VycmVudE5vZGUgPSBtX2N1cnJlbnROb2Rl
LT5wYXJlbnQoKTsKIAogICAgaWYgKGRvdWJsZSBoZWFkU2VsZlRpbWUgPSBtX2hlYWQtPnNlbGZU
aW1lKCkpIHsKLSAgICAgICAgUmVmUHRyPFByb2ZpbGVOb2RlPiBpZGxlTm9kZSA9IFByb2ZpbGVO
b2RlOjpjcmVhdGUoMCwgQ2FsbElkZW50aWZpZXIoTm9uSlNFeGVjdXRpb24sIFVTdHJpbmcoKSwg
MCksIG1faGVhZC5nZXQoKSwgbV9oZWFkLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFByb2ZpbGVO
b2RlPiBpZGxlTm9kZSA9IFByb2ZpbGVOb2RlOjpjcmVhdGUoMCwgQ2FsbElkZW50aWZpZXIoTm9u
SlNFeGVjdXRpb24sIFN0cmluZygpLCAwKSwgbV9oZWFkLmdldCgpLCBtX2hlYWQuZ2V0KCkpOwog
CiAgICAgICAgIGlkbGVOb2RlLT5zZXRUb3RhbFRpbWUoaGVhZFNlbGZUaW1lKTsKICAgICAgICAg
aWRsZU5vZGUtPnNldFNlbGZUaW1lKGhlYWRTZWxmVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaAppbmRleCA4YzhiODE3MzE1MzU2
MTlkMTQyMzNkZmYwZmRiN2QxYjIyODgwYWRmLi40MGNjOGRlMDFkNTRiZmU5NzM5NzE3ZDg1OTE4
ODM3NWU5YzdkYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlR2VuZXJhdG9yLmgKQEAgLTM3LDE1ICszNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBQcm9maWxlOwogICAgIGNsYXNzIFBy
b2ZpbGVOb2RlOwotICAgIGNsYXNzIFVTdHJpbmc7CiAgICAgc3RydWN0IENhbGxJZGVudGlmaWVy
OyAgICAKIAogICAgIGNsYXNzIFByb2ZpbGVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
cm9maWxlR2VuZXJhdG9yPiAgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UHJvZmlsZUdlbmVyYXRvcj4gY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRp
dGxlLCB1bnNpZ25lZCB1aWQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9maWxlR2Vu
ZXJhdG9yPiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCB1bnNp
Z25lZCB1aWQpOwogCiAgICAgICAgIC8vIE1lbWJlcnMKLSAgICAgICAgY29uc3QgVVN0cmluZyYg
dGl0bGUoKSBjb25zdDsKKyAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlKCkgY29uc3Q7
CiAgICAgICAgIFBhc3NSZWZQdHI8UHJvZmlsZT4gcHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvZmlsZTsgfQogICAgICAgICBKU0dsb2JhbE9iamVjdCogb3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW47IH0KICAgICAgICAgdW5zaWduZWQgcHJvZmlsZUdyb3VwKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9maWxlR3JvdXA7IH0KQEAgLTYyLDcgKzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHR5cGVkZWYgdm9pZCAoUHJvZmlsZUdlbmVyYXRvcjo6KlByb2ZpbGVGdW5jdGlv
bikoRXhlY1N0YXRlKiBjYWxsZXJPckhhbmRsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJZGVudGlm
aWVyJiBjYWxsSWRlbnRpZmllcik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQcm9maWxlR2Vu
ZXJhdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOwor
ICAgICAgICBQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJiB0
aXRsZSwgdW5zaWduZWQgdWlkKTsKICAgICAgICAgdm9pZCBhZGRQYXJlbnRGb3JDb25zb2xlU3Rh
cnQoRXhlY1N0YXRlKik7CiAKICAgICAgICAgdm9pZCByZW1vdmVQcm9maWxlU3RhcnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmgKaW5kZXggZmZlN2I2
ZjlkMGUzNGNhZjNkM2NmMjgyNDIyZjM0MmI1YzdkMWU5MS4uMjYwMDBhODI3MTMzNzJlMWVhNmE2
YzYxNzNjMDQ1ZmMzNDcyYjNmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVOb2RlLmgKQEAgLTY0LDggKzY0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IC8vIENhbGxJZGVudGlmaWVyIG1lbWJlcnMKICAgICAgICAgRXhlY1N0YXRlKiBjYWxsZXJDYWxs
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlckNhbGxGcmFtZTsgfQogICAgICAgICBjb25z
dCBDYWxsSWRlbnRpZmllciYgY2FsbElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJ
ZGVudGlmaWVyOyB9Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIGZ1bmN0aW9uTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbElkZW50aWZpZXIubV9uYW1lOyB9Ci0gICAgICAgIGNvbnN0IFVTdHJp
bmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbElkZW50aWZpZXIubV91cmw7IH0KKyAgICAg
ICAgY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVu
dGlmaWVyLm1fbmFtZTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FsbElkZW50aWZpZXIubV91cmw7IH0KICAgICAgICAgdW5zaWduZWQgbGluZU51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbElkZW50aWZpZXIubV9saW5lTnVtYmVyOyB9CiAKICAg
ICAgICAgLy8gUmVsYXRpb25zaGlwcwpAQCAtMTQ2LDggKzE0Niw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgc2VsZlRpbWVBc2NlbmRpbmdDb21wYXJhdG9y
KGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGEsIGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4m
IGIpIHsgcmV0dXJuIGEtPnNlbGZUaW1lKCkgPCBiLT5zZWxmVGltZSgpOyB9CiAgICAgICAgIHN0
YXRpYyBpbmxpbmUgYm9vbCBjYWxsc0Rlc2NlbmRpbmdDb21wYXJhdG9yKGNvbnN0IFJlZlB0cjxQ
cm9maWxlTm9kZT4mIGEsIGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGIpIHsgcmV0dXJuIGEt
Pm51bWJlck9mQ2FsbHMoKSA+IGItPm51bWJlck9mQ2FsbHMoKTsgfQogICAgICAgICBzdGF0aWMg
aW5saW5lIGJvb2wgY2FsbHNBc2NlbmRpbmdDb21wYXJhdG9yKGNvbnN0IFJlZlB0cjxQcm9maWxl
Tm9kZT4mIGEsIGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGIpIHsgcmV0dXJuIGEtPm51bWJl
ck9mQ2FsbHMoKSA8IGItPm51bWJlck9mQ2FsbHMoKTsgfQotICAgICAgICBzdGF0aWMgaW5saW5l
IGJvb2wgZnVuY3Rpb25OYW1lRGVzY2VuZGluZ0NvbXBhcmF0b3IoY29uc3QgUmVmUHRyPFByb2Zp
bGVOb2RlPiYgYSwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYikgeyByZXR1cm4gYS0+ZnVu
Y3Rpb25OYW1lKCkgPiBiLT5mdW5jdGlvbk5hbWUoKTsgfQotICAgICAgICBzdGF0aWMgaW5saW5l
IGJvb2wgZnVuY3Rpb25OYW1lQXNjZW5kaW5nQ29tcGFyYXRvcihjb25zdCBSZWZQdHI8UHJvZmls
ZU5vZGU+JiBhLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBiKSB7IHJldHVybiBhLT5mdW5j
dGlvbk5hbWUoKSA8IGItPmZ1bmN0aW9uTmFtZSgpOyB9CisgICAgICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBmdW5jdGlvbk5hbWVEZXNjZW5kaW5nQ29tcGFyYXRvcihjb25zdCBSZWZQdHI8UHJvZmls
ZU5vZGU+JiBhLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBiKSB7IHJldHVybiBjb2RlUG9p
bnRDb21wYXJlTGVzc1RoYW4oYi0+ZnVuY3Rpb25OYW1lKCksIGEtPmZ1bmN0aW9uTmFtZSgpKTsg
fQorICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgZnVuY3Rpb25OYW1lQXNjZW5kaW5nQ29tcGFy
YXRvcihjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBhLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5v
ZGU+JiBiKSB7IHJldHVybiBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oYS0+ZnVuY3Rpb25OYW1l
KCksIGItPmZ1bmN0aW9uTmFtZSgpKTsgfQogCiAgICAgICAgIEV4ZWNTdGF0ZSogbV9jYWxsZXJD
YWxsRnJhbWU7CiAgICAgICAgIENhbGxJZGVudGlmaWVyIG1fY2FsbElkZW50aWZpZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcAppbmRleCA3MjMzOTNiNWM2
OGJhNmIzYjQzNTM3Y2RjZWU2ZTUyMmRkYmM1OWY1Li45NjQyYTA2ODQ3NzdiM2I0YTMzMWIwZDJi
ZDIyM2RkM2NkNzY3NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlci5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiUHJvZmlsZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIlByb2ZpbGVOb2RlLmgiCi0jaW5jbHVk
ZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC00OCw3ICs0Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBHbG9iYWxDb2RlRXhl
Y3V0aW9uID0gIihwcm9ncmFtKSI7CiBzdGF0aWMgY29uc3QgY2hhciogQW5vbnltb3VzRnVuY3Rp
b24gPSAiKGFub255bW91cyBmdW5jdGlvbikiOwogc3RhdGljIHVuc2lnbmVkIFByb2ZpbGVzVUlE
ID0gMDsKIAotc3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1
bmN0aW9uSW1wKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgVVN0cmluZyYgZGVmYXVsdFNv
dXJjZVVSTCwgaW50IGRlZmF1bHRMaW5lTnVtYmVyKTsKK3N0YXRpYyBDYWxsSWRlbnRpZmllciBj
cmVhdGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlvbkltcChFeGVjU3RhdGUqLCBKU09iamVjdCos
IGNvbnN0IFN0cmluZyYgZGVmYXVsdFNvdXJjZVVSTCwgaW50IGRlZmF1bHRMaW5lTnVtYmVyKTsK
IAogUHJvZmlsZXIqIFByb2ZpbGVyOjpzX3NoYXJlZFByb2ZpbGVyID0gMDsKIApAQCAtNTksNyAr
NTgsNyBAQCBQcm9maWxlciogUHJvZmlsZXI6OnByb2ZpbGVyKCkKICAgICByZXR1cm4gc19zaGFy
ZWRQcm9maWxlcjsKIH0gICAKIAotdm9pZCBQcm9maWxlcjo6c3RhcnRQcm9maWxpbmcoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiB0aXRsZSkKK3ZvaWQgUHJvZmlsZXI6OnN0YXJ0UHJv
ZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBBU1NF
UlRfQVJHKHRpdGxlLCAhdGl0bGUuaXNOdWxsKCkpOwogCkBAIC03OCw3ICs3Nyw3IEBAIHZvaWQg
UHJvZmlsZXI6OnN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYg
dGl0bGUpCiAgICAgbV9jdXJyZW50UHJvZmlsZXMuYXBwZW5kKHByb2ZpbGVHZW5lcmF0b3IpOwog
fQogCi1QYXNzUmVmUHRyPFByb2ZpbGU+IFByb2ZpbGVyOjpzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgdGl0bGUpCitQYXNzUmVmUHRyPFByb2ZpbGU+IFByb2Zp
bGVyOjpzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkK
IHsKICAgICBKU0dsb2JhbE9iamVjdCogb3JpZ2luID0gZXhlYyA/IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSA6IDA7CiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IG1fY3VycmVudFByb2ZpbGVz
LnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CkBAIC0xMjYsNyArMTI1LDcgQEAgdm9pZCBQcm9m
aWxlcjo6d2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIEpTVmFsdWUgZnVu
Y3Rpb24pCiAgICAgZGlzcGF0Y2hGdW5jdGlvblRvUHJvZmlsZXMoY2FsbGVyQ2FsbEZyYW1lLCBt
X2N1cnJlbnRQcm9maWxlcywgJlByb2ZpbGVHZW5lcmF0b3I6OndpbGxFeGVjdXRlLCBjcmVhdGVD
YWxsSWRlbnRpZmllcihjYWxsZXJDYWxsRnJhbWUsIGZ1bmN0aW9uLCAiIiwgMCksIGNhbGxlckNh
bGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSk7CiB9CiAKLXZv
aWQgUHJvZmlsZXI6OndpbGxFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25z
dCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpCit2b2lkIFByb2Zp
bGVyOjp3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpCiB7CiAgICAgQVNTRVJUKCFtX2N1
cnJlbnRQcm9maWxlcy5pc0VtcHR5KCkpOwogCkBAIC0xNDIsNyArMTQxLDcgQEAgdm9pZCBQcm9m
aWxlcjo6ZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwgSlNWYWx1ZSBmdW5j
dGlvbikKICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9Qcm9maWxlcyhjYWxsZXJDYWxsRnJhbWUsIG1f
Y3VycmVudFByb2ZpbGVzLCAmUHJvZmlsZUdlbmVyYXRvcjo6ZGlkRXhlY3V0ZSwgY3JlYXRlQ2Fs
bElkZW50aWZpZXIoY2FsbGVyQ2FsbEZyYW1lLCBmdW5jdGlvbiwgIiIsIDApLCBjYWxsZXJDYWxs
RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkpOwogfQogCi12b2lk
IFByb2ZpbGVyOjpkaWRFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBV
U3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpCit2b2lkIFByb2ZpbGVy
OjpkaWRFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcikKIHsKICAgICBBU1NFUlQoIW1fY3VycmVu
dFByb2ZpbGVzLmlzRW1wdHkoKSk7CiAKQEAgLTE1Niw3ICsxNTUsNyBAQCB2b2lkIFByb2ZpbGVy
OjpleGNlcHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lKQogICAgIGRpc3Bh
dGNoRnVuY3Rpb25Ub1Byb2ZpbGVzKGhhbmRsZXJDYWxsRnJhbWUsIG1fY3VycmVudFByb2ZpbGVz
LCAmUHJvZmlsZUdlbmVyYXRvcjo6ZXhjZXB0aW9uVW53aW5kLCBjcmVhdGVDYWxsSWRlbnRpZmll
cihoYW5kbGVyQ2FsbEZyYW1lLCBKU1ZhbHVlKCksICIiLCAwKSwgaGFuZGxlckNhbGxGcmFtZS0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSk7CiB9CiAKLUNhbGxJZGVudGlm
aWVyIFByb2ZpbGVyOjpjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgZnVuY3Rpb25WYWx1ZSwgY29uc3QgVVN0cmluZyYgZGVmYXVsdFNvdXJjZVVSTCwgaW50IGRl
ZmF1bHRMaW5lTnVtYmVyKQorQ2FsbElkZW50aWZpZXIgUHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVu
dGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvblZhbHVlLCBjb25zdCBTdHJp
bmcmIGRlZmF1bHRTb3VyY2VVUkwsIGludCBkZWZhdWx0TGluZU51bWJlcikKIHsKICAgICBpZiAo
IWZ1bmN0aW9uVmFsdWUpCiAgICAgICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihHbG9iYWxDb2Rl
RXhlY3V0aW9uLCBkZWZhdWx0U291cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7CkBAIC0xNjQs
MTIgKzE2MywxMiBAQCBDYWxsSWRlbnRpZmllciBQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZp
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uVgogICAgICAgICByZXR1cm4gQ2Fs
bElkZW50aWZpZXIoIih1bmtub3duKSIsIGRlZmF1bHRTb3VyY2VVUkwsIGRlZmF1bHRMaW5lTnVt
YmVyKTsKICAgICBpZiAoYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSktPmluaGVyaXRzKCZKU0Z1bmN0
aW9uOjpzX2luZm8pIHx8IGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpLT5pbmhlcml0cygmSW50ZXJu
YWxGdW5jdGlvbjo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhbGxJZGVudGlmaWVy
RnJvbUZ1bmN0aW9uSW1wKGV4ZWMsIGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpLCBkZWZhdWx0U291
cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7Ci0gICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKG1h
a2VVU3RyaW5nKCIoIiwgYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSktPm1ldGhvZFRhYmxlKCktPmNs
YXNzTmFtZShhc09iamVjdChmdW5jdGlvblZhbHVlKSksICIgb2JqZWN0KSIpLCBkZWZhdWx0U291
cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7CisgICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKG1h
a2VTdHJpbmcoIigiLCBhc09iamVjdChmdW5jdGlvblZhbHVlKS0+bWV0aG9kVGFibGUoKS0+Y2xh
c3NOYW1lKGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpKSwgIiBvYmplY3QpIiksIGRlZmF1bHRTb3Vy
Y2VVUkwsIGRlZmF1bHRMaW5lTnVtYmVyKTsKIH0KIAotQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2Fs
bElkZW50aWZpZXJGcm9tRnVuY3Rpb25JbXAoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZnVu
Y3Rpb24sIGNvbnN0IFVTdHJpbmcmIGRlZmF1bHRTb3VyY2VVUkwsIGludCBkZWZhdWx0TGluZU51
bWJlcikKK0NhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1w
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIGRlZmF1
bHRTb3VyY2VVUkwsIGludCBkZWZhdWx0TGluZU51bWJlcikKIHsKLSAgICBjb25zdCBVU3RyaW5n
JiBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKGV4ZWMsIGZ1bmN0aW9uKTsKKyAgICBj
b25zdCBTdHJpbmcmIG5hbWUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoZXhlYywgZnVuY3Rp
b24pOwogICAgIEpTRnVuY3Rpb24qIGpzRnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rp
b24qPihmdW5jdGlvbik7CiAgICAgaWYgKGpzRnVuY3Rpb24gJiYgIWpzRnVuY3Rpb24tPmlzSG9z
dEZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihuYW1lLmlzRW1wdHko
KSA/IEFub255bW91c0Z1bmN0aW9uIDogbmFtZSwganNGdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkt
PnNvdXJjZVVSTCgpLCBqc0Z1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+bGluZU5vKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaAppbmRleCA4NzcwNjVlY2FlYmNh
MGNlNWY3N2E1ZTQzYThjMWVjOWE2NzBhYmNiLi42ODUyNDU3YzdkYzhmMDdkM2NhYzMzM2M4NTc3
YzdhMmFlNzUxOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIu
aApAQCAtNDIsMjMgKzQyLDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTT2JqZWN0
OwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgUHJvZmlsZUdlbmVyYXRvcjsKLSAgICBj
bGFzcyBVU3RyaW5nOwotICAgIHN0cnVjdCBDYWxsSWRlbnRpZmllcjsgICAgCisgICAgc3RydWN0
IENhbGxJZGVudGlmaWVyOwogCiAgICAgY2xhc3MgUHJvZmlsZXIgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQcm9maWxlciogcHJvZmlsZXIoKTsgCi0gICAgICAgIHN0YXRpYyBDYWxsSWRlbnRp
ZmllciBjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOworICAgICAgICBzdGF0aWMgQ2Fs
bElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYgdGl0bGUpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFByb2Zp
bGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IFdURjo6U3RyaW5nJiB0aXRsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NS
ZWZQdHI8UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmlu
ZyYgdGl0bGUpOwogICAgICAgICB2b2lkIHN0b3BQcm9maWxpbmcoSlNHbG9iYWxPYmplY3QqKTsK
IAogICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBK
U1ZhbHVlIGZ1bmN0aW9uKTsKLSAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNh
bGxlckNhbGxGcmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKKyAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxG
cmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJl
cik7CiAgICAgICAgIHZvaWQgZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwg
SlNWYWx1ZSBmdW5jdGlvbik7Ci0gICAgICAgIHZvaWQgZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNh
bGxlckNhbGxGcmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5l
TnVtYmVyKTsKKyAgICAgICAgdm9pZCBkaWRFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZy
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVy
KTsKIAogICAgICAgICB2b2lkIGV4Y2VwdGlvblVud2luZChFeGVjU3RhdGUqIGhhbmRsZXJDYWxs
RnJhbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApp
bmRleCAyNTc5Mzc2NWJiMDE0NzllNjg4NWFkZDZlYWU2NWJlYmQ1ODNjNGFlLi5mZTc5Zjc0MGUy
YzAwZmJhZWVhYjhmMGNlMjZhZGQwNDc3NTZkMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBBcmd1bWVudHM6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVj
LCBVU3RyaW5nOjpudW1iZXIoaSkpLCBzbG90KTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6
bnVtYmVyKGkpKSwgc2xvdCk7CiB9CiAgICAgCiB2b2lkIEFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0
TW9kZUNhbGxlcklmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpz
Q2FzdDxBcmd1bWVudHMqPihvYmplY3QpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
aGlzT2JqZWN0LT5kLT5udW1Bcmd1bWVudHM7ICsraSkgewogICAgICAgICBpZiAoIXRoaXNPYmpl
Y3QtPmQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIXRoaXNPYmplY3QtPmQtPmRlbGV0ZWRBcmd1bWVu
dHNbaV0pCi0gICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVT
dHJpbmc6Om51bWJlcihpKSkpOworICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRp
ZmllcihleGVjLCBTdHJpbmc6Om51bWJlcihpKSkpOwogICAgIH0KICAgICBpZiAobW9kZSA9PSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSB7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQXJn
dW1lbnRzOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIHZhCiAgICAgfQogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2hvdWxk
VGhyb3cpOwotICAgIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihl
eGVjLCBVU3RyaW5nOjpudW1iZXIoaSkpLCB2YWx1ZSwgc2xvdCk7CisgICAgSlNPYmplY3Q6OnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6bnVtYmVyKGkpKSwg
dmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEFyZ3VtZW50czo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yNTUsNyArMjU1LDcgQEAgYm9vbCBBcmd1bWVudHM6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaSkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBVU3RyaW5nOjpudW1i
ZXIoaSkpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpudW1iZXIoaSkpKTsKIH0KIAogYm9vbCBB
cmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBhOTdjZjgyZGU5Zjk2ZDUxY2VlMWIwMWI4
ZmZiNTJhZjFmNTg4MWUyLi5lNDdjM2Y0NzY4MTVmNDIwYzg4OGUxNmQ0YTcxZjUxZDk0YTMzMzk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCkBAIC0zMDAsNyArMzAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKGVsZW1lbnQu
aXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAg
ICAgICAgVVN0cmluZyBzdHIgPSBlbGVtZW50LnRvVVN0cmluZyhleGVjKTsKKyAgICAgICAgU3Ry
aW5nIHN0ciA9IGVsZW1lbnQudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgICAgIHN0ckJ1ZmZlcltr
XSA9IHN0ci5pbXBsKCk7CiAgICAgICAgIHRvdGFsU2l6ZSArPSBzdHIubGVuZ3RoKCk7CiAgICAg
ICAgIGFsbFN0cmluZ3M4Qml0ID0gYWxsU3RyaW5nczhCaXQgJiYgc3RyLmlzOEJpdCgpOwpAQCAt
MzI4LDcgKzMyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChyZXAtPmNoYXJhY3RlcnM4KCksIHJlcC0+bGVuZ3RoKCkpOwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVChidWZmZXIuc2l6ZSgpID09IHRvdGFsU2l6ZSk7Ci0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZzo6YWRvcHQoYnVmZmVyKSkpOyAgICAg
ICAgCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5n
OjphZG9wdChidWZmZXIpKSk7CiAgICAgfQogCiAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7CkBA
IC0zNDMsNyArMzQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQo
cmVwLT5jaGFyYWN0ZXJzKCksIHJlcC0+bGVuZ3RoKCkpOwogICAgIH0KICAgICBBU1NFUlQoYnVm
ZmVyLnNpemUoKSA9PSB0b3RhbFNpemUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcoZXhlYywgVVN0cmluZzo6YWRvcHQoYnVmZmVyKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpCkBAIC0zNjIsNyArMzYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAK
LSAgICBVU3RyaW5nIHNlcGFyYXRvcigiLCIpOworICAgIFN0cmluZyBzZXBhcmF0b3IoIiwiLCBT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBKU1N0cmluZ0pvaW5lciBzdHJpbmdK
b2luZXIoc2VwYXJhdG9yLCBsZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBs
ZW5ndGg7IGsrKykgewogICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSB0aGlzT2JqLT5nZXQoZXhl
Yywgayk7CkBAIC0zNzMsMTMgKzM3MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
ICAgSlNWYWx1ZSBjb252ZXJzaW9uRnVuY3Rpb24gPSBvLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRvTG9jYWxlU3RyaW5nKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICAgICAgVVN0cmluZyBzdHI7CisgICAgICAgICAgICBTdHJpbmcgc3Ry
OwogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGNvbnZlcnNpb25GdW5jdGlvbiwgY2FsbERhdGEpOwogICAg
ICAgICAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkKLSAgICAgICAgICAgICAgICBz
dHIgPSBjYWxsKGV4ZWMsIGNvbnZlcnNpb25GdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBl
bGVtZW50LCBleGVjLT5lbXB0eUxpc3QoKSkudG9VU3RyaW5nKGV4ZWMpOworICAgICAgICAgICAg
ICAgIHN0ciA9IGNhbGwoZXhlYywgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGVsZW1lbnQsIGV4ZWMtPmVtcHR5TGlzdCgpKS50b1dURlN0cmluZyhleGVjKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdHIgPSBlbGVtZW50LnRvVVN0cmluZyhleGVj
KTsKKyAgICAgICAgICAgICAgICBzdHIgPSBlbGVtZW50LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAg
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBzdHJpbmdKb2lu
ZXIuYXBwZW5kKHN0cik7CkBAIC00MDAsMTEgKzQwMCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKEpT
VmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCi0gICAgVVN0
cmluZyBzZXBhcmF0b3I7CisgICAgU3RyaW5nIHNlcGFyYXRvcjsKICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KDApLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHNlcGFyYXRvciA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvVVN0cmluZyhleGVjKTsKKyAgICAgICAgc2VwYXJhdG9yID0gZXhlYy0+YXJndW1l
bnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKHNlcGFyYXRvci5pc051bGwoKSkKLSAg
ICAgICAgc2VwYXJhdG9yID0gVVN0cmluZygiLCIpOworICAgICAgICBzZXBhcmF0b3IgPSBTdHJp
bmcoIiwiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIEpTU3RyaW5nSm9p
bmVyIHN0cmluZ0pvaW5lcihzZXBhcmF0b3IsIGxlbmd0aCk7CiAKQEAgLTQxOCwxOCArNDE4LDE4
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gYXJyYXktPmdldElu
ZGV4KGspOwogICAgICAgICAgICAgaWYgKCFlbGVtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0g
ICAgICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChlbGVtZW50LnRvVVN0cmluZ0lubGlu
ZShleGVjKSk7CisgICAgICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChlbGVtZW50LnRv
V1RGU3RyaW5nSW5saW5lKGV4ZWMpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBzdHJpbmdKb2luZXIuYXBwZW5kKFVTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgc3RyaW5n
Sm9pbmVyLmFwcGVuZChTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBmb3IgKDsg
ayA8IGxlbmd0aDsgaysrKSB7CiAgICAgICAgIEpTVmFsdWUgZWxlbWVudCA9IHRoaXNPYmotPmdl
dChleGVjLCBrKTsKICAgICAgICAgaWYgKCFlbGVtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0g
ICAgICAgICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKGVsZW1lbnQudG9VU3RyaW5nSW5saW5lKGV4
ZWMpKTsKKyAgICAgICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoZWxlbWVudC50b1dURlN0cmlu
Z0lubGluZShleGVjKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0cmluZ0pvaW5lci5h
cHBlbmQoVVN0cmluZygpKTsKKyAgICAgICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoU3RyaW5n
KCkpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nSm9pbmVyLmJ1
aWxkKGV4ZWMpKTsKQEAgLTUyMCw3ICs1MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB0aGlz
T2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCArIG4s
IGV4ZWMtPmFyZ3VtZW50KG4pLCB0cnVlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1l
KGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0
PGludDY0X3Q+KG4pKS50b1VTdHJpbmcoZXhlYykpOworICAgICAgICAgICAgSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUoZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsg
c3RhdGljX2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGV4ZWMtPmFyZ3VtZW50KG4pLCBzbG90KTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCkBAIC02NjEsNyArNjYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAg
ICAgIGwuYXBwZW5kKG1pbk9iaik7CiAgICAgICAgICAgICAgICAgY29tcGFyZVJlc3VsdCA9IGNh
bGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgbCku
dG9OdW1iZXIoZXhlYyk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb21w
YXJlUmVzdWx0ID0gKGpPYmoudG9VU3RyaW5nSW5saW5lKGV4ZWMpIDwgbWluT2JqLnRvVVN0cmlu
Z0lubGluZShleGVjKSkgPyAtMSA6IDE7CisgICAgICAgICAgICAgICAgY29tcGFyZVJlc3VsdCA9
IGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihqT2JqLnRvV1RGU3RyaW5nSW5saW5lKGV4ZWMpLCBt
aW5PYmoudG9XVEZTdHJpbmdJbmxpbmUoZXhlYykpID8gLTEgOiAxOwogCiAgICAgICAgICAgICBp
ZiAoY29tcGFyZVJlc3VsdCA8IDApIHsKICAgICAgICAgICAgICAgICB0aGVtaW4gPSBqOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAppbmRleCBiMGFkYWIzMmNmZjRj
NGI4OWI4YTk2MDBkOTY4ZGFlZWUzY2NmNWZhLi40YzcyZjNlZDEwZTBlNTMyMWI3MjNjYjcyOTUy
OWZlNzI0MTM2MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aApAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiB2b2lk
ICgqR2V0UHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgR2V0UHJvcGVydHlO
YW1lc0Z1bmN0aW9uUHRyIGdldFByb3BlcnR5TmFtZXM7CiAKLSAgICAgICAgdHlwZWRlZiBVU3Ry
aW5nICgqQ2xhc3NOYW1lRnVuY3Rpb25QdHIpKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgICAgIHR5
cGVkZWYgU3RyaW5nICgqQ2xhc3NOYW1lRnVuY3Rpb25QdHIpKGNvbnN0IEpTT2JqZWN0Kik7CiAg
ICAgICAgIENsYXNzTmFtZUZ1bmN0aW9uUHRyIGNsYXNzTmFtZTsKIAogICAgICAgICB0eXBlZGVm
IGJvb2wgKCpIYXNJbnN0YW5jZUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnZlcnNpb24uY3BwCmluZGV4IDQ3ODM5ODE3ZmY5ZWQxYWFlYTIwMTgzNDI2ZDhiMmFmMjk0
ZDU5NGQuLjkzMzE1NDFhODQ4NmI1MzRlYTRlNTZjYmNlZGNjMDc1MzZmMjQ1YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKQEAgLTI1
LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRhdGVDb252ZXJz
aW9uLmgiCiAKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBPUyhXSU5E
T1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBhcHBlbmRO
dW1iZXI8Mj4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IHZhbHVlKQogICAgIGJ1aWxkZXIu
YXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIHZhbHVlICUgMTApKTsKIH0KIAotVVN0cmlu
ZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3Jt
YXQgZm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCkKK1N0cmluZyBmb3JtYXREYXRlVGltZShjb25z
dCBHcmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzVVRD
VmFyaWFudCkKIHsKICAgICBib29sIGFwcGVuZERhdGUgPSBmb3JtYXQgJiBEYXRlVGltZUZvcm1h
dERhdGU7CiAgICAgYm9vbCBhcHBlbmRUaW1lID0gZm9ybWF0ICYgRGF0ZVRpbWVGb3JtYXRUaW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmgKaW5k
ZXggZmQxYTdlYjM1ODliZTNiNDM2ZmIzMTYzNTc1ZDc5ZDQ1ZjJiOGIyMi4uOGVhNGMxN2FkYmQy
YWJhMzQzODY0NWMyMDBiMTdjZjJjOTVjYmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5oCkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaW5jbHVk
ZSA8d3RmL0dyZWdvcmlhbkRhdGVUaW1lLmg+CiAKLW5hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNl
IFdURiB7CitjbGFzcyBTdHJpbmc7Cit9IC8vIG5hbWVzcGFjZSBXVEYKIAotY2xhc3MgVVN0cmlu
ZzsKK25hbWVzcGFjZSBKU0MgewogCiBlbnVtIERhdGVUaW1lRm9ybWF0IHsKICAgICBEYXRlVGlt
ZUZvcm1hdERhdGUgPSAxLApAQCAtMzcsNyArMzksNyBAQCBlbnVtIERhdGVUaW1lRm9ybWF0IHsK
ICAgICBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lID0gRGF0ZVRpbWVGb3JtYXREYXRlIHwgRGF0
ZVRpbWVGb3JtYXRUaW1lCiB9OwogCi1VU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lJiwgRGF0ZVRpbWVGb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KTsKK1dURjo6
U3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiwgRGF0ZVRpbWVG
b3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggMzYz
ZWVjMDNhOWYxMjk3Yjc4NWExNTdlMDUwNGJiMDc3ZTE1MGY3My4uOGNmZDQ0ZWVmODcxNDQxMjli
NzYwZjA2ZGI5NzI4MjQ4OGU4MzY1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBlbnVtIExvY2FsZURh
dGVUaW1lRm9ybWF0IHsgTG9jYWxlRGF0ZUFuZFRpbWUsIExvY2FsZURhdGUsIExvY2FsZVRpbWUg
fTsKIC8vIEZJWE1FOiBTaW5jZSB0aGlzIGlzIHN1cGVyaW9yIHRvIHRoZSBzdHJmdGltZS1iYXNl
ZCB2ZXJzaW9uLCB3aHkgbGltaXQgdGhpcyB0byBQTEFURk9STShNQUMpPwogLy8gSW5zdGVhZCB3
ZSBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhpcyB3aGVuZXZlciBVU0UoQ0YpIGlzIHRydWUuCiAK
LXN0YXRpYyBDRkRhdGVGb3JtYXR0ZXJTdHlsZSBzdHlsZUZyb21BcmdTdHJpbmcoY29uc3QgVVN0
cmluZyYgc3RyaW5nLCBDRkRhdGVGb3JtYXR0ZXJTdHlsZSBkZWZhdWx0U3R5bGUpCitzdGF0aWMg
Q0ZEYXRlRm9ybWF0dGVyU3R5bGUgc3R5bGVGcm9tQXJnU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBDRkRhdGVGb3JtYXR0ZXJTdHlsZSBkZWZhdWx0U3R5bGUpCiB7CiAgICAgaWYgKHN0cmlu
ZyA9PSAic2hvcnQiKQogICAgICAgICByZXR1cm4ga0NGRGF0ZUZvcm1hdHRlclNob3J0U3R5bGU7
CkBAIC0xNTAsOSArMTUwLDkgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVj
U3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5jZSosIGRvdWJsZSB0aW1lSW5NaWwKICAgICBDRkRhdGVG
b3JtYXR0ZXJTdHlsZSB0aW1lU3R5bGUgPSAoZm9ybWF0ICE9IExvY2FsZURhdGUgPyBrQ0ZEYXRl
Rm9ybWF0dGVyTG9uZ1N0eWxlIDoga0NGRGF0ZUZvcm1hdHRlck5vU3R5bGUpOwogCiAgICAgYm9v
bCB1c2VDdXN0b21Gb3JtYXQgPSBmYWxzZTsKLSAgICBVU3RyaW5nIGN1c3RvbUZvcm1hdFN0cmlu
ZzsKKyAgICBTdHJpbmcgY3VzdG9tRm9ybWF0U3RyaW5nOwogCi0gICAgVVN0cmluZyBhcmcwU3Ry
aW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBhcmcwU3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChhcmcwU3RyaW5nID09ICJjdXN0b20iICYmICFleGVjLT5hcmd1
bWVudCgxKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHVzZUN1c3RvbUZvcm1hdCA9IHRydWU7
CiAgICAgICAgIGN1c3RvbUZvcm1hdFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgSlNDZWxsKiBm
b3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0ZSogZXhlYywgRGF0ZUluc3RhbmNlKiwgZG91YmxlIHRp
bWVJbk1pbAogCiAgICAgQ0ZSZWxlYXNlKHN0cmluZyk7CiAKLSAgICByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKGV4ZWMsIFVTdHJpbmcoYnVmZmVyLCBsZW5ndGgpKTsKKyAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhidWZmZXIsIGxlbmd0aCkpOwogfQogCiAjZWxp
ZiBVU0UoSUNVX1VOSUNPREUpICYmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKQEAgLTIxMiw3ICsy
MTIsNyBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0ZSogZXhlYywg
RGF0ZUluc3RhbmNlKiBkYXRlT2JqZWN0LCBkb3VibAogICAgIGlmIChzdGF0dXMgIT0gVV9aRVJP
X0VSUk9SKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKIAotICAgIHJldHVy
biBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgVVN0cmluZyhidWZmZXIsIGxlbmd0aCkpOworICAg
IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7
CiB9CiAKICNlbHNlCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9j
YWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiBnZHQsIEwK
ICAgICBpZiAobGVuZ3RoKQogICAgICAgICBsZW5ndGgtLTsKIAotICAgIHJldHVybiBqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgVVN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKKyAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5n
dGgpKTsKIAogI2Vsc2UgLy8gT1MoV0lORE9XUykKIApAQCAtMzIyLDcgKzMyMiw3IEBAIHN0YXRp
YyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSYgZ2R0LCBMCiAgICAgaWYgKGxlbmd0aCAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KC0xKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAg
ICAgICAgICAgYnVmZmVyW2ldID0gc3RhdGljX2Nhc3Q8VUNoYXI+KHRlbXBidWZmZXJbaV0pOwot
ICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFVTdHJpbmcoYnVmZmVyLCBs
ZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmco
YnVmZmVyLCBsZW5ndGgpKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCmluZGV4IGEzYTk5MGQ1OTZlMjNkN2ZhNjFmNmY5YzI0MGM1ZWVmNzkw
NzM2MjkuLjBhNTIyYzRmZDAwM2RhZDA2NjQ4YThkMTM5YWNhZmMwNGZlNWI3YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTQzLDM3ICs0MywzNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBjaGFyKiBsaW5lUHJvcGVydHlOYW1lID0gImxpbmUi
Owogc3RhdGljIGNvbnN0IGNoYXIqIHNvdXJjZVVSTFByb3BlcnR5TmFtZSA9ICJzb3VyY2VVUkwi
OwogCi1KU09iamVjdCogY3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJU
KCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZSgp
LCBtZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGNyZWF0ZUV2YWxFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0
ZUV2YWxFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2Jq
ZWN0LT5ldmFsRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsK
IH0KIAotSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnJhbmdl
RXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKIH0KIAotSlNP
YmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBFcnJvckluc3RhbmNl
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+cmVmZXJl
bmNlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKIH0KIAot
SlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAg
IEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+c3ludGF4RXJy
b3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKIH0KIAotSlNPYmpl
Y3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBV
U3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFt
ZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT50eXBlRXJyb3JDb25zdHJ1Y3Rv
cigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKQEAgLTg0LDM4ICs4NCwzOCBAQCBKU09i
amVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBl
bm91Z2ggYXJndW1lbnRzIik7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3Qq
IGNyZWF0ZVVSSUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1
cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QtPlVSSUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2Fn
ZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVT
dHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVFdmFs
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3Qq
IGNyZWF0ZUV2YWxFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlRXZhbEVycm9yKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9
CiAKLUpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9CiAK
LUpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJp
bmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBj
cmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQor
SlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9CkBAIC0xMjUsNyArMTI1LDcgQEAgSlNPYmplY3QqIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKIH0KIAotSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
VVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gY3JlYXRlVVJJRXJyb3Io
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtZXNzYWdlKTsKIH0KQEAgLTEzMyw3ICsxMzMs
NyBAQCBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKQogSlNPYmplY3QqIGFkZEVycm9ySW5mbyhDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQog
ewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KTsKLSAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwgPSBzb3VyY2UucHJvdmlkZXIoKS0+dXJs
KCk7CisgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwgPSBzb3VyY2UucHJvdmlkZXIoKS0+dXJs
KCk7CiAKICAgICBpZiAobGluZSAhPSAtMSkKICAgICAgICAgZXJyb3ItPnB1dERpcmVjdCgqZ2xv
YmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1i
ZXIobGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuaAppbmRleCA2NWFlYTNlZGNjMTNkNDBmNTQwODYzMmE2ZTg3MzdhN2JhZWU3ZWZj
Li5iYzcxZjcwYjE5MDVlNGEzZjg4NGY3OWU1NDc2ZWYyMDVmZmY2YzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTM2LDI2ICszNiwyNSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIGNsYXNz
IFN0cnVjdHVyZTsKLSAgICBjbGFzcyBVU3RyaW5nOwogCiAgICAgLy8gTWV0aG9kcyB0byBjcmVh
dGUgYSByYW5nZSBvZiBpbnRlcm5hbCBlcnJvcnMuCi0gICAgSlNPYmplY3QqIGNyZWF0ZUVycm9y
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVF
dmFsRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3Qq
IGNyZWF0ZVJhbmdlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAg
SlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0
cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOworICAgIEpTT2JqZWN0KiBjcmVhdGVFdmFsRXJy
b3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU09iamVjdCogY3JlYXRl
UmFuZ2VFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOworICAgIEpTT2JqZWN0
KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOwor
ICAgIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYpOworICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoSlNHbG9iYWxPYmplY3QqKTsKLSAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9y
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgLy8gRXhlY1N0YXRlIHdyYXBw
ZXJzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3Rh
dGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZUV2YWxFcnJvcihFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVN5
bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNPYmplY3QqIGNyZWF0ZUV2YWxFcnJvcihFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3Jl
YXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVy
cm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KEV4ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CisgICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9kcyB0byBhZGQgCiAgICAgYm9vbCBoYXNF
cnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yKTsKQEAgLTc2LDcgKzc1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24g
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICBTdHJpY3RN
b2RlVHlwZUVycm9yRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgICAgIDogSW50
ZXJuYWxGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAgICAgICAgICwgbV9t
ZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgIHsKQEAgLTg3LDcgKzg2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsK
IAotICAgICAgICBzdGF0aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgc3RhdGljIFN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICAgICAgewogICAgICAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9u
KiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CiAgICAgICAgICAgICBmdW5jdGlvbi0+
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCAiIik7CkBAIC0xMjYsNyArMTI1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFVT
dHJpbmcgbV9tZXNzYWdlOworICAgICAgICBTdHJpbmcgbV9tZXNzYWdlOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJ
bnN0YW5jZS5oCmluZGV4IGQ2ZmEzMmY5OWNmM2IzZGM0YjBmMTI0OTM5N2Y1ZDYwNzU1NjUyN2Qu
Ljg5NDY3NjM2MTJhZDlmYzY4YzMzMzA0MTlkOWFhZGFiNjYzZjM5MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xv
YmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEVycm9ySW5zdGFuY2VU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgc3Rh
dGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICBzdGF0aWMg
RXJyb3JJbnN0YW5jZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgewogICAgICAgICAg
ICAgRXJyb3JJbnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxF
cnJvckluc3RhbmNlPihnbG9iYWxEYXRhLmhlYXApKSBFcnJvckluc3RhbmNlKGdsb2JhbERhdGEs
IHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
RGF0YSwgbWVzc2FnZSk7CkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5k
ZWZpbmVkKCkgPyBVU3RyaW5nKCkgOiBtZXNzYWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0
dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgYXBwZW5kU291
cmNlVG9NZXNzYWdlKCkgeyByZXR1cm4gbV9hcHBlbmRTb3VyY2VUb01lc3NhZ2U7IH0KQEAgLTU1
LDcgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBs
aWNpdCBFcnJvckluc3RhbmNlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCi0gICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvclByb3RvdHlwZS5jcHAKaW5kZXggNWRkM2U4NWUyZjNmMzQxNTlmOWIzZDdkYzdkZWI3MDVl
YTMzM2NhMi4uMzU0YTMxMjFhNGI4N2EzNjQwNGI5ZDdjOWZlYzJjNDQxNGMyNzBmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcApAQCAt
MjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIk9i
amVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIKLSNp
bmNsdWRlICJVU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC05Nyw3ICs5Niw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKICAgICAvLyA0LiBJZiBuYW1lIGlzIHVuZGVmaW5lZCwgdGhlbiBsZXQgbmFtZSBiZSAi
RXJyb3IiOyBlbHNlIGxldCBuYW1lIGJlIFRvU3RyaW5nKG5hbWUpLgotICAgIFVTdHJpbmcgbmFt
ZVN0cmluZzsKKyAgICBTdHJpbmcgbmFtZVN0cmluZzsKICAgICBpZiAobmFtZS5pc1VuZGVmaW5l
ZCgpKQogICAgICAgICBuYW1lU3RyaW5nID0gIkVycm9yIjsKICAgICBlbHNlIHsKQEAgLTExNCw3
ICsxMTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIChzaWMpCiAgICAgLy8gNi4gSWYgbXNnIGlz
IHVuZGVmaW5lZCwgdGhlbiBsZXQgbXNnIGJlIHRoZSBlbXB0eSBTdHJpbmc7IGVsc2UgbGV0IG1z
ZyBiZSBUb1N0cmluZyhtc2cpLgogICAgIC8vIDcuIElmIG1zZyBpcyB1bmRlZmluZWQsIHRoZW4g
bGV0IG1zZyBiZSB0aGUgZW1wdHkgU3RyaW5nOyBlbHNlIGxldCBtc2cgYmUgVG9TdHJpbmcobXNn
KS4KLSAgICBVU3RyaW5nIG1lc3NhZ2VTdHJpbmc7CisgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmc7
CiAgICAgaWYgKG1lc3NhZ2UuaXNVbmRlZmluZWQoKSkKICAgICAgICAgbWVzc2FnZVN0cmluZyA9
ICIiOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBjZTYzYWU5YWY0ZWY0NjQ3YzVjMTc2NjM3Y2M0M2Nm
ZGQ4N2Y4Yjk0Li44M2E0ZTAzYzNiM2I3MDQzNTM0OTljNGNjNzNmMjFiYTRiZmFjYTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0Nv
bmNhdGVuYXRlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xMDcsMTMgKzEwNiwxMyBAQCBK
U09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAgVVN0cmluZyBtZXNzYWdl
KG1ha2VVU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC51c3RyaW5nKCkpKTsK
KyAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBp
ZGVudC51c3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
bWVzc2FnZSk7CiB9CiAgICAgCiBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBvcCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3Ry
aW5nIGVycm9yTWVzc2FnZSA9IG1ha2VVU3RyaW5nKCInIiwgdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpLCAiJyBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCBmb3IgJyIsIG9wLCAiJyIp
OworICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCInIiwgdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiJyBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCBmb3IgJyIs
IG9wLCAiJyIpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgZXJyb3JNZXNzYWdlKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFuY2Uo
KSk7CiAgICAgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiktPnNldEFwcGVu
ZFNvdXJjZVRvTWVzc2FnZSgpOwpAQCAtMTIyLDcgKzEyMSw3IEBAIEpTT2JqZWN0KiBjcmVhdGVJ
bnZhbGlkUGFyYW1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVl
IHZhbHVlCiAKIEpTT2JqZWN0KiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtl
VVN0cmluZygiJyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIicgaXMgbm90
IGEgY29uc3RydWN0b3IiKTsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygi
JyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIicgaXMgbm90IGEgY29uc3Ry
dWN0b3IiKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IGVycm9yTWVzc2FnZSk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbi0+aXNFcnJvckluc3RhbmNlKCkp
OwogICAgIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24pLT5zZXRBcHBlbmRT
b3VyY2VUb01lc3NhZ2UoKTsKQEAgLTEzMSw3ICsxMzAsNyBAQCBKU09iamVjdCogY3JlYXRlTm90
QUNvbnN0cnVjdG9yRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogCiBKU09i
amVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlKQogewotICAgIFVTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVVTdHJpbmcoIiciLCB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICInIGlzIG5vdCBhIGZ1bmN0aW9uIik7Cisg
ICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyksICInIGlzIG5vdCBhIGZ1bmN0aW9uIik7CiAgICAgSlNPYmplY3Qq
IGV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOwogICAgIEFT
U0VSVChleGNlcHRpb24tPmlzRXJyb3JJbnN0YW5jZSgpKTsKICAgICBzdGF0aWNfY2FzdDxFcnJv
ckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+c2V0QXBwZW5kU291cmNlVG9NZXNzYWdlKCk7CkBAIC0x
NDAsMTYgKzEzOSwxNiBAQCBKU09iamVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogCiBKU09iamVjdCogY3JlYXRlTm90QW5PYmplY3RF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVVN0cmluZyBlcnJv
ck1lc3NhZ2UgPSBtYWtlVVN0cmluZygiJyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSwgIicgaXMgbm90IGFuIG9iamVjdCIpOworICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBt
YWtlU3RyaW5nKCInIiwgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiJyBpcyBu
b3QgYW4gb2JqZWN0Iik7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBlcnJvck1lc3NhZ2UpOwogICAgIEFTU0VSVChleGNlcHRpb24tPmlzRXJyb3JJbnN0
YW5jZSgpKTsKICAgICBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+c2V0
QXBwZW5kU291cmNlVG9NZXNzYWdlKCk7CiAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKIH0KIAotSlNP
YmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCitKU09iamVjdCogY3JlYXRlRXJyb3JG
b3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBt
YWtlVVN0cmluZygiU3RyaWN0IG1vZGUgZm9yYmlkcyBpbXBsaWNpdCBjcmVhdGlvbiBvZiBnbG9i
YWwgcHJvcGVydHkgJyIsIHByb3BlcnR5TmFtZSwgIiciKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIlN0cmljdCBtb2RlIGZvcmJpZHMgaW1wbGlj
aXQgY3JlYXRpb24gb2YgZ2xvYmFsIHByb3BlcnR5ICciLCBwcm9wZXJ0eU5hbWUsICInIikpOwog
fQogCiBKU09iamVjdCogY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5oCmluZGV4IDdiZmZkMjk0YjM1Njg3NGZhYzE0YmQ5NDRjYzRjOTJiYjJjN2I3Mjgu
LmQyZGFhYTA0NGFhZDUwOTM5N2E3M2Y5NGRhY2JjM2QzZjQwOWQ0YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1
ZSk7CiBKU09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhlY1N0YXRlKiwgY29uc3Qg
Y2hhciogb3AsIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9y
KEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9y
KEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEds
b2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworSlNPYmplY3QqIGNy
ZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJik7CiAKIEpTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKik7CiBK
U09iamVjdCogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDk2YjhiOTMzYTU3NWMz
M2MyMjhhNDk5MzljYzA4OWFiOTAyZWUzYzkuLjRhYzVmODgxMzgwOWRmODA4MTdiZDUwMDVmZDMz
OGY4OTAzNzcwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklU
RHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIu
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNjY5LDE2ICs2NjksMTYgQEAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGNvbnN0IElk
ZW50aWZpZXImIGZ1bmN0aW8KICAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uTmFtZSwgYm9keS0+c291
cmNlKCksIGJvZHktPnVzZXNBcmd1bWVudHMoKSwgYm9keS0+cGFyYW1ldGVycygpLCBib2R5LT5p
c1N0cmljdE1vZGUoKSwgYm9keS0+bGluZU5vKCksIGJvZHktPmxhc3RMaW5lKCkpOwogfQogCi1V
U3RyaW5nIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcoKSBjb25zdAorU3RyaW5nIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1TdHJpbmcoKSBjb25zdAogewogICAgIEZ1bmN0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycyA9ICptX3BhcmFtZXRlcnM7Ci0gICAgVVN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgcG9z
ID0gMDsgcG9zIDwgcGFyYW1ldGVycy5zaXplKCk7ICsrcG9zKSB7CiAgICAgICAgIGlmICghYnVp
bGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQocGFyYW1ldGVyc1twb3NdLnVzdHJpbmcoKSk7CiAgICAgfQotICAg
IHJldHVybiBidWlsZGVyLnRvVVN0cmluZygpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApp
bmRleCAzOGMzOWY5MTRkNDY2YWEwZWYzZjIyZTg1MWM3YmZiMGJmOWU0ODJlLi5lMTNkMjhlNWQ4
NGQ2NDlkM2RkOGFiNjEwMjEzOTJhMjMxMGJkOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zMjAsNyArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgeyByZXR1cm4gbV9zb3VyY2U7
IH0KICAgICAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5w
cm92aWRlcklEKCk7IH0KLSAgICAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7IH0KKyAgICAgICAgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwo
KTsgfQogICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmU7IH0K
ICAgICAgICAgaW50IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQogCkBA
IC02NjEsNyArNjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTU3RyaW5nKiBuYW1l
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX25hbWVWYWx1ZS5nZXQoKTsgfQogICAgICAgICBzaXpl
X3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsg
fSAvLyBFeGNsdWRpbmcgJ3RoaXMnIQogICAgICAgICB1bnNpZ25lZCBjYXB0dXJlZFZhcmlhYmxl
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX251bUNhcHR1cmVkVmFyaWFibGVzOyB9Ci0gICAgICAg
IFVTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIHBhcmFtU3RyaW5n
KCkgY29uc3Q7CiAgICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3ltYm9sVGFibGUuZ2V0KCk7IH0KIAogICAgICAgICB2b2lkIGNsZWFyQ29k
ZUlmTm90Q29tcGlsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IDdmODJhNzRjZTAwZTBjMDI4OTVmM2Ji
ODRjNGZmOTgyZmM0ODM5YWYuLjBiOTUzZmQ5NmU1MjhmNDRjYTNkY2ZkNjFiYmQ2ZDdlMDQwMzFk
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCkBAIC0zMCw4ICszMCw3IEBACiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNp
bmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgotI2luY2x1ZGUgIlVTdHJpbmdC
dWlsZGVyLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtODAsMjUgKzc5
LDI1IEBAIENhbGxUeXBlIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJiBjYWxsRGF0YSkKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENv
bnN0cnVjdG9yCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJ
ZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3Qm
IGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFnbG9iYWxP
YmplY3QtPmV2YWxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNy
ZWF0ZUV2YWxFcnJvcihleGVjLCAiRnVuY3Rpb24gY29uc3RydWN0b3IgaXMgZGlzYWJsZWQiKSk7
CiAgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4
ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9u
KTsKIH0KIAotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
QXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3Ry
aW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCitKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25z
dCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25z
dCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIC8vIEZ1bmN0aW9ucyBuZWVkIHRvIGhh
dmUgYSBzcGFjZSBmb2xsb3dpbmcgdGhlIG9wZW5pbmcgeyBkdWUgdG8gZm9yIHdlYiBjb21wYXRp
YmlsaXR5CiAgICAgLy8gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDM1MAogICAgIC8vIFdlIGFsc28gbmVlZCBcbiBiZWZvcmUgdGhlIGNsb3NpbmcgfSB0byBo
YW5kbGUgLy8gY29tbWVudHMgYXQgdGhlIGVuZCBvZiB0aGUgbGFzdCBsaW5lCi0gICAgVVN0cmlu
ZyBwcm9ncmFtOworICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkK
ICAgICAgICAgcHJvZ3JhbSA9ICIoZnVuY3Rpb24oKSB7IFxufSkiOwogICAgIGVsc2UgaWYgKGFy
Z3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlVVN0cmluZygiKGZ1bmN0aW9u
KCkgeyAiLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufSkiKTsK
KyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIihmdW5jdGlvbigpIHsgIiwgYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn0pIik7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihmdW5jdGlvbigiKTsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7CkBAIC0xMDgs
NyArMTA3LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxl
ZENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmoKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIikgeyAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdChhcmdzLnNpemUoKSAt
IDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJcbn0pIik7Ci0gICAgICAgIHByb2dyYW0gPSBidWlsZGVyLnRvVVN0cmluZygpOworICAgICAg
ICBwcm9ncmFtID0gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIAogICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwpAQCAtMTI3LDcgKzEy
Niw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
ayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rp
b24gQ29uc3RydWN0b3IKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7
Ci0gICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywg
SWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIiksIFVTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjpt
aW5pbXVtUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCwgYXJncywgSWRlbnRpZmllcihleGVjLCAiYW5vbnltb3VzIiksIFN0cmluZygp
LCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmgKaW5kZXggMzE5ODZiNzBhNzNjNjUzZDE4OGRiMjZmNGIxN2VlMTA0ZDA1MjEyNy4u
OTllYWZlZTgwZjJhNWU5MDUyZmZjNjhkODU0ZDFhOTI2YmIzNzRiZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTYs
MTAgKzU2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwogCi0gICAgSlNPYmplY3QqIGNv
bnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlz
dCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNl
VVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYpOworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25z
dCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25z
dCBXVEY6OlRleHRQb3NpdGlvbiYpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJs
ZWRDaGVjayhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgVVN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBp
bmdFdmFsRW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJn
TGlzdCYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQ
b3NpdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IDQyMDZjZjJiMGYy
Y2Y5NjI4NTZkZjY5NDE3ZGFjMGMwODg5Yzk5Y2IuLmEyMDBkY2FjODE4ZDk5ZjRjM2ViNWZjZDI5
M2U1ZTEwZDMxNzEzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRnVuY3Rpb25Qcm90b3R5
cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3QKIHsKIH0KIAotdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBuYW1lKQordm9pZCBGdW5jdGlvblByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CkBAIC04Myw3ICs4Myw3IEBAIENhbGxUeXBlIEZ1bmN0aW9uUHJvdG90
eXBlOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiAvLyBGdW5jdGlv
bnMKIAogLy8gQ29tcGF0aWJpbGl0eSBoYWNrIGZvciB0aGUgT3B0aW1vc3QgSmF2YVNjcmlwdCBs
aWJyYXJ5LiAoU2VlIDxyZGFyOi8vcHJvYmxlbS82NTk1MDQwPi4pCi1zdGF0aWMgaW5saW5lIHZv
aWQgaW5zZXJ0U2VtaWNvbG9uSWZOZWVkZWQoVVN0cmluZyYgZnVuY3Rpb25Cb2R5KQorc3RhdGlj
IGlubGluZSB2b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFN0cmluZyYgZnVuY3Rpb25Cb2R5
KQogewogICAgIEFTU0VSVChmdW5jdGlvbkJvZHlbMF0gPT0gJ3snKTsKICAgICBBU1NFUlQoZnVu
Y3Rpb25Cb2R5W2Z1bmN0aW9uQm9keS5sZW5ndGgoKSAtIDFdID09ICd9Jyk7CkBAIC05Miw3ICs5
Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChVU3RyaW5n
JiBmdW5jdGlvbkJvZHkpCiAgICAgICAgIFVDaGFyIGNoID0gZnVuY3Rpb25Cb2R5W2ldOwogICAg
ICAgICBpZiAoIUxleGVyPFVDaGFyPjo6aXNXaGl0ZVNwYWNlKGNoKSAmJiAhTGV4ZXI8VUNoYXI+
Ojppc0xpbmVUZXJtaW5hdG9yKGNoKSkgewogICAgICAgICAgICAgaWYgKGNoICE9ICc7JyAmJiBj
aCAhPSAnfScpCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbWFrZVVTdHJpbmcoZnVu
Y3Rpb25Cb2R5LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIGkgKyAxKSwgIjsiLCBmdW5jdGlvbkJv
ZHkuc3Vic3RyaW5nU2hhcmluZ0ltcGwoaSArIDEsIGZ1bmN0aW9uQm9keS5sZW5ndGgoKSAtIChp
ICsgMSkpKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbkJvZHkgPSBtYWtlU3RyaW5nKGZ1bmN0
aW9uQm9keS5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBpICsgMSksICI7IiwgZnVuY3Rpb25Cb2R5
LnN1YnN0cmluZ1NoYXJpbmdJbXBsKGkgKyAxLCBmdW5jdGlvbkJvZHkubGVuZ3RoKCkgLSAoaSAr
IDEpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDYsNyAr
MTA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2
aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtc
biAgICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7Ci0gICAgICAgIFVTdHJpbmcgc291
cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKKyAgICAgICAgU3Ry
aW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CiAgICAg
ICAgIGluc2VydFNlbWljb2xvbklmTmVlZGVkKHNvdXJjZVN0cmluZyk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24g
IiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoIiwgZXhlY3V0YWJsZS0+cGFyYW1TdHJpbmcoKSwg
IikgIiwgc291cmNlU3RyaW5nKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKaW5kZXggNTk0Mjc5MTJiNjM3YjI4ZjE4Zjhh
MDdiODdhOWM1YTUyZTU1NDc5MC4uOWZmZWJmN2E5ZWRkNTA3ZDYyM2NlZTM2YTBlMzU2OTMzYTg1
MjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKKyAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aAppbmRleCAxOTZmZGNhMjNmNTliOGJiMzlhZGNiMzcxYTUwMGI3ZjQ0YTcwMDEwLi5lNTJiNWE5
ZGE2YjQ2YWFmYzA1NDU4YmFjODg5MjNiZjUyNWI2ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0yMyw5ICsyMyw5IEBACiAKICNpbmNsdWRlICJK
U0dsb2JhbERhdGEuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KLSNpbmNsdWRl
ICJVU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC00NSwxNCArNDUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBjaGFyICgmY2hh
cmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgY2hh
cmFjdGVycykpIHsgfQogCiAgICAgICAgIElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBTdHJp
bmdJbXBsKiByZXApIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHJlcCkpIHsgfQotICAgICAgICBJZGVu
dGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQo
ZXhlYywgcy5pbXBsKCkpKSB7IH0KKyAgICAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQoZXhlYywgcy5pbXBsKCkpKSB7IH0KIAog
ICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgTENoYXIq
IHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEsIHMsIGxlbmd0aCkpIHsg
fQogICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVUNo
YXIqIHMsIGludCBsZW5ndGgpIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEsIHMsIGxlbmd0aCkp
IHsgfQogICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU3RyaW5n
SW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZChnbG9iYWxEYXRhLCByZXApKSB7IH0gCi0gICAgICAg
IElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBzKSA6
IG1fc3RyaW5nKGFkZChnbG9iYWxEYXRhLCBzLmltcGwoKSkpIHsgfQorICAgICAgICBJZGVudGlm
aWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5n
KGFkZChnbG9iYWxEYXRhLCBzLmltcGwoKSkpIHsgfQogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcm
IHVzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgICAgICAvLyBGSVhNRTog
Zml4IHRoaXMgbmFtZS4KKyAgICAgICAgY29uc3QgU3RyaW5nJiB1c3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmltcGwoKTsgfQogICAgICAgICAKICAgICAgICAgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJzKCk7IH0KQEAgLTkx
LDcgKzkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBVU3RyaW5nIG1fc3RyaW5nOworICAgICAgICBTdHJp
bmcgbV9zdHJpbmc7CiAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogICAg
ICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMkZyb21DaGFyYWN0ZXJz
KGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wmIG9rKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKaW5kZXggYzdmYmQzMzJlMGRlYzc5OTZiZWRhNGM0ZmYxOWFlM2ZjYzI3NGRmZS4u
ZDNjMmUzZDAwNWU0MDU1ODEwNzM0OGExMjhkOTYyZTE3YWI3ZGUxZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAg
LTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNEYXRl
TWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiVVN0cmluZy5o
IgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCA5ODVhYjczYjA0N2UwYzY2ZjRjNTc2NGYw
NzE5NDBkNDk0NGRhNzNlLi4yMTZkY2UzNzk1NWZkNDc3OWU1YTVkNDk3YTQwNTJmMTc3ZTM1NmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydQogewogfQog
Ci12b2lkIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKK3ZvaWQgSW50ZXJuYWxGdW5jdGlvbjo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKQEAgLTQ3LDE5ICs0NywxOSBAQCB2b2lkIEludGVybmFsRnVuY3Rp
b246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmlu
ZyYgbgogICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgpID8gIiIgOiBuYW1lKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCi1jb25zdCBVU3RyaW5nJiBJ
bnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKK2NvbnN0IFN0cmluZyYgSW50
ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIGFzU3Ry
aW5nKGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CiB9CiAKLWNvbnN0IFVTdHJpbmcgSW50
ZXJuYWxGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQorY29uc3QgU3RyaW5n
IEludGVybmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKICAgICAKICAgICBpZiAo
ZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZyhkaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBh
c1N0cmluZyhkaXNwbGF5TmFtZSktPnRyeUdldFZhbHVlKCk7CiAgICAgCi0gICAgcmV0dXJuIFVT
dHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIENhbGxUeXBlIEludGVybmFsRnVu
Y3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJikKQEAgLTY4LDkgKzY4LDkgQEAg
Q2FsbFR5cGUgSW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KQogICAgIHJldHVybiBDYWxsVHlwZU5vbmU7CiB9CiAKLWNvbnN0IFVTdHJpbmcgSW50ZXJuYWxG
dW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKK2NvbnN0IFN0
cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIGNvbnN0IFVTdHJpbmcgZXhwbGljaXROYW1lID0gZGlzcGxheU5hbWUoZXhl
Yyk7CisgICAgY29uc3QgU3RyaW5nIGV4cGxpY2l0TmFtZSA9IGRpc3BsYXlOYW1lKGV4ZWMpOwog
ICAgIAogICAgIGlmICghZXhwbGljaXROYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGV4
cGxpY2l0TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaAppbmRleCAxNTBmYjc1OWVkMDlkNGMzMDA3ZDk3YTViOGEwMjIwN2IwYmUzMDkx
Li5lMjZiOWY5NTNmZThhNGQ3NzJlZmU0OTIzOTIyNGQ3MmM3ZGM1ZDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCkBAIC0zNyw5ICsz
Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
VVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKLSAgICAgICAgY29uc3QgVVN0cmluZyBkaXNwbGF5
TmFtZShFeGVjU3RhdGUqKTsKLSAgICAgICAgY29uc3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxh
eU5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFN0cmlu
ZyYgbmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGRpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSopOworICAgICAgICBjb25zdCBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSopOwogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG8pIAogICAgICAgICB7IApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAKaW5kZXggODUxNzA4NWRmZWUyNjhm
M2Y0Zjc5NmI4MTY0MjBkNzI3YTI0YzlmMi4uY2QxZDgzMGZlMjRhM2IxMzI2MDJmODczZDhmNWFm
MTBhOGJhZjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
UElWYWx1ZVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QVBJVmFsdWVXcmFwcGVyLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkpTQVBJVmFs
dWVXcmFwcGVyLmgiCiAKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKLSNpbmNsdWRlICJVU3Ry
aW5nLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwCmluZGV4IDcyMTg2MDRkMTEyYzc4YjU3MTJiNDU0NDM4ZjI5YjEwYjUyMDg0
MzguLmYyNGRjNzUxZGJjODkxZmY2YmY0MWNhOWE4ODZlZmJmMWJhZDgyMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xNDc5LDcgKzE0NzksNyBAQCB2
b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIGEgdG9TdHJpbmcgY2Fs
bCByYWlzZXMgYW4gZXhjZXB0aW9uLgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7IGkrKykKLSAgICAgICAgdmFsdWVzW2ldLnNlY29uZCA9
IHZhbHVlc1tpXS5maXJzdC50b1VTdHJpbmdJbmxpbmUoZXhlYyk7CisgICAgICAgIHZhbHVlc1tp
XS5zZWNvbmQgPSB2YWx1ZXNbaV0uZmlyc3QudG9XVEZTdHJpbmdJbmxpbmUoZXhlYyk7CiAKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+
cG9wVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCAzZjY0MzA4NzFkMmNhNjliZmE4MGVk
YmNlY2UyZjlhODcwNjQxOWMzLi43NTQwZDQzOTQ4MWFkZDIwNDZjZjdlYjEzYmE4MTM4ZGUwNDgy
MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
b3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0VHlwZSwg
Y29uc3RydWN0RGF0YSwgYXJncykpOwogfQogCi1KU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5j
dGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBi
b3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCitKU0JvdW5kRnVuY3Rp
b24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5k
VGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBj
b25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRhKHRhcmdldEZ1bmN0aW9uLCBjb25z
dHJ1Y3REYXRhKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBKU0JvdW5kRnVuY3Rpb246OkpTQm91bmRG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7
CiB9CiAKLXZvaWQgSlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJp
bmcmIG5hbWUpCit2b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRl
KiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYywgZXhlY3V0YWJs
ZSwgbGVuZ3RoLCBuYW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAppbmRleCBkZDEy
MjkyNzJiZjYwNDg2NzQ3MTE4MjgyYjg3OWM1ODA5NWQxMDBmLi41MDY3ZDE5NGNlOWM0OTQyNjg2
NzkwNzk3ZDEzZGNjOWQ4YTFmNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBKU0JvdW5kRnVu
Y3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Z1bmN0
aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24sIEpTVmFsdWUgYm91
bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBjb25zdCBVU3RyaW5nJik7CisgICAgc3Rh
dGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3Vu
ZEFyZ3MsIGludCwgY29uc3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMgYm9vbCBoYXNJbnN0YW5j
ZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG8pOwogCkBAIC02
MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgSlNCb3VuZEZ1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIHRhcmdldEZ1
bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MpOwogICAgIAotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCwg
Y29uc3QgVVN0cmluZyYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgTmF0
aXZlRXhlY3V0YWJsZSosIGludCwgY29uc3QgU3RyaW5nJik7CiAKICAgICBXcml0ZUJhcnJpZXI8
SlNPYmplY3Q+IG1fdGFyZ2V0RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1f
Ym91bmRUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXgg
NjFlODU0OWVlOTMwODM3NWViNmI4MjhkMGQ0ZjM5Nzc1MmZjMmZiMS4uZmZiNzZmZjk1NzYzYjY2
YzAyODRhZmU2NzVkY2M3NGYxNjZiZTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgSlNDZWxsOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKICAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwoKTsKIH0KIAotYm9vbCBKU0NlbGw6
OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmc3RyaW5nVmFsdWUpIGNvbnN0Citi
b29sIEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nJiBzdHJpbmdWYWx1
ZSkgY29uc3QKIHsKICAgICBpZiAoIWlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQ2LDkgKzQ2LDkgQEAgYm9vbCBKU0NlbGw6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMs
IFVTdHJpbmcmc3RyaW5nVmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVVTdHJp
bmcgSlNDZWxsOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorU3RyaW5nIEpTQ2Vs
bDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4gaXNTdHJp
bmcoKSA/IHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnZhbHVlKGV4ZWMpIDog
VVN0cmluZygpOworICAgIHJldHVybiBpc1N0cmluZygpID8gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+dmFsdWUoZXhlYykgOiBTdHJpbmcoKTsKIH0KIAogSlNPYmplY3QqIEpT
Q2VsbDo6Z2V0T2JqZWN0KCkKQEAgLTE3OCwxMCArMTc4LDEwIEBAIHZvaWQgSlNDZWxsOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVVTdHJpbmcgSlNDZWxsOjpj
bGFzc05hbWUoY29uc3QgSlNPYmplY3QqKQorU3RyaW5nIEpTQ2VsbDo6Y2xhc3NOYW1lKGNvbnN0
IEpTT2JqZWN0KikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVVN0
cmluZygpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogY29uc3QgY2hhciogSlNDZWxsOjpj
bGFzc05hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCAxMzBm
OTcwNmQ1ZTZlZDliMmQwMTJlOWRmOGE5MTE4Y2U5NzU4MGQ4Li5lZjA2YjFlY2ZiZDcxMmE3MzQw
MjU1OTRiYzNlOGJhODRhZjBhNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaApAQCAtODksOCArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgY2hh
ciogY2xhc3NOYW1lKCk7CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCi0gICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgVVN0
cmluZyYpIGNvbnN0OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIGdldFN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiwgU3Ry
aW5nJikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBnZXRTdHJpbmco
RXhlY1N0YXRlKikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogZ2V0T2JqZWN0KCk7IC8vIE5VTEwgaWYgbm90
IGFuIG9iamVjdAogICAgICAgICBjb25zdCBKU09iamVjdCogZ2V0T2JqZWN0KCkgY29uc3Q7IC8v
IE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICAKQEAgLTEyNiw3ICsxMjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgLy8gY2FsbCB0aGlzIGZ1bmN0aW9uLCBub3QgaXRzIHNsb3dl
ciB2aXJ0dWFsIGNvdW50ZXJwYXJ0LiAoRm9yIGludGVnZXIKICAgICAgICAgLy8gcHJvcGVydHkg
bmFtZXMsIHdlIHdhbnQgYSBzaW1pbGFyIGludGVyZmFjZSB3aXRoIGFwcHJvcHJpYXRlIG9wdGlt
aXphdGlvbnMuKQogICAgICAgICBib29sIGZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgSlNWYWx1ZSBmYXN0R2V0
T3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgICAgICBKU1ZhbHVl
IGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgICAg
ICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCiAgICAgICAgIHsKQEAgLTE2MSw3
ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTVmFsdWUgZGVmYXVs
dFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSk7CiAgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVu
dW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyBVU3RyaW5nIGNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCopOworICAgICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25z
dCBKU09iamVjdCopOwogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbnN0YW5jZShKU09iamVjdCos
IEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOwogICAgICAg
ICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwpAQCAtMjIzLDE3ICsyMjMsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNPYmplY3QoKTsKICAgICB9CiAKLSAgICBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJiBz
KSBjb25zdAorICAgIGlubGluZSBib29sIEpTVmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIFN0cmluZyYgcykgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBh
c0NlbGwoKS0+Z2V0U3RyaW5nKGV4ZWMsIHMpOwogICAgIH0KIAotICAgIGlubGluZSBVU3RyaW5n
IEpTVmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CisgICAgaW5saW5lIFN0
cmluZyBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldFN0cmluZyhleGVjKSA6IFVTdHJp
bmcoKTsKKyAgICAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldFN0cmluZyhleGVj
KSA6IFN0cmluZygpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlPiBVU3Ry
aW5nIEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZT4gU3RyaW5nIEhhbmRsZUNv
bnZlcnRlcjxCYXNlLCBVbmtub3duPjo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBqc1ZhbHVlKCkuZ2V0U3RyaW5nKGV4ZWMpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5kZXggZmNm
MWM0MzQ1ZDFiODk2N2IyODVkODg1YjdhNmY2NWZkNTU5YjQ3Yy4uZjkzNDM5MTYwOGZkZTVlMWY4
MWU3ZGY0YmFiNDkwZDljNDQzZWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRlTWF0aC5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJv
bU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRh
dGVTdAogICAgIHJldHVybiBtcyAtIChvZmZzZXQgKiBXVEY6Om1zUGVyTWludXRlKTsKIH0KIAot
ZG91YmxlIHBhcnNlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGRhdGUpCitk
b3VibGUgcGFyc2VEYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBkYXRlKQogewog
ICAgIGlmIChkYXRlID09IGV4ZWMtPmdsb2JhbERhdGEoKS5jYWNoZWREYXRlU3RyaW5nKQogICAg
ICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZERhdGVTdHJpbmdWYWx1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaAppbmRleCBjN2ZiNWE5NzVk
MTcyYjAxNzI5MDQxMGY5ZmFjNGY3OTlhYmE1MTllLi5hNmRkOTZmOTllOWIwM2NhMzAzNTRjNTAw
MTVlMTgxN2UyYzZiN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGVNYXRoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRl
TWF0aC5oCkBAIC00OSwxMyArNDksMTIgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVj
U3RhdGU7Ci1jbGFzcyBVU3RyaW5nOwogCiB2b2lkIG1zVG9HcmVnb3JpYW5EYXRlVGltZShFeGVj
U3RhdGUqLCBkb3VibGUsIGJvb2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlhbkRhdGVUaW1lJik7CiBk
b3VibGUgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKEV4ZWNTdGF0ZSosIGNvbnN0IEdyZWdvcmlhbkRh
dGVUaW1lJiwgZG91YmxlLCBib29sIGlucHV0SXNVVEMpOwogZG91YmxlIGdldFVUQ09mZnNldChF
eGVjU3RhdGUqKTsKIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJz
KEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwotZG91YmxlIHBhcnNlRGF0ZShF
eGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Citkb3VibGUgcGFyc2VEYXRlKEV4ZWNTdGF0ZSos
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDY5NGQ4MzhlZWRiODgw
OGI4M2MxYTAzMjVhNmFjMDUzMDMzNzRlZjUuLjgwODJmNGQ0ZjcyMDQwNTgyYWZjM2I5YzdmNDk3
YzAxNmQ4ZWRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb25O
b25JbmxpbmUoKSBjb25zdAogICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpOwogfQogCi1KU0Z1
bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBOYXRpdmVG
dW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rp
b24gbmF0aXZlQ29uc3RydWN0b3IpCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBj
b25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5z
aWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKIHsKICAgICBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwogI2lmICFFTkFCTEUoSklUKQpAQCAtOTIsNyAr
OTIsNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYQogewogfQogCi12b2lkIEpTRnVuY3Rpb246
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKK3ZvaWQgSlNGdW5jdGlvbjo6
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwpAQCAtMTI1LDI5ICsxMjUsMjkgQEAgU3RydWN0dXJlKiBKU0Z1bmN0aW9uOjpjYWNoZUlu
aGVyaXRvcklEKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gbV9jYWNoZWRJbmhlcml0b3JJ
RC5nZXQoKTsKIH0KIAotY29uc3QgVVN0cmluZyYgSlNGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUq
IGV4ZWMpCitjb25zdCBTdHJpbmcmIEpTRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIHJldHVybiBhc1N0cmluZyhnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSkpLT50cnlHZXRWYWx1ZSgpOwogfQog
Ci1jb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykK
K2NvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgSlNWYWx1ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7CiAgICAgCiAg
ICAgaWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmcoZGlzcGxheU5hbWUpKQogICAgICAgICBy
ZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlHZXRWYWx1ZSgpOwogICAgIAotICAgIHJl
dHVybiBVU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1jb25zdCBVU3RyaW5n
IEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCitjb25z
dCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICBjb25zdCBVU3RyaW5nIGV4cGxpY2l0TmFtZSA9IGRpc3BsYXlOYW1lKGV4ZWMp
OworICAgIGNvbnN0IFN0cmluZyBleHBsaWNpdE5hbWUgPSBkaXNwbGF5TmFtZShleGVjKTsKICAg
ICAKICAgICBpZiAoIWV4cGxpY2l0TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBleHBs
aWNpdE5hbWU7CiAgICAgCi0gICAgY29uc3QgVVN0cmluZyBhY3R1YWxOYW1lID0gbmFtZShleGVj
KTsKKyAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7CiAgICAgaWYgKCFh
Y3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4g
YWN0dWFsTmFtZTsKICAgICAKQEAgLTQ1NSw3ICs0NTUsNyBAQCBDb25zdHJ1Y3RUeXBlIEpTRnVu
Y3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsLCBDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1YwogfQogICAgIAogCi1VU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIG9iamVjdCkKK1N0cmluZyBnZXRDYWxjdWxhdGVkRGlz
cGxheU5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
aWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4ob2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5jYWxjdWxhdGVkRGlzcGxheU5hbWUoY2Fs
bEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRl
eCA1NmZhZjAwZGU1ZWI4YjA0Y2QxMTg1MzE0MWE1MmYxMjlkNWE5YjdhLi5jZGUwYzBiNGQ1MTE1
MTJkNmRiNmFjZmE3MmIyYzRlOTg4NWY2ODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9z
dEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFVTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKENhbGxGcmFtZSosIEpTT2JqZWN0
Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFt
ZShDYWxsRnJhbWUqLCBKU09iamVjdCopOwogICAgIAogICAgIGNsYXNzIEpTRnVuY3Rpb24gOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC01
NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGludCBs
ZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBO
b0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1
bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBK
U0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJp
bnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW4pCiAgICAgICAgIHsKQEAgLTY1LDkgKzY1LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhl
Y1N0YXRlKik7Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBTdHJpbmcmIG5hbWUo
RXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFN0cmluZyBkaXNw
bGF5TmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGNhbGN1bGF0ZWREaXNw
bGF5TmFtZShFeGVjU3RhdGUqKTsKIAogICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGUoKQog
ICAgICAgICB7CkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICAKLSAgICAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3Qg
VVN0cmluZyYgbmFtZSk7CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwg
TmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
U2NvcGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlSW5oZXJpdG9ySUQo
RXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAppbmRleCA2NGQ0NzQ5MjhkNjVmMzYyMzNkNmFiZjhlMTI5MDJlOThhMGYyZTllLi40
ODZhM2I4YTgxNGVjNjJlMTE0M2E0NmM4NTIxZWIxNTdiNGFjMDk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTM4Nyw3ICszODcsNyBA
QCB2b2lkIEpTR2xvYmFsRGF0YTo6cmVzZXREYXRlQ2FjaGUoKQogewogICAgIGNhY2hlZFVUQ09m
ZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAgZHN0
T2Zmc2V0Q2FjaGUucmVzZXQoKTsKLSAgICBjYWNoZWREYXRlU3RyaW5nID0gVVN0cmluZygpOwor
ICAgIGNhY2hlZERhdGVTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBjYWNoZWREYXRlU3RyaW5nVmFs
dWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgIGRhdGVJ
bnN0YW5jZUNhY2hlLnJlc2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCmluZGV4IGVkNzY0YTNmODNiN2E5YzBjYzkwYzYyMDYxNzZkMTJlODA3
YTkzYTIuLjYwYmM5NGM4ZTdjMzEzODlkMTI4MzZiYjQ2NmRiMjFiNTM0ODI5MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC03Niw3ICs3Niw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwogICAgIGNsYXNzIFN0
cmluZ2lmaWVyOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKLSAgICBjbGFzcyBVU3RyaW5nOwogI2lm
IEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBjbGFzcyBSZWdFeHA7CiAjZW5kaWYKQEAgLTM2
Myw3ICszNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZG91YmxlIGNhY2hlZFVUQ09m
ZnNldDsKICAgICAgICAgRFNUT2Zmc2V0Q2FjaGUgZHN0T2Zmc2V0Q2FjaGU7CiAgICAgICAgIAot
ICAgICAgICBVU3RyaW5nIGNhY2hlZERhdGVTdHJpbmc7CisgICAgICAgIFN0cmluZyBjYWNoZWRE
YXRlU3RyaW5nOwogICAgICAgICBkb3VibGUgY2FjaGVkRGF0ZVN0cmluZ1ZhbHVlOwogCiAgICAg
ICAgIGludCBtYXhSZWVudHJ5RGVwdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggZTgwMTdiOTA0
M2JlZmM3MzMxNjI0MzdjNjM2YWRiYWUzYzFkMTQ2Ny4uNzQxZjBhYmY0NDFjNmFmMjI3YTZlYThk
ZDY5MDczZTM2ZTE4MDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtMzQsNyArMzQsNiBAQAog
I2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgotI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL2R0
b2EuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtNDIsNiAr
NDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdURjsKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBkZWNv
ZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgaW50IGxlbmd0
aCwgYwogc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciog
ZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJpY3QpCiB7CiAgICAgSlNTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAKICAgICBpZiAoc3RyLmlzOEJpdCgpKQogICAgICAg
ICByZXR1cm4gZGVjb2RlKGV4ZWMsIHN0ci5jaGFyYWN0ZXJzOCgpLCBzdHIubGVuZ3RoKCksIGRv
Tm90VW5lc2NhcGUsIHN0cmljdCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgZG91YmxlIHBhcnNlSW50
T3ZlcmZsb3coY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgsIGludCByYWRpeCkKIC8vIEVTNS4x
IDE1LjEuMi4yCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBBTFdBWVNfSU5MSU5FCi1z
dGF0aWMgZG91YmxlIHBhcnNlSW50KGNvbnN0IFVTdHJpbmcmIHMsIGNvbnN0IENoYXJUeXBlKiBk
YXRhLCBpbnQgcmFkaXgpCitzdGF0aWMgZG91YmxlIHBhcnNlSW50KGNvbnN0IFN0cmluZyYgcywg
Y29uc3QgQ2hhclR5cGUqIGRhdGEsIGludCByYWRpeCkKIHsKICAgICAvLyAxLiBMZXQgaW5wdXRT
dHJpbmcgYmUgVG9TdHJpbmcoc3RyaW5nKS4KICAgICAvLyAyLiBMZXQgUyBiZSBhIG5ld2x5IGNy
ZWF0ZWQgc3Vic3RyaW5nIG9mIGlucHV0U3RyaW5nIGNvbnNpc3Rpbmcgb2YgdGhlIGZpcnN0IGNo
YXJhY3RlciB0aGF0IGlzIG5vdCBhCkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIGRvdWJsZSBw
YXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBjb25zdCBDaGFyVHlwZSogZGF0YSwgaW50IHJhZGl4
KQogICAgIHJldHVybiBzaWduICogbnVtYmVyOwogfQogCi1zdGF0aWMgZG91YmxlIHBhcnNlSW50
KGNvbnN0IFVTdHJpbmcmIHMsIGludCByYWRpeCkKK3N0YXRpYyBkb3VibGUgcGFyc2VJbnQoY29u
c3QgU3RyaW5nJiBzLCBpbnQgcmFkaXgpCiB7CiAgICAgaWYgKHMuaXM4Qml0KCkpCiAgICAgICAg
IHJldHVybiBwYXJzZUludChzLCBzLmNoYXJhY3RlcnM4KCksIHJhZGl4KTsKQEAgLTQzMiw3ICs0
MzIsNyBAQCBzdGF0aWMgZG91YmxlIHRvRG91YmxlKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBzaXplKQogfQogCiAvLyBTZWUgZWNtYS0yNjIgOS4zLjEKLWRvdWJsZSBqc1Rv
TnVtYmVyKGNvbnN0IFVTdHJpbmcmIHMpCitkb3VibGUganNUb051bWJlcihjb25zdCBTdHJpbmcm
IHMpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHMubGVuZ3RoKCk7CiAKQEAgLTQ1MCw3ICs0NTAs
NyBAQCBkb3VibGUganNUb051bWJlcihjb25zdCBVU3RyaW5nJiBzKQogICAgIHJldHVybiB0b0Rv
dWJsZShzLmNoYXJhY3RlcnMxNigpLCBzaXplKTsKIH0KIAotc3RhdGljIGRvdWJsZSBwYXJzZUZs
b2F0KGNvbnN0IFVTdHJpbmcmIHMpCitzdGF0aWMgZG91YmxlIHBhcnNlRmxvYXQoY29uc3QgU3Ry
aW5nJiBzKQogewogICAgIHVuc2lnbmVkIHNpemUgPSBzLmxlbmd0aCgpOwogCkBAIC01MDUsNyAr
NTA1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKCF4LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoeCk7CiAKLSAgICBVU3RyaW5nIHMgPSB4LnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHgudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
CiAgICAgaWYgKHMuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcHJl
cGFyc2VyKGV4ZWMsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTik7
CkBAIC01NDgsNyArNTQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxG
dW5jUGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAgIC8vIElmIFRvU3RyaW5n
IHRocm93cywgd2Ugc2hvdWxkbid0IGNhbGwgVG9JbnQzMi4KLSAgICBVU3RyaW5nIHMgPSB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC02MTUs
NyArNjE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgIiorLS4vQF8iOwogCiAgICAgSlNTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoc3RyLmlzOEJpdCgpKSB7CiAg
ICAgICAgIGNvbnN0IExDaGFyKiBjID0gc3RyLmNoYXJhY3RlcnM4KCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgayA9IDA7IGsgPCBzdHIubGVuZ3RoKCk7IGsrKywgYysrKSB7CkBAIC02NTMsOCAr
NjUzLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBlKEV4
ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
VW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIFN0cmluZyBzdHIgPSBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaW50IGsg
PSAwOwogICAgIGludCBsZW4gPSBzdHIubGVuZ3RoKCk7CiAgICAgCkBAIC02OTksNyArNjk5LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N0cmluZyhleGVjLCBidWlsZGVyLnRvVVN0cmluZygpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBidWlsZGVyLnRvU3RyaW5nKCkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoRXhlY1N0
YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggODgzM2JmNmQwY2YwMzM2YzQxZWU0MmI2NWI0
YmVlZjc2ZjdkNmNkYS4uNzU3YzlkY2FjNjZkNDEwYTc2NGI2ODUwMWIzYTBjYzAwZTdhMTFjZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oCkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIEFM
V0FZU19JTkxJTkUgZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgY2hhciogcywgaW50IGxl
bmd0aCwgaW50IHJhZGl4KSB7IHJldHVybiBwYXJzZUludE92ZXJmbG93KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoLCByYWRpeCk7IH0KICAgICBkb3VibGUgcGFyc2VJ
bnRPdmVyZmxvdyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCByYWRpeCk7CiAgICAgYm9v
bCBpc1N0cldoaXRlU3BhY2UoVUNoYXIpOwotICAgIGRvdWJsZSBqc1RvTnVtYmVyKGNvbnN0IFVT
dHJpbmcmIHMpOworICAgIGRvdWJsZSBqc1RvTnVtYmVyKGNvbnN0IFdURjo6U3RyaW5nJik7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T05PYmplY3QuY3BwCmluZGV4IGJhODg3ZjNiNGJhNmZhZTA2MGRiYWM4NzRlYmY1MjVjZjNjZDQx
NzQuLjljMDE4OTU3NWUwMzlmYjYwNjFjMzk1NmI5ZDE1MGQ5NWMwMGQ2OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zNiw5ICszNiw4IEBA
CiAjaW5jbHVkZSAiTG9jYWxTY29wZS5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCi0jaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKLSNpbmNs
dWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTk0LDcgKzkzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBKU09iamVjdCogb2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3QuZ2V0KCk7IH0KIAotICAgICAgICBib29sIGFwcGVuZE5l
eHRQcm9wZXJ0eShTdHJpbmdpZmllciYsIFVTdHJpbmdCdWlsZGVyJik7CisgICAgICAgIGJvb2wg
YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiwgU3RyaW5nQnVpbGRlciYpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgTG9jYWw8SlNPYmplY3Q+IG1fb2JqZWN0OwpAQCAtMTA3LDE3ICsx
MDYsMTcgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBIb2xkZXI7CiAKLSAgICBzdGF0
aWMgdm9pZCBhcHBlbmRRdW90ZWRTdHJpbmcoVVN0cmluZ0J1aWxkZXImLCBjb25zdCBVU3RyaW5n
Jik7CisgICAgc3RhdGljIHZvaWQgYXBwZW5kUXVvdGVkU3RyaW5nKFN0cmluZ0J1aWxkZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogICAgIEpTVmFsdWUgdG9KU09OKEpTVmFsdWUsIGNvbnN0IFByb3Bl
cnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOwogCiAgICAgZW51bSBTdHJpbmdpZnlSZXN1bHQgeyBT
dHJpbmdpZnlGYWlsZWQsIFN0cmluZ2lmeVN1Y2NlZWRlZCwgU3RyaW5naWZ5RmFpbGVkRHVlVG9V
bmRlZmluZWRWYWx1ZSB9OwotICAgIFN0cmluZ2lmeVJlc3VsdCBhcHBlbmRTdHJpbmdpZmllZFZh
bHVlKFVTdHJpbmdCdWlsZGVyJiwgSlNWYWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29uc3QgUHJv
cGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJik7CisgICAgU3RyaW5naWZ5UmVzdWx0IGFwcGVuZFN0
cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYsIEpTVmFsdWUsIEpTT2JqZWN0KiBob2xkZXIs
IGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOwogCiAgICAgYm9vbCB3aWxsSW5k
ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBpbmRlbnQoKTsKICAgICB2b2lkIHVuaW5kZW50KCk7Ci0g
ICAgdm9pZCBzdGFydE5ld0xpbmUoVVN0cmluZ0J1aWxkZXImKSBjb25zdDsKKyAgICB2b2lkIHN0
YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJikgY29uc3Q7CiAKICAgICBFeGVjU3RhdGUqIGNvbnN0
IG1fZXhlYzsKICAgICBjb25zdCBMb2NhbDxVbmtub3duPiBtX3JlcGxhY2VyOwpAQCAtMTI1LDEx
ICsxMjQsMTEgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBtX2FycmF5UmVwbGFj
ZXJQcm9wZXJ0eU5hbWVzOwogICAgIENhbGxUeXBlIG1fcmVwbGFjZXJDYWxsVHlwZTsKICAgICBD
YWxsRGF0YSBtX3JlcGxhY2VyQ2FsbERhdGE7Ci0gICAgY29uc3QgVVN0cmluZyBtX2dhcDsKKyAg
ICBjb25zdCBTdHJpbmcgbV9nYXA7CiAKICAgICBWZWN0b3I8SG9sZGVyLCAxNj4gbV9ob2xkZXJT
dGFjazsKLSAgICBVU3RyaW5nIG1fcmVwZWF0ZWRHYXA7Ci0gICAgVVN0cmluZyBtX2luZGVudDsK
KyAgICBTdHJpbmcgbV9yZXBlYXRlZEdhcDsKKyAgICBTdHJpbmcgbV9pbmRlbnQ7CiB9OwogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaGVscGVyIGZ1bmN0aW9ucyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ4LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSB1bndyYXBCb3hlZFByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgaW5saW5lIFVTdHJpbmcgZ2Fw
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzcGFjZSkKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIGdh
cChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc3BhY2UpCiB7CiAgICAgY29uc3QgdW5zaWduZWQg
bWF4R2FwTGVuZ3RoID0gMTA7CiAgICAgc3BhY2UgPSB1bndyYXBCb3hlZFByaW1pdGl2ZShleGVj
LCBzcGFjZSk7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBzdGF0aWMgaW5saW5lIFVTdHJpbmcgZ2Fw
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzcGFjZSkKICAgICAgICAgVUNoYXIgc3BhY2VzW21h
eEdhcExlbmd0aF07CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKICAg
ICAgICAgICAgIHNwYWNlc1tpXSA9ICcgJzsKLSAgICAgICAgcmV0dXJuIFVTdHJpbmcoc3BhY2Vz
LCBjb3VudCk7CisgICAgICAgIHJldHVybiBTdHJpbmcoc3BhY2VzLCBjb3VudCk7CiAgICAgfQog
CiAgICAgLy8gSWYgdGhlIHNwYWNlIHZhbHVlIGlzIGEgc3RyaW5nLCB1c2UgaXQgYXMgdGhlIGdh
cCBzdHJpbmcsIG90aGVyd2lzZSB1c2Ugbm8gZ2FwIHN0cmluZy4KLSAgICBVU3RyaW5nIHNwYWNl
cyA9IHNwYWNlLmdldFN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3BhY2VzID0gc3BhY2UuZ2V0
U3RyaW5nKGV4ZWMpOwogICAgIGlmIChzcGFjZXMubGVuZ3RoKCkgPiBtYXhHYXBMZW5ndGgpIHsK
ICAgICAgICAgc3BhY2VzID0gc3BhY2VzLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG1heEdhcExl
bmd0aCk7CiAgICAgfQpAQCAtMjQ1LDE3ICsyNDQsMTcgQEAgTG9jYWw8VW5rbm93bj4gU3RyaW5n
aWZpZXI6OnN0cmluZ2lmeShIYW5kbGU8VW5rbm93bj4gdmFsdWUpCiAgICAgUHJvcGVydHlOYW1l
Rm9yRnVuY3Rpb25DYWxsIGVtcHR5UHJvcGVydHlOYW1lKG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnBy
b3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcik7CiAgICAgb2JqZWN0LT5wdXREaXJlY3QobV9l
eGVjLT5nbG9iYWxEYXRhKCksIG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVt
cHR5SWRlbnRpZmllciwgdmFsdWUuZ2V0KCkpOwogCi0gICAgVVN0cmluZ0J1aWxkZXIgcmVzdWx0
OworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGlmIChhcHBlbmRTdHJpbmdpZmllZFZh
bHVlKHJlc3VsdCwgdmFsdWUuZ2V0KCksIG9iamVjdCwgZW1wdHlQcm9wZXJ0eU5hbWUpICE9IFN0
cmluZ2lmeVN1Y2NlZWRlZCkKICAgICAgICAgcmV0dXJuIExvY2FsPFVua25vd24+KG1fZXhlYy0+
Z2xvYmFsRGF0YSgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIExvY2FsPFVua25vd24+KG1fZXhlYy0+Z2xvYmFsRGF0YSgp
LCBqc051bGwoKSk7CiAKLSAgICByZXR1cm4gTG9jYWw8VW5rbm93bj4obV9leGVjLT5nbG9iYWxE
YXRhKCksIGpzU3RyaW5nKG1fZXhlYywgcmVzdWx0LnRvVVN0cmluZygpKSk7CisgICAgcmV0dXJu
IExvY2FsPFVua25vd24+KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1N0cmluZyhtX2V4ZWMsIHJl
c3VsdC50b1N0cmluZygpKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLXN0
YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvVVN0cmluZ0J1aWxkZXIoVVN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGNvbnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RhdGljIHZvaWQgYXBw
ZW5kU3RyaW5nVG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENo
YXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gaTsKQEAgLTMwMywxNiArMzAyLDE2IEBA
IHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvVVN0cmluZ0J1aWxkZXIoVVN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIGNvbnN0IENoYXJUeXBlCiAgICAgfQogfQogICAgIAotdm9pZCBTdHJpbmdpZmll
cjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBVU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgU3RyaW5naWZpZXI6OmFwcGVuZFF1b3RlZFN0cmluZyhTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGludCBsZW5ndGgg
PSB2YWx1ZS5sZW5ndGgoKTsKIAogICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiAKICAgICBpZiAo
dmFsdWUuaXM4Qml0KCkpCi0gICAgICAgIGFwcGVuZFN0cmluZ1RvVVN0cmluZ0J1aWxkZXI8TENo
YXI+KGJ1aWxkZXIsIHZhbHVlLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgICAgIGFwcGVu
ZFN0cmluZ1RvU3RyaW5nQnVpbGRlcjxMQ2hhcj4oYnVpbGRlciwgdmFsdWUuY2hhcmFjdGVyczgo
KSwgbGVuZ3RoKTsKICAgICBlbHNlCi0gICAgICAgIGFwcGVuZFN0cmluZ1RvVVN0cmluZ0J1aWxk
ZXI8VUNoYXI+KGJ1aWxkZXIsIHZhbHVlLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOworICAgICAg
ICBhcHBlbmRTdHJpbmdUb1N0cmluZ0J1aWxkZXI8VUNoYXI+KGJ1aWxkZXIsIHZhbHVlLmNoYXJh
Y3RlcnMxNigpLCBsZW5ndGgpOwogCiAgICAgYnVpbGRlci5hcHBlbmQoJyInKTsKIH0KQEAgLTM0
MSw3ICszNDAsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9KU09OKEpTVmFsdWUg
dmFsdWUsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQwogICAgIHJldHVybiBjYWxsKG1f
ZXhlYywgb2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHZhbHVlLCBhcmdzKTsKIH0KIAotU3Ry
aW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRW
YWx1ZShVU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSlNWYWx1ZSB2YWx1ZSwgSlNPYmplY3QqIGhv
bGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJiBwcm9wZXJ0eU5hbWUpCitT
dHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmll
ZFZhbHVlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBo
b2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQog
ewogICAgIC8vIENhbGwgdGhlIHRvSlNPTiBmdW5jdGlvbi4KICAgICB2YWx1ZSA9IHRvSlNPTih2
YWx1ZSwgcHJvcGVydHlOYW1lKTsKQEAgLTM3Niw3ICszNzUsNyBAQCBTdHJpbmdpZmllcjo6U3Ry
aW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdC
dWlsZGVyJgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogICAgIH0KIAotICAg
IFVTdHJpbmcgc3RyaW5nVmFsdWU7CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlOwogICAgIGlmICh2
YWx1ZS5nZXRTdHJpbmcobV9leGVjLCBzdHJpbmdWYWx1ZSkpIHsKICAgICAgICAgYXBwZW5kUXVv
dGVkU3RyaW5nKGJ1aWxkZXIsIHN0cmluZ1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIFN0cmluZ2lm
eVN1Y2NlZWRlZDsKQEAgLTM4Nyw3ICszODYsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVz
dWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJgog
ICAgICAgICBpZiAoIWlzZmluaXRlKG51bWJlcikpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChVU3Ry
aW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSk7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChudW1iZXIpKTsKICAg
ICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKICAgICB9CiAKQEAgLTQ0OCw3ICs0NDcs
NyBAQCBpbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6aW5kZW50KCkKICAgICAvLyBVc2UgYSBzaW5n
bGUgc2hhcmVkIHN0cmluZywgbV9yZXBlYXRlZEdhcCwgc28gd2UgZG9uJ3Qga2VlcCBhbGxvY2F0
aW5nIG5ldyBvbmVzIGFzIHdlIGluZGVudCBhbmQgdW5pbmRlbnQuCiAgICAgdW5zaWduZWQgbmV3
U2l6ZSA9IG1faW5kZW50Lmxlbmd0aCgpICsgbV9nYXAubGVuZ3RoKCk7CiAgICAgaWYgKG5ld1Np
emUgPiBtX3JlcGVhdGVkR2FwLmxlbmd0aCgpKQotICAgICAgICBtX3JlcGVhdGVkR2FwID0gbWFr
ZVVTdHJpbmcobV9yZXBlYXRlZEdhcCwgbV9nYXApOworICAgICAgICBtX3JlcGVhdGVkR2FwID0g
bWFrZVN0cmluZyhtX3JlcGVhdGVkR2FwLCBtX2dhcCk7CiAgICAgQVNTRVJUKG5ld1NpemUgPD0g
bV9yZXBlYXRlZEdhcC5sZW5ndGgoKSk7CiAgICAgbV9pbmRlbnQgPSBtX3JlcGVhdGVkR2FwLnN1
YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG5ld1NpemUpOwogfQpAQCAtNDU5LDcgKzQ1OCw3IEBAIGlu
bGluZSB2b2lkIFN0cmluZ2lmaWVyOjp1bmluZGVudCgpCiAgICAgbV9pbmRlbnQgPSBtX3JlcGVh
dGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG1faW5kZW50Lmxlbmd0aCgpIC0gbV9nYXAu
bGVuZ3RoKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6c3RhcnROZXdMaW5lKFVT
dHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAoraW5saW5lIHZvaWQgU3RyaW5naWZpZXI6OnN0
YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogewogICAgIGlmIChtX2dh
cC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3Nyw3ICs0NzYsNyBAQCBpbmxpbmUg
U3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNP
YmplY3QqIG9iamVjdCkKIHsKIH0KIAotYm9vbCBTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmRO
ZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBVU3RyaW5nQnVpbGRlciYgYnVp
bGRlcikKK2Jvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmlu
Z2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKIHsKICAgICBBU1NF
UlQobV9pbmRleCA8PSBtX3NpemUpOwogCkBAIC03MDQsNyArNzAzLDcgQEAgTkVWRVJfSU5MSU5F
IEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhc2UgQXJyYXlFbmRWaXNpdE1lbWJlcjogewogICAgICAgICAgICAgICAg
IEpTQXJyYXkqIGFycmF5ID0gYXJyYXlTdGFjay5wZWVrKCk7Ci0gICAgICAgICAgICAgICAgSlNW
YWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIoYXJyYXksIGpzU3RyaW5nKG1fZXhlYywg
VVN0cmluZzo6bnVtYmVyKGluZGV4U3RhY2subGFzdCgpKSksIG91dFZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZlcihhcnJheSwganNTdHJp
bmcobV9leGVjLCBTdHJpbmc6Om51bWJlcihpbmRleFN0YWNrLmxhc3QoKSkpLCBvdXRWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChhcnJheSwgbV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQpAQCAtODExLDcgKzgxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlBy
b3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCAiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIikpOwotICAg
IFVTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIApAQCAtODUyLDEyICs4NTEsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN0cmluZ2lmaWVyKGV4
ZWMsIHJlcGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQoKSk7CiB9CiAKLVVTdHJp
bmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGluZGVudCkKK1N0cmluZyBKU09OU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSwgdW5zaWduZWQgaW5kZW50KQogewogICAgIExvY2FsU2NvcGUgc2NvcGUoZXhlYy0+Z2xv
YmFsRGF0YSgpKTsKICAgICBMb2NhbDxVbmtub3duPiByZXN1bHQgPSBTdHJpbmdpZmllcihleGVj
LCBMb2NhbDxVbmtub3duPihleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKSwgTG9jYWw8VW5r
bm93bj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcihpbmRlbnQpKSkuc3RyaW5naWZ5KExv
Y2FsPFVua25vd24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUpKTsKICAgICBpZiAocmVzdWx0
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBVU3RyaW5nKCk7CisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gcmVzdWx0LmdldFN0cmluZyhleGVjKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCmluZGV4IDNiODY0
NzcxNGU5YmY0MzFmYjdiOGQxYjdlMDUwYzQwNmI0NmZkNjUuLmI1MzdiOTE0NDAyMGE5NDBjOGU5
N2Y1OTE3Njg5ZTIzYjBhNDdmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmgKQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICB9Owog
Ci0gICAgVVN0cmluZyBKU09OU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgaW5kZW50KTsKKyAgICBTdHJpbmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUq
LCBKU1ZhbHVlLCB1bnNpZ25lZCBpbmRlbnQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGM0MGM2MjVlMTY5
M2FiNzZkNmEzY2FhY2JjMDliMGRkMGVhOGQ1ZDkuLjMyNzViMjIyYjVjZWZmYjgwMDNhMDhjMjdl
Nzk5MmQwYWYyNTMwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICNlbmRpZgogfQogCi1VU3Ry
aW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCkKK1N0cmluZyBK
U09iamVjdDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3Qg
Q2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8oKTsKICAgICBBU1NFUlQoaW5mbyk7
CkBAIC04MTgsNyArODE4LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggOWUxNDQ1ZTY5Y2Q0ZTFhZjVlNzU0ODRkM2M0
NjUwZDFlMDIyYzIwYi4uZmYzZmIyYTYyYThmNjk1ZTE0OWIyMTcyNzNmNzU0MDczMTE2NmYwOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC02NSw3ICs2NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0cnVjdHVyZTsKICAgICBzdHJ1Y3QgSGFz
aFRhYmxlOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiAgICAgZXh0
ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yOwogCiAgICAgLy8gRUNNQSAyNjItMyA4LjYuMQpAQCAtOTksNyArOTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2Jq
ZWN0Kik7CiAKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUpOwpAQCAtNjIw
LDcgKzYyMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIC8vIGlkZW50aWZpZXIuIFRoZSBm
aXJzdCB0aW1lIHdlIHBlcmZvcm0gYSBwcm9wZXJ0eSBhY2Nlc3Mgd2l0aCBhIGdpdmVuIHN0cmlu
ZywgdHJ5CiAvLyBwZXJmb3JtaW5nIHRoZSBwcm9wZXJ0eSBtYXAgbG9va3VwIHdpdGhvdXQgZm9y
bWluZyBhbiBpZGVudGlmaWVyLiBXZSBkZXRlY3QgdGhpcwogLy8gY2FzZSBieSBjaGVja2luZyB3
aGV0aGVyIHRoZSBoYXNoIGhhcyB5ZXQgYmVlbiBzZXQgZm9yIHRoaXMgc3RyaW5nLgotQUxXQVlT
X0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgVVN0cmluZyYgbmFtZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZh
c3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7CiAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCA0ZWIyYTUyOTc2
MmMwZWU2NDZjY2E4YmQyY2Q0YWUxYjgxOTEzODI2Li45NzdmMGQxMDAzYzg1YTk4NjEzYzJiODhm
NGQzZTUwY2Q4ZWJmYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3Bl
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIH0KIAogLy8gT3ZlcnZpZXc6IFRoZXNlIGZ1bmN0aW9u
cyBjb252ZXJ0IGEgSlNTdHJpbmcgZnJvbSBob2xkaW5nIGEgc3RyaW5nIGluIHJvcGUgZm9ybQot
Ly8gZG93biB0byBhIHNpbXBsZSBVU3RyaW5nIHJlcHJlc2VudGF0aW9uLiAgSXQgZG9lcyBzbyBi
eSBidWlsZGluZyB1cCB0aGUgc3RyaW5nCisvLyBkb3duIHRvIGEgc2ltcGxlIFN0cmluZyByZXBy
ZXNlbnRhdGlvbi4gSXQgZG9lcyBzbyBieSBidWlsZGluZyB1cCB0aGUgc3RyaW5nCiAvLyBiYWNr
d2FyZHMsIHNpbmNlIHdlIHdhbnQgdG8gYXZvaWQgcmVjdXJzaW9uLCB3ZSBleHBlY3QgdGhhdCB0
aGUgdHJlZSBzdHJ1Y3R1cmUKIC8vIHJlcHJlc2VudGluZyB0aGUgcm9wZSBpcyBsaWtlbHkgaW1i
YWxhbmNlZCB3aXRoIG1vcmUgbm9kZXMgZG93biB0aGUgbGVmdCBzaWRlCiAvLyAoc2luY2UgYXBw
ZW5kaW5nIHRvIHRoZSBzdHJpbmcgaXMgbGlrZWx5IG1vcmUgY29tbW9uKSAtIGFuZCBhcyBzdWNo
IHJlc29sdmluZwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpvdXRPZk1l
bW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
X21heEludGVybmFsUm9wZUxlbmd0aCAmJiBtX2ZpYmVyc1tpXTsgKytpKQogICAgICAgICBtX2Zp
YmVyc1tpXS5jbGVhcigpOwogICAgIEFTU0VSVChpc1JvcGUoKSk7Ci0gICAgQVNTRVJUKG1fdmFs
dWUgPT0gVVN0cmluZygpKTsKKyAgICBBU1NFUlQobV92YWx1ZS5pc051bGwoKSk7CiAgICAgaWYg
KGV4ZWMpCiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGU5MTU1M2FlYjI0OTYwZjhlNzY1
OGU2ODA2YTFlOTQ2NTNkZDc1NDIuLmUwMDllY2I4YjFjNWYyNTdjNmMxZGIzZDUxZTE2MDI0MmJj
NDQzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMzcs
MjcgKzM3LDI3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJp
bmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRl
Kik7Ci0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcm
KTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCi0gICAgSlNT
dHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBl
bXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCisgICAgSlNTdHJpbmcqIGpzU3RyaW5n
KEpTR2xvYmFsRGF0YSosIGNvbnN0IFN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBp
ZiBwYXNzZWQgbnVsbCBzdHJpbmcKKyAgICBKU1N0cmluZyoganNTdHJpbmcoRXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlmIHBhc3NlZCBudWxsIHN0
cmluZwogCiAgICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0
YSosIFVDaGFyKTsKICAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhlY1N0
YXRlKiwgVUNoYXIpOwotICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhF
eGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKLSAgICBKU1N0cmlu
ZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsK
KyAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBKU1N0cmluZyoganNTdWJzdHJpbmco
SlNHbG9iYWxEYXRhKiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBOb24tdHJp
dmlhbCBzdHJpbmdzIGFyZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgLy8gVGhl
c2UgZnVuY3Rpb25zIGFyZSBmYXN0ZXIgdGhhbiBqdXN0IGNhbGxpbmcganNTdHJpbmcuCi0gICAg
SlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5n
Jik7Ci0gICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBV
U3RyaW5nJik7CisgICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEq
LCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYpOwogICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmco
SlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOwogICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxT
dHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOwogCiAgICAgLy8gU2hvdWxkIGJlIHVzZWQg
Zm9yIHN0cmluZ3MgdGhhdCBhcmUgb3duZWQgYnkgYW4gb2JqZWN0IHRoYXQgd2lsbAogICAgIC8v
IGxpa2VseSBvdXRsaXZlIHRoZSBKU1ZhbHVlIHRoaXMgbWFrZXMsIHN1Y2ggYXMgdGhlIHBhcnNl
IHRyZWUgb3IgYQotICAgIC8vIERPTSBvYmplY3QgdGhhdCBjb250YWlucyBhIFVTdHJpbmcKLSAg
ICBKU1N0cmluZyoganNPd25lZFN0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7
IAotICAgIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsgCisgICAgLy8gRE9NIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgU3RyaW5nCisgICAgSlNTdHJp
bmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNT
dHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBK
U1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihKU0dsb2JhbERhdGEqKTsKIApAQCAtMTM2LDgg
KzEzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsK
ICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSopIGNv
bnN0OwotICAgICAgICBjb25zdCBVU3RyaW5nJiB0cnlHZXRWYWx1ZSgpIGNvbnN0OworICAgICAg
ICBjb25zdCBTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBjb25zdCBT
dHJpbmcmIHRyeUdldFZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsg
cmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3Rh
dGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKQEAgLTE5MCw5ICsxOTAsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIElzOEJpdCA9IDF1CiAgICAgICAgIH07CiAKLSAg
ICAgICAgLy8gQSBzdHJpbmcgaXMgcmVwcmVzZW50ZWQgZWl0aGVyIGJ5IGEgVVN0cmluZyBvciBh
IHJvcGUgb2YgZmliZXJzLgorICAgICAgICAvLyBBIHN0cmluZyBpcyByZXByZXNlbnRlZCBlaXRo
ZXIgYnkgYSBTdHJpbmcgb3IgYSByb3BlIG9mIGZpYmVycy4KICAgICAgICAgdW5zaWduZWQgbV9s
ZW5ndGg7Ci0gICAgICAgIG11dGFibGUgVVN0cmluZyBtX3ZhbHVlOworICAgICAgICBtdXRhYmxl
IFN0cmluZyBtX3ZhbHVlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTIwMyw3ICsyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBVU3RyaW5nJiBzdHJpbmcoKSB7
IEFTU0VSVCghaXNSb3BlKCkpOyByZXR1cm4gbV92YWx1ZTsgfQorICAgICAgICBTdHJpbmcmIHN0
cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICAgICAg
ZnJpZW5kIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBKU1N0cmluZyop
OwogICAgICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIEpTU3Ry
aW5nKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtMzQwLDEwICszNDAs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVD
aGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJp
bmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCBjKTsKLSAgICAgICAgcmV0dXJu
IEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFVTdHJpbmcoJmMsIDEpLmltcGwoKSk7Cisg
ICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmcoJmMsIDEp
LmltcGwoKSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTaW5nbGVD
aGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNp
Z25lZCBvZmZzZXQpCisgICAgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0
ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9m
ZnNldCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5n
bG9iYWxEYXRhKCk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocy5sZW5ndGgoKSkpOwpAQCAtMzU4LDIzICszNTgsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEFTU0VSVChzKTsKICAgICAgICAgQVNTRVJUKHNbMF0pOwogICAgICAgICBBU1NFUlQo
c1sxXSk7Ci0gICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBVU3Ry
aW5nKHMpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxE
YXRhLCBTdHJpbmcocykuaW1wbCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IHMpCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewogICAgICAgICBBU1NFUlQocy5s
ZW5ndGgoKSA+IDEpOwogICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0
YSwgcy5pbXBsKCkpOwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBVU3RyaW5nJiBKU1N0cmlu
Zzo6dmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAgIGlubGluZSBjb25zdCBTdHJpbmcm
IEpTU3RyaW5nOjp2YWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoaXNSb3BlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcq
Pih0aGlzKS0+cmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAg
IH0KIAotICAgIGlubGluZSBjb25zdCBVU3RyaW5nJiBKU1N0cmluZzo6dHJ5R2V0VmFsdWUoKSBj
b25zdAorICAgIGlubGluZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp0cnlHZXRWYWx1ZSgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUoMCk7CkBAIC0zOTAsNyAr
MzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3Rl
clN1YnN0cmluZyhleGVjLCBtX3ZhbHVlLCBpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNTdHJp
bmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcykK
KyAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgU3RyaW5nJiBzKQogICAgIHsKICAgICAgICAgaW50IHNpemUgPSBzLmxlbmd0aCgpOwog
ICAgICAgICBpZiAoIXNpemUpCkBAIC00MTQsNyArNDE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhnbG9iYWxEYXRhLCBzLT52YWx1ZShleGVjKSwgb2Zm
c2V0LCBsZW5ndGgpOwogICAgIH0KIAotICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmc4
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZzgo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CkBAIC00MjksNyArNDI5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJP
d25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlOChzLmltcGwoKSwgb2Zmc2V0LCBs
ZW5ndGgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CiAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKCpn
bG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKSk7
CiAgICAgfQogCi0gICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcykKKyAgICBpbmxpbmUgSlNTdHJpbmcqIGpz
T3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMpCiAg
ICAgewogICAgICAgICBpbnQgc2l6ZSA9IHMubGVuZ3RoKCk7CiAgICAgICAgIGlmICghc2l6ZSkK
QEAgLTQ2MywxMyArNDYzLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAogICAgIGlubGlu
ZSBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIGpzRW1w
dHlTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSk7IH0KLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpz
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcykgeyByZXR1cm4ganNTdHJp
bmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KKyAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc1N0cmluZygm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNTaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVQ2hhciBjKSB7IHJldHVybiBqc1Npbmds
ZUNoYXJhY3RlclN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBjKTsgfQotICAgIGlubGluZSBK
U1N0cmluZyoganNTdWJzdHJpbmc4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcywg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nOCgm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBzLCBvZmZzZXQsIGxlbmd0aCk7IH0KLSAgICBpbmxpbmUgSlNT
dHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcywgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nKCZleGVj
LT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQotICAgIGlubGluZSBKU1N0cmlu
ZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcykg
eyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9Cisg
ICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZzgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBqc1N1
YnN0cmluZzgoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcywgb2Zmc2V0LCBsZW5ndGgpOyB9CisgICAg
aW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGpzU3Vic3Ry
aW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQorICAgIGlubGlu
ZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwg
cyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBzKTsgfQotICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmco
JmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0gCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVk
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVk
U3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CkBAIC01Mjcs
MTQgKzUyNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvU3RyaW5nU2xv
d0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgaW5saW5lIFVTdHJpbmcgSlNWYWx1ZTo6dG9VU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICBpbmxpbmUgU3RyaW5nIEpTVmFsdWU6OnRv
V1RGU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc1N0
cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxs
KCkpLT52YWx1ZShleGVjKTsKLSAgICAgICAgcmV0dXJuIHRvVVN0cmluZ1Nsb3dDYXNlKGV4ZWMp
OworICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVjKTsKICAgICB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvVVN0cmluZyhj
b25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQorICAgIEFMV0FZU19JTkxJTkUg
U3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1
ZSwgRXhlY1N0YXRlKiBleGVjKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQpA
QCAtNTUyLDEyICs1NTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElO
RSBVU3RyaW5nIEpTVmFsdWU6OnRvVVN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CisgICAgQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4
ZWMpOwogCi0gICAgICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9VU3RyaW5nKCp0
aGlzLCBleGVjKTsKKyAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmlu
ZygqdGhpcywgZXhlYyk7CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgKaW5kZXggMWEyYjgxMmYw
ZjJhZDIwODU3NmMwYzk4Y2FhNzJjNmEyN2E1YjJhNC4uZTc3NzhlNGZiOTU5YzIxMzE5ZTkxZjA4
OTc4YjczMzYyMTM3NDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmdCdWlsZGVyLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIlVTdHJpbmdDb25j
YXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC05Miw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9va2F5ICY9IGJ1ZmZlcjE2LnRyeUFw
cGVuZChzdHIsIGxlbik7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0cmluZyYg
c3RyKQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQogICAgIHsKICAgICAgICAg
dW5zaWduZWQgbGVuZ3RoID0gc3RyLmxlbmd0aCgpOwogCkBAIC0xMjksMTIgKzEyOCwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBidWZmZXI4LnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBp
ZiAoIWJ1ZmZlcjguZGF0YSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgVVN0cmlu
Zzo6YWRvcHQoYnVmZmVyOCkpOworICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFN0
cmluZzo6YWRvcHQoYnVmZmVyOCkpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlcjE2LnNocmlu
a1RvRml0KCk7CiAgICAgICAgIGlmICghYnVmZmVyMTYuZGF0YSgpKQogICAgICAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIFVTdHJpbmc6OmFkb3B0KGJ1ZmZlcjE2KSk7CisgICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZlcjE2KSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKaW5k
ZXggZWEyNjAyNDNiN2M0NDM3ZjExZjk5NDJlOGE4NjE0MWY2MDBjYTYxNy4uMDE3OGNkOGM4ODRj
NDM3MzhkMzEyODM2NWI3NzZjODdjMDVjYTQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIC8vIFRoZSBkZXN0aW5hdGlvbiBpcyAxNmJpdHMsIGF0IGxlYXN0IG9uZSBz
dHJpbmcgaXMgMTYgYml0cy4KLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTdHJpbmdUb0RhdGEo
VUNoYXIqJiBkYXRhLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCitzdGF0aWMgaW5saW5lIHZvaWQg
YXBwZW5kU3RyaW5nVG9EYXRhKFVDaGFyKiYgZGF0YSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
CiAgICAgaWYgKHN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTcsNyArNTcs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRhKFVDaGFyKiYgZGF0YSwg
Y29uc3QgVVN0cmluZyYgc3RyaW5nKQogfQogCiAvLyBJZiB0aGUgZGVzdGluYXRpb24gaXMgOGJp
dHMsIHdlIGtub3cgZXZlcnkgc3RyaW5nIGhhcyB0byBiZSA4Yml0Lgotc3RhdGljIGlubGluZSB2
b2lkIGFwcGVuZFN0cmluZ1RvRGF0YShMQ2hhciomIGRhdGEsIGNvbnN0IFVTdHJpbmcmIHN0cmlu
ZykKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTdHJpbmdUb0RhdGEoTENoYXIqJiBkYXRhLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTdHJp
bmdUb0RhdGEoTENoYXIqJiBkYXRhLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gam9pblN0cmluZ3MoY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBzdHJpbmdzLCBjb25z
dCBVU3RyaW5nJiBzZXBhcmF0b3IsIHVuc2lnbmVkIG91dHB1dExlbmd0aCkKK3N0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBqb2luU3RyaW5ncyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgc3RyaW5ncywgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIHVuc2lnbmVkIG91dHB1dExlbmd0
aCkKIHsKICAgICBBU1NFUlQob3V0cHV0TGVuZ3RoKTsKIApAQCAtODIsNyArODIsNyBAQCBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gam9pblN0cmluZ3MoY29uc3QgVmVjdG9y
PFVTdHJpbmc+JiBzdHJpbmdzLAogICAgIGlmICghb3V0cHV0U3RyaW5nSW1wbCkKICAgICAgICAg
cmV0dXJuIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4oKTsKIAotICAgIGNvbnN0IFVTdHJpbmcgZmly
c3RTdHJpbmcgPSBzdHJpbmdzLmZpcnN0KCk7CisgICAgY29uc3QgU3RyaW5nIGZpcnN0U3RyaW5n
ID0gc3RyaW5ncy5maXJzdCgpOwogICAgIGFwcGVuZFN0cmluZ1RvRGF0YShkYXRhLCBmaXJzdFN0
cmluZyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHN0cmluZ3Muc2l6ZSgpOyArK2kp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9p
bmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCmlu
ZGV4IDQ5Zjg0NmMxZjAyMWJmMDNmZDY5MGZlM2RhYmI1ZTlkNjQ4ZjIwMmEuLjVjYjg0MWE4MDI2
OWRkNTc4ODBiNjM2OTU4ZDg1MDZiZjY1MjJlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaApAQCAtMjcsOCArMjcsOCBAQAogI2RlZmluZSBK
U1N0cmluZ0pvaW5lcl9oCiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiVVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDIxICszNywyMSBAQCBjbGFzcyBFeGVj
U3RhdGU7CiAKIGNsYXNzIEpTU3RyaW5nSm9pbmVyIHsKIHB1YmxpYzoKLSAgICBKU1N0cmluZ0pv
aW5lcihjb25zdCBVU3RyaW5nJiBzZXBhcmF0b3IsIHNpemVfdCBzdHJpbmdDb3VudCk7CisgICAg
SlNTdHJpbmdKb2luZXIoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIHNpemVfdCBzdHJpbmdDb3Vu
dCk7CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJik7CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgU3RyaW5nJik7CiAgICAgSlNWYWx1ZSBidWlsZChFeGVjU3RhdGUqKTsKIAogcHJpdmF0
ZToKLSAgICBVU3RyaW5nIG1fc2VwYXJhdG9yOwotICAgIFZlY3RvcjxVU3RyaW5nPiBtX3N0cmlu
Z3M7CisgICAgU3RyaW5nIG1fc2VwYXJhdG9yOworICAgIFZlY3RvcjxTdHJpbmc+IG1fc3RyaW5n
czsKIAogICAgIHVuc2lnbmVkIG1fY3VtdWxhdGVkU3RyaW5nc0xlbmd0aDsKICAgICBib29sIG1f
aXNWYWxpZDsKICAgICBib29sIG1faXM4Qml0czsKIH07CiAKLWlubGluZSBKU1N0cmluZ0pvaW5l
cjo6SlNTdHJpbmdKb2luZXIoY29uc3QgVVN0cmluZyYgc2VwYXJhdG9yLCBzaXplX3Qgc3RyaW5n
Q291bnQpCitpbmxpbmUgSlNTdHJpbmdKb2luZXI6OkpTU3RyaW5nSm9pbmVyKGNvbnN0IFN0cmlu
ZyYgc2VwYXJhdG9yLCBzaXplX3Qgc3RyaW5nQ291bnQpCiAgICAgOiBtX3NlcGFyYXRvcihzZXBh
cmF0b3IpCiAgICAgLCBtX2N1bXVsYXRlZFN0cmluZ3NMZW5ndGgoMCkKICAgICAsIG1faXNWYWxp
ZCh0cnVlKQpAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUgSlNTdHJpbmdKb2luZXI6OkpTU3RyaW5n
Sm9pbmVyKGNvbnN0IFVTdHJpbmcmIHNlcGFyYXRvciwgc2l6ZV90IHN0cmluZ0NvdQogICAgIG1f
aXNWYWxpZCA9IG1fc3RyaW5ncy50cnlSZXNlcnZlQ2FwYWNpdHkoc3RyaW5nQ291bnQpOwogfQog
Ci1pbmxpbmUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kKGNvbnN0IFVTdHJpbmcmIHN0cikK
K2lubGluZSB2b2lkIEpTU3RyaW5nSm9pbmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHIpCiB7
CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKaW5kZXggYzM0NDMxMTc4OWNiNjY2NmJiYzUzYmRlMGM5
ZjFkOWVhMDhmZGJlOC4uMGJlZGFhMzNmMjYyMzAyNzJjMDczOWI3M2MzNWZjMDJmZTBmN2E0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKQEAgLTI4Myw5ICsy
ODMsOSBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogfQogCi1VU3RyaW5n
IEpTVmFsdWU6OnRvVVN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK1N0cmlu
ZyBKU1ZhbHVlOjp0b1dURlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsK
LSAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvVVN0cmluZygqdGhpcywgZXhlYyk7
CisgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5oCmluZGV4IDdhYTU0NTNlNDBkMTA2NTRlY2I3NGIyOWFhZmUxMjNmMmU0MDA4NWMuLjAy
ZDJiODE2NDQzNjk4ZTYyN2E2NThjMTNiMjhmZDBlMzU1Mzk3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lOwogICAgIGNsYXNzIFByb3BlcnR5U2xvdDsKICAgICBj
bGFzcyBQdXRQcm9wZXJ0eVNsb3Q7Ci0gICAgY2xhc3MgVVN0cmluZzsKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBuYW1lc3BhY2UgREZHIHsKICAgICAgICAgY2xhc3MgQXNzZW1ibHlIZWxwZXJz
OwpAQCAtMTk4LDggKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGluaGVy
aXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgICAgICAKICAgICAgICAgLy8gRXh0cmFj
dGluZyB0aGUgdmFsdWUuCi0gICAgICAgIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
VVN0cmluZyYpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKKyAgICAgICAgYm9vbCBn
ZXRTdHJpbmcoRXhlY1N0YXRlKiwgV1RGOjpTdHJpbmcmKSBjb25zdDsKKyAgICAgICAgV1RGOjpT
dHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3Qg
YSBzdHJpbmcKICAgICAgICAgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyAwIGlmIG5v
dCBhbiBvYmplY3QKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIGludGVnZXIgdmFsdWVzLgpAQCAt
MjE1LDggKzIxNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBiZWVuIHNldCBpbiB0
aGUgRXhlY1N0YXRlIGFscmVhZHkuCiAgICAgICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUq
KSBjb25zdDsKICAgICAgICAgSlNTdHJpbmcqIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0Owot
ICAgICAgICBVU3RyaW5nIHRvVVN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgVVN0
cmluZyB0b1VTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIFdURjo6U3Ry
aW5nIHRvV1RGU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBXVEY6OlN0cmluZyB0
b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRv
T2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU09iamVjdCogdG9PYmplY3QoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIApAQCAtMjY3LDcgKzI2Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgY29uc3QgSlNWYWx1ZSBhc1ZhbHVlKCkgY29u
c3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRv
TnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIHRvVVN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSop
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZyB0b1dURlN0cmlu
Z1Nsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9UaGlzT2JqZWN0U2xv
d0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggZTFmODVjZWZlNmVhNGU0NGU0MGM4M2VmNmZm
N2M3NjUwZWZlNjA0YS4uYWE2NTQxYjZhZWQ1YmYwY2VjZDhlNWY2Mzk5NDc5Yzg2YzIyMDllMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAK
QEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkxleGVy
LmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTM0NCw3ICszNDQsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBjaGFyIHRlcm1p
bmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZQogewogICAgICsrbV9w
dHI7CiAgICAgY29uc3QgQ2hhclR5cGUqIHJ1blN0YXJ0ID0gbV9wdHI7Ci0gICAgVVN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZG8gewogICAg
ICAgICBydW5TdGFydCA9IG1fcHRyOwogICAgICAgICB3aGlsZSAobV9wdHIgPCBtX2VuZCAmJiBp
c1NhZmVTdHJpbmdDaGFyYWN0ZXI8bW9kZSwgQ2hhclR5cGUsIHRlcm1pbmF0b3I+KCptX3B0cikp
CkBAIC00MDAsNyArNDAwLDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJt
aW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2UKICAgICAgICAgICAg
ICAgICAgICAgfSAvLyB1Tk5OTiA9PSA1IGNoYXJhY3RlcnMKICAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDE7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlwiXFwlc1wiIGlzIG5vdCBh
IHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgVVN0cmluZyhtX3B0ciwgNSkuYXNjaWkoKS5kYXRhKCkp
LmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IFN0cmluZzo6Zm9ybWF0KCJcIlxcJXNcIiBpcyBub3QgYSB2YWxpZCB1bmljb2RlIGVzY2FwZSIs
IFN0cmluZyhtX3B0ciwgNSkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQyNiwxMSArNDI2LDExIEBAIHRlbXBsYXRlIDxQ
YXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWluYXRvcj4gQUxXQVlTX0lOTElORSBUb2tlblR5cGUg
TGl0ZXJhbFBhcnNlCiAgICAgfQogCiAgICAgaWYgKGJ1aWxkZXIuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHRva2VuLnN0cmluZ0J1ZmZlciA9IFVTdHJpbmcoKTsKKyAgICAgICAgdG9rZW4uc3RyaW5n
QnVmZmVyID0gU3RyaW5nKCk7CiAgICAgICAgIHNldFBhcnNlclRva2VuU3RyaW5nPENoYXJUeXBl
Pih0b2tlbiwgcnVuU3RhcnQpOwogICAgICAgICB0b2tlbi5zdHJpbmdMZW5ndGggPSBtX3B0ciAt
IHJ1blN0YXJ0OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRva2VuLnN0cmluZ0J1ZmZlciA9IGJ1
aWxkZXIudG9VU3RyaW5nKCk7CisgICAgICAgIHRva2VuLnN0cmluZ0J1ZmZlciA9IGJ1aWxkZXIu
dG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRva2VuLnN0cmluZ0J1ZmZlci5pczhCaXQoKSkgewog
ICAgICAgICAgICAgdG9rZW4uc3RyaW5nSXM4Qml0ID0gMTsKICAgICAgICAgICAgIHRva2VuLnN0
cmluZ1Rva2VuOCA9IHRva2VuLnN0cmluZ0J1ZmZlci5jaGFyYWN0ZXJzOCgpOwpAQCAtNjk4LDkg
KzY5OCw5IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0
YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlmaWVy
OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXRlcmFsUGFyc2VyVG9rZW48Q2hh
clR5cGU+JiB0b2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodG9rZW4uc3RyaW5nSXM4Qml0KQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVu
dGlmaWVyIFwiJXNcIiIsIFVTdHJpbmcobV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tl
bjgsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSku
aW1wbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFN0cmluZyht
X2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuOCwgbV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdHJpbmdMZW5ndGgpLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgXCIlc1wiIiwgVVN0
cmluZyhtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuMTYsIG1fbGV4ZXIuY3VycmVu
dFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgi
VW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFN0cmluZyhtX2xleGVyLmN1cnJlbnRUb2tl
bigpLnN0cmluZ1Rva2VuMTYsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5h
c2NpaSgpLmRhdGEoKSkuaW1wbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNl
IFRva0NvbG9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5oCmluZGV4IGFiZTNmOTViNzk4Y2MzNWIyZTQ2NDI5MTE3Yjg3ZDExYWRkZmZmODkuLjYxYThl
ZjM0ZGM2MjAxNmMxZGRjNjY5ZDUzN2I5MjljZjBlN2RlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNjcsNyArNjcsNyBA
QCBzdHJ1Y3QgTGl0ZXJhbFBhcnNlclRva2VuIHsKICAgICBUb2tlblR5cGUgdHlwZTsKICAgICBj
b25zdCBDaGFyVHlwZSogc3RhcnQ7CiAgICAgY29uc3QgQ2hhclR5cGUqIGVuZDsKLSAgICBVU3Ry
aW5nIHN0cmluZ0J1ZmZlcjsKKyAgICBTdHJpbmcgc3RyaW5nQnVmZmVyOwogICAgIHVuaW9uIHsK
ICAgICAgICAgZG91YmxlIG51bWJlclRva2VuOwogICAgICAgICBzdHJ1Y3QgewpAQCAtOTQsNyAr
OTQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBVU3RyaW5nIGdldEVycm9y
TWVzc2FnZSgpIAorICAgIFN0cmluZyBnZXRFcnJvck1lc3NhZ2UoKQogICAgIHsgCiAgICAgICAg
IGlmICghbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6ICVzIiwgbV9sZXhlci5nZXRF
cnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwpAQCAtMTMzLDEwICsxMzMsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnRUb2tlbjsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgVVN0cmluZyBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiBt
X2xleEVycm9yTWVzc2FnZTsgfQorICAgICAgICBTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgeyBy
ZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgVVN0cmluZyBtX2xleEVycm9yTWVzc2FnZTsKKyAgICAgICAgU3RyaW5nIG1fbGV4RXJyb3JN
ZXNzYWdlOwogICAgICAgICB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlPiBUb2tlblR5cGUgbGV4
KExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4mKTsKICAgICAgICAgQUxXQVlTX0lOTElORSBU
b2tlblR5cGUgbGV4SWRlbnRpZmllcihMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+Jik7CiAg
ICAgICAgIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWluYXRvcj4gQUxXQVlT
X0lOTElORSBUb2tlblR5cGUgbGV4U3RyaW5nKExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4m
KTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIEV4ZWNTdGF0ZSogbV9leGVjOwog
ICAgIHR5cGVuYW1lIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlciBtX2xleGVyOwogICAg
IFBhcnNlck1vZGUgbV9tb2RlOwotICAgIFVTdHJpbmcgbV9wYXJzZUVycm9yTWVzc2FnZTsKKyAg
ICBTdHJpbmcgbV9wYXJzZUVycm9yTWVzc2FnZTsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3Qg
TWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwogICAgIEZpeGVkQXJyYXk8SWRlbnRpZmll
ciwgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyPiBtX3Nob3J0SWRlbnRpZmllcnM7CiAgICAgRml4
ZWRBcnJheTxJZGVudGlmaWVyLCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXI+IG1fcmVjZW50SWRl
bnRpZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggNzZhZWE5ZGE4YmYwZGJhZDA2NjgxOGViMTZmODY4
NDllZmFjZmQ3Yi4uOGRiMjM3MDI4Yzg4NWRkMDVlNDU0NjJhMTgxN2Q0Y2VjNTY5YWQxZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgICAgIHN0YXRp
YyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAgICAgIHN0YXRpYyBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgewogICAgICAgICAg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVT
dHJ1Y3R1cmUsIG5hbWUpOwpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUu
Z2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBuYW1lKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlw
ZS5jcHAKaW5kZXggZGZkZDg3Zjg1MzIxYjkxOTc5NzdiZjVkN2Y1OWJjMDM3YjA4NzY0Yi4uN2Zl
ZTIxM2ZhNTM1NDdhNWQ3OWIyMmNiYWE4M2IyMTFmYzc3NDc2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcApAQCAt
MjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAi
VVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzUsNyArMzQsNyBAQCBOYXRpdmVF
cnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZQogewogfQogCi12b2lkIE5hdGl2ZUVycm9yUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvcikKK3ZvaWQgTmF0aXZlRXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgV1RGOjpT
dHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
cikKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwogICAg
IHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1l
LCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCmluZGV4
IDRiY2ViODgzYTgyMGIxZTE2YzdjNTdhNWExNzdlZGQxZDY0MGYxNzAuLmM5NGYyYjc1YWRiZDc5
NDliMjYxOWIzYTc4YzVjNTY2M2I4NjM1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaApAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRXJyb3JQcm90b3R5
cGUgQmFzZTsKIAotICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvcikKKyAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUq
IHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yUHJvdG90
eXBlPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgc3RydWN0dXJl
KTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBuYW1lLCBjb25zdHJ1Y3Rvcik7CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVz
c2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBuYW1lQW5kTWVz
c2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5jcHAKaW5kZXggNjkyYTU4NGZhNGEwOWQwZGFlYTIzOWNjOWQ2OWU0ZjU3NWM2NzIxYi4uMWQ3
OTM5MjI1MjQ2YjJkYmVjZTgyMWEzZTQzMWMwYjdkYmZmZTViYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0zMzksNyArMzM5
LDcgQEAgc3RhdGljIGNoYXIqIHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4QnVmZmVyJiBidWZmZXIs
IGRvdWJsZSBudW1iZXIsIHVuc2lnbmVkIHJhZGkKICAgICByZXR1cm4gc3RhcnRPZlJlc3VsdFN0
cmluZzsKIH0KIAotc3RhdGljIFVTdHJpbmcgdG9VU3RyaW5nV2l0aFJhZGl4KGludDMyX3QgbnVt
YmVyLCB1bnNpZ25lZCByYWRpeCkKK3N0YXRpYyBTdHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50
MzJfdCBudW1iZXIsIHVuc2lnbmVkIHJhZGl4KQogewogICAgIExDaGFyIGJ1ZlsxICsgMzJdOyAv
LyBXb3JzdCBjYXNlIGlzIHJhZGl4ID09IDIsIHdoaWNoIGdpdmVzIHVzIDMyIGRpZ2l0cyArIHNp
Z24uCiAgICAgTENoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5HVEgoYnVmKTsKQEAgLTM2
MSw3ICszNjEsNyBAQCBzdGF0aWMgVVN0cmluZyB0b1VTdHJpbmdXaXRoUmFkaXgoaW50MzJfdCBu
dW1iZXIsIHVuc2lnbmVkIHJhZGl4KQogICAgIGlmIChuZWdhdGl2ZSkKICAgICAgICAgKi0tcCA9
ICctJzsKIAotICAgIHJldHVybiBVU3RyaW5nKHAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQg
LSBwKSk7CisgICAgcmV0dXJuIFN0cmluZyhwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0g
cCkpOwogfQogCiAvLyB0b0V4cG9uZW50aWFsIGNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5n
LCBhbHdheXMgZm9ybWF0dGluZyBhcyBhbiBleHBvZW50aWFsLgpAQCAtMzgyLDcgKzM4Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlh
bChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KICAg
ICBpZiAoIWlzZmluaXRlKHgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKGV4ZWMsIFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9T
dHJpbmdFQ01BU2NyaXB0KHgpKSk7CiAKICAgICAvLyBSb3VuZCBpZiB0aGUgYXJndW1lbnQgaXMg
bm90IHVuZGVmaW5lZCwgYWx3YXlzIGZvcm1hdCBhcyBleHBvbmVudGlhbC4KICAgICBjaGFyIGJ1
ZmZlcltXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKQEAgLTM5Miw3ICszOTIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRp
YWwoRXhlY1N0YXRlKiBleGVjKQogICAgIGlzVW5kZWZpbmVkCiAgICAgICAgID8gY29udmVydGVy
LlRvRXhwb25lbnRpYWwoeCwgLTEsICZidWlsZGVyKQogICAgICAgICA6IGNvbnZlcnRlci5Ub0V4
cG9uZW50aWFsKHgsIGRlY2ltYWxQbGFjZXNJbkV4cG9uZW50LCAmYnVpbGRlcik7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nKGJ1aWxkZXIuRmluYWxp
emUoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmlu
ZyhidWlsZGVyLkZpbmFsaXplKCkpKSk7CiB9CiAKIC8vIHRvRml4ZWQgY29udmVydHMgYSBudW1i
ZXIgdG8gYSBzdHJpbmcsIGFsd2F5cyBmb3JtYXR0aW5nIGFzIGFuIGEgZGVjaW1hbCBmcmFjdGlv
bi4KQEAgLTQxNSwxNCArNDE1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gVGhpcyBhbHNvIGNv
dmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgogICAgIC8v
IHZhbHVlcyBhcmUgYWxzbyBoYW5kbGVkIGJ5IG51bWJlclRvU3RyaW5nCiAgICAgaWYgKCEoZmFi
cyh4KSA8IDFlKzIxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCBVU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoeCkpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5n
RUNNQVNjcmlwdCh4KSkpOwogCiAgICAgLy8gVGhlIGNoZWNrIGFib3ZlIHdpbGwgcmV0dXJuIGZh
bHNlIGZvciBOYU4gb3IgSW5maW5pdHksIHRoZXNlIHdpbGwgYmUKICAgICAvLyBoYW5kbGVkIGJ5
IG51bWJlclRvU3RyaW5nLgogICAgIEFTU0VSVChpc2Zpbml0ZSh4KSk7CiAKICAgICBOdW1iZXJU
b1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
ZyhleGVjLCBVU3RyaW5nKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyh4LCBkZWNpbWFsUGxhY2Vz
LCBidWZmZXIpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
U3RyaW5nKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyh4LCBkZWNpbWFsUGxhY2VzLCBidWZmZXIp
KSkpOwogfQogCiAvLyB0b1ByZWNpc2lvbiBjb252ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywg
dGFrZWluZyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEKQEAgLTQ0NiwxNCArNDQ2LDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgLy8gVG8gcHJlY2lzaW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3Vt
ZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAgaWYgKGlzVW5kZWZpbmVkKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6Om51bWJlclRv
U3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHgpKSk7CiAKICAg
ICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAoIWlzZmluaXRlKHgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6Om51bWJl
clRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHgpKSk7CiAK
ICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nKG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmco
eCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBidWZmZXIpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5nKG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmco
eCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBidWZmZXIpKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIGlu
dDMyX3QgZXh0cmFjdFJhZGl4RnJvbUFyZ3MoRXhlY1N0YXRlKiBleGVjKQpAQCAtNDg1LDcgKzQ4
NSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgaW50ZWdlclZhbHVlVG9TdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IHJhZGl4CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+bnVtZXJpY1N0cmluZ3MuYWRk
KHZhbHVlKSkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
ZXhlYywgdG9VU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCByYWRpeCkpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCByYWRp
eCkpKTsKIAogfQogCkBAIC01MDksNyArNTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAg
ICAgaWYgKCFpc2Zpbml0ZShkb3VibGVWYWx1ZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRv
dWJsZVZhbHVlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4
ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJsZVZhbHVlKSkpOwogCiAg
ICAgUmFkaXhCdWZmZXIgczsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4
ZWMsIHRvU3RyaW5nV2l0aFJhZGl4KHMsIGRvdWJsZVZhbHVlLCByYWRpeCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWVyaWNTdHJpbmdzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1lcmljU3RyaW5ncy5oCmluZGV4IDA3ZTg0OTQ5
MTE1NTBkODNhMWYzYjQ4MzdkNzkwNWZmMzc1MDgyYmIuLjRjZDkyZmMxZjJmNjdkNmM1MTM2ZmVm
M2IyNzNkNDFjZmVmYTI3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWVyaWNTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtZXJpY1N0cmluZ3MuaApAQCAtMjYsMjUgKzI2LDI1IEBACiAjaWZuZGVmIE51bWVyaWNTdHJp
bmdzX2gKICNkZWZpbmUgTnVtZXJpY1N0cmluZ3NfaAogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBOdW1lcmljU3RyaW5ncyB7CiAgICAgcHVibGljOgotICAgICAgICBBTFdBWVNf
SU5MSU5FIFVTdHJpbmcgYWRkKGRvdWJsZSBkKQorICAgICAgICBBTFdBWVNfSU5MSU5FIFN0cmlu
ZyBhZGQoZG91YmxlIGQpCiAgICAgICAgIHsKICAgICAgICAgICAgIENhY2hlRW50cnk8ZG91Ymxl
PiYgZW50cnkgPSBsb29rdXAoZCk7CiAgICAgICAgICAgICBpZiAoZCA9PSBlbnRyeS5rZXkgJiYg
IWVudHJ5LnZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1
ZTsKICAgICAgICAgICAgIGVudHJ5LmtleSA9IGQ7Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZSA9
IFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkKTsKKyAgICAgICAgICAgIGVudHJ5
LnZhbHVlID0gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZCk7CiAgICAgICAgICAg
ICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5MSU5F
IFVTdHJpbmcgYWRkKGludCBpKQorICAgICAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBhZGQoaW50
IGkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSkg
PCBjYWNoZVNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvb2t1cFNtYWxsU3RyaW5nKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpKSk7CkBAIC01MiwxMSArNTIsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBpZiAoaSA9PSBlbnRyeS5rZXkgJiYgIWVudHJ5LnZhbHVlLmlzTnVs
bCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgICAgIGVu
dHJ5LmtleSA9IGk7Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFVTdHJpbmc6Om51bWJlcihp
KTsKKyAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1iZXIoaSk7CiAgICAgICAg
ICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgIH0KIAotICAgICAgICBBTFdBWVNfSU5M
SU5FIFVTdHJpbmcgYWRkKHVuc2lnbmVkIGkpCisgICAgICAgIEFMV0FZU19JTkxJTkUgU3RyaW5n
IGFkZCh1bnNpZ25lZCBpKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaSA8IGNhY2hlU2l6
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbG9va3VwU21hbGxTdHJpbmcoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGkpKTsKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBpZiAoaSA9PSBlbnRyeS5rZXkgJiYgIWVudHJ5LnZhbHVlLmlzTnVsbCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgICAgIGVudHJ5LmtleSA9IGk7
Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFVTdHJpbmc6Om51bWJlcihpKTsKKyAgICAgICAg
ICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1iZXIoaSk7CiAgICAgICAgICAgICByZXR1cm4g
ZW50cnkudmFsdWU7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgpAQCAtNzMsMjQgKzczLDI0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgICAgICBz
dHJ1Y3QgQ2FjaGVFbnRyeSB7CiAgICAgICAgICAgICBUIGtleTsKLSAgICAgICAgICAgIFVTdHJp
bmcgdmFsdWU7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWU7CiAgICAgICAgIH07CiAKICAgICAg
ICAgQ2FjaGVFbnRyeTxkb3VibGU+JiBsb29rdXAoZG91YmxlIGQpIHsgcmV0dXJuIGRvdWJsZUNh
Y2hlW1dURjo6RmxvYXRIYXNoPGRvdWJsZT46Omhhc2goZCkgJiAoY2FjaGVTaXplIC0gMSldOyB9
CiAgICAgICAgIENhY2hlRW50cnk8aW50PiYgbG9va3VwKGludCBpKSB7IHJldHVybiBpbnRDYWNo
ZVtXVEY6OkludEhhc2g8aW50Pjo6aGFzaChpKSAmIChjYWNoZVNpemUgLSAxKV07IH0KICAgICAg
ICAgQ2FjaGVFbnRyeTx1bnNpZ25lZD4mIGxvb2t1cCh1bnNpZ25lZCBpKSB7IHJldHVybiB1bnNp
Z25lZENhY2hlW1dURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2goaSkgJiAoY2FjaGVTaXplIC0g
MSldOyB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVVN0cmluZyYgbG9va3VwU21hbGxT
dHJpbmcodW5zaWduZWQgaSkKKyAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBTdHJpbmcmIGxv
b2t1cFNtYWxsU3RyaW5nKHVuc2lnbmVkIGkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChpIDwgY2FjaGVTaXplKTsKICAgICAgICAgICAgIGlmIChzbWFsbEludENhY2hlW2ldLmlzTnVs
bCgpKQotICAgICAgICAgICAgICAgIHNtYWxsSW50Q2FjaGVbaV0gPSBVU3RyaW5nOjpudW1iZXIo
aSk7CisgICAgICAgICAgICAgICAgc21hbGxJbnRDYWNoZVtpXSA9IFN0cmluZzo6bnVtYmVyKGkp
OwogICAgICAgICAgICAgcmV0dXJuIHNtYWxsSW50Q2FjaGVbaV07CiAgICAgICAgIH0KIAogICAg
ICAgICBGaXhlZEFycmF5PENhY2hlRW50cnk8ZG91YmxlPiwgY2FjaGVTaXplPiBkb3VibGVDYWNo
ZTsKICAgICAgICAgRml4ZWRBcnJheTxDYWNoZUVudHJ5PGludD4sIGNhY2hlU2l6ZT4gaW50Q2Fj
aGU7CiAgICAgICAgIEZpeGVkQXJyYXk8Q2FjaGVFbnRyeTx1bnNpZ25lZD4sIGNhY2hlU2l6ZT4g
dW5zaWduZWRDYWNoZTsKLSAgICAgICAgRml4ZWRBcnJheTxVU3RyaW5nLCBjYWNoZVNpemU+IHNt
YWxsSW50Q2FjaGU7CisgICAgICAgIEZpeGVkQXJyYXk8U3RyaW5nLCBjYWNoZVNpemU+IHNtYWxs
SW50Q2FjaGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWE2ZmNk
ZGYwMzk1NWEzZjA3YTNkOTZlOTQyYzI4MDM3YTM4MDlkNS4uMjFlY2NkMzBlOTliYmMwY2VlYjJm
OWU5ZTFhNWM3ZjhiODI2YmVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBh
biBvYmplY3QuIikpOwotICAgIFVTdHJpbmcgcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQo
MSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwcm9wZXJ0eU5hbWUg
PSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVsbCgpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MCkpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZp
bmVkIG9uIE9iamVjdHMuIikpOwogICAgIEpTT2JqZWN0KiBPID0gYXNPYmplY3QoZXhlYy0+YXJn
dW1lbnQoMCkpOwotICAgIFVTdHJpbmcgcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBl
eGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCAyNDA1M2M1MmFhYmZmYzViZDllMzQz
MzZiY2NkYmFhMzM5MTcxZDMxLi4zMGJhMGIyN2Q3YWUyYmRmNDg2ZjdiOWY0MWU3ODU0MWFjOTll
YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC01
MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gSlNSb3BlU3RyaW5n
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgczEsIHMyKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiB1MSwgY29u
c3QgVVN0cmluZyYgdTIsIGNvbnN0IFVTdHJpbmcmIHUzKQorICAgIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0
cmluZyYgdTIsIGNvbnN0IFN0cmluZyYgdTMpCiAgICAgewogICAgICAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCkBAIC0yMjEsNyArMjIxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA8IHYyLmFz
TnVtYmVyKCk7CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcodjEpICYmIGlzSlNTdHJpbmcodjIp
KQotICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFz
U3RyaW5nKHYyKS0+dmFsdWUoY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBjb2RlUG9p
bnRDb21wYXJlTGVzc1RoYW4oYXNTdHJpbmcodjEpLT52YWx1ZShjYWxsRnJhbWUpLCBhc1N0cmlu
Zyh2MiktPnZhbHVlKGNhbGxGcmFtZSkpOwogCiAgICAgICAgIGRvdWJsZSBuMTsKICAgICAgICAg
ZG91YmxlIG4yOwpAQCAtMjM5LDcgKzIzOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikKICAgICAgICAgICAgIHJldHVybiBu
MSA8IG4yOwotICAgICAgICByZXR1cm4gYXNTdHJpbmcocDEpLT52YWx1ZShjYWxsRnJhbWUpIDwg
YXNTdHJpbmcocDIpLT52YWx1ZShjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gY29kZVBvaW50
Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKHAxKS0+dmFsdWUoY2FsbEZyYW1lKSwgYXNTdHJpbmco
cDIpLT52YWx1ZShjYWxsRnJhbWUpKTsKICAgICB9CiAKICAgICAvLyBTZWUgRVM1IDExLjguMy8x
MS44LjQvMTEuOC41IGZvciBkZWZpbml0aW9uIG9mIGxlZnRGaXJzdCwgdGhpcyB2YWx1ZSBlbnN1
cmVzIGNvcnJlY3QKQEAgLTI1NSw3ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiB2MS5hc051bWJlcigpIDw9IHYyLmFzTnVtYmVyKCk7CiAKICAgICAgICAgaWYg
KGlzSlNTdHJpbmcodjEpICYmIGlzSlNTdHJpbmcodjIpKQotICAgICAgICAgICAgcmV0dXJuICEo
YXNTdHJpbmcodjIpLT52YWx1ZShjYWxsRnJhbWUpIDwgYXNTdHJpbmcodjEpLT52YWx1ZShjYWxs
RnJhbWUpKTsKKyAgICAgICAgICAgIHJldHVybiAhY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGFz
U3RyaW5nKHYyKS0+dmFsdWUoY2FsbEZyYW1lKSwgYXNTdHJpbmcodjEpLT52YWx1ZShjYWxsRnJh
bWUpKTsKIAogICAgICAgICBkb3VibGUgbjE7CiAgICAgICAgIGRvdWJsZSBuMjsKQEAgLTI3Myw3
ICsyNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpZiAod2FzTm90U3RyaW5nMSB8
IHdhc05vdFN0cmluZzIpCiAgICAgICAgICAgICByZXR1cm4gbjEgPD0gbjI7Ci0gICAgICAgIHJl
dHVybiAhKGFzU3RyaW5nKHAyKS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFzU3RyaW5nKHAxKS0+dmFs
dWUoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiAhY29kZVBvaW50Q29tcGFyZUxlc3NUaGFu
KGFzU3RyaW5nKHAyKS0+dmFsdWUoY2FsbEZyYW1lKSwgYXNTdHJpbmcocDEpLT52YWx1ZShjYWxs
RnJhbWUpKTsKICAgICB9CiAKICAgICAvLyBGYXN0LXBhdGggY2hvaWNlcyBoZXJlIGFyZSBiYXNl
ZCBvbiBmcmVxdWVuY3kgZGF0YSBmcm9tIFN1blNwaWRlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCmluZGV4IDU5NTNmNWU4
NzZjNzVjMjA2YTU0YTI1ZjlmNTg3ZTEwOTAxNThkMjcuLjJkMGYyN2EzZTNjZjRkMTFkYTk1Zjhj
ZWRlMTgzMmVhMDYwMmE0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaApAQCAtMjIsMTEgKzIyLDExIEBACiAjZGVmaW5l
IFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKIAogI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCi0j
aW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIAogI2lm
bmRlZiBOREVCVUcKQEAgLTQ0LDcgKzQ0LDcgQEAgZXh0ZXJuIGludCBudW1SZW1vdmVzOwogCiAj
ZW5kaWYKIAotI2RlZmluZSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRSWV9LRVkgKChTdHJpbmdJ
bXBsKikxKSAKKyNkZWZpbmUgUFJPUEVSVFlfTUFQX0RFTEVURURfRU5UUllfS0VZICgoU3RyaW5n
SW1wbCopMSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuY3BwCmluZGV4IDY0ZTU1M2JlMWM5NGM2MTI4ZTA0ZTE1ZDI3NTFhN2Y0NDk2Mzhl
NzEuLjc3NTcyNzRmMWYzOTEzYjQzZDc0ODdkN2Y2NDI0ZTM0MmEwZGVhYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cDo6c19pbmZvID0geyAiUmVnRXhwIiwg
MCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdFeHApIH07CiAKLVJlZ0V4cEZsYWdzIHJl
Z0V4cEZsYWdzKGNvbnN0IFVTdHJpbmcmIHN0cmluZykKK1JlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdz
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIFJlZ0V4cEZsYWdzIGZsYWdzID0gTm9GbGFn
czsKIApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB+UmVnRXhwRnVuY3Rpb25hbFRl
c3RDb2xsZWN0b3IoKTsKIAotICAgIHZvaWQgb3V0cHV0T25lVGVzdChSZWdFeHAqLCBVU3RyaW5n
LCBpbnQsIGludCosIGludCk7CisgICAgdm9pZCBvdXRwdXRPbmVUZXN0KFJlZ0V4cCosIFN0cmlu
ZywgaW50LCBpbnQqLCBpbnQpOwogICAgIHZvaWQgY2xlYXJSZWdFeHAoUmVnRXhwKiByZWdFeHAp
CiAgICAgewogICAgICAgICBpZiAocmVnRXhwID09IG1fbGFzdFJlZ0V4cCkKQEAgLTkzLDcgKzkz
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rv
cigpOwogCi0gICAgdm9pZCBvdXRwdXRFc2NhcGVkVVN0cmluZyhjb25zdCBVU3RyaW5nJiwgYm9v
bCBlc2NhcGVTbGFzaCA9IGZhbHNlKTsKKyAgICB2b2lkIG91dHB1dEVzY2FwZWRTdHJpbmcoY29u
c3QgU3RyaW5nJiwgYm9vbCBlc2NhcGVTbGFzaCA9IGZhbHNlKTsKIAogICAgIHN0YXRpYyBSZWdF
eHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvciogc19pbnN0YW5jZTsKICAgICBGSUxFKiBtX2ZpbGU7
CkBAIC0xMTEsMTIgKzExMSwxMiBAQCBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3RvciogUmVn
RXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6OmdldCgpCiAgICAgcmV0dXJuIHNfaW5zdGFuY2U7
CiB9CiAKLXZvaWQgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6Om91dHB1dE9uZVRlc3Qo
UmVnRXhwKiByZWdFeHAsIFVTdHJpbmcgcywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqIG92ZWN0b3Is
IGludCByZXN1bHQpCit2b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpvdXRwdXRP
bmVUZXN0KFJlZ0V4cCogcmVnRXhwLCBTdHJpbmcgcywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqIG92
ZWN0b3IsIGludCByZXN1bHQpCiB7CiAgICAgaWYgKCghbV9sYXN0UmVnRXhwKSB8fCAobV9sYXN0
UmVnRXhwICE9IHJlZ0V4cCkpIHsKICAgICAgICAgbV9sYXN0UmVnRXhwID0gcmVnRXhwOwogICAg
ICAgICBmcHV0YygnLycsIG1fZmlsZSk7Ci0gICAgICAgIG91dHB1dEVzY2FwZWRVU3RyaW5nKHJl
Z0V4cC0+cGF0dGVybigpLCB0cnVlKTsKKyAgICAgICAgb3V0cHV0RXNjYXBlZFN0cmluZyhyZWdF
eHAtPnBhdHRlcm4oKSwgdHJ1ZSk7CiAgICAgICAgIGZwdXRjKCcvJywgbV9maWxlKTsKICAgICAg
ICAgaWYgKHJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAgICAgICAgICBmcHV0YygnZycsIG1fZmlsZSk7
CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvcjo6
b3V0cHV0T25lVGVzdChSZWdFeHAqIHJlZ0V4cCwgVVN0cmluZyBzLCBpbnQKICAgICB9CiAKICAg
ICBmcHJpbnRmKG1fZmlsZSwgIiBcIiIpOwotICAgIG91dHB1dEVzY2FwZWRVU3RyaW5nKHMpOwor
ICAgIG91dHB1dEVzY2FwZWRTdHJpbmcocyk7CiAgICAgZnByaW50ZihtX2ZpbGUsICJcIiwgJWQs
ICVkLCAoIiwgc3RhcnRPZmZzZXQsIHJlc3VsdCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7IGkrKykgewogICAgICAgICBpbnQgc3VicGF0
dGVybkJlZ2luID0gb3ZlY3RvcltpICogMl07CkBAIC0xNTksNyArMTU5LDcgQEAgUmVnRXhwRnVu
Y3Rpb25hbFRlc3RDb2xsZWN0b3I6On5SZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3RvcigpCiAg
ICAgc19pbnN0YW5jZSA9IDA7CiB9CiAKLXZvaWQgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0
b3I6Om91dHB1dEVzY2FwZWRVU3RyaW5nKGNvbnN0IFVTdHJpbmcmIHMsIGJvb2wgZXNjYXBlU2xh
c2gpCit2b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpvdXRwdXRFc2NhcGVkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgcywgYm9vbCBlc2NhcGVTbGFzaCkKIHsKICAgICBpbnQgbGVuID0g
cy5sZW5ndGgoKTsKICAgICAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFJlZ0V4cEZ1bmN0aW9u
YWxUZXN0Q29sbGVjdG9yOjpvdXRwdXRFc2NhcGVkVVN0cmluZyhjb25zdCBVU3RyaW5nJiBzLCBi
b29sCiB9CiAjZW5kaWYKIAotUmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKK1JlZ0V4
cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJu
U3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLnJlZ0V4cFN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fc3RhdGUoTm90Q29tcGlsZWQp
CiAgICAgLCBtX3BhdHRlcm5TdHJpbmcocGF0dGVyblN0cmluZykKQEAgLTI1MCwxNCArMjUwLDE0
IEBAIHZvaWQgUmVnRXhwOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICB0aGlzT2JqZWN0LT5S
ZWdFeHA6On5SZWdFeHAoKTsKIH0KIAotUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZVdpdGhvdXRDYWNo
aW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmlu
ZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCitSZWdFeHAqIFJlZ0V4cDo6Y3JlYXRlV2l0aG91dENhY2hp
bmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcs
IFJlZ0V4cEZsYWdzIGZsYWdzKQogewogICAgIFJlZ0V4cCogcmVnRXhwID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8UmVnRXhwPihnbG9iYWxEYXRhLmhlYXApKSBSZWdFeHAoZ2xvYmFsRGF0
YSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwogICAgIHJlZ0V4cC0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsRGF0YSk7CiAgICAgcmV0dXJuIHJlZ0V4cDsKIH0KIAotUmVnRXhwKiBSZWdFeHA6OmNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcs
IFJlZ0V4cEZsYWdzIGZsYWdzKQorUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxh
Z3MpCiB7CiAgICAgcmV0dXJuIGdsb2JhbERhdGEucmVnRXhwQ2FjaGUoKS0+bG9va3VwT3JDcmVh
dGUocGF0dGVyblN0cmluZywgZmxhZ3MpOwogfQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgUmVn
RXhwOjpjb21waWxlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBZYXJyOjpZ
YXJyQ2hhclNpemUgY2hhCiAgICAgY29tcGlsZSgmZ2xvYmFsRGF0YSwgY2hhclNpemUpOwogfQog
Ci1pbnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJp
bmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpCitp
bnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYg
cywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3RvcikKIHsKICNp
ZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgbV9ydE1hdGNoQ2FsbENvdW50Kys7CkBAIC00
NDAsNyArNDQwLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFlhcnI6OllhcnJDaGEKICAgICBjb21waWxlTWF0Y2hP
bmx5KCZnbG9iYWxEYXRhLCBjaGFyU2l6ZSk7CiB9CiAKLU1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0
Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNpZ25lZCBz
dGFydE9mZnNldCkKK01hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQogewogI2lmIEVO
QUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBtX3J0TWF0Y2hDYWxsQ291bnQrKzsKQEAgLTQ5NCw3
ICs0OTQsNyBAQCB2b2lkIFJlZ0V4cDo6aW52YWxpZGF0ZUNvZGUoKQogfQogCiAjaWYgRU5BQkxF
KFlBUlJfSklUX0RFQlVHKQotdm9pZCBSZWdFeHA6Om1hdGNoQ29tcGFyZVdpdGhJbnRlcnByZXRl
cihjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0VmVjdG9yLCBp
bnQgaml0UmVzdWx0KQordm9pZCBSZWdFeHA6Om1hdGNoQ29tcGFyZVdpdGhJbnRlcnByZXRlcihj
b25zdCBTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZzZXRWZWN0b3IsIGludCBq
aXRSZXN1bHQpCiB7CiAgICAgaW50IG9mZnNldFZlY3RvclNpemUgPSAobV9udW1TdWJwYXR0ZXJu
cyArIDEpICogMjsKICAgICBWZWN0b3I8aW50LCAzMj4gaW50ZXJwcmV0ZXJPdmVjdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCBhZDEwMjAzNzZjYjEyYjdlZWEw
ZTlkNjJkYTMyYTY2OWQyNWJhYThiLi4yODc0NDRiOTUyNDEwMDEwNDUxZTcxNGZiMWUzOGM0MGRj
OTY2YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtMjYsMTAg
KzI2LDEwIEBACiAjaW5jbHVkZSAiTWF0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJSZWdFeHBLZXku
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVk
ZSAieWFyci9ZYXJyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5B
QkxFKFlBUlJfSklUKQogI2luY2x1ZGUgInlhcnIvWWFyckpJVC5oIgpAQCAtNDAsMjYgKzQwLDI2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBSZWdFeHBSZXByZXNlbnRhdGlvbjsKICAg
ICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdFeHBGbGFn
cyByZWdFeHBGbGFncyhjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVn
RXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgU3RyaW5nJik7CiAKICAgICBjbGFzcyBSZWdFeHAg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJh
c2U7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3JlYXRlKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3JlYXRlKEpTR2xvYmFsRGF0YSYs
IGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOwogICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIGJvb2wgZ2xvYmFsKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFncyAmIEZsYWdHbG9iYWw7IH0KICAgICAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29u
c3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9CiAgICAgICAgIGJvb2wgbXVs
dGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdNdWx0aWxpbmU7IH0KIAotICAg
ICAgICBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3Ry
aW5nOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVyblN0cmluZzsgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2NvbnN0cnVjdGlvbkVycm9yICYmIG1fZmxhZ3MgIT0gSW52YWxpZEZsYWdzOyB9CiAgICAg
ICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RydWN0
aW9uRXJyb3I7IH0KIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0Y2goSlNHbG9i
YWxEYXRhJiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50
LCAzMj4mIG92ZWN0b3IpOwotICAgICAgICBNYXRjaFJlc3VsdCBtYXRjaChKU0dsb2JhbERhdGEm
LCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBpbnQgbWF0Y2goSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7CisgICAgICAgIE1hdGNo
UmVzdWx0IG1hdGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMoKSBjb25zdCB7IHJldHVy
biBtX251bVN1YnBhdHRlcm5zOyB9CiAKICAgICAgICAgYm9vbCBoYXNDb2RlKCkKQEAgLTg3LDkg
Kzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQg
Y2xhc3MgUmVnRXhwQ2FjaGU7Ci0gICAgICAgIFJlZ0V4cChKU0dsb2JhbERhdGEmLCBjb25zdCBV
U3RyaW5nJiwgUmVnRXhwRmxhZ3MpOworICAgICAgICBSZWdFeHAoSlNHbG9iYWxEYXRhJiwgY29u
c3QgU3RyaW5nJiwgUmVnRXhwRmxhZ3MpOwogCi0gICAgICAgIHN0YXRpYyBSZWdFeHAqIGNyZWF0
ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmLCBSZWdFeHBGbGFn
cyk7CisgICAgICAgIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFs
RGF0YSYsIGNvbnN0IFN0cmluZyYsIFJlZ0V4cEZsYWdzKTsKIAogICAgICAgICBlbnVtIFJlZ0V4
cFN0YXRlIHsKICAgICAgICAgICAgIFBhcnNlRXJyb3IsCkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHko
SlNHbG9iYWxEYXRhJiwgWWFycjo6WWFyckNoYXJTaXplKTsKIAogI2lmIEVOQUJMRShZQVJSX0pJ
VF9ERUJVRykKLSAgICAgICAgdm9pZCBtYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIoY29uc3Qg
VVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZzZXRWZWN0b3IsIGludCBqaXRSZXN1
bHQpOworICAgICAgICB2b2lkIG1hdGNoQ29tcGFyZVdpdGhJbnRlcnByZXRlcihjb25zdCBTdHJp
bmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0VmVjdG9yLCBpbnQgaml0UmVzdWx0KTsK
ICNlbmRpZgogCi0gICAgICAgIFVTdHJpbmcgbV9wYXR0ZXJuU3RyaW5nOworICAgICAgICBTdHJp
bmcgbV9wYXR0ZXJuU3RyaW5nOwogICAgICAgICBSZWdFeHBGbGFncyBtX2ZsYWdzOwogICAgICAg
ICBjb25zdCBjaGFyKiBtX2NvbnN0cnVjdGlvbkVycm9yOwogICAgICAgICB1bnNpZ25lZCBtX251
bVN1YnBhdHRlcm5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2Fj
aGUuY3BwCmluZGV4IDUzYTEzYTRiNTliNzdlNzZhNGI4ODBjZmU3NWIzNjA2Yzg3ZTFmYWQuLmM2
N2RhYjhlNjFlZTAyYTE2OTFhZjQ3OTY3YjBkYmQzOGU5ZTY0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLVJlZ0V4cCogUmVnRXhwQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlKGNv
bnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQorUmVnRXhwKiBS
ZWdFeHBDYWNoZTo6bG9va3VwT3JDcmVhdGUoY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBS
ZWdFeHBGbGFncyBmbGFncykKIHsKICAgICBSZWdFeHBLZXkga2V5KGZsYWdzLCBwYXR0ZXJuU3Ry
aW5nKTsKICAgICBpZiAoUmVnRXhwKiByZWdFeHAgPSBtX3dlYWtDYWNoZS5nZXQoa2V5KSkKQEAg
LTYzLDcgKzYzLDcgQEAgdm9pZCBSZWdFeHBDYWNoZTo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+
IGhhbmRsZSwgdm9pZCopCiAKIHZvaWQgUmVnRXhwQ2FjaGU6OmFkZFRvU3Ryb25nQ2FjaGUoUmVn
RXhwKiByZWdFeHApCiB7Ci0gICAgVVN0cmluZyBwYXR0ZXJuID0gcmVnRXhwLT5wYXR0ZXJuKCk7
CisgICAgU3RyaW5nIHBhdHRlcm4gPSByZWdFeHAtPnBhdHRlcm4oKTsKICAgICBpZiAocGF0dGVy
bi5sZW5ndGgoKSA+IG1heFN0cm9uZ0NhY2hlYWJsZVBhdHRlcm5MZW5ndGgpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX3N0cm9uZ0NhY2hlW21fbmV4dEVudHJ5SW5TdHJvbmdDYWNoZV0uc2V0KCpt
X2dsb2JhbERhdGEsIHJlZ0V4cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ2FjaGUuaAppbmRleCA0ZjNlYTE1MzZhNGVhZTEwZDlkY2JlYjc5NGVjZDc1MTBjMmE2MWY2
Li5jNmE0YTBhYTJhZDBhZGQzNjMwNjFmOWMxZWI0ZWJkYWY5MjVmYTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNp
bmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJv
bmcuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUg
PHd0Zi9GaXhlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU0LDcgKzUz
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpOwogCi0gICAgUmVnRXhwKiBsb29rdXBPckNyZWF0ZShjb25zdCBV
U3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyk7CisgICAgUmVnRXhwKiBsb29rdXBP
ckNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MpOwog
ICAgIHZvaWQgYWRkVG9TdHJvbmdDYWNoZShSZWdFeHAqKTsKICAgICBSZWdFeHBDYWNoZU1hcCBt
X3dlYWtDYWNoZTsgLy8gSG9sZHMgYWxsIHJlZ3VsYXIgZXhwcmVzc2lvbnMgY3VycmVudGx5IGxp
dmUuCiAgICAgaW50IG1fbmV4dEVudHJ5SW5TdHJvbmdDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCAwYjQ2MzQ3
NGYyZjVmOWM4NzY4NDQ3ZDg1YTA2MzgzMWYyMTZhMDA4Li41N2VlN2RmMTRiNDk3NGJkZDQxMmQ0
YzYyMGVlOTRjMDFjMGM4YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgSlNPYmplY3Qq
IGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEEKICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KGFyZzApOwogICAgIH0KIAot
ICAgIFVTdHJpbmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/IFVTdHJpbmcoIiIpIDog
YXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHBhdHRlcm4gPSBh
cmcwLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmgKaW5kZXggZDcxNGYyMTY3OTUzNTZiZDc5Y2EwNTE0YjU4MzFlZmQ4NDkwM2JhMS4uMmNi
MWMxMjA0NGY1MDIzMTU5ODQ0NmJiZmYxMjE4NmRkZWI1YTE3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCkBAIC01NSw4ICs1NSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19p
bmZvOwogCi0gICAgICAgIE1hdGNoUmVzdWx0IHBlcmZvcm1NYXRjaChKU0dsb2JhbERhdGEmLCBS
ZWdFeHAqLCBKU1N0cmluZyosIGNvbnN0IFVTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCoq
IG92ZWN0b3IpOwotICAgICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0Y2goSlNHbG9iYWxEYXRh
JiwgUmVnRXhwKiwgSlNTdHJpbmcqLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYsIFJlZ0V4cCos
IEpTU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqKiBvdmVjdG9y
KTsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYsIFJlZ0V4
cCosIEpTU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0KTsKIAogICAgICAg
ICB2b2lkIHNldE11bHRpbGluZShib29sIG11bHRpbGluZSkgeyBtX211bHRpbGluZSA9IG11bHRp
bGluZTsgfQogICAgICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXVsdGls
aW5lOyB9CkBAIC0xMDEsNyArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICBleHByZXNz
aW9uIG1hdGNoaW5nIHRocm91Z2ggdGhlIHBlcmZvcm1NYXRjaCBmdW5jdGlvbi4gV2UgdXNlIGNh
Y2hlZCByZXN1bHRzIHRvIGNhbGN1bGF0ZSwgCiAgICAgICBlLmcuLCBSZWdFeHAubGFzdE1hdGNo
IGFuZCBSZWdFeHAubGVmdFBhcmVuLgogICAgICovCi0gICAgQUxXQVlTX0lOTElORSBNYXRjaFJl
c3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGlu
cHV0LCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IpCisgICAgQUxXQVlTX0lOTElORSBN
YXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgaW5wdXQsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3RvcikKICAgICB7CiAgICAgICAg
IGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2goZ2xvYmFsRGF0YSwgaW5wdXQsIHN0YXJ0T2Zm
c2V0LCBtX292ZWN0b3IpOwogCkBAIC0xMjAsNyArMTIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHBvc2l0aW9uLCBlbmQpOwogICAgIH0KLSAgICBB
TFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cENvbnN0cnVjdG9yOjpwZXJmb3JtTWF0Y2go
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHJlZ0V4cCwgSlNTdHJpbmcqIHN0cmlu
ZywgY29uc3QgVVN0cmluZyYgaW5wdXQsIGludCBzdGFydE9mZnNldCkKKyAgICBBTFdBWVNfSU5M
SU5FIE1hdGNoUmVzdWx0IFJlZ0V4cENvbnN0cnVjdG9yOjpwZXJmb3JtTWF0Y2goSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHJlZ0V4cCwgSlNTdHJpbmcqIHN0cmluZywgY29uc3Qg
U3RyaW5nJiBpbnB1dCwgaW50IHN0YXJ0T2Zmc2V0KQogICAgIHsKICAgICAgICAgTWF0Y2hSZXN1
bHQgcmVzdWx0ID0gcmVnRXhwLT5tYXRjaChnbG9iYWxEYXRhLCBpbnB1dCwgc3RhcnRPZmZzZXQp
OwogICAgICAgICBpZiAocmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBLZXkuaAppbmRleCBjZGFmZjI3ZjU5YjA2OTNiZmJiNWM4ZGFiNjlmNmM4YzVhYTNhYzlmLi5m
OTNmYmJjMWQ5MGQxNDYzMTQ4ZjE4NDgxYWZlMWFkMDlkYTRiMWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXkuaApAQCAtMjgsOCArMjgsOCBAQAogI2lmbmRlZiBS
ZWdFeHBLZXlfaAogI2RlZmluZSBSZWdFeHBLZXlfaAogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IFJl
Z0V4cEtleSB7CiAgICAgewogICAgIH0KIAotICAgIFJlZ0V4cEtleShSZWdFeHBGbGFncyBmbGFn
cywgY29uc3QgVVN0cmluZyYgcGF0dGVybikKKyAgICBSZWdFeHBLZXkoUmVnRXhwRmxhZ3MgZmxh
Z3MsIGNvbnN0IFN0cmluZyYgcGF0dGVybikKICAgICAgICAgOiBmbGFnc1ZhbHVlKGZsYWdzKQog
ICAgICAgICAsIHBhdHRlcm4ocGF0dGVybi5pbXBsKCkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXggYWVmYTFiNDRhMGI3NWNj
Njc2ZDI0NmRiMzFiMTBiNjM0NzU5YWMwYS4uNmZkOWRiMjljMDRhYTM2YjkzZWJmY2M4YjE1NGZj
ZGZkZTAzYmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuY3BwCkBAIC0zMSw5ICszMSw4IEBACiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90
b3R5cGUuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIlVTdHJpbmdD
b25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTc5LDcgKzE3
OCw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0TXVsdGlsaW5lKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIAogSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVVN0
cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+cGF0dGVy
bigpOworICAgIFN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdF
eHAoKS0+cGF0dGVybigpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoKCk7
CiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwYXR0ZXJuLmNoYXJhY3RlcnMoKTsKICAg
ICBib29sIHByZXZpb3VzQ2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFsc2U7CkBAIC0yMjcsNyAr
MjI2LDcgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiAKICAgICBwcmV2aW91c0NoYXJhY3Rlcldhc0Jh
Y2tzbGFzaCA9IGZhbHNlOwogICAgIGluQnJhY2tldHMgPSBmYWxzZTsKLSAgICBVU3RyaW5nQnVp
bGRlciByZXN1bHQ7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFVDaGFyIGNoID0gY2hhcmFjdGVy
c1tpXTsKICAgICAgICAgaWYgKCFwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCkgewpAQCAt
MjY0LDcgKzI2Myw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgICAgICAgICAgcHJldmlvdXND
aGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBjaCA9PSAnXFwnOwogICAgIH0KIAotICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCByZXN1bHQudG9VU3RyaW5nKCkpOworICAgIHJldHVybiBqc1N0cmluZyhl
eGVjLCByZXN1bHQudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTI4OCw3ICsyODcsNyBAQCBN
YXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcq
IHN0cmluZykKIHsKICAgICBSZWdFeHAqIHJlZ0V4cCA9IHRoaXMtPnJlZ0V4cCgpOwogICAgIFJl
Z0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+cmVnRXhwQ29uc3RydWN0b3IoKTsKLSAgICBVU3RyaW5nIGlucHV0ID0gc3RyaW5n
LT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgaW5wdXQgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwog
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBp
ZiAoIXJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAgICAgIHJldHVybiByZWdFeHBDb25zdHJ1Y3Rvci0+
cGVyZm9ybU1hdGNoKGdsb2JhbERhdGEsIHJlZ0V4cCwgc3RyaW5nLCBpbnB1dCwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRl
eCAyNGM3YzgwMjdjMWQ5MzUzMzczZmMyNzBmY2M5NWQyZjE5M2U3NWJkLi5jMjJlNmQwMzlkMzI5
OTFmMjQ3MmVhOTI1NTUzZTBjMWJhMjM2MTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNs
dWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlN0cmlu
Z1JlY3Vyc2lvbkNoZWNrZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTExMCw3ICsxMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkNh
bm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3Ro
ZXIuIikpOwogICAgICAgICByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChhcmcwKS0+cmVnRXhwKCk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgVVN0cmluZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA/IFVTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IFN0cmlu
ZygiIikgOiBhcmcwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIApAQCAtMTUzLDcgKzE1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICBwb3N0Zml4W2luZGV4KytdID0gJ2knOwogICAgIGlmICh0aGlzT2JqZWN0LT5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLm11bHRpbGluZSkudG9Cb29sZWFuKGV4ZWMpKQogICAgICAg
ICBwb3N0Zml4W2luZGV4XSA9ICdtJzsKLSAgICBVU3RyaW5nIHNvdXJjZSA9IHRoaXNPYmplY3Qt
PmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc291cmNlKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IHRoaXNPYmplY3QtPmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuc291cmNlKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgLy8gSWYgc291cmNlIGlzIGVtcHR5LCB1c2UgIi8oPzopLyIgdG8gYXZvaWQgY29sbGlk
aW5nIHdpdGggY29tbWVudCBzeW50YXgKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFr
ZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIi8iLCBzb3VyY2UsIHBvc3RmaXgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCmluZGV4IGY1MGY3
M2QyN2M3YzAzMGZhZTJhM2RmYjY2NmY1YTRmYWFiNWMyMmUuLjU2YTM1OTI3OWRjY2RmNjVkMWE5
Y2M1YWVlYWY4NmU3ODVlNWZhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU21hbGxTdHJpbmdzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmlu
Z3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCmluZGV4
IGU2MDljNTA5MjIxYzZhYjAwZDZkNTc4YTlmMzM0ZDE2NzRlZDFiMWUuLjViYzlkMjI1MjM5ZmJk
Mzg5MDY2Y2ViNmY0YmM5ZjU5OTcxYzc1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NtYWxsU3RyaW5ncy5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFNtYWxsU3Ry
aW5nc19oCiAjZGVmaW5lIFNtYWxsU3RyaW5nc19oCiAKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNkZWZpbmUgSlNDX0NPTU1PTl9TVFJJTkdTX0VB
Q0hfTkFNRShtYWNybykgXApAQCAtNDEsNiArNDEsMTAgQEAKICAgICBtYWNybyhzdHJpbmcpIFwK
ICAgICBtYWNybyh0cnVlKQogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZ0ltcGw7Cit9
CisKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwpAQCAtNzEs
NyArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX3NpbmdsZUNo
YXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXTsKICAgICAgICAgfQogCi0gICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIFN0cmluZ0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBj
aGFyIGNoYXJhY3Rlcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nSW1w
bCogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyKTsKIAog
ICAgICAgICB2b2lkIGZpbmFsaXplU21hbGxTdHJpbmdzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDNjMDM3YmNkMTdhYzA3YWUz
MGJiYTY4ZjczNzJiODFlNTQ5MWFiZWYuLjZjMWYxNmQ2M2ViN2ZiMjliOGQwNTFkZjE0MGJjZDMw
ZWZkYTI1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVyCiAgICAg
U3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KG9iamVjdCk7
CiAgICAgaW50IHNpemUgPSB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmxlbmd0aCgpOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmc6Om51bWJlcihpKSkpOworICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6bnVtYmVyKGkpKSk7CiAgICAg
aWYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykKICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAgICAgcmV0dXJuIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKaW5kZXggMDAxZTVlOGIwZDFiYTVjZjZlZjFkY2QwMzk5NTRiODJjYmNhOWM1NS4u
ODE3YjA2MTA0OWUwNzE4ZTM1ZWYxM2NlZmVhYTRhN2U0NjIwYWVlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNjIsNyAr
MTYyLDcgQEAgYm9vbCBTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMKIC8vIEhlbHBlciBmb3IgcHJvZHVjaW5n
IGEgSlNTdHJpbmcgZm9yICdzdHJpbmcnLCB3aGVyZSAnc3RyaW5nJyB3YXMgYmVlbiBwcm9kdWNl
ZCBieQogLy8gY2FsbGluZyBUb1N0cmluZyBvbiAnb3JpZ2luYWxWYWx1ZScuIEluIGNhc2VzIHdo
ZXJlICdvcmlnaW5hbFZhbHVlJyBhbHJlYWR5IHdhcyBhCiAvLyBzdHJpbmcgcHJpbWl0aXZlIHdl
IGNhbiBqdXN0IHVzZSB0aGlzLCBvdGhlcndpc2Ugd2UgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyBK
U1N0cmluZy4KLXN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aFJldXNlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcp
CitzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhSZXVzZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAg
aWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBBU1NFUlQoYXNTdHJpbmco
b3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7CkBAIC0xNzIsNyArMTcyLDcg
QEAgc3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdHJpbmdXaXRoUmV1c2UoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgotc3RhdGljIE5FVkVSX0lOTElORSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNl
c1Nsb3coY29uc3QgVVN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZywgc2l6ZV90IGkpCitzdGF0aWMgTkVWRVJf
SU5MSU5FIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93KGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJl
Z0V4cCogcmVnLCBzaXplX3QgaSkKIHsKICAgICBWZWN0b3I8Q2hhclR5cGU+IHN1YnN0aXR1dGVk
UmVwbGFjZW1lbnQ7CiAgICAgaW50IG9mZnNldCA9IDA7CkBAIC0yMzUsMTAgKzIzNSwxMCBAQCBz
dGF0aWMgTkVWRVJfSU5MSU5FIFVTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzU2xvdyhj
b25zdCBVU3RyaW5nJiByZXBsYWNlbQogICAgICAgICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50LmFw
cGVuZChyZXBsYWNlbWVudC5nZXRDaGFyYWN0ZXJzPENoYXJUeXBlPigpICsgb2Zmc2V0LCByZXBs
YWNlbWVudC5sZW5ndGgoKSAtIG9mZnNldCk7CiAKICAgICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50
LnNocmlua1RvRml0KCk7Ci0gICAgcmV0dXJuIFVTdHJpbmc6OmFkb3B0KHN1YnN0aXR1dGVkUmVw
bGFjZW1lbnQpOworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHN1YnN0aXR1dGVkUmVwbGFjZW1l
bnQpOwogfQogCi1zdGF0aWMgaW5saW5lIFVTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2Vz
KGNvbnN0IFVTdHJpbmcmIHJlcGxhY2VtZW50LCBjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcpCitzdGF0aWMgaW5saW5lIFN0cmluZyBzdWJzdGl0
dXRlQmFja3JlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcpCiB7CiAgICAgc2l6ZV90
IGkgPSByZXBsYWNlbWVudC5maW5kKCckJyk7CiAgICAgaWYgKFVOTElLRUxZKGkgIT0gbm90Rm91
bmQpKSB7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIGlubGluZSBVU3RyaW5nIHN1YnN0aXR1
dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBVU3RyaW5nJiByZXBsYWNlbWVudCwgY29uc3QKICAgICBy
ZXR1cm4gcmVwbGFjZW1lbnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGxvY2FsZUNvbXBhcmUo
Y29uc3QgVVN0cmluZyYgYSwgY29uc3QgVVN0cmluZyYgYikKK3N0YXRpYyBpbmxpbmUgaW50IGxv
Y2FsZUNvbXBhcmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpCiB7CiAgICAgcmV0
dXJuIENvbGxhdG9yOjp1c2VyRGVmYXVsdCgpLT5jb2xsYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgOjpVQ2hhcio+KGEuY2hhcmFjdGVycygpKSwgYS5sZW5ndGgoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCA6OlVDaGFyKj4oYi5jaGFyYWN0ZXJzKCkpLCBiLmxlbmd0aCgpKTsKIH0KQEAgLTI3
MCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAgICAgaW50IGxlbmd0aDsKIH07CiAKLXN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNT
dHJpbmcqIHNvdXJjZVZhbCwgY29uc3QgVVN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmdSYW5n
ZSogc3Vic3RyaW5nUmFuZ2VzLCBpbnQgcmFuZ2VDb3VudCkKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNv
dXJjZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJzdHJp
bmdSYW5nZXMsIGludCByYW5nZUNvdW50KQogewogICAgIGlmIChyYW5nZUNvdW50ID09IDEpIHsK
ICAgICAgICAgaW50IHNvdXJjZVNpemUgPSBzb3VyY2UubGVuZ3RoKCk7CkBAIC0yNzgsNyArMjc4
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhl
Y1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmMKICAgICAgICAgaW50IGxlbmd0aCA9IHN1YnN0
cmluZ1Jhbmdlc1swXS5sZW5ndGg7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8PSAwICYmIGxlbmd0
aCA+PSBzb3VyY2VTaXplKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZVZhbDsKLSAgICAgICAg
Ly8gV2UgY291bGQgY2FsbCBVU3RyaW5nOjpzdWJzdHIsIGJ1dCB0aGlzIHdvdWxkIHJlc3VsdCBp
biByZWR1bmRhbnQgY2hlY2tzCisgICAgICAgIC8vIFdlIGNvdWxkIGNhbGwgU3RyaW5nOjpzdWJz
dHJpbmdTaGFyaW5nSW1wbCgpLCBidXQgdGhpcyB3b3VsZCByZXN1bHQgaW4gcmVkdW5kYW50IGNo
ZWNrcy4KICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFN0cmluZ0ltcGw6OmNyZWF0ZShz
b3VyY2UuaW1wbCgpLCBtYXgoMCwgcG9zaXRpb24pLCBtaW4oc291cmNlU2l6ZSwgbGVuZ3RoKSkp
OwogICAgIH0KIApAQCAtMzI1LDcgKzMyNSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJjCiAg
ICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGltcGwucmVsZWFzZSgpKTsKIH0KIAotc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVj
U3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyY2VWYWwsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQsIGNvbnN0
IFVTdHJpbmcqIHNlcGFyYXRvcnMsIGludCBzZXBhcmF0b3JDb3VudCkKK3N0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQsIGNvbnN0IFN0cmlu
Zyogc2VwYXJhdG9ycywgaW50IHNlcGFyYXRvckNvdW50KQogewogICAgIGlmIChyYW5nZUNvdW50
ID09IDEgJiYgc2VwYXJhdG9yQ291bnQgPT0gMCkgewogICAgICAgICBpbnQgc291cmNlU2l6ZSA9
IHNvdXJjZS5sZW5ndGgoKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhl
YywgSgogICAgICAgICBpbnQgbGVuZ3RoID0gc3Vic3RyaW5nUmFuZ2VzWzBdLmxlbmd0aDsKICAg
ICAgICAgaWYgKHBvc2l0aW9uIDw9IDAgJiYgbGVuZ3RoID49IHNvdXJjZVNpemUpCiAgICAgICAg
ICAgICByZXR1cm4gc291cmNlVmFsOwotICAgICAgICAvLyBXZSBjb3VsZCBjYWxsIFVTdHJpbmc6
OnN1YnN0ciwgYnV0IHRoaXMgd291bGQgcmVzdWx0IGluIHJlZHVuZGFudCBjaGVja3MKKyAgICAg
ICAgLy8gV2UgY291bGQgY2FsbCBTdHJpbmc6OnN1YnN0cmluZ1NoYXJpbmdJbXBsKCksIGJ1dCB0
aGlzIHdvdWxkIHJlc3VsdCBpbiByZWR1bmRhbnQgY2hlY2tzLgogICAgICAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgU3RyaW5nSW1wbDo6Y3JlYXRlKHNvdXJjZS5pbXBsKCksIG1heCgwLCBwb3Np
dGlvbiksIG1pbihzb3VyY2VTaXplLCBsZW5ndGgpKSk7CiAgICAgfQogCkBAIC00MDMsNyArNDAz
LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywg
aW1wbC5yZWxlYXNlKCkpOwogfQogCi1zdGF0aWMgTkVWRVJfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IHJlbW92ZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmlu
ZywgY29uc3QgVVN0cmluZyYgc291cmNlLCBSZWdFeHAqIHJlZ0V4cCkKK3N0YXRpYyBORVZFUl9J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2goRXhlY1N0YXRlKiBl
eGVjLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgUmVnRXhwKiByZWdF
eHApCiB7CiAgICAgc2l6ZV90IGxhc3RJbmRleCA9IDA7CiAgICAgdW5zaWduZWQgc3RhcnRQb3Np
dGlvbiA9IDA7CkBAIC00NDQsMTMgKzQ0NCwxMyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIHJlbW92ZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTdAog
c3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdSZWdFeHBTZWFy
Y2goRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCBKU1ZhbHVlIHNlYXJjaFZhbHVl
KQogewogICAgIEpTVmFsdWUgcmVwbGFjZVZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAg
VVN0cmluZyByZXBsYWNlbWVudFN0cmluZzsKKyAgICBTdHJpbmcgcmVwbGFjZW1lbnRTdHJpbmc7
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShyZXBsYWNlVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVOb25lKQogICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKLSAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2UgPSBzdHJp
bmctPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyYgc291cmNlID0gc3RyaW5nLT52YWx1
ZShleGVjKTsKICAgICB1bnNpZ25lZCBzb3VyY2VMZW4gPSBzb3VyY2UubGVuZ3RoKCk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CkBAIC00NzQsNyArNDc0LDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBFbmNv
ZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goRXhlY1N0YXRlKiBleGVjLCBKU1MK
ICAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gMDsKIAogICAgIFZlY3RvcjxTdHJpbmdSYW5n
ZSwgMTY+IHNvdXJjZVJhbmdlczsKLSAgICBWZWN0b3I8VVN0cmluZywgMTY+IHJlcGxhY2VtZW50
czsKKyAgICBWZWN0b3I8U3RyaW5nLCAxNj4gcmVwbGFjZW1lbnRzOwogCiAgICAgLy8gVGhpcyBp
cyBlaXRoZXIgYSBsb29wIChpZiBnbG9iYWwgaXMgc2V0KSBvciBhIG9uZS13YXkgKGlmIG5vdCku
CiAgICAgaWYgKGdsb2JhbCAmJiBjYWxsVHlwZSA9PSBDYWxsVHlwZUpTKSB7CkBAIC02MDEsNyAr
NjAxLDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdS
ZWdFeHBTZWFyY2goRXhlY1N0YXRlKiBleGVjLCBKU1MKICAgICAgICAgICAgICAgICAgICAgaWYg
KHJlcGxMZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKHN1
YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhyZXBsYWNlbWVudFN0cmluZywgc291cmNlLCBvdmVjdG9y
LCByZWdFeHApKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChVU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogCkBAIC02MjgsOCArNjI4LDggQEAgc3RhdGljIE5FVkVSX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goRXhlY1N0YXRlKiBleGVjLCBK
U1MKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlVXNpbmdTdHJpbmdTZWFy
Y2goRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyoganNTdHJpbmcsIEpTVmFsdWUgc2VhcmNoVmFs
dWUpCiB7Ci0gICAgY29uc3QgVVN0cmluZyYgc3RyaW5nID0ganNTdHJpbmctPnZhbHVlKGV4ZWMp
OwotICAgIFVTdHJpbmcgc2VhcmNoU3RyaW5nID0gc2VhcmNoVmFsdWUudG9VU3RyaW5nKGV4ZWMp
OworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0ganNTdHJpbmctPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBzZWFyY2hWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC02NTEsMTkgKzY1MSwxOSBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChFeGVjU3Rh
dGUqIGV4ZWMsIEpTU3RyaW5nKgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBVU3RyaW5nIHJlcGxhY2VTdHJpbmcgPSByZXBs
YWNlVmFsdWUudG9VU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyByZXBsYWNlU3RyaW5nID0gcmVw
bGFjZVZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKICAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RyaW5nLmltcGwoKTsKLSAgICBV
U3RyaW5nIGxlZnRQYXJ0KFN0cmluZ0ltcGw6OmNyZWF0ZShzdHJpbmdJbXBsLCAwLCBtYXRjaFN0
YXJ0KSk7CisgICAgU3RyaW5nIGxlZnRQYXJ0KFN0cmluZ0ltcGw6OmNyZWF0ZShzdHJpbmdJbXBs
LCAwLCBtYXRjaFN0YXJ0KSk7CiAKICAgICBzaXplX3QgbWF0Y2hFbmQgPSBtYXRjaFN0YXJ0ICsg
c2VhcmNoU3RyaW5nLmltcGwoKS0+bGVuZ3RoKCk7CiAgICAgaW50IG92ZWN0b3JbMl0gPSB7IG1h
dGNoU3RhcnQsICBtYXRjaEVuZH07Ci0gICAgVVN0cmluZyBtaWRkbGVQYXJ0ID0gc3Vic3RpdHV0
ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2VTdHJpbmcsIHN0cmluZywgb3ZlY3RvciwgMCk7CisgICAg
U3RyaW5nIG1pZGRsZVBhcnQgPSBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMocmVwbGFjZVN0cmlu
Zywgc3RyaW5nLCBvdmVjdG9yLCAwKTsKIAogICAgIHNpemVfdCBsZWZ0TGVuZ3RoID0gc3RyaW5n
SW1wbC0+bGVuZ3RoKCkgLSBtYXRjaEVuZDsKLSAgICBVU3RyaW5nIHJpZ2h0UGFydChTdHJpbmdJ
bXBsOjpjcmVhdGUoc3RyaW5nSW1wbCwgbWF0Y2hFbmQsIGxlZnRMZW5ndGgpKTsKKyAgICBTdHJp
bmcgcmlnaHRQYXJ0KFN0cmluZ0ltcGw6OmNyZWF0ZShzdHJpbmdJbXBsLCBtYXRjaEVuZCwgbGVm
dExlbmd0aCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNDOjpqc1N0cmluZyhleGVj
LCBsZWZ0UGFydCwgbWlkZGxlUGFydCwgcmlnaHRQYXJ0KSk7CiB9CiAKQEAgLTY5OSw3ICs2OTks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09i
amVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAg
ICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICB1
bnNpZ25lZCBsZW4gPSBzLmxlbmd0aCgpOwogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAoYTAuaXNVSW50MzIoKSkgewpAQCAtNzE5LDcgKzcxOSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENv
ZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICB1bnNpZ25l
ZCBsZW4gPSBzLmxlbmd0aCgpOwogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAoYTAuaXNVSW50MzIoKSkgewpAQCAtNzUzLDExICs3NTMsMTEgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBp
ZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxl
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9
IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0
aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBhMCA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsK
LSAgICBVU3RyaW5nIHUyID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0
cmluZyB1MiA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAgIHNpemVfdCBy
ZXN1bHQ7CiAgICAgaWYgKGExLmlzVW5kZWZpbmVkKCkpCkBAIC03ODgsMTMgKzc4OCwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFs
dWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2Jq
ZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAg
IFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
U3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlu
dCBsZW4gPSBzLmxlbmd0aCgpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OwogICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsKIAotICAgIFVTdHJpbmcgdTIg
PSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHUyID0gYTAudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGRvdWJsZSBkcG9zID0gYTEudG9JbnRlZ2Vy
UHJlc2VydmVOYU4oZXhlYyk7CiAgICAgaWYgKGRwb3MgPCAwKQogICAgICAgICBkcG9zID0gMDsK
QEAgLTgxMyw3ICs4MTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY01hdGNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gc3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1
bWVudCgwKTsKQEAgLTgzNiw3ICs4MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY01hdGNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICogIHJlcGxh
Y2VkIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBuZXcgUmVnRXhwKHJlZ2V4cCku
CiAgICAgICAgICAqICBQZXIgRUNNQSAxNS4xMC40LjEsIGlmIGEwIGlzIHVuZGVmaW5lZCBzdWJz
dGl0dXRlIHRoZSBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAqLwotICAgICAgICByZWdFeHAgPSBS
ZWdFeHA6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGEwLmlzVW5kZWZpbmVkKCkgPyBVU3Ry
aW5nKCIiKSA6IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgTm9GbGFncyk7CisgICAg
ICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgYTAuaXNVbmRl
ZmluZWQoKSA/IFN0cmluZygiIikgOiBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIE5v
RmxhZ3MpOwogICAgICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVy
cm9yTWVzc2FnZSgpKSk7CiAgICAgfQpAQCAtODcyLDcgKzg3Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNp
YmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpTU3RyaW5n
KiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gc3Ry
aW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CiAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIAogICAg
IEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTg4Nyw3ICs4ODcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NlYXJjaChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAqICByZXBsYWNlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGV4cHJl
c3Npb24gbmV3IFJlZ0V4cChyZWdleHApLgogICAgICAgICAgKiAgUGVyIEVDTUEgMTUuMTAuNC4x
LCBpZiBhMCBpcyB1bmRlZmluZWQgc3Vic3RpdHV0ZSB0aGUgZW1wdHkgc3RyaW5nLgogICAgICAg
ICAgKi8KLSAgICAgICAgcmVnID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBh
MC5pc1VuZGVmaW5lZCgpID8gVVN0cmluZygiIikgOiBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksIE5vRmxhZ3MpOworICAgICAgICByZWcgPSBSZWdFeHA6OmNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIGEwLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoIiIpIDogYTAudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLCBOb0ZsYWdzKTsKICAgICAgICAgaWYgKCFyZWctPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgcmVnLT5lcnJvck1lc3NhZ2UoKSkpOwogICAgIH0KQEAgLTkwMSw3ICs5MDEsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
ICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29l
cmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJp
bmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGludCBsZW4g
PSBzLmxlbmd0aCgpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAt
OTI1LDcgKzkyNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogCiAvLyBSZXR1cm4gdHJ1ZSBpbiBjYXNlIG9mIGVh
cmx5IHJldHVybiAocmVzdWx0TGVuZ3RoIGdvdCB0byBsaW1pdExlbmd0aCkuCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGxpdFN0
cmluZ0J5T25lQ2hhcmFjdGVySW1wbChFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIHJlc3VsdCwg
Y29uc3QgVVN0cmluZyYgaW5wdXQsIFN0cmluZ0ltcGwqIHN0cmluZywgVUNoYXIgc2VwYXJhdG9y
Q2hhcmFjdGVyLCBzaXplX3QmIHBvc2l0aW9uLCB1bnNpZ25lZCYgcmVzdWx0TGVuZ3RoLCB1bnNp
Z25lZCBsaW1pdExlbmd0aCkKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdC
eU9uZUNoYXJhY3RlckltcGwoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiByZXN1bHQsIGNvbnN0
IFN0cmluZyYgaW5wdXQsIFN0cmluZ0ltcGwqIHN0cmluZywgVUNoYXIgc2VwYXJhdG9yQ2hhcmFj
dGVyLCBzaXplX3QmIHBvc2l0aW9uLCB1bnNpZ25lZCYgcmVzdWx0TGVuZ3RoLCB1bnNpZ25lZCBs
aW1pdExlbmd0aCkKIHsKICAgICAvLyAxMi4gTGV0IHEgPSBwLgogICAgIHNpemVfdCBtYXRjaFBv
c2l0aW9uOwpAQCAtOTYyLDcgKzk2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jU3BsaXQoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gMi4gTGV0IFMg
YmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvU3RyaW5nLCBnaXZpbmcgaXQgdGhlIHRoaXMgdmFs
dWUgYXMgaXRzIGFyZ3VtZW50LgogICAgIC8vIDYuIExldCBzIGJlIHRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyBpbiBTLgotICAgIFVTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBpbnB1dCA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICAvLyAzLiBMZXQgQSBiZSBhIG5ldyBhcnJheSBjcmVh
dGVkIGFzIGlmIGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJheSgpCiAgICAgLy8gICAgd2hlcmUg
QXJyYXkgaXMgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIGNvbnN0cnVjdG9yIHdpdGggdGhhdCBuYW1l
LgpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTcGxpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewotICAgICAgICBVU3RyaW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHNlcGFyYXRv
ciA9IHNlcGFyYXRvclZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAgICAg
ICAvLyA5LiBJZiBsaW0gPT0gMCwgcmV0dXJuIEEuCiAgICAgICAgIGlmICghbGltaXQpCkBAIC0x
MTY3LDcgKzExNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1N1YnN0cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgdW5zaWduZWQgbGVuOwogICAgIEpTU3RyaW5nKiBqc1N0
cmluZyA9IDA7Ci0gICAgVVN0cmluZyB1U3RyaW5nOworICAgIFN0cmluZyB1U3RyaW5nOwogICAg
IGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBqc1N0cmluZyA9IGpzQ2FzdDxK
U1N0cmluZyo+KHRoaXNWYWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGxlbiA9IGpzU3RyaW5nLT5s
ZW5ndGgoKTsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICh0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgSlNTdHJpbmcqIHNWYWwg
PSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7Ci0gICAgY29uc3QgVVN0cmluZyYgcyA9IHNWYWwt
PnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwog
CiAgICAgaW50IHNTaXplID0gcy5sZW5ndGgoKTsKICAgICBpZiAoIXNTaXplKQpAQCAtMTI1Nyw3
ICsxMjU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNU
b0xvd2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2Vy
ID0gb3VySW1wbC0+bG93ZXIoKTsKICAgICBpZiAob3VySW1wbCA9PSBsb3dlcikKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmcobG93ZXIucmVsZWFzZSgpKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5nKGxvd2VyLnJlbGVhc2UoKSkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVy
Q2FzZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0
Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpT
U3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwotICAgIGNvbnN0IFVTdHJp
bmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52
YWx1ZShleGVjKTsKIAogICAgIGludCBzU2l6ZSA9IHMubGVuZ3RoKCk7CiAgICAgaWYgKCFzU2l6
ZSkKQEAgLTEyNzYsNyArMTI3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIFJlZlB0cjxTdHJp
bmdJbXBsPiB1cHBlciA9IHNJbXBsLT51cHBlcigpOwogICAgIGlmIChzSW1wbCA9PSB1cHBlcikK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzVmFsKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmcodXBwZXIucmVsZWFzZSgpKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5nKHVwcGVyLnJlbGVh
c2UoKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTEyODcsNyArMTI4Nyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09i
amVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAg
ICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAg
IEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGxvY2FsZUNvbXBhcmUocywgYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSkpOwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNCaWcoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2
aWFsU3RyaW5nKGV4ZWMsICI8YmlnPiIsIHMsICI8L2JpZz4iKSk7CiB9CiAKQEAgLTEzMDcsNyAr
MTMwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU21h
bGwoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRo
aXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hl
Y2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8
c21hbGw+IiwgcywgIjwvc21hbGw+IikpOwogfQogCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0JsaW5rKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNp
YmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMg
PSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGJsaW5rPiIsIHMsICI8
L2JsaW5rPiIpKTsKIH0KIApAQCAtMTMyNSw3ICsxMzI1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNCb2xkKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNN
YWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGI+IiwgcywgIjwvYj4iKSk7CiB9CiAKQEAgLTEz
MzQsNyArMTMzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkg
Ly8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4
ZWMsICI8dHQ+IiwgcywgIjwvdHQ+IikpOwogfQogCkBAIC0xMzQzLDcgKzEzNDMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0YWxpY3MoRXhlY1N0YXRl
KiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwog
ICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2Vy
Y2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmlu
ZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8aT4iLCBzLCAiPC9p
PiIpKTsKIH0KIApAQCAtMTM1Miw3ICsxMzUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTdHJpa2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGV4ZWMsICI8c3RyaWtlPiIsIHMsICI8L3N0cmlrZT4iKSk7CiB9CiAK
QEAgLTEzNjEsNyArMTM2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jU3ViKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCAiPHN1Yj4iLCBzLCAiPC9zdWI+IikpOwogfQogCkBAIC0xMzcwLDcgKzEzNzAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1cChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENv
ZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxzdXA+Iiwgcywg
Ijwvc3VwPiIpKTsKIH0KIApAQCAtMTM3OSw3ICsxMzc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlz
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFy
Z3VtZW50KDApOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0
cmluZyhleGVjLCAiPGZvbnQgY29sb3I9XCIiLCBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YyksICJcIj4iLCBzLCAiPC9mb250PiIpKTsKIH0KQEAgLTEzODksNyArMTM4OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRl
KiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwog
ICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2Vy
Y2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmlu
ZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgSlNWYWx1ZSBh
MCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogCiAgICAgdWludDMyX3Qgc21hbGxJbnRlZ2VyOwpAQCAt
MTQzNCw3ICsxNDM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGEgbmFtZT1cIiIs
IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2E+IikpOwogfQpA
QCAtMTQ0NCw5ICsxNDQ0LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNMaW5rKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBVU3RyaW5n
IGxpbmtUZXh0ID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBs
aW5rVGV4dCA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAgIHVuc2lnbmVk
IGxpbmtUZXh0U2l6ZSA9IGxpbmtUZXh0Lmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIHN0cmluZ1Np
emUgPSBzLmxlbmd0aCgpOwpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIHRyaW1TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IHRy
aW1LaW4KIHsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNr
T2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKLSAg
ICBVU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cisg
ICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgdW5zaWduZWQgbGVmdCA9IDA7CiAgICAgaWYgKHRyaW1LaW5kICYgVHJpbUxlZnQpIHsKICAg
ICAgICAgd2hpbGUgKGxlZnQgPCBzdHIubGVuZ3RoKCkgJiYgaXNUcmltV2hpdGVzcGFjZShzdHJb
bGVmdF0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCBl
M2EyNWJiODcxYzUzMjdmMWE3MjVjMjc4ZmFlZTBiNjYyYjQ4ZjcyLi41NzM2OGJlZThjYzUzYjFj
MWE2ZWJiZTA5YjM3YWE5MjY4ZGM3ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaApAQCAtMzYsMTIgKzM2LDEyIEBACiAjaW5jbHVkZSAiUHJvdGVjdC5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgogI2luY2x1ZGUgIkpTVHlwZUlu
Zm8uaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2lu
Y2x1ZGUgIldlYWsuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0yNTksNyArMjU5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAKICAgICAgICAgUHJvcGVy
dHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSk7Ci0gICAgICAgIFByb3Bl
cnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBuYW1lKTsKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xv
YmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNw
ZWNpZmljVmFsdWUpOwogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
IGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQpAQCAtNTAxLDcg
KzUwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+
b2Zmc2V0IDogaW52YWxpZE9mZnNldDsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBuYW1lKQorICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKICAgICAgICAg
bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAppbmRleCAyMDY3YTg5OTU0NmY3ODhhNzlhNDc3ZTdkODBkYzdmMGUyMWRiMjYwLi43Yzlk
NTA4OTRlM2VjOWYyZWE3MjY2NDhiYWFjMzJiZTMwYzNhNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaApA
QCAtMjYsMTEgKzI2LDExIEBACiAjaWZuZGVmIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZV9oCiAj
ZGVmaW5lIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZV9oCiAKLSNpbmNsdWRlICJVU3RyaW5nLmgi
CiAjaW5jbHVkZSAiV2Vha0dDTWFwLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IGIzY2YyMDI5ZWFiZDY4
NGJhNDc0YTc2NWU2MWU2YzNhOTNlYTU4ZjcuLjA4ZWE4YzE2MzA4YTMyYmVkNzc1MDUyZWE1M2Jh
M2M3NzRiMzA0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaApAQCAtMzAsMTAgKzMwLDEwIEBACiAjZGVmaW5lIFN5bWJvbFRhYmxlX2gKIAogI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5n
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTU3MzVjNGRmN2MwYWExMmZlMTA1ZGY3YTRkNGZmNWU4
ZTQzOTg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzYyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENv
cHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2Ep
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5o
IgotCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJIZWFw
LmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKLSNp
bmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvZHRvYS5o
PgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KLQotI2lmIEhBVkUoU1RSSU5HU19IKQot
I2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2UgV1RGOwotdXNp
bmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi1DT01QSUxFX0FTU0VSVChzaXplb2YoVVN0cmluZykgPT0gc2l6ZW9mKHZv
aWQqKSwgVVN0cmluZ19zaG91bGRfc3RheV9zbWFsbCk7Ci0KLS8vIENvbnN0cnVjdCBhIHN0cmlu
ZyB3aXRoIFVURi0xNiBkYXRhLgotVVN0cmluZzo6VVN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogbV9pbXBsKGNoYXJhY3RlcnMgPyBTdHJpbmdJ
bXBsOjpjcmVhdGUoY2hhcmFjdGVycywgbGVuZ3RoKSA6IDApCi17Ci19Ci0KLS8vIENvbnN0cnVj
dCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJj
ZS4KLVVTdHJpbmc6OlVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMpCi17Ci0gICAgaWYg
KCFjaGFyYWN0ZXJzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnQgbGVuZ3RoID0gMDsKLSAg
ICB3aGlsZSAoY2hhcmFjdGVyc1tsZW5ndGhdICE9IFVDaGFyKDApKQotICAgICAgICArK2xlbmd0
aDsKLQotICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShjaGFyYWN0ZXJzLCBsZW5ndGgp
OwotfQotCi0vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLVVTdHJpbmc6
OlVTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6
IG1faW1wbChjaGFyYWN0ZXJzID8gU3RyaW5nSW1wbDo6Y3JlYXRlKGNoYXJhY3RlcnMsIGxlbmd0
aCkgOiAwKQotewotfQotCi1VU3RyaW5nOjpVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IG1faW1wbChjaGFyYWN0ZXJzID8gU3RyaW5nSW1wbDo6
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3Ro
KSA6IDApCi17Ci19Ci0KLS8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBm
cm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLVVTdHJpbmc6OlVTdHJpbmcoY29uc3QgTENo
YXIqIGNoYXJhY3RlcnMpCi0gICAgOiBtX2ltcGwoY2hhcmFjdGVycyA/IFN0cmluZ0ltcGw6OmNy
ZWF0ZShjaGFyYWN0ZXJzKSA6IDApCi17Ci19Ci0KLVVTdHJpbmc6OlVTdHJpbmcoY29uc3QgY2hh
ciogY2hhcmFjdGVycykKLSAgICA6IG1faW1wbChjaGFyYWN0ZXJzID8gU3RyaW5nSW1wbDo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSkgOiAwKQotewot
fQotCi1VU3RyaW5nIFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGUgZCkK
LXsKLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0dXJuIFVTdHJpbmco
bnVtYmVyVG9TdHJpbmcoZCwgYnVmZmVyKSk7Ci19Ci0KLVVTdHJpbmcgVVN0cmluZzo6c3Vic3Ry
aW5nU2hhcmluZ0ltcGwodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17
Ci0gICAgLy8gRklYTUU6IFdlIHVzZWQgdG8gY2hlY2sgYWdhaW5zdCBhIGxpbWl0IG9mIEhlYXA6
Om1pbkV4dHJhQ29zdCAvIHNpemVvZihVQ2hhcikuCi0KLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5n
dGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICBvZmZzZXQgPSBtaW4ob2Zmc2V0LCBzdHJpbmdMZW5n
dGgpOwotICAgIGxlbmd0aCA9IG1pbihsZW5ndGgsIHN0cmluZ0xlbmd0aCAtIG9mZnNldCk7Ci0K
LSAgICBpZiAoIW9mZnNldCAmJiBsZW5ndGggPT0gc3RyaW5nTGVuZ3RoKQotICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgcmV0dXJuIFVTdHJpbmcoU3RyaW5nSW1wbDo6Y3JlYXRlKG1faW1wbCwg
b2Zmc2V0LCBsZW5ndGgpKTsKLX0KLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMx
LCBjb25zdCBjaGFyICpzMikKLXsKLSAgICBpZiAoczEuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gIXMyOwotCi0gICAgcmV0dXJuIGVxdWFsKHMxLmltcGwoKSwgczIpOwotfQotCi0vLyBUaGlz
IG1ldGhvZCBhc3N1bWVzIHRoYXQgYWxsIHNpbXBsZSBjaGVja3MgaGF2ZSBiZWVuIHBlcmZvcm1l
ZCBieQotLy8gdGhlIGlubGluZWQgb3BlcmF0b3I9PSgpIGluIHRoZSBoZWFkZXIgZmlsZS4KLWJv
b2wgZXF1YWxTbG93Q2FzZShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCi17
Ci0gICAgU3RyaW5nSW1wbCogcmVwMSA9IHMxLmltcGwoKTsKLSAgICBTdHJpbmdJbXBsKiByZXAy
ID0gczIuaW1wbCgpOwotICAgIHVuc2lnbmVkIHNpemUxID0gcmVwMS0+bGVuZ3RoKCk7Ci0KLSAg
ICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgCi0gICAgLy8gICAoYSkgdGhhdCB0aGUgc3RyaW5n
cyBhcmUgdGhlIHNhbWUgbGVuZ3RoIGFuZAotICAgIC8vICAgKGIpIHRoYXQgdGhleSBhcmUgZ3Jl
YXRlciB0aGFuIHplcm8gbGVuZ3RoLgotICAgIGJvb2wgczFJczhCaXQgPSByZXAxLT5pczhCaXQo
KTsKLSAgICBib29sIHMySXM4Qml0ID0gcmVwMi0+aXM4Qml0KCk7Ci0gICAgCi0gICAgaWYgKHMx
SXM4Qml0KSB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBkMSA9IHJlcDEtPmNoYXJhY3RlcnM4KCk7
Ci0gICAgICAgIGlmIChzMklzOEJpdCkgewotICAgICAgICAgICAgY29uc3QgTENoYXIqIGQyID0g
cmVwMi0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGQxID09
IGQyKSAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGRhdGEgcG9pbnRlcnMgYXJlIHRoZSBzYW1lLgot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAv
LyBEbyBxdWljayBjaGVja3MgZm9yIHNpemVzIDEgYW5kIDIuCi0gICAgICAgICAgICBzd2l0Y2gg
KHNpemUxKSB7Ci0gICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGQx
WzBdID09IGQyWzBdOwotICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIHJldHVy
biAoZDFbMF0gPT0gZDJbMF0pICYgKGQxWzFdID09IGQyWzFdKTsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICghbWVtY21wKGQxLCBkMiwgc2l6ZTEgKiBzaXpl
b2YoTENoYXIpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGNvbnN0IFVDaGFyKiBkMiA9IHJlcDItPmNoYXJhY3RlcnMxNigpOwotICAgICAgICAKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemUxOyBpKyspIHsKLSAgICAgICAgICAgIGlm
IChkMVtpXSAhPSBkMltpXSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIGlmIChzMklzOEJpdCkg
ewotICAgICAgICBjb25zdCBVQ2hhciogZDEgPSByZXAxLT5jaGFyYWN0ZXJzMTYoKTsKLSAgICAg
ICAgY29uc3QgTENoYXIqIGQyID0gcmVwMi0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAgCi0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplMTsgaSsrKSB7Ci0gICAgICAgICAgICBp
ZiAoZDFbaV0gIT0gZDJbaV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKLSAgICB9Ci0gICAgCi0gICAgY29u
c3QgVUNoYXIqIGQxID0gcmVwMS0+Y2hhcmFjdGVyczE2KCk7Ci0gICAgY29uc3QgVUNoYXIqIGQy
ID0gcmVwMi0+Y2hhcmFjdGVyczE2KCk7Ci0gICAgCi0gICAgaWYgKGQxID09IGQyKSAvLyBDaGVj
ayB0byBzZWUgaWYgdGhlIGRhdGEgcG9pbnRlcnMgYXJlIHRoZSBzYW1lLgotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAKLSAgICAvLyBEbyBxdWljayBjaGVja3MgZm9yIHNpemVzIDEgYW5kIDIu
Ci0gICAgc3dpdGNoIChzaXplMSkgewotICAgIGNhc2UgMToKLSAgICAgICAgcmV0dXJuIGQxWzBd
ID09IGQyWzBdOwotICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIChkMVswXSA9PSBkMlswXSkg
JiAoZDFbMV0gPT0gZDJbMV0pOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAoIW1lbWNt
cChkMSwgZDIsIHNpemUxICogc2l6ZW9mKFVDaGFyKSkpOwotICAgIH0KLX0KLQotYm9vbCBvcGVy
YXRvcjwoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIGNvbnN0
IHVuc2lnbmVkIGwxID0gczEubGVuZ3RoKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgbDIgPSBzMi5s
ZW5ndGgoKTsKLSAgICBjb25zdCB1bnNpZ25lZCBsbWluID0gbDEgPCBsMiA/IGwxIDogbDI7Ci0g
ICAgaWYgKHMxLmlzOEJpdCgpICYmIHMyLmlzOEJpdCgpKSB7Ci0gICAgICAgIGNvbnN0IExDaGFy
KiBjMSA9IHMxLmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBjMiA9IHMyLmNo
YXJhY3RlcnM4KCk7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgICAgIHdoaWxl
IChsZW5ndGggPCBsbWluICYmICpjMSA9PSAqYzIpIHsKLSAgICAgICAgICAgIGMxKys7Ci0gICAg
ICAgICAgICBjMisrOwotICAgICAgICAgICAgbGVuZ3RoKys7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGxlbmd0aCA8IGxtaW4pCi0gICAgICAgICAgICByZXR1cm4gKGMxWzBdIDwgYzJbMF0pOwot
Ci0gICAgICAgIHJldHVybiAobDEgPCBsMik7ICAgICAgICAKLSAgICB9Ci0gICAgY29uc3QgVUNo
YXIqIGMxID0gczEuY2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBjMiA9IHMyLmNoYXJh
Y3RlcnMoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwotICAgIHdoaWxlIChsZW5ndGggPCBs
bWluICYmICpjMSA9PSAqYzIpIHsKLSAgICAgICAgYzErKzsKLSAgICAgICAgYzIrKzsKLSAgICAg
ICAgbGVuZ3RoKys7Ci0gICAgfQotICAgIGlmIChsZW5ndGggPCBsbWluKQotICAgICAgICByZXR1
cm4gKGMxWzBdIDwgYzJbMF0pOwotCi0gICAgcmV0dXJuIChsMSA8IGwyKTsKLX0KLQotYm9vbCBv
cGVyYXRvcj4oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIGNv
bnN0IHVuc2lnbmVkIGwxID0gczEubGVuZ3RoKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgbDIgPSBz
Mi5sZW5ndGgoKTsKLSAgICBjb25zdCB1bnNpZ25lZCBsbWluID0gbDEgPCBsMiA/IGwxIDogbDI7
Ci0gICAgY29uc3QgVUNoYXIqIGMxID0gczEuY2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFy
KiBjMiA9IHMyLmNoYXJhY3RlcnMoKTsKLSAgICB1bnNpZ25lZCBsID0gMDsKLSAgICB3aGlsZSAo
bCA8IGxtaW4gJiYgKmMxID09ICpjMikgewotICAgICAgICBjMSsrOwotICAgICAgICBjMisrOwot
ICAgICAgICBsKys7Ci0gICAgfQotICAgIGlmIChsIDwgbG1pbikKLSAgICAgICAgcmV0dXJuIChj
MVswXSA+IGMyWzBdKTsKLQotICAgIHJldHVybiAobDEgPiBsMik7Ci19Ci0KLUNTdHJpbmcgVVN0
cmluZzo6YXNjaWkoKSBjb25zdAotewotICAgIC8vIEJhc2ljIExhdGluMSAoSVNPKSBlbmNvZGlu
ZyAtIFVuaWNvZGUgY2hhcmFjdGVycyAwLi4yNTUgYXJlCi0gICAgLy8gcHJlc2VydmVkLCBjaGFy
YWN0ZXJzIG91dHNpZGUgb2YgdGhpcyByYW5nZSBhcmUgY29udmVydGVkIHRvICc/Jy4KLQotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotCi0gICAgaWYgKHRoaXMtPmlzOEJp
dCgpKSB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVy
czgoKTsKLSAgICAgICAgCi0gICAgICAgIGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKLSAgICAgICAg
Q1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxlbmd0aCwgY2hhcmFj
dGVyQnVmZmVyKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgTENoYXIgY2ggPSBjaGFyYWN0ZXJzW2ldOwotICAg
ICAgICAgICAgY2hhcmFjdGVyQnVmZmVyW2ldID0gY2ggJiYgKGNoIDwgMHgyMCB8fCBjaCA+IDB4
N2YpID8gJz8nIDogY2g7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiByZXN1
bHQ7ICAgICAgICAKLSAgICB9Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMt
PmNoYXJhY3RlcnMxNigpOwotCi0gICAgY2hhciogY2hhcmFjdGVyQnVmZmVyOwotICAgIENTdHJp
bmcgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChsZW5ndGgsIGNoYXJhY3RlckJ1
ZmZlcik7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgVUNoYXIgY2ggPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBjaGFyYWN0ZXJCdWZmZXJb
aV0gPSBjaCAmJiAoY2ggPCAweDIwIHx8IGNoID49IDB4N2YpID8gJz8nIDogY2g7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQ1N0cmluZyBVU3RyaW5nOjpsYXRpbjEoKSBjb25z
dAotewotICAgIC8vIEJhc2ljIExhdGluMSAoSVNPKSBlbmNvZGluZyAtIFVuaWNvZGUgY2hhcmFj
dGVycyAwLi4yNTUgYXJlCi0gICAgLy8gcHJlc2VydmVkLCBjaGFyYWN0ZXJzIG91dHNpZGUgb2Yg
dGhpcyByYW5nZSBhcmUgY29udmVydGVkIHRvICc/Jy4KLQotICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRoaXMtPmxlbmd0aCgpOwotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hh
cmFjdGVycygpOwotCi0gICAgY2hhciogY2hhcmFjdGVyQnVmZmVyOwotICAgIENTdHJpbmcgcmVz
dWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChsZW5ndGgsIGNoYXJhY3RlckJ1ZmZlcik7
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
VUNoYXIgY2ggPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBjaGFyYWN0ZXJCdWZmZXJbaV0gPSBj
aCA+IDB4ZmYgPyAnPycgOiBjaDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0v
LyBIZWxwZXIgdG8gd3JpdGUgYSB0aHJlZS1ieXRlIFVURi04IGNvZGUgcG9pbnQgdG8gdGhlIGJ1
ZmZlciwgY2FsbGVyIG11c3QgY2hlY2sgcm9vbSBpcyBhdmFpbGFibGUuCi1zdGF0aWMgaW5saW5l
IHZvaWQgcHV0VVRGOFRyaXBsZShjaGFyKiYgYnVmZmVyLCBVQ2hhciBjaCkKLXsKLSAgICBBU1NF
UlQoY2ggPj0gMHgwODAwKTsKLSAgICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPigoKGNo
ID4+IDEyKSAmIDB4MEYpIHwgMHhFMCk7Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hh
cj4oKChjaCA+PiA2KSAmIDB4M0YpIHwgMHg4MCk7Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nh
c3Q8Y2hhcj4oKGNoICYgMHgzRikgfCAweDgwKTsKLX0KLQotQ1N0cmluZyBVU3RyaW5nOjp1dGY4
KGJvb2wgc3RyaWN0KSBjb25zdAotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXMtPmxlbmd0
aCgpOwotCi0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBDU3RyaW5nKCIiLCAwKTsK
LQotICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNo
YXJhY3RlcnMKLSAgICAvLyAoYW4gaW5kaXZpZHVhbCBVVEYtMTYgVUNoYXIgY2FuIG9ubHkgZXhw
YW5kIHRvIDMgVVRGLTggYnl0ZXMpLgotICAgIC8vIE9wdGltaXphdGlvbiBpZGVhcywgaWYgd2Ug
ZmluZCB0aGlzIGZ1bmN0aW9uIGlzIGhvdDoKLSAgICAvLyAgKiBXZSBjb3VsZCBzcGVjdWxhdGl2
ZWx5IGNyZWF0ZSBhIENTdHJpbmdCdWZmZXIgdG8gY29udGFpbiAnbGVuZ3RoJyAKLSAgICAvLyAg
ICBjaGFyYWN0ZXJzLCBhbmQgcmVzaXplIGlmIG5lY2Vzc2FyeSAoaS5lLiBpZiB0aGUgYnVmZmVy
IGNvbnRhaW5zCi0gICAgLy8gICAgbm9uLWFzY2lpIGNoYXJhY3RlcnMpLiAoQWx0ZXJuYXRpdmVs
eSwgc2NhbiB0aGUgYnVmZmVyIGZpcnN0IGZvcgotICAgIC8vICAgIGFzY2lpIGNoYXJhY3RlcnMs
IHNvIHdlIGtub3cgdGhpcyB3aWxsIGJlIHN1ZmZpY2llbnQpLgotICAgIC8vICAqIFdlIGNvdWxk
IGFsbG9jYXRlIGEgQ1N0cmluZ0J1ZmZlciB3aXRoIGFuIGFwcHJvcHJpYXRlIHNpemUgdG8KLSAg
ICAvLyAgICBoYXZlIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgYWJsZSB0byB3cml0ZSB0aGUgc3Ry
aW5nIGludG8gdGhlCi0gICAgLy8gICAgYnVmZmVyIHdpdGhvdXQgcmVhbGxvY2luZyAoc2F5LCAx
LjUgeCBsZW5ndGgpLgotICAgIGlmIChsZW5ndGggPiBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpIC8gMykKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKLQotICAgIFZlY3RvcjxjaGFy
LCAxMDI0PiBidWZmZXJWZWN0b3IobGVuZ3RoICogMyk7Ci0gICAgY2hhciogYnVmZmVyID0gYnVm
ZmVyVmVjdG9yLmRhdGEoKTsKLQotICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICBjb25zdCBM
Q2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnM4KCk7Ci0KLSAgICAgICAgQ29udmVy
c2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0TGF0aW4xVG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFy
YWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKTsK
LSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQp
OyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9u
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5j
aGFyYWN0ZXJzMTYoKTsKLQotICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZl
cnRVVEYxNlRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwgJmJ1ZmZlciwg
YnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSwgc3RyaWN0KTsKLSAgICAgICAgQVNTRVJUKHJl
c3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpOyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZp
Y2llbnQgZm9yIGFueSBjb252ZXJzaW9uCi0KLSAgICAgICAgLy8gT25seSBwcm9kdWNlZCBmcm9t
IHN0cmljdCBjb252ZXJzaW9uLgotICAgICAgICBpZiAocmVzdWx0ID09IHNvdXJjZUlsbGVnYWwp
Ci0gICAgICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBh
biB1bmNvbnZlcnRlZCBoaWdoIHN1cnJvZ2F0ZS4KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBzb3Vy
Y2VFeGhhdXN0ZWQpIHsKLSAgICAgICAgICAgIGlmIChzdHJpY3QpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIENTdHJpbmcoKTsKLSAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIG9uZSB1bnBh
aXJlZCBoaWdoIHN1cnJvZ2F0ZS4gVHJlYXQgaXQgdGhlIHNhbWUKLSAgICAgICAgICAgIC8vIHdh
cyBhcyBhbiB1bnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZSB3b3VsZCBoYXZlIGJlZW4gaGFuZGxlZCBp
bgotICAgICAgICAgICAgLy8gdGhlIG1pZGRsZSBvZiBhIHN0cmluZyB3aXRoIG5vbi1zdHJpY3Qg
Y29udmVyc2lvbiAtIHdoaWNoIGlzCi0gICAgICAgICAgICAvLyB0byBzYXksIHNpbXBseSBlbmNv
ZGUgaXQgdG8gVVRGLTguCi0gICAgICAgICAgICBBU1NFUlQoKGNoYXJhY3RlcnMgKyAxKSA9PSAo
dGhpcy0+Y2hhcmFjdGVycygpICsgbGVuZ3RoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoKCpjaGFy
YWN0ZXJzID49IDB4RDgwMCkgJiYgKCpjaGFyYWN0ZXJzIDw9IDB4REJGRikpOwotICAgICAgICAg
ICAgLy8gVGhlcmUgc2hvdWxkIGJlIHJvb20gbGVmdCwgc2luY2Ugb25lIFVDaGFyIGhhc24ndCBi
ZWVuIGNvbnZlcnRlZC4KLSAgICAgICAgICAgIEFTU0VSVCgoYnVmZmVyICsgMykgPD0gKGJ1ZmZl
ciArIGJ1ZmZlclZlY3Rvci5zaXplKCkpKTsKLSAgICAgICAgICAgIHB1dFVURjhUcmlwbGUoYnVm
ZmVyLCAqY2hhcmFjdGVycyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gQ1N0cmlu
ZyhidWZmZXJWZWN0b3IuZGF0YSgpLCBidWZmZXIgLSBidWZmZXJWZWN0b3IuZGF0YSgpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5n
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ODU4ZjkzMmQ4ZjIwNGQ2MDdiMTgx
NzU2N2JiMGI1OTg3YWY1NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCisrKyAvZGV2
L251bGwKQEAgLTEsMjg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
Ci0gKi8KLQotI2lmbmRlZiBVU3RyaW5nX2gKLSNkZWZpbmUgVVN0cmluZ19oCi0KLSNpbmNsdWRl
IDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgVVN0cmluZyB7Ci1w
dWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0IGEgbnVsbCBzdHJpbmcsIGRpc3Rpbmd1aXNoYWJsZSBm
cm9tIGFuIGVtcHR5IHN0cmluZy4KLSAgICBVU3RyaW5nKCkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBVU3Ry
aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotCi0gICAgLy8g
Q29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0
ZWQgc291cmNlLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgVUNoYXIqKTsK
LQotICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLgotICAgIFVTdHJp
bmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpOwotCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEsIGZyb20g
YSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFVTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJh
Y3RlcnMpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycyk7Ci0KLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3Rp
bmcgU3RyaW5nSW1wbC4KLSAgICBVU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9pbXBsKGlt
cGwpIHsgfQotICAgIFVTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1w
bChpbXBsKSB7IH0KLSAgICBVU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiBpbXBsKSA6IG1faW1w
bChpbXBsKSB7IH0KLQotICAgIC8vIElubGluZSB0aGUgZGVzdHJ1Y3Rvci4KLSAgICBBTFdBWVNf
SU5MSU5FIH5VU3RyaW5nKCkgeyB9Ci0KLSAgICB2b2lkIHN3YXAoVVN0cmluZyYgbykgeyBtX2lt
cGwuc3dhcChvLm1faW1wbCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHk+Ci0gICAgc3RhdGljIFVTdHJpbmcgYWRvcHQoVmVjdG9yPENo
YXJUeXBlLCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvcikgeyByZXR1cm4gU3RyaW5nSW1wbDo6YWRv
cHQodmVjdG9yKTsgfQotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9pbXBs
OyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBs
LT5sZW5ndGgoKTsgfQotCi0gICAgU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbC5nZXQoKTsgfQotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBt
X2ltcGwtPmxlbmd0aCgpOwotICAgIH0KLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMoKTsKLSAgICB9Ci0KLSAgICBjb25z
dCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKG1faW1wbC0+aXM4Qml0KCkp
OwotICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzOCgpOwotICAgIH0KLQotICAgIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2lt
cGwpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQVNTRVJUKCFtX2ltcGwtPmlzOEJp
dCgpKTsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVyczE2KCk7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIGlubGluZSBjb25zdCBDaGFyVHlw
ZSogZ2V0Q2hhcmFjdGVycygpIGNvbnN0OwotCi0gICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJl
dHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBDU3RyaW5n
IGFzY2lpKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJpY3QgPSBmYWxzZSkgY29uc3Q7Ci0KLSAg
ICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKCFtX2ltcGwgfHwgaW5kZXggPj0gbV9pbXBsLT5sZW5ndGgoKSkKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9pbXBs
LT5jaGFyYWN0ZXJzOCgpW2luZGV4XTsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVy
czE2KClbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihpbnQgaSkg
eyByZXR1cm4gV1RGOjpudW1iZXJUb1N0cmluZ0ltcGwoaSk7IH0KLSAgICBzdGF0aWMgVVN0cmlu
ZyBudW1iZXIodW5zaWduZWQgdSkgeyByZXR1cm4gV1RGOjpudW1iZXJUb1N0cmluZ0ltcGwodSk7
IH0KLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyBpKSB7IHJldHVybiBXVEY6Om51bWJl
clRvU3RyaW5nSW1wbChpKTsgfQotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nIGxvbmcg
aSkgeyByZXR1cm4gV1RGOjpudW1iZXJUb1N0cmluZ0ltcGwoaSk7IH0KLQotICAgIHN0YXRpYyBV
U3RyaW5nIG51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGUpOwotCi0gICAgLy8gRmluZCBh
IHNpbmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBs
YXRpbjEgZm9ybXMuCi0gICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAw
KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoYywgc3RhcnQp
IDogbm90Rm91bmQ7IH0KLQotICAgIHNpemVfdCBmaW5kKGNvbnN0IFVTdHJpbmcmIHN0cikgY29u
c3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ci5pbXBsKCkpIDog
bm90Rm91bmQ7IH0KLSAgICBzaXplX3QgZmluZChjb25zdCBVU3RyaW5nJiBzdHIsIHVuc2lnbmVk
IHN0YXJ0KSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3Ry
LmltcGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KLQotICAgIHNpemVfdCBmaW5kKGNvbnN0IExD
aGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5maW5kKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KLQotICAgIC8vIEZp
bmQgdGhlIGxhc3QgaW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KLSAg
ICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkg
Y29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjLCBz
dGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBVU3RyaW5n
JiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gVUlOVF9NQVgpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyLmltcGwoKSwgc3RhcnQpIDogbm90Rm91
bmQ7IH0KLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0lt
cGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+IG1faW1wbDsKLX07Ci0KLXRlbXBsYXRlPD4KLWlu
bGluZSBjb25zdCBMQ2hhciogVVN0cmluZzo6Z2V0Q2hhcmFjdGVyczxMQ2hhcj4oKSBjb25zdCB7
IHJldHVybiBjaGFyYWN0ZXJzOCgpOyB9Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBjb25zdCBVQ2hh
ciogVVN0cmluZzo6Z2V0Q2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0
ZXJzKCk7IH0KLQotTkVWRVJfSU5MSU5FIGJvb2wgZXF1YWxTbG93Q2FzZShjb25zdCBVU3RyaW5n
JiBzMSwgY29uc3QgVVN0cmluZyYgczIpOwotCi1BTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCi17Ci0gICAgU3RyaW5nSW1w
bCogcmVwMSA9IHMxLmltcGwoKTsKLSAgICBTdHJpbmdJbXBsKiByZXAyID0gczIuaW1wbCgpOwot
Ci0gICAgaWYgKHJlcDEgPT0gcmVwMikgLy8gSWYgdGhleSdyZSB0aGUgc2FtZSByZXAsIHRoZXkn
cmUgZXF1YWwuCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdW5zaWduZWQgc2l6ZTEgPSAw
OwotICAgIHVuc2lnbmVkIHNpemUyID0gMDsKLQotICAgIGlmIChyZXAxKQotICAgICAgICBzaXpl
MSA9IHJlcDEtPmxlbmd0aCgpOwotCi0gICAgaWYgKHJlcDIpCi0gICAgICAgIHNpemUyID0gcmVw
Mi0+bGVuZ3RoKCk7Ci0KLSAgICBpZiAoc2l6ZTEgIT0gc2l6ZTIpIC8vIElmIHRoZSBsZW5ndGhz
IGFyZSBub3QgdGhlIHNhbWUsIHdlJ3JlIGRvbmUuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmICghc2l6ZTEpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHNpemUxID09
IDEpCi0gICAgICAgIHJldHVybiAoKnJlcDEpWzB1XSA9PSAoKnJlcDIpWzB1XTsKLQotICAgIHJl
dHVybiBlcXVhbFNsb3dDYXNlKHMxLCBzMik7Ci19Ci0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCi17Ci0gICAgcmV0dXJuICFK
U0M6Om9wZXJhdG9yPT0oczEsIHMyKTsKLX0KLQotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVy
YXRvcjwoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKTsKLUpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBz
Mik7Ci0KLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBz
MSwgY29uc3QgY2hhciogczIpOwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVTdHJp
bmcmIHMxLCBjb25zdCBjaGFyKiBzMikKLXsKLSAgICByZXR1cm4gIUpTQzo6b3BlcmF0b3I9PShz
MSwgczIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIgKnMxLCBjb25z
dCBVU3RyaW5nJiBzMikKLXsKLSAgICByZXR1cm4gb3BlcmF0b3I9PShzMiwgczEpOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIgKnMxLCBjb25zdCBVU3RyaW5nJiBzMikK
LXsKLSAgICByZXR1cm4gIUpTQzo6b3BlcmF0b3I9PShzMSwgczIpOwotfQotCi1pbmxpbmUgaW50
IGNvZGVQb2ludENvbXBhcmUoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQot
ewotICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHMxLmltcGwoKSwgczIuaW1wbCgpKTsKLX0K
LQotc3RydWN0IFVTdHJpbmdIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChTdHJpbmdJ
bXBsKiBrZXkpIHsgcmV0dXJuIGtleS0+aGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKLSAgICB7Ci0gICAgICAg
IGlmIChhID09IGIpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCFhIHx8
ICFiKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHVuc2lnbmVkIGFMZW5n
dGggPSBhLT5sZW5ndGgoKTsKLSAgICAgICAgdW5zaWduZWQgYkxlbmd0aCA9IGItPmxlbmd0aCgp
OwotICAgICAgICBpZiAoYUxlbmd0aCAhPSBiTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgIC8vIEZJWE1FOiBwZXJoYXBzIHdlIHNob3VsZCBoYXZlIGEgbW9yZSBh
YnN0cmFjdCBtYWNybyB0aGF0IGluZGljYXRlcyB3aGVuCi0gICAgICAgIC8vIGdvaW5nIDQgYnl0
ZXMgYXQgYSB0aW1lIGlzIHVuc2FmZQotI2lmIENQVShBUk0pIHx8IENQVShTSDQpIHx8IENQVShN
SVBTKSB8fCBDUFUoU1BBUkMpCi0gICAgICAgIGNvbnN0IFVDaGFyKiBhQ2hhcnMgPSBhLT5jaGFy
YWN0ZXJzKCk7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBiQ2hhcnMgPSBiLT5jaGFyYWN0ZXJzKCk7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gYUxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAoKmFDaGFycysrICE9ICpiQ2hhcnMrKykKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgICAg
ICAvKiBEbyBpdCA0LWJ5dGVzLWF0LWEtdGltZSBvbiBhcmNoaXRlY3R1cmVzIHdoZXJlIGl0J3Mg
c2FmZSAqLwotICAgICAgICBjb25zdCB1aW50MzJfdCogYUNoYXJzID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KGEtPmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgIGNvbnN0IHVpbnQz
Ml90KiBiQ2hhcnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYi0+Y2hhcmFj
dGVycygpKTsKLQotICAgICAgICB1bnNpZ25lZCBoYWxmTGVuZ3RoID0gYUxlbmd0aCA+PiAxOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGhhbGZMZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgIGlmICgqYUNoYXJzKysgIT0gKmJDaGFycysrKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICBpZiAoYUxlbmd0aCAmIDEgJiYgKnJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDE2X3QqPihhQ2hhcnMpICE9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQx
Nl90Kj4oYkNoYXJzKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbmRpZgotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFJlZlB0cjxTdHJpbmdJbXBsPiYga2V5KSB7IHJldHVybiBrZXktPmhhc2goKTsgfQotICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYSwgY29uc3QgUmVmUHRy
PFN0cmluZ0ltcGw+JiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVxdWFsKGEuZ2V0KCksIGIu
Z2V0KCkpOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVTdHJpbmcm
IGtleSkgeyByZXR1cm4ga2V5LmltcGwoKS0+aGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgVVN0cmluZyYgYSwgY29uc3QgVVN0cmluZyYgYikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFVTdHJpbmdIYXNoIGlzIHRo
ZSBkZWZhdWx0IGhhc2ggZm9yIFVTdHJpbmcKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBE
ZWZhdWx0SGFzaDsKLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6VVN0cmluZz4g
ewotICAgIHR5cGVkZWYgSlNDOjpVU3RyaW5nSGFzaCBIYXNoOwotfTsKLQotdGVtcGxhdGUgPD4g
c3RydWN0IFZlY3RvclRyYWl0czxKU0M6OlVTdHJpbmc+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFp
dHMgeyB9OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMWNjZjM4MmE1Zjk3M2U2MjY1OTgyOTRmMTUyYWUzYzg5YmJiNjQ3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgVVN0cmluZ0J1aWxkZXJfaAotI2RlZmluZSBVU3RyaW5nQnVpbGRlcl9oCi0KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFz
cyBVU3RyaW5nQnVpbGRlciA6IHB1YmxpYyBTdHJpbmdCdWlsZGVyIHsKLXB1YmxpYzoKLSAgICB1
c2luZyBTdHJpbmdCdWlsZGVyOjphcHBlbmQ7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0cmlu
ZyYgc3RyKSB7IGFwcGVuZChTdHJpbmcoc3RyLmltcGwoKSkpOyB9Ci0KLSAgICBVU3RyaW5nIHRv
VVN0cmluZygpIHsgcmV0dXJuIHRvU3RyaW5nKCkuaW1wbCgpOyB9Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIFVTdHJpbmdCdWlsZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0NvbmNhdGVuYXRlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNiZDRlNjBjYTRiM2E3YWU1NGZjYzc1MjVmZmFmMjA5NDZiZWUyZDIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0NvbmNhdGVuYXRlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaWZuZGVmIFVTdHJpbmdDb25jYXRlbmF0ZV9oCi0jZGVmaW5lIFVTdHJpbmdDb25j
YXRlbmF0ZV9oCi0KLSNpbmNsdWRlICJVU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4KLWNsYXNz
IFN0cmluZ1R5cGVBZGFwdGVyPEpTQzo6VVN0cmluZz4gewotcHVibGljOgotICAgIFN0cmluZ1R5
cGVBZGFwdGVyPEpTQzo6VVN0cmluZz4oSlNDOjpVU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgIDog
bV9zdHJpbmcoc3RyaW5nKQotICAgICAgICAsIG1fbGVuZ3RoKHN0cmluZy5sZW5ndGgoKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0K
LQotICAgIGJvb2wgaXM4Qml0KCkgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCkgfHwgbV9zdHJp
bmcuaXM4Qml0KCk7IH0KLQotICAgIHZvaWQgd3JpdGVUbyhMQ2hhciogZGVzdGluYXRpb24pCi0g
ICAgewotICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IG1fc3RyaW5nLmNoYXJhY3Rl
cnM4KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQot
ICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBjaGFyYWN0ZXJzW2ldOwotICAgIH0KLQotICAg
IHZvaWQgd3JpdGVUbyhVQ2hhciogZGVzdGluYXRpb24pCi0gICAgewotICAgICAgICBpZiAoaXM4
Qml0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gbV9zdHJpbmcu
Y2hhcmFjdGVyczgoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xl
bmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gY2hhcmFjdGVyc1tp
XTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
ID0gbV9zdHJpbmcuY2hhcmFjdGVyczE2KCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9
IGNoYXJhY3RlcnNbaV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3Qg
SlNDOjpVU3RyaW5nJiBtX3N0cmluZzsKLSAgICB1bnNpZ25lZCBtX2xlbmd0aDsKLX07Ci0KLX07
IC8vIG5hbWVzcGFjZSBXVEYKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMj4KLVVTdHJpbmcgbWFrZVVTdHJpbmco
U3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMikKLXsKLSAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwg
c3RyaW5nMik7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJl
dHVybiByZXN1bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzPgotVVN0cmluZyBtYWtlVVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBl
MyBzdHJpbmczKQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFdU
Rjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczKTsKLSAgICBpZiAoIXJl
c3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0PgotVVN0cmluZyBtYWtlVVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBl
MyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVzdWx0SW1wbCA9IFdURjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBz
dHJpbmczLCBzdHJpbmc0KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7
Ci0gICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5
cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1l
IFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNT4KLVVTdHJpbmcgbWFrZVVTdHJpbmco
U3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3Ry
aW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5nNSkKLXsKLSAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3Ry
aW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSk7Ci0gICAgaWYgKCFyZXN1
bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVu
YW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlw
ZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2PgotVVN0cmluZyBtYWtlVVN0cmluZyhTdHJpbmdUeXBl
MSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJp
bmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2
KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFdURjo6dHJ5TWFr
ZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJp
bmc2KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5cGU0
LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTYsIHR5cGVuYW1lIFN0
cmluZ1R5cGU3PgotVVN0cmluZyBtYWtlVVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJp
bmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0
LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBlNyBz
dHJpbmc3KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFdURjo6
dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1
LCBzdHJpbmc2LCBzdHJpbmc3KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNI
KCk7Ci0gICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmlu
Z1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVu
YW1lIFN0cmluZ1R5cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlw
ZTYsIHR5cGVuYW1lIFN0cmluZ1R5cGU3LCB0eXBlbmFtZSBTdHJpbmdUeXBlOD4KLVVTdHJpbmcg
bWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3Ry
aW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3RyaW5n
NSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNywgU3RyaW5nVHlwZTgg
c3RyaW5nOCkKLXsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6
OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5n
NSwgc3RyaW5nNiwgc3RyaW5nNywgc3RyaW5nOCk7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAg
ICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJl
Z0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKaW5kZXggNjFj
MjFjMzFiMmE2ZDM5MzhlODg2ZDMzYTZlNDU5ZjE1MjE4YjQ0MS4uYjBiMTI2ZjFjODcxZWRiMGIy
MDVkYTRiNjU2N2QwMDUwNWY4ZmU1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RSZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNw
cApAQCAtMjQsMTEgKzI0LDExIEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgIU9TKFdJTkRPV1MpCiAj
aW5jbHVkZSA8dW5pc3RkLmg+CkBAIC02Myw4ICs2Myw4IEBAIHN0cnVjdCBDb21tYW5kTGluZSB7
CiAKICAgICBib29sIGludGVyYWN0aXZlOwogICAgIGJvb2wgdmVyYm9zZTsKLSAgICBWZWN0b3I8
VVN0cmluZz4gYXJndW1lbnRzOwotICAgIFZlY3RvcjxVU3RyaW5nPiBmaWxlczsKKyAgICBWZWN0
b3I8U3RyaW5nPiBhcmd1bWVudHM7CisgICAgVmVjdG9yPFN0cmluZz4gZmlsZXM7CiB9OwogCiBj
bGFzcyBTdG9wV2F0Y2ggewpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0cnVjdCBSZWdFeHBUZXN0IHsK
ICAgICB7CiAgICAgfQogCi0gICAgVVN0cmluZyBzdWJqZWN0OworICAgIFN0cmluZyBzdWJqZWN0
OwogICAgIGludCBvZmZzZXQ7CiAgICAgaW50IHJlc3VsdDsKICAgICBWZWN0b3I8aW50LCAzMj4g
ZXhwZWN0VmVjdG9yOwpAQCAtMTA4LDEyICsxMDgsMTIgQEAgc3RydWN0IFJlZ0V4cFRlc3Qgewog
CiBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogcHJpdmF0ZToK
LSAgICBHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgVmVjdG9y
PFVTdHJpbmc+JiBhcmd1bWVudHMpOworICAgIEdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKTsKIAogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNHbG9iYWxPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBHbG9iYWxPYmpl
Y3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgR2xvYmFsT2Jq
ZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIHJldHVy
biBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVh
cCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50cyk7CiAgICAg
fQpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVmVjdG9y
PFVTdHJpbmc+JiBhcmd1bWVudHMpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewog
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgVU5VU0VE
X1BBUkFNKGFyZ3VtZW50cyk7CkBAIC0xMzgsNyArMTM4LDcgQEAgQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChHbG9iYWxPYmplY3QpOwogCiBjb25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0Ojpz
X2luZm8gPSB7ICJnbG9iYWwiLCAmSlNHbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgRXhlY1N0YXRl
OjpnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShHbG9iYWxPYmplY3QpIH07
CiAKLUdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQor
R2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cykKICAgICA6
IEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKICAgICBmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCBhcmd1bWVudHMpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0YXRpYyBi
b29sIHRlc3RPbmVSZWdFeHAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHJlZ2V4
cCwgUmVnRXhwVGVzdCoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgaW50IHNjYW5T
dHJpbmcoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuZ3RoLCBVU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgY2hhciB0ZXJtQ2hhcikKK3N0YXRpYyBpbnQgc2NhblN0cmluZyhjaGFyKiBidWZmZXIs
IGludCBidWZmZXJMZW5ndGgsIFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNoYXIgdGVybUNoYXIp
CiB7CiAgICAgYm9vbCBlc2NhcGUgPSBmYWxzZTsKICAgICAKQEAgLTMwNyw3ICszMDcsNyBAQCBz
dGF0aWMgaW50IHNjYW5TdHJpbmcoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuZ3RoLCBVU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgYwogCiBzdGF0aWMgUmVnRXhwKiBwYXJzZVJlZ0V4cExpbmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0aCkKIHsK
LSAgICBVU3RyaW5nQnVpbGRlciBwYXR0ZXJuOworICAgIFN0cmluZ0J1aWxkZXIgcGF0dGVybjsK
ICAgICAKICAgICBpZiAobGluZVswXSAhPSAnLycpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMzE5
LDEyICszMTksMTIgQEAgc3RhdGljIFJlZ0V4cCogcGFyc2VSZWdFeHBMaW5lKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY2hhciogbGluZSwgaW50IGxpbmVMZW4KIAogICAgICsraTsKIAotICAg
IHJldHVybiBSZWdFeHA6OmNyZWF0ZShnbG9iYWxEYXRhLCBwYXR0ZXJuLnRvVVN0cmluZygpLCBy
ZWdFeHBGbGFncyhsaW5lICsgaSkpOworICAgIHJldHVybiBSZWdFeHA6OmNyZWF0ZShnbG9iYWxE
YXRhLCBwYXR0ZXJuLnRvU3RyaW5nKCksIHJlZ0V4cEZsYWdzKGxpbmUgKyBpKSk7CiB9CiAKIHN0
YXRpYyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3Ro
KQogewotICAgIFVTdHJpbmdCdWlsZGVyIHN1YmplY3RTdHJpbmc7CisgICAgU3RyaW5nQnVpbGRl
ciBzdWJqZWN0U3RyaW5nOwogICAgIAogICAgIGlmICgobGluZVswXSAhPSAnICcpIHx8IChsaW5l
WzFdICE9ICciJykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHN0YXRp
YyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3RoKQog
ICAgIAogICAgIFJlZ0V4cFRlc3QqIHJlc3VsdCA9IG5ldyBSZWdFeHBUZXN0KCk7CiAgICAgCi0g
ICAgcmVzdWx0LT5zdWJqZWN0ID0gc3ViamVjdFN0cmluZy50b1VTdHJpbmcoKTsKKyAgICByZXN1
bHQtPnN1YmplY3QgPSBzdWJqZWN0U3RyaW5nLnRvU3RyaW5nKCk7CiAgICAgcmVzdWx0LT5vZmZz
ZXQgPSBvZmZzZXQ7CiAgICAgcmVzdWx0LT5yZXN1bHQgPSBtYXRjaFJlc3VsdDsKIApAQCAtMzk0
LDEwICszOTQsMTAgQEAgc3RhdGljIFJlZ0V4cFRlc3QqIHBhcnNlVGVzdExpbmUoY2hhciogbGlu
ZSwgaW50IGxpbmVMZW5ndGgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGJvb2wg
cnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8VVN0
cmluZz4mIGZpbGVzLCBib29sIHZlcmJvc2UpCitzdGF0aWMgYm9vbCBydW5Gcm9tRmlsZXMoR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywgYm9v
bCB2ZXJib3NlKQogewotICAgIFVTdHJpbmcgc2NyaXB0OwotICAgIFVTdHJpbmcgZmlsZU5hbWU7
CisgICAgU3RyaW5nIHNjcmlwdDsKKyAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgVmVjdG9yPGNo
YXI+IHNjcmlwdEJ1ZmZlcjsKICAgICB1bnNpZ25lZCB0ZXN0cyA9IDA7CiAgICAgdW5zaWduZWQg
ZmFpbHVyZXMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5jcHAKaW5kZXggYmExMDE3MWJmZThlYmYxYjk3MGRiZmI4ZTFkMjdjZDA1NWVkYjYxNS4u
NWMyYTI4N2M4ZTU0MGVjNzU3NTc5ZTkwZTc0YjNkNDhlNDNmNWJiZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0yNywxMiArMjcsMTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKIAot
I2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVkZSAiWWFyckNh
bm9uaWNhbGl6ZVVDUzIuaCIKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmbmRlZiBOREVCVUcKICNpbmNs
dWRlIDxzdGRpby5oPgpAQCAtMTkzNCw3ICsxOTM0LDcgQEAgUGFzc093blB0cjxCeXRlY29kZVBh
dHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9j
YXQKICAgICByZXR1cm4gQnl0ZUNvbXBpbGVyKHBhdHRlcm4pLmNvbXBpbGUoYWxsb2NhdG9yKTsK
IH0KIAotdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiogYnl0ZWNvZGUsIGNvbnN0
IFVTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCkKK3Vuc2ln
bmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qIGJ5dGVjb2RlLCBjb25zdCBTdHJpbmcmIGlu
cHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCkKIHsKICAgICBpZiAoaW5wdXQu
aXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBJbnRlcnByZXRlcjxMQ2hhcj4oYnl0ZWNvZGUsIG91
dHB1dCwgaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQubGVuZ3RoKCksIHN0YXJ0KS5pbnRlcnBy
ZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKaW5k
ZXggNGVjZDY5ZWNhNzAzY2Q2Yjg4NGNhNjFhNDQyNDkxN2MwM2Y5MWRjNi4uZmI2MGJkOTc5ZDc2
YjFjNjA0MjFmMjFhNTBiNzhjNDhhNzcyOTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckludGVycHJldGVyLmgKQEAgLTM3Niw3ICszNzYsNyBAQCBwcml2YXRlOgogfTsK
IAogSlNfRVhQT1JUX1BSSVZBVEUgUGFzc093blB0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21w
aWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqKTsKLUpTX0VYUE9SVF9QUklW
QVRFIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBVU3RyaW5nJiBp
bnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpOworSlNfRVhQT1JUX1BSSVZB
VEUgdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IFN0cmluZyYgaW5w
dXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKIHVuc2lnbmVkIGludGVycHJl
dChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpOwogdW5zaWduZWQgaW50ZXJwcmV0KEJ5
dGVjb2RlUGF0dGVybiosIGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAKaW5kZXggZWI5ODYxZmVkZDEyMTA5ZDY1YmE4YTI0OGQxM2E3NDEyZDQxYzIw
OC4uZWU2ZTM5NzUzNzNjNDQ2YTNkNWY0MmQ5ZTYxODEwNTg3YmZjMDk1NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBZYXJyIHsKIAogdGVtcGxhdGU8WWFyckpJVENvbXBpbGVNb2RlIGNvbXBp
bGVNb2RlPgogY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewot
ICAgIGZyaWVuZCB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhKiwgWWFyckNvZGVCbG9jayYg
aml0T2JqZWN0LCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25lZCYgbnVtU3VicGF0dGVy
bnMsIGNvbnN0IGNoYXIqJiBlcnJvciwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSk7
CisgICAgZnJpZW5kIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEqLCBZYXJyQ29kZUJsb2Nr
JiBqaXRPYmplY3QsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQmIG51bVN1YnBhdHRl
cm5zLCBjb25zdCBjaGFyKiYgZXJyb3IsIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUp
OwogCiAjaWYgQ1BVKEFSTSkKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBpbnB1dCA9IEFS
TVJlZ2lzdGVyczo6cjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggNzE5
MjhlNzNjZTdkZDQxNTZjMmU4MzU1MWQ2M2QzZmVhMGE3NzM4ZS4uYmI3MDMzZmRlYWFlMDk5NmUy
ZjE3NGIxYmU2OGY1ZDNmYTdkN2VlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQu
aApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCi0jaW5j
bHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIllhcnIuaCIKICNpbmNsdWRlICJZYXJyUGF0dGVy
bi5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKaW5kZXggMTE4MmQ3
OTA3ODFiNzAwODUwMjA5ZjM2MzU2MDIxNDlkZGViYWJlNi4uNGJhYjFhMDkwM2Q5NTNhMTJhMTEx
NTE1ODBjNGNhODVmNWMxOTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJz
ZXIuaApAQCAtMjYsOSArMjYsOSBAQAogI2lmbmRlZiBZYXJyUGFyc2VyX2gKICNkZWZpbmUgWWFy
clBhcnNlcl9oCiAKLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KICNpbmNsdWRlICJZYXJy
LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgWWFyciB7CkBAIC00Nyw3ICs0Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERl
bGVnYXRlLCB0eXBlbmFtZSBDaGFyVHlwZT4KIGNsYXNzIFBhcnNlciB7CiBwcml2YXRlOgogICAg
IHRlbXBsYXRlPGNsYXNzIEZyaWVuZERlbGVnYXRlPgotICAgIGZyaWVuZCBjb25zdCBjaGFyKiBw
YXJzZShGcmllbmREZWxlZ2F0ZSYgZGVsZWdhdGUsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIHVu
c2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCk7CisgICAgZnJpZW5kIGNvbnN0IGNoYXIqIHBhcnNl
KEZyaWVuZERlbGVnYXRlJiwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25lZCBiYWNrUmVm
ZXJlbmNlTGltaXQpOwogCiAgICAgZW51bSBFcnJvckNvZGUgewogICAgICAgICBOb0Vycm9yLApA
QCAtMjI4LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFVDaGFyIG1fY2hhcmFjdGVyOwog
ICAgIH07CiAKLSAgICBQYXJzZXIoRGVsZWdhdGUmIGRlbGVnYXRlLCBjb25zdCBVU3RyaW5nJiBw
YXR0ZXJuLCB1bnNpZ25lZCBiYWNrUmVmZXJlbmNlTGltaXQpCisgICAgUGFyc2VyKERlbGVnYXRl
JiBkZWxlZ2F0ZSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25lZCBiYWNrUmVmZXJlbmNl
TGltaXQpCiAgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAgICAgLCBtX2JhY2tS
ZWZlcmVuY2VMaW1pdChiYWNrUmVmZXJlbmNlTGltaXQpCiAgICAgICAgICwgbV9lcnIoTm9FcnJv
cikKQEAgLTg2OCw3ICs4NjgsNyBAQCBwcml2YXRlOgogICovCiAKIHRlbXBsYXRlPGNsYXNzIERl
bGVnYXRlPgotY29uc3QgY2hhciogcGFyc2UoRGVsZWdhdGUmIGRlbGVnYXRlLCBjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuLCB1bnNpZ25lZCBiYWNrUmVmZXJlbmNlTGltaXQgPSBxdWFudGlmeUluZmlu
aXRlKQorY29uc3QgY2hhciogcGFyc2UoRGVsZWdhdGUmIGRlbGVnYXRlLCBjb25zdCBTdHJpbmcm
IHBhdHRlcm4sIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCA9IHF1YW50aWZ5SW5maW5pdGUp
CiB7CiAgICAgaWYgKHBhdHRlcm4uaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBQYXJzZXI8RGVs
ZWdhdGUsIExDaGFyPihkZWxlZ2F0ZSwgcGF0dGVybiwgYmFja1JlZmVyZW5jZUxpbWl0KS5wYXJz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IGJi
ZGE5YzUyNjZmMjM3OTdlNTY2NzM5ODdmZmE5NGNkNzM3Yjk2MjkuLjUwODA5MjlmNGE0MTlkZjIw
MzQ0ODI2NTZlN2RlMmI5OTUzYjQ2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJyUGF0dGVybi5jcHAKQEAgLTgyMCw3ICs4MjAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
bnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOwogfTsKIAotY29uc3QgY2hhciogWWFyclBhdHRl
cm46OmNvbXBpbGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZykKK2NvbnN0IGNoYXIqIFlh
cnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIHsKICAgICBZ
YXJyUGF0dGVybkNvbnN0cnVjdG9yIGNvbnN0cnVjdG9yKCp0aGlzKTsKIApAQCAtODUzLDcgKzg1
Myw3IEBAIGNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFVTdHJpbmcmIHBh
dHRlcm5TdHJpbmcpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVlhcnJQYXR0ZXJuOjpZYXJyUGF0dGVy
bihjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5l
LCBjb25zdCBjaGFyKiogZXJyb3IpCitZYXJyUGF0dGVybjo6WWFyclBhdHRlcm4oY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5lLCBjb25zdCBjaGFy
KiogZXJyb3IpCiAgICAgOiBtX2lnbm9yZUNhc2UoaWdub3JlQ2FzZSkKICAgICAsIG1fbXVsdGls
aW5lKG11bHRpbGluZSkKICAgICAsIG1fY29udGFpbnNCYWNrcmVmZXJlbmNlcyhmYWxzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IGEzMWRlZWU2NzI5NDY0
NGU1ZGM0YWFkNGQ3YTA2YjA3M2IyMGI3OWYuLjE0ZTg5YjhlMDkyOTY4ODI2ZGVhMzk3NTRjMzZk
MTNiMTQxMWY2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaApA
QCAtMjcsMTAgKzI3LDEwIEBACiAjaWZuZGVmIFlhcnJQYXR0ZXJuX2gKICNkZWZpbmUgWWFyclBh
dHRlcm5faAogCi0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0No
ZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlh
cnIgewpAQCAtMzE2LDcgKzMxNiw3IEBAIHN0cnVjdCBUZXJtQ2hhaW4gewogfTsKIAogc3RydWN0
IFlhcnJQYXR0ZXJuIHsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBZYXJyUGF0dGVybihjb25zdCBV
U3RyaW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5lLCBjb25zdCBj
aGFyKiogZXJyb3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFlhcnJQYXR0ZXJuKGNvbnN0IFN0
cmluZyYgcGF0dGVybiwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hh
cioqIGVycm9yKTsKIAogICAgIH5ZYXJyUGF0dGVybigpCiAgICAgewpAQCAtNDA1LDcgKzQwNSw3
IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAgVmVjdG9yPENoYXJhY3RlckNsYXNzKj4gbV91
c2VyQ2hhcmFjdGVyQ2xhc3NlczsKIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiBjb21waWxl
KGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcpOworICAgIGNvbnN0IGNoYXIqIGNvbXBpbGUo
Y29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKTsKIAogICAgIENoYXJhY3RlckNsYXNzKiBuZXds
aW5lQ2FjaGVkOwogICAgIENoYXJhY3RlckNsYXNzKiBkaWdpdHNDYWNoZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAKaW5kZXggNTFmZGE5
NGQ4YTNkNzZmYzVhMmQ3NmI1NjNmYjVmNmJhOTI5ZmYzMS4uYWE5OGM0YTM1NDc1NzdmYTZjNTFj
ODgxZmFiMzM1OGRiY2Q5OTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclN5bnRheENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJTeW50YXhDaGVja2VyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaXNqdW5jdGlvbigpIHt9CiB9OwogCi1jb25zdCBjaGFyKiBjaGVja1N5bnRheChjb25zdCBV
U3RyaW5nJiBwYXR0ZXJuKQorY29uc3QgY2hhciogY2hlY2tTeW50YXgoY29uc3QgU3RyaW5nJiBw
YXR0ZXJuKQogewogICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tlcjsKICAgICByZXR1cm4g
cGFyc2Uoc3ludGF4Q2hlY2tlciwgcGF0dGVybik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclN5bnRheENoZWNrZXIuaAppbmRleCAyMDEzNjcxZWI1NzNmOWI2ZTAyM2MzMGEz
YjVhZDI4YTZhZTlhZWZjLi4xMDRjZWQzYWI0YmQ3OGNiMmFlNjQwNmI3ZjYzNTE4MjY0Y2FiZDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmgK
QEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRlZiBZYXJyU3ludGF4Q2hlY2tlcl9oCiAjZGVmaW5l
IFlhcnJTeW50YXhDaGVja2VyX2gKIAotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFlhcnIgewogCi1jb25zdCBjaGFyKiBjaGVja1N5bnRheChjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
KTsKK2NvbnN0IGNoYXIqIGNoZWNrU3ludGF4KGNvbnN0IFN0cmluZyYgcGF0dGVybik7CiAKIH19
IC8vIEpTQzo6WUFSUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci95
YXJyLnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL3lhcnIucHJpCmluZGV4IDYyMzA5
OGZkM2FmN2IzMGUwMGVlODUzMTQyNTMzNmNjODJkNDAwZTkuLjdlOWI0ZDNmM2IzY2ZiZDRlM2M5
N2IzYzhiMTBhNjhhYmNkY2JmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL3lhcnIucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL3lhcnIucHJpCkBA
IC0xMCw5ICsxMCwzIEBAIFNPVVJDRVMgKz0gXAogICAgICQkUFdEL1lhcnJTeW50YXhDaGVja2Vy
LmNwcCBcCiAgICAgJCRQV0QvWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwCiAKLSMgRm9yIFVTdHJp
bmcuaAotdjggewotICAgIElOQ0xVREVQQVRIICs9IFwKLSAgICAgICAgJCRQV0QvLi4gXAotICAg
ICAgICAkJFBXRC8uLi9ydW50aW1lCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBkOWFkNWE1YzJiZDYxMTY2
ZmRkZTgwNzViZWFkYzE5ZjAwMzViMDNlLi40YTRlZmU4NDZlYjU1ODAxYThlNThiZWFkYzdmZjdh
OGRkZjIxNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTExNjksNCArMTE2OSwzIEBACiAjZW5kaWYKIAog
I2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4
IGI1MDdjNDk4YzEyZDdlODQyMDQxYjAyZDlmMWRkOWMxYTc5MGVjODkuLmUyMzAyYWY2YTEwYjVl
MmQzZTQwODkwOWZiNWI2NDJjMTZkOGU2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAt
MzE1LDcgKzMxNSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBy
ZW1vdmUodW5zaWduZWQgcG9zLCBpbnQgbGVuID0gMSk7CiAKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRf
TUFYKSBjb25zdDsKLSAgICBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9z
LCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIFN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxl
biA9IFVJTlRfTUFYKSBjb25zdDsKICAgICBTdHJpbmcgbGVmdCh1bnNpZ25lZCBsZW4pIGNvbnN0
IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW4pOyB9CiAgICAgU3RyaW5nIHJpZ2h0KHVuc2lnbmVk
IGxlbikgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKGxlbmd0aCgpIC0gbGVuLCBsZW4pOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVVN0
cmluZy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5n
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5ODVhYTUyMWM5NTFiMGYyZGIwMWQ4
NTVlY2ZjOGViZDU1ZTkzZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5n
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSNpZm5kZWYgV2ViQ29yZV9GV0RfVVN0
cmluZ19oCi0jZGVmaW5lIFdlYkNvcmVfRldEX1VTdHJpbmdfaAotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1VTdHJpbmcuaD4KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1OTJhNzgzMGYxZjQ3ZDRjOWY2NjkyMTdkODc2MzlhY2E0YjFkNjEx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQgKzAsMCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9VU3RyaW5nQnVpbGRl
cl9oCi0jZGVmaW5lIFdlYkNvcmVfRldEX1VTdHJpbmdCdWlsZGVyX2gKLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9VU3RyaW5nQnVpbGRlci5oPgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdJbXBsLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MTY3YTRkNmVlZjU5MzNmMmNlZDdmNzQ1NDRkODc5ZTc3
YjkzMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nSW1wbC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX1VTdHJpbmdJbXBs
X2gKLSNkZWZpbmUgV2ViQ29yZV9GV0RfVVN0cmluZ0ltcGxfaAotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1VTdHJpbmdJbXBsLmg+Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmVh
MTRkODcyNzUxZDc0ZDY0OGE5NmM3YTJjOWVjMmNkNDQ5MzQzNy4uNmZhOWVkMmRkMGM5MzU3ZDJh
OWRhM2RiNWRkNDM2YmMxNDQ5ZmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTIzMzgsNyAr
MjMzOCw3IEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hhbmdlRXZlbnRF
aQogCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1MpCiBfX1pOM0pTQzEzUnVudGltZU1ldGhv
ZDExZ2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhDYWxsRGF0YUUKLV9fWk4zSlNDMTNSdW50
aW1lTWV0aG9kMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmlu
Z0UKK19fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2Jh
bERhdGFFUktOM1dURjZTdHJpbmdFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE4Z2V0T3duUHJv
cGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJO
U18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMjRnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlByb3BlcnR5TmFt
ZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDZzX2lu
Zm9FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4
IDUyYWM5ODk3MmJlN2IyMzVmMGRlYzE1OGQzNzE5MGJmZDk4YTBkMzYuLmIwMjEwN2I2MzAyMDQ2
NDQ4MGVhZjA1OTMyZDBlZTBhZGZjMzY1MDQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mzg4MSwxNCArNzM4ODEsNiBAQAogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcU3RyaW5nT2JqZWN0LmgiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxGb3J3
YXJkaW5nSGVhZGVyc1xydW50aW1lXFVTdHJpbmcuaCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJ
CQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVc
VVN0cmluZ0ltcGwuaCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgogCQkJPEZp
bHRlcgogCQkJCU5hbWU9InlhcnIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAppbmRleCA4ZWZiNDgxNzUzNDM2NmRj
NTQ3OTk4NmIzYjBhZDJmODg1MDZiYzYxLi4wZGQzY2Y1NzdmMTg2ZjRiMjA1Y2VhMDhmZGI1OGEx
MWNlZmZjYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
Y2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiIC8v
IGZvciBzdHJpbmdUb1VTdHJpbmcKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VQcm92aWRlci5oIgog
I2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAKQEAgLTQ1LDE0ICs0NCwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBKU0M6OlVTdHJpbmcgZ2V0UmFu
Z2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdCBPVkVSUklERQorICAgICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0IE9WRVJSSURFCiAgICAgICAg
IHsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBlbmQgLSBzdGFydDsKICAgICAgICAgICAgIEFT
U0VSVChsZW5ndGggPj0gMCk7CiAgICAgICAgICAgICBBU1NFUlQoc3RhcnQgKyBsZW5ndGggPD0g
dGhpcy0+bGVuZ3RoKCkpOwogCiAgICAgICAgICAgICBTdHJpbmcgc2NyaXB0ID0gbV9jYWNoZWRT
Y3JpcHQtPnNjcmlwdCgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQzo6VVN0cmluZyhTdHJpbmdJ
bXBsOjpjcmVhdGUoc2NyaXB0LmltcGwoKSwgc3RhcnQsIGxlbmd0aCkpOworICAgICAgICAgICAg
cmV0dXJuIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGUoc2NyaXB0LmltcGwoKSwgc3RhcnQsIGxl
bmd0aCkpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHQoKS5pbXBsKCk7IH0KQEAgLTY2LDcg
KzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ2Fj
aGVkU2NyaXB0U291cmNlUHJvdmlkZXIoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQpCi0gICAg
ICAgICAgICA6IFNjcmlwdFNvdXJjZVByb3ZpZGVyKHN0cmluZ1RvVVN0cmluZyhjYWNoZWRTY3Jp
cHQtPnJlc3BvbnNlKCkudXJsKCkpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBj
YWNoZWRTY3JpcHQtPnNvdXJjZVByb3ZpZGVyQ2FjaGUoKSkKKyAgICAgICAgICAgIDogU2NyaXB0
U291cmNlUHJvdmlkZXIoY2FjaGVkU2NyaXB0LT5yZXNwb25zZSgpLnVybCgpLCBUZXh0UG9zaXRp
b246Om1pbmltdW1Qb3NpdGlvbigpLCBjYWNoZWRTY3JpcHQtPnNvdXJjZVByb3ZpZGVyQ2FjaGUo
KSkKICAgICAgICAgICAgICwgbV9jYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0KQogICAgICAgICB7
CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAppbmRleCBiYTk2MGRjODI4M2JlYTNhMmQ0
ZTI3MDEwYzQ5ZTNjYjQ5NDNmNmRmLi44NjM3ZGFjY2EwNzgyZDRhOWFjYmZmN2Q1MGM1NTRlNWMz
NzE0YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcApAQCAt
NjUsMTMgKzY1LDEzIEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5n
SGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtCiAgICAgUHJvcGVydHlOYW1l
QXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJv
cGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVuZCgpOyBpdCsrKSB7Ci0g
ICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSB1c3RyaW5nVG9TdHJpbmcoaXQtPnVzdHJpbmcoKSk7
CisgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+dXN0cmluZygpOwogICAgICAgICBpZiAo
c3RyaW5nS2V5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgKml0KTsKICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFN0cmluZyBzdHJp
bmdWYWx1ZSA9IHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICBtYXAuc2V0KHN0cmluZ0tleSwgc3RyaW5nVmFsdWUpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggY2Rj
MGM0ODg0MTVjYTIzMzQyYjQxZjRkZTU1MzE5ZWE3Y2M5NDQ4Yy4uYjU1ZTc2YmJkZjZiODA3ZDc1
MDgyY2Y4ZTY2Y2ExNTI5Yzk0NjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgUGFzc1JlZlB0
cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU1ZhbHVlIHZhbHUKICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQogICAgICAgICByZXR1cm4g
SURCS2V5OjpjcmVhdGVOdW1iZXIodmFsdWUudG9OdW1iZXIoZXhlYykpOwogICAgIGlmICh2YWx1
ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcodXN0cmlu
Z1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgICAgICBy
ZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGRhdGVzLgogICAgIHJldHVybiAwOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKaW5kZXggNmE5MTIy
YzJlMzMzNWQ2NmQzNjZiMzU2NWIzNjg1MDFjOTg3OGQzYy4uN2M3OTAzODllYjIyMWIyNzIwMjll
YjY2OGNkNDFlNGYwNzQwNzNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Js
b2JDdXN0b20uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU0Jsb2JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgaWYgKGl0ZW0uaW5oZXJpdHMoJkpTQmxvYjo6c19pbmZvKSkKICAgICAgICAgICAg
IGJsb2JCdWlsZGVyLT5hcHBlbmQodG9CbG9iKGl0ZW0pKTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBTdHJpbmcgc3RyaW5nID0gdXN0cmluZ1RvU3RyaW5nKGl0ZW0udG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBpdGVtLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgICAgICAgICAgYmxvYkJ1aWxkZXItPmFwcGVuZChzdHJpbmcsIGVuZGluZ3MsIEFT
U0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNDY0ZThiYjc3NWQw
NTE2NDFlYTM2MzRjYWYzMTllODk2ZTlkYzQ3Ni4uYjFlMjM3NmEyMDBjMzY0NTNlOTJhYmJmOGVj
ZWQ1NmQzZDUxY2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAg
Ym9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmEKIAogSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lKHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZShl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAppbmRleCAwYzY3NGNiNmY0ZmY0M2IxMTc4Y2RlZTVj
MThlMGI1ZDdhMzg2NzViLi5kOWVkM2Q5MmFiNjIzNjllODNkNWRjOTZmMTc3ZGEzNDRlODBlOTdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihpbXBsKCkpOwogICAg
IGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAg
IGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoZXhlYykpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKHRvSFRN
TENhbnZhc1N0eWxlKGV4ZWMsIHZhbHVlKSk7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4oaW1wbCgpKTsKICAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkgewotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodXN0cmluZ1Rv
U3RyaW5nKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoZXhlYykpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGNvbnRleHQtPnNldEZpbGxTdHlsZSh0b0hUTUxDYW52YXNTdHlsZShl
eGVjLCB2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
bGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9h
cmRDdXN0b20uY3BwCmluZGV4IDhjZmQ2NWEyOWQ5YjA3NWQyMzE0MmU2OWViODllODYxNGE5YTM2
ZjYuLjcwODJkNTQ5OTM5NTY5YjlkNGU4ZDU4ZGFjMGVhMGE2YmIwMjFmZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAKQEAgLTU5LDcg
KzU5LDcgQEAgSlNWYWx1ZSBKU0NsaXBib2FyZDo6dHlwZXMoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgSGFzaFNldDxTdHJpbmc+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSB0eXBlcy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHN0cmluZ1RvVVN0cmluZygqaXQpKSk7
CisgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsICppdCkpOwogICAgIHJldHVybiBj
b25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QoKSwgbGlzdCk7CiB9CiAKQEAgLTczLDcg
KzczLDcgQEAgSlNWYWx1ZSBKU0NsaXBib2FyZDo6Y2xlYXJEYXRhKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICB9CiAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKLSAgICAgICAg
Y2xpcGJvYXJkLT5jbGVhckRhdGEodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgICAgICBjbGlwYm9hcmQtPmNsZWFyRGF0
YShleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCA4NDdiY2U0
ZDZhZTdjNGMzNzUxYWZiMTJlYWE2NDQ4YjYyNzhlMDY0Li5lMDBhMjQ4ZTE1MzQ2YWEwNjEzNWJm
ZjdjMTI2YjhjMjE4MTQ2NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFN0cmlu
ZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmlu
ZyYgcHJlZml4KQogICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoIXJldHZhbC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAg
ICAgcmVzdWx0ID0gdXN0cmluZ1RvU3RyaW5nKHJldHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOworICAgICAgICAgICAgcmVzdWx0ID0gcmV0dmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICB9CiAKICAgICBEb2N1bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVu
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4
IDY1NTFkNjY4N2RmZjgyOGU5NTRiYzJjZjFmNGFhNmM4ZmEyNDY1MjUuLmRmNTk2YmEzNjYzMzAw
NDJkMzZjZGJjMTI3MzBiODExYjgwMzNmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcApAQCAtNTAsNyArNTAsNyBAQCBjb25zdCBKU0M6Okhhc2hUYWJs
ZSogZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0CiAKIEpTVmFsdWUganNTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
Q2FjaGUmIHN0cmluZ0NhY2hlLCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKQogewotICAgIEpTU3Ry
aW5nKiB3cmFwcGVyID0ganNTdHJpbmcoZXhlYywgVVN0cmluZyhzdHJpbmdJbXBsKSk7CisgICAg
SlNTdHJpbmcqIHdyYXBwZXIgPSBqc1N0cmluZyhleGVjLCBTdHJpbmcoc3RyaW5nSW1wbCkpOwog
ICAgIHdlYWtBZGQoc3RyaW5nQ2FjaGUsIHN0cmluZ0ltcGwsIFBhc3NXZWFrPEpTU3RyaW5nPih3
cmFwcGVyLCBjdXJyZW50V29ybGQoZXhlYyktPnN0cmluZ1dyYXBwZXJPd25lcigpLCBzdHJpbmdJ
bXBsKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CkBAIC02Niw3ICs2Niw3IEBAIEpTVmFsdWUg
anNPd25lZFN0cmluZ09yTnVsbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKIHsK
ICAgICBpZiAocy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVy
biBqc093bmVkU3RyaW5nKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhzKSk7CisgICAgcmV0dXJuIGpz
T3duZWRTdHJpbmcoZXhlYywgcyk7CiB9CiAKIEpTVmFsdWUganNTdHJpbmdPclVuZGVmaW5lZChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKQEAgLTEwOCwxNCArMTA4LDE0IEBAIFN0
cmluZyB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgcmV0dXJuIHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOworICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiB9CiAKIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB1c3RyaW5nVG9T
dHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogfQogCiBKU1ZhbHVlIGpzRGF0ZU9yTnVs
bChFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB2YWx1ZSkKQEAgLTE0OSwxNCArMTQ5LDE0IEBAIHZv
aWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBleGNlcHRpb24pCiAg
ICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGNlcHRpb24pKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IGV4Y2VwdGlvbi50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGV4Y2VwdGlv
bi50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbk9i
amVjdCA9IGV4Y2VwdGlvbi50b09iamVjdChleGVjKTsKICAgICBpbnQgbGluZU51bWJlciA9IGV4
Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSkudG9JbnQz
MihleGVjKTsKLSAgICBVU3RyaW5nIGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlvbk9iamVj
dC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlv
bk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKIAogICAg
IGlmIChFeGNlcHRpb25CYXNlKiBleGNlcHRpb25CYXNlID0gdG9FeGNlcHRpb25CYXNlKGV4Y2Vw
dGlvbikpCi0gICAgICAgIGVycm9yTWVzc2FnZSA9IHN0cmluZ1RvVVN0cmluZyhleGNlcHRpb25C
YXNlLT5tZXNzYWdlKCkgKyAiOiAiICArIGV4Y2VwdGlvbkJhc2UtPmRlc2NyaXB0aW9uKCkpOwor
ICAgICAgICBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb25CYXNlLT5tZXNzYWdlKCkgKyAiOiAiICAr
IGV4Y2VwdGlvbkJhc2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKICAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nh
c3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpKSB7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9p
ZCByZXBvcnRFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2VwdGlvbikKICAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnJlcG9ydEV4Y2VwdGlvbih1c3RyaW5n
VG9TdHJpbmcoZXJyb3JNZXNzYWdlKSwgbGluZU51bWJlciwgdXN0cmluZ1RvU3RyaW5nKGV4Y2Vw
dGlvblNvdXJjZVVSTCksIDApOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnJlcG9ydEV4
Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGV4Y2VwdGlvblNvdXJjZVVSTCwgMCk7
CiB9CiAKIHZvaWQgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDBjM2Q1Mzc0ODFiZWEy
YTk5Yzk4MzUzYzE0ZDZlMTZmMDAyNDQ5N2QuLjZjZmVkZWVmN2E5ODliZjQ2NzVjMzJhMjU3MGEx
MDFmZWVhNzVhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
CkBAIC0yMzMsNyArMjMzLDYgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAv
LyBDb252ZXJ0IGEgRE9NIGltcGxlbWVudGF0aW9uIGV4Y2VwdGlvbiBjb2RlIGludG8gYSBKYXZh
U2NyaXB0IGV4Y2VwdGlvbiBpbiB0aGUgZXhlY3V0aW9uIHN0YXRlLgogICAgIHZvaWQgc2V0RE9N
RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CiAKLSAgICBKU0M6OkpT
VmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsgLy8gZW1wdHkg
aWYgdGhlIHN0cmluZyBpcyBudWxsCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nU2xvd0Nhc2Uo
SlNDOjpFeGVjU3RhdGUqLCBKU1N0cmluZ0NhY2hlJiwgU3RyaW5nSW1wbCopOwogICAgIEpTQzo6
SlNWYWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gZW1wdHkg
aWYgdGhlIFVSTCBpcyBudWxsCiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzKQpAQCAtMjUyLDExICsyNTEs
OCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgIEpTQzo6SlNWYWx1ZSBqc093
bmVkU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7IAogCiAgICAg
U3RyaW5nIHByb3BlcnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lKTsKLSAgICBTdHJp
bmcgdXN0cmluZ1RvU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYpOwotICAgIEpTQzo6VVN0cmlu
ZyBzdHJpbmdUb1VTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKICAgICBBdG9taWNTdHJpbmcgcHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUpOwotICAgIEF0b21pY1N0
cmluZyB1c3RyaW5nVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJik7CiAgICAgQXRv
bWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAKICAg
ICBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2YWx1ZSBpcyBudWxsCkBAIC0zMTcsNyArMzEzLDcg
QEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICBzdHJ1Y3QgSlNWYWx1ZVRyYWl0
czxTdHJpbmc+IHsKICAgICAgICAgc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgYXJyYXlKU1Zh
bHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBz
dHJpbmdUb1VTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0zNTgsNyArMzU0LDcgQEAgZW51bSBQ
YXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8U3Ry
aW5nPiB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcnJheU5hdGl2ZVZhbHVlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgU3RyaW5nJiBpbmRleGVkVmFs
dWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGluZGV4ZWRWYWx1ZSA9IHVzdHJpbmdUb1N0cmlu
Zyhqc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICBpbmRl
eGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfTsKQEAgLTQwOSw0MiArNDA1LDExIEBA
IGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgdm9pZCBwcmludEVycm9yTWVzc2Fn
ZUZvckZyYW1lKEZyYW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBKU0M6OkpTVmFs
dWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCi0gICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0
cmluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKQotICAgIHsKLSAgICAg
ICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCA9IHMuaW1wbCgpOwotICAgICAgICBpZiAoIXN0cmlu
Z0ltcGwgfHwgIXN0cmluZ0ltcGwtPmxlbmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIGpzRW1w
dHlTdHJpbmcoZXhlYyk7Ci0KLSAgICAgICAgaWYgKHN0cmluZ0ltcGwtPmxlbmd0aCgpID09IDEg
JiYgc3RyaW5nSW1wbC0+Y2hhcmFjdGVycygpWzBdIDw9IDB4RkYpCi0gICAgICAgICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKHMpKTsKLQotICAgICAgICBKU1N0cmlu
Z0NhY2hlJiBzdHJpbmdDYWNoZSA9IGN1cnJlbnRXb3JsZChleGVjKS0+bV9zdHJpbmdDYWNoZTsK
LSAgICAgICAgaWYgKEpTQzo6SlNTdHJpbmcqIHN0cmluZyA9IHN0cmluZ0NhY2hlLmdldChzdHJp
bmdJbXBsKSkKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICAgICAgcmV0dXJuIGpz
U3RyaW5nU2xvd0Nhc2UoZXhlYywgc3RyaW5nQ2FjaGUsIHN0cmluZ0ltcGwpOwotICAgIH0KLQot
ICAgIGlubGluZSBTdHJpbmcgdXN0cmluZ1RvU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYgdSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB1LmltcGwoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlND
OjpVU3RyaW5nIHN0cmluZ1RvVVN0cmluZyhjb25zdCBTdHJpbmcmIHMpCi0gICAgewotICAgICAg
ICByZXR1cm4gSlNDOjpVU3RyaW5nKHMuaW1wbCgpKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgU3Ry
aW5nIHByb3BlcnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwogICAgIH0K
IAotICAgIGlubGluZSBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5nKGNvbnN0IEpT
Qzo6VVN0cmluZyYgdSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcodS5pbXBs
KCkpOwotICAgIH0KLQogICAgIGlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXgg
N2JlOTMzMjhjMjY1NjY0N2Q3ZjFmMGU2MjNhYmE2ZDI1MDc3M2JiMy4uNGVkNDQ5N2ExYmRhNDBi
ZDQyNDcxNjRjNzk4YTAyYmZhMWJlMTk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTYwLDE1ICs2MCwxNSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NRm9ybURhdGFDb25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0SlNET01Gb3JtRGF0YShFeAogSlNWYWx1ZSBKU0RPTUZvcm1EYXRhOjphcHBlbmQoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewotICAg
ICAgICBTdHJpbmcgbmFtZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBTdHJpbmcgbmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgICAgICBpZiAodmFsdWUuaW5oZXJpdHMoJkpT
QmxvYjo6c19pbmZvKSkgewogICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lOwogICAgICAgICAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzICYmICFleGVjLT5hcmd1bWVudCgyKS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gdXN0cmluZ1Rv
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDIpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Cisg
ICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBleGVjLT5hcmd1bWVudCgyKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICBpbXBsKCktPmFwcGVuZChuYW1lLCB0b0Jsb2Io
dmFsdWUpLCBmaWxlbmFtZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW1wbCgpLT5h
cHBlbmQobmFtZSwgdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworICAgICAgICAgICAgaW1wbCgpLT5hcHBlbmQobmFtZSwgdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0
b20uY3BwCmluZGV4IDdmOGQ1ZWM1M2ZmYzNmMzY5YTljYzZmYTI2M2ZhZDJiNmYzYmJmMzkuLjY4
NjlkY2VhNDlmZTYzMDQ4MDdhOTJkN2U5NTMzZDE5YTQ5YTZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcApAQCAtMzQs
NyArMzQsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlzdChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5
KHZhbHVlKTsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3RyaW5nTGlzdCA9IERPTVN0cmlu
Z0xpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVu
Z3RoKCk7ICsraSkKLSAgICAgICAgc3RyaW5nTGlzdC0+YXBwZW5kKHVzdHJpbmdUb1N0cmluZyhh
cnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAg
IHN0cmluZ0xpc3QtPmFwcGVuZChhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKIAogICAgIHJldHVybiBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApp
bmRleCA4OTFlYTZhYjQxYjYxODlhZDhkNDQ4MGZlYjc4NGQ0ZmE0YjQ0MDdlLi5lY2Y4OThhN2Qx
ZDc3NDlhOTQzNDQ1YmQzMjVmOGNhZDU5ZWI2OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgdGhpc09iamVjdC0+bV9pbXBsLT5nZXROYW1l
cyhuYW1lcyk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJ
ZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhuYW1lc1tpXSkpKTsKKyAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBuYW1lc1tpXSkpOwogCiAgICAgQmFzZTo6
Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBib29sIEpT
RE9NU3RyaW5nTWFwOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7Ci0gICAgU3Ry
aW5nIHN0cmluZ1ZhbHVlID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGExZjBjMWIyMjYw
ZDVmYjZmMGJjZjkxN2JlYzZmZTZhNTViN2NkM2MuLjM0MzlhZmI0NTEzYzQ1MmY5YTU5ZTAwM2U3
OTNjMGEyMDI4ZDQ3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQyMSwxMiArNDIxLDEyIEBAIHZvaWQgSlNET01XaW5kb3c6
OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICB9CiAjZW5k
aWYKIAotICAgIFVTdHJpbmcgbG9jYXRpb25TdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGxvY2F0aW9uU3RyaW5nID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKExvY2F0aW9uKiBsb2NhdGlvbiA9IGltcGwoKS0+bG9jYXRp
b24oKSkKLSAgICAgICAgbG9jYXRpb24tPnNldEhyZWYodXN0cmluZ1RvU3RyaW5nKGxvY2F0aW9u
U3RyaW5nKSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7Cisg
ICAgICAgIGxvY2F0aW9uLT5zZXRIcmVmKGxvY2F0aW9uU3RyaW5nLCBhY3RpdmVET01XaW5kb3co
ZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
ZXZlbnQoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtNDcyLDcgKzQ3Miw3IEBAIEpTVmFsdWUg
SlNET01XaW5kb3c6Om9wZW4oRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmluZyB1cmxTdHJpbmcg
PSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIEF0b21pY1N0cmluZyBmcmFtZU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgpID8gIl9ibGFuayIgOiB1c3RyaW5nVG9BdG9taWNTdHJp
bmcoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBB
dG9taWNTdHJpbmcgZnJhbWVOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51
bGwoKSA/ICJfYmxhbmsiIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgU3RyaW5nIHdpbmRvd0ZlYXR1cmVzU3RyaW5nID0gdmFsdWVUb1N0
cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgyKSk7CkBA
IC02NDEsNyArNjQxLDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcih1c3Ry
aW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlz
LCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFu
KGV4ZWMpKTsKKyAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09i
amVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLCBleGVjLT5h
cmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
fQogCkBAIC02NTUsNyArNjU1LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcih1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlz
dGVuZXIpLCB0aGlzLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKS5nZXQoKSwgZXhlYy0+YXJn
dW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVu
ZXIoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBKU0V2ZW50
TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBjdXJyZW50
V29ybGQoZXhlYykpLmdldCgpLCBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOwog
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDc1OGU3Mjc4YjE0OGNmMjExMTUxNGY0
MTRmYThiYjkwMzhhYjBiZDUuLjU1ZDk5YmM4MGU1NGFlZDY5N2E2YmZmNTk0MzNmMjNlM2Q0M2I5
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBh
c3NSZWZQdHI8RE9NV2luZG93PiBkb21XaW5kb3cpCiAvLyBKU09iamVjdCBtZXRob2RzCiAvLyAt
LS0tCiAKLVVTdHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0
KiBvYmplY3QpCitTdHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9
IGpzQ2FzdDxjb25zdCBKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhp
c09iamVjdC0+d2luZG93KCktPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT53
aW5kb3coKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmgKaW5kZXggNWYyMmQ3YjE4ZDQ5ZGIzNDJmNjA3NTMzOWRjNGNmNjM1MzJmYmUxZi4uODRhYzRm
MzM2ZTE1MDJhYzEwMjZiZTkzMmIzMmJlYjg2OGI4MTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAg
ICAgICBzdGF0aWMgSlNDOjpVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0Kik7
CisgICAgICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqKTsK
ICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1v
dGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNl
TW90aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IDhlOTk0OGYxYWMyMGI5ZGU4ODhlNjgzN2E0NmQz
YmFlZTZlZjBmZjMuLjE5M2E2YzRhMzUyZTMxZjNjZjA1ZTc5MDhkOWM2YjdlYjA1ODY0MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9u
RXZlbnRDdXN0b20uY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlv
bkV2ZW50OjppbnRlcnZhbChFeGVjU3RhdGUqKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90
aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
Y29uc3QgU3RyaW5nJiB0eXBlID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgY29uc3QgU3RyaW5nIHR5cGUgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgYm9vbCBidWJi
bGVzID0gZXhlYy0+YXJndW1lbnQoMSkudG9Cb29sZWFuKGV4ZWMpOwogICAgIGJvb2wgY2FuY2Vs
YWJsZSA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVu
dEN1c3RvbS5jcHAKaW5kZXggZDAzYjc0MGFhNWZmZDNkYmVkZjE1NTI0ZmE3ODY4Y2EyMTg5YjUz
NC4uMWYwNzBmZTYwZGM0MjU1NGQ4YzBhNWU5NDc3NTk2ZjdkNDE4NmI2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9u
RXZlbnRDdXN0b20uY3BwCkBAIC03MCw3ICs3MCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50OjphYnNvbHV0ZShFeGVjU3RhdGUqKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIGNvbnN0IFN0cmluZyYgdHlwZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGNvbnN0IFN0cmlu
ZyB0eXBlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIGJvb2wgYnViYmxlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvQm9vbGVhbihleGVjKTsKICAg
ICBib29sIGNhbmNlbGFibGUgPSBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYyk7CiAg
ICAgLy8gSWYgYWxwaGEsIGJldGEgb3IgZ2FtbWEgYXJlIG51bGwgb3IgdW5kZWZpbmVkLCBtYXJr
IHRoZW0gYXMgbm90IHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5jcHAKaW5kZXggODViNzU5MTk4YmI0YWYyODBlOGI2YzhhNzM3ZmMyYWZmMTUyN2Qx
MC4uZDRlMjI2NDczOTY0OGNmYmUyNzA1ZDNiMWQ1MTdjZDMyZmU0YmYyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAg
dm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU1ZhbHVlIHZhbHVlLCBEaWN0aW8KIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFN0cmluZyYgcmVzdWx0KQogewotICAg
IHJlc3VsdCA9IHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgIHJlc3VsdCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIH0K
IAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9p
ZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIFZlY3RvcjxTdHJpbmc+JgogICAgICAgICBKU1ZhbHVlIGl0ZW1WYWx1ZSA9IG9iamVjdC0+
Z2V0KGV4ZWMsIGkpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKGl0ZW1W
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChpdGVtVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICB9CiB9CiAKQEAg
LTE4Miw3ICsxODIsNyBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSGFzaFNldDxBdG9taWNTdAogICAgICAgICBKU1ZhbHVl
IGl0ZW1WYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOwogICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJlc3VsdC5hZGQodXN0
cmluZ1RvQXRvbWljU3RyaW5nKGl0ZW1WYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
KTsKKyAgICAgICAgcmVzdWx0LmFkZChpdGVtVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEpTRGljdGlv
bmFyeTo6Z2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBTdHJpbgogICAgIGlmICh0cnlHZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUudXRmOCgpLmRh
dGEoKSwgdmFsdWUpICE9IFByb3BlcnR5Rm91bmQgfHwgdmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0gdXN0cmluZ1RvU3RyaW5n
KHZhbHVlLnRvU3RyaW5nKG1fZXhlYyktPnZhbHVlKG1fZXhlYykpOworICAgIHJlc3VsdCA9IHZh
bHVlLnRvV1RGU3RyaW5nKG1fZXhlYyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNjQ3YjQ0
NjFlYWU0MGFiNDViYjYyNWViYzliZjI3ZmU0NWFkNDlmZC4uNTQ4ODQwNGI0OGE0N2M5Nzk1ZmYw
M2UwMjJiNmFkZjY5NWM2NGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTY5LDEyICs2OSwxMiBAQCB2b2lkIEpTRG9jdW1lbnQ6
OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBVU3RyaW5nIGxvY2F0aW9uU3RyaW5nID0gdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2NhdGlvblN0cmlu
ZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChMb2NhdGlvbiogbG9jYXRp
b24gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCkpCi0gICAgICAg
IGxvY2F0aW9uLT5zZXRIcmVmKHVzdHJpbmdUb1N0cmluZyhsb2NhdGlvblN0cmluZyksIGFjdGl2
ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgICAgICBsb2NhdGlv
bi0+c2V0SHJlZihsb2NhdGlvblN0cmluZywgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERP
TVdpbmRvdyhleGVjKSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDc3OWU4ZDcz
OWQ1MzY5MzNiNjY3ZjY0MjJkNDVhZTRiYjMzNzc4NTkuLjVlZWI0MTAxODFhNGIyODM4MGY2MDEz
OGQzNmFkYWNjN2RlZDBlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSlNFdmVudExpc3RlbmVy
OjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0CiAgICAgICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaWYgKCFyZXR2YWwuaXNVbmRlZmluZWRPck51bGwoKSAmJiBl
dmVudC0+c3RvcmVzUmVzdWx0QXNTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICBldmVudC0+c3Rv
cmVSZXN1bHQodXN0cmluZ1RvU3RyaW5nKHJldHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpKTsKKyAgICAgICAgICAgICAgICBldmVudC0+c3RvcmVSZXN1bHQocmV0dmFsLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgICAgICBpZiAobV9pc0F0dHJpYnV0ZSkgewog
ICAgICAgICAgICAgICAgIGlmIChyZXR2YWwuaXNGYWxzZSgpKQogICAgICAgICAgICAgICAgICAg
ICBldmVudC0+cHJldmVudERlZmF1bHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggODU0NjcyOWY0
ZDc1MzkwMDI4MTI0NzkwYTZmN2UwODY3ZDllYTRmNi4uNTU2MWJjYWQwYjczNzBhNWQwN2NjZTI1
MmMzY2ZmMDcyODhmZDgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgewog
ICAgICAgICAvLyBTdXBwb3J0IGZvciBkb2N1bWVudC5hbGwoPGluZGV4PikgZXRjLgotICAgICAg
ICBVU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSB0b1VJbnQz
MkZyb21TdHJpbmdJbXBsKHN0cmluZy5pbXBsKCkpOwogICAgICAgICBpZiAoaW5kZXggIT0gUHJv
cGVydHlOYW1lOjpOb3RBbkluZGV4KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTKGV4ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPml0
ZW0oaW5kZXgpKSk7CkBAIC04MCwxMCArODAsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9
CiAKICAgICAvLyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0aGUgaW5kZXggb2YgdGhlIGl0
ZW0gd2Ugd2FudAotICAgIFVTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIHVuc2lnbmVkIGluZGV4ID0gdG9VSW50MzJGcm9t
U3RyaW5nSW1wbChleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyku
aW1wbCgpKTsKKyAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIHVuc2lnbmVkIGluZGV4ID0gdG9VSW50MzJGcm9tU3Ry
aW5nSW1wbChleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKS5pbXBsKCkpOwogICAg
IGlmIChpbmRleCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHsKLSAgICAgICAgaWYgKE5v
ZGUqIG5vZGUgPSBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1XaXRoSW5kZXgodXN0cmluZ1RvQXRvbWlj
U3RyaW5nKHN0cmluZyksIGluZGV4KSkKKyAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBjb2xsZWN0
aW9uLT5uYW1lZEl0ZW1XaXRoSW5kZXgoc3RyaW5nLCBpbmRleCkpCiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3Qo
KSwgbm9kZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzZjlhMzlmZDI1NjEzNzBi
ODA5MGY5NDMyN2YzMWY1NWYwZjVjMmM4Li41OTJiMjllZTkzZGY5MDFjZDk3ODdiMDVlOTRlYWFl
YjgzN2FjZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxD
YW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2Fz
dDxIVE1MQ2FudmFzRWxlbWVudCo+KGltcGwoKSk7Ci0gICAgY29uc3QgVVN0cmluZyYgY29udGV4
dElkID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IGNvbnN0IFN0cmluZyYgY29udGV4dElkID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIFJlZlB0cjxDYW52YXNDb250ZXh0QXR0cmlidXRlcz4gYXR0
cnM7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGlmIChjb250ZXh0SWQgPT0gImV4cGVyaW1lbnRh
bC13ZWJnbCIgfHwgY29udGV4dElkID09ICJ3ZWJraXQtM2QiKSB7CkBAIC03NCw3ICs3NCw3IEBA
IEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0ID0gY2FudmFzLT5nZXRDb250ZXh0KHVzdHJpbmdUb1N0cmluZyhjb250ZXh0SWQpLCBh
dHRycy5nZXQoKSk7CisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IGNhbnZh
cy0+Z2V0Q29udGV4dChjb250ZXh0SWQsIGF0dHJzLmdldCgpKTsKICAgICBpZiAoIWNvbnRleHQp
CiAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihjb250ZXh0KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNWUy
ZjM1ZWZkMzkzOGJiYWEwYjk1ODlmOTMxZDNhY2Q3Nzk2Yjc1YS4uM2M2ODkzYjAwODc5NDkwNTNm
ZmYzM2Q1YzM0MWY1MThhMDYyYThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtMTM2LDE1ICsxMzYsMTUgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGRvY3VtZW50V3JpdGUoRXhlY1N0YXRlKiBleGVjLCBIVE1MRG9jdW1l
bnQqIGRvY3VtZW50LCBOZXdsaW4KIAogICAgIHNpemVfdCBzaXplID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpOwogCi0gICAgVVN0cmluZyBmaXJzdFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICBTZWdtZW50ZWRTdHJpbmcgc2VnbWVudGVk
U3RyaW5nID0gdXN0cmluZ1RvU3RyaW5nKGZpcnN0U3RyaW5nKTsKKyAgICBTdHJpbmcgZmlyc3RT
dHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cisg
ICAgU2VnbWVudGVkU3RyaW5nIHNlZ21lbnRlZFN0cmluZyA9IGZpcnN0U3RyaW5nOwogICAgIGlm
IChzaXplICE9IDEpIHsKICAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgc2VnbWVudGVk
U3RyaW5nLmNsZWFyKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDE7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHN1YnNlcXVl
bnRTdHJpbmcgPSBleGVjLT5hcmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
Ci0gICAgICAgICAgICAgICAgc2VnbWVudGVkU3RyaW5nLmFwcGVuZChTZWdtZW50ZWRTdHJpbmco
dXN0cmluZ1RvU3RyaW5nKHN1YnNlcXVlbnRTdHJpbmcpKSk7CisgICAgICAgICAgICAgICAgU3Ry
aW5nIHN1YnNlcXVlbnRTdHJpbmcgPSBleGVjLT5hcmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgc2VnbWVudGVkU3RyaW5nLmFwcGVuZChTZWdt
ZW50ZWRTdHJpbmcoc3Vic2VxdWVudFN0cmluZykpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5w
dXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElu
cHV0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMzZmZDhiNzQ2YWVmM2UzNzMwNmQyYjE4ZDk3YWRj
MDYwZGQwNTUwMC4uMzljYmM0NmFlYWI2YmUzZjkyMTlmNzA0YjdlMjg3MmY5NDQ4MmRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1l
bnRDdXN0b20uY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW5wdXQtPnNldFNlbGVjdGlvbkRpcmVjdGlvbih1
c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAg
aW5wdXQtPnNldFNlbGVjdGlvbkRpcmVjdGlvbih2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOwogfQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFu
Z2UoRXhlY1N0YXRlKiBleGVjKQpAQCAtOTcsNyArOTcsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0
RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgaW50IHN0
YXJ0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKICAgICBpbnQgZW5kID0gZXhl
Yy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAgICBTdHJpbmcgZGlyZWN0aW9uID0gdXN0
cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDIpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgU3RyaW5nIGRpcmVjdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKIAogICAgIGlucHV0LT5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwg
ZW5kLCBkaXJlY3Rpb24pOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCmluZGV4IDE0MTM3NTA3OGE3OTRiYWM0ZDJjYWIzZWRjYmZmZmMwZGEyOGFlMTEuLmE2M2Rk
NGY1YjkwYWEyNDI2MjlkM2NjNjRiMTEwYjg0ZWNmNDMzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5h
bENvbnN0cnVjdG9yTmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50
b1RoaXNPYmplY3QoZXhlYyk7Ci0gICAgVVN0cmluZyByZXN1bHQgPSB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09iamVjdCk7CisgICAgU3RyaW5nIHJlc3VsdCA9IHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KTsKICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgcmVzdWx0KTsKIH0KIApAQCAtMTcwLDcgKzE3MCw3IEBAIEpTVmFs
dWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgaW50IGxpbmVOdW1iZXIgPSBzb3VyY2VDb2RlLT5maXJzdExpbmUoKTsKICAgICBpZiAo
bGluZU51bWJlcikKICAgICAgICAgbGluZU51bWJlciAtPSAxOyAvLyBJbiB0aGUgaW5zcGVjdG9y
IHByb3RvY29sIGFsbCBwb3NpdGlvbnMgYXJlIDAtYmFzZWQgd2hpbGUgaW4gU291cmNlQ29kZSB0
aGV5IGFyZSAxLWJhc2VkCi0gICAgVVN0cmluZyBzY3JpcHRJZCA9IFVTdHJpbmc6Om51bWJlcihz
b3VyY2VDb2RlLT5wcm92aWRlcigpLT5hc0lEKCkpOworICAgIFN0cmluZyBzY3JpcHRJZCA9IFN0
cmluZzo6bnVtYmVyKHNvdXJjZUNvZGUtPnByb3ZpZGVyKCktPmFzSUQoKSk7CiAKICAgICBKU09i
amVjdCogbG9jYXRpb24gPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKICAgICBsb2NhdGlv
bi0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAibGluZU51
bWJlciIpLCBqc051bWJlcihsaW5lTnVtYmVyKSk7CkBAIC0xNzgsMTAgKzE3OCwxMCBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwog
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAibG9jYXRpb24iKSwgbG9jYXRpb24pOwotICAgIFVTdHJpbmcgbmFtZSA9IGZ1bmN0aW9uLT5u
YW1lKGV4ZWMpOworICAgIFN0cmluZyBuYW1lID0gZnVuY3Rpb24tPm5hbWUoZXhlYyk7CiAgICAg
aWYgKCFuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIG5hbWUp
KTsKLSAgICBVU3RyaW5nIGRpc3BsYXlOYW1lID0gZnVuY3Rpb24tPmRpc3BsYXlOYW1lKGV4ZWMp
OworICAgIFN0cmluZyBkaXNwbGF5TmFtZSA9IGZ1bmN0aW9uLT5kaXNwbGF5TmFtZShleGVjKTsK
ICAgICBpZiAoIWRpc3BsYXlOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBq
c1N0cmluZyhleGVjLCBkaXNwbGF5TmFtZSkpOwogICAgIC8vIEZJWE1FOiBwcm92aWRlIGZ1bmN0
aW9uIHNjb3BlIGRhdGEgaW4gInNjb3Blc1JhdyIgcHJvcGVydHkgd2hlbiBKU0Mgc3VwcG9ydHMg
aXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAKaW5kZXggZTYzZjQ5NzRjZTc3MjA0MDU2YmNlNGI4NzU2OWZmZjIxNDlj
MTE3ZS4uY2RlNzg3NTUwZWI3ODE4MDM0NzdlYmRiODE2ZGQzY2JhNTc0ZTY5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgUwogewogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29k
ZSA9IG1ha2VTb3VyY2Uoc3RyaW5nVG9VU3RyaW5nKHNvdXJjZSkpOworICAgIFNvdXJjZUNvZGUg
c291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNlKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBzY3Jp
cHRTdGF0ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRl
eCAzMzhmNGM0Nzk0MDEzYjY3M2VkZDU5Mzk3YmI3NzY5MjI1NjdhMjBjLi40YmYyMmUzMmM3ZjUy
ZjJhNGYyNTIyMDU3MzZjZDY0YjEzOWQ5NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBA
IC05OSw3ICs5OSw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBDb250ZXh0TWVuCiAgICAgICAgIGlmICghdHlw
ZS5pc1N0cmluZygpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU3RyaW5nIHR5
cGVTdHJpbmcgPSB1c3RyaW5nVG9TdHJpbmcodHlwZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHR5cGUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgICAgICBpZiAodHlwZVN0cmluZyA9PSAic2VwYXJhdG9yIikgewogICAg
ICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oU2VwYXJhdG9yVHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uLApA
QCAtMTExLDEyICsxMTEsMTIgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1z
KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIENvbnRleHRNZW4KICAgICAgICAgICAg
IHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhleGVjLCBzdWJJdGVtc0FycmF5LCBzdWJNZW51KTsK
ICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFN1Ym1lbnVUeXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c3RyaW5nVG9TdHJpbmcobGFiZWwu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZzdWJNZW51KTsKICAgICAgICAgICAgIG1lbnUuYXBwZW5kSXRl
bShpdGVtKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENvbnRleHRNZW51QWN0aW9u
IHR5cGVkSWQgPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oQ29udGV4dE1lbnVJdGVt
QmFzZUN1c3RvbVRhZyArIGlkLnRvSW50MzIoZXhlYykpOwotICAgICAgICAgICAgQ29udGV4dE1l
bnVJdGVtIG1lbnVJdGVtKCh0eXBlU3RyaW5nID09ICJjaGVja2JveCIgPyBDaGVja2FibGVBY3Rp
b25UeXBlIDogQWN0aW9uVHlwZSksIHR5cGVkSWQsIHVzdHJpbmdUb1N0cmluZyhsYWJlbC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBt
ZW51SXRlbSgodHlwZVN0cmluZyA9PSAiY2hlY2tib3giID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6
IEFjdGlvblR5cGUpLCB0eXBlZElkLCBsYWJlbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
OwogICAgICAgICAgICAgaWYgKCFlbmFibGVkLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAg
ICAgbWVudUl0ZW0uc2V0RW5hYmxlZChlbmFibGVkLnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAg
ICAgICBpZiAoIWNoZWNrZWQuaXNVbmRlZmluZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW50ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnRlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjBhMjE0YTczODcxYmEx
MDg2NDJjMTY4ZDBiYmRjYWZkNjQzZWM5NC4uZTc5YTg1OTlkZWUyMTVhOGEwNDUzYzdhYTY2NmE0
ZTEzNTZjZmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnRl
bnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnRl
bnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTYxLDExICs2MSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTSW50ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTSW50ZW50KEV4ZWNTdGF0
ZSogZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0KCkpKSk7CiAgICAgfQogCi0gICAg
Y29uc3QgU3RyaW5nJiBhY3Rpb24odXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDog
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcgYWN0aW9uKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgp
ID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpLnRvV1RGU3RyaW5nKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAg
ICBjb25zdCBTdHJpbmcmIHR5cGUodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDog
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcgdHlwZShNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5k
ZWZpbmVkKS50b1dURlN0cmluZyhleGVjKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHAKaW5kZXggNDBkM2EzZmI4YWQ0NGIwMzY1N2Q4MTA0N2QxZDJkM2E3MDhj
MjAwMi4uMzRhOTU1NjA4MGFlMmFjZjM4N2UxNmJmY2ZiNGY3OTNkYWM2MzZiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJh
bWVDdXN0b20uY3BwCkBAIC02Myw5ICs2Myw5IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp0eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBzd2l0Y2ggKGltcGwoKS0+
dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRGVidWdnZXJDYWxsRnJhbWU6OkZ1bmN0aW9uVHlwZToK
LSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBVU3RyaW5nKCJmdW5jdGlvbiIpKTsK
KyAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoImZ1bmN0aW9u
IikpOwogICAgICAgICBjYXNlIERlYnVnZ2VyQ2FsbEZyYW1lOjpQcm9ncmFtVHlwZToKLSAgICAg
ICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBVU3RyaW5nKCJwcm9ncmFtIikpOworICAgICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicHJvZ3JhbSIpKTsKICAg
ICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggODg3OTcyN2UyOGRlYzM1
YzEyMmM2ZGE2YzM1ZWFhMTkzYjMyNDg1Zi4uMTU0Y2MwMzM3NTliOWUwZjgwMzFlNzAwNDUwYmFi
ZDdkZWZmNWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTk0LDEwICs5NCwxMCBAQCBKU09iamVjdCogSlNMYXp5RXZl
bnRMaXN0ZW5lcjo6aW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
ZXhlYwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwog
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZChqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKG1fZXZlbnRQYXJhbWV0ZXJOYW1lKSkp
OworICAgIGFyZ3MuYXBwZW5kKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBtX2V2ZW50UGFyYW1l
dGVyTmFtZSkpOwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIG1fY29kZSkpOwogCi0g
ICAgSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVu
YWJsZWRDaGVjayhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIElkZW50
aWZpZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKG1fZnVuY3Rpb25OYW1lKSksIHN0cmluZ1RvVVN0
cmluZyhtX3NvdXJjZVVSTCksIG1fcG9zaXRpb24pOyAvLyBGSVhNRTogaXMgZ2xvYmFsRXhlYyBv
az8KKyAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncywg
SWRlbnRpZmllcihleGVjLCBtX2Z1bmN0aW9uTmFtZSksIG1fc291cmNlVVJMLCBtX3Bvc2l0aW9u
KTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CiAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CiAgICAgICAgIGV4
ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDVjYjBjMDczZTRlMTdhMGM3NGZjMDU5ZjBkMjg1ZWJm
NmY1NTQwNjUuLjMxNGJkYzk2YzY2ZThmMjdlMjFiMDBlNzVkNmJiZTEyMTNjMDU4NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0x
NzksNzYgKzE3OSw3NiBAQCBib29sIEpTTG9jYXRpb246OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYQogCiB2b2lkIEpTTG9jYXRp
b246OnNldEhyZWYoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJp
bmcgaHJlZiA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
aHJlZiA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldEhyZWYodXN0
cmluZ1RvU3RyaW5nKGhyZWYpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93
KGV4ZWMpKTsKKyAgICBpbXBsKCktPnNldEhyZWYoaHJlZiwgYWN0aXZlRE9NV2luZG93KGV4ZWMp
LCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CiB9CiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0UHJvdG9j
b2woRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJpbmcgcHJvdG9j
b2wgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHByb3Rv
Y29sID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGltcGwoKS0+c2V0UHJvdG9jb2wodXN0cmluZ1RvU3RyaW5nKHByb3RvY29sKSwgYWN0
aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSwgZWMpOworICAgIGltcGwo
KS0+c2V0UHJvdG9jb2wocHJvdG9jb2wsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01X
aW5kb3coZXhlYyksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogfQogCiB2
b2lkIEpTTG9jYXRpb246OnNldEhvc3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQog
ewotICAgIFVTdHJpbmcgaG9zdCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgaG9zdCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkt
PnNldEhvc3QodXN0cmluZ1RvU3RyaW5nKGhvc3QpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZp
cnN0RE9NV2luZG93KGV4ZWMpKTsKKyAgICBpbXBsKCktPnNldEhvc3QoaG9zdCwgYWN0aXZlRE9N
V2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CiB9CiAKIHZvaWQgSlNMb2NhdGlv
bjo6c2V0SG9zdG5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVT
dHJpbmcgaG9zdG5hbWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
U3RyaW5nIGhvc3RuYW1lID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+
c2V0SG9zdG5hbWUodXN0cmluZ1RvU3RyaW5nKGhvc3RuYW1lKSwgYWN0aXZlRE9NV2luZG93KGV4
ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAgaW1wbCgpLT5zZXRIb3N0bmFtZShob3N0
bmFtZSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CiB9CiAK
IHZvaWQgSlNMb2NhdGlvbjo6c2V0UG9ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgVVN0cmluZyBwb3J0ID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworICAgIFN0cmluZyBwb3J0ID0gdmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRQb3J0
KHVzdHJpbmdUb1N0cmluZyhwb3J0KSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdp
bmRvdyhleGVjKSk7CisgICAgaW1wbCgpLT5zZXRQb3J0KHBvcnQsIGFjdGl2ZURPTVdpbmRvdyhl
eGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNldFBh
dGhuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIHBh
dGhuYW1lID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBw
YXRobmFtZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldFBhdGhu
YW1lKHVzdHJpbmdUb1N0cmluZyhwYXRobmFtZSksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmly
c3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+c2V0UGF0aG5hbWUocGF0aG5hbWUsIGFj
dGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQogCiB2b2lkIEpT
TG9jYXRpb246OnNldFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0g
ICAgVVN0cmluZyBwYXRobmFtZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgcGF0aG5hbWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1w
bCgpLT5zZXRTZWFyY2godXN0cmluZ1RvU3RyaW5nKHBhdGhuYW1lKSwgYWN0aXZlRE9NV2luZG93
KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAgaW1wbCgpLT5zZXRTZWFyY2gocGF0
aG5hbWUsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQog
CiB2b2lkIEpTTG9jYXRpb246OnNldEhhc2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQogewotICAgIFVTdHJpbmcgaGFzaCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgaGFzaCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBs
KCktPnNldEhhc2godXN0cmluZ1RvU3RyaW5nKGhhc2gpLCBhY3RpdmVET01XaW5kb3coZXhlYyks
IGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKKyAgICBpbXBsKCktPnNldEhhc2goaGFzaCwgYWN0aXZl
RE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CiB9CiAKIEpTVmFsdWUgSlNM
b2NhdGlvbjo6cmVwbGFjZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgVVN0cmluZyB1cmxTdHJp
bmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
U3RyaW5nIHVybFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIGltcGwoKS0+cmVwbGFjZSh1c3RyaW5nVG9TdHJpbmcodXJsU3Ry
aW5nKSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAg
aW1wbCgpLT5yZXBsYWNlKHVybFN0cmluZywgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERP
TVdpbmRvdyhleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTI2MCwx
MCArMjYwLDEwIEBAIEpTVmFsdWUgSlNMb2NhdGlvbjo6cmVsb2FkKEV4ZWNTdGF0ZSogZXhlYykK
IAogSlNWYWx1ZSBKU0xvY2F0aW9uOjphc3NpZ24oRXhlY1N0YXRlKiBleGVjKQogewotICAgIFVT
dHJpbmcgdXJsU3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBpbXBsKCktPmFzc2lnbih1c3RyaW5nVG9T
dHJpbmcodXJsU3RyaW5nKSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhl
eGVjKSk7CisgICAgaW1wbCgpLT5hc3NpZ24odXJsU3RyaW5nLCBhY3RpdmVET01XaW5kb3coZXhl
YyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3Rh
dGUuaAppbmRleCA4MzhlM2VkYjM5MjBmNTZhZTVkNmUzYTgwYjI2NjA0MjM1OWMzNGNmLi45NjBj
YmJmNTMwMDkxNjc0NmJjYTVmNWFkNDI0YWE0NjVkYmZjYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaApAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyByZXNvdXJjZU5hbWU7CiAgICAgICAgIGludCBs
aW5lTnVtYmVyID0gMTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGVKUykg
ewotICAgICAgICAgICAgcmVzb3VyY2VOYW1lID0gdXN0cmluZ1RvU3RyaW5nKGNhbGxEYXRhLmpz
LmZ1bmN0aW9uRXhlY3V0YWJsZS0+c291cmNlVVJMKCkpOworICAgICAgICAgICAgcmVzb3VyY2VO
YW1lID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5zb3VyY2VVUkwoKTsKICAgICAg
ICAgICAgIGxpbmVOdW1iZXIgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmxpbmVO
bygpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc291cmNlTmFtZSA9ICJ1bmRlZmlu
ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZl
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRD
dXN0b20uY3BwCmluZGV4IDY0ZmNlZjg4YTUyMTIyYWE5OTk0ZmVmZTBkMDA2ZjQ0YWFiMjcxYWUu
LmRlMjUxNzI4N2Q1OGIzNDk0NTUwYzhiMWFiOTY4MzlkZjY1ZTUxNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTEw
MiwxMSArMTAyLDExIEBAIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OnBvcnRzKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIAogc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50
KEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBj
b25zdCBVU3RyaW5nJiB0eXBlQXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyYgdHlwZUFyZyA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBib29sIGNhbkJ1YmJsZUFyZyA9
IGV4ZWMtPmFyZ3VtZW50KDEpLnRvQm9vbGVhbihleGVjKTsKICAgICBib29sIGNhbmNlbGFibGVB
cmcgPSBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgY29uc3QgVVN0cmlu
ZyYgb3JpZ2luQXJnID0gZXhlYy0+YXJndW1lbnQoNCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwotICAgIGNvbnN0IFVTdHJpbmcmIGxhc3RFdmVudElkQXJnID0gZXhlYy0+YXJndW1lbnQo
NSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBvcmlnaW5B
cmcgPSBleGVjLT5hcmd1bWVudCg0KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
Y29uc3QgU3RyaW5nIGxhc3RFdmVudElkQXJnID0gZXhlYy0+YXJndW1lbnQoNSkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIERPTVdpbmRvdyogc291cmNlQXJnID0gdG9ET01XaW5k
b3coZXhlYy0+YXJndW1lbnQoNikpOwogICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBtZXNz
YWdlUG9ydHM7CiAgICAgT3duUHRyPEFycmF5QnVmZmVyQXJyYXk+IGFycmF5QnVmZmVyczsKQEAg
LTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGhhbmRsZUluaXRNZXNzYWdlRXZl
bnQoSlNNZXNzYWdlRXZlbnQqIGpzRXZlbnQsIEpTQzo6RXhlY1N0YQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAogICAgIE1lc3NhZ2VFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxN
ZXNzYWdlRXZlbnQqPihqc0V2ZW50LT5pbXBsKCkpOwotICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2
ZW50KHVzdHJpbmdUb0F0b21pY1N0cmluZyh0eXBlQXJnKSwgY2FuQnViYmxlQXJnLCBjYW5jZWxh
YmxlQXJnLCBkYXRhQXJnLCB1c3RyaW5nVG9TdHJpbmcob3JpZ2luQXJnKSwgdXN0cmluZ1RvU3Ry
aW5nKGxhc3RFdmVudElkQXJnKSwgc291cmNlQXJnLCBtZXNzYWdlUG9ydHMucmVsZWFzZSgpKTsK
KyAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVBcmcsIGNhbmNl
bGFibGVBcmcsIGRhdGFBcmcsIG9yaWdpbkFyZywgbGFzdEV2ZW50SWRBcmcsIHNvdXJjZUFyZywg
bWVzc2FnZVBvcnRzLnJlbGVhc2UoKSk7CiAgICAganNFdmVudC0+bV9kYXRhLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIGpzRXZlbnQsIGRhdGFBcmcuanNWYWx1ZSgpKTsKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCmluZGV4IDQ4MDAzNTU2NTNmYTgzMTVj
MzI2MTMwMGU0ZGQwZmM1ZWU1MjRjNmMuLjM5N2UwOGM5YzU3ODljN2FhZWE4NGNjN2ZhNDgyZDZi
YzRhZGJjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVz
dWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcApAQCAtNzUsNyArNzUsNyBAQCBKU1ZhbHVl
IEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgb2JqZWN0LT5w
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0
cmluZyhtX2ltcGwtPmNvbHVtbk5hbWVzKClbaV0pKSwganNWYWx1ZSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsIG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSksIGpzVmFsdWUsIERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAK
aW5kZXggYTNjMTk4Zjg1NzFhMmE2NmQ2YTIyYzA0NzRjMGUyNzVmNWMzODY3Zi4uN2E5MGM0M2Jm
MjJlOTc4OTAyNWNiZjMwNTA2NzJkZjAxYmFmYjQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgU3RyaW5nIHNx
bFN0YXRlbWVudCA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQgPSBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtODEsNyArODEs
NyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQodmFsdWUuYXNOdW1iZXIoKSk7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVu
dCB0byBhIHN0cmluZyBhbmQgYXBwZW5kIGl0Ci0gICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFw
cGVuZCh1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7
CisgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOwogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9u
U3luY0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0
aW9uU3luY0N1c3RvbS5jcHAKaW5kZXggOTZjMTg4NGNiOTViYjgxZWQxNzk1M2UyZmVjOGUzODIz
ODlhMjc2ZC4uMzNmODQzNDQ3M2M0ZGM4MDU2YmU5ZTFjNWE2YTRjMzI2ZGZmMjFmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25T
eW5jQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb25T
eW5jOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgfQogCi0gICAgU3RyaW5nIHNxbFN0YXRlbWVudCA9IHVzdHJpbmdUb1N0cmlu
ZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0
cmluZyBzcWxTdGF0ZW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIApAQCAtODAsNyArODAsNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rp
b25TeW5jOjpleGVjdXRlU3FsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICBzcWxW
YWx1ZXMuYXBwZW5kKHZhbHVlLmFzTnVtYmVyKCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgYXJndW1lbnQgdG8gYSBzdHJpbmcgYW5kIGFwcGVu
ZCBpdAotICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgICAgICAgICAgICAgIHNxbFZh
bHVlcy5hcHBlbmQodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAg
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCmluZGV4IGM3OWI3OTNmYTI2
MWZlMmQ4NmIyODMzOTI2OTQ4M2VlOGVkZDk5ZGEuLjdmNmViMjhmMDJiZDZlNjZmZTdjYmFlNmQ1
YWI1NDljOTFhYjFkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U2hhcmVkV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKQEAgLTYyLDggKzYyLDggQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1NoYXJl
ZFdvcmtlcigKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVj
KSk7CiAKLSAgICBVU3RyaW5nIHNjcmlwdFVSTCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICBVU3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIHNjcmlw
dFVSTCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICBTdHJpbmcgbmFtZTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSkKICAgICAg
ICAgbmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
IApAQCAtNzMsNyArNzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTU2hhcmVkV29ya2VyKAogICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIHVzZSBib3RoIHRoZSBkeW5hbWljIHNjb3BlIGFuZCB0aGUgbGV4aWNhbCBz
Y29wZSAoZHluYW1pYyBzY29wZSBmb3IgcmVzb2x2aW5nIHRoZSB3b3JrZXIgVVJMKQogICAgIERP
TVdpbmRvdyogd2luZG93ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFNoYXJl
ZFdvcmtlcj4gd29ya2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUod2luZG93LT5kb2N1bWVudCgp
LCB1c3RyaW5nVG9TdHJpbmcoc2NyaXB0VVJMKSwgdXN0cmluZ1RvU3RyaW5nKG5hbWUpLCBlYyk7
CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUo
d2luZG93LT5kb2N1bWVudCgpLCBzY3JpcHRVUkwsIG5hbWUsIGVjKTsKICAgICBpZiAoZWMpIHsK
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggYTc5MzdiMDE0NzZjMDkwMjAxZmMwNGRiOTk2ODU3OTYx
NTIwMGQ1NS4uNTJkN2VjNGUxOWIyMTI2ZmI0NmUyODUwYjc5NzU1NDRhYWIyMjM3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgSlNTdG9yYWdlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgSlNTdG9yYWdlKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTU3RvcmFnZSo+KG9iamVjdCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpc09iamVjdC0+bV9pbXBsLT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhl
Yywgc3RyaW5nVG9VU3RyaW5nKHRoaXNPYmplY3QtPm1faW1wbC0+a2V5KGkpKSkpOworICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIHRoaXNPYmplY3QtPm1faW1wbC0+
a2V5KGkpKSk7CiAgICAgICAgIAogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC05MSw3ICs5MSw3IEBAIGJv
b2wgSlNTdG9yYWdlOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QocHJvdG90eXBlKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHVzdHJpbmdU
b1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyBz
dHJpbmdWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCmluZGV4IGFmMDA4MDc0ZjgzZjE1ZWQyMWJmZWZmMDk3MTEwMzdiNzNi
MjY3ZGQuLjVlOTFhODA1YWE3YmMyMWU2NjBkM2VmYWQ2NDhkNGQzMzYyZGY2ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7
CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJH
TFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOwotICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IHVz
dHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgIGNvbnN0IFN0cmluZyBuYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgV2ViR0xFeHRlbnNpb24qIGV4dGVuc2lvbiA9
IGNvbnRleHQtPmdldEV4dGVuc2lvbihuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCBjNDJiM2NiZGZlZGM2ZGQ5YTQwZjBm
MTA0MDU0MGExYjk3ODAwYjMwLi4zZTM1MGNjYzRiN2YzMWFmYzgyY2JiN2YxNGZhNzQ2YTJlNjE5
N2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0
b20uY3BwCkBAIC02MSw3ICs2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNX
ZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJTb2NrZXQoRXhlY1N0CiAgICAgaWYg
KCFleGVjLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgU3RyaW5nIHVy
bFN0cmluZyA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsICJ3cm9uZyBVUkwiKSk7CiAgICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0ID0g
V2ViU29ja2V0OjpjcmVhdGUoY29udGV4dCk7CkBAIC03NCwxNCArNzQsMTQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dl
YlNvY2tldChFeGVjU3QKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKICAg
ICAgICAgICAgIEpTQXJyYXkqIHByb3RvY29sc0FycmF5ID0gYXNBcnJheShwcm90b2NvbHNWYWx1
ZSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvdG9jb2xzQXJyYXkt
Pmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJvdG9jb2wgPSB1c3Ry
aW5nVG9TdHJpbmcocHJvdG9jb2xzQXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gcHJvdG9jb2xz
QXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBwcm90b2Nv
bHMuYXBwZW5kKHByb3RvY29sKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdlYlNvY2tl
dC0+Y29ubmVjdCh1cmxTdHJpbmcsIHByb3RvY29scywgZWMpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gdXN0cmluZ1RvU3RyaW5nKHByb3RvY29sc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICBTdHJpbmcgcHJv
dG9jb2wgPSBwcm90b2NvbHNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAg
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICAgICAgd2ViU29ja2V0LT5jb25u
ZWN0KHVybFN0cmluZywgcHJvdG9jb2wsIGVjKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBKU1ZhbHVl
IEpTV2ViU29ja2V0OjpzZW5kKEV4ZWNTdGF0ZSogZXhlYykKICAgICBlbHNlIGlmIChtZXNzYWdl
LmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpCiAgICAgICAgIHJlc3VsdCA9IGltcGwoKS0+c2Vu
ZCh0b0Jsb2IobWVzc2FnZSksIGVjKTsKICAgICBlbHNlIHsKLSAgICAgICAgU3RyaW5nIHN0cmlu
Z01lc3NhZ2UgPSB1c3RyaW5nVG9TdHJpbmcobWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOworICAgICAgICBTdHJpbmcgc3RyaW5nTWVzc2FnZSA9IG1lc3NhZ2UudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgcmVzdWx0ID0gaW1wbCgp
LT5zZW5kKHN0cmluZ01lc3NhZ2UsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDFmZmY4MWFjMDE3NjBmNjc3
NjNmNDE0MTZmNWUzZjExNzdlNzk4MjEuLjNjYjI3YTUxNmM5YzkxNGU0Yzk2YWVjMWUzOGNhNTU0
NGFkYmM4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIEpTVmFsdWUgSlNXb3JrZXJD
b250ZXh0OjppbXBvcnRTY3JpcHRzKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFZlY3RvcjxTdHJp
bmc+IHVybHM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsgaSsrKSB7Ci0gICAgICAgIHVybHMuYXBwZW5kKHVzdHJpbmdUb1N0cmluZyhleGVjLT5h
cmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgdXJscy5h
cHBlbmQoZXhlYy0+YXJndW1lbnQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
dXN0b20uY3BwCmluZGV4IDcxNDVmY2YzNDU5MGQ4Y2Q3N2ZlNzk4MDIzYzQxMTA3Y2YxNWZjMWIu
LmIxZjM4YTU4NmQyYjUzYTJiMTdhMThiN2ZkY2RiOGQzOTUzOTBlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1dvcmtlcihFeGVjU3RhdGUqIGUKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7CiAKLSAgICBVU3RyaW5nIHNjcmlwdFVSTCA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2NyaXB0VVJMID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwogCkBAIC02NSw3ICs2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNXb3JrZXJDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRlKiBlCiAgICAg
RE9NV2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPmltcGwoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxX
b3JrZXI+IHdvcmtlciA9IFdvcmtlcjo6Y3JlYXRlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgdXN0cmlu
Z1RvU3RyaW5nKHNjcmlwdFVSTCksIGVjKTsKKyAgICBSZWZQdHI8V29ya2VyPiB3b3JrZXIgPSBX
b3JrZXI6OmNyZWF0ZSh3aW5kb3ctPmRvY3VtZW50KCksIHNjcmlwdFVSTCwgZWMpOwogICAgIGlm
IChlYykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGMwOGMyOTU2MDJi
ZGM4ZWQzNTQzZjJjZDA4NmIzZjFlMTc0MDU4NWYuLjkwYmQ0OGI3ZjU2N2IyNjUzODhhMDJjYTVl
Nzg4YTY4NmU0ZTM0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC04NCw4ICs4NCw4IEBAIEpTVmFsdWUgSlNY
TUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCA9IGlt
cGwoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCh1c3RyaW5nVG9TdHJp
bmcoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Ci0gICAg
U3RyaW5nIG1ldGhvZCA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGNvbnN0IEtVUkwmIHVybCA9IGltcGwoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChleGVjLT5hcmd1bWVudCgxKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyBtZXRob2QgPSBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKQEAgLTEzMCwx
NiArMTMwLDE2IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cygmSlNBcnJheUJ1ZmZlclZpZXc6OnNf
aW5mbykpCiAgICAgICAgICAgICBpbXBsKCktPnNlbmQodG9BcnJheUJ1ZmZlclZpZXcodmFsKSwg
ZWMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbXBsKCktPnNlbmQodXN0cmluZ1RvU3Ry
aW5nKHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBlYyk7CisgICAgICAgICAgICBp
bXBsKCktPnNlbmQodmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgZWMpOwogICAgIH0K
IAogICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwogICAgIGludHB0cl90IHNvdXJjZUlEOwotICAg
IFVTdHJpbmcgc291cmNlVVJMOworICAgIFN0cmluZyBzb3VyY2VVUkw7CiAgICAgSlNWYWx1ZSBm
dW5jdGlvbjsKICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoZXhl
Yywgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHNvdXJjZVVSTCwgZnVuY3Rpb24pOwogICAg
IGltcGwoKS0+c2V0TGFzdFNlbmRMaW5lTnVtYmVyKHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNp
Z25lZExpbmVOdW1iZXIgOiAwKTsKLSAgICBpbXBsKCktPnNldExhc3RTZW5kVVJMKHVzdHJpbmdU
b1N0cmluZyhzb3VyY2VVUkwpKTsKKyAgICBpbXBsKCktPnNldExhc3RTZW5kVVJMKHNvdXJjZVVS
TCk7CiAKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJv
Y2Vzc29yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nl
c3NvckN1c3RvbS5jcHAKaW5kZXggNzBiNjk4MDlkNzg3ZmI0YzEyMTFlZWI1YzdjMDAwM2I4NmJi
YjlhMy4uZDgzZmYzODdiZWZhOTY5YTgwZWI4ZTdmODcxZDhiOTI2YWIwNzZiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3Bw
CkBAIC04OSw5ICs4OSw5IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5l
ZE9yTnVsbCgpIHx8IGV4ZWMtPmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOyAvLyBUaHJvdyBleGNlcHRpb24/Ci0gICAgU3RyaW5n
IG5hbWVzcGFjZVVSSSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgIFN0cmluZyBsb2NhbE5hbWUgPSB1c3RyaW5nVG9T
dHJpbmcoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKLSAg
ICBTdHJpbmcgdmFsdWUgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMikudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2Nh
bE5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cisg
ICAgU3RyaW5nIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMikudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGltcGwoKS0+c2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1l
LCB2YWx1ZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xMDAsOCArMTAwLDgg
QEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSB1c3Ry
aW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
KTsKLSAgICBTdHJpbmcgbG9jYWxOYW1lID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50
KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgU3RyaW5nIG5hbWVzcGFjZVVS
SSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgbG9jYWxOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIFN0cmluZyB2YWx1ZSA9IGltcGwoKS0+Z2V0UGFyYW1ldGVyKG5hbWVzcGFj
ZVVSSSwgbG9jYWxOYW1lKTsKICAgICByZXR1cm4ganNTdHJpbmdPclVuZGVmaW5lZChleGVjLCB2
YWx1ZSk7CiB9CkBAIC0xMTAsOCArMTEwLDggQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OnJl
bW92ZVBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKLSAgICBTdHJpbmcgbG9jYWxOYW1lID0g
dXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbG9jYWxOYW1lID0gZXhlYy0+YXJn
dW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGltcGwoKS0+cmVtb3Zl
UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3Jp
cHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAKaW5kZXggOWVhOWVjOGYwZDM0ZmZhMGRlN2U2NGY1ZGIwZDlhOGFiNTI4ZmYw
My4uYmI4ZjhkZWM1YjVmNjU5NTk5Zjk4Zjc1ODQ5Yjc5M2FlZWVhZmYyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTc4
LDEwICs3OCwxMCBAQCBTdHJpbmcgSmF2YVNjcmlwdENhbGxGcmFtZTo6ZnVuY3Rpb25OYW1lKCkg
Y29uc3QKICAgICBBU1NFUlQobV9pc1ZhbGlkKTsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIFVTdHJpbmcgZnVuY3Rpb25OYW1lID0gbV9kZWJ1Z2dl
ckNhbGxGcmFtZS5jYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCk7CisgICAgU3RyaW5nIGZ1bmN0aW9u
TmFtZSA9IG1fZGVidWdnZXJDYWxsRnJhbWUuY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpOwogICAg
IGlmIChmdW5jdGlvbk5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgcmV0dXJuIHVzdHJpbmdUb1N0cmluZyhmdW5jdGlvbk5hbWUpOworICAgIHJldHVybiBmdW5j
dGlvbk5hbWU7CiB9CiAKIERlYnVnZ2VyQ2FsbEZyYW1lOjpUeXBlIEphdmFTY3JpcHRDYWxsRnJh
bWU6OnR5cGUoKSBjb25zdApAQCAtMTA5LDcgKzEwOSw3IEBAIEV4ZWNTdGF0ZSogSmF2YVNjcmlw
dENhbGxGcmFtZTo6ZXhlYygpIGNvbnN0CiB9CiAKIC8vIEV2YWx1YXRlIHNvbWUgSmF2YVNjcmlw
dCBjb2RlIGluIHRoZSBzY29wZSBvZiB0aGlzIGZyYW1lLgotSlNWYWx1ZSBKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlv
bikgY29uc3QKK0pTVmFsdWUgSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQobV9p
c1ZhbGlkKTsKICAgICBpZiAoIW1faXNWYWxpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaAppbmRleCBlOTg3ZWNmODhmOGRlODY0NmMzNGU5
MGM5ZDQzMDZkZDY4ZjU0MmFlLi5kYzIyOTEzNTJhYjg0ODkyOWI1YTkwN2I3NjNiYzIyMzZmNTIz
OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxG
cmFtZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YygpIGNvbnN0OwogCiAgICAgSlNDOjpKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAg
IEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBKU0M6OlVTdHJpbmcmIHNjcmlwdCwgSlNDOjpK
U1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShjb25z
dCBTdHJpbmcmIHNjcmlwdCwgSlNDOjpKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OwogICAgIAog
cHJpdmF0ZToKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxs
RnJhbWUmLCBQYXNzUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IGNhbGxlciwgaW50cHRyX3Qg
c291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggYzQ2OWJmODI5MjJlNmMwMmQyOWE2NmQx
ZmEzYzEzMWMzN2Y0Y2M4ZC4uNzY4MjA1MTBkMTIyNmM2ZDIzZDEyMTg2OTEyZGU0NmRiYjlhNTVk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
CkBAIC01OCwxMCArNTgsMTAgQEAgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+IFNjaGVkdWxl
ZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhcHBlclcKICAgICAgICAgUmVm
UHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvcklu
c3BlY3RvcihleGVjKSk7CiAgICAgICAgIGlmIChwb2xpY3kgJiYgIXBvbGljeS0+YWxsb3dFdmFs
KGNhbGxTdGFjay5yZWxlYXNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIFVTdHJpbmcgc3RyaW5nID0gdi50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
ICAgIFN0cmluZyBzdHJpbmcgPSB2LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9uKHVzdHJpbmdUb1N0
cmluZyhzdHJpbmcpLCBpc29sYXRlZFdvcmxkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU2NoZWR1bGVkQWN0aW9uKHN0cmluZywgaXNvbGF0ZWRXb3JsZCkpOwogICAgIH0KIAogICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9uKGV4ZWMsIHYsIGlzb2xhdGVkV29y
bGQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5jcHAKaW5kZXggM2JiNjlmNDJjOGY5YTI2MzhkZDJkODgyNTcxMmMzYjZlMWQ3
MDc1MS4uNGZhZWVlZDg5NTJhZjk3NWZlMTE4Zjg2MmEzNDhmYWVmZjBlOGM5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTR2xvYmFsRGF0YS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1
ZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC04MiwxMSArODIsMTEgQEAg
UGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG0KICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CiAgICAg
ICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAg
ICAgICAgVVN0cmluZyB1cmxTdHJpbmc7CisgICAgICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAg
ICAgIEpTVmFsdWUgZnVuY3Rpb247CiAKICAgICAgICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0
cmlldmVMYXN0Q2FsbGVyKGNhbGxGcmFtZSwgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHVy
bFN0cmluZywgZnVuY3Rpb24pOwotICAgICAgICBVU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICAg
ICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKICAgICAgICAgaWYgKGZ1bmN0aW9uKQogICAgICAgICAg
ICAgZnVuY3Rpb25OYW1lID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiktPm5hbWUoZXhl
Yyk7CiAgICAgICAgIGVsc2UgewpAQCAtOTYsNyArOTYsNyBAQCBQYXNzUmVmUHRyPFNjcmlwdENh
bGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgbQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVk
IGxpbmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5lTnVtYmVyIDog
MDsKLSAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUodXN0cmluZ1RvU3RyaW5n
KGZ1bmN0aW9uTmFtZSksIHVzdHJpbmdUb1N0cmluZyh1cmxTdHJpbmcpLCBsaW5lTnVtYmVyKSk7
CisgICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgdXJs
U3RyaW5nLCBsaW5lTnVtYmVyKSk7CiAgICAgICAgIGlmICghZnVuY3Rpb24gfHwgZnJhbWVzLnNp
emUoKSA9PSBtYXhTdGFja1NpemUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FsbEZy
YW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0MWJiZWE4YjJmOGRiNzU2YTgxNThh
YjMwNmUzMzg2ZmQxZTZiY2IwLi5kNmFlNjFmZWEwYzRhMzIwNGRkZDFhZDdjYzdmYmNiOTllZjlj
Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiBTY3JpcHRWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKICAgICBjb25zdCBTb3Vy
Y2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwotICAgIFN0
cmluZyBzb3VyY2VVUkwgPSB1c3RyaW5nVG9TdHJpbmcoanNTb3VyY2VDb2RlLnByb3ZpZGVyKCkt
PnVybCgpKTsKKyAgICBTdHJpbmcgc291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCkt
PnVybCgpOwogCiAgICAgLy8gZXZhbHVhdGUgY29kZS4gUmV0dXJucyB0aGUgSlMgcmV0dXJuIHZh
bHVlIG9yIDAKICAgICAvLyBpZiB0aGVyZSB3YXMgbm9uZSwgYW4gZXJyb3Igb2NjdXJyZWQgb3Ig
dGhlIHR5cGUgY291bGRuJ3QgYmUgY29udmVydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGJiY2Q1NDI5OTY1NzBmYTEzNzk5
YTRlNWE4Mjk1MDMwZGU1MGEwYTEuLjUyZmY4ZjYzNzlkYTQxOTBmNmIxMWIyMTc5MmQwNTVlZWRl
MDAyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRh
dGVDdXJyZW50U3RhdGVtZW50UG9zaXRpb24oaW50cHRyX3Qgc291cmNlSUQsIGludCBsaQogICAg
IFNvdXJjZVByb3ZpZGVyKiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3ZpZGVy
Kj4oc291cmNlSUQpOwogCiAgICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7
Ci0gICAgICAgIFN0cmluZyBzb3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmlu
Zyhjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKKyAgICAgICAgU3Ry
aW5nIHNvdXJjZUNvZGUoY29uc3RfY2FzdDxTdHJpbmdJbXBsKj4oc291cmNlLT5kYXRhKCkpKTsK
ICAgICAgICAgbV9jdXJyZW50U291cmNlQ29kZS5jbGVhcigpOwogICAgICAgICBzb3VyY2VDb2Rl
LnNwbGl0KCJcbiIsIHRydWUsIG1fY3VycmVudFNvdXJjZUNvZGUpOwogICAgICAgICBtX2N1cnJl
bnRTb3VyY2VJRCA9IHNvdXJjZUlEOwpAQCAtMjAxLDcgKzIwMSw3IEBAIGJvb2wgU2NyaXB0RGVi
dWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3Np
dGlvbiYgcG9zCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmlu
Z1RvVVN0cmluZyhicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoYnJlYWtzVmVj
dG9yLmF0KGkpLmNvbmRpdGlvbiwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAg
ICAgICAgIC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIuCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNiwxMSArMzE2LDExIEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIp
CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3Qg
TGlzdGVuZXJTZXQmIGxpc3RlbmVycywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBi
b29sIGlzQ29udGVudFNjcmlwdCkKIHsKLSAgICBTdHJpbmcgc291cmNlSUQgPSB1c3RyaW5nVG9T
dHJpbmcoSlNDOjpVU3RyaW5nOjpudW1iZXIoc291cmNlUHJvdmlkZXItPmFzSUQoKSkpOworICAg
IFN0cmluZyBzb3VyY2VJRCA9IFN0cmluZzo6bnVtYmVyKHNvdXJjZVByb3ZpZGVyLT5hc0lEKCkp
OwogCiAgICAgU2NyaXB0RGVidWdMaXN0ZW5lcjo6U2NyaXB0IHNjcmlwdDsKLSAgICBzY3JpcHQu
dXJsID0gdXN0cmluZ1RvU3RyaW5nKHNvdXJjZVByb3ZpZGVyLT51cmwoKSk7Ci0gICAgc2NyaXB0
LnNvdXJjZSA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmcoY29uc3RfY2FzdDxTdHJpbmdJ
bXBsKj4oc291cmNlUHJvdmlkZXItPmRhdGEoKSkpKTsKKyAgICBzY3JpcHQudXJsID0gc291cmNl
UHJvdmlkZXItPnVybCgpOworICAgIHNjcmlwdC5zb3VyY2UgPSBTdHJpbmcoY29uc3RfY2FzdDxT
dHJpbmdJbXBsKj4oc291cmNlUHJvdmlkZXItPmRhdGEoKSkpOwogICAgIHNjcmlwdC5zdGFydExp
bmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQo
KTsKICAgICBzY3JpcHQuc3RhcnRDb2x1bW4gPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlv
bigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpOwogICAgIHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQg
PSBpc0NvbnRlbnRTY3JpcHQ7CkBAIC0zNTQsOCArMzU0LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJz
LCBTb3UKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291
cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQ
cm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0g
ICAgU3RyaW5nIHVybCA9IHVzdHJpbmdUb1N0cmluZyhzb3VyY2VQcm92aWRlci0+dXJsKCkpOwot
ICAgIFN0cmluZyBkYXRhID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25zdF9jYXN0
PFN0cmluZ0ltcGwqPihzb3VyY2VQcm92aWRlci0+ZGF0YSgpKSkpOworICAgIFN0cmluZyB1cmwg
PSBzb3VyY2VQcm92aWRlci0+dXJsKCk7CisgICAgU3RyaW5nIGRhdGEgPSBTdHJpbmcoY29uc3Rf
Y2FzdDxTdHJpbmdJbXBsKj4oc291cmNlUHJvdmlkZXItPmRhdGEoKSkpOwogICAgIGludCBmaXJz
dExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZElu
dCgpOwogCiAgICAgVmVjdG9yPFNjcmlwdERlYnVnTGlzdGVuZXIqPiBjb3B5OwpAQCAtMzgyLDcg
KzM4Miw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRldGFjaChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIERlYnVnZ2VyOjpkZXRhY2goZ2xvYmFsT2JqZWN0KTsKIH0KIAot
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSogZXhlYywgU291
cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBVU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzb3VyY2VQYXJzZWQoRXhl
Y1N0YXRlKiBleGVjLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxp
bmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIGlmIChtX2NhbGxpbmdMaXN0
ZW5lcnMpCiAgICAgICAgIHJldHVybjsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiBleGVjLCBTb3VyY2VQcm92aWRlciog
c291cmNlUHJvdgogCiAgICAgYm9vbCBpc0Vycm9yID0gZXJyb3JMaW5lICE9IC0xOwogICAgIGlm
IChpc0Vycm9yKQotICAgICAgICBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoKmxpc3RlbmVy
cywgc291cmNlUHJvdmlkZXIsIGVycm9yTGluZSwgdXN0cmluZ1RvU3RyaW5nKGVycm9yTWVzc2Fn
ZSkpOworICAgICAgICBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoKmxpc3RlbmVycywgc291
cmNlUHJvdmlkZXIsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKICAgICBlbHNlCiAgICAgICAg
IGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoKmxpc3RlbmVycywgc291cmNlUHJvdmlkZXIsIGlzQ29u
dGVudFNjcmlwdChleGVjKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5oCmluZGV4IDkzNTkxNGM2YjQxOGRjM2ZhMzYzMzc4NzQyNjI1NzVhNWFh
ZDg1ZDMuLjI4ZDk3YzU5YzhiOThlYzk4MWU0YzY2NTcwODQwNWIxYmMyODE1ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzgsMTIg
KzM4LDEyIEBACiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVn
Z2VyLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92
aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOworICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNvdXJjZVBy
b3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1zZyk7CiAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICB2aXJ0
dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgZmlyc3RMaW5lLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4
IDcyMTZiNmYzNjczMTc1NmZhMWE0ZGIxOThjYTU5MDI4NTgxYTlmNGYuLjE1M2EwZWExZmNmYWU4
MzQwNDEyNTI0OTM5ZGI5NjFiZTYwNjM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgU3Ry
aW5nIGV2ZW50TGlzdGVuZXJIYW5kbGVyQm9keShEb2N1bWVudCogZG9jdW1lbnQsIEV2ZW50TGlz
dGVuZXIqIGV2ZW50TGlzdGVuZXIKICAgICBpZiAoIWpzRnVuY3Rpb24pCiAgICAgICAgIHJldHVy
biAiIjsKICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZUZyb21Ob2Rl
KGpzTGlzdGVuZXItPmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOwotICAgIHJldHVybiB1c3Ry
aW5nVG9TdHJpbmcoanNGdW5jdGlvbi0+dG9TdHJpbmcoc2NyaXB0U3RhdGUpLT52YWx1ZShzY3Jp
cHRTdGF0ZSkpOworICAgIHJldHVybiBqc0Z1bmN0aW9uLT50b1N0cmluZyhzY3JpcHRTdGF0ZSkt
PnZhbHVlKHNjcmlwdFN0YXRlKTsKIH0KIAogYm9vbCBldmVudExpc3RlbmVySGFuZGxlckxvY2F0
aW9uKERvY3VtZW50KiBkb2N1bWVudCwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwgU3Ry
aW5nJiBzb3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1iZXIpCkBAIC0xMjMsNyArMTIzLDcgQEAgYm9v
bCBldmVudExpc3RlbmVySGFuZGxlckxvY2F0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgRXZlbnRM
aXN0ZW5lciogZXZlbnRMaXN0ZW4KICAgICBpZiAoIWZ1bmNFeGVjdXRhYmxlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgbGluZU51bWJlciA9IGZ1bmNFeGVjdXRhYmxlLT5saW5lTm8oKTsK
LSAgICBzb3VyY2VOYW1lID0gdXN0cmluZ1RvU3RyaW5nKGZ1bmNFeGVjdXRhYmxlLT5zb3VyY2VV
UkwoKSk7CisgICAgc291cmNlTmFtZSA9IGZ1bmNFeGVjdXRhYmxlLT5zb3VyY2VVUkwoKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggNTQ3NzgyNTlhODhmNjhmYWYzYzZhZjRlMzAyNzk3
YTBlODMyOWZiYy4uMDE4Y2MyZjVlM2JkNTRjNmZiMjUxMGU3ZTg5YjFmN2VhMjZkMWQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
CkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTYy
LDE2ICs2MiwxMCBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3Vt
ZW50KGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3Ry
aW5nKG1fZXhlYywgYXJndW1lbnQpKTsKIH0KIAotdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5k
bGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBKU0M6OlVTdHJpbmcmIGFyZ3VtZW50KQotewotICAg
IEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3Ry
aW5nKG1fZXhlYywgYXJndW1lbnQpKTsKLX0KLQogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5k
bGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkKIHsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhtX2V4ZWMpOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhtX2V4
ZWMsIFVTdHJpbmcoYXJndW1lbnQpKSk7CisgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5n
KG1fZXhlYywgU3RyaW5nKGFyZ3VtZW50KSkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVu
dEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZSBhcmd1bWVudCkKQEAgLTEyNyw3
ICsxMjEsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFk
RXhjZXB0aW9uLCBib29sIHJlcG9ydEV4Y2VwdGlvbnMpCiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhtX2V4ZWMpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4
ZWMsIElkZW50aWZpZXIobV9leGVjLCBzdHJpbmdUb1VTdHJpbmcobV9uYW1lKSkpOworICAgIEpT
VmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyKG1fZXhl
YywgbV9uYW1lKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
aWYgKHJlcG9ydEV4Y2VwdGlvbnMpCiAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24obV9leGVj
LCBtX2V4ZWMtPmV4Y2VwdGlvbigpKTsKQEAgLTE2NSw3ICsxNTksNyBAQCBTY3JpcHRPYmplY3Qg
U2NyaXB0RnVuY3Rpb25DYWxsOjpjb25zdHJ1Y3QoYm9vbCYgaGFkRXhjZXB0aW9uLCBib29sIHJl
cG9ydEV4Y2VwdAogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9leGVjKTsKIAotICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvciA9IGFzT2JqZWN0KHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElkZW50
aWZpZXIobV9leGVjLCBzdHJpbmdUb1VTdHJpbmcobV9uYW1lKSkpKTsKKyAgICBKU09iamVjdCog
Y29uc3RydWN0b3IgPSBhc09iamVjdCh0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVy
KG1fZXhlYywgbV9uYW1lKSkpOwogICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIGlmIChyZXBvcnRFeGNlcHRpb25zKQogICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KG1fZXhlYywgbV9leGVjLT5leGNlcHRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCmluZGV4IDY5YjVlMjhkYmUzMzdkYWI4YWM4OWE4
MTdkZGFkODIyOGIxNjhmMmIuLjRlOWMyMDJiMTNkNWJhYzIwMTJmNDEwOTRkNmExMTYwNjljN2Mx
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oCkBAIC0zMSwxNCArMzEsMTMgQEAKICNpZm5kZWYgU2NyaXB0RnVuY3Rpb25DYWxsX2gKICNk
ZWZpbmUgU2NyaXB0RnVuY3Rpb25DYWxsX2gKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKIAog
I2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBVU3RyaW5nOwogICAgIGNsYXNzIEpT
VmFsdWU7CiB9CiAKQEAgLTUxLDkgKzUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7CiAgICAgICAgIHZv
aWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICAgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChj
b25zdCBjaGFyKik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgSlNDOjpVU3Ry
aW5nJik7CisgICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAg
ICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlKTsKICAgICAgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChsb25nKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nIGxvbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCAz
YzJiNjVmZTAyZjYxNDI4MjM1MGIxOWNiNTJkMGJkMjhlOThhM2U4Li40Y2VmNGNkZGQ1OWMyN2Yy
MmNhNWUxNWE1MTIxZTY1MDY1MjgyOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBTY3JpcHRQcm9maWxlOjp+U2Ny
aXB0UHJvZmlsZSgpCiAKIFN0cmluZyBTY3JpcHRQcm9maWxlOjp0aXRsZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHVzdHJpbmdUb1N0cmluZyhtX3Byb2ZpbGUtPnRpdGxlKCkpOworICAgIHJldHVy
biBtX3Byb2ZpbGUtPnRpdGxlKCk7CiB9CiAKIHVuc2lnbmVkIGludCBTY3JpcHRQcm9maWxlOjp1
aWQoKSBjb25zdApAQCAtODAsOCArODAsOCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yKGNvbnN0IEpTQzo6UHJvZmlsZU5vZAogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAKLSAgICByZXN1bHQtPnNldFN0cmluZygiZnVuY3Rpb25OYW1lIiwgdXN0cmluZ1Rv
U3RyaW5nKG5vZGUtPmZ1bmN0aW9uTmFtZSgpKSk7Ci0gICAgcmVzdWx0LT5zZXRTdHJpbmcoInVy
bCIsIHVzdHJpbmdUb1N0cmluZyhub2RlLT51cmwoKSkpOworICAgIHJlc3VsdC0+c2V0U3RyaW5n
KCJmdW5jdGlvbk5hbWUiLCBub2RlLT5mdW5jdGlvbk5hbWUoKSk7CisgICAgcmVzdWx0LT5zZXRT
dHJpbmcoInVybCIsIG5vZGUtPnVybCgpKTsKICAgICByZXN1bHQtPnNldE51bWJlcigibGluZU51
bWJlciIsIG5vZGUtPmxpbmVOdW1iZXIoKSk7CiAgICAgcmVzdWx0LT5zZXROdW1iZXIoInRvdGFs
VGltZSIsIG5vZGUtPnRvdGFsVGltZSgpKTsKICAgICByZXN1bHQtPnNldE51bWJlcigic2VsZlRp
bWUiLCBub2RlLT5zZWxmVGltZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGVyLmNwcAppbmRleCBkNmFmZDg5NjZkYWI4MTRkOTExMTJjYmExZTE2ODBhNzQz
Yzk0MjMyLi41YzdlYmQ3ZDU2YjYxMzFiYjY4OTllYWIxZTE4YjU3MDFjMDZhYTkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC01OCw3ICs1
OCw3IEBAIHVuc2lnbmVkIFNjcmlwdFByb2ZpbGVyOjpnZXRIZWFwT2JqZWN0SWQoY29uc3QgU2Ny
aXB0VmFsdWUmKQogCiB2b2lkIFNjcmlwdFByb2ZpbGVyOjpzdGFydChTY3JpcHRTdGF0ZSogc3Rh
dGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgSlNDOjpQcm9maWxlcjo6cHJvZmlsZXIo
KS0+c3RhcnRQcm9maWxpbmcoc3RhdGUsIHN0cmluZ1RvVVN0cmluZyh0aXRsZSkpOworICAgIEpT
Qzo6UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKHN0YXRlLCB0aXRsZSk7CiB9
CiAKIHZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0Rm9yUGFnZShQYWdlKiBpbnNwZWN0ZWRQYWdl
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNjcmlwdFByb2Zp
bGVyOjpzdGFydEZvcldvcmtlckNvbnRleHQoV29ya2VyQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJgogCiBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVyOjpzdG9w
KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBSZWZQdHI8
SlNDOjpQcm9maWxlPiBwcm9maWxlID0gSlNDOjpQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RvcFBy
b2ZpbGluZyhzdGF0ZSwgc3RyaW5nVG9VU3RyaW5nKHRpdGxlKSk7CisgICAgUmVmUHRyPEpTQzo6
UHJvZmlsZT4gcHJvZmlsZSA9IEpTQzo6UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0b3BQcm9maWxp
bmcoc3RhdGUsIHRpdGxlKTsKICAgICByZXR1cm4gU2NyaXB0UHJvZmlsZTo6Y3JlYXRlKHByb2Zp
bGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
b3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNl
UHJvdmlkZXIuaAppbmRleCA4NzYwMTg1MGFiYjQzMDBjYjk5YzMwOGNkYjI5NjQwOGY0MDliY2Q5
Li44Mzk2MDgyZmExYzc2Mjg1OWEyNTQ4ZTUzZWZiYWQyYWQ3NzRiMDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2NyaXB0U291cmNlUHJv
dmlkZXIgOiBwdWJsaWMgSlNDOjpTb3VyY2VQcm92aWRlciB7CiAgICAgcHVibGljOgotICAgICAg
ICBTY3JpcHRTb3VyY2VQcm92aWRlcihjb25zdCBKU0M6OlVTdHJpbmcmIHVybCwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGUqIGNhY2hl
ID0gMCkKKyAgICAgICAgU2NyaXB0U291cmNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlckNhY2hl
KiBjYWNoZSA9IDApCiAgICAgICAgICAgICA6IFNvdXJjZVByb3ZpZGVyKHVybCwgc3RhcnRQb3Np
dGlvbiwgY2FjaGUpCiAgICAgICAgIHsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDgzZGZkNWZiODMyNjcxOGI2ZWViZjEzNDMyM2Fm
MjQ0MTNlYzM1MmMuLjQzMTBmZmNkN2RmNWQwZDYyMmFiMzA2MjZmNmZjMzBiOWY2NDczZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTM5LDcgKzM5
LDYgQEAKIAogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApAQCAtNTAsMTYgKzQ5LDE0IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAogICAgIGlmICghbV92
YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlw
dFN0YXRlKTsKLSAgICBVU3RyaW5nIHVzdHJpbmc7Ci0gICAgaWYgKCFtX3ZhbHVlLmdldCgpLmdl
dFN0cmluZyhzY3JpcHRTdGF0ZSwgdXN0cmluZykpCisgICAgaWYgKCFtX3ZhbHVlLmdldCgpLmdl
dFN0cmluZyhzY3JpcHRTdGF0ZSwgcmVzdWx0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc3VsdCA9IHVzdHJpbmdUb1N0cmluZyh1c3RyaW5nKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUp
IGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IHVzdHJpbmdUb1N0cmluZyhtX3ZhbHVlLmdl
dCgpLnRvU3RyaW5nKHNjcmlwdFN0YXRlKS0+dmFsdWUoc2NyaXB0U3RhdGUpKTsKKyAgICBTdHJp
bmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50b1N0cmluZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNj
cmlwdFN0YXRlKTsKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW4gZXhjZXB0aW9uIGlz
IHRocm93biBhcyBwYXJ0IG9mIGludm9raW5nIHRvU3RyaW5nIG9uIHRoZSBvYmplY3QuCiAgICAg
aWYgKHNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgc2NyaXB0U3RhdGUtPmNs
ZWFyRXhjZXB0aW9uKCk7CkBAIC0xMzgsNyArMTM1LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUs
IEoKICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJh
c2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZS5hc051bWJlcigpKTsKICAgICBpZiAodmFsdWUuaXNTdHJp
bmcoKSkgewotICAgICAgICBVU3RyaW5nIHMgPSB2YWx1ZS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUp
OworICAgICAgICBTdHJpbmcgcyA9IHZhbHVlLmdldFN0cmluZyhzY3JpcHRTdGF0ZSk7CiAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJpbmcocy5jaGFyYWN0ZXJzKCks
IHMubGVuZ3RoKCkpKTsKICAgICB9CiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CmluZGV4IGVhNzAyMjk1YjdlNjUzNmVkNDQ2MTk4MzMzZDA4NzJkZDEyNDA1M2MuLmYyOWExM2E1
ZmU0MGRhZDY3MTY3NzcxNGFmYmM1ZWU0YWM2MDBhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzg2LDcgKzM4
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogQ2xvbmVCYXNlKGV4ZWMpCiAgICAgICAgICwgbV9i
dWZmZXIob3V0KQogICAgICAgICAsIG1fYmxvYlVSTHMoYmxvYlVSTHMpCi0gICAgICAgICwgbV9l
bXB0eUlkZW50aWZpZXIoZXhlYywgVVN0cmluZygiIiwgMCkpCisgICAgICAgICwgbV9lbXB0eUlk
ZW50aWZpZXIoZXhlYywgZW1wdHlTdHJpbmcoKSkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJl
bnRWZXJzaW9uKTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90cmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0cyk7CkBAIC01MjMsNyArNTIzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHZvaWQgZHVtcFN0cmluZyhVU3RyaW5nIHN0cikKKyAgICB2b2lk
IGR1bXBTdHJpbmcoU3RyaW5nIHN0cikKICAgICB7CiAgICAgICAgIGlmIChzdHIuaXNFbXB0eSgp
KQogICAgICAgICAgICAgd3JpdGUoRW1wdHlTdHJpbmdUYWcpOwpAQCAtNTMzLDcgKzUzMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGR1bXBTdHJpbmdPYmplY3Qo
VVN0cmluZyBzdHIpCisgICAgdm9pZCBkdW1wU3RyaW5nT2JqZWN0KFN0cmluZyBzdHIpCiAgICAg
ewogICAgICAgICBpZiAoc3RyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHdyaXRlKEVtcHR5U3Ry
aW5nT2JqZWN0VGFnKTsKQEAgLTU4OSw3ICs1ODksNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIFVTdHJpbmcgc3Ry
ID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShtX2V4ZWMpOworICAgICAgICAgICAgU3RyaW5nIHN0
ciA9IGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUobV9leGVjKTsKICAgICAgICAgICAgIGR1bXBTdHJp
bmcoc3RyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC02MjAsNyAr
NjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzKCZTdHJpbmdP
YmplY3Q6OnNfaW5mbykpIHsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0T2JqZWN0SW50ZXJu
YWwob2JqKSkgLy8gaGFuZGxlIGR1cGxpY2F0ZXMKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICAgICAgVVN0cmluZyBzdHIgPSBhc1N0cmluZyhhc1N0cmluZ09i
amVjdCh2YWx1ZSktPmludGVybmFsVmFsdWUoKSktPnZhbHVlKG1fZXhlYyk7CisgICAgICAgICAg
ICAgICAgU3RyaW5nIHN0ciA9IGFzU3RyaW5nKGFzU3RyaW5nT2JqZWN0KHZhbHVlKS0+aW50ZXJu
YWxWYWx1ZSgpKS0+dmFsdWUobV9leGVjKTsKICAgICAgICAgICAgICAgICBkdW1wU3RyaW5nT2Jq
ZWN0KHN0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC02NzYsNyArNjc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZmxhZ3NbZmxh
Z0NvdW50KytdID0gJ20nOwogICAgICAgICAgICAgICAgIHdyaXRlKFJlZ0V4cFRhZyk7CiAgICAg
ICAgICAgICAgICAgd3JpdGUocmVnRXhwLT5yZWdFeHAoKS0+cGF0dGVybigpKTsKLSAgICAgICAg
ICAgICAgICB3cml0ZShVU3RyaW5nKGZsYWdzLCBmbGFnQ291bnQpKTsKKyAgICAgICAgICAgICAg
ICB3cml0ZShTdHJpbmcoZmxhZ3MsIGZsYWdDb3VudCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHMoJkpT
TWVzc2FnZVBvcnQ6OnNfaW5mbykpIHsKQEAgLTc5Miw3ICs3OTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB3cml0ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAgICB7Ci0gICAgICAgIFVT
dHJpbmcgc3RyID0gaWRlbnQudXN0cmluZygpOworICAgICAgICBjb25zdCBTdHJpbmcmIHN0ciA9
IGlkZW50LnVzdHJpbmcoKTsKICAgICAgICAgU3RyaW5nQ29uc3RhbnRQb29sOjpBZGRSZXN1bHQg
YWRkUmVzdWx0ID0gbV9jb25zdGFudFBvb2wuYWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQb29s
LnNpemUoKSk7CiAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
ICAgIHdyaXRlKFN0cmluZ1Bvb2xUYWcpOwpAQCAtODE4LDcgKzgxOCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBmYWlsKCk7CiAgICAgfQogCi0gICAgdm9pZCB3cml0ZShjb25zdCBVU3RyaW5n
JiBzdHIpCisgICAgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHN0cikKICAgICB7CiAgICAgICAg
IGlmIChzdHIuaXNOdWxsKCkpCiAgICAgICAgICAgICB3cml0ZShtX2VtcHR5SWRlbnRpZmllcik7
CkBAIC04MjYsMTQgKzgyNiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0ZShJZGVudGlm
aWVyKG1fZXhlYywgc3RyKSk7CiAgICAgfQogCi0gICAgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcm
IHN0cikKLSAgICB7Ci0gICAgICAgIGlmIChzdHIuaXNFbXB0eSgpKQotICAgICAgICAgICAgd3Jp
dGUobV9lbXB0eUlkZW50aWZpZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cml0ZShJ
ZGVudGlmaWVyKG1fZXhlYywgc3RyLmltcGwoKSkpOwotICAgIH0KLQogICAgIHZvaWQgd3JpdGUo
Y29uc3QgRmlsZSogZmlsZSkKICAgICB7CiAgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUt
PnVybCgpKTsKQEAgLTEwMzcsNyArMTAyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgdWlu
dDhfdCogc3RhcnQgPSB2YWx1ZS5iZWdpbigpOwogICAgICAgICBjb25zdCB1aW50OF90KiBlbmQg
PSB2YWx1ZS5lbmQoKTsKICAgICAgICAgY29uc3QgdWludDMyX3QgbGVuZ3RoID0gdmFsdWUuc2l6
ZSgpIC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgVVN0cmluZyBzdHI7CisgICAgICAgIFN0cmlu
ZyBzdHI7CiAgICAgICAgIGlmICghQ2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRTdHJpbmcoc3RhcnQs
IGVuZCwgc3RyLCBsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0x
MDU3LDcgKzEwNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsKICAgICAg
ICAgaWYgKCFyZWFkTGl0dGxlRW5kaWFuKHB0ciwgZW5kLCBsZW5ndGgpIHx8IGxlbmd0aCA+PSBT
dHJpbmdQb29sVGFnKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICBVU3Ry
aW5nIHN0cjsKKyAgICAgICAgU3RyaW5nIHN0cjsKICAgICAgICAgaWYgKCFyZWFkU3RyaW5nKHB0
ciwgZW5kLCBzdHIsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoc3RyLmltcGwoKSk7CkBAIC0xMDc3LDcgKzEwNjksNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENhY2hlZFN0cmluZyB7Ci0gICAgICAgIENhY2hl
ZFN0cmluZyhjb25zdCBVU3RyaW5nJiBzdHJpbmcpCisgICAgICAgIENhY2hlZFN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgICAgIDogbV9zdHJpbmcoc3RyaW5nKQogICAgICAg
ICB7CiAgICAgICAgIH0KQEAgLTEwODgsMTAgKzEwODAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBtX2pzU3RyaW5nID0gSlNDOjpqc1N0cmluZyhleGVjLCBtX3N0cmluZyk7CiAgICAg
ICAgICAgICByZXR1cm4gbV9qc1N0cmluZzsKICAgICAgICAgfQotICAgICAgICBjb25zdCBVU3Ry
aW5nJiB1c3RyaW5nKCkgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICAgICAgLy8gRklYTUU6IHJl
bmFtZSB0byBzdHJpbmcoKS4KKyAgICAgICAgY29uc3QgU3RyaW5nJiB1c3RyaW5nKCkgeyByZXR1
cm4gbV9zdHJpbmc7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFVTdHJpbmcgbV9zdHJpbmc7
CisgICAgICAgIFN0cmluZyBtX3N0cmluZzsKICAgICAgICAgSlNWYWx1ZSBtX2pzU3RyaW5nOwog
ICAgIH07CiAKQEAgLTEyNDAsNyArMTIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBy
ZWFkKGkpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIHJlYWRTdHJpbmcoY29uc3QgdWludDhf
dComIHB0ciwgY29uc3QgdWludDhfdCogZW5kLCBVU3RyaW5nJiBzdHIsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBzdGF0aWMgYm9vbCByZWFkU3RyaW5nKGNvbnN0IHVpbnQ4X3QqJiBwdHIsIGNvbnN0
IHVpbnQ4X3QqIGVuZCwgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAg
ICAgIGlmIChsZW5ndGggPj0gbnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpIC8gc2l6ZW9m
KFVDaGFyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNTAsNyArMTI0Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBBU1NVTUVfTElUVExF
X0VORElBTgotICAgICAgICBzdHIgPSBVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPihwdHIpLCBsZW5ndGgpOworICAgICAgICBzdHIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVQ2hhcio+KHB0ciksIGxlbmd0aCk7CiAgICAgICAgIHB0ciArPSBsZW5ndGggKiBz
aXplb2YoVUNoYXIpOwogI2Vsc2UKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7CkBAIC0x
MjYwLDcgKzEyNTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmVhZExpdHRsZUVuZGlhbihw
dHIsIGVuZCwgY2gpOwogICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjaCk7CiAgICAgICAgIH0K
LSAgICAgICAgc3RyID0gVVN0cmluZzo6YWRvcHQoYnVmZmVyKTsKKyAgICAgICAgc3RyID0gU3Ry
aW5nOjphZG9wdChidWZmZXIpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTEyOTUsNyArMTI4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYWNoZWRTdHJpbmcg
PSBDYWNoZWRTdHJpbmdSZWYoJm1fY29uc3RhbnRQb29sLCBpbmRleCk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBVU3RyaW5nIHN0cjsKKyAgICAgICAgU3Ry
aW5nIHN0cjsKICAgICAgICAgaWYgKCFyZWFkU3RyaW5nKG1fcHRyLCBtX2VuZCwgc3RyLCBsZW5n
dGgpKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RyaW5nU291cmNlUHJvdmlkZXIuaApp
bmRleCA4YjY3MTg4OTEyYjc3ZTY0ODk4NzY3ODAyNzgzNjU3MWUxMWMzYTNlLi42YjZiYjRlOWFi
MTYxNmIyY2ZlZTRlN2M2MmU3ZGI3ZTQ2ODQzODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVyLmgKQEAgLTQyLDEzICs0MiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmlu
Z1NvdXJjZVByb3ZpZGVyKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSk7CiAgICAgICAgIH0K
IAotICAgICAgICB2aXJ0dWFsIEpTQzo6VVN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0IE9WRVJSSURFCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldFJhbmdlKGludCBz
dGFydCwgaW50IGVuZCkgY29uc3QgT1ZFUlJJREUKICAgICAgICAgewogICAgICAgICAgICAgaW50
IGxlbmd0aCA9IGVuZCAtIHN0YXJ0OwogICAgICAgICAgICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsK
ICAgICAgICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSB0aGlzLT5sZW5ndGgoKSk7CiAK
LSAgICAgICAgICAgIHJldHVybiBKU0M6OlVTdHJpbmcoU3RyaW5nSW1wbDo6Y3JlYXRlKG1fc291
cmNlLmltcGwoKSwgc3RhcnQsIGxlbmd0aCkpOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhT
dHJpbmdJbXBsOjpjcmVhdGUobV9zb3VyY2UuaW1wbCgpLCBzdGFydCwgbGVuZ3RoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2UuaW1wbCgpOyB9CkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZ1NvdXJjZVByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBv
c2l0aW9uKQotICAgICAgICAgICAgOiBTY3JpcHRTb3VyY2VQcm92aWRlcihzdHJpbmdUb1VTdHJp
bmcodXJsKSwgc3RhcnRQb3NpdGlvbikKKyAgICAgICAgICAgIDogU2NyaXB0U291cmNlUHJvdmlk
ZXIodXJsLCBzdGFydFBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAg
ICAgICAgIHsKICAgICAgICAgfQpAQCAtNjUsMTEgKzY1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgfTsKIAotICAgIGlubGluZSBKU0M6OlNv
dXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1
cmwgPSBTdHJpbmcoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBv
c2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlNv
dXJjZUNvZGUoU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQ
b3NpdGlvbiksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpOwotICAgIH0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU3RyaW5nU291cmNlUHJvdmlkZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpp
bmRleCBjMWMxOThkNjViYjQ0M2FhMGIxYWM1NTMyOWJkZGIyNWJlOGRhOGU0Li5lNzcwMjE5ZmVh
ZjMxNDM0YzAzZDQ0MDBkYmFkMzI1ZGY4OGFjNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpAQCAtMzE3LDcgKzMxNyw3IEBAIHN0YXRp
YyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5
LCBSb290T2JqZWN0KiByb290CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgQVNT
RVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gW3Nl
bGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhTdHJp
bmcobmFtZSkpKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IFtzZWxmIF9pbXBdLT5nZXQoZXhl
YywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcobmFtZSkpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0
YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKQEAgLTM3OSw3ICszNzksNyBA
QCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5
ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwog
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxl
KCktPnB1dChbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJp
bmcoU3RyaW5nKGtleSkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBP
YmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CisgICAgW3NlbGYgX2lt
cF0tPm1ldGhvZFRhYmxlKCktPnB1dChbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmllcihleGVj
LCBTdHJpbmcoa2V5KSksIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsICZ2YWx1ZSwgT2Jq
Y09iamVjdFR5cGUsIFtzZWxmIF9yb290T2JqZWN0XSksIHNsb3QpOwogCiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsK
QEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0
YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogICAgICAgICAvLyBs
ZWF2aW5nIHRoZSBsb2NrIHBlcm1hbmVudGx5IGhlbGQKICAgICAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IFtzZWxmIF9pbXBd
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nKGtleSkp
KSk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVj
KTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhl
Y1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogICAgIEFTU0VS
VCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
Ci0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9p
bXBdLCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhTdHJpbmcoa2V5KSkp
KTsKKyAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYg
X2ltcF0sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhl
Yyk7CkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4
ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAgICBBU1NF
UlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwotICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKFN0cmluZyhrZXkpKSkpOworICAgIEJPT0wgcmVz
dWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3Ry
aW5nKGtleSkpKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBh
ZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC01NjksNyArNTY5LDcgQEAgc3RhdGljIHZv
aWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJv
b3RPYmplY3QqIHJvb3QKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7
Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHUgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMp
OworICAgICAgICBjb25zdCBTdHJpbmcmIHUgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMp
OwogICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOnUuY2hhcmFj
dGVycygpIGxlbmd0aDp1Lmxlbmd0aCgpXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNGJlZWY5YzJkMTY2
MGFmMDcwODdiMDZjNzM4ZmExN2FlY2EyYmQ1Yi4uMzQ5MjliYzY0YzMyODJjMGRjOGQwNDdjYzgw
MGRhYTg4Nzg3YjEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE2NSw3ICsxNjUsNyBAQCBFTkQKICAgICBKU1ZhbHVl
IGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
IGltcGwtPiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgJHdyYXBwZXJPYmplY3QsIGZhbHNl
LCBjdXJyZW50V29ybGQoZXhlYykpJHBhc3NSZWZQdHJIYW5kbGluZywgZXhlYy0+YXJndW1lbnQo
MikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsLT4ke2Z1bmN0aW9uTmFtZX1FdmVudExpc3Rl
bmVyKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgSlNFdmVu
dExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCAkd3JhcHBlck9iamVjdCwgZmFs
c2UsIGN1cnJlbnRXb3JsZChleGVjKSkkcGFzc1JlZlB0ckhhbmRsaW5nLCBleGVjLT5hcmd1bWVu
dCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiBFTkQKICAgICByZXR1cm4gQEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGw7CkBA
IC0zMDUxLDcgKzMwNTEsNyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgICAgICAgICByZXR1
cm4gInZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsICR2YWx1ZSkiCiAgICAgICAgIH0K
ICAgICAgICAgIyBGSVhNRTogQWRkIHRoZSBjYXNlIGZvciAnaWYgKCRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJUcmVhdFVuZGVmaW5lZEFzIn0gYW5kICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJUcmVhdFVuZGVmaW5lZEFzIn0gZXEgIk51bGxTdHJpbmciKSknLgot
ICAgICAgICByZXR1cm4gInVzdHJpbmdUb1N0cmluZygkdmFsdWUuaXNFbXB0eSgpID8gVVN0cmlu
ZygpIDogJHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkiOworICAgICAgICByZXR1
cm4gIiR2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6ICR2YWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiRE9NT2JqZWN0IikgewpA
QCAtMzY4MSw3ICszNjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWMKICAgICBpZiAoIWV4
ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
UmVmZXJlbmNlRXJyb3IoZXhlYywgIkNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNv
bnRleHQgaXMgdW5hdmFpbGFibGUiKSk7CiAKLSAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0g
dXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggZjcxMGJlMTY5MGIyNDczNjEx
MDk3OWE3OWIyNDk0YzVmYjE5MThiYS4uODdiOTYxODMzMjhiYmE5MWM4MWExZjAwNDQ2OTAzMWFh
NjQ0NzFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTIwNSw3ICsy
MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UoRQogICAgIFRlc3RBY3RpdmVET01PYmplY3Qq
IGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7
Ci0gICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJp
bmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCku
aXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIGltcGwtPnBvc3RNZXNzYWdlKG1lc3NhZ2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggOTZmODdhYjA0ODUxNWE3M2ZjYmJjNzBl
OGMxNDJlZTBhOWNlN2Q2Mi4uYjExYTYzN2JjYmU4MTRhOGJjNTU1OGU0M2RjZGU0NjU2NGM4NDhj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNzcsNyArMTc3
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRl
clByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmMKICAgICBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
IGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMp
KTsKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5n
KCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0
eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIGltcGwtPmFub3RoZXJGdW5jdGlvbihzdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcAppbmRleCAwZTM5YzQxZWU4ZDcxODJiOWE4ZmMwYWUyNDAyNzAwYTU1ZTM5M2YwLi44ZDQ0
NjIzMDM5YjNjYzE2YjU0MGVmZmFmMGVhNGE4YjJlYmMyOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcApAQCAtMTMyLDEwICsxMzIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJmYWMKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHIxKHVzdHJpbmdUb1N0cmluZyhN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1w
dHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3Qg
U3RyaW5nJiBzdHIxKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyMih1c3RyaW5nVG9T
dHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVk
KS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAx
LCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAg
IGNvbnN0IFN0cmluZyYgc3RyMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZh
dWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzI3
LDcgKzMyNyw3IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAg
VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RhdGljQXR0cih1c3RyaW5nVG9TdHJp
bmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKSk7CisgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RhdGlj
QXR0cih2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CiB9CiAKICNlbmRpZgpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgc2V0SlNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBKCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzT2JqZWN0KTsKICAg
ICBUZXN0SW50ZXJmYWNlKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7Ci0gICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3Ry
MihpbXBsLCB1c3RyaW5nVG9TdHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgVGVzdFN1cHBsZW1lbnRhbDo6
c2V0U3VwcGxlbWVudGFsU3RyMihpbXBsLCB2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiB9CiAKICNlbmRpZgpAQCAtMzk4LDcg
KzM5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAo
IXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8g
VVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcm
IHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBlZWVmNjZhNDRlYWFjMzkzNWYzYjg4MGI5
ZmU2MjBhMTQ0YzVhODA5Li4xNmMzNDU3YjllMDg4YWFkMDk1M2JhY2E4OWIzZjg3ZGQyM2IxYjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC05MywxMyArOTMsMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFt
ZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlMKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29u
c3QgU3RyaW5nJiBzdHIxKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHIxKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3Ry
aW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGNvbnN0IFN0cmluZyYgc3RyMih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkg
OiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyMihNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHko
KSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElz
VW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0cjModXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDIsIERlZmF1bHRJc051bGxTdHJpbmcpLmlzRW1wdHkoKSA/IFVT
dHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIERlZmF1bHRJc051bGxT
dHJpbmcpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYg
c3RyMyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAyLCBEZWZhdWx0SXNOdWxsU3RyaW5n
KS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIs
IERlZmF1bHRJc051bGxTdHJpbmcpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIFJlZlB0cjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gb2JqZWN0
ID0gVGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoY2FzdGVkVGhp
cy0+ZG9jdW1lbnQoKSwgc3RyMSwgc3RyMiwgc3RyMywgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBjMTc2
MTQzNjgxMTYxYTQ5ZTUwMzljMTc3NGFiMjM1Y2Y5ZDA0NDQ0Li4yYWIwMDQwODEzNTNmODE5Yjk1
MjFmZTQyM2M3YmNlODVmODAxOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtOTY3LDcgKzk2Nyw3IEBAIHZv
aWQgSlNUZXN0T2JqOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTCiB2b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGlj
U3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB2YWx1ZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgVGVzdE9iajo6c2V0U3RhdGljU3RyaW5nQXR0
cih1c3RyaW5nVG9TdHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgVGVzdE9iajo6c2V0U3RhdGljU3RyaW5n
QXR0cih2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CiB9CiAKIApAQCAtMTAyMSw3ICsxMDIxLDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBpbXBsLT5z
ZXRTdHJpbmdBdHRyKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBpbXBsLT5zZXRTdHJp
bmdBdHRyKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKIH0KIAogCkBAIC0xMTcwLDcgKzExNzAsNyBAQCB2b2lkIHNldEpTVGVz
dE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHRoaXNPYgogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzT2JqZWN0KTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1w
bC0+c2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24odXN0cmluZ1RvU3RyaW5nKHZhbHVl
LmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSksIGVjKTsKKyAgICBpbXBsLT5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2YWx1
ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiB9CiAKQEAgLTExODEsNyAr
MTE4MSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBpbXBsLT5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bih1c3RyaW5nVG9TdHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZWMpOworICAgIGltcGwtPnNldFN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKIH0KIApAQCAtMTQzMyw3ICsxNDMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QK
ICAgICBsb25nIGxvbmcgQXJnKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0ludGVnZXIoZXhlYykpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1Rv
U3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5l
ZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAg
ICBjb25zdCBTdHJpbmcmIHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9U
ZXN0T2JqKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIERlZmF1bHRJc1VuZGVmaW5l
ZCkpKTsKQEAgLTE0NjksNyArMTQ2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqCiAgICAg
bG9uZyBsb25nIEFyZyhzdGF0aWNfY2FzdDxsb25nIGxvbmc+KE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9JbnRlZ2VyKGV4ZWMpKSk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdUb1N0cmlu
ZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlz
RW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERl
ZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29u
c3QgU3RyaW5nJiBzdHJBcmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVs
dElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9i
aihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7
CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YQogICAgIGxvbmcg
bG9uZyBBcmcoc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvSW50ZWdlcihleGVjKSkpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5
KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0
SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0
cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMiwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwpAQCAt
MTU2Myw3ICsxNTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8g
VVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcm
IHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKQEAgLTE5Mzks
NyArMTkzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiBz
dHIodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5tZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmcoc3RyKTsKQEAgLTE5NTQsNyArMTk1NCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgY29uc3QgU3Ry
aW5nJiBzdHIodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cihNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDog
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBs
LT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChzdHIpOwpAQCAtMTk2OSw3ICsx
OTY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAg
IFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzTnVsbFN0cmluZykuaXNFbXB0eSgpID8gVVN0cmlu
ZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzTnVsbFN0cmlu
ZykudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHIo
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzTnVsbFN0cmluZykuaXNF
bXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNOdWxsU3RyaW5nKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBpbXBsLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJp
bmcoc3RyKTsKQEAgLTIwOTYsNyArMjA5Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoCiAg
ICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNv
bnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmcoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkg
PyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgaW1wbC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcsIHN0ckFyZyk7CkBAIC0yMTQw
LDcgKzIxNDAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QzKAogICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgY29uc3QgU3RyaW5n
JiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygp
IDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBp
bXBsLT5vdmVybG9hZGVkTWV0aG9kKHN0ckFyZyk7CkBAIC0yMzQ4LDcgKzIzNDgsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZAogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAx
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBjb25zdCBTdHJpbmcmIHR5cGUodXN0cmluZ1RvU3RyaW5n
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNF
bXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25z
dCBTdHJpbmcmIHR5cGUoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEo
dHlwZSk7CkBAIC0yNTcxLDcgKzI1NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oRXhlY1N0YXRlKgogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJpbmco
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0Vt
cHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0
IFN0cmluZyYgc3RyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGZsb2F0IGEoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0Zsb2F0KGV4ZWMpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5k
ZXggZDdmOWEzN2M4NzNhZTY5NGQxODNkOTliYTIwZTQ2YjQzNzc2MWQ3Yy4uYThjMGY2YmI3OTIy
ZTUyNTA0YTJlZTY0NjAyZDNjMWUyNGRhY2MzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y28KICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgY29uc3Qg
U3RyaW5nJiBoZWxsbyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgaGVsbG8oTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJp
bmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YShTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0
SXNVbmRlZmluZWQpLCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
SWRlbnRpZmllclJlcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5j
cHAKaW5kZXggMmFjZjE0MTUzZDFkYjllMTJiNzI1NThhNTM4OGQ5ODZmZjhhNWU4NS4uMWYxNzZm
YzhjMjA3M2Y3OGMwOTBhMGY2NjIwMTA4MWJiMDdjZDg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9JZGVudGlmaWVyUmVwLmNwcApAQCAtMjgsOSArMjgsOSBAQAogI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDxydW50aW1l
L1VTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIApAQCAtOTIsNyArOTIsNyBAQCBJZGVudGlmaWVyUmVwKiBJZGVudGlmaWVy
UmVwOjpnZXQoY29uc3QgY2hhciogbmFtZSkKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVy
biAwOwogICAKLSAgICBVU3RyaW5nIHN0cmluZyA9IHN0cmluZ1RvVVN0cmluZyhTdHJpbmc6OmZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIHN0cmxlbihuYW1lKSkpOworICAgIFN0cmlu
ZyBzdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIHN0cmxl
bihuYW1lKSk7CiAgICAgU3RyaW5nSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN0
cmluZ0lkZW50aWZpZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggNjFlMzY3OTU2MWE2M2U0
ZTNjZjViZTRkMDg5NjcyMzEzN2Y2MzJjNy4uZmJmNTQxOTRiYzE3NTVhYWNhNzVkNmY0YWM5ZmU3
YmQ1MDQ5ZTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC00MzMs
NyArNDMzLDcgQEAgYm9vbCBfTlBOX0hhc01ldGhvZChOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50
aWZpZXIgbWV0aG9kTmFtZSkKIHZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QqLCBjb25z
dCBOUFVURjgqIG1lc3NhZ2UpCiB7CiAgICAgLy8gSWdub3JpbmcgdGhlIE5QT2JqZWN0IHBhcmFt
IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgTW96aWxsYSBpbXBsZW1lbnRhdGlvbi4KLSAgICBVU3Ry
aW5nIGV4Y2VwdGlvbihtZXNzYWdlKTsKKyAgICBTdHJpbmcgZXhjZXB0aW9uKG1lc3NhZ2UpOwog
ICAgIENJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0aW9uKGV4Y2VwdGlvbik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKaW5kZXggY2ZjMDI2YjI4Y2I5ZmViNjUzMzU3NmViZTgy
MzY1OGYzOTVjN2JiNy4uY2U1ZmQ1NDg5ZGM1NmQ3M2UwN2YwMzQ5ZWFiYmQzM2U0YjljZThlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgQ0NsYXNz
KiBDQ2xhc3M6OmNsYXNzRm9ySXNBKE5QQ2xhc3MqIGlzYSkKIAogTWV0aG9kTGlzdCBDQ2xhc3M6
Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFu
Y2UpIGNvbnN0CiB7Ci0gICAgVVN0cmluZyBuYW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OworICAgIFN0cmluZyBuYW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIAogICAg
IE1ldGhvZExpc3QgbWV0aG9kTGlzdDsKIApAQCAtOTcsNyArOTcsNyBAQCBNZXRob2RMaXN0IEND
bGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBp
bnN0YW5jZSkgYwogCiBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKLSAgICBVU3RyaW5nIG5hbWUo
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIG5hbWUocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CiAgICAgCiAgICAgRmllbGQqIGFGaWVsZCA9IF9maWVsZHMuZ2V0KG5h
bWUuaW1wbCgpKTsKICAgICBpZiAoYUZpZWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3Rh
bmNlLmNwcAppbmRleCA1Yjk4ZjZlZTE5NGQxNWNmZmYyN2UyMmQ0Zjc3YmE5MDJhZWE0ZDkwLi4y
MDFjNjFlODYxMWUzMzkzZDRmZjk4MWY4ZTU3ZTIwMTljZGNjMzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmNwcApAQCAtNTQsMTUgKzU0LDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi11c2lu
ZyBKU0M6OlVTdHJpbmc7Ci0KLXN0YXRpYyBKU0M6OlVTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0
cmluZygpCitzdGF0aWMgU3RyaW5nJiBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKQogewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoSlNDOjpVU3RyaW5nLCBleGNlcHRpb25TdHIsICgpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7CiAgICAgcmV0dXJu
IGV4Y2VwdGlvblN0cjsKIH0KIAotdm9pZCBDSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbihV
U3RyaW5nIGV4Y2VwdGlvbikKK3ZvaWQgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oU3Ry
aW5nIGV4Y2VwdGlvbikKIHsKICAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IGV4Y2VwdGlv
bjsKIH0KQEAgLTc3LDcgKzc1LDcgQEAgdm9pZCBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRp
b25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlRXJyb3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKICAgICB9CiAKLSAg
ICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IFVTdHJpbmcoKTsKKyAgICBnbG9iYWxFeGNlcHRp
b25TdHJpbmcoKSA9IFN0cmluZygpOwogfQogCiBDSW5zdGFuY2U6OkNJbnN0YW5jZShOUE9iamVj
dCogbywgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQpAQCAtMTEzLDcgKzExMSw3
IEBAIGNsYXNzIENSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGlj
OgogICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIENSdW50aW1l
TWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAg
ICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhv
ZExpc3QmIGxpc3QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBm
b3IgImkiLgpAQCAtMTM2LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3Ry
aW5nJiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAppbmRleCA2MWUzNDkxMWI4MTU0Mzcy
MjY4YjE3ZjUzNTM4OGZlOTNjZjAxMDNjLi5kZGFjMGMyNmM2NzBlYWQ4ZTliMjY2NmQ1N2U3ZTFm
NTBjZjY4ZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCkBAIC0zMSwxMyAr
MzEsMTIgQEAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3Qu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB0eXBlZGVmIHN0cnVjdCBOUE9iamVjdCBOUE9iamVjdDsKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIFVTdHJpbmc7Ci0KIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNz
IENDbGFzczsKQEAgLTQ5LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENJbnN0YW5jZShvYmplY3QsIHJvb3RPYmplY3QpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBzZXRHbG9iYWxFeGNlcHRpb24oSlNDOjpVU3RyaW5nIGV4Y2VwdGlvbik7CisgICAg
c3RhdGljIHZvaWQgc2V0R2xvYmFsRXhjZXB0aW9uKFN0cmluZyk7CiAgICAgc3RhdGljIHZvaWQg
bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwogCiAgICAgfkNJbnN0
YW5jZSAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCmluZGV4IDMwOGFmNWFm
ZGM1ZGQ1ZjAxMWQ2ODQyYTg5MDFkMDM3YjEzZDUxMTMuLjgyNTA2ZDk5MzZjNzQzNmJmY2VmOWMz
Y2ZmYWI1ODgzMmE4NTc3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
dXRpbGl0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcApA
QCAtNzMsNyArNzMsNyBAQCB2b2lkIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSwgTlBWYXJpYW50KiByZXN1bHQpCiAgICAgVk9JRF9UT19OUFZB
UklBTlQoKnJlc3VsdCk7CiAKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBV
U3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
ICAgIFN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSB1c3RyaW5nLnV0ZjgoKTsKICAgICAgICAgTlBTdHJp
bmcgc3RyaW5nID0geyAoY29uc3QgTlBVVEY4Kiljc3RyaW5nLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGNzdHJpbmcubGVuZ3RoKCkpIH07CiAgICAgICAgIE5QTl9Jbml0aWFsaXplVmFy
aWFudFdpdGhTdHJpbmdDb3B5KHJlc3VsdCwgJnN0cmluZyk7CkBAIC0xNDQsNyArMTQ0LDcgQEAg
U3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29uc3QgTlBTdHJpbmcqIHN0cmluZykKIAog
SWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IE5QVVRGOCogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcihleGVjLCBXZWJDb3Jl
OjpzdHJpbmdUb1VTdHJpbmcoY29udmVydFVURjhUb1VURjE2V2l0aExhdGluMUZhbGxiYWNrKG5h
bWUsIC0xKSkpOworICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGNvbnZlcnRVVEY4VG9VVEYx
NldpdGhMYXRpbjFGYWxsYmFjayhuYW1lLCAtMSkpOwogfQogCiB9IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KaW5kZXggYjVhN2QyMjBiM2ExM2ZiMzNhYzUyZDYz
ZjFmZTRlZGE1YzY5ODljYi4uYTE5ZDM0MzQ5YjU0Mzc5N2I0Mjk1ZGNjZjMwMWEzZjkwZjk2NGQy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KQEAgLTQ4OCw3
ICs0ODgsNyBAQCBqb2JqZWN0IEphdmFKU09iamVjdDo6Y29udmVydFZhbHVlVG9KT2JqZWN0KEpT
VmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQgPSBlbnYtPk5ld09iamVjdCAo
SlNPYmplY3RDbGFzcywgY29uc3RydWN0b3JJRCwgKGpkb3VibGUpdmFsdWUudG9OdW1iZXIoZXhl
YykpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CisgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICAgICAgSk5JRW52ICplbnYgPSBnZXRKTklFbnYoKTsKICAgICAgICAg
cmVzdWx0ID0gZW52LT5OZXdTdHJpbmcgKChjb25zdCBqY2hhciAqKXN0cmluZ1ZhbHVlLmNoYXJh
Y3RlcnMoKSwgc3RyaW5nVmFsdWUubGVuZ3RoKCkpOwogICAgIH0gZWxzZSBpZiAodmFsdWUuaXNC
b29sZWFuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0pO
SVV0aWxpdHlQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0pOSVV0
aWxpdHlQcml2YXRlLmNwcAppbmRleCBhM2IyYzJlN2RmZTIxMDEwZGEzNTZhOWQ2MGNhNGRlMTM1
ZWJmMDc5Li4zNzZiMDJhNDRmODdlNjc1OTJiOTVjYTZjMGZkNzgxMmI4ZDc2MTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KTklVdGlsaXR5UHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JVXRpbGl0eVByaXZhdGUuY3Bw
CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBqb2JqZWN0IGNvbnZlcnRBcnJheUluc3RhbmNlVG9K
YXZhQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBqc0FycmF5CiAgICAgICAgICAgICAg
ICAgICAgIGVudi0+TmV3U3RyaW5nVVRGKCIiKSk7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgVVN0
cmluZyBzdHJpbmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSBpdGVtLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICAgICAgZW52LT5TZXRPYmplY3RBcnJheUVs
ZW1lbnQoamFycmF5LCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5mdW5jdGlvbnMt
Pk5ld1N0cmluZyhlbnYsIChjb25zdCBqY2hhciAqKXN0cmluZ1ZhbHVlLmNoYXJhY3RlcnMoKSwg
c3RyaW5nVmFsdWUubGVuZ3RoKCkpKTsKICAgICAgICAgICAgICAgICB9CkBAIC05OCw3ICs5OCw3
IEBAIHN0YXRpYyBqb2JqZWN0IGNvbnZlcnRBcnJheUluc3RhbmNlVG9KYXZhQXJyYXkoRXhlY1N0
YXRlKiBleGVjLCBKU0FycmF5KiBqc0FycmF5CiAgICAgICAgICAgICBqYXJyYXkgPSAoam9iamVj
dEFycmF5KWVudi0+TmV3Q2hhckFycmF5KGxlbmd0aCk7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGl0
ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAgICAgVVN0cmluZyBzdHJp
bmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAg
ICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgICAgICAgICAgICAgIGpjaGFyIHZhbHVlID0gMDsKICAgICAgICAgICAgICAgICBpZiAo
c3RyaW5nVmFsdWUubGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICgo
Y29uc3QgamNoYXIqKXN0cmluZ1ZhbHVlLmNoYXJhY3RlcnMoKSlbMF07CkBAIC0yMTksNyArMjE5
LDcgQEAganZhbHVlIGNvbnZlcnRWYWx1ZVRvSlZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUm9vdE9i
amVjdCogcm9vdE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBh
cHByb3ByaWF0ZSBKYXZhIG9iamVjdCBpZiB0YXJnZXQgdHlwZSBpcyBqYXZhLmxhbmcuT2JqZWN0
LgogICAgICAgICAgICAgaWYgKCFyZXN1bHQubCAmJiAhc3RyY21wKGphdmFDbGFzc05hbWUsICJq
YXZhLmxhbmcuT2JqZWN0IikpIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNTdHJpbmco
KSkgewotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gYXNTdHJpbmco
dmFsdWUpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHN0cmluZ1Zh
bHVlID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICAgICAg
Sk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKICAgICAgICAgICAgICAgICAgICAgam9iamVjdCBq
YXZhU3RyaW5nID0gZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIChjb25zdCBqY2hhciop
c3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5ndGgoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKQEAgLTIzOCw3ICsyMzgsNyBAQCBq
dmFsdWUgY29udmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBSb290T2JqZWN0KiBy
b290T2JqZWN0LCBKU1ZhbHVlIHZhbAogICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFC
b29sZWFuID0gZW52LT5mdW5jdGlvbnMtPk5ld09iamVjdChlbnYsIGNsYXp6LCBjb25zdHJ1Y3Rv
ciwgYm9vbFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBqYXZhQm9vbGVh
bjsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgVVN0cmluZyBzdHJpbmdWYWx1ZSA9ICJ1bmRlZmluZWQiOworICAg
ICAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSAidW5kZWZpbmVkIjsKICAgICAg
ICAgICAgICAgICAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKICAgICAgICAgICAgICAg
ICAgICAgam9iamVjdCBqYXZhU3RyaW5nID0gZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYs
IChjb25zdCBqY2hhciopc3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5n
dGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKQEAgLTI0
OSw3ICsyNDksNyBAQCBqdmFsdWUgY29udmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBSb290T2JqZWN0KiByb290T2JqZWN0LCBKU1ZhbHVlIHZhbAogICAgICAgICAgICAgLy8gY29u
dmVydGluZyBmcm9tIGEgbnVsbC4KICAgICAgICAgICAgIGlmICghcmVzdWx0LmwgJiYgIXN0cmNt
cChqYXZhQ2xhc3NOYW1lLCAiamF2YS5sYW5nLlN0cmluZyIpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCF2YWx1ZS5pc051bGwoKSkgewotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmlu
Z1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgICAgICAgICAgICAgICAgIEpOSUVudiogZW52ID0gZ2V0Sk5JRW52KCk7CiAg
ICAgICAgICAgICAgICAgICAgIGpvYmplY3QgamF2YVN0cmluZyA9IGVudi0+ZnVuY3Rpb25zLT5O
ZXdTdHJpbmcoZW52LCAoY29uc3QgamNoYXIqKXN0cmluZ1ZhbHVlLmNoYXJhY3RlcnMoKSwgc3Ry
aW5nVmFsdWUubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQubCA9IGphdmFT
dHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhRmll
bGRKU0MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUZpZWxkSlNDLmNw
cAppbmRleCAxZWJmMWU2MTc1MzA5NmUwOTkyODFlZTRmMDBjNzgyYTE4ZGI2MGZiLi5jODcxNzU1
MzE5ZWUxMGNkNzg0Njk5OTY2MzFhYjU1ZjBjNjNkZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhRmllbGRKU0MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFGaWVsZEpTQy5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBKU1Zh
bHVlIEphdmFGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
bnN0YW5jZSogaSkgY29uc3QKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgTE9HKExpdmVD
b25uZWN0LCAiSmF2YUZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSBnZXR0aW5nICVzID0gJXMiLCBV
U3RyaW5nKG5hbWUoKS5pbXBsKCkpLnV0ZjgoKS5kYXRhKCksIGpzcmVzdWx0LnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HKExpdmVDb25uZWN0LCAi
SmF2YUZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSBnZXR0aW5nICVzID0gJXMiLCBTdHJpbmcobmFt
ZSgpLmltcGwoKSkudXRmOCgpLmRhdGEoKSwganNyZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIHJldHVybiBqc3Jlc3VsdDsKIH0KQEAgLTE4
Myw3ICsxODMsNyBAQCB2b2lkIEphdmFGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGksIEpTVmFsdWUgYQogICAgIGNvbnN0IEphdmFJbnN0
YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxjb25zdCBKYXZhSW5zdGFuY2UqPihpKTsKICAg
ICBqdmFsdWUgamF2YVZhbHVlID0gY29udmVydFZhbHVlVG9KVmFsdWUoZXhlYywgaS0+cm9vdE9i
amVjdCgpLCBhVmFsdWUsIG1fdHlwZSwgdHlwZUNsYXNzTmFtZSgpKTsKIAotICAgIExPRyhMaXZl
Q29ubmVjdCwgIkphdmFGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlIHNldHRpbmcgdmFsdWUgJXMg
dG8gJXMiLCBVU3RyaW5nKG5hbWUoKS5pbXBsKCkpLnV0ZjgoKS5kYXRhKCksIGFWYWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKS5kYXRhKCkpOworICAgIExPRyhMaXZlQ29u
bmVjdCwgIkphdmFGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlIHNldHRpbmcgdmFsdWUgJXMgdG8g
JXMiLCBTdHJpbmcobmFtZSgpLmltcGwoKSkudXRmOCgpLmRhdGEoKSwgYVZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKS5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewogICAgIGNhc2UgSmF2YVR5cGVBcnJheToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCmluZGV4IDE1ZGZmYTVhZDU2NDI0OTYxMDYw
N2NlYzA4YzMxOGU1NThkMDgzZjUuLjZlZTIwZWY3MjZkNWY0MDI3OWRiMTg2YTZmNTE0N2UxMWU3
MWJiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0
YW5jZUpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3Rh
bmNlSlNDLmNwcApAQCAtOTMsMTEgKzkzLDExIEBAIEpTVmFsdWUgSmF2YUluc3RhbmNlOjpzdHJp
bmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAKICAgICAvLyBTaG91bGQgdGhyb3cgYSBK
UyBleGNlcHRpb24sIHJhdGhlciB0aGFuIHJldHVybmluZyAiIj8gLSBidXQgYmV0dGVyIHRoYW4g
YSBudWxsIGRlcmVmZXJlbmNlLgogICAgIGlmICghc3RyaW5nVmFsdWUpCi0gICAgICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCBVU3RyaW5nKCkpOworICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywgU3RyaW5nKCkpOwogCiAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKICAgICBjb25z
dCBqY2hhciogYyA9IGdldFVDaGFyYWN0ZXJzRnJvbUpTdHJpbmdJbkVudihlbnYsIHN0cmluZ1Zh
bHVlKTsKLSAgICBVU3RyaW5nIHUoKGNvbnN0IFVDaGFyKiljLCAoaW50KWVudi0+R2V0U3RyaW5n
TGVuZ3RoKHN0cmluZ1ZhbHVlKSk7CisgICAgU3RyaW5nIHUoKGNvbnN0IFVDaGFyKiljLCAoaW50
KWVudi0+R2V0U3RyaW5nTGVuZ3RoKHN0cmluZ1ZhbHVlKSk7CiAgICAgcmVsZWFzZVVDaGFyYWN0
ZXJzRm9ySlN0cmluZ0luRW52KGVudiwgc3RyaW5nVmFsdWUsIGMpOwogICAgIHJldHVybiBqc1N0
cmluZyhleGVjLCB1KTsKIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBKYXZhUnVudGltZU1l
dGhvZCA6IHB1YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRp
bWVNZXRob2QgQmFzZTsKIAotICAgIHN0YXRpYyBKYXZhUnVudGltZU1ldGhvZCogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmlu
ZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGljIEphdmFSdW50
aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0
aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBX
ZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTE0
MSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0
YSwgbmFtZSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBAIC0xODcsNyAr
MTg3LDcgQEAgSlNWYWx1ZSBKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QKICAgICB9CiAKICAgICBjb25zdCBKYXZh
TWV0aG9kKiBqTWV0aG9kID0gc3RhdGljX2Nhc3Q8Y29uc3QgSmF2YU1ldGhvZCo+KG1ldGhvZCk7
Ci0gICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUluc3RhbmNlOjppbnZva2VNZXRob2QgY2FsbCAl
cyAlcyBvbiAlcCIsIFVTdHJpbmcoak1ldGhvZC0+bmFtZSgpLmltcGwoKSkudXRmOCgpLmRhdGEo
KSwgak1ldGhvZC0+c2lnbmF0dXJlKCksIG1faW5zdGFuY2UtPmluc3RhbmNlKCkpOworICAgIExP
RyhMaXZlQ29ubmVjdCwgIkphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kIGNhbGwgJXMgJXMgb24g
JXAiLCBTdHJpbmcoak1ldGhvZC0+bmFtZSgpLmltcGwoKSkudXRmOCgpLmRhdGEoKSwgak1ldGhv
ZC0+c2lnbmF0dXJlKCksIG1faW5zdGFuY2UtPmluc3RhbmNlKCkpOwogCiAgICAgVmVjdG9yPGp2
YWx1ZT4gakFyZ3MoY291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL2pzYy9KYXZhU3RyaW5nSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9K
YXZhU3RyaW5nSlNDLmgKaW5kZXggMWUxODAzYWExNDRhMDA0YmE5NmNlMmJjOWRkNzc0MTlmY2I0
MzNmOS4uMWNjNTQ3NGEzZGNlNjJjNjk3MWZiZTE4MDBlMTkwZmYyZWMzMWMwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pTQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaApAQCAtNTQsNyArNTQs
NiBAQCBwdWJsaWM6CiAgICAgSmF2YVN0cmluZygpCiAgICAgewogICAgICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsK
LSAgICAgICAgbV9pbXBsID0gVVN0cmluZygpLmltcGwoKTsKICAgICB9CiAKICAgICB+SmF2YVN0
cmluZygpCkBAIC02Nyw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbV91
dGY4U3RyaW5nLmRhdGEoKSkgewogICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soV2ViQ29y
ZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7Ci0gICAgICAgICAgICBt
X3V0ZjhTdHJpbmcgPSBVU3RyaW5nKG1faW1wbCkudXRmOCgpOworICAgICAgICAgICAgbV91dGY4
U3RyaW5nID0gU3RyaW5nKG1faW1wbCkudXRmOCgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biBtX3V0ZjhTdHJpbmcuZGF0YSgpOwogICAgIH0KQEAgLTgxLDcgKzgwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY29uc3QgamNoYXIqIHVjID0gZ2V0VUNoYXJhY3RlcnNGcm9tSlN0cmluZ0luRW52
KGUsIHMpOwogICAgICAgICB7CiAgICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhXZWJDb3Jl
OjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAgIG1f
aW1wbCA9IFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHVjKSwgc2l6ZSku
aW1wbCgpOworICAgICAgICAgICAgbV9pbXBsID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUNoYXIqPih1YyksIHNpemUpLmltcGwoKTsKICAgICAgICAgfQogICAgICAgICByZWxlYXNl
VUNoYXJhY3RlcnNGb3JKU3RyaW5nSW5FbnYoZSwgcywgdWMpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IDJkMDg3MDQ1ODFlN2JhZjQ5MmVjZTc5
MDliYzczNGNjMmUwN2I2NGEuLmJjYmQ3ZTdiYzdmY2NhODMzOGFjMzI0ZTBlNmVmMjdjNTA3NGNk
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtOTcsNyAr
OTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29udmVydEpTTWV0aG9kTmFtZVRvT2JqYyhjb25z
dCBDU3RyaW5nJiBqc05hbWUsIEpTTmFtZUNvbnZlcgogCiBNZXRob2RMaXN0IE9iamNDbGFzczo6
bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QK
IHsKLSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3Ry
aW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBNZXRob2RMaXN0KCk7CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBN
ZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEluc3RhbmNlKikgY29uc3QKIAogRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7Ci0gICAg
VVN0cmluZyBuYW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyBuYW1l
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0KaW5kZXggOGE5N2I3ZGU4YmQxMGFjMzMyMjAwY2I2NTlhMmQxMzUzNGQ3NDRkMS4uNGY1
YmVjYWFkYmNhMTc1MThjYzY4MDRlYWRhNWI5MTU1ODM0ODQ0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBP
YmpjSW5zdGFuY2U6OnN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0CiAKIGNsYXNz
IE9iakNSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgotICAg
IHN0YXRpYyBPYmpDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1l
dGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgLy8gRklY
TUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0
aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhl
IHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7CiAgICAgICAgIEFT
U0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBAIC00MDMsNyArNDAzLDcgQEAgSlNWYWx1ZSBPYmpj
SW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogCiBib29sIE9i
amNJbnN0YW5jZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBhVmFsdWUpCiB7Ci0gICAgVVN0cmluZyBu
YW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyBuYW1lKHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIE9iamNJbnN0YW5jZTo6c2V0VmFs
dWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Blcgog
CiBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKLSAgICBVU3RyaW5n
IG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIG5hbWUocHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oCmluZGV4IDFkMTYwNDBjNzRhMzIzN2YyODRiYTMyNTI4MGI0YTE5NjQ2ZmQzNjcuLjBk
YzJiODM0OGNiMDllYmY4NmE1MGQzYTUyMjIzZGJjY2FjYjViN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIE9iamNG
YWxsYmFja09iamVjdEltcCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBPYmpjRmFsbGJh
Y2tPYmplY3RJbXAqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE9iamNJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5
TmFtZSkKKyAgICBzdGF0aWMgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmpjSW5zdGFuY2UqIGluc3Rh
bmNlLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1F
OiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhl
IHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBX
ZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iamNGYWxsYmFja09iamVjdEltcD4o
ZXhlYyk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKLSAgICBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUoKSBjb25z
dCB7IHJldHVybiBfaXRlbTsgfQorICAgIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9pdGVtOyB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVh
dGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICB7CkBAIC0xMjEsNyArMTIxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToKLSAgICBPYmpjRmFsbGJhY2tPYmplY3RJ
bXAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpjSW5zdGFuY2UqLCBjb25zdCBVU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpOworICAgIE9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
QEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0
ZSopIGNvbnN0OyAvLyBGSVhNRTogQ3VycmVudGx5IHRoaXMgaXMgYnJva2VuIGJlY2F1c2Ugbm9u
ZSBvZiB0aGUgc3VwZXJjbGFzc2VzIGFyZSBtYXJrZWQgdmlydHVhbC4gV2UgbmVlZCB0byBzb2x2
ZSB0aGlzIGluIHRoZSBsb25nZXIgdGVybS4KIAogICAgIFJlZlB0cjxPYmpjSW5zdGFuY2U+IF9p
bnN0YW5jZTsKLSAgICBVU3RyaW5nIF9pdGVtOworICAgIFN0cmluZyBtX2l0ZW07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCmluZGV4IDMzNTY2OGVjNjM1YWYxNzU3NjM5MWMxNWIxM2JmNjNlZmE0OTM4MWEu
LmRiM2Y5OGU2NWIxZTMzNzI3Yjg2M2ZhMzlkM2Q1YzYyZTUzYjk0OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTE5MCwxMCArMTkwLDEwIEBAIHVu
c2lnbmVkIGludCBPYmpjQXJyYXk6OmdldExlbmd0aCgpIGNvbnN0CiAKIGNvbnN0IENsYXNzSW5m
byBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OnNfaW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIs
ICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKSB9OwogCi1PYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxs
YmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCitP
YmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICAsIF9pbnN0YW5jZShpKQotICAg
ICwgX2l0ZW0ocHJvcGVydHlOYW1lKQorICAgICwgbV9pdGVtKHByb3BlcnR5TmFtZSkKIHsKIH0K
IApAQCAtMjQ3LDggKzI0Nyw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChbdGFyZ2V0
T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9k
RnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpj
Q2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkp
OwogICAgICAgICBPd25QdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRvcHRQdHIobmV3
IE9iamNNZXRob2Qob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1l
dGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSkpOwotICAgICAgICBjb25zdCBVU3Ry
aW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+
KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gbmFtZShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIG5h
bWVJZGVudGlmaWVyLmNoYXJhY3RlcnMoKSwgbmFtZUlkZW50aWZpZXIubGVuZ3RoKCkpKTsKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxs
YmFja09iamVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CisgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBuYW1lSWRlbnRpZmllci5jcmVh
dGVDRlN0cmluZygpKTsKICAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1l
KG5hbWUuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9rZU9iamNN
ZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwogICAgIH0KQEAgLTI3Niw3ICsyNzYs
NyBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKQogSlNWYWx1ZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6
OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUpCiB7CiAgICAgY29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCo+KG9iamVj
dCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKGV4ZWMsIElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+X2l0ZW0pKTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhl
YywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5tX2l0ZW0pKTsKIH0KIAogYm9vbCBPYmpj
RmFsbGJhY2tPYmplY3RJbXA6OnRvQm9vbGVhbihFeGVjU3RhdGUgKikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQppbmRleCBiNjJlM2RmNjA4MGZhY2U2
N2ZmMTVmOTEyMDhlNTM5OTcwOGU4MjBhLi5lODYwMjQ3N2FlNjE0MzVjOGQzMjYzZjFiZWE4YTU5
NmQzMGE2NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0
aWxpdHkubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1t
CkBAIC0xNDcsMTQgKzE0Nyw3IEBAIE9iamNWYWx1ZSBjb252ZXJ0VmFsdWVUb09iamNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIE9iamNWYWx1ZVR5cGUKIEpTVmFsdWUgY29u
dmVydE5TU3RyaW5nVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBOU1N0cmluZyAqbnNzdHJpbmcp
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgCi0gICAgdW5pY2hhciAqY2hh
cnM7Ci0gICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFtuc3N0cmluZyBsZW5ndGhdOwotICAgIGNo
YXJzID0gKHVuaWNoYXIgKiltYWxsb2Moc2l6ZW9mKHVuaWNoYXIpKmxlbmd0aCk7Ci0gICAgW25z
c3RyaW5nIGdldENoYXJhY3RlcnM6Y2hhcnNdOwotICAgIFVTdHJpbmcgdSgoY29uc3QgVUNoYXIq
KWNoYXJzLCBsZW5ndGgpOwotICAgIEpTVmFsdWUgYVZhbHVlID0ganNTdHJpbmcoZXhlYywgdSk7
Ci0gICAgZnJlZSgodm9pZCAqKWNoYXJzKTsKKyAgICBKU1ZhbHVlIGFWYWx1ZSA9IGpzU3RyaW5n
KGV4ZWMsIFN0cmluZyhuc3N0cmluZykpOwogICAgIHJldHVybiBhVmFsdWU7CiB9CiAKQEAgLTMx
MSwxMSArMzA0LDcgQEAgT2JqY1ZhbHVlVHlwZSBvYmpjVmFsdWVUeXBlRm9yVHlwZShjb25zdCBj
aGFyICp0eXBlKQogSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBOU1N0cmlu
ZyAqbWVzc2FnZSkKIHsKICAgICBBU1NFUlQobWVzc2FnZSk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9
IFttZXNzYWdlIGxlbmd0aF07Ci0gICAgdW5pY2hhciAqYnVmZmVyID0gbmV3IHVuaWNoYXJbbGVu
Z3RoXTsKLSAgICBbbWVzc2FnZSBnZXRDaGFyYWN0ZXJzOmJ1ZmZlcl07Ci0gICAgSlNPYmplY3Qg
KmVycm9yID0gSlNDOjp0aHJvd0Vycm9yKGV4ZWMsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgVVN0
cmluZyhidWZmZXIsIGxlbmd0aCkpKTsKLSAgICBkZWxldGUgW10gYnVmZmVyOworICAgIEpTT2Jq
ZWN0ICplcnJvciA9IEpTQzo6dGhyb3dFcnJvcihleGVjLCBKU0M6OmNyZWF0ZUVycm9yKGV4ZWMs
IFN0cmluZyhtZXNzYWdlKSkpOwogICAgIHJldHVybiBlcnJvcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9xdC9xdF9jbGFzcy5jcHAKaW5kZXggZTI0Njc2YTI5ZDY3YzQ0ODc1MmI0NjhhOTcxMzJj
NmIwN2RiNjg2Zi4uNzYxNzg3MWYzZjNlMGVlM2MxYTg3ZDk4NTJjMDM5ODY0NTA5OWNlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEpTVmFs
dWUgUXRDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBJbnN0YW5jZSogaW5z
dCwgUHJvcGVydHlOYW1lIGlkCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSB0b1JlZihleGVj
KTsKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAKLSAgICBVU3RyaW5nIHVzdHJpbmco
aWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyB1c3RyaW5nKGlkZW50aWZpZXIu
cHVibGljTmFtZSgpKTsKICAgICBjb25zdCBRQnl0ZUFycmF5IG5hbWUgPSBRU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPih1c3RyaW5nLmNoYXJhY3RlcnMoKSksIHVzdHJpbmcu
bGVuZ3RoKCkpLnRvTGF0aW4xKCk7CiAKICAgICAvLyBGaXJzdCBzZWUgaWYgd2UgaGF2ZSBhIGNh
Y2hlIGhpdApAQCAtMTM2LDcgKzEzNiw3IEBAIEZpZWxkKiBRdENsYXNzOjpmaWVsZE5hbWVkKFBy
b3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgUXRJ
bnN0YW5jZSogcXRpbnN0ID0gc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGluc3RhbmNlKTsKIAog
ICAgIFFPYmplY3QqIG9iaiA9IHF0aW5zdC0+Z2V0T2JqZWN0KCk7Ci0gICAgVVN0cmluZyB1c3Ry
aW5nKGlkZW50aWZpZXIucHVibGljTmFtZSgpKTsKKyAgICBTdHJpbmcgdXN0cmluZyhpZGVudGlm
aWVyLnB1YmxpY05hbWUoKSk7CiAgICAgY29uc3QgUVN0cmluZyBuYW1lKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgUUNoYXIqPih1c3RyaW5nLmNoYXJhY3RlcnMoKSksIHVzdHJpbmcubGVuZ3RoKCkp
OwogICAgIGNvbnN0IFFCeXRlQXJyYXkgYXNjaWkgPSBuYW1lLnRvTGF0aW4xKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4IGI5YTM0YWMzMGI3ZmMzZDc1
NDM2YzFiMzg5MzIxNjQwMTgyNzhlZTYuLjYwZTgxYjA1NGM4NjZjZGZkN2JmOGE3YTU2MDYzY2U1
MjQwNTg1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcApAQCAt
MjcwLDcgKzI3MCw3IEBAIHZvaWQgUXRJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSkKICAgICAgICAgICAgIFFNZXRhTWV0
aG9kIG1ldGhvZCA9IG1ldGEtPm1ldGhvZChpKTsKICAgICAgICAgICAgIGlmIChtZXRob2QuYWNj
ZXNzKCkgIT0gUU1ldGFNZXRob2Q6OlByaXZhdGUpIHsKICAgICAgICAgICAgICAgICBRQnl0ZUFy
cmF5IHNpZyA9IG1ldGhvZC5tZXRob2RTaWduYXR1cmUoKTsKLSAgICAgICAgICAgICAgICBhcnJh
eS5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKHNpZy5jb25zdERhdGEoKSwgc2lnLmxlbmd0
aCgpKSkpOworICAgICAgICAgICAgICAgIGFycmF5LmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmlu
ZyhzaWcuY29uc3REYXRhKCksIHNpZy5sZW5ndGgoKSkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXht
YXBydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1l
LmNwcAppbmRleCBhMmRhYWRhODMxZTBiYzRlN2Q4NzVkMzAwMTA5ZTk0OTgwM2ViMjI3Li45ZjYw
NWQ0MTZiNjMyYWI0MjRjOTEwOGEwYzM3ZjY3ZmE3YTc5MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgcHVi
bGljOgogICAgICAgICBRQnVmZmVyIGJ1ZmZlcigmYnl0ZUFycmF5KTsKICAgICAgICAgaW5zdGFu
Y2UtPnRvSW1hZ2UoKS5zYXZlKCZidWZmZXIsICJQTkciKTsKICAgICAgICAgY29uc3QgUVN0cmlu
ZyBlbmNvZGVkU3RyaW5nID0gUUxhdGluMVN0cmluZygiZGF0YTppbWFnZS9wbmc7YmFzZTY0LCIp
ICsgUUxhdGluMVN0cmluZyhieXRlQXJyYXkudG9CYXNlNjQoKSk7Ci0gICAgICAgIGNvbnN0IFVT
dHJpbmcgdXN0cmluZygoVUNoYXIqKWVuY29kZWRTdHJpbmcudXRmMTYoKSwgZW5jb2RlZFN0cmlu
Zy5sZW5ndGgoKSk7CisgICAgICAgIGNvbnN0IFN0cmluZyB1c3RyaW5nKChVQ2hhciopZW5jb2Rl
ZFN0cmluZy51dGYxNigpLCBlbmNvZGVkU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIHVzdHJpbmcpOwogICAgIH0KIH07CkBAIC0yNTksNyArMjU5LDcgQEAg
SlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBS
dW50aW1lTWV0aG9kKiBydW50aW1lTWUKIE1ldGhvZExpc3QgUXRQaXhtYXBDbGFzczo6bWV0aG9k
c05hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAgICAg
TWV0aG9kTGlzdCBtZXRob2RzOwotICAgIFVTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1Ymxp
Y05hbWUoKSk7CisgICAgU3RyaW5nIHVzdHJpbmcoaWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOwog
ICAgIGlmICh1c3RyaW5nID09IFF0UGl4bWFwVG9EYXRhVXJsTWV0aG9kOjpuYW1lKCkpCiAgICAg
ICAgIG1ldGhvZHMuYXBwZW5kKCZxdF9waXhtYXBfbWV0YURhdGEudG9EYXRhVXJsTWV0aG9kKTsK
ICAgICBlbHNlIGlmICh1c3RyaW5nID09IFF0UGl4bWFwVG9JbWFnZURhdGFNZXRob2Q6Om5hbWUo
KSkKQEAgLTI3Myw3ICsyNzMsNyBAQCBNZXRob2RMaXN0IFF0UGl4bWFwQ2xhc3M6Om1ldGhvZHNO
YW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogCiBGaWVsZCog
UXRQaXhtYXBDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFu
Y2UqKSBjb25zdAogewotICAgIFVTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUo
KSk7CisgICAgU3RyaW5nIHVzdHJpbmcoaWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOwogICAgIGlm
ICh1c3RyaW5nID09IFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKQogICAgICAgICByZXR1cm4g
JnF0X3BpeG1hcF9tZXRhRGF0YS53aWR0aEZpZWxkOwogICAgIGlmICh1c3RyaW5nID09IFF0UGl4
bWFwSGVpZ2h0RmllbGQ6Om5hbWUoKSkKQEAgLTI4MywxMiArMjgzLDEyIEBAIEZpZWxkKiBRdFBp
eG1hcENsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSop
IGNvbnN0CiAKIHZvaWQgUXRQaXhtYXBJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUqZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycikKIHsKLSAgICBhcnIuYWRkKElkZW50aWZp
ZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcFRvRGF0YVVybE1ldGhvZDo6bmFtZSgpKSkpOwotICAg
IGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwVG9JbWFnZURhdGFNZXRo
b2Q6Om5hbWUoKSkpKTsKLSAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBp
eG1hcEFzc2lnblRvRWxlbWVudE1ldGhvZDo6bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwVG9TdHJpbmdNZXRob2Q6Om5hbWUoKSkpKTsKLSAg
ICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcFdpZHRoRmllbGQ6Om5h
bWUoKSkpKTsKLSAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcEhl
aWdodEZpZWxkOjpuYW1lKCkpKSk7CisgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmlu
ZyhRdFBpeG1hcFRvRGF0YVVybE1ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBTdHJpbmcoUXRQaXhtYXBUb0ltYWdlRGF0YU1ldGhvZDo6bmFtZSgpKSkpOwor
ICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBTdHJpbmcoUXRQaXhtYXBBc3NpZ25Ub0VsZW1l
bnRNZXRob2Q6Om5hbWUoKSkpKTsKKyAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgU3RyaW5n
KFF0UGl4bWFwVG9TdHJpbmdNZXRob2Q6Om5hbWUoKSkpKTsKKyAgICBhcnIuYWRkKElkZW50aWZp
ZXIoZXhlYywgU3RyaW5nKFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKSkpOworICAgIGFyci5h
ZGQoSWRlbnRpZmllcihleGVjLCBTdHJpbmcoUXRQaXhtYXBIZWlnaHRGaWVsZDo6bmFtZSgpKSkp
OwogfQogCiBKU1ZhbHVlIFF0UGl4bWFwSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHR5cGUpIGNvbnN0CkBAIC0zMDgsNyArMzA4
LDcgQEAgSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNlOjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHAKIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6
dmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgY29uc3QgUVN0cmluZyBzdHJp
bmdWYWx1ZSA9IFFTdHJpbmc6OmZyb21MYXRpbjEoIltRdCBOYXRpdmUgUGl4bWFwICUxLCUyXSIp
LmFyZyh3aWR0aCgpKS5hcmcoaGVpZ2h0KCkpOwotICAgIFVTdHJpbmcgdXN0cmluZygoVUNoYXIq
KXN0cmluZ1ZhbHVlLnV0ZjE2KCksIHN0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKKyAgICBTdHJpbmcg
dXN0cmluZygoVUNoYXIqKXN0cmluZ1ZhbHVlLnV0ZjE2KCksIHN0cmluZ1ZhbHVlLmxlbmd0aCgp
KTsKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdXN0cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCA3ODVlM2EwNTY0NjJiMjRiYmNmZjc3MTI3
ZDZmYzVmMDIxZDc5NGNhLi5iYmQ0ODNjOTc0M2M5OTczZGRhNGRlYjU4NTQ2OWUzMTk3YzVjNzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgVmFyaWFudCA9IDAsCiAgICAgTnVtYmVyLAogICAgIEJv
b2xlYW4sCi0gICAgU3RyaW5nLAorICAgIFJUU3RyaW5nLAogICAgIERhdGUsCiAgICAgQXJyYXks
CiAgICAgUU9iaiwKQEAgLTExMCw3ICsxMTAsNyBAQCB0eXBlZGVmIGVudW0gewogI2lmIGRlZmlu
ZWQoUVRXS19SVU5USU1FX0NPTlZFUlNJT05fREVCVUcpIHx8IGRlZmluZWQoUVRXS19SVU5USU1F
X01BVENIX0RFQlVHKQogUURlYnVnIG9wZXJhdG9yPDwoUURlYnVnIGRiZywgY29uc3QgSlNSZWFs
VHlwZSAmYykKIHsKLSAgICAgY29uc3QgY2hhciAqbWFwW10gPSB7ICJWYXJpYW50IiwgIk51bWJl
ciIsICJCb29sZWFuIiwgIlN0cmluZyIsICJEYXRlIiwKKyAgICAgY29uc3QgY2hhciAqbWFwW10g
PSB7ICJWYXJpYW50IiwgIk51bWJlciIsICJCb29sZWFuIiwgIlJUU3RyaW5nIiwgIkRhdGUiLAog
ICAgICAgICAgIkFycmF5IiwgIlJUT2JqZWN0IiwgIk9iamVjdCIsICJOdWxsIiwgIlJUQXJyYXki
fTsKIAogICAgICBkYmcubm9zcGFjZSgpIDw8ICJKU1R5cGUoIiA8PCAoKGludCljKSA8PCAiLCAi
IDw8ICBtYXBbY10gPDwgIikiOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBKU1JlYWxUeXBl
IHZhbHVlUmVhbFR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbCkKICAgICBpZiAodmFs
LmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBOdW1iZXI7CiAgICAgZWxzZSBpZiAodmFsLmlz
U3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmc7CisgICAgICAgIHJldHVybiBSVFN0cmlu
ZzsKICAgICBlbHNlIGlmICh2YWwuaXNCb29sZWFuKCkpCiAgICAgICAgIHJldHVybiBCb29sZWFu
OwogICAgIGVsc2UgaWYgKHZhbC5pc051bGwoKSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMg
SlNSZWFsVHlwZSB2YWx1ZVJlYWxUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwpCiAg
ICAgICAgIHJldHVybiBPYmplY3Q7CiAgICAgfQogCi0gICAgcmV0dXJuIFN0cmluZzsgLy8gSSBk
b24ndCBrbm93LgorICAgIHJldHVybiBSVFN0cmluZzsgLy8gSSBkb24ndCBrbm93LgogfQogCiBR
VmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFFNZXRh
VHlwZTo6VHlwZSwgaW50KiwgSGFzaFNldDxKU09iamVjdCo+KiwgaW50KTsKQEAgLTE5OSw3ICsx
OTksNyBAQCBzdGF0aWMgUVZhcmlhbnRNYXAgY29udmVydFZhbHVlVG9RVmFyaWFudE1hcChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsCiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICBRVmFyaWFudCB2ID0gY29udmVydFZhbHVlVG9RVmFyaWFudChleGVjLCB2YWws
IFFNZXRhVHlwZTo6Vm9pZCwgJm9iamRpc3QsIHZpc2l0ZWRPYmplY3RzLCByZWN1cnNpb25MaW1p
dCk7CiAgICAgICAgICAgICAgICAgaWYgKG9iamRpc3QgPj0gMCkgewotICAgICAgICAgICAgICAg
ICAgICBVU3RyaW5nIHVzdHJpbmcgPSAoKml0KS51c3RyaW5nKCk7CisgICAgICAgICAgICAgICAg
ICAgIFdURjo6U3RyaW5nIHVzdHJpbmcgPSAoKml0KS51c3RyaW5nKCk7CiAgICAgICAgICAgICAg
ICAgICAgIFFTdHJpbmcgaWQgPSBRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBsKCkt
PmNoYXJhY3RlcnMoKSwgdXN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5pbnNlcnQoaWQsIHYpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI0Niw3ICsyNDYsNyBA
QCBRVmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSwgUU1ldGFUeXBlOjpUeXBlCiAgICAgICAgICAgICBjYXNlIEJvb2xlYW46CiAgICAg
ICAgICAgICAgICAgaGludCA9IFFNZXRhVHlwZTo6Qm9vbDsKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgU3RyaW5nOgorICAgICAgICAgICAgY2FzZSBSVFN0cmluZzoK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgaGludCA9IFFNZXRhVHlwZTo6
UVN0cmluZzsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTM1NCw5ICszNTQsOSBAQCBRVmFy
aWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSwgUU1ldGFUeXBlOjpUeXBlCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBkaXN0ID0gNjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgVVN0
cmluZyBzdHIgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAg
ICAgICAgV1RGOjpTdHJpbmcgc3RyID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgICAgICAgICAgICAgIHJldCA9IFFWYXJpYW50KFFDaGFyKHN0ci5sZW5ndGgoKSA/ICoo
Y29uc3QgdXNob3J0KilzdHIuaW1wbCgpLT5jaGFyYWN0ZXJzKCkgOiAwKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHR5cGUgPT0gU3RyaW5nKQorICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJU
U3RyaW5nKQogICAgICAgICAgICAgICAgICAgICBkaXN0ID0gMzsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSAxMDsKQEAgLTM2OSw5ICszNjksOSBAQCBR
VmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSwgUU1ldGFUeXBlOjpUeXBlCiAgICAgICAgICAgICAgICAgICAgICpkaXN0YW5jZSA9IDE7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgVVN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgICAgIFdURjo6U3RyaW5nIHVzdHJpbmcgPSB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgcmV0ID0gUVZh
cmlhbnQoUVN0cmluZygoY29uc3QgUUNoYXIqKXVzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCks
IHVzdHJpbmcubGVuZ3RoKCkpKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBTdHJpbmcp
CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gUlRTdHJpbmcpCiAgICAgICAgICAgICAgICAg
ICAgIGRpc3QgPSAwOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ZGlzdCA9IDEwOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZh
cmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAg
ICAgICAgICAgICAgICBpbnQgbGVuID0gcnRhcnJheS0+Z2V0TGVuZ3RoKCk7CiAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIHZhbCA9IHJ0YXJyYXktPmdldENvbmNyZXRlQXJyYXkoKS0+dmFsdWVBdChleGVj
LCBpKTsKLSAgICAgICAgICAgICAgICAgICAgVVN0cmluZyB1c3RyaW5nID0gdmFsLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgV1RGOjpTdHJpbmcgdXN0
cmluZyA9IHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAg
ICAgIFFTdHJpbmcgcXN0cmluZyA9IFFTdHJpbmcoKGNvbnN0IFFDaGFyKil1c3RyaW5nLmltcGwo
KS0+Y2hhcmFjdGVycygpLCB1c3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHFzdHJpbmcpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIFFWYXJpYW50IGNv
bnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0
YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICBpbnQgbGVuID0gYXJyYXktPmxlbmd0aCgpOwog
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSB2YWwgPSBhcnJheS0+Z2V0KGV4ZWMsIGkpOwotICAgICAgICAg
ICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgICAgICAgICAgICAgICAgICBXVEY6OlN0cmluZyB1c3RyaW5nID0gdmFsLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBxc3Ry
aW5nID0gUVN0cmluZygoY29uc3QgUUNoYXIqKXVzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCks
IHVzdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
cXN0cmluZyk7CkBAIC00NzMsNyArNDczLDcgQEAgUVZhcmlhbnQgY29udmVydFZhbHVlVG9RVmFy
aWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFFNZXRhVHlwZTo6VHlwZQogICAg
ICAgICAgICAgICAgIHJldCA9IFFWYXJpYW50KHJlc3VsdCk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIE1ha2UgYSBzaW5nbGUgbGVuZ3RoIGFycmF5Ci0gICAgICAg
ICAgICAgICAgVVN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgICAgICAgICAgICAgIFdURjo6U3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgUVN0cmluZyBxc3RyaW5nID0g
UVN0cmluZygoY29uc3QgUUNoYXIqKXVzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCksIHVzdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFFTdHJpbmdMaXN0IHJlc3VsdDsKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHFzdHJpbmcpOwpAQCAtNDg5LDkgKzQ4OSw5IEBAIFFW
YXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICByZXQgPSBRVmFyaWFudChRQnl0
ZUFycmF5KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGFyci0+ZGF0YSgpKSwgYXJyLT5s
ZW5ndGgoKSkpOwogICAgICAgICAgICAgICAgIGRpc3QgPSAwOwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgV1RGOjpTdHJpbmcgdXN0cmluZyA9IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICByZXQgPSBR
VmFyaWFudChRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnMo
KSwgdXN0cmluZy5sZW5ndGgoKSkudG9MYXRpbjEoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5
cGUgPT0gU3RyaW5nKQorICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJUU3RyaW5nKQogICAg
ICAgICAgICAgICAgICAgICBkaXN0ID0gNTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGRpc3QgPSAxMDsKQEAgLTUzMSw4ICs1MzEsOCBAQCBRVmFyaWFudCBjb252
ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUU1ldGFU
eXBlOjpUeXBlCiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSAxMDsKICAgICAgICAgICAgICAg
ICB9CiAjaWZuZGVmIFFUX05PX0RBVEVTVFJJTkcKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlw
ZSA9PSBTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gUlRTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBXVEY6OlN0cmluZyB1c3RyaW5nID0gdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICAgICAgICAgIFFTdHJpbmcg
cXN0cmluZyA9IFFTdHJpbmcoKGNvbnN0IFFDaGFyKil1c3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVy
cygpLCB1c3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAgICAgICAgIGlmIChoaW50ID09IFFN
ZXRhVHlwZTo6UURhdGVUaW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmNwcAppbmRleCA0ZGM0ZTZkN2U3NDNkMDJhYzZjN2MwMjU3YTE5Njg1NzY3NDNhNGE3Li45ZmRi
NjRkZjczY2UwYzhlYTc0NGNjNzk0ODE2NWMzNjU1YWJiNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBSdW50aW1lTWV0
aG9kOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9k
Kj4oY2VsbCktPlJ1bnRpbWVNZXRob2Q6On5SdW50aW1lTWV0aG9kKCk7CiB9CiAKLXZvaWQgUnVu
dGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBVU3RyaW5nJiBpZGVudCkKK3ZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIGlkZW50KQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGlkZW50KTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
JnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAppbmRleCBmNjI5
NTc4ZWZmMWVjN2M5NjgzOWVjYTBkNGZiMzk3MjUxYzUzZmRmLi43NDgxNjA1ZDQ0MTU4Yzk4MDky
MDMyMWQzMTEwYTQ5NDRmYmE1ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCi0gICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkK
KyAgICBzdGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExpc3QpCiAgICAgewogICAgICAg
ICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50
aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgbWV0aG9kTGlzdCk7CiAgICAgICAgIG1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJp
bmRpbmdzOjpNZXRob2RMaXN0Jik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmLCBjb25zdCBVU3RyaW5nJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpT
dHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5k
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcAppbmRleCBm
ZTlmYzFiMDRhZGExMjAzYTc4YTliYzhlNTBhNDIxMzY3MmU5MDkwLi5iNDNiNzVkNTZmY2MxMzM3
NzA1Y2I3ZWY5ODA5YWQ2ZjI0MGM3NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvdGVzdGJpbmRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRp
bmdzLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdz
OwogCiBjbGFzcyBHbG9iYWxJbXAgOiBwdWJsaWMgT2JqZWN0SW1wIHsKIHB1YmxpYzoKLSAgdmly
dHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9CisgICAg
dmlydHVhbCBTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gImdsb2JhbCI7IH0KIH07
CiAKICNkZWZpbmUgQnVmZmVyU2l6ZSAyMDAwMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRp
bmdzLm1tCmluZGV4IGVmM2JjNGUxZTJkMWE4ZTk5ZDBkMGMyMDQ4NzE1OTAwOGJhZGVhMWIuLmU1
MGYxNmFiN2I4ZTRjNDQxYTljMDA5NjNiYjhlYzIyYTUxMDc1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3Rlc3RiaW5kaW5ncy5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M6OkJpbmRpbmdzOwogCiBjbGFzcyBHbG9iYWxJbXAgOiBwdWJsaWMgT2JqZWN0SW1wIHsKIHB1
YmxpYzoKLSAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9i
YWwiOyB9CisgIHZpcnR1YWwgU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9i
YWwiOyB9CiB9OwogCiAjZGVmaW5lIEJ1ZmZlclNpemUgMjAwMDAwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3Rlc3RxdGJpbmRpbmdzLmNwcAppbmRleCBhNGY0ZDVhMTRjMTA1YmZkMjM5ODE0MTZmY2M0
NWMxMTU1ZmRmNTE5Li43ZDNkNDE2YTVmNWIxZWFkYTk2Yzg4MWIzNWZjMzRmM2VjMjAzNTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0cXRiaW5kaW5ncy5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgY2xhc3MgR2xvYmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIFVTdHJpbmcgY2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0KikgeyByZXR1cm4gImdsb2JhbCI7IH0KKyAgICBzdGF0aWMg
U3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopIHsgcmV0dXJuICJnbG9iYWwiOyB9CiB9
OwogCiBzdGF0aWMgY2hhciBjb2RlW10gPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxzLmNwcAppbmRleCAwNTRkYTM0OGZlNjNhZTk2NjFkMzA2ZjhiMjE2
NDM0YzBmNjliNjZiLi5hM2Y4M2MyZDY4NGI0ODU4OTgwZDMxMGQzNDVkMzM2MjFmNzAzOTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcApA
QCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBTdHJpbmcgcGF0dGVy
blN0cmluZyA9ICIvL0BbXDA0MFx0XSIgKyBuYW1lICsgIj1bXDA0MFx0XSooW15cXHNcJ1wiXSop
W1wwNDBcdF0qJCI7CiAgICAgY29uc3QgY2hhciogZXJyb3IgPSAwOwotICAgIEpTQzo6WWFycjo6
WWFyclBhdHRlcm4gcGF0dGVybihKU0M6OlVTdHJpbmcocGF0dGVyblN0cmluZy5pbXBsKCkpLCBm
YWxzZSwgdHJ1ZSwgJmVycm9yKTsKKyAgICBKU0M6OllhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4o
cGF0dGVyblN0cmluZywgZmFsc2UsIHRydWUsICZlcnJvcik7CiAgICAgQVNTRVJUKCFlcnJvcik7
CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IgcmVnZXhBbGxvY2F0b3I7CiAgICAgT3duUHRyPEpT
Qzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlY29kZVBhdHRlcm4gPSBKU0M6OllhcnI6OmJ5
dGVDb21waWxlKHBhdHRlcm4sICZyZWdleEFsbG9jYXRvcik7CkBAIC0xNTMsNyArMTUzLDcgQEAg
c3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVudCwgY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgIEFTU0VSVChwYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgPT0g
MSk7CiAgICAgVmVjdG9yPGludCwgND4gbWF0Y2hlczsKICAgICBtYXRjaGVzLnJlc2l6ZSg0KTsK
LSAgICB1bnNpZ25lZCByZXN1bHQgPSBKU0M6OllhcnI6OmludGVycHJldChieXRlY29kZVBhdHRl
cm4uZ2V0KCksIEpTQzo6VVN0cmluZyhjb250ZW50LmltcGwoKSksIDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQqPihtYXRjaGVzLmRhdGEoKSkpOworICAgIHVuc2lnbmVkIHJlc3VsdCA9IEpT
Qzo6WWFycjo6aW50ZXJwcmV0KGJ5dGVjb2RlUGF0dGVybi5nZXQoKSwgY29udGVudCwgMCwgcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1hdGNoZXMuZGF0YSgpKSk7CiAgICAgaWYgKHJlc3Vs
dCA9PSBKU0M6OllhcnI6Om9mZnNldE5vTWF0Y2gpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICBBU1NFUlQobWF0Y2hlc1syXSA+IDAgJiYgbWF0Y2hlc1szXSA+IDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS1VSTC5oCmluZGV4IGZiZjlmODIzN2ZhYTE2MGViMGRhNjliNjQ2YTNkODNhOWMyZjRkMDQu
LmEzODBlZGY4ODIzOTc0ZDg2ZTA3N2E1MzBiYzFmNDA2NDZjMDRiNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmgKQEAgLTQ4LDEwICs0OCw2IEBAIFFUX0VORF9OQU1FU1BBQ0UKICNpbmNsdWRlICJL
VVJMR29vZ2xlUHJpdmF0ZS5oIgogI2VuZGlmCiAKLSNpZiBVU0UoSlNDKQotI2luY2x1ZGUgPHJ1
bnRpbWUvVVN0cmluZy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
VGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9S
ZWd1bGFyRXhwcmVzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3Vs
YXJFeHByZXNzaW9uLmNwcAppbmRleCBmNzRmOTU3ZGNkMzkzNDZiZTJhNWI1YzM2Yjk1Yzg0NGYy
M2E0OTY0Li4yMzY5NTkwODU1NmU5NTIxN2U1ZTY5NjlkMzQ5MzhlOGFkYjljMmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgUGFzc093blB0cjxKU0M6OllhcnI6OkJ5
dGVjb2RlUGF0dGVybj4gY29tcGlsZShjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFRleHRD
YXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5KQogICAgIHsKLSAgICAgICAgSlNDOjpZYXJy
OjpZYXJyUGF0dGVybiBwYXR0ZXJuKEpTQzo6VVN0cmluZyhwYXR0ZXJuU3RyaW5nLmltcGwoKSks
IChjYXNlU2Vuc2l0aXZpdHkgPT0gVGV4dENhc2VJbnNlbnNpdGl2ZSksIGZhbHNlLCAmbV9jb25z
dHJ1Y3Rpb25FcnJvcik7CisgICAgICAgIEpTQzo6WWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihw
YXR0ZXJuU3RyaW5nLCAoY2FzZVNlbnNpdGl2aXR5ID09IFRleHRDYXNlSW5zZW5zaXRpdmUpLCBm
YWxzZSwgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAgICAgICBpZiAobV9jb25zdHJ1Y3Rpb25F
cnJvcikgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJSZWd1bGFyRXhwcmVzc2lvbjogWUFSUiBj
b21waWxlIGZhaWxlZCB3aXRoICclcyciLCBtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyLDcgKzExMiw3IEBAIGludCBSZWd1bGFyRXhwcmVz
c2lvbjo6bWF0Y2goY29uc3QgU3RyaW5nJiBzdHIsIGludCBzdGFydEZyb20sIGludCogbWF0Y2hM
ZW5ndGgpCiAKICAgICB1bnNpZ25lZCByZXN1bHQ7CiAgICAgaWYgKHN0ci5sZW5ndGgoKSA8PSBJ
TlRfTUFYKQotICAgICAgICByZXN1bHQgPSBKU0M6OllhcnI6OmludGVycHJldChkLT5tX3JlZ0V4
cEJ5dGVDb2RlLmdldCgpLCBKU0M6OlVTdHJpbmcoc3RyLmltcGwoKSksIHN0YXJ0RnJvbSwgb2Zm
c2V0VmVjdG9yKTsKKyAgICAgICAgcmVzdWx0ID0gSlNDOjpZYXJyOjppbnRlcnByZXQoZC0+bV9y
ZWdFeHBCeXRlQ29kZS5nZXQoKSwgc3RyLCBzdGFydEZyb20sIG9mZnNldFZlY3Rvcik7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgY29kZSBjYW4ndCBoYW5kbGUgdW5zaWduZWQgb2Zmc2V0
cy4gTGltaXQgb3VyIHByb2Nlc3NpbmcgdG8gc3RyaW5ncyB3aXRoIG9mZnNldHMgdGhhdCAKICAg
ICAgICAgLy8gY2FuIGJlIHJlcHJlc2VudGVkIGFzIGludHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQlN0cmluZy5jcHAKaW5kZXggODcyYWI3ZWFjMDIzYzAwYTMyMDM5ODg5NGYzZDk4OWU0
NzYyY2YwYi4uYTU3N2VmNTQ1NTBhYTE3YjIzMDVlNzI2MzQ5ZmY1YzkyMDRhNmNlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtODQsMTQgKzg0LDYgQEAgQlN0
cmluZzo6QlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHMpCiAgICAgICAgIG1fYnN0ciA9IFN5
c0FsbG9jU3RyaW5nTGVuKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsKIH0KIAotQlN0cmlu
Zzo6QlN0cmluZyhjb25zdCBVU3RyaW5nJiBzKQotewotICAgIGlmIChzLmlzTnVsbCgpKQotICAg
ICAgICBtX2JzdHIgPSAwOwotICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJp
bmdMZW4ocy5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpOwotfQotCiAjaWYgVVNFKENGKQogQlN0
cmluZzo6QlN0cmluZyhDRlN0cmluZ1JlZiBjZnN0cikKICAgICA6IG1fYnN0cigwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKaW5kZXggOTIyZDNlMmZiNDYwNDFhYTdjNDI2ZDU5
MGQ3MTc1MTdjOTQxNmRjYi4uNzM3M2VlZGFkZmY2OTE2ZTkyMGY2OTBkOTllMmM3MjMxNzcyM2Y5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCkBAIC0zNCwxMCArMzQsNiBA
QCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7CiAKIHR5cGVk
ZWYgd2NoYXJfdCogQlNUUjsKIAotbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgVVN0cmluZzsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgS1VSTDsKQEAgLTUwLDcgKzQ2
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBCU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwogICAgICAgICBCU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICBCU3RyaW5n
KGNvbnN0IEtVUkwmKTsKLSAgICAgICAgQlN0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcmKTsKICNp
ZiBVU0UoQ0YpCiAgICAgICAgIEJTdHJpbmcoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAwZDY4NTdmMjVjNGM5ODg2NDZhYjEwODUw
YjQzNTcwN2U4YjkyYWFjLi5kZDIyMGQ4Nzg4YjViYzVhYzNiYjBlNjRjODVjMWNkZDc3YzJhYTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2luY2x1
ZGUgIlBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaCIKQEAgLTgxLDcgKzgyLDYgQEAgdXNpbmcg
SlNDOjpFeGVjU3RhdGU7CiB1c2luZyBKU0M6OkpTTG9jazsKIHVzaW5nIEpTQzo6SlNPYmplY3Q7
CiB1c2luZyBKU0M6OkpTVmFsdWU7Ci11c2luZyBKU0M6OlVTdHJpbmc7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAKaW5kZXggMmNj
OTZkNWUyMjMyYTc0MmQzODMyZmVhMzdkZTEzMjZlNjJjNjE4NC4uZjU0NzhmMDhjNjU4ZDczZDlj
ODMzMTQwNGEyNjBlN2UyYjhjM2YyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCkBAIC05MCw3ICs5
MCw2IEBAIHVzaW5nIEpTQzo6RXhlY1N0YXRlOwogdXNpbmcgSlNDOjpJbnRlcnByZXRlcjsKIHVz
aW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVjdDsKLXVzaW5nIEpTQzo6VVN0cmlu
ZzsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCmluZGV4IDY4NDRlZWNjNTk2
YzQzZDQ3OTE1M2M3OWU1MzJiMmE0ODQwYTZmMDkuLjYyZjlmOGQ4NDM5MTdmNmFjYjEzOTQ3MDgy
YzI2OTNlZDFiODFhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1Bs
dWdpblZpZXdHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZp
ZXdHdGsuY3BwCkBAIC04Myw3ICs4Myw2IEBAIHVzaW5nIEpTQzo6RXhlY1N0YXRlOwogdXNpbmcg
SlNDOjpJbnRlcnByZXRlcjsKIHVzaW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVj
dDsKLXVzaW5nIEpTQzo6VVN0cmluZzsKIAogdXNpbmcgc3RkOjptaW47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCmluZGV4IDc4NWE3NGRmMGU0ZTNmZDA3
ZTA2ZGNlNjI5ZjU1N2UzYjFhZGJhYzMuLjQyYmE2YTY0NWFjYWJiMGVhOWFjMWNkMzRhMTUxZTgz
NTZhMmZhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZp
ZXdNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5t
bQpAQCAtNzAsNyArNzAsNiBAQCB1c2luZyBKU0M6OkludGVycHJldGVyOwogdXNpbmcgSlNDOjpK
U0xvY2s7CiB1c2luZyBKU0M6OkpTT2JqZWN0OwogdXNpbmcgSlNDOjpKU1ZhbHVlOwotdXNpbmcg
SlNDOjpVU3RyaW5nOwogCiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UVdpZGdldD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAppbmRleCAwNGQ3MTBlYTI4
ZTVkNzg0NTMwMDgxYjUyZWQ3YmM3OGQ4MGM3OTA1Li45YmMwMjI3NWFhOGQyYTMxNGZlM2IxODUx
YzhkODA4NzhhOTFjZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3
UXQuY3BwCkBAIC05MCw3ICs5MCw2IEBAIHVzaW5nIEpTQzo6SW50ZXJwcmV0ZXI7CiAjZW5kaWYK
IHVzaW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVjdDsKLXVzaW5nIEpTQzo6VVN0
cmluZzsKIAogdXNpbmcgc3RkOjptaW47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4v
UGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMTQyZmE4MzA1ODBkMDNhZmUxMTI0NzEyM2JjYTA5MWI2
MDQ1YzU1NC4uMDVmZjMwYmE0NDYxNWNmNzc5MzU3NWFjODBhM2VhYTBlOTc2MDcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKQEAgLTY5LDYgKzY5
LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiAhUExBVEZPUk0oV1gpCiAjaW5jbHVkZSAiQml0bWFwSW5mby5o
IgpAQCAtMTI3LDcgKzEyOCw2IEBAIHN0YXRpYyBpbmxpbmUgSFdORCB3aW5kb3dIYW5kbGVGb3JQ
YWdlQ2xpZW50KFBsYXRmb3JtUGFnZUNsaWVudCBjbGllbnQpCiB1c2luZyBKU0M6OkV4ZWNTdGF0
ZTsKIHVzaW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVjdDsKLXVzaW5nIEpTQzo6
VVN0cmluZzsKIAogdXNpbmcgc3RkOjptaW47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DbGllbnRFeHRlbnNpb24uY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAKaW5kZXgg
MzkyMDk3MTg5ZmEwMmJkODI4YTc0MDlmOGU0MmMyOGQ4NThlYjU5YS4uNTRjNDU2YTcxYmMyYzk5
NjNmMGY1M2EwOGI5ZDJkM2QxNTY3Mzg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCB2b2lkIGF0dGFjaEV4dGVuc2lvbk9iamVjdFRvRnJhbWUoRnJhbWUqIGZy
YW1lLCBXZWJQYWdlQ2xpZW50KiBjbGllbnQpCiAgICAgSlNPYmplY3RSZWYgY2xpZW50Q2xhc3NP
YmplY3QgPSBKU09iamVjdE1ha2Uoc2NyaXB0Q3R4LCBjbGllbnRDbGFzcywgMCk7CiAgICAgSlNP
YmplY3RTZXRQcml2YXRlKGNsaWVudENsYXNzT2JqZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQq
PihjbGllbnQpKTsKIAotICAgIEpTQzo6VVN0cmluZyBuYW1lKCJxbngiKTsKKyAgICBTdHJpbmcg
bmFtZSgicW54Iik7CiAKICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgIHdpbmRv
dy0+cHV0KHdpbmRvdywgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsIG5hbWUpLCB0b0pTKGNs
aWVudENsYXNzT2JqZWN0KSwgc2xvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKaW5k
ZXggNDAyYjUyMzMzM2FkOWI1ZDljY2YyNGU0OGI4NWRiNGU1NzJmYWNmNy4uZTJlZDM0OTBiZmU4
N2I0NDM4Y2Y3NjRhNmE0OGNlYWVkNjFmZDliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5
LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgUGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFs
bERvbUZ1bmN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBKU09iamVjdFJlZiBjbGllbnRDbGFzc09i
amVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBjbGllbnRDbGFzcywgMCk7CiAgICAgSlNPYmpl
Y3RTZXRQcml2YXRlKGNsaWVudENsYXNzT2JqZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQqPiht
X2NsaWVudC5nZXQoKSkpOwogCi0gICAgSlNDOjpVU3RyaW5nIG5hbWUoInBvcFVwIik7CisgICAg
U3RyaW5nIG5hbWUoInBvcFVwIik7CiAKICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90Owog
ICAgIHdpbmRvdy0+cHV0KHdpbmRvdywgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsIG5hbWUp
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggOTZhNTc5MWVlMmE5ZjA2NTQxMWQyOTg0
YWIwYTRmODJhMWZhOGRiYS4uOGE5ZWY5YmUwZjViY2JmZmY1ZjRlODU4ODAxZTM2NjY0NTU1YjIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyhib29sIGVuYWJs
ZWQpCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VuZFdlYkludGVudFJlc3BvbnNl
KEV3a19JbnRlbnRfUmVxdWVzdCogcmVxdWVzdCwgSlNTdHJpbmdSZWYgcmVzcG9uc2UpCiB7CiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEpTQzo6VVN0cmluZyByZXNwb25zZVN0cmluZyA9
IHJlc3BvbnNlLT51c3RyaW5nKCk7CisgICAgU3RyaW5nIHJlc3BvbnNlU3RyaW5nID0gcmVzcG9u
c2UtPnVzdHJpbmcoKTsKICAgICBpZiAocmVzcG9uc2VTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAg
IGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJlX3Bvc3QocmVxdWVzdCwgV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOCgiRVJST1IiKSkpOwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNzIzMWI1NDlkZDk1ZmQy
MzQwMjFjMmIzYzljNjhjODVjZTMxYzA4YS4uNGIzM2M2MjgwZjNjZDJmNGMxNDZkYWI5OGM4ZTNj
YzdkZmYyMWFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTQ1OCw3ICs0
NTgsNyBAQCBjb25zdCBjaGFyKiBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzY3JpcHQpCiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFp
blRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKLSAgICByZXN1bHRTdHJpbmcgPSBXZWJDb3JlOjp1c3RyaW5nVG9TdHJp
bmcocmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgcmVzdWx0U3RyaW5n
ID0gcmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4gZWluYV9z
dHJpbmdzaGFyZV9hZGQocmVzdWx0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252
ZXJ0VG9HQ2hhclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0No
YXJQcml2YXRlLmgKaW5kZXggYWZiZWQ0OTYxZmFmYzBiNWNhMTMwMjc5ZmFkNDI5N2Y2YzhhMGY4
Ny4uYmUwMmZmYjgyYTI5OGYwMWIzNTk1M2QwMTBlYjlmZTA2OGQ4ODg5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oCkBAIC0zNSw3ICszNSw3
IEBAIGlubGluZSBnY2hhciogY29weUFzR2NoYXIoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKICAg
ICByZXR1cm4gY29weUFzR2NoYXIocy5zdHJpbmcoKSk7CiB9CiAKLWlubGluZSBnY2hhciogY29w
eUFzR2NoYXIoY29uc3QgSlNDOjpVU3RyaW5nJiBzKQoraW5saW5lIGdjaGFyKiBjb3B5QXNHY2hh
cihjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgcmV0dXJuIGdfc3RyZHVwKHMuVVRGOFN0cmluZygp
LmNfc3RyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCBhZjZmMmJlOTk2OWNiMTFj
YjMzYTU2MzE3ZmRkYThjMmNmNjFjZjVlLi4wZjlmMDdkZGI0NDA3MjNkYmFmNWE3MTJiOGE0MGEw
OTg5NDc0OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNjA3LDcgKzYwNyw3IEBAIHN0
YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChJZGVudGlmaWVyUmVw
KiBpZGVudGlmaWVyKQogICAgIEFTU0VSVChpZGVudGlmaWVyLT5pc1N0cmluZygpKTsKICAgCiAg
ICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7ICAgIAotICAgIHJldHVy
biBJZGVudGlmaWVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgc3RyaW5nVG9V
U3RyaW5nKFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3Ry
KSkpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcihKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxE
YXRhKCksIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3Ry
KSkpOwogfQogCiBrZXJuX3JldHVybl90IFdLUENJbnZva2UobWFjaF9wb3J0X3QgY2xpZW50UG9y
dCwgdWludDMyX3QgcGx1Z2luSUQsIHVpbnQzMl90IHJlcXVlc3RJRCwgdWludDMyX3Qgb2JqZWN0
SUQsIHVpbnQ2NF90IHNlcnZlcklkZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KaW5kZXggOTEwNDQzMDVmYmE2YjIzYWIyNTU1MDZjMTE3YTEyNGFjNDkzMWNiNS4uMTc0YTNh
NDgxNGI4OWM4MDU1ZTNlZGFjYmExNTVkZjhjNDI5ZDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQpAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmFkZFZhbHVlVG9BcnJheShOU011dGFibGVBcnJheSAqYXJyYXksIEV4ZWNTdGEK
IAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6U3RyaW5nVmFsdWVUeXBlXV07Ci0gICAgICAgIFthcnJh
eSBhZGRPYmplY3Q6dXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSldOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMp
XTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpEb3VibGVWYWx1ZVR5cGVdXTsKICAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS50b051
bWJlcihleGVjKV1dOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4
ZWMKIAogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgc3RyaW5nVG9VU3RyaW5nKGdsb2JhbEV4
Y2VwdGlvblN0cmluZygpKSkpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogCiAgICAgZ2xvYmFsRXhj
ZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDg5OGM1ZTIxNDA2OWZjOWJiZmQzNDlj
NWI0YzZiYThmNzM1NWUyNzAuLjQ5ZTk4ZmU2ZTIxNDdkMDdlZmUwODA5YjMyM2Y1ZDFiNjJkZjFj
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5z
dGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQpAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIFByb3h5UnVudGltZU1ldGhvZCA6IHB1
YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2Qg
QmFzZTsKIAotICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUs
IEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRo
b2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewog
ICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGV4ZWMtZ2xv
YmFsRGF0YSgpIGlzIGFsc28gbGlrZWx5IHdyb25nLgpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewog
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIFByb3h5
SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgbmFtZUFycgogCiAgICAgICAgIGlmIChpZGVudGlmaWVyLT5pc1N0cmluZygpKSB7CiAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmcoKTsKLSAgICAg
ICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmllcihKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCksIHN0cmluZ1RvVVN0cmluZyhTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKHN0ciwgc3RybGVuKHN0cikpKSkpOworICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVu
dGlmaWVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgU3RyaW5nOjpmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhzdHIsIHN0cmxlbihzdHIpKSkpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlm
aWVyLT5udW1iZXIoKSkpOwogICAgIH0KQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFByb3h5SW5z
dGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgbmFtZUFycgogCiBNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFVTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKKyAgICBTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKICAgICBpZiAobmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsK
IApAQCAtMzkyLDcgKzM5Miw3IEBAIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9kc05h
bWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAKIEZpZWxkKiBQcm94eUluc3RhbmNlOjpm
aWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVVN0cmluZyBuYW1l
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyBuYW1lKHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggOTJmOWUwYmI2MTY2
ZWNkNzJjMDQ5ZjNlZDM3MjIxMGNlZTIwODhlZi4uZjkxZmZkOGU1MWJkNGRhY2I3YWYwYTFjYzRm
MjY1MTNjM2VkYTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC01
OTgsNyArNTk4LDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdv
cmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
LSAgICByZXR1cm4gdXN0cmluZ1RvU3RyaW5nKHJlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOworICAgIHJldHVybiByZXN1bHQudG9XVEZTdHJpbmcoZXhlYyk7CiB9CiAKIC0gKE5T
UmVjdClfY2FyZXRSZWN0QXRQb3NpdGlvbjooY29uc3QgUG9zaXRpb24mKXBvcyBhZmZpbml0eToo
TlNTZWxlY3Rpb25BZmZpbml0eSlhZmZpbml0eQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGlj
IGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICByZXR1cm4g
dXN0cmluZ1RvU3RyaW5nKHJlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAg
IHJldHVybiByZXN1bHQudG9XVEZTdHJpbmcoZXhlYyk7CiB9CiAKIC0gKEpTR2xvYmFsQ29udGV4
dFJlZilfZ2xvYmFsQ29udGV4dEZvclNjcmlwdFdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmxk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdh
dGUubW0KaW5kZXggNTBiODRiZTI0NGRmYTZiODk2ZDBjNWM5ZGEyNzkyOTNlZTVmNGRlZC4uOTI1
NmU3NWQ3ODJmMTNiZDQ5ZTIzMTA3MjI5NzZlZDYxZDY2Yjg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQpAQCAtMjAzLDgg
KzIwMyw4IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5ID0g
QCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwogICAgIGlmICghX3ByaXZhdGUtPmRlYnVnZ2Vy
Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgY29uc3QgVVN0cmluZyogZnVu
Y3Rpb25OYW1lID0gX3ByaXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5mdW5jdGlvbk5hbWUoKTsK
LSAgICByZXR1cm4gZnVuY3Rpb25OYW1lID8gdG9OU1N0cmluZygqZnVuY3Rpb25OYW1lKSA6IG5p
bDsKKyAgICBjb25zdCBTdHJpbmcqIGZ1bmN0aW9uTmFtZSA9IF9wcml2YXRlLT5kZWJ1Z2dlckNh
bGxGcmFtZS0+ZnVuY3Rpb25OYW1lKCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZSA/IG5zU3Ry
aW5nTmlsSWZFbXB0eSgqZnVuY3Rpb25OYW1lKSA6IG5pbDsKIH0KIAogLy8gUmV0dXJucyB0aGUg
cGVuZGluZyBleGNlcHRpb24gZm9yIHRoaXMgZnJhbWUgKG5pbCBpZiBub25lKS4KQEAgLTI0Miwx
NCArMjQyLDE0IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5
ID0gQCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwogICAgICAgICBEeW5hbWljR2xvYmFsT2Jq
ZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdCk7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShzdHJpbmdUb1VTdHJpbmcoc2Ny
aXB0KSwgZXhjZXB0aW9uLCBnbG9iYWxPYmplY3QpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGV2YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWUoc2NyaXB0LCBleGNlcHRpb24sIGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgX2Nv
bnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOmV4Y2VwdGlvbl07CiAgICAgICAgIHJldHVybiByZXN1bHQg
PyBbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6cmVzdWx0XSA6IG5pbDsgICAgICAgIAog
ICAgIH0KIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gX3By
aXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoc2NyaXB0
KSwgZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5kZWJ1Z2dlckNh
bGxGcmFtZS0+ZXZhbHVhdGUoc2NyaXB0LCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24p
CiAgICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6ZXhjZXB0aW9u
XTsKICAgICByZXR1cm4gcmVzdWx0ID8gW3NlbGYgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOnJl
c3VsdF0gOiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNj
cmlwdERlYnVnZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLmgKaW5kZXggYjU1MWY3ZGM4NzU4OGRlOWI0NWM5ZmQwNGM1MjAzYzY5YWNiZjQzYS4uYzdk
YThmZTFmYjBlY2M4NjQ4ZDA3NDY3NzMwNDZlMmFhMDEwNTA4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaApAQCAtMzQsMjYgKzM0LDI3IEBACiAK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3Ry
aW5nOworfQorCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsK
ICAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xh
c3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgQXJnTGlzdDsKLSAgICBjbGFzcyBVU3RyaW5nOwogfQog
CiBAY2xhc3MgV2ViU2NyaXB0Q2FsbEZyYW1lOwogCi1OU1N0cmluZyAqdG9OU1N0cmluZyhjb25z
dCBKU0M6OlVTdHJpbmcmKTsKLQogY2xhc3MgV2ViU2NyaXB0RGVidWdnZXIgOiBwdWJsaWMgSlND
OjpEZWJ1Z2dlciB7CiBwdWJsaWM6CiAgICAgV2ViU2NyaXB0RGVidWdnZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogCiAgICAgdm9pZCBpbml0R2xvYmFsQ2FsbEZyYW1lKGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgSlND
OjpVU3RyaW5nJiBlcnJvck1zZyk7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBX
VEY6OlN0cmluZyYgZXJyb3JNc2cpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3Qg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0
IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpOwogICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDRmZmU3MjViOGFmYTMyOTYwZjRhYzg1ODQ5ZjQ3MTUw
OTVjYjk0ODguLjEzYzRmN2NlYzQ1MzI0ZDI0MzNlM2FkZTk2OTg5MmYxMGZmMjc1MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtNTEs
MTMgKzUxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAtICh2b2lkKV9jbGVhckRlYnVn
Z2VyQ2FsbEZyYW1lOwogQGVuZAogCi1OU1N0cmluZyAqdG9OU1N0cmluZyhjb25zdCBVU3RyaW5n
JiBzKQotewotICAgIGlmIChzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOnJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5pY2hhcio+KHMuY2hhcmFjdGVycygpKSBsZW5ndGg6cy5sZW5ndGgoKV07Ci19Ci0KIHN0
YXRpYyBOU1N0cmluZyAqdG9OU1N0cmluZyhTb3VyY2VQcm92aWRlciogcykKIHsKICAgICBpZiAo
IXMtPmxlbmd0aCgpKQpAQCAtNjUsMTIgKzU4LDEyIEBAIHN0YXRpYyBOU1N0cmluZyAqdG9OU1N0
cmluZyhTb3VyY2VQcm92aWRlciogcykKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOnMtPmRhdGEoKS0+Y2hhcmFjdGVycygpIGxlbmd0aDpzLT5sZW5ndGgoKV07CiB9
CiAKLS8vIGNvbnZlcnQgVVN0cmluZyB0byBOU1VSTAotc3RhdGljIE5TVVJMICp0b05TVVJMKGNv
bnN0IFVTdHJpbmcmIHMpCisvLyBDb252ZXJ0IFN0cmluZyB0byBOU1VSTC4KK3N0YXRpYyBOU1VS
TCAqdG9OU1VSTChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXN0cmlu
Z1RvU3RyaW5nKHMpKTsKKyAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHMpOwogfQog
CiBzdGF0aWMgV2ViRnJhbWUgKnRvV2ViRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKQEAgLTEwNSw3ICs5OCw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmluaXRHbG9iYWxD
YWxsRnJhbWUoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsCiB9CiAKIC8vIGNh
bGxiYWNrcyAtIHJlbGF5IHRvIGRlbGVnYXRlCi12b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpzb3Vy
Y2VQYXJzZWQoRXhlY1N0YXRlKiBleGVjLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIs
IGludCBlcnJvckxpbmUsIGNvbnN0IFVTdHJpbmcmIGVycm9yTXNnKQordm9pZCBXZWJTY3JpcHRE
ZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSogZXhlYywgU291cmNlUHJvdmlkZXIqIHNv
dXJjZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTXNnKQogewog
ICAgIGlmIChtX2NhbGxpbmdEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4LDcgKzEy
MSw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4
ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92CiAgICAgICAgICAgICAgICAgQ2FsbFNjcmlw
dERlYnVnRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRQYXJzZVNvdXJjZUZ1bmMsIHdlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFBhcnNlU291cmNlOmZyb21VUkw6c291cmNlSWQ6Zm9y
V2ViRnJhbWU6KSwgbnNTb3VyY2UsIFtuc1VSTCBhYnNvbHV0ZVN0cmluZ10sIHNvdXJjZVByb3Zp
ZGVyLT5hc0lEKCksIHdlYkZyYW1lKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAg
IE5TU3RyaW5nKiBuc0Vycm9yTWVzc2FnZSA9IHRvTlNTdHJpbmcoZXJyb3JNc2cpOworICAgICAg
ICBOU1N0cmluZyogbnNFcnJvck1lc3NhZ2UgPSBuc1N0cmluZ05pbElmRW1wdHkoZXJyb3JNc2cp
OwogICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlw
dGlvbktleSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDplcnJvckxpbmVdLCBXZWJT
Y3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF07CiAgICAgICAgIE5TRXJyb3IgKmVycm9yID0g
W1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJvckRvbWFpbiBjb2Rl
OldlYlNjcmlwdEdlbmVyYWxFcnJvckNvZGUgdXNlckluZm86aW5mb107CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA2MGIzNTNmMmQ0NmYwZTg3MjBhYmRiNTI1ZWExN2Y5
MzQwZGI2YTk3Li4zNzk5ZjkyM2ZhZWE5OWVjYTM1NDE1OTk5YWY4OGY5OTlhMWE1ZWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC00Nzg4LDcgKzQ3ODgsNyBAQCBzdGF0
aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGpzVmFsdQogICAgIGlmIChqc1ZhbHVlLmlzQm9vbGVhbigpKQogICAgICAg
ICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhCb29sZWFuOmpz
VmFsdWUuYXNCb29sZWFuKCldOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAg
IHJldHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aFN0cmluZzp1c3Ry
aW5nVG9TdHJpbmcoanNWYWx1ZS5nZXRTdHJpbmcoZXhlYykpXTsKKyAgICAgICAgcmV0dXJuIFtO
U0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoU3RyaW5nOmpzVmFsdWUuZ2V0U3Ry
aW5nKGV4ZWMpXTsKICAgICBpZiAoanNWYWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJs
ZSB2YWx1ZSA9IGpzVmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaW50IGludFZhbHVlID0gdmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKaW5kZXggYTIwOGNiYzRlYTViNDdm
MTgxNzNlOTIyNGI5NzllYmMzOWI5MWY0NS4uMDYyY2RkMjdkNGYxOWU5N2JjZTcyMGRlOTJkMjRh
NDdkZTY4Y2Y0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcApAQCAtNzUxLDcg
Kzc1MSw3IEBAIFFWYXJpYW50IFFXZWJFbGVtZW50OjpldmFsdWF0ZUphdmFTY3JpcHQoY29uc3Qg
UVN0cmluZyYgc2NyaXB0U291cmNlKQogICAgIGlmICghc2V0dXBTY3JpcHRDb250ZXh0KG1fZWxl
bWVudCwgdGhpc1ZhbHVlLCBzdGF0ZSwgc2NyaXB0Q29udHJvbGxlcikpCiAgICAgICAgIHJldHVy
biBRVmFyaWFudCgpOwogICAgIEpTQzo6U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBzdGF0
ZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCk7Ci0gICAgSlNDOjpV
U3RyaW5nIHNjcmlwdChyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBVQ2hhcio+KHNjcmlwdFNv
dXJjZS5kYXRhKCkpLCBzY3JpcHRTb3VyY2UubGVuZ3RoKCkpOworICAgIFN0cmluZyBzY3JpcHQo
cmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVUNoYXIqPihzY3JpcHRTb3VyY2UuZGF0YSgpKSwg
c2NyaXB0U291cmNlLmxlbmd0aCgpKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0aW9uRXhj
ZXB0aW9uOwogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0aW9uUmVzdWx0ID0gSlNDOjpldmFsdWF0
ZShzdGF0ZSwgc2NvcGVDaGFpbiwgSlNDOjptYWtlU291cmNlKHNjcmlwdCksIHRoaXNWYWx1ZSwg
JmV2YWx1YXRpb25FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGQxODgwY2Yz
ZmM2YmI5NWQxYTU5NTU3NDc5NDMwMTRkOTdiOTAwYjMuLjA2MmNmMTQxNjQ1YjUzY2Q1MzkyNzVm
NGJkZDVlMGFmMDU5NzYxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTI1MzksNyArMjUz
OSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJblNj
cmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKLSAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gdXN0cmluZ1RvU3Ry
aW5nKHJlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyByZXN1
bHRTdHJpbmcgPSByZXN1bHQudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgKmV2YWx1YXRpb25SZXN1
bHQgPSBCU3RyaW5nKHJlc3VsdFN0cmluZykucmVsZWFzZSgpOwogCiAgICAgcmV0dXJuIFNfT0s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDcwZDQ5MWVkYjE0Y2EzZmJjN2U2YmFiNDY1MTc4Zjgw
OTg0YTY4ODUuLmMzZmRlZDZiMTQyMDQ2MTQwNGMxZDIwYjU5ODE0NDZkMGFkNmFiNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCkBAIC0zMTk4LDcgKzMxOTgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKAog
ICAgIGVsc2UgaWYgKHNjcmlwdEV4ZWN1dGlvblJlc3VsdC5pc1N0cmluZygpKSB7CiAgICAgICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gY29yZUZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwogICAgICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICAqcmVzdWx0ID0gQlN0cmluZyh1c3RyaW5n
VG9TdHJpbmcoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LmdldFN0cmluZyhleGVjKSkpOworICAgICAg
ICAqcmVzdWx0ID0gQlN0cmluZyhzY3JpcHRFeGVjdXRpb25SZXN1bHQuZ2V0U3RyaW5nKGV4ZWMp
KTsKICAgICB9CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d3gvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKaW5kZXggOTQy
YzRiZWFhYWIxYmIzYmY0MDRiM2I4MjI3ZjU3NDJkYWNjNWExOS4uYWFhNzYxNGVmYTNiNjQxM2I3
MTBlMGU4NWFhZDk1MWQ2ZmU5MmY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKQEAgLTU0LDggKzU0
LDggQEAKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2luY2x1ZGUg
IkVkaXRvckNsaWVudFd4LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRXeC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gv
V2ViVmlldy5jcHAKaW5kZXggYWNiNjBmNjQzMWU2NGViYWFmZWRmNTkzN2Q4MWEwZWU3YzcyYWNl
Ni4uNGY4NGExYjNkNDk0MzkyMzEwNzMyNzc0NThiMTlhMTk5MzcyZTQ5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYlZp
ZXcuY3BwCkBAIC03Miw5ICs3Miw5IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1ZGUg
IkFic3RyYWN0RGF0YWJhc2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAppbmRleCBlZGY0MmU0ZDVlODNm
MmZiMzE3MjJkYTIwMzgxZTMzNGRiNDZjNGU1Li40NmVmZjA5ZDZjMTlhMGQ5ZmJlOGM5MWQ0N2Jm
N2UwODgzYjgwYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEpTTlBN
ZXRob2Q6OkpTTlBNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIE5QSWRlCiB7CiB9CiAKLXZvaWQgSlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQordm9pZCBK
U05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBu
YW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgKaW5kZXgg
M2NiMzNmYzQxNmE4NDBhOTBiZmU2YmRlYjIxYzg4NDYxYThjMTU3ZS4uOTM2MTRkNTJkM2RjNjlj
MDM2Y2VhMmJiYTM5ZWRlYTAyZGY0ODEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIEpTTlBNZXRob2QgOiBwdWJsaWMgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlVTdHJpbmcmIG5hbWUsIE5QSWRlbnRp
ZmllciBucElkZW50KQorICAgIHN0YXRpYyBKU05QTWV0aG9kKiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBOUElkZW50aWZpZXIgbnBJZGVudCkKICAgICB7CiAgICAgICAgIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSk7CiAgICAgICAgIEpT
TlBNZXRob2QqIG1ldGhvZCA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNOUE1ldGhvZD4oKmV4
ZWMtPmhlYXAoKSkpIEpTTlBNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5wSWRlbnQp
OwpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fbnBJZGVudGlmaWVyOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDOjpVU3RyaW5n
JiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAogcHJpdmF0ZTogICAgCiAgICAgSlNOUE1ldGhvZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBOUElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCmluZGV4IDU0ZmVjMGMxYTI3MzhhMzBjODdjMzc5MTMyNjM2OGNlMWFlZTJiODIuLjlh
YTkwMTY5ZjlmZjg5Y2I2MTEzNTc1YzFkMzA3MzczNDE3MGJiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBOUElkZW50
aWZpZXIgbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
U3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOUElkZW50
aWZpZXI+KElkZW50aWZpZXJSZXA6OmdldChuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVP
YmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5jcHAKaW5kZXggMzU4NTMzZmViZmM4NjI3YjljM2FjYWY2NjA2
ODE0ZWI4ZGQyNzFhYS4uYTUyNWZiOWI4ZmQ2YmE2Y2U0ZmQ1Y2U3ZmQ5YTE3ODFmOTNhMzJjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
UnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2
b2lkIE5QUnVudGltZU9iamVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05QVmFyaWFudChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1i
b29sIE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0LCBjb25z
dCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCkKK2Jvb2wgTlBSdW50aW1l
T2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBTdHJvbmc8SlNHbG9iYWxPYmpl
Y3Q+IGdsb2JhbE9iamVjdCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCB0aGlz
LT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCkBAIC0xOTAsNyArMTkw
LDcgQEAgYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVj
dCwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGdl
dE9yQ3JlYXRlSlNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldCgpLCBucE9iamVjdCk7CiAKICAgICBn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwotICAgIEpT
VmFsdWUgcmVzdWx0VmFsdWUgPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGdsb2JhbE9iamVjdC0+Z2xv
YmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKFVTdHJpbmcoc2NyaXB0U3RyaW5nLmltcGwoKSkp
LCB0aGlzVmFsdWUpOworICAgIEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBKU0M6OmV2YWx1YXRlKGV4
ZWMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKHNjcmlwdFN0
cmluZyksIHRoaXNWYWx1ZSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RvcCgpOwogCiAgICAgY29udmVydEpTVmFsdWVUb05QVmFyaWFudChleGVjLCBy
ZXN1bHRWYWx1ZSwgKnJlc3VsdCk7CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBOUFJ1bnRpbWVP
YmplY3RNYXA6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMp
CiAKICAgICB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhnbG9iYWxFeGNl
cHRpb25TdHJpbmcoKSkpKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0KICAgICAKICAgICBnbG9iYWxF
eGNlcHRpb25TdHJpbmcoKSA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFhNDNhNzhmMmZjYWFiMjU2ZmEzNzNlMDcwNDRhOWRh
ODI0NGVlNTYuLjEzNTljYjAyMzVjOWFhYmZkMGFkNTYxMWQ0ZWFjOTJmOWNkZTE2NzYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMi0wOC0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgcmlkIG9mIFVTdHJpbmcu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHA6Cisg
ICAgICAgICogZ2RiL3dlYmtpdC5weToKKyAgICAgICAgKFdURlN0cmluZ1ByaW50ZXIudG9fc3Ry
aW5nKToKKyAgICAgICAgKEpTQ0lkZW50aWZpZXJQcmludGVyLnRvX3N0cmluZyk6CisgICAgICAg
IChKU0NKU1N0cmluZ1ByaW50ZXIudG9fc3RyaW5nKToKKyAgICAgICAgKGFkZF9wcmV0dHlfcHJp
bnRlcnMpOgorCiAyMDEyLTA4LTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI2OTE0LgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwCmluZGV4IDYxZmY3
YmFhNGZkYjU2MTI1NWU3ZWEwNjljOWQwODY3NDMyZmY2ZmEuLjFiNmMwYjA5ODIyZmY3MTJlNzAw
MjNlZGViOWY0NDE3MTdkYzNhNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9Xb3JrUXVldWVJdGVtRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29y
a1F1ZXVlSXRlbUVmbC5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlIDxFV2ViS2l0Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL2dkYi93ZWJraXQucHkgYi9Ub29scy9nZGIvd2Via2l0LnB5
CmluZGV4IDFiMmFlNTc1MTZiNGVlNDE3Zjk0OWFmMTRhZGIzM2M1MGIzMDNjYjEuLmJkZjNkMDg5
MDIxMWI2MmZjMmI3NDBjZDA0ZTM0ODc4MGY3YzFlZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2dkYi93
ZWJraXQucHkKKysrIGIvVG9vbHMvZ2RiL3dlYmtpdC5weQpAQCAtMTUxLDEzICsxNTEsMTEgQEAg
Y2xhc3MgV1RGU3RyaW5nUHJpbnRlcihTdHJpbmdQcmludGVyKToKICAgICAgICAgcmV0dXJuIHNl
bGYuc3RyaW5naW1wbF9wdHIoKS5kZXJlZmVyZW5jZSgpCiAKIAotSlNDVVN0cmluZ1ByaW50ZXIg
PSBXVEZTdHJpbmdJbXBsUHJpbnRlcgotCiAKIGNsYXNzIEpTQ0lkZW50aWZpZXJQcmludGVyKFN0
cmluZ1ByaW50ZXIpOgogICAgICJQcmludCBhIEpTQzo6SWRlbnRpZmllciIKICAgICBkZWYgdG9f
c3RyaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gSlNDVVN0cmluZ1ByaW50ZXIoc2VsZi52YWxb
J21fc3RyaW5nJ10pLnRvX3N0cmluZygpCisgICAgICAgIHJldHVybiBXVEZTdHJpbmdJbXBsUHJp
bnRlcihzZWxmLnZhbFsnbV9zdHJpbmcnXSkudG9fc3RyaW5nKCkKIAogCiBjbGFzcyBKU0NKU1N0
cmluZ1ByaW50ZXIoU3RyaW5nUHJpbnRlcik6CkBAIC0xNjYsNyArMTY0LDcgQEAgY2xhc3MgSlND
SlNTdHJpbmdQcmludGVyKFN0cmluZ1ByaW50ZXIpOgogICAgICAgICBpZiBzZWxmLnZhbFsnbV9s
ZW5ndGgnXSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuICcnCiAKLSAgICAgICAgcmV0dXJuIEpT
Q1VTdHJpbmdQcmludGVyKHNlbGYudmFsWydtX3ZhbHVlJ10pLnRvX3N0cmluZygpCisgICAgICAg
IHJldHVybiBXVEZTdHJpbmdJbXBsUHJpbnRlcihzZWxmLnZhbFsnbV92YWx1ZSddKS50b19zdHJp
bmcoKQogCiAKIGNsYXNzIFdlYkNvcmVLVVJMR29vZ2xlUHJpdmF0ZVByaW50ZXIoU3RyaW5nUHJp
bnRlcik6CkBAIC0yODIsNyArMjgwLDYgQEAgZGVmIGFkZF9wcmV0dHlfcHJpbnRlcnMoKToKICAg
ICAgICAgKHJlLmNvbXBpbGUoIl5XVEY6OlN0cmluZ0ltcGwkIiksIFdURlN0cmluZ0ltcGxQcmlu
dGVyKSwKICAgICAgICAgKHJlLmNvbXBpbGUoIl5XZWJDb3JlOjpLVVJMR29vZ2xlUHJpdmF0ZSQi
KSwgV2ViQ29yZUtVUkxHb29nbGVQcml2YXRlUHJpbnRlciksCiAgICAgICAgIChyZS5jb21waWxl
KCJeV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSQiKSwgV2ViQ29yZVF1YWxpZmllZE5hbWVQcmludGVy
KSwKLSAgICAgICAgKHJlLmNvbXBpbGUoIl5KU0M6OlVTdHJpbmckIiksIEpTQ1VTdHJpbmdQcmlu
dGVyKSwKICAgICAgICAgKHJlLmNvbXBpbGUoIl5KU0M6OklkZW50aWZpZXIkIiksIEpTQ0lkZW50
aWZpZXJQcmludGVyKSwKICAgICAgICAgKHJlLmNvbXBpbGUoIl5KU0M6OkpTU3RyaW5nJCIpLCBK
U0NKU1N0cmluZ1ByaW50ZXIpLAogICAgICkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5v
cmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKaW5kZXggNzE0OWUx
OTZjODhjZTc0YjI4MDY5MGY1M2M1OTk0MDM5OWY4NWI1My4uNmVmZTNkNGI0M2M4ZjQxMzY0ZTU1
NzAzNTQ5ZTE1NTVlZjQ4Yzk5OSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFu
Z2VMb2cKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMi0wOC0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIGNvZGluZyBzdHls
ZSB0byBhdm9pZCBtZW50aW9uaW5nIGEgY2xhc3MgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAg
ICAgICAgKiBjb2RpbmcvY29kaW5nLXN0eWxlLmh0bWw6CisKIDIwMTItMDgtMDkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkcmVzcyBvbmUgbW9yZSByZXZp
ZXcgY29tbWVudC4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvY29kaW5nL2NvZGlu
Zy1zdHlsZS5odG1sIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0
bWwKaW5kZXggMmE1ZDZkNmM4YWMwNjg2YmE4YjNiNDA3ZTAzZjQzMzM2NDllNDk0OC4uNzM1YWIz
ODE3OWY3ZGVjNDVhYjc3MTI5NTYzMGExYzU5YjM3NjkzNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
d2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKKysrIGIvV2Vic2l0ZXMvd2Via2l0
Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKQEAgLTk0MSw3ICs5NDEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV1RGOwogPC9wcmU+CiA8aDQgY2xhc3M9Indyb25nIj5Xcm9uZzo8L2g0PgogPHBy
ZSBjbGFzcz0iY29kZSI+Ci0vLyBydW50aW1lL1VTdHJpbmcuaAorLy8gcnVudGltZS9KU09iamVj
dC5oCiAKIG5hbWVzcGFjZSBXVEYgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161396</attachid>
            <date>2012-08-29 21:30:09 -0700</date>
            <delta_ts>2012-08-30 01:07:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95271-20120829212959.patch</filename>
            <type>text/plain</type>
            <size>553930</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ODYzMTZhMTlhNzcxNTk3OGU4MWJhZjQ4NzhhNDJlNTUwMjk5NDY0Li43ZTM1MzkzNmJkMDdlOTQw
OGNjZmIyZGYxNTY2ZDQ5NjM5ODNjMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxMi0wOC0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBIYXZpbmcgSlNDOjpV
U3RyaW5nIGFuZCBXVEY6OlN0cmluZyBpbmNyZWFzZSB0aGUgY29tcGxleGl0eSBvZiB3b3JraW5n
IG9uIFdlYktpdCwgYW5kCisgICAgICAgIGFkZCB1c2VsZXNzIGNvbnZlcnNpb25zIGluIHRoZSBi
aW5kaW5ncy4gSXQgYWxzbyBjYXVzZSBzb21lIGNvZGUgYmxvYXQuCisKKyAgICAgICAgVGhlIHBl
cmZvcm1hbmNlIGFkdmFudGFnZXMgb2YgVVN0cmluZyBoYXZlIGJlZW4gcG9ydGVkIG92ZXIgaW4g
cHJldmlvdXMgcGF0Y2hlcy4gVGhpcyBwYXRjaAorICAgICAgICBpcyB0aGUgbGFzdCBzdGVwOiBn
ZXR0aW5nIHJpZCBvZiBVU3RyaW5nLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzaW1w
bGlmaWVkIGNvZGUsIHRoaXMgYWxzbyByZWR1Y2UgdGhlIGJpbmFyeSBzaXplIGJ5IDE1a2Igb24g
eDg2XzY0LgorCisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9w
YXF1ZUpTU3RyaW5nOjp1c3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6dXN0cmluZyk6CisgICAgICAgIFRvIGF2b2lkIGNo
YW5naW5nIGV2ZXJ5dGhpbmcgYXQgb25jZSwgdGhlIGZ1bmN0aW9uIG5hbWVkIHVzdHJpbmcoKSB3
ZXJlIGtlcHQgYXMgaXMuIFRoZXkKKyAgICAgICAgd2lsbCBiZSByZW5hbWVkIGluIGEgZm9sbG93
IHVwIHBhdGNoLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmcp
OgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgIFNpbmNlIEpTVmFs
dWU6OnRvU3RyaW5nKCkgYWxyZWFkeSBleGlzdCAoYW5kIHJldHVybiB0aGUgSlNTdHJpbmcpLCB0
aGUgZGlyZWN0IGFjY2Vzc29yIGlzIHJlbmFtZWQKKyAgICAgICAgdG8gOjp0b1dURlN0cmluZygp
LiBXZSBtYXkgY2hhbmdlIDo6c3RyaW5nKCkgdG8gOjpqc1N0cmluZygpIGFuZCA6OnRvV1RGU3Ry
aW5nKCkgdG8gOjp0b1N0cmluZygpCisgICAgICAgIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVC
YWNrcmVmZXJlbmNlc1Nsb3cpOiBSZXBsYWNlIHRoZSB1c2Ugb2YgVVN0cmluZzo6Z2V0Q2hhcmFj
dGVyczw+KCkgYnkgU3RyaW5nOjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydDw+KCkuCisKIDIw
MTItMDgtMjkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFj
dG9yaW5nIExMSW50OjpEYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2ZTQyMTI4YTg1MzM0Y2VmZjIwM2IwM2MzMTJiMjUw
NjE0MTBiZTI1Li4wMzljMWFiNDAzNmFmZDhhNDFiNGFhZTg3MmQ5MWRiNGM1NjAwNGZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3MQor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtLmg6IFVzZWxlc3MgZWRpdCB0byBmb3JjZSBhIGZ1bGwgYnVpbGQuIFRoaXMgaXMgbmVl
ZGVkIGZvciBzb21lIGJvdHMgZm9yIHNvbWUgcmVhc29uLgorICAgICAgICAqIHd0Zi90ZXh0L1dU
RlN0cmluZy5oOiBFeHBvcnQgYSBzeW1ib2wgdGhhdCB3YXMgZXhwb3J0ZWQgb24gVVN0cmluZyBh
bmQgbmVlZGVkIGluIFdlYkNvcmUuCisKKyAgICAgICAgQWRkIFN0cmluZzo6Z2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQ8PigpLCB3aGljaCBpcyBzaW1pbGFyIHRvIFN0cmluZzo6Z2V0Q2hhcmFj
dGVyczw+KCkgYnV0IHdpdGggdGhlIHNhbWUKKyAgICAgICAgYmVoYXZpb3JzIGFzIFVTdHJpbmc6
OmdldENoYXJhY3RlcnM8PigpLgorCisgICAgICAgIFN0cmluZzo6Z2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQ8PigpIGlzIHVzZWZ1bCB3aGVuIG1hbmlwdWxhdGluZyBtdWx0aXBsZSBzdHJpbmdz
LCBpdCBhbGxvdyB3cml0dGluZyBjb2RlCisgICAgICAgIHVzaW5nIDE2Yml0cyBjaGFyYWN0ZXJz
IGlmIGFueSBvZiB0aGUgaW5wdXQgU3RyaW5nIGlzIG5vdCA4Yml0LgorCiAyMDEyLTA4LTI5ICBE
b21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAg
ICAgVGhlIDJkLmltYWdlRGF0YS5vYmplY3Qucm91bmQgY2FudmFzIHRlc3QgaXMgZmFpbGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDlmOGIwZjFiODBiMzg5ZWI2Mjc4MDA4OGJmODE5ZDIxODdhZGE4ODAuLjQ0
NjFhMzNhOTIzYWQ2OGZlYzNkMDZiYmNkZjViM2RlOGQ0YjE3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMi0wOC0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBVcGRhdGUgdGhlIGNv
ZGUgdG8gdXNlIFN0cmluZyBpbnN0ZWFkIG9mIFVTdHJpbmcuCisKKyAgICAgICAgT24geDg2XzY0
LCB0aGlzIHJlZHVjZXMgdGhlIGJpbmFyeSBzaXplIGJ5IDIya2IuCisKKyAgICAgICAgU2luY2Ug
aXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIGRpZmZlcmVuY2lhdGUgSlNDOjpqc1N0cmluZygp
IGFuZCBXZWJDb3JlOjpqc1N0cmluZygpIGJ5IHRoZSBpbnB1dAorICAgICAgICB0eXBlcywgV2Vi
Q29yZTo6anNTdHJpbmcoKSBpcyByZW5hdGVkIHRvIFdlYkNvcmU6OmpzU3RyaW5nV2l0aENhY2hl
KCkuCisKKyAgICAgICAgU2luY2UgdGhlIGNhY2hlIGlzIHVzaW5nIGEgUHRySGFzaCwgSlNDOjpq
c1N0cmluZygpIGlzIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIG9sZCBXZWJDb3JlOjpqc1N0cmluZygp
IHdoZW4KKyAgICAgICAgdGhlIHN0cmluZyBpcyBnZW5lcmF0ZWQgbG9jYWxseS4gVGhpcyBpcyBi
ZWNhdXNlIHRoZSBjYWNoZSBjYW4gbmV2ZXIgbWF0Y2ggaW4gdGhvc2UgY2FzZXMuCisKIDIwMTIt
MDgtMjkgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Rm9ybXNdIFJlbmFtZSBEYXRlVGltZUZpZWxkRWxlbWVudDo6RmllbGRFdmVudEhhbmRsZXIgdG8g
RmllbGRPd25lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMDcxYWI1ZTA3NTdh
NzU5YzA3ZWY1NjI5MjgyNzBjNTUzOTBiNGMyNC4uYmZmN2VlNTc2ZDk0NTczN2NlZGRjYzhjMDRh
NmFhMTk4YTUyNDcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTItMDgtMjggIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgUmVwbGFjZSBVU3RyaW5nIGJ5
IFN0cmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHA6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjppbnN0YWxsRG9tRnVuY3Rpb24pOgor
CiAyMDEyLTA4LTI5ICBSb2JpbiBDYW8gIDxyb2Jpbi5jYW9AdG9yY2htb2JpbGUuY29tLmNuPgog
CiAgICAgICAgIFtCbGFja0JlcnJ5XSBNb3ZlIHRoZSBoYW5kbGluZyBvZiBVc2VyTWVkaWEgcmVx
dWVzdHMgdG8gdGhlIGNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDE2YTg5MWVhMGMwZGYwMzk3
ZmVkZGZkNDc4M2NjY2FhYmFiMGJjODkuLjY4OWMxNWU1OGE5NjYxMWY1MzViNTcwYWY4MzU0NDEy
MTE0ZGIwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOC0yOCAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNl
IEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKworICAgICAgICBSZXBsYWNlIFVTdHJpbmcgYnkgU3RyaW5nLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VuZFdlYkludGVudFJlc3BvbnNlKToKKyAgICAg
ICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0
ZSk6CisKIDIwMTItMDgtMjkgIEthbWlsIEJsYW5rICA8ay5ibGFua0BzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBbRUZMXSBBZGQgc2V0dGluZyBBUEkgZm9yIGFsbG93IHVuaXZlcnNhbC9maWxlIGFj
Y2VzcyBmcm9tIGZpbGUgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBkYjA5ZTg4N2FlNzE3ZDY4
MTZkZmVjMjQ1MjlkMjY5ZTA1NDNiZDY3Li41MzVjM2NlMDU4NTNiMzdkNjk5Y2E3YTJmMWU1NjU4
MmRmMmZkMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMjgg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFj
ZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCisKKyAgICAgICAgUmVwbGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAg
ICAqIGdkb20vQ29udmVydFRvR0NoYXJQcml2YXRlLmg6CisgICAgICAgIChjb3B5QXNHY2hhcik6
CisKIDIwMTItMDgtMjkgIEpvc8OpIERhcGVuYSBQYXogIDxqZGFwZW5hQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0d0a10gUHJvY2VzcyBHdGsgMy40IHNtb290aCBzY3JvbGwgZXZlbnRzIHByb3Bl
cmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDExZjAzNThkYjQ5NzQ1M2FlMjFjYjMzNzNhZGMyZjMw
ZDEyM2Q5MWQuLjAwNjJhODU1ZDE4MWU2ZWM0ZDg2MWQyNWRhODcxOTgxMWJjN2EzZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMi0wOC0yOCAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBi
eSBXVEY6OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAg
ICAgICBHZXQgcmlkIG9mIFVTdHJpbmcsIHJlcGxhY2UgaXQgYnkgU3RyaW5nLCBhbmQgc2ltcGxp
ZnkgdGhlIGNvZGUgd2hlbiBwb3NzaWJsZS4KKworICAgICAgICBPbiB4ODZfNjQsIHRoaXMgcmVk
dWNlcyB0aGUgYmluYXJ5IHNpemUgYnkgN2tiLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChpZGVudGlmaWVyRnJvbUlkZW50
aWZpZXJSZXApOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
OjphZGRWYWx1ZVRvQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgICogUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50
aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQcm94eVJ1bnRpbWVNZXRob2Q6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6Z2V0UHJv
cGVydHlOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1l
ZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0pOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6d2l0
aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2Ny
aXB0RGVidWdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0Q2FsbEZyYW1lIGZ1bmN0
aW9uTmFtZV0pOgorICAgICAgICAoLVtXZWJTY3JpcHRDYWxsRnJhbWUgZXZhbHVhdGVXZWJTY3Jp
cHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcik6CisgICAg
ICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKHRvTlNVUkwpOgor
ICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoYWVEZXNjRnJvbUpTVmFsdWUpOgorCiAyMDEyLTA4
LTI5ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBZGQgaWNv
blVSTCB0byBXZWJOb3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggN2Q2OTU5ZDcwNjY0NWUz
ZWNiOTRiZmYyZGNhZDZjODAzZTRmYzcyMy4uN2JiYjNkZWJhNDJlNjc5OGQ2ZGNjZDVjMzBmMzM2
NDQ5NzRmZGYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0yOCAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNl
IEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKworICAgICAgICBSZXBsYWNlIFVTdHJpbmcgYnkgU3RyaW5nLgorCisgICAgICAg
ICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpldmFsdWF0ZUph
dmFTY3JpcHQpOgorCiAyMDEyLTA4LTI5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBkb2MgZ2VuZXJhdGlvbiB3aXRoIG1ha2Ug
ZG9jcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGY2MDE5YTJiNTlmMzkxODY4MGNmODQ2ZTc1MDY1NTNk
NDVjNzQ5MTMuLjE5YTRjZDU2MzBmYjkyMjE3NDA0NzZkYWM5MTliNDBmYjczYmRlZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOC0yOCAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBi
eSBXVEY6OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAg
ICAgICBSZXBsYWNlIFVTdHJpbmcgYnkgU3RyaW5nLgorCisgICAgICAgICogV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJblNjcmlw
dFdvcmxkKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKToKKwogMjAxMi0wOC0yOSAgRG9taW5p
YyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBWDogQ2FudmFzIHNo
b3VsZCBoYXZlIGEgZGlzdGluY3Qgcm9sZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCAxOTUyYmJiZjAxMzli
ZTRkYmVlZTIyYWMyZGNmZWNlZTU0MDg4OTY4Li5lM2MyYWQ4YjllNjMwMmFlZDA2N2Y3MjhmZDA3
YjRjOTg1YThhYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTI4
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxh
Y2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgorCisgICAgICAgIFVwZGF0ZSB0aGUgI2luY2x1ZGVzIHRvIHVzZSB0aGUgY29y
cmVjdCB0eXBlcy4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3
LmNwcDoKKwogMjAxMi0wOC0xMyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIHJlbGVhc2UgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjptX3BsdWdp
bldpZGdldCByZWZwdHIgdXBvbiBQbHVnaW4gRG9jdW1lbnQgZGV0YWNoLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDRkYjM5ZWI1YTQzZmU2MjY4NmE0YWIwODQ4NzU1YzQzYjY0ZjI5NmMuLjQ5ZmU1NmUyYjMzYTc5
ODQ4OGI4NDg0ZDZiMzgwYjBmNjRiYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAxMi0wOC0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBVcGRhdGUgdG8gY29kZSB0byBzd2l0Y2gg
ZnJvbSBVU3RyaW5nIHRvIFN0cmluZy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QTWV0aG9kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE1ldGhvZDo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
TWV0aG9kLmg6CisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAg
IChKU05QTWV0aG9kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om5wSWRlbnRpZmllckZyb21JZGVudGlmaWVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0
TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlv
blRvRXhlY1N0YXRlKToKKwogMjAxMi0wOC0yOSAgSm9zw6kgRGFwZW5hIFBheiAgPGpkYXBlbmFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR3RrXSBQcm9jZXNzIEd0ayAzLjQgc21vb3RoIHNjcm9s
bCBldmVudHMgcHJvcGVybHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tGdW5jdGlvbi5jcHAKaW5kZXggNTlkZTE4NmIwYWJhN2QxMTUyZWFlYjE5MTQzYzI5MGU5
OTVlYjBlNy4uMGY2M2QzYzE2NjljZjJmZDA5NGFlMjkyMGM0ZGJjZWVlOWVmY2JjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcApAQCAt
NDksNyArNDksNyBAQCBKU0NhbGxiYWNrRnVuY3Rpb246OkpTQ2FsbGJhY2tGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENhbAogewogfQogCi12b2lkIEpTQ2Fs
bGJhY2tGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBVU3RyaW5nJiBuYW1lKQordm9pZCBKU0NhbGxiYWNrRnVuY3Rpb246OmZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
RnVuY3Rpb24uaAppbmRleCA0MGJlZjhjNDg3MjRjOTQyYzRiMzM5YWNiZWVjNDMyMWM1YWRkODQx
Li41MDYzMGI1NTAzZTVlNGUyMjZiNGNjNWRlMDA5NDgyODUwODliZTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTM0LDEyICszNCwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTQ2FsbGJhY2tGdW5jdGlvbiA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOwotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0
aWMgSlNDYWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJh
Y2ssIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAgc3RhdGljIEpTQ2FsbGJhY2tGdW5jdGlvbiog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgewogICAgICAgICBKU0NhbGxiYWNrRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlND
YWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGJhY2spOwogICAgICAgICBmdW5jdGlv
bi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMmMzZTBlODU5ZjE2ZTg5
NTgxYTJmYTM1NmI4NDkyZjIwMzc5MjA3ZC4uMzZkN2ZhOWMyNTYwZGUwNzU3MDlmNjE5MjRiYmU2
YjI1OThiYzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmgKQEAgLTE3MSw3ICsxNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVz
SGFzSW5zdGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcyB8IFBhcmVudDo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgc3RhdGljIFN0cmluZyBj
bGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggMTYwZjQ4ODg3Yjg3MmMyOWJjM2UyYWRiZWRjOTFlZmFm
Y2Q0ZDkzOS4uODMyNmMwNTc5YWEwNzFjMzc1NzM3ZWY2NDI3Y2UzMWQ3YWM2MDE1NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmgKQEAgLTExMSwxMCArMTExLDEwIEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
Ojppbml0KEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLVVT
dHJpbmcgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3Qq
IG9iamVjdCkKK1N0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFtZShjb25z
dCBKU09iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7Ci0gICAgVVN0
cmluZyB0aGlzQ2xhc3NOYW1lID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKS0+Y2xhc3NOYW1lKCk7
CisgICAgU3RyaW5nIHRoaXNDbGFzc05hbWUgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpLT5jbGFz
c05hbWUoKTsKICAgICBpZiAoIXRoaXNDbGFzc05hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdGhpc0NsYXNzTmFtZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NS
ZWYuY3BwCmluZGV4IDEzNDQzMTY1NDc4OTE1ZjhhMTNhNGRiZDM4MDQ0MWVkMjRiYzRkMmQuLmE5
NWQ0MmUzOWVkMTMzOTI3Mjk2OTFlMTkwMzAyODYxNzY2MGUzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtNDIsMjAgKzQyLDYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdURjo6VW5pY29kZTsKIAogY29uc3QgSlNDbGFzc0RlZmluaXRpb24ga0pTQ2xhc3NEZWZp
bml0aW9uRW1wdHkgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAgfTsKIAotc3RhdGljIGlubGluZSBVU3RyaW5nIHRyeUNyZWF0ZVN0cmluZ0Zyb21V
VEY4KGNvbnN0IGNoYXIqIHN0cmluZykKLXsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0
dXJuIFVTdHJpbmcoKTsKLQotICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKLSAg
ICBWZWN0b3I8VUNoYXIsIDEwMjQ+IGJ1ZmZlcihsZW5ndGgpOwotICAgIFVDaGFyKiBwID0gYnVm
ZmVyLmRhdGEoKTsKLSAgICBpZiAoY29udmVyc2lvbk9LICE9IGNvbnZlcnRVVEY4VG9VVEYxNigm
c3RyaW5nLCBzdHJpbmcgKyBsZW5ndGgsICZwLCBwICsgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJu
IFVTdHJpbmcoKTsKLQotICAgIHJldHVybiBVU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHAgLSBidWZm
ZXIuZGF0YSgpKTsKLX0KLQogT3BhcXVlSlNDbGFzczo6T3BhcXVlSlNDbGFzcyhjb25zdCBKU0Ns
YXNzRGVmaW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFzcyogcHJvdG9DbGFzcykgCiAg
ICAgOiBwYXJlbnRDbGFzcyhkZWZpbml0aW9uLT5wYXJlbnRDbGFzcykKICAgICAsIHByb3RvdHlw
ZUNsYXNzKDApCkBAIC03MCwxNCArNTYsMTQgQEAgT3BhcXVlSlNDbGFzczo6T3BhcXVlSlNDbGFz
cyhjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFzcyoKICAg
ICAsIGNhbGxBc0NvbnN0cnVjdG9yKGRlZmluaXRpb24tPmNhbGxBc0NvbnN0cnVjdG9yKQogICAg
ICwgaGFzSW5zdGFuY2UoZGVmaW5pdGlvbi0+aGFzSW5zdGFuY2UpCiAgICAgLCBjb252ZXJ0VG9U
eXBlKGRlZmluaXRpb24tPmNvbnZlcnRUb1R5cGUpCi0gICAgLCBtX2NsYXNzTmFtZSh0cnlDcmVh
dGVTdHJpbmdGcm9tVVRGOChkZWZpbml0aW9uLT5jbGFzc05hbWUpKQorICAgICwgbV9jbGFzc05h
bWUoU3RyaW5nOjpmcm9tVVRGOChkZWZpbml0aW9uLT5jbGFzc05hbWUpKQogewogICAgIGluaXRp
YWxpemVUaHJlYWRpbmcoKTsKIAogICAgIGlmIChjb25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNW
YWx1ZSA9IGRlZmluaXRpb24tPnN0YXRpY1ZhbHVlcykgewogICAgICAgICBtX3N0YXRpY1ZhbHVl
cyA9IGFkb3B0UHRyKG5ldyBPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUpOwogICAgICAg
ICB3aGlsZSAoc3RhdGljVmFsdWUtPm5hbWUpIHsKLSAgICAgICAgICAgIFVTdHJpbmcgdmFsdWVO
YW1lID0gdHJ5Q3JlYXRlU3RyaW5nRnJvbVVURjgoc3RhdGljVmFsdWUtPm5hbWUpOworICAgICAg
ICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljVmFsdWUtPm5h
bWUpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZU5hbWUuaXNOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBhZG9wdFB0cihuZXcgU3Rh
dGljVmFsdWVFbnRyeShzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQ
cm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMpKSk7CiAgICAgICAgICAgICArK3N0YXRp
Y1ZhbHVlOwpAQCAtODcsNyArNzMsNyBAQCBPcGFxdWVKU0NsYXNzOjpPcGFxdWVKU0NsYXNzKGNv
bnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBPcGFxdWVKU0NsYXNzKgogICAgIGlm
IChjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5jdGlvbiA9IGRlZmluaXRpb24tPnN0
YXRpY0Z1bmN0aW9ucykgewogICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IGFkb3B0UHRyKG5l
dyBPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUpOwogICAgICAgICB3aGlsZSAoc3Rh
dGljRnVuY3Rpb24tPm5hbWUpIHsKLSAgICAgICAgICAgIFVTdHJpbmcgZnVuY3Rpb25OYW1lID0g
dHJ5Q3JlYXRlU3RyaW5nRnJvbVVURjgoc3RhdGljRnVuY3Rpb24tPm5hbWUpOworICAgICAgICAg
ICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljRnVuY3Rpb24t
Pm5hbWUpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBhZG9w
dFB0cihuZXcgU3RhdGljRnVuY3Rpb25FbnRyeShzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rp
b24sIHN0YXRpY0Z1bmN0aW9uLT5hdHRyaWJ1dGVzKSkpOwogICAgICAgICAgICAgKytzdGF0aWNG
dW5jdGlvbjsKQEAgLTE3MCwxMCArMTU2LDEwIEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYg
T3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiAq
Y29udGV4dERhdGE7CiB9CiAKLVVTdHJpbmcgT3BhcXVlSlNDbGFzczo6Y2xhc3NOYW1lKCkKK1N0
cmluZyBPcGFxdWVKU0NsYXNzOjpjbGFzc05hbWUoKQogewogICAgIC8vIE1ha2UgYSBkZWVwIGNv
cHksIHNvIHRoYXQgdGhlIGNhbGxlciBoYXMgbm8gY2hhbmNlIHRvIHB1dCB0aGUgb3JpZ2luYWwg
aW50byBJZGVudGlmaWVyVGFibGUuCi0gICAgcmV0dXJuIFVTdHJpbmcobV9jbGFzc05hbWUuY2hh
cmFjdGVycygpLCBtX2NsYXNzTmFtZS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIG1fY2xhc3NOYW1l
Lmlzb2xhdGVkQ29weSgpOwogfQogCiBPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIE9w
YXF1ZUpTQ2xhc3M6OnN0YXRpY1ZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmgKaW5kZXggODJjN2FiM2Y5NzI5ZTNkZmRjZmE5ZGI5
ZGM3YjFiOGI4MDgxODVhZC4uNDRkNWQxMWI5NTI1ZWRlN2IyNGRhMzRmMTBkY2VlMmQwZmYzYmY3
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmgKQEAgLTMxLDggKzMxLDgg
QEAKICNpbmNsdWRlICJXZWFrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJQ
cm90ZWN0LmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHN0cnVjdCBTdGF0aWNWYWx1ZUVu
dHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg5LDcgKzg5LDcgQEAgc3Ry
dWN0IE9wYXF1ZUpTQ2xhc3MgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlND
bGFzcz4gewogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1ZUpTQ2xhc3M+IGNyZWF0ZU5vQXV0
b21hdGljUHJvdG90eXBlKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKik7CiAgICAgfk9wYXF1ZUpT
Q2xhc3MoKTsKICAgICAKLSAgICBKU0M6OlVTdHJpbmcgY2xhc3NOYW1lKCk7CisgICAgU3RyaW5n
IGNsYXNzTmFtZSgpOwogICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGlj
VmFsdWVzKEpTQzo6RXhlY1N0YXRlKik7CiAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9u
c1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBKU0M6OkpTT2Jq
ZWN0KiBwcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTExOCw4ICsxMTgsOCBAQCBwcml2
YXRlOgogCiAgICAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBjb250ZXh0RGF0YShKU0M6OkV4
ZWNTdGF0ZSopOwogCi0gICAgLy8gVVN0cmluZ3MgaW4gdGhlc2UgZGF0YSBtZW1iZXJzIHNob3Vs
ZCBub3QgYmUgcHV0IGludG8gYW55IElkZW50aWZpZXJUYWJsZS4KLSAgICBKU0M6OlVTdHJpbmcg
bV9jbGFzc05hbWU7CisgICAgLy8gU3RyaW5ncyBpbiB0aGVzZSBkYXRhIG1lbWJlcnMgc2hvdWxk
IG5vdCBiZSBwdXQgaW50byBhbnkgSWRlbnRpZmllclRhYmxlLgorICAgIFN0cmluZyBtX2NsYXNz
TmFtZTsKICAgICBPd25QdHI8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPiBtX3N0YXRp
Y1ZhbHVlczsKICAgICBPd25QdHI8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPiBt
X3N0YXRpY0Z1bmN0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAKaW5kZXggN2E1NzI4N2RlZDRlMDJkNGIwZGNjNDk5N2RkYTkwNDMxYjZkYTFhYi4u
YmFlMzEwMTA1YjI0YjZhMmQxZmI0NmVkZjMyNjRlYWY5ZWQxM2M2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgIkpTQ2xhc3NSZWYuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CiAjaWYgT1MoREFSV0lOKQpAQCAtMTY3LDkgKzE2Nyw5IEBAIEpTU3RyaW5nUmVmIEpTQ29udGV4
dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRleHRSZWYgY3R4LCB1bnNpZ25lZCBtYXhTdGFja1NpemUp
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7
Ci0gICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBleGVjOwotICAgIFVTdHJpbmcgZnVuY3Rpb25O
YW1lOworICAgIFN0cmluZyBmdW5jdGlvbk5hbWU7CiAgICAgaWYgKGV4ZWMtPmNhbGxlZSgpKSB7
CiAgICAgICAgIGlmIChhc09iamVjdChleGVjLT5jYWxsZWUoKSktPmluaGVyaXRzKCZJbnRlcm5h
bEZ1bmN0aW9uOjpzX2luZm8pKSB7CiAgICAgICAgICAgICBmdW5jdGlvbk5hbWUgPSBhc0ludGVy
bmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5uYW1lKGV4ZWMpOwpAQCAtMTgzLDEwICsxODMs
MTAgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBj
dHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CiAg
ICAgICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRDsK
LSAgICAgICAgVVN0cmluZyB1cmxTdHJpbmc7CisgICAgICAgIFN0cmluZyB1cmxTdHJpbmc7CiAg
ICAgICAgIEpTVmFsdWUgZnVuY3Rpb247CiAgICAgICAgIAotICAgICAgICBVU3RyaW5nIGxldmVs
U3RyID0gVVN0cmluZzo6bnVtYmVyKGNvdW50KTsKKyAgICAgICAgU3RyaW5nIGxldmVsU3RyID0g
U3RyaW5nOjpudW1iZXIoY291bnQpOwogICAgICAgICAKICAgICAgICAgZXhlYy0+aW50ZXJwcmV0
ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKGNhbGxGcmFtZSwgc2lnbmVkTGluZU51bWJlciwgc291
cmNlSUQsIHVybFN0cmluZywgZnVuY3Rpb24pOwogCkBAIC0yMDgsMTIgKzIwOCwxMiBAQCBKU1N0
cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWdu
ZWQgbWF4U3RhY2tTaXplKQogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKCkgYXQgIik7CiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHVybFN0cmluZyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6
Iik7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKFVTdHJpbmc6Om51bWJlcihsaW5lTnVtYmVyKSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpKTsKICAg
ICAgICAgaWYgKCFmdW5jdGlvbiB8fCArK2NvdW50ID09IG1heFN0YWNrU2l6ZSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7
CiAgICAgfQotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9VU3Ry
aW5nKCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShidWls
ZGVyLnRvU3RyaW5nKCkpLmxlYWtSZWYoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1N0cmluZ1JlZkNGLmNwcAppbmRleCAwODc3YTEzZTYwYjI3ODY2ODBiNmQ5Y2Q4NTM3
YzU5MWUwYjJlZjU4Li5lODdmZDgzOGRlNWI2NjlmZmJmMTFlZDE3MWFiMzRlMmJlZmQ4MmRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAgLTMwLDcg
KzMwLDYgQEAKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmdSZWYuaCIKICNpbmNsdWRlICJPcGFxdWVKU1N0cmluZy5oIgotI2luY2x1ZGUgPHJ1bnRp
bWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9Pd25BcnJheVB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNw
cAppbmRleCA5YjcyNjhhMmRhNjMwMDllZjI1NWQwMGIzMGNiMTdiZTk4Y2VkZGI2Li4wYTExMzM5
MzY0NDhkZTczMzFlODUwMmVmYWNjYzg0YmM2OGJjZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUgPHJ1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvT3BlcmF0aW9ucy5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpbmNsdWRlIDxhbGdvcml0aG0+IC8vIGZvciBzdGQ6Om1pbgogCkBA
IC0yMzQsNyArMjM0LDcgQEAgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKEpT
Q29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKLSAgICBV
U3RyaW5nIHN0ciA9IHN0cmluZy0+dXN0cmluZygpOworICAgIFN0cmluZyBzdHIgPSBzdHJpbmct
PnVzdHJpbmcoKTsKICAgICBpZiAoc3RyLmlzOEJpdCgpKSB7CiAgICAgICAgIExpdGVyYWxQYXJz
ZXI8TENoYXI+IHBhcnNlcihleGVjLCBzdHIuY2hhcmFjdGVyczgoKSwgc3RyLmxlbmd0aCgpLCBT
dHJpY3RKU09OKTsKICAgICAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHBhcnNlci50cnlMaXRlcmFs
UGFyc2UoKSk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpT
T05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBhcGlWYWx1ZSwgdW5zaWcKICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hp
bShleGVjKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gdG9KUyhleGVjLCBhcGlWYWx1ZSk7Ci0gICAg
VVN0cmluZyByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGV4ZWMsIHZhbHVlLCBpbmRlbnQpOworICAg
IFN0cmluZyByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGV4ZWMsIHZhbHVlLCBpbmRlbnQpOwogICAg
IGlmIChleGNlcHRpb24pCiAgICAgICAgICpleGNlcHRpb24gPSAwOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9P
cGFxdWVKU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3Ry
aW5nLmNwcAppbmRleCA5YTExNmU2YjJmNjM5MzdkMGQwMmQwODhjNjFhNTU0YzlmYzIzYjg2Li5j
ZGU1N2FjZGFlM2YyMDBiMjg3OGFjNjI0NTI3NTdmZGZkMzhiNmI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcApAQCAtMzIsMTggKzMyLDE4IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLVBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUoY29uc3QgVVN0cmluZyYgdXN0cmluZykKK1Bhc3NSZWZQdHI8T3Bh
cXVlSlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7Ci0gICAgaWYgKCF1c3RyaW5nLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE9wYXF1ZUpTU3RyaW5nKHVzdHJpbmcuY2hhcmFjdGVycygpLCB1c3RyaW5nLmxlbmd0aCgp
KSk7CisgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgT3BhcXVlSlNTdHJpbmcoc3RyaW5nLmNoYXJhY3RlcnMoKSwgc3RyaW5nLmxlbmd0aCgpKSk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKLVVTdHJpbmcgT3BhcXVlSlNTdHJpbmc6OnVzdHJpbmcoKSBj
b25zdAorU3RyaW5nIE9wYXF1ZUpTU3RyaW5nOjp1c3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAo
dGhpcyAmJiBtX2NoYXJhY3RlcnMpCi0gICAgICAgIHJldHVybiBVU3RyaW5nKG1fY2hhcmFjdGVy
cywgbV9sZW5ndGgpOwotICAgIHJldHVybiBVU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJp
bmcobV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCk7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCiBJ
ZGVudGlmaWVyIE9wYXF1ZUpTU3RyaW5nOjppZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVl
SlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApp
bmRleCAxYzYzMTUwY2YxNTRlNzFjOGUzYTk2ZjQ3ZWJlYmQ4NmY4ODI3OTc3Li43ZTIyMmM1ZWU4
NDZkNzU1ODdhMDI1OTRmODg2ODBkZjY0YjNlNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9PcGFxdWVKU1N0cmluZy5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIE9wYXF1ZUpT
U3RyaW5nX2gKIAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBJZGVudGlmaWVyOwpAQCAtNDYsMTIgKzQ2LDEz
IEBAIHN0cnVjdCBPcGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxP
cGFxdWVKU1N0cmluZz4gewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wYXF1ZUpTU3Ry
aW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUoY29uc3QgSlNDOjpVU3Ry
aW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlNT
dHJpbmc+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKIAogICAgIFVDaGFyKiBjaGFyYWN0ZXJzKCkg
eyByZXR1cm4gdGhpcyA/IG1fY2hhcmFjdGVycyA6IDA7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgo
KSB7IHJldHVybiB0aGlzID8gbV9sZW5ndGggOiAwOyB9CiAKLSAgICBKU0M6OlVTdHJpbmcgdXN0
cmluZygpIGNvbnN0OworICAgIC8vIEZJWE1FOiByZW5hbWUgdG8gc3RyaW5nKCkuCisgICAgU3Ry
aW5nIHVzdHJpbmcoKSBjb25zdDsKICAgICBKU0M6OklkZW50aWZpZXIgaWRlbnRpZmllcihKU0M6
OkpTR2xvYmFsRGF0YSopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDcyZjQyMTM2ZjYwNGFlYjZlYjJiZWZlN2NkYjJkMjY3NDZlM2E3MmMu
LjI3MmI3M2Y1ZGVmNjcwMWYzM2EwZjA5MGQ1ZjdhOGQzOGU4MzUxNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI1NSw3ICsyNTUsNiBAQCBTRVQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCiAgICAgcnVudGltZS9T
eW1ib2xUYWJsZS5jcHAKICAgICBydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcAotICAgIHJ1bnRp
bWUvVVN0cmluZy5jcHAKIAogICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcAogICAgIHRvb2xzL0Nv
ZGVQcm9maWxpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDAzNjNmZDY2MDg3OTYzMTg1Y2JhMWQ4M2QxNGRlMWUwYThhMGZkZTIuLjk3OTY0NWVk
ZmYwYjY0ZWMxZWFjZDQ3ZjM4NTk4NThmN2ExN2Q0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02NTgsMTAgKzY1OCw2IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVj
a2VyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RyYWNpbmcuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDE2V2l0aEZyYWN0aW9uLmggXAotCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9VU3RyaW5nLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1VTdHJpbmdCdWlsZGVyLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJp
bmdDb25jYXRlbmF0ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NN
YXAuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1JhbmRvbS5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDlkOGQw
MTVjNzAxMGE1NGU0NmExYmUyYzEyNGQ4NjdmYjdjMzE2YjQuLjg1NmY3MWJmMDQ2YzVhMzVkMDI1
ZTAzZmMwY2E2Y2QzY2VmMGEzODMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0yNCwxMiArMjQsOCBAQCBFWFBPUlRTCiAgICAg
Pz8wU3RyaW5nT2JqZWN0QEpTQ0BASUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVlN0cnVjdHVyZUAx
QEBaCiAgICAgPz8wU3RydWN0dXJlQEpTQ0BAQUFFQEFBVkpTR2xvYmFsRGF0YUAxQFBBVkpTR2xv
YmFsT2JqZWN0QDFAVkpTVmFsdWVAMUBBQlZUeXBlSW5mb0AxQFBCVUNsYXNzSW5mb0AxQEBaCiAg
ICAgPz8wVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFQFhaCi0gICAgPz8wVVN0cmluZ0BKU0NAQFFB
RUBQQkRAWgotICAgID8/MFVTdHJpbmdASlNDQEBRQUVAUEJESUBaCi0gICAgPz8wVVN0cmluZ0BK
U0NAQFFBRUBQQl9XQFoKLSAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCX1dJQFoKICAgICA/PzBX
VEZUaHJlYWREYXRhQFdURkBAUUFFQFhaCi0gICAgPz8wWWFyclBhdHRlcm5AWWFyckBKU0NAQFFB
RUBBQlZVU3RyaW5nQDJAX04xUEFQQkRAWgorICAgID8/MFlhcnJQYXR0ZXJuQFlhcnJASlNDQEBR
QUVAQUJWU3RyaW5nQFdURkBAX04xUEFQQkRAWgogICAgID8/MUFycmF5QnVmZmVyVmlld0BXVEZA
QFVBRUBYWgogICAgID8/MUNsaWVudERhdGFASlNHbG9iYWxEYXRhQEpTQ0BAVUFFQFhaCiAgICAg
Pz8xQ29sbGF0b3JAV1RGQEBRQUVAWFoKQEAgLTQ0LDcgKzQwLDYgQEAgRVhQT1JUUwogICAgID8/
MVRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgogICAgID8/MVdURlRocmVhZERhdGFAV1RGQEBR
QUVAWFoKICAgICA/PzFXZWFrSGFuZGxlT3duZXJASlNDQEBVQUVAWFoKLSAgICA/PzhKU0NAQFlB
X05BQlZVU3RyaW5nQDBAMEBaCiAgICAgPz84V1RGQEBZQV9OQUJWQ1N0cmluZ0AwQDBAWgogICAg
ID9FY21hU2NyaXB0Q29udmVydGVyQERvdWJsZVRvU3RyaW5nQ29udmVydGVyQGRvdWJsZV9jb252
ZXJzaW9uQFdURkBAU0FBQlYxMjNAWFoKICAgICA/U3RyaW5nVG9Eb3VibGVAU3RyaW5nVG9Eb3Vi
bGVDb252ZXJ0ZXJAZG91YmxlX2NvbnZlcnNpb25AV1RGQEBTQU5QQkRJUEFJQFoKQEAgLTcxLDcg
KzY2LDYgQEAgRVhQT1JUUwogICAgID9hbGxvY2F0ZVNsb3dDYXNlQE1hcmtlZEFsbG9jYXRvckBK
U0NAQEFBRVBBWFhaCiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCRUlAWgog
ICAgID9hcHBlbmRAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhQQl9XSUBaCi0gICAgP2FzY2lpQFVT
dHJpbmdASlNDQEBRQkU/QVZDU3RyaW5nQFdURkBAWFoKICAgICA/YXR0YWNoQERlYnVnZ2VyQEpT
Q0BAUUFFWFBBVkpTR2xvYmFsT2JqZWN0QDJAQFoKICAgICA/YmFzZTY0RGVjb2RlQFdURkBAWUFf
TkFCVlN0cmluZ0AxQEFBVj8kVmVjdG9yQEQkMEFAQDFAVzRCYXNlNjREZWNvZGVQb2xpY3lAMUBA
WgogICAgID9iYXNlNjRFbmNvZGVAV1RGQEBZQT9BVlN0cmluZ0AxQFBCRElXNEJhc2U2NEVuY29k
ZVBvbGljeUAxQEBaCkBAIC04NCw3ICs3OCw3IEBAIEVYUE9SVFMKICAgICA/Y2FsY3VsYXRlRFNU
T2Zmc2V0QFdURkBAWUFOTk5AWgogICAgID9jYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJv
bVVURjhNYXNraW5nVG9wOEJpdHNAVW5pY29kZUBXVEZAQFlBSVBCRDBBQUkxQFoKICAgICA/Y2Fs
Y3VsYXRlVVRDT2Zmc2V0QFdURkBAWUFIWFoKLSAgICA/Y2FsY3VsYXRlZEZ1bmN0aW9uTmFtZUBE
ZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRT9BVlVTdHJpbmdAMkBYWgorICAgID9jYWxjdWxhdGVk
RnVuY3Rpb25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFP0FWU3RyaW5nQFdURkBAWFoK
ICAgICA/Y2FsbEBKU0NAQFlBP0FWSlNWYWx1ZUAxQFBBVkV4ZWNTdGF0ZUAxQFYyMUBXNENhbGxU
eXBlQDFAQUJUQ2FsbERhdGFAMUAxQUJWQXJnTGlzdEAxQEBaCiAgICAgP2NhbGxIb3N0RnVuY3Rp
b25Bc0NvbnN0cnVjdG9yQEpTQ0BAWUlfSlBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgP2NhbGxPbk1h
aW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKQEAgLTk3LDcgKzkxLDcgQEAgRVhQT1JUUwog
ICAgID9jaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGVASWRlbnRpZmllckBKU0NAQENBWFBBVkpT
R2xvYmFsRGF0YUAyQEBaCiAgICAgP2NoZWNrU3ludGF4QEpTQ0BAWUFfTlBBVkV4ZWNTdGF0ZUAx
QEFCVlNvdXJjZUNvZGVAMUBQQVZKU1ZhbHVlQDFAQFoKICAgICA/Y2hlY2tzdW1ATUQ1QFdURkBA
UUFFWEFBVj8kVmVjdG9yQEUkMEJBQEAyQEBaCi0gICAgP2NsYXNzTmFtZUBKU09iamVjdEBKU0NA
QFNBP0FWVVN0cmluZ0AyQFBCVjEyQEBaCisgICAgP2NsYXNzTmFtZUBKU09iamVjdEBKU0NAQFNB
P0FWU3RyaW5nQFdURkBAUEJWMTJAQFoKICAgICA/Y2xlYXJAU291cmNlUHJvdmlkZXJDYWNoZUBK
U0NAQFFBRVhYWgogICAgID9jbGVhclJhcmVEYXRhQEpTR2xvYmFsT2JqZWN0QEpTQ0BAQ0FYUEFW
SlNDZWxsQDJAQFoKICAgICA/Y29sbGF0ZUBDb2xsYXRvckBXVEZAQFFCRT9BVzRSZXN1bHRAMTJA
UEJfV0kwSUBaCkBAIC0xMDcsMzEgKzEwMSwzMCBAQCBFWFBPUlRTCiAgICAgP2NvbnN0cnVjdEBK
U0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBWSlNWYWx1ZUAxQFc0Q29uc3RydWN0
VHlwZUAxQEFCVENvbnN0cnVjdERhdGFAMUBBQlZBcmdMaXN0QDFAQFoKICAgICA/Y29uc3RydWN0
QXJyYXlASlNDQEBZQVBBVkpTQXJyYXlAMUBQQVZFeGVjU3RhdGVAMUBBQlZBcmdMaXN0QDFAQFoK
ICAgICA/Y29uc3RydWN0RW1wdHlPYmplY3RASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0
YXRlQDFAQFoKLSAgICA/Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2tA
SlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBB
QlZBcmdMaXN0QDFAQUJWSWRlbnRpZmllckAxQEFCVlVTdHJpbmdAMUBBQlZUZXh0UG9zaXRpb25A
V1RGQEBAWgorICAgID9jb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVja0BK
U0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBQQVZKU0dsb2JhbE9iamVjdEAxQEFC
VkFyZ0xpc3RAMUBBQlZJZGVudGlmaWVyQDFAQUJWU3RyaW5nQFdURkBAQUJWVGV4dFBvc2l0aW9u
QDhAQFoKICAgICA/Y29uc3RydWN0TnVtYmVyQEpTQ0BAWUFQQVZOdW1iZXJPYmplY3RAMUBQQVZF
eGVjU3RhdGVAMUBQQVZKU0dsb2JhbE9iamVjdEAxQFZKU1ZhbHVlQDFAQFoKICAgICA/Y29uc3Ry
dWN0U3RyaW5nQEpTQ0BAWUFQQVZTdHJpbmdPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBQQVZKU0ds
b2JhbE9iamVjdEAxQFZKU1ZhbHVlQDFAQFoKICAgICA/Y29udmVydExhdGluMVRvVVRGOEBVbmlj
b2RlQFdURkBAWUE/QVc0Q29udmVyc2lvblJlc3VsdEAxMkBQQVBCRVBCRVBBUEFEUEFEQFoKICAg
ICA/Y29udmVydFVURjE2VG9VVEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0
QDEyQFBBUEJfV1BCX1dQQVBBRFBBRF9OQFoKICAgICA/Y29udmVydFVURjhUb1VURjE2QFVuaWNv
ZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJEUEJEUEFQQV9XUEFfV19OQFoK
LSAgICA/Y3JlYXRlQEpTRnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFBBVkpT
R2xvYmFsT2JqZWN0QDJASEFCVlVTdHJpbmdAMkBQNklfSjBAWlc0SW50cmluc2ljQDJAM0BaCisg
ICAgP2NyZWF0ZUBKU0Z1bmN0aW9uQEpTQ0BAU0FQQVYxMkBQQVZFeGVjU3RhdGVAMkBQQVZKU0ds
b2JhbE9iamVjdEAyQEhBQlZTdHJpbmdAV1RGQEBQNklfSjBAWlc0SW50cmluc2ljQDJAM0BaCiAg
ICAgP2NyZWF0ZUBKU0dsb2JhbERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxE
YXRhQEpTQ0BAQFdURkBAVzRUaHJlYWRTdGFja1R5cGVAMkBXNEhlYXBUeXBlQDJAQFoKLSAgICA/
Y3JlYXRlQE9wYXF1ZUpTU3RyaW5nQEBTQT9BVj8kUGFzc1JlZlB0ckBVT3BhcXVlSlNTdHJpbmdA
QEBXVEZAQEFCVlVTdHJpbmdASlNDQEBAWgotICAgID9jcmVhdGVAUmVnRXhwQEpTQ0BAU0FQQVYx
MkBBQVZKU0dsb2JhbERhdGFAMkBBQlZVU3RyaW5nQDJAVzRSZWdFeHBGbGFnc0AyQEBaCisgICAg
P2NyZWF0ZUBSZWdFeHBASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQEFCVlN0cmluZ0BX
VEZAQFc0UmVnRXhwRmxhZ3NAMkBAWgogICAgID9jcmVhdGVFbXB0eVN0cmluZ0BTbWFsbFN0cmlu
Z3NASlNDQEBBQUVYUEFWSlNHbG9iYWxEYXRhQDJAQFoKLSAgICA/Y3JlYXRlRXJyb3JASlNDQEBZ
QVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBaCisgICAgP2NyZWF0
ZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlN0cmluZ0BXVEZA
QEBaCiAgICAgP2NyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uQEpTQ0BAWUFQQVZK
U09iamVjdEAxQFBBVkpTR2xvYmFsRGF0YUAxQEBaCiAgICAgP2NyZWF0ZUxlYWtlZEBKU0dsb2Jh
bERhdGFASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWSlNHbG9iYWxEYXRhQEpTQ0BAQFdURkBAVzRU
aHJlYWRTdGFja1R5cGVAMkBXNEhlYXBUeXBlQDJAQFoKICAgICA/Y3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQFoKLSAgICA/
Y3JlYXRlUmFuZ2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZV
U3RyaW5nQDFAQFoKLSAgICA/Y3JlYXRlUmVmZXJlbmNlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0
QDFAUEFWRXhlY1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBaCisgICAgP2NyZWF0ZVJhbmdlRXJyb3JA
SlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWU3RyaW5nQFdURkBAQFoKKyAg
ICA/Y3JlYXRlUmVmZXJlbmNlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRl
QDFAQUJWU3RyaW5nQFdURkBAQFoKICAgICA/Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nQFNt
YWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBFQFoKICAgICA/Y3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEBaCi0g
ICAgP2NyZWF0ZVN5bnRheEVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAx
QEFCVlVTdHJpbmdAMUBAWgorICAgID9jcmVhdGVTeW50YXhFcnJvckBKU0NAQFlBUEFWSlNPYmpl
Y3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZTdHJpbmdAV1RGQEBAWgogICAgID9jcmVhdGVUYWJsZUBI
YXNoVGFibGVASlNDQEBBQkVYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/Y3JlYXRlVGhyZWFk
QFdURkBAWUFJUDZBUEFYUEFYQFowQFoKICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFY
UEFYQFowUEJEQFoKICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBWFBBWEBaMFBCREBaCi0g
ICAgP2NyZWF0ZVR5cGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBB
QlZVU3RyaW5nQDFAQFoKKyAgICA/Y3JlYXRlVHlwZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAx
QFBBVkV4ZWNTdGF0ZUAxQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgP2NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyQFdURkBAWUFJWFoKICAgICA/Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1
ZXNAV1RGQEBZQVhQQVhJQFoKICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCkBAIC0xNjQs
NyArMTU3LDcgQEAgRVhQT1JUUwogICAgID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJQFoKICAgICA/
ZGlkVGltZU91dEBUaW1lb3V0Q2hlY2tlckBKU0NAQFFBRV9OUEFWRXhlY1N0YXRlQDJAQFoKICAg
ICA/ZGVsZXRlQWxsQ29tcGlsZWRDb2RlQEhlYXBASlNDQEBRQUVYWFoKLSAgICA/ZGlzcGxheU5h
bWVASlNGdW5jdGlvbkBKU0NAQFFBRT9CVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgorICAg
ID9kaXNwbGF5TmFtZUBKU0Z1bmN0aW9uQEpTQ0BAUUFFP0JWU3RyaW5nQFdURkBAUEFWRXhlY1N0
YXRlQDJAQFoKICAgICA/ZHRvYUBXVEZAQFlBWFFBRE5BQV9OQUFIQUFJQFoKICAgICA/ZHVtcEFs
bE9wdGlvbnNAT3B0aW9uc0BKU0NAQFNBWFBBVV9pb2J1ZkBAQFoKICAgICA/ZHVtcENhbGxGcmFt
ZUBJbnRlcnByZXRlckBKU0NAQFFBRVhQQVZFeGVjU3RhdGVAMkBAWgpAQCAtMTcyLDcgKzE2NSw3
IEBAIEVYUE9SVFMKICAgICA/ZW1wdHlAU3RyaW5nSW1wbEBXVEZAQFNBUEFWMTJAWFoKICAgICA/
ZW51bWVyYWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAgICAgP2VxdWFsVVRG
MTZXaXRoVVRGOEBVbmljb2RlQFdURkBAWUFfTlBCX1cwUEJEMUBaCi0gICAgP2V2YWx1YXRlQERl
YnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFP0FWSlNWYWx1ZUAyQEFCVlVTdHJpbmdAMkBBQVYzMkBA
WgorICAgID9ldmFsdWF0ZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRT9BVkpTVmFsdWVAMkBB
QlZTdHJpbmdAV1RGQEBBQVYzMkBAWgogICAgID9ldmFsdWF0ZUBKU0NAQFlBP0FWSlNWYWx1ZUAx
QFBBVkV4ZWNTdGF0ZUAxQFBBVlNjb3BlQ2hhaW5Ob2RlQDFAQUJWU291cmNlQ29kZUAxQFYyMUBQ
QVYyMUBAWgogICAgID9leGNsdWRlQFByb2ZpbGVASlNDQEBRQUVYUEJWUHJvZmlsZU5vZGVAMkBA
WgogICAgID9leGVjdXRlQFBhcmFsbGVsRW52aXJvbm1lbnRAV1RGQEBRQUVYUEFYQFoKQEAgLTE5
MSw3ICsxODQsNyBAQCBFWFBPUlRTCiAgICAgP2ZpbmRBbGxvY2F0b3JAV2Vha1NldEBKU0NAQEFB
RVBBVUZyZWVDZWxsQFdlYWtCbG9ja0AyQFhaCiAgICAgP2ZpbmlzaENyZWF0aW9uQEJvb2xlYW5P
YmplY3RASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/ZmluaXNoQ3JlYXRpb25A
RGF0ZUluc3RhbmNlQEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQE5AWgotICAgID9maW5pc2hD
cmVhdGlvbkBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFFWEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVT
dHJpbmdAMkBAWgorICAgID9maW5pc2hDcmVhdGlvbkBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BASUFF
WEFBVkpTR2xvYmFsRGF0YUAyQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgP2ZpbmlzaENyZWF0aW9u
QEpTQXJyYXlASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJASUBaCiAgICAgP2ZpbmlzaENyZWF0
aW9uQFJlZ0V4cE9iamVjdEBKU0NAQElBRVhQQVZKU0dsb2JhbE9iamVjdEAyQEBaCiAgICAgP2Zp
bmlzaENyZWF0aW9uQFN0cmluZ09iamVjdEBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBQQVZK
U1N0cmluZ0AyQEBaCkBAIC0yMDAsOCArMTkzLDcgQEAgRVhQT1JUUwogICAgID9mcm9tQElkZW50
aWZpZXJASlNDQEBTQT9BVjEyQFBBVkV4ZWNTdGF0ZUAyQEhAWgogICAgID9mcm9tQElkZW50aWZp
ZXJASlNDQEBTQT9BVjEyQFBBVkV4ZWNTdGF0ZUAyQElAWgogICAgID9mdW5jdGlvbkdldHRlckBQ
cm9wZXJ0eVNsb3RASlNDQEBBQkU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAQFoKLSAgICA/
ZnVuY3Rpb25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFUEJWVVN0cmluZ0AyQFhaCi0g
ICAgP2dldENhbGN1bGF0ZWREaXNwbGF5TmFtZUBKU0NAQFlBP0FWVVN0cmluZ0AxQFBBVkV4ZWNT
dGF0ZUAxQFBBVkpTT2JqZWN0QDFAQFoKKyAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpT
Q0BAWUE/QVZTdHJpbmdAV1RGQEBQQVZFeGVjU3RhdGVAMUBQQVZKU09iamVjdEAxQEBaCiAgICAg
P2dldENhbGxEYXRhQEpTQ2VsbEBKU0NAQFNBP0FXNENhbGxUeXBlQDJAUEFWMTJAQUFUQ2FsbERh
dGFAMkBAWgogICAgID9nZXRDYWxsYWJsZU9iamVjdFNsb3dASlNDQEBZQVBBVkpTQ2VsbEAxQFBB
VjIxQEBaCiAgICAgP2dldENvbnN0cnVjdERhdGFASlNDZWxsQEpTQ0BAU0E/QVc0Q29uc3RydWN0
VHlwZUAyQFBBVjEyQEFBVENvbnN0cnVjdERhdGFAMkBAWgpAQCAtMjE2LDggKzIwOCw4IEBAIEVY
UE9SVFMKICAgICA/Z2V0UHJvcGVydHlOYW1lc0BKU09iamVjdEBKU0NAQFNBWFBBVjEyQFBBVkV4
ZWNTdGF0ZUAyQEFBVlByb3BlcnR5TmFtZUFycmF5QDJAVzRFbnVtZXJhdGlvbk1vZGVAMkBAWgog
ICAgID9nZXRTbGljZUBBcmdMaXN0QEpTQ0BAUUJFWEhBQVYxMkBAWgogICAgID9nZXRTdGFja1Ry
YWNlQEludGVycHJldGVyQEpTQ0BAU0FYUEFWSlNHbG9iYWxEYXRhQDJAQUFWPyRWZWN0b3JAVVN0
YWNrRnJhbWVASlNDQEAkMEFAQFdURkBAQFoKLSAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBKU0NAQFFC
RT9BVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAgID9nZXRTdHJpbmdASlNDZWxsQEpT
Q0BAUUJFX05QQVZFeGVjU3RhdGVAMkBBQVZVU3RyaW5nQDJAQFoKKyAgICA/Z2V0U3RyaW5nQEpT
Q2VsbEBKU0NAQFFCRT9BVlN0cmluZ0BXVEZAQFBBVkV4ZWNTdGF0ZUAyQEBaCisgICAgP2dldFN0
cmluZ0BKU0NlbGxASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFBVlN0cmluZ0BXVEZAQEBaCiAg
ICAgP2dldEBTdHJ1Y3R1cmVASlNDQEBRQUVIQUFWSlNHbG9iYWxEYXRhQDJAVlByb3BlcnR5TmFt
ZUAyQEFBSUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0dGVyQFByb3BlcnR5RGVzY3JpcHRvckBK
U0NAQFFCRT9BVkpTVmFsdWVAMkBYWgogICAgID9nbG9iYWxFeGVjQEpTR2xvYmFsT2JqZWN0QEpT
Q0BAUUFFUEFWRXhlY1N0YXRlQDJAWFoKQEAgLTIzNiw3ICsyMjgsNyBAQCBFWFBPUlRTCiAgICAg
P2luaXRpYWxpemVNYWluVGhyZWFkQFdURkBAWUFYWFoKICAgICA/aW5pdGlhbGl6ZVRocmVhZGlu
Z0BKU0NAQFlBWFhaCiAgICAgP2luaXRpYWxpemVUaHJlYWRpbmdAV1RGQEBZQVhYWgotICAgID9p
bnRlcnByZXRAWWFyckBKU0NAQFlBSVBBVUJ5dGVjb2RlUGF0dGVybkAxMkBBQlZVU3RyaW5nQDJA
SVBBSUBaCisgICAgP2ludGVycHJldEBZYXJyQEpTQ0BAWUFJUEFVQnl0ZWNvZGVQYXR0ZXJuQDEy
QEFCVlN0cmluZ0BXVEZAQElQQUlAWgogICAgID9pc0FjY2Vzc29yRGVzY3JpcHRvckBQcm9wZXJ0
eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAgICAgP2lzQnVzeUBIZWFwQEpTQ0BAUUFFX05YWgog
ICAgID9pc0RhdGFEZXNjcmlwdG9yQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFCRV9OWFoKQEAg
LTI0NiwxOSArMjM4LDE2IEBAIEVYUE9SVFMKICAgICA/aXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uQEpTQ0BAWUFfTlZKU1ZhbHVlQDFAQFoKICAgICA/aXNWYWxpZEFsbG9jYXRpb25ASGVh
cEBKU0NAQEFBRV9OSUBaCiAgICAgP2lzVmFsaWRDYWxsZWVASlNWYWx1ZUBKU0NAQFFBRV9OWFoK
LSAgICA/anNPd25lZFN0cmluZ0BKU0NAQFlBUEFWSlNTdHJpbmdAMUBQQVZKU0dsb2JhbERhdGFA
MUBBQlZVU3RyaW5nQDFAQFoKLSAgICA/anNTdHJpbmdASlNDQEBZQVBBVkpTU3RyaW5nQDFAUEFW
SlNHbG9iYWxEYXRhQDFAQUJWVVN0cmluZ0AxQEBaCiAgICAgP2xlbmd0aEBDU3RyaW5nQFdURkBA
UUJFSVhaCiAgICAgP2xvY2tASlNMb2NrQEpTQ0BAUUFFWFhaCiAgICAgP2xvY2tATXV0ZXhAV1RG
QEBRQUVYWFoKICAgICA/bG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4QFdURkBA
WUFYWFoKLSAgICA/bWF0Y2hAUmVnRXhwQEpTQ0BAUUFFSEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVT
dHJpbmdAMkBJQUFWPyRWZWN0b3JASCQwQ0FAQFdURkBAQFoKKyAgICA/bWF0Y2hAUmVnRXhwQEpT
Q0BAUUFFSEFBVkpTR2xvYmFsRGF0YUAyQEFCVlN0cmluZ0BXVEZAQElBQVY/JFZlY3RvckBIJDBD
QUBANUBAWgogICAgID9tYXRlcmlhbGl6ZVByb3BlcnR5TWFwQFN0cnVjdHVyZUBKU0NAQEFBRVhB
QVZKU0dsb2JhbERhdGFAMkBAWgogICAgID9tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVAV1RG
QEBZQU5YWgogICAgID9tb250aEZyb21EYXlJblllYXJAV1RGQEBZQUhIX05AWgogICAgID9tc1Rv
WWVhckBXVEZAQFlBSE5AWgotICAgID9uYW1lQEludGVybmFsRnVuY3Rpb25ASlNDQEBRQUVBQlZV
U3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKLSAgICA/bmFtZUBKU0Z1bmN0aW9uQEpTQ0BAUUFF
QUJWVVN0cmluZ0AyQFBBVkV4ZWNTdGF0ZUAyQEBaCisgICAgP25hbWVASlNGdW5jdGlvbkBKU0NA
QFFBRUFCVlN0cmluZ0BXVEZAQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP25ldXRlckBBcnJheUJ1
ZmZlclZpZXdAV1RGQEBNQUVYWFoKICAgICA/bmV3VW5pbml0aWFsaXplZEBDU3RyaW5nQFdURkBA
U0E/QVYxMkBJQUFQQURAWgogICAgID9ub3RpZnlXcml0ZVNsb3dAU3ltYm9sVGFibGVFbnRyeUBK
U0NAQEFBRVhYWgpAQCAtMjkzLDcgKzI4Miw3IEBAIEVYUE9SVFMKICAgICA/cHV0RGlyZWN0Vmly
dHVhbEBKU09iamVjdEBKU0NAQFNBWFBBVjEyQFBBVkV4ZWNTdGF0ZUAyQFZQcm9wZXJ0eU5hbWVA
MkBWSlNWYWx1ZUAyQElAWgogICAgID9yYW5kb21OdW1iZXJAV1RGQEBZQU5YWgogICAgID9yZWNv
bXBpbGVBbGxKU0Z1bmN0aW9uc0BEZWJ1Z2dlckBKU0NAQFFBRVhQQVZKU0dsb2JhbERhdGFAMkBA
WgotICAgID9yZWdFeHBGbGFnc0BKU0NAQFlBP0FXNFJlZ0V4cEZsYWdzQDFAQUJWVVN0cmluZ0Ax
QEBaCisgICAgP3JlZ0V4cEZsYWdzQEpTQ0BAWUE/QVc0UmVnRXhwRmxhZ3NAMUBBQlZTdHJpbmdA
V1RGQEBAWgogICAgID9yZWlmeVN0cmluZ0BTdHJpbmdCdWlsZGVyQFdURkBAQUJFWFhaCiAgICAg
P3JlbGVhc2VEZWNvbW1pdHRlZEBPU0FsbG9jYXRvckBXVEZAQFNBWFBBWElAWgogICAgID9yZWxl
YXNlRXhlY3V0YWJsZU1lbW9yeUBKU0dsb2JhbERhdGFASlNDQEBRQUVYWFoKQEAgLTMxMCw3ICsy
OTksNyBAQCBFWFBPUlRTCiAgICAgP3Jlc29sdmVSb3BlQEpTUm9wZVN0cmluZ0BKU0NAQEFCRVhQ
QVZFeGVjU3RhdGVAMkBAWgogICAgID9yZXN0b3JlQWxsQFByb2ZpbGVASlNDQEBRQUVYWFoKICAg
ICA/cmV0cmlldmVDYWxsZXJGcm9tVk1Db2RlQEludGVycHJldGVyQEpTQ0BAUUJFP0FWSlNWYWx1
ZUAyQFBBVkV4ZWNTdGF0ZUAyQFBBVkpTRnVuY3Rpb25AMkBAWgotICAgID9yZXRyaWV2ZUxhc3RD
YWxsZXJASW50ZXJwcmV0ZXJASlNDQEBRQkVYUEFWRXhlY1N0YXRlQDJAQUFIMUFBVlVTdHJpbmdA
MkBBQVZKU1ZhbHVlQDJAQFoKKyAgICA/cmV0cmlldmVMYXN0Q2FsbGVyQEludGVycHJldGVyQEpT
Q0BAUUJFWFBBVkV4ZWNTdGF0ZUAyQEFBSDFBQVZTdHJpbmdAV1RGQEBBQVZKU1ZhbHVlQDJAQFoK
ICAgICA/c2V0Q29uZmlndXJhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFBRVhfTkBaCiAg
ICAgP3NldERlc2NyaXB0b3JAUHJvcGVydHlEZXNjcmlwdG9yQEpTQ0BAUUFFWFZKU1ZhbHVlQDJA
SUBaCiAgICAgP3NldER1bXBzR2VuZXJhdGVkQ29kZUBCeXRlY29kZUdlbmVyYXRvckBKU0NAQFNB
WF9OQFoKQEAgLTMzNywxMSArMzI2LDEwIEBAIEVYUE9SVFMKICAgICA/c2xvd1ZhbGlkYXRlQ2Vs
bEBKU0NAQFlBWFBBVkpTQ2VsbEAxQEBaCiAgICAgP3Nsb3dWYWxpZGF0ZUNlbGxASlNDQEBZQVhQ
QVZKU0dsb2JhbE9iamVjdEAxQEBaCiAgICAgP3NvdXJjZUNvZGVASlNGdW5jdGlvbkBKU0NAQFFC
RVBCVlNvdXJjZUNvZGVAMkBYWgotICAgID9zdGFydFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFB
RVhQQVZFeGVjU3RhdGVAMkBBQlZVU3RyaW5nQDJAQFoKKyAgICA/c3RhcnRQcm9maWxpbmdAUHJv
ZmlsZXJASlNDQEBRQUVYUEFWRXhlY1N0YXRlQDJAQUJWU3RyaW5nQFdURkBAQFoKICAgICA/c3Rh
cnRTYW1wbGluZ0BKU0dsb2JhbERhdGFASlNDQEBRQUVYWFoKLSAgICA/c3RvcFByb2ZpbGluZ0BQ
cm9maWxlckBKU0NAQFFBRT9BVj8kUGFzc1JlZlB0ckBWUHJvZmlsZUBKU0NAQEBXVEZAQFBBVkV4
ZWNTdGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgorICAgID9zdG9wUHJvZmlsaW5nQFByb2ZpbGVyQEpT
Q0BAUUFFP0FWPyRQYXNzUmVmUHRyQFZQcm9maWxlQEpTQ0BAQFdURkBAUEFWRXhlY1N0YXRlQDJA
QUJWU3RyaW5nQDRAQFoKICAgICA/c3RvcFNhbXBsaW5nQEpTR2xvYmFsRGF0YUBKU0NAQFFBRVhY
WgotICAgID9zdWJzdHJpbmdTaGFyaW5nSW1wbEBVU3RyaW5nQEpTQ0BAUUJFP0FWMTJASUlAWgog
ICAgID9zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHlAU3RydWN0dXJlQEpTQ0BA
UUFFSVhaCiAgICAgP3N3ZWVwZXJASGVhcEBKU0NAQFFBRVBBVkluY3JlbWVudGFsU3dlZXBlckAy
QFhaCiAgICAgP3N5bnRoZXNpemVQcm90b3R5cGVASlNWYWx1ZUBKU0NAQFFCRVBBVkpTT2JqZWN0
QDJAUEFWRXhlY1N0YXRlQDJAQFoKQEAgLTM1MCw3ICszMzgsNyBAQCBFWFBPUlRTCiAgICAgP3Ro
cm93RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAUEFWMjFAQFoKICAg
ICA/dGhyb3dTeW50YXhFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBA
WgogICAgID90aHJvd1R5cGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVA
MUBAWgotICAgID90aHJvd1R5cGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3Rh
dGVAMUBBQlZVU3RyaW5nQDFAQFoKKyAgICA/dGhyb3dUeXBlRXJyb3JASlNDQEBZQVBBVkpTT2Jq
ZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWU3RyaW5nQFdURkBAQFoKICAgICA/dGltZWRXYWl0QFRo
cmVhZENvbmRpdGlvbkBXVEZAQFFBRV9OQUFWTXV0ZXhAMkBOQFoKICAgICA/dGxzS2V5Q291bnRA
V1RGQEBZQUFBSlhaCiAgICAgP3Rsc0tleXNAV1RGQEBZQVBBS1haCkBAIC0zNjYsNiArMzU0LDcg
QEAgRVhQT1JUUwogICAgID90b1N0cmluZ1Nsb3dDYXNlQEpTVmFsdWVASlNDQEBBQkVQQVZKU1N0
cmluZ0AyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3RvVGhpc09iamVjdEBKU09iamVjdEBKU0NA
QFNBUEFWMTJAUEFWSlNDZWxsQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9UaGlzT2JqZWN0
U2xvd0Nhc2VASlNWYWx1ZUBKU0NAQEFCRVBBVkpTT2JqZWN0QDJAUEFWRXhlY1N0YXRlQDJAQFoK
KyAgICA/dG9XVEZTdHJpbmdTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFP0FWU3RyaW5nQFdURkBA
UEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dHJhbnNmZXJAQXJyYXlCdWZmZXJAV1RGQEBRQUVfTkFB
VkFycmF5QnVmZmVyQ29udGVudHNAMkBBQVY/JFZlY3RvckBWPyRSZWZQdHJAVkFycmF5QnVmZmVy
Vmlld0BXVEZAQEBXVEZAQCQwQUBAMkBAWgogICAgID90cnlGYXN0Q2FsbG9jQFdURkBAWUE/QVVU
cnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElJQFoKICAgICA/dHJ5RmFzdE1hbGxvY0BXVEZAQFlBP0FV
VHJ5TWFsbG9jUmV0dXJuVmFsdWVAMUBJQFoKQEAgLTM3Nyw3ICszNjYsNiBAQCBFWFBPUlRTCiAg
ICAgP3VubG9ja0BNdXRleEBXVEZAQFFBRVhYWgogICAgID91bmxvY2tBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWNNdXRleEBXVEZAQFlBWFhaCiAgICAgP3VucHJvdGVjdEBIZWFwQEpTQ0BAUUFF
X05WSlNWYWx1ZUAyQEBaCi0gICAgP3V0ZjhAVVN0cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdAV1RG
QEBfTkBaCiAgICAgP3ZhbGlkYXRlQE1hcmtTdGFja0BKU0NAQEtBWFBBVkpTQ2VsbEAyQEBaCiAg
ICAgP3Zpc2l0Q2hpbGRyZW5ASlNHbG9iYWxPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBBQVZT
bG90VmlzaXRvckAyQEBaCiAgICAgP3Zpc2l0Q2hpbGRyZW5ASlNHbG9iYWxUaGlzQEpTQ0BAS0FY
UEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JAMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCAzMmIxN2E4N2JhOTRm
ZTljYWMxYmU1M2I5NGQ5ZGRiYTdiZjQwZDY4Li5jZWM2NThiYjk1ZjQyOWEyODI0MTRkYzM5YTdk
OThiMTA5ZjRkMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvagpAQCAtMTI5NCwyNiArMTI5NCw2IEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcVVN0cmlu
Zy5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXHJ1bnRpbWVcVVN0cmluZy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFVTdHJpbmdCdWlsZGVyLmgiCi0JCQkJPgotCQkJ
PC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcVVN0cmlu
Z0NvbmNhdGVuYXRlLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcVVN0cmluZ0ltcGwuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0J
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxXZWFrR0NNYXAuaCIKIAkJ
CQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAwODU5Yjg2
MjMxZGI0ZTBjZGE0NWU5NmQwYzYwYzYzYjBkMTcyMjMuLmQzZGI2MThjZDMxM2IyMjBhNGIxMDE5
ZDVjYTQ5YWQyZWFmOGNmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OCw3
ICs1OCw2IEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQkJMDhEREE1QzExMjY0NjMxNzAwNzUxNzMyIC8q
IFVTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjA3NzZCRjE0
RkYwMDJCMDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDc3NkJEMTRGRjAwMjgwMDEwMjMzMiAv
KiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsK
IAkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzMSw3ICszMzAsNiBAQAogCQkxNDQ2OURFQjEwN0VD
N0U3MDA2NTA0NDYgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0
cmluZ0NvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJMTQ0NjlERUMxMDdFQzdFNzAwNjUwNDQ2IC8q
IFN0cmluZ09iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzE4QzNDMjBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmNwcCAqLzsg
fTsKIAkJMTQ0NjlERUQxMDdFQzdFNzAwNjUwNDQ2IC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDNTBFMTZF
RTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJMTQ0NjlERUUxMDdF
QzdFNzAwNjUwNDQ2IC8qIFVTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4ODUwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcuY3Bw
ICovOyB9OwogCQkxNDQ4MzZFNzEzMkRBN0JFMDA1QkU3ODUgLyogQ29uc2VydmF0aXZlUm9vdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OURBQUYy
MTJFQjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUy
NiAvKiBTdHJvbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDU3MjI4NTE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0NkFBQjM4
MEI2NkE5NDQwMEU1NUYxNiAvKiBKU1N0cmluZ1JlZkNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NkFBQjM3MEI2NkE5NDQwMEU1NUYxNiAvKiBK
U1N0cmluZ1JlZkNGLmNwcCAqLzsgfTsKQEAgLTY2Myw3ICs2NjEsNiBAQAogCQlCQzE4QzQ2ODBF
MTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDMzBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5n
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkMxOEM0NkEwRTE2RjVDRDAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEMzQzYwRTE2RUUzMzAw
QjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDMThDNDZCMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTeW1ib2xU
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRB
Mzk2QTYwQ0QyOTMzMTAwQjVCNEZGIC8qIFN5bWJvbFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkMxOEM0NzYwRTE2RjVDRDAwQjM0NDYw
IC8qIFVTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY2OTJBODg2MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0N0EwRTE2RjVDRDAwQjM0
NDYwIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktpdEF2YWls
YWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
IAkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MjMwRTE2RkM4
QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlCQzE4QzUyNjBFMTZG
Q0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1MjUwRTE2RkNBNzAwQjM0NDYwIC8qIFN0
cmluZ1Byb3RvdHlwZS5sdXQuaCAqLzsgfTsKQEAgLTgxNyw4ICs4MTQsNiBAQAogLyogRW5kIFBC
WENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJl
bmNlIHNlY3Rpb24gKi8KLQkJMDg5NkMyOUIxMjY1QUFGNjAwQjFDREQzIC8qIFVTdHJpbmdDb25j
YXRlbmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVU3RyaW5nQ29uY2F0
ZW5hdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDhEREE1QkIxMjY0NUYxRDAw
NzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVTdHJpbmdCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDc3
NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRDb21waWxhdGlvbkVmZm9ydC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVu
dHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5
cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNTE4LDggKzE1MTMsNiBAQAogCQlGNjkyQTg3QzAyNTU1OTdEMDFG
RjYwRjcgLyogUmVnRXhwT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODdEMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVnRXhwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9Owog
CQlGNjkyQTg3RTAyNTU1OTdEMDFGRjYwRjcgLyogUmVnRXhwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07Ci0JCUY2OTJBODg1MDI1NTU5N0QwMUZGNjBGNyAv
KiBVU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IH07Ci0JCUY2OTJBODg2MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVTdHJpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGNjkyQTg4NzAyNTU1
OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1J
bnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNw
ZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTRBMzMxRTE1QkQyRTA3
MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMzUsMTAg
KzIyMjgsNiBAQAogCQkJCTVENTM3MjZEMEUxQzU0NkIwMDIxRTU0OSAvKiBUcmFjaW5nLmQgKi8s
CiAJCQkJNUQ1MzcyNkUwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLywKIAkJCQk4NjY3
MzlEMTEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggKi8sCi0JCQkJRjY5
MkE4ODUwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcuY3BwICovLAotCQkJCUY2OTJBODg2MDI1
NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmggKi8sCi0JCQkJMDhEREE1QkIxMjY0NUYxRDAwNzUx
NzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggKi8sCi0JCQkJMDg5NkMyOUIxMjY1QUFGNjAwQjFDREQz
IC8qIFVTdHJpbmdDb25jYXRlbmF0ZS5oICovLAogCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NEND
RSAvKiBXZWFrR0NNYXAuaCAqLywKIAkJCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vh
a1JhbmRvbS5oICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJp
ZXIuaCAqLywKQEAgLTI3ODYsOCArMjc3NSw2IEBACiAJCQkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFF
NTQ5IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NjczOUQzMTNCRkRFNzEwMDIz
RDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUYwOENG
MTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQzE4QzQ3NjBFMTZGNUNEMDBCMzQ0NjAgLyogVVN0cmluZy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMDhEREE1QzExMjY0NjMxNzAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVS
ZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8q
IFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDMzLDcgKzM0MjAsNiBAQAog
CQkJCUJDQ0YwRDBDMEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0
b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNGMEY0RjYwRUUwMDU5OTA5OSAvKiBU
aW1lb3V0Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxNDQ2OURFRTEwN0VDN0U3MDA2
NTA0NDYgLyogVVN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUxNjE0MDUxMUI1
MDBDRkE2MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1
MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKaW5kZXggZTVhZjFmNzc3MmU2
MDgxMzk2ZThkMDY1MWFlMzZmZjA0ZDYyMDk2MC4uNTQ1M2E4ZTY2MmJjNWY4MDRiMjA5Y2FhYmI2
MjI5YWM5ZDM3ZTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKQEAgLTI1NSw3ICsyNTUs
NiBAQCBTT1VSQ0VTICs9IFwKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAgXAogICAgIHJ1bnRp
bWUvU3ltYm9sVGFibGUuY3BwIFwKICAgICBydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcCBcCi0g
ICAgcnVudGltZS9VU3RyaW5nLmNwcCBcCiAgICAgdG9vbHMvQ29kZVByb2ZpbGUuY3BwIFwKICAg
ICB0b29scy9Db2RlUHJvZmlsaW5nLmNwcCBcCiAgICAgeWFyci9ZYXJySklULmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA2YmU3NzA4
MDUzYjdjMjk4NTM3YjdiMGVhODM3MDE5MTMxYjk4NjEuLjViZmU5ZDBhYzc5NDg0OGU5MGVmZGY1
NWNjYjcxYjI2NTkwZWY3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIk1ldGhvZENhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiUmVw
YXRjaEJ1ZmZlci5oIgotI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9V
bnVzZWRQYXJhbS5oPgpAQCAtNjIsMzYgKzYxLDM2IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcg
bmFtZXNwYWNlIERGRzsKICNlbmRpZgogCi1zdGF0aWMgVVN0cmluZyBlc2NhcGVRdW90ZXMoY29u
c3QgVVN0cmluZyYgc3RyKQorc3RhdGljIFN0cmluZyBlc2NhcGVRdW90ZXMoY29uc3QgU3RyaW5n
JiBzdHIpCiB7Ci0gICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CisgICAgU3RyaW5nIHJlc3VsdCA9
IHN0cjsKICAgICBzaXplX3QgcG9zID0gMDsKICAgICB3aGlsZSAoKHBvcyA9IHJlc3VsdC5maW5k
KCdcIicsIHBvcykpICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIHJlc3VsdCA9IG1ha2VVU3RyaW5n
KHJlc3VsdC5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBwb3MpLCAiXCJcXFwiXCIiLCByZXN1bHQu
c3Vic3RyaW5nU2hhcmluZ0ltcGwocG9zICsgMSkpOworICAgICAgICByZXN1bHQgPSBtYWtlU3Ry
aW5nKHJlc3VsdC5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBwb3MpLCAiXCJcXFwiXCIiLCByZXN1
bHQuc3Vic3RyaW5nU2hhcmluZ0ltcGwocG9zICsgMSkpOwogICAgICAgICBwb3MgKz0gNDsKICAg
ICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFVTdHJpbmcgdmFsdWVUb1NvdXJj
ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsKQorc3RhdGljIFN0cmluZyB2YWx1
ZVRvU291cmNlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwpCiB7CiAgICAgaWYg
KCF2YWwpCiAgICAgICAgIHJldHVybiAiMCI7CiAKICAgICBpZiAodmFsLmlzU3RyaW5nKCkpCi0g
ICAgICAgIHJldHVybiBtYWtlVVN0cmluZygiXCIiLCBlc2NhcGVRdW90ZXModmFsLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSksICJcIiIpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygi
XCIiLCBlc2NhcGVRdW90ZXModmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksICJcIiIp
OwogCiAgICAgcmV0dXJuIHZhbC5kZXNjcmlwdGlvbigpOwogfQogCiBzdGF0aWMgQ1N0cmluZyBj
b25zdGFudE5hbWUoRXhlY1N0YXRlKiBleGVjLCBpbnQgaywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gbWFrZVVTdHJpbmcodmFsdWVUb1NvdXJjZVN0cmluZyhleGVjLCB2YWx1ZSksICIo
QGsiLCBVU3RyaW5nOjpudW1iZXIoayAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSwgIiki
KS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcodmFsdWVUb1NvdXJjZVN0cmluZyhleGVj
LCB2YWx1ZSksICIoQGsiLCBTdHJpbmc6Om51bWJlcihrIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgpLCAiKSIpLnV0ZjgoKTsKIH0KIAogc3RhdGljIENTdHJpbmcgaWROYW1lKGludCBpZDAs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewotICAgIHJldHVybiBtYWtlVVN0cmluZyhpZGVu
dC51c3RyaW5nKCksICIoQGlkIiwgVVN0cmluZzo6bnVtYmVyKGlkMCksICIpIikudXRmOCgpOwor
ICAgIHJldHVybiBtYWtlU3RyaW5nKGlkZW50LnVzdHJpbmcoKSwgIihAaWQiLCBTdHJpbmc6Om51
bWJlcihpZDApLCAiKSIpLnV0ZjgoKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGludCBsb2NhdGlvbikKQEAgLTExNCwxMCArMTEzLDEwIEBAIENT
dHJpbmcgQ29kZUJsb2NrOjpyZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiBleGVjLCBpbnQgcikgY29u
c3QKICAgICBpZiAoaXNDb25zdGFudFJlZ2lzdGVySW5kZXgocikpCiAgICAgICAgIHJldHVybiBj
b25zdGFudE5hbWUoZXhlYywgciwgZ2V0Q29uc3RhbnQocikpOwogCi0gICAgcmV0dXJuIG1ha2VV
U3RyaW5nKCJyIiwgVVN0cmluZzo6bnVtYmVyKHIpKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoInIiLCBTdHJpbmc6Om51bWJlcihyKSkudXRmOCgpOwogfQogCi1zdGF0aWMgVVN0cmlu
ZyByZWdleHBUb1NvdXJjZVN0cmluZyhSZWdFeHAqIHJlZ0V4cCkKK3N0YXRpYyBTdHJpbmcgcmVn
ZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRXhwKiByZWdFeHApCiB7CiAgICAgY2hhciBwb3N0Zml4WzVd
ID0geyAnLycsIDAsIDAsIDAsIDAgfTsKICAgICBpbnQgaW5kZXggPSAxOwpAQCAtMTI4LDE1ICsx
MjcsMTUgQEAgc3RhdGljIFVTdHJpbmcgcmVnZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRXhwKiByZWdF
eHApCiAgICAgaWYgKHJlZ0V4cC0+bXVsdGlsaW5lKCkpCiAgICAgICAgIHBvc3RmaXhbaW5kZXhd
ID0gJ20nOwogCi0gICAgcmV0dXJuIG1ha2VVU3RyaW5nKCIvIiwgcmVnRXhwLT5wYXR0ZXJuKCks
IHBvc3RmaXgpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCIvIiwgcmVnRXhwLT5wYXR0ZXJuKCks
IHBvc3RmaXgpOwogfQogCiBzdGF0aWMgQ1N0cmluZyByZWdleHBOYW1lKGludCByZSwgUmVnRXhw
KiByZWdleHApCiB7Ci0gICAgcmV0dXJuIG1ha2VVU3RyaW5nKHJlZ2V4cFRvU291cmNlU3RyaW5n
KHJlZ2V4cCksICIoQHJlIiwgVVN0cmluZzo6bnVtYmVyKHJlKSwgIikiKS51dGY4KCk7CisgICAg
cmV0dXJuIG1ha2VTdHJpbmcocmVnZXhwVG9Tb3VyY2VTdHJpbmcocmVnZXhwKSwgIihAcmUiLCBT
dHJpbmc6Om51bWJlcihyZSksICIpIikudXRmOCgpOwogfQogCi1zdGF0aWMgVVN0cmluZyBwb2lu
dGVyVG9Tb3VyY2VTdHJpbmcodm9pZCogcCkKK3N0YXRpYyBTdHJpbmcgcG9pbnRlclRvU291cmNl
U3RyaW5nKHZvaWQqIHApCiB7CiAgICAgY2hhciBidWZmZXJbMiArIDIgKiBzaXplb2Yodm9pZCop
ICsgMV07IC8vIDB4IFt0d28gY2hhcmFjdGVycyBwZXIgYnl0ZV0gXDAKICAgICBzbnByaW50Zihi
dWZmZXIsIHNpemVvZihidWZmZXIpLCAiJXAiLCBwKTsKQEAgLTY0Miw3ICs2NDEsNyBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIEFTU0VSVCghKChpICsgbV9yYXJlRGF0YS0+bV9jaGFy
YWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLm1pbikgJiB+MHhGRkZGKSk7CiAgICAgICAgICAgICAg
ICAgVUNoYXIgY2ggPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZW50cnkgKyBtX3JhcmVEYXRhLT5tX2No
YXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9n
KCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIFVTdHJpbmcoJmNoLCAxKS51dGY4KCkuZGF0YSgpLCAq
aXRlcik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBT
dHJpbmcoJmNoLCAxKS51dGY4KCkuZGF0YSgpLCAqaXRlcik7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICAgIH1cbiIpOwogICAgICAgICAgICAgKytpOwpAQCAtNjU2LDcgKzY1
NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAg
IGRhdGFMb2coIiAgJTFkID0ge1xuIiwgaSk7CiAgICAgICAgICAgICBTdHJpbmdKdW1wVGFibGU6
OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICBm
b3IgKFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0
ZXIgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUu
YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCJc
dFx0XCIlc1wiID0+ICUwNGRcbiIsIFVTdHJpbmcoaXRlci0+Zmlyc3QpLnV0ZjgoKS5kYXRhKCks
IGl0ZXItPnNlY29uZC5icmFuY2hPZmZzZXQpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIlx0
XHRcIiVzXCIgPT4gJTA0ZFxuIiwgU3RyaW5nKGl0ZXItPmZpcnN0KS51dGY4KCkuZGF0YSgpLCBp
dGVyLT5zZWNvbmQuYnJhbmNoT2Zmc2V0KTsKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIH1c
biIpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CkBAIC0zMDAyLDEyICszMDAxLDEyIEBA
IGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotVVN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihpbnQgcmVn
aXN0ZXJOdW1iZXIpCitTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoaW50IHJlZ2lz
dGVyTnVtYmVyKQogewogICAgIFN5bWJvbFRhYmxlOjppdGVyYXRvciBlbmQgPSBtX3N5bWJvbFRh
YmxlLT5lbmQoKTsKICAgICBmb3IgKFN5bWJvbFRhYmxlOjppdGVyYXRvciBwdHIgPSBtX3N5bWJv
bFRhYmxlLT5iZWdpbigpOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICBpZiAocHRyLT5z
ZWNvbmQuZ2V0SW5kZXgoKSA9PSByZWdpc3Rlck51bWJlcikKLSAgICAgICAgICAgIHJldHVybiBV
U3RyaW5nKHB0ci0+Zmlyc3QpOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhwdHItPmZpcnN0
KTsKICAgICB9CiAgICAgaWYgKG5lZWRzQWN0aXZhdGlvbigpICYmIHJlZ2lzdGVyTnVtYmVyID09
IGFjdGl2YXRpb25SZWdpc3RlcigpKQogICAgICAgICByZXR1cm4gImFjdGl2YXRpb24iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDRhNTA4MGIyMDI0
ZmQyNWI2OWQwNDc2YjFjODhlNDk1ODUyNzNlMDcuLmE2NGZkNmRjYzQ3OTk3ZmEyODkyODdiMTU5
NGU0MWNmOTY2ZjZlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKQEAgLTY0LDcgKzY0LDYgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlJl
Z0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCi0jaW5jbHVkZSAi
VVN0cmluZy5oIgogI2luY2x1ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNsdWRl
ICJWYWx1ZVByb2ZpbGUuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCkBAIC03NSw2ICs3NCw3
IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIC8vIFNldCBFTkFCTEVfQllURUNPREVfQ09NTUVOVFMgdG8gMSB0byBlbmFibGUg
cmVjb3JkaW5nIGJ5dGVjb2RlIGdlbmVyYXRvcgogLy8gY29tbWVudHMgZm9yIHRoZSBieXRlY29k
ZXMgdGhhdCBpdCBnZW5lcmF0ZXMuIFRoaXMgd2lsbCBhbGxvdwpAQCAtNTgzLDcgKzU4Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKICAgICAg
ICAgCi0gICAgICAgIFVTdHJpbmcgbmFtZUZvclJlZ2lzdGVyKGludCByZWdpc3Rlck51bWJlcik7
CisgICAgICAgIFN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoaW50IHJlZ2lzdGVyTnVtYmVyKTsKICAg
ICAgICAgCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25l
ZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAppbmRleCA2YzFiYjk3ZDMwMmRiNzU2
OTI4MzA2OWFmZmVhYmEyNmY0MTY3YjM4Li44OGU5ZTVjMjRmMzI2MGRjNGRmYTdlNzJjOTAxNTI2
MmExMWJkOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29k
ZUNhY2hlLmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDUsMTQgKzQ0LDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbENvZGVDYWNoZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0LCBjb25zdCBVU3Ry
aW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKKyAgICAgICAgRXZh
bEV4ZWN1dGFibGUqIHRyeUdldChib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBl
dmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFpblN0cmljdENvbnRleHQgJiYgZXZhbFNvdXJjZS5sZW5ndGgoKSA8IG1heENh
Y2hlYWJsZVNvdXJjZUxlbmd0aCAmJiBzY29wZUNoYWluLT5iZWdpbigpLT5pc1ZhcmlhYmxlT2Jq
ZWN0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXAuZ2V0KGV2YWxTb3VyY2Uu
aW1wbCgpKS5nZXQoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgVVN0cmluZyYg
ZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4Y2VwdGlv
blZhbHVlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMs
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3Ry
aW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNWYWx1ZSYgZXhj
ZXB0aW9uVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFs
RXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShldmFs
U291cmNlKSwgaW5TdHJpY3RDb250ZXh0KTsKICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0g
ZXZhbEV4ZWN1dGFibGUtPmNvbXBpbGUoZXhlYywgc2NvcGVDaGFpbik7CkBAIC02NSw3ICs2NCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGV2YWxFeGVjdXRhYmxlOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0KEV4ZWNTdGF0
ZSogZXhlYywgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBj
b25zdCBVU3RyaW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNW
YWx1ZSYgZXhjZXB0aW9uVmFsdWUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXQoRXhlY1N0
YXRlKiBleGVjLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQs
IGNvbnN0IFN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpT
VmFsdWUmIGV4Y2VwdGlvblZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBFdmFsRXhlY3V0
YWJsZSogZXZhbEV4ZWN1dGFibGUgPSB0cnlHZXQoaW5TdHJpY3RDb250ZXh0LCBldmFsU291cmNl
LCBzY29wZUNoYWluKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0p1bXBUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJs
ZS5oCmluZGV4IDViYmUwNDcxMDdmNWIwMWMwMjg5YmVhMzMxODZlMWY4NGEzYWFmYzcuLmNiMGRl
ZjU2ZWM3MGRmY2FlZjVmYjA2NzUzOWNjMjdhNmViNTkxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNkZWZpbmUgSnVt
cFRhYmxlX2gKIAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCi0jaW5jbHVkZSAiVVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCmluZGV4IDlkMmRkN2JhYjU0MDA1MjVlOGIxNTdjMDE0YjI0ZTE3NmQ2
MzU0NDkuLmE4YWFjZjQ3MzM4MDU4MTVmOTIyODgyZDEyZWVhZDE3Y2Q1MmRlZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiVVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0xMTU4LDcgKzExNTgsNyBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3AoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJl
Z2lzdGVySUQqIGRzdAogICAgICAgICAgICAgJiYgc3JjMS0+aXNUZW1wb3JhcnkoKQogICAgICAg
ICAgICAgJiYgbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYzItPmluZGV4
KCkpCiAgICAgICAgICAgICAmJiBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT5p
bmRleCgpKS5nZXQoKS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBjb25zdCBVU3RyaW5nJiB2
YWx1ZSA9IGFzU3RyaW5nKG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyKHNyYzItPmluZGV4
KCkpLmdldCgpKS0+dHJ5R2V0VmFsdWUoKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFs
dWUgPSBhc1N0cmluZyhtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcihzcmMyLT5pbmRleCgp
KS5nZXQoKSktPnRyeUdldFZhbHVlKCk7CiAgICAgICAgICAgICBpZiAodmFsdWUgPT0gInVuZGVm
aW5lZCIpIHsKICAgICAgICAgICAgICAgICByZXdpbmRVbmFyeU9wKCk7CiAgICAgICAgICAgICAg
ICAgZW1pdE9wY29kZShvcF9pc191bmRlZmluZWQpOwpAQCAtMjQ0Niw3ICsyNDQ2LDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeUFuZEVtaXRDYXRjaChUcnlEYXRhKiB0
cnlEYXRhLCBSZWdpc3RlcklEKgogICAgIHJldHVybiB0YXJnZXRSZWdpc3RlcjsKIH0KIAotdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgVVN0cmlu
ZyYgbWVzc2FnZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVy
cm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3Jl
ZmVyZW5jZV9lcnJvcik7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFs
dWUoanNTdHJpbmcoZ2xvYmFsRGF0YSgpLCBtZXNzYWdlKSktPmluZGV4KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGJjMGY2ZGIyODRiNTU3OTE1M2M4Y2NlOTg5OGNmNDgxOGQ5ZWNlODguLjc5YTNmMzY4
MjdjNWE2MGFmNzY4ZmFhZjdjY2FkYWEwNDczNDMzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUyMCw3
ICs1MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVtaXRVbmFyeU5vRHN0T3Ao
b3BfdGhyb3csIGV4Yyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVtaXRUaHJvd1JlZmVy
ZW5jZUVycm9yKGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpOworICAgICAgICB2b2lkIGVtaXRUaHJv
d1JlZmVyZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICAgICAgdm9pZCBl
bWl0UHVzaE5ld1Njb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDBkNjM4MDgzYTYzYmZhNDg3MWEx
OWVjMTQzZTFlOTZiNTI0OWQyYzQuLmFjMzc1NDUxNzcyNjA5NWZjZjA0ZjJkNGFkNTY0MDYzMjdh
MmQyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5o
IgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgot
I2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KQEAgLTc3LDcgKzc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YTo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK1JlZ2lzdGVySUQqIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKG1lc3NhZ2UpOwpAQCAtMTgwOCw3ICsx
ODA3LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NsYXVzZUxpc3QoQ2xhdXNlTGlzdE5vZGUqIGxp
c3QsIFZlY3RvcjxFeHByZXNzaW9uTm9kZSosIDg+JgogICAgICAgICAgICAgICAgIHR5cGVGb3JU
YWJsZSA9IFN3aXRjaE5laXRoZXI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBjb25zdCBVU3RyaW5nJiB2YWx1ZSA9IHN0YXRpY19jYXN0PFN0cmlu
Z05vZGUqPihjbGF1c2VFeHByZXNzaW9uKS0+dmFsdWUoKS51c3RyaW5nKCk7CisgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHZhbHVlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KGNsYXVzZUV4
cHJlc3Npb24pLT52YWx1ZSgpLnVzdHJpbmcoKTsKICAgICAgICAgICAgIGlmIChzaW5nbGVDaGFy
YWN0ZXJTd2l0Y2ggJj0gdmFsdWUubGVuZ3RoKCkgPT0gMSkgewogICAgICAgICAgICAgICAgIGlu
dDMyX3QgaW50VmFsID0gdmFsdWVbMF07CiAgICAgICAgICAgICAgICAgaWYgKGludFZhbCA8IG1p
bl9udW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRl
eCAwYTY2ZDZmMzRlNmY0YmM5Y2M2ZDA0N2JmOTg2ZGZiNDFiNzBlYmQwLi5lZDU2YTUzY2Q2ODUx
ZDkxNTc4ZWQ2M2VhYjEyZjU5Y2Q2YTFmNWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgaW5saW5lIFJlY29tcGlsZXI6
On5SZWNvbXBpbGVyKCkKICAgICAvLyBKYXZhU2NyaXB0IGluIHRoZSBpbnNwZWN0b3IuCiAgICAg
U291cmNlUHJvdmlkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc291cmNlUHJvdmlkZXJz
LmVuZCgpOwogICAgIGZvciAoU291cmNlUHJvdmlkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBtX3NvdXJjZVByb3ZpZGVycy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAg
ICBtX2RlYnVnZ2VyLT5zb3VyY2VQYXJzZWQoaXRlci0+c2Vjb25kLCBpdGVyLT5maXJzdCwgLTEs
IFVTdHJpbmcoKSk7CisgICAgICAgIG1fZGVidWdnZXItPnNvdXJjZVBhcnNlZChpdGVyLT5zZWNv
bmQsIGl0ZXItPmZpcnN0LCAtMSwgU3RyaW5nKCkpOwogfQogCiBpbmxpbmUgdm9pZCBSZWNvbXBp
bGVyOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIERl
YnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CiAgICAgZ2xvYmFsRGF0YS0+aGVhcC5vYmplY3RTcGFjZSgpLmZvckVhY2hDZWxsKHJlY29tcGls
ZXIpOwogfQogCi1KU1ZhbHVlIGV2YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWUoY29uc3QgVVN0cmlu
ZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCitKU1ZhbHVlIGV2YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIEpTVmFsdWUmIGV4Y2VwdGlvbiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBDYWxsRnJhbWUqIGdsb2JhbENhbGxGcmFtZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBi
Yzc0MzY3N2UyMjc0Mzc2ZjlkZDBkODVhYTVkNmQ4NzUxYjUwMTA5Li4zYzRhNGVkNzYyMTljYzIx
ZjRhOTY2MzRjNGIyNjE3MTlkZThlYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuaApAQCAtMzIsNyArMzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIFNvdXJjZVBy
b3ZpZGVyOwotICAgIGNsYXNzIFVTdHJpbmc7CiAKICAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBEZWJ1Z2dlciB7CiAgICAgcHVibGljOgpAQCAtNDEsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VQYXJzZWQoRXhlY1N0YXRlKiwgU291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lTnVt
YmVyLCBjb25zdCBVU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxp
bmVOdW1iZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3QsIGludCwgaW50LCBib29sKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVu
dChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgPSAwOwpAQCAt
NjAsNyArNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBleGlzdHMgb25seSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGlu
ZyBXZWJTY3JpcHREZWJ1Z2dlciBjbGllbnRzLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhj
ZXB0aW9uLCBKU0dsb2JhbE9iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBXVEY6OlN0cmluZyYsIEpTVmFsdWUmIGV4
Y2VwdGlvbiwgSlNHbG9iYWxPYmplY3QqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5j
cHAKaW5kZXggNGMyNTU0ZjFhMmNhNDI5YzIyOTViYmUwZDI5NjE0Y2YwMTkzYjg0Yy4uZTIzNDY4
MDM1MTQ1NDFkMTBjNTMyODYyODQ0MzBjMjAwYjk3NDk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBEZWJ1Z2dlckFjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9hY3RpdmF0aW9uKTsKIH0KIAotVVN0cmluZyBEZWJ1Z2dlckFjdGl2YXRpb246OmNsYXNz
TmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIERlYnVnZ2VyQWN0aXZhdGlvbjo6
Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgRGVidWdnZXJB
Y3RpdmF0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IERlYnVnZ2VyQWN0aXZhdGlvbio+
KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi0+bWV0aG9kVGFi
bGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QtPm1fYWN0aXZhdGlvbi5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5k
ZXggMDdkMjAxNDFmNDk5Yzc2ODk0NDBiZDBlMTgyM2Y3ZTg5ZWNkYzRiOC4uYzkzNDQwN2ZjMjI5
M2I2MjA4NWM0MzJhNTBlNzEzMjA0YjU0ZmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLSAgICAgICAgc3RhdGljIFVTdHJpbmcgY2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CisgICAgICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1l
KGNvbnN0IEpTT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIHZvaWQgcHV0RGlyZWN0
VmlydHVhbChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBhNDhlN2QxNTYxMmNjYjdjMjlkMGRlZjlk
MDNlNjdkMGJlODMxZDc0Li4zZjhjOWNhMTVkODFlZWQ3OGY0YjA0ZDk4ZDViZjg5MjhkMWFlYTI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNh
bGxGcmFtZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0
IFVTdHJpbmcqIERlYnVnZ2VyQ2FsbEZyYW1lOjpmdW5jdGlvbk5hbWUoKSBjb25zdAorY29uc3Qg
U3RyaW5nKiBEZWJ1Z2dlckNhbGxGcmFtZTo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MCwx
NSArNTAsMTUgQEAgY29uc3QgVVN0cmluZyogRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aW9uTmFt
ZSgpIGNvbnN0CiAgICAgcmV0dXJuICZqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKS0+bmFt
ZShtX2NhbGxGcmFtZSk7CiB9CiAgICAgCi1VU3RyaW5nIERlYnVnZ2VyQ2FsbEZyYW1lOjpjYWxj
dWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3QKK1N0cmluZyBEZWJ1Z2dlckNhbGxGcmFtZTo6Y2Fs
Y3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbGxGcmFtZS0+Y29k
ZUJsb2NrKCkpCi0gICAgICAgIHJldHVybiBVU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAogICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IG1fY2FsbEZyYW1lLT5jYWxsZWUoKTsK
IAogICAgIGlmICghZnVuY3Rpb24pCi0gICAgICAgIHJldHVybiBVU3RyaW5nKCk7CisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAogICAgIHJldHVybiBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUo
bV9jYWxsRnJhbWUsIGZ1bmN0aW9uKTsKIH0KQEAgLTg0LDcgKzg0LDcgQEAgSlNPYmplY3QqIERl
YnVnZ2VyQ2FsbEZyYW1lOjp0aGlzT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gYXNPYmplY3Qo
dGhpc1ZhbHVlKTsKIH0KIAotSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGUoY29u
c3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0CitKU1ZhbHVlIERl
YnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYg
ZXhjZXB0aW9uKSBjb25zdAogewogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAppbmRleCBkY2E3NDg3YzA3YjQwOGNhZWU5Y2Vj
OGNiZDdiOGEwNjBmZjUyYzcyLi5jNDU3Nzc1Y2ZjYzcxYThlNzNjYzkxMDk5YzQzMThiNDU5NDc4
OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuaApAQCAtNTEsMTEgKzUxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lOyB9CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsgfQogICAgICAgICBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNoYWlu
KCk7IH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVN0cmluZyogZnVuY3Rpb25O
YW1lKCkgY29uc3Q7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgY2FsY3VsYXRl
ZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBT
dHJpbmcqIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBT
dHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBldmFsdWF0ZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShjb25zdCBTdHJpbmcm
LCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OwogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZXhjZXB0aW9uOyB9CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IYW5kbGUuaAppbmRleCA2MmYyNjdlMTJjMmZlNGEzMDNkOGQ5NDg0ZjYwMjNi
NjE4YjBlZTg5Li4zYjYyZTIwNTQ0ODJjNWJhMzA1YmE3OTg4NmIxMWVmODI0YzFkYThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBCYXNlPiBzdHJ1Y3QgSGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+IHsK
ICAgICBIYW5kbGU8SlNPYmplY3Q+IGFzT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGpzVmFsdWUoKS5pc09iamVjdCgpOyB9CiAgICAgYm9vbCBnZXRO
dW1iZXIoZG91YmxlIG51bWJlcikgY29uc3QgeyByZXR1cm4ganNWYWx1ZSgpLmdldE51bWJlcihu
dW1iZXIpOyB9Ci0gICAgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
V1RGOjpTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIGJvb2wgaXNVbmRl
ZmluZWRPck51bGwoKSBjb25zdCB7IHJldHVybiBqc1ZhbHVlKCkuaXNVbmRlZmluZWRPck51bGwo
KTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDZmMTNhZmI3
MjVhOTk5OWU3M2VjZjAzODQ3NDM2ZTVjM2EzM2YyMTQuLmUzNDkzYWM2NDY4NzI4NjI5Yjg0M2Iz
ZmQ2ZmI4M2Y5NTRmMmEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTU5LDEx
ICs1OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJG
aWxlOwotICAgIGNsYXNzIFVTdHJpbmc7CiAgICAgY2xhc3MgV2Vha0dDSGFuZGxlUG9vbDsKICAg
ICBjbGFzcyBTbG90VmlzaXRvcjsKIAotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEpTVmFsdWUsIFVT
dHJpbmc+IFZhbHVlU3RyaW5nUGFpcjsKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxKU1ZhbHVlLCBX
VEY6OlN0cmluZz4gVmFsdWVTdHJpbmdQYWlyOwogICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8
SlNDZWxsKj4gUHJvdGVjdENvdW50U2V0OwogICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8Y29u
c3QgY2hhcio+IFR5cGVDb3VudFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5jcHAKaW5kZXggYjMxMzY2NDNiNGVkYjc4ZjFhZjExNTNjNzk1ZWMyMzEwMTRjOTU4ZS4u
NmVmOWY5ZTA0OWUwMjQ5NTdiOGRlY2E5NzdjY2VmNjAxNjFiMzMzNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAi
U2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lTWV0aG9kcy5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJXcml0
ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCmluZGV4IGNmYmZiM2UzYWQwMzhmNzg1NDhhYzBmZmEyYTFjOTcyZmFhNTcwYzMuLmY4MjEy
ZWFmZTZhODAwMjYzOTRhMTM4MTk5MzFkNGEyYzEzMGQ4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHZv
aWQgQ2FsbEZyYW1lOjpkdW1wQ2FsbGVyKCkKIHsKICAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsK
ICAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICBTdHJp
bmcgdXJsU3RyaW5nOwogICAgIEpTVmFsdWUgZnVuY3Rpb247CiAgICAgCiAgICAgaW50ZXJwcmV0
ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKHRoaXMsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlE
LCB1cmxTdHJpbmcsIGZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdhOWZjOTRlM2U3ZDJhMTRmOWEzNWNhNDg4
YmQ3NjY5ODA5NzdkNzAuLmZjNWFmNTRjNjAxYWFhZDNlOWE3MzczOGMwYzJiODJiZTk0NmY1Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtNjEsNyArNjEsNiBAQAogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1
ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgot
I2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTUwLDcgKzE0
OSw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgcmV0dXJu
IHByb2dyYW07CiAgICAgCiAgICAgVG9wQ2FsbEZyYW1lU2V0dGVyIHRvcENhbGxGcmFtZShjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lKTsKLSAgICBVU3RyaW5nIHByb2dyYW1Tb3Vy
Y2UgPSBhc1N0cmluZyhwcm9ncmFtKS0+dmFsdWUoY2FsbEZyYW1lKTsKKyAgICBTdHJpbmcgcHJv
Z3JhbVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIGlm
IChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgIApAQCAtMzYxLDcgKzM2MCw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgd2hpbGUgKGl0IDwgZW5kKSB7CiAgICAgICAgIEpT
VmFsdWUgdiA9IGl0LT5qc1ZhbHVlKCk7CiAgICAgICAgIGludCByZWdpc3Rlck51bWJlciA9IGl0
IC0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICAgICAgVVN0cmluZyBuYW1lID0gY29kZUJs
b2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJOdW1iZXIpOworICAgICAgICBTdHJpbmcgbmFt
ZSA9IGNvZGVCbG9jay0+bmFtZUZvclJlZ2lzdGVyKHJlZ2lzdGVyTnVtYmVyKTsKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogICAgICAgICBkYXRhTG9nKCJbciUgM2QgJTE0c10gICAgICB8ICUxMHAg
fCAlLTE2cyAweCVsbHggXG4iLCByZWdpc3Rlck51bWJlciwgbmFtZS5hc2NpaSgpLmRhdGEoKSwg
aXQsIHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbHNlCkBAIC00MDAs
NyArMzk5LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKICAgICAgICAgZG8gewogICAgICAgICAgICAgSlNWYWx1ZSB2ID0gaXQtPmpzVmFs
dWUoKTsKICAgICAgICAgICAgIGludCByZWdpc3Rlck51bWJlciA9IGl0IC0gY2FsbEZyYW1lLT5y
ZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIFVTdHJpbmcgbmFtZSA9IGNvZGVCbG9jay0+bmFtZUZv
clJlZ2lzdGVyKHJlZ2lzdGVyTnVtYmVyKTsKKyAgICAgICAgICAgIFN0cmluZyBuYW1lID0gY29k
ZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJOdW1iZXIpOwogI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCiAgICAgICAgICAgICBkYXRhTG9nKCJbciUgM2QgJTE0c10gICAgICB8ICUxMHAgfCAl
LTE2cyAweCVsbHggXG4iLCByZWdpc3Rlck51bWJlciwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgaXQs
IHYuZGVzY3JpcHRpb24oKSwgSlNWYWx1ZTo6ZW5jb2RlKHYpKTsKICNlbHNlCkBAIC01MzEsMTAg
KzUzMCwxMCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAgaWYgKCFqc01lc3NhZ2UgfHwg
IWpzTWVzc2FnZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBVU3RyaW5nIG1l
c3NhZ2UgPSBhc1N0cmluZyhqc01lc3NhZ2UpLT52YWx1ZShjYWxsRnJhbWUpOworICAgIFN0cmlu
ZyBtZXNzYWdlID0gYXNTdHJpbmcoanNNZXNzYWdlKS0+dmFsdWUoY2FsbEZyYW1lKTsKIAogICAg
IGlmIChleHByZXNzaW9uU3RhcnQgPCBleHByZXNzaW9uU3RvcCkKLSAgICAgICAgbWVzc2FnZSA9
ICBtYWtlVVN0cmluZyhtZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBjb2RlQmxvY2stPnNvdXJj
ZSgpLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25TdG9wKSwgIicpIik7Cisg
ICAgICAgIG1lc3NhZ2UgPSAgbWFrZVN0cmluZyhtZXNzYWdlLCAiIChldmFsdWF0aW5nICciLCBj
b2RlQmxvY2stPnNvdXJjZSgpLT5nZXRSYW5nZShleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25T
dG9wKSwgIicpIik7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIE5vIHJhbmdlIGluZm9ybWF0aW9u
LCBzbyBnaXZlIGEgZmV3IGNoYXJhY3RlcnMgb2YgY29udGV4dAogICAgICAgICBjb25zdCBTdHJp
bmdJbXBsKiBkYXRhID0gY29kZUJsb2NrLT5zb3VyY2UoKS0+ZGF0YSgpOwpAQCAtNTUxLDcgKzU1
MCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAgICAgICAgIHN0b3ArKzsKICAgICAg
ICAgd2hpbGUgKHN0b3AgPiBleHByZXNzaW9uU3RhcnQgJiYgaXNTdHJXaGl0ZVNwYWNlKCgqZGF0
YSlbc3RvcCAtIDFdKSkKICAgICAgICAgICAgIHN0b3AtLTsKLSAgICAgICAgbWVzc2FnZSA9IG1h
a2VVU3RyaW5nKG1lc3NhZ2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdl
dFJhbmdlKHN0YXJ0LCBzdG9wKSwgIi4uLicpIik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKG1lc3NhZ2UsICIgKG5lYXIgJy4uLiIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdl
KHN0YXJ0LCBzdG9wKSwgIi4uLicpIik7CiAgICAgfQogCiAgICAgZXhjZXB0aW9uLT5wdXREaXJl
Y3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UsIGpzU3Ry
aW5nKGdsb2JhbERhdGEsIG1lc3NhZ2UpKTsKQEAgLTY2NCw3ICs2NjMsNyBAQCBzdGF0aWMgQ2Fs
bEZyYW1lKiBnZXRDYWxsZXJJbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsCiAgICAgcmV0dXJuIGNhbGxlckZyYW1lOwogfQogCi1zdGF0aWMgQUxXQVlT
X0lOTElORSBjb25zdCBVU3RyaW5nIGdldFNvdXJjZVVSTEZyb21DYWxsRnJhbWUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpIAorc3RhdGljIEFMV0FZU19JTkxJTkUgY29uc3QgU3RyaW5nIGdldFNvdXJj
ZVVSTEZyb21DYWxsRnJhbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQVNTRVJUKCFj
YWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpOwogI2lmIEVOQUJMRShDTEFTU0lDX0lO
VEVSUFJFVEVSKQpAQCAtNzA1LDEzICs3MDQsMTMgQEAgdm9pZCBJbnRlcnByZXRlcjo6Z2V0U3Rh
Y2tUcmFjZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmUK
ICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPnRydWVDYWxsRnJhbWVGcm9tVk1Db2RlKCk7CiAK
ICAgICB3aGlsZSAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZSAhPSBDYWxsRnJhbWU6Om5vQ2FsbGVy
KCkpIHsKLSAgICAgICAgVVN0cmluZyBzb3VyY2VVUkw7CisgICAgICAgIFN0cmluZyBzb3VyY2VV
Ukw7CiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmNvZGVCbG9jaygpKSB7CiAgICAgICAgICAgICBz
b3VyY2VVUkwgPSBnZXRTb3VyY2VVUkxGcm9tQ2FsbEZyYW1lKGNhbGxGcmFtZSk7CiAgICAgICAg
ICAgICBTdGFja0ZyYW1lIHMgPSB7IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxG
cmFtZS0+Y2FsbGVlKCkpLCBnZXRTdGFja0ZyYW1lQ29kZVR5cGUoY2FsbEZyYW1lKSwgU3Ryb25n
PEV4ZWN1dGFibGVCYXNlPigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3du
ZXJFeGVjdXRhYmxlKCkpLCBsaW5lLCBzb3VyY2VVUkx9OwogICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQocyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7
IFN0cm9uZzxKU09iamVjdD4oKmdsb2JhbERhdGEsIGNhbGxGcmFtZS0+Y2FsbGVlKCkpLCBTdGFj
a0ZyYW1lTmF0aXZlQ29kZSwgU3Ryb25nPEV4ZWN1dGFibGVCYXNlPigpLCAtMSwgVVN0cmluZygp
fTsKKyAgICAgICAgICAgIFN0YWNrRnJhbWUgcyA9IHsgU3Ryb25nPEpTT2JqZWN0PigqZ2xvYmFs
RGF0YSwgY2FsbEZyYW1lLT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8
RXhlY3V0YWJsZUJhc2U+KCksIC0xLCBTdHJpbmcoKX07CiAgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChzKTsKICAgICAgICAgfQogICAgICAgICB1bnNpZ25lZCB1bnVzZWRCeXRlY29kZU9mZnNl
dCA9IDA7CkBAIC03NDQsNyArNzQzLDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6YWRkU3RhY2tUcmFj
ZUlmTmVjZXNzYXJ5KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZXJyb3IKICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogICAgIH0KICAgICAKLSAgICBlcnJvci0+cHV0
RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5zdGFjaywganNT
dHJpbmcoZ2xvYmFsRGF0YSwgVVN0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkuaW1wbCgpKSksIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgZXJyb3ItPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwg
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+c3RhY2ssIGpzU3RyaW5nKGdsb2JhbERhdGEsIGJ1
aWxkZXIudG9TdHJpbmcoKSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiB9CiAKIE5FVkVSX0lO
TElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKENhbGxGcmFtZSom
IGNhbGxGcmFtZSwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQpAQCAtODQ3LDcgKzg0Niw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJv
Z3JhbUV4ZWN1dGFibGUqIHByb2dyYW0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBTCiAgICAgRHlu
YW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKCpzY29wZUNoYWluLT5nbG9i
YWxEYXRhLCBzY29wZUNoYWluLT5nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIFZlY3RvcjxKU09O
UERhdGE+IEpTT05QRGF0YTsKICAgICBib29sIHBhcnNlUmVzdWx0OwotICAgIGNvbnN0IFVTdHJp
bmcgcHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgY29u
c3QgU3RyaW5nIHByb2dyYW1Tb3VyY2UgPSBwcm9ncmFtLT5zb3VyY2UoKS50b1N0cmluZygpOwog
ICAgIGlmIChwcm9ncmFtU291cmNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pczhCaXQoKSkgewpAQCAtNDk1NSw3ICs0OTU0
LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgICAgb3JpZ2luYWwgY29uc3RydWN0
b3IsIHVzaW5nIGNvbnN0YW50IG1lc3NhZ2UgYXMgdGhlCiAgICAgICAgICAgIG1lc3NhZ2Ugc3Ry
aW5nLiBUaGUgcmVzdWx0IGlzIHRocm93bi4KICAgICAgICAgKi8KLSAgICAgICAgVVN0cmluZyBt
ZXNzYWdlID0gY2FsbEZyYW1lLT5yKHZQQ1sxXS51Lm9wZXJhbmQpLmpzVmFsdWUoKS50b1N0cmlu
ZyhjYWxsRnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9
IGNhbGxGcmFtZS0+cih2UENbMV0udS5vcGVyYW5kKS5qc1ZhbHVlKCkudG9TdHJpbmcoY2FsbEZy
YW1lKS0+dmFsdWUoY2FsbEZyYW1lKTsKICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVl
KGNyZWF0ZVJlZmVyZW5jZUVycm9yKGNhbGxGcmFtZSwgbWVzc2FnZSkpOwogICAgICAgICBnb3Rv
IHZtX3Rocm93OwogICAgIH0KQEAgLTUxMzksMTEgKzUxMzgsMTEgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6cmV0cmlldmVDYWxsZXJGcm9tVk1Db2RlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1
bmN0aW9uKgogICAgIHJldHVybiBjYWxsZXI7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OnJldHJp
ZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgaW50JiBsaW5lTnVtYmVyLCBpbnRw
dHJfdCYgc291cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNv
bnN0Cit2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIGludCYgbGluZU51bWJlciwgaW50cHRyX3QmIHNvdXJjZUlELCBTdHJpbmcmIHNvdXJj
ZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgZnVuY3Rpb24gPSBKU1ZhbHVl
KCk7CiAgICAgbGluZU51bWJlciA9IC0xOwotICAgIHNvdXJjZVVSTCA9IFVTdHJpbmcoKTsKKyAg
ICBzb3VyY2VVUkwgPSBTdHJpbmcoKTsKIAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBj
YWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CiAgICAgaWYgKGNhbGxlckZyYW1lLT5oYXNIb3N0Q2Fs
bEZyYW1lRmxhZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAppbmRleCA4MzRmN2RlOTU1ZTI0NzQ1NDhjYjdiZjU5ODAzMmUzYmE1NTcwNGNh
Li5hYTBkNDAzMDUxZjU2YzhjNTA4MmFiZDZlMDdmMWFiMjQxYTNmZjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNzksOCArNzks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhY2tGcmFtZUNvZGVUeXBlIGNvZGVUeXBl
OwogICAgICAgICBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+IGV4ZWN1dGFibGU7CiAgICAgICAgIGlu
dCBsaW5lOwotICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTDsKLSAgICAgICAgVVN0cmluZyB0b1N0
cmluZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkgY29uc3QKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVS
TDsKKyAgICAgICAgU3RyaW5nIHRvU3RyaW5nKENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAog
ICAgICAgICB7CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHRyYWNlQnVpbGQ7CiAgICAgICAg
ICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gZnJpZW5kbHlGdW5jdGlvbk5hbWUoY2FsbEZyYW1l
KTsKQEAgLTIzMyw3ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU1ZhbHVl
IHJldHJpZXZlQXJndW1lbnRzRnJvbVZNQ29kZShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKikgY29u
c3Q7CiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVDYWxsZXJGcm9tVk1Db2RlKENhbGxGcmFtZSos
IEpTRnVuY3Rpb24qKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXRy
aWV2ZUxhc3RDYWxsZXIoQ2FsbEZyYW1lKiwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291
cmNlSUQsIFVTdHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUq
LCBpbnQmIGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgU3RyaW5nJiBzb3VyY2VVUkws
IEpTVmFsdWUmIGZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZ2V0QXJn
dW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJh
bWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKQEAgLTI0
MSw3ICsyNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBORVZFUl9JTkxJTkUgSGFu
ZGxlckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomLCBKU1ZhbHVlJiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJh
bWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1u
KTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFVTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSos
IFN0YWNrRnJhbWVDb2RlVHlwZSwgY29uc3QgVVN0cmluZyYsIGludCk7CisgICAgICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSosIFN0YWNrRnJhbWVDb2RlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgaW50KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJl
c3VsdHMpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2Fs
bEZyYW1lKiwgSlNPYmplY3QqIGVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAppbmRleCBkNTFhNzQwMDIwOTg4M2VkMmM2Nzk4NDM1NjZiOGI0ODIwMzEzZjJjLi43
YzAzNTYyZjk2NTY2M2M2NGExOTFhOWIzM2E2MzIxNGNiNmM5ODgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzQxMCw3ICszNDEwLDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCwgb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQogICAgIFNUVUJfSU5JVF9T
VEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3Rh
Y2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgVVN0cmluZyBtZXNzYWdlID0gc3RhY2tGcmFtZS5hcmdz
WzBdLmpzVmFsdWUoKS50b1N0cmluZyhjYWxsRnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpOworICAg
IFN0cmluZyBtZXNzYWdlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKS50b1N0cmluZyhj
YWxsRnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uID0gY3JlYXRlUmVmZXJlbmNlRXJyb3IoY2FsbEZyYW1lLCBtZXNzYWdlKTsKICAg
ICBWTV9USFJPV19FWENFUFRJT05fQVRfRU5EKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IDE3YWI1MTU4ODNjMmFkNWRhOWZiZDJmZmQ4OGVlMGZjMmNmNjljM2EuLmYzZDliMmUxMDU2OWE4
NDAzYjAyMDUwZjE0YTczZGM4YzIwZjZiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC04MCw3
ICs4MCw3IEBACiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAot
c3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBVU3RyaW5nJiBm
aWxlTmFtZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpOworc3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldp
dGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBWZWN0b3I8Y2hhcj4mIGJ1
ZmZlcik7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJp
bnQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRlYnVnKEV4ZWNTdGF0ZSopOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIG1fZHVtcDsKICAgICBib29sIG1fZXhpdENvZGU7CiAgICAgVmVjdG9yPFNjcmlwdD4gbV9z
Y3JpcHRzOwotICAgIFZlY3RvcjxVU3RyaW5nPiBtX2FyZ3VtZW50czsKKyAgICBWZWN0b3I8U3Ry
aW5nPiBtX2FyZ3VtZW50czsKIAogICAgIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50LCBjaGFyKiop
OwogfTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIHR5cGVkZWYg
SlNHbG9iYWxPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBHbG9iYWxPYmplY3QqIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0
b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgR2xvYmFsT2JqZWN0KiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIEdsb2JhbE9iamVjdCogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRh
LmhlYXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBhcmd1bWVudHMpOwpAQCAtMTg3LDcgKzE4
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFi
bGVkKGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQog
ICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAg
IApAQCAtMjUyLDcgKzI1Miw3IEBAIEdsb2JhbE9iamVjdDo6R2xvYmFsT2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgU291cmNlQ29kZSBqc2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgVVN0cmlu
ZyYgZmlsZW5hbWUpCitzdGF0aWMgaW5saW5lIFNvdXJjZUNvZGUganNjU291cmNlKGNvbnN0IGNo
YXIqIHV0ZjgsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7CiAgICAgLy8gRmluZCB0aGUgdGhl
IGZpcnN0IG5vbi1hc2NpaSBjaGFyYWN0ZXIsIG9yIG51bC4KICAgICBjb25zdCBjaGFyKiBwb3Mg
PSB1dGY4OwpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBqc2NT
b3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgVVN0cmluZyYgZmlsZW5hbWUpCiAKICAgICAv
LyBGYXN0IGNhc2UgLSBzdHJpbmcgaXMgYWxsIGFzY2lpLgogICAgIGlmICghKnBvcykKLSAgICAg
ICAgcmV0dXJuIG1ha2VTb3VyY2UoVVN0cmluZyh1dGY4LCBhc2NpaUxlbmd0aCksIGZpbGVuYW1l
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VTb3VyY2UoU3RyaW5nKHV0ZjgsIGFzY2lpTGVuZ3RoKSwg
ZmlsZW5hbWUpOwogCiAgICAgLy8gU2xvdyBjYXNlIC0gY29udGFpbnMgbm9uLWFzY2lpIGNoYXJh
Y3RlcnMsIHVzZSBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjay4KICAgICBBU1NFUlQoKnBvcyA8
IDApOwpAQCAtMzQ3LDEyICszNDcsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblZlcnNpb24oRXhlY1N0YXRlKikKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgVVN0cmluZyBmaWxlTmFtZSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJp
bmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29u
dGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9wZW4g
ZmlsZS4iKSkpOwogCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdWxsKCkpLCBWZWN0b3I8VVN0cmluZz4oKSk7Cisg
ICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVj
LT5nbG9iYWxEYXRhKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKIAogICAgIEpTVmFsdWUgZXhj
ZXB0aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0zNzAsNyArMzcwLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICBVU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0
OwogICAgIGlmICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSk7CkBAIC0zODYsNyArMzg2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiBl
eGVjKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tTeW50YXgo
RXhlY1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFZlY3Rv
cjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZp
bGVOYW1lLCBzY3JpcHQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXJy
b3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKTsKQEAg
LTUyMyw3ICs1MjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiBzdGF0aWMg
Ym9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVj
dG9yPFNjcmlwdD4mIHNjcmlwdHMsIGJvb2wgZHVtcCkKIHsKICAgICBjb25zdCBjaGFyKiBzY3Jp
cHQ7Ci0gICAgVVN0cmluZyBmaWxlTmFtZTsKKyAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgVmVj
dG9yPGNoYXI+IHNjcmlwdEJ1ZmZlcjsKIAogICAgIGlmIChkdW1wKQpAQCAtNTg2LDcgKzU4Niw3
IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAKIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZl
KEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIFVTdHJpbmcgaW50ZXJwcmV0ZXJO
YW1lKCJJbnRlcnByZXRlciIpOworICAgIFN0cmluZyBpbnRlcnByZXRlck5hbWUoIkludGVycHJl
dGVyIik7CiAKICAgICB3aGlsZSAodHJ1ZSkgewogI2lmIEhBVkUoUkVBRExJTkUpICYmICFSVU5O
SU5HX0ZST01fWENPREUKQEAgLTc1MCw3ICs3NTAsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGJvb2wgZmlsbEJ1
ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBVU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNo
YXI+JiBidWZmZXIpCitzdGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAgIEZJTEUq
IGYgPSBmb3BlbihmaWxlTmFtZS51dGY4KCkuZGF0YSgpLCAiciIpOwogICAgIGlmICghZikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAyYThhOGRjOWUzNjNhZDNh
MjI3MTU5NmU3NWUxOWY1ZGNjMmIzMTMxLi4wNjMxNjhiZTEzYzE2YzRiZmRlMDNmYzQ5YmE5MDAw
MDNmNTgwZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMzY4
LDcgKzM2OCw3IEBAIExleGVyPFQ+Ojp+TGV4ZXIoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLVVTdHJpbmcgTGV4ZXI8VD46OmludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCkgY29uc3QKK1N0
cmluZyBMZXhlcjxUPjo6aW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdAogewogICAgIHN3
aXRjaCAobV9jdXJyZW50KSB7CiAgICAgY2FzZSAwOgpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQg
TGV4ZXI8VD46OnNldENvZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSog
YXJlbmEpCiAgICAgbV9lcnJvciA9IGZhbHNlOwogICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwog
ICAgIG1fY29sdW1uTnVtYmVyID0gMDsKLSAgICBtX2xleEVycm9yTWVzc2FnZSA9IFVTdHJpbmco
KTsKKyAgICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmluZygpOwogICAgIAogICAgIG1fYnVmZmVy
OC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwogICAg
IG1fYnVmZmVyMTYucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgobV9jb2RlRW5kIC0gbV9jb2RlKSAv
IDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDFhYzgzMmEyYzdiNWYz
ODJiMzNiNzhhNWM4MzA0YjE3NTU0MGY0NzIuLmQ3NWYyMDIwZDdjMDVlZGRkMzYyYmZhZmMyNmNh
OTg3YWI2MTRmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTEwMCwx
MiArMTAwLDEyIEBAIHB1YmxpYzoKIAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgdXNlIGFmdGVyIHBh
cnNpbmcuCiAgICAgYm9vbCBzYXdFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KLSAg
ICBVU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4RXJyb3JNZXNz
YWdlOyB9CisgICAgU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4
RXJyb3JNZXNzYWdlOyB9CiAgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgc2V0T2Zmc2V0KGlu
dCBvZmZzZXQpCiAgICAgewogICAgICAgICBtX2Vycm9yID0gMDsKLSAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSBVU3RyaW5nKCk7CisgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5n
KCk7CiAgICAgICAgIG1fY29kZSA9IG1fY29kZVN0YXJ0ICsgb2Zmc2V0OwogICAgICAgICBtX2J1
ZmZlcjgucmVzaXplKDApOwogICAgICAgICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsKQEAgLTEzNyw3
ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIGludCBwYXJzZUZvdXJEaWdpdFVuaWNvZGVIZXgoKTsK
ICAgICB2b2lkIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKIAotICAgIFVTdHJpbmcgaW52YWxpZENo
YXJhY3Rlck1lc3NhZ2UoKSBjb25zdDsKKyAgICBTdHJpbmcgaW52YWxpZENoYXJhY3Rlck1lc3Nh
Z2UoKSBjb25zdDsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFQqIGN1cnJlbnRDaGFyYWN0ZXIo
KSBjb25zdDsKICAgICBBTFdBWVNfSU5MSU5FIGludCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlIC0gbV9jb2RlU3RhcnQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
T2Zmc2V0RnJvbUNoYXJPZmZzZXQoY29uc3QgVCogY2hhck9mZnNldCkgeyBzZXRPZmZzZXQoY2hh
ck9mZnNldCAtIG1fY29kZVN0YXJ0KTsgfQpAQCAtMTgxLDcgKzE4MSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzUmVwYXJzaW5nOwogICAgIGJvb2wgbV9hdExpbmVTdGFydDsKICAgICBib29s
IG1fZXJyb3I7Ci0gICAgVVN0cmluZyBtX2xleEVycm9yTWVzc2FnZTsKKyAgICBTdHJpbmcgbV9s
ZXhFcnJvck1lc3NhZ2U7CiAKICAgICBUIG1fY3VycmVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IGVkMWE4NWFhZmJjODljZTE4ZjQ1MTIwMDk4NGRjYmExMmVkNzlh
ZjkuLmRjNjk0Y2M4YmMxZTZiMjc4YmVjN2ExZWViZWEyYTA0ZjI2MmFiZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTI3OSw3ICsyNzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdWludDE2X3QgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZz
ZXQ7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRocm93UmVm
ZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5lcmF0b3ImLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dWludDMyX3QgbV9kaXZvdDsKQEAgLTEzODksNyArMTM4OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAKICAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2U7IH0KLSAgICAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7IH0KKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51
cmwoKTsgfQogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlLnByb3ZpZGVySUQoKTsgfQogCiAgICAgICAgIHZvaWQgc2V0RmVhdHVyZXMoQ29kZUZlYXR1
cmVzIGZlYXR1cmVzKSB7IG1fZmVhdHVyZXMgPSBmZWF0dXJlczsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDRmZDY3MWZiNzM1ZjFkZDIxNTExMTI5MzMwMzIx
ODRmMzhiYzc0MDUuLmZkZGE3M2M2MWFjNWI2YmRjMWVjN2NkZTZlYjRhYTc0NWQzMzM3MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgxLDkgKzgxLDkgQEAg
UGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotVVN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCitTdHJpbmcg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogewotICAgIFVTdHJpbmcgcGFyc2VFcnJv
ciA9IFVTdHJpbmcoKTsKKyAgICBTdHJpbmcgcGFyc2VFcnJvciA9IFN0cmluZygpOwogICAgIAog
ICAgIHVuc2lnbmVkIG9sZEZ1bmN0aW9uQ2FjaGVTaXplID0gbV9mdW5jdGlvbkNhY2hlID8gbV9m
dW5jdGlvbkNhY2hlLT5ieXRlU2l6ZSgpIDogMDsKICAgICBBU1RCdWlsZGVyIGNvbnRleHQoY29u
c3RfY2FzdDxKU0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEpLCBjb25zdF9jYXN0PFNvdXJjZUNv
ZGUqPihtX3NvdXJjZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXgg
NzlhOTViNjk2M2I0MTI5MGJjYTNiNGZhOWM4NTgwZmNiNjIzNTU3Ni4uMjgzMTdkNTRlZTJkOTU5
YmNhZDMxZDkzYjcxNTAxZGU1ODViNWJmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCkBAIC01Niw3ICs1Niw2IEBAIGNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBKU0dsb2Jh
bERhdGE7CiBjbGFzcyBQcm9ncmFtTm9kZTsKIGNsYXNzIFNvdXJjZUNvZGU7Ci1jbGFzcyBVU3Ry
aW5nOwogCiAjZGVmaW5lIGZhaWwoKSBkbyB7IGlmICghbV9lcnJvcikgdXBkYXRlRXJyb3JNZXNz
YWdlKCk7IHJldHVybiAwOyB9IHdoaWxlICgwKQogI2RlZmluZSBmYWlsV2l0aFRva2VuKHRvaykg
ZG8geyBpZiAoIW1fZXJyb3IpIHVwZGF0ZUVycm9yTWVzc2FnZSh0b2spOyByZXR1cm4gMDsgfSB3
aGlsZSAoMCkKQEAgLTQ4OSw3ICs0ODgsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFBhcnNl
cigpOwotICAgIFVTdHJpbmcgcGFyc2VJbm5lcigpOworICAgIFN0cmluZyBwYXJzZUlubmVyKCk7
CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVu
YURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+
KiwgQ29kZUZlYXR1cmVzLApAQCAtNTI5LDkgKzUyOCw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIEFMV0FZU19JTkxJTkUgVVN0cmluZyBnZXRU
b2tlbigpIHsKKyAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBnZXRUb2tlbigpIHsKICAgICAgICAg
U291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyID0gbV9zb3VyY2UtPnByb3ZpZGVyKCk7Ci0g
ICAgICAgIHJldHVybiBVU3RyaW5nKHNvdXJjZVByb3ZpZGVyLT5nZXRSYW5nZSh0b2tlblN0YXJ0
KCksIHRva2VuRW5kKCkpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBzb3VyY2VQcm92aWRlci0+
Z2V0UmFuZ2UodG9rZW5TdGFydCgpLCB0b2tlbkVuZCgpKTsKICAgICB9CiAgICAgCiAgICAgQUxX
QVlTX0lOTElORSBib29sIG1hdGNoKEpTVG9rZW5UeXBlIGV4cGVjdGVkKQpAQCAtNzkzLDcgKzc5
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghbmFtZSkgCiAgICAgICAgICAgICB1cGRhdGVF
cnJvck1lc3NhZ2VTcGVjaWFsQ2FzZShtX3Rva2VuLm1fdHlwZSk7CiAgICAgICAgIGVsc2UgCi0g
ICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFVTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIlVuZXhw
ZWN0ZWQgdG9rZW4gJyVzJyIsIG5hbWUpLmltcGwoKSk7CisgICAgICAgICAgICBtX2Vycm9yTWVz
c2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIHRva2VuICclcyciLCBuYW1lKTsKICAg
ICB9CiAgICAgCiAgICAgTkVWRVJfSU5MSU5FIHZvaWQgdXBkYXRlRXJyb3JNZXNzYWdlKEpTVG9r
ZW5UeXBlIGV4cGVjdGVkVG9rZW4pIApAQCAtODAxLDcgKzgwMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIG1fZXJyb3IgPSB0cnVlOwogICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gZ2V0VG9rZW5O
YW1lKGV4cGVjdGVkVG9rZW4pOwogICAgICAgICBpZiAobmFtZSkKLSAgICAgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gVVN0cmluZyhTdHJpbmc6OmZvcm1hdCgiRXhwZWN0ZWQgdG9rZW4gJyVzJyIs
IG5hbWUpLmltcGwoKSk7CisgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9y
bWF0KCJFeHBlY3RlZCB0b2tlbiAnJXMnIiwgbmFtZSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgaWYgKCFnZXRUb2tlbk5hbWUobV90b2tlbi5tX3R5cGUpKQogICAgICAgICAgICAgICAg
IHVwZGF0ZUVycm9yTWVzc2FnZVNwZWNpYWxDYXNlKG1fdG9rZW4ubV90eXBlKTsKQEAgLTgxMCw3
ICs4MDksNyBAQCBwcml2YXRlOgogICAgICAgICB9IAogICAgIH0KICAgICAKLSAgICBORVZFUl9J
TkxJTkUgdm9pZCB1cGRhdGVFcnJvcldpdGhOYW1lQW5kTWVzc2FnZShjb25zdCBjaGFyKiBiZWZv
cmVNc2csIFVTdHJpbmcgbmFtZSwgY29uc3QgY2hhciogYWZ0ZXJNc2cpIAorICAgIE5FVkVSX0lO
TElORSB2b2lkIHVwZGF0ZUVycm9yV2l0aE5hbWVBbmRNZXNzYWdlKGNvbnN0IGNoYXIqIGJlZm9y
ZU1zZywgU3RyaW5nIG5hbWUsIGNvbnN0IGNoYXIqIGFmdGVyTXNnKQogICAgIHsKICAgICAgICAg
bV9lcnJvciA9IHRydWU7CiAgICAgICAgIFN0cmluZyBwcmVmaXgoYmVmb3JlTXNnKTsKQEAgLTgy
NSw3ICs4MjQsNyBAQCBwcml2YXRlOgogICAgIE5FVkVSX0lOTElORSB2b2lkIHVwZGF0ZUVycm9y
TWVzc2FnZShjb25zdCBjaGFyKiBtc2cpIAogICAgIHsgICAKICAgICAgICAgbV9lcnJvciA9IHRy
dWU7Ci0gICAgICAgIG1fZXJyb3JNZXNzYWdlID0gVVN0cmluZyhtc2cpOworICAgICAgICBtX2Vy
cm9yTWVzc2FnZSA9IFN0cmluZyhtc2cpOwogICAgIH0KICAgICAKICAgICB2b2lkIHN0YXJ0TG9v
cCgpIHsgY3VycmVudFNjb3BlKCktPnN0YXJ0TG9vcCgpOyB9CkBAIC05MzgsNyArOTM3LDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICBTdGFja0JvdW5kcyBtX3N0YWNrOwogICAgIGJvb2wgbV9lcnJv
cjsKLSAgICBVU3RyaW5nIG1fZXJyb3JNZXNzYWdlOworICAgIFN0cmluZyBtX2Vycm9yTWVzc2Fn
ZTsKICAgICBKU1Rva2VuIG1fdG9rZW47CiAgICAgYm9vbCBtX2FsbG93c0luOwogICAgIGludCBt
X2xhc3RMaW5lOwpAQCAtOTgyLDcgKzk4MSw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAg
ICAgQVNTRVJUKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVChleGNlcHRpb24gJiYg
ISpleGNlcHRpb24pOwogICAgIGludCBlcnJMaW5lOwotICAgIFVTdHJpbmcgZXJyTXNnOworICAg
IFN0cmluZyBlcnJNc2c7CiAKICAgICBpZiAoUGFyc2VkTm9kZTo6c2NvcGVJc0Z1bmN0aW9uKQog
ICAgICAgICBtX2xleGVyLT5zZXRJc1JlcGFyc2luZygpOwpAQCAtOTkwLDEzICs5ODksMTMgQEAg
UGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmoKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gMDsKIAogICAg
IGVyckxpbmUgPSAtMTsKLSAgICBlcnJNc2cgPSBVU3RyaW5nKCk7CisgICAgZXJyTXNnID0gU3Ry
aW5nKCk7CiAKLSAgICBVU3RyaW5nIHBhcnNlRXJyb3IgPSBwYXJzZUlubmVyKCk7CisgICAgU3Ry
aW5nIHBhcnNlRXJyb3IgPSBwYXJzZUlubmVyKCk7CiAKICAgICBpbnQgbGluZU51bWJlciA9IG1f
bGV4ZXItPmxpbmVOdW1iZXIoKTsKICAgICBib29sIGxleEVycm9yID0gbV9sZXhlci0+c2F3RXJy
b3IoKTsKLSAgICBVU3RyaW5nIGxleEVycm9yTWVzc2FnZSA9IGxleEVycm9yID8gbV9sZXhlci0+
Z2V0RXJyb3JNZXNzYWdlKCkgOiBVU3RyaW5nKCk7CisgICAgU3RyaW5nIGxleEVycm9yTWVzc2Fn
ZSA9IGxleEVycm9yID8gbV9sZXhlci0+Z2V0RXJyb3JNZXNzYWdlKCkgOiBTdHJpbmcoKTsKICAg
ICBBU1NFUlQobGV4RXJyb3JNZXNzYWdlLmlzTnVsbCgpICE9IGxleEVycm9yKTsKICAgICBtX2xl
eGVyLT5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmgKaW5kZXggMmZmZmQyN2QxM2FiMmJlNjJjZGIzZmEyZTBlNWQ5NzZhOTNkYzUzMS4uMmY1YjQ0
N2IxNjliMDM0NWFlOGVkNGVjMGIzMDI1MjAwMGM5MWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtMTEzLDcgKzExMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGlubGluZSBjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6
Om1ha2VOdW1lcmljSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGRvdWJsZSBu
dW1iZXIpCiAgICAgewotICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyKGds
b2JhbERhdGEsIFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChudW1iZXIpKSk7Cisg
ICAgICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgU3RyaW5n
OjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSkpOwogICAgICAgICByZXR1cm4gbV9p
ZGVudGlmaWVycy5sYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZS5oCmluZGV4IDExYTAwMzM3ZGE4NTNjYjA5YmRkNWQ2MWU1ZWQyMzkyMzQ1ZjQ0
OGYuLmJkYTkxYjNjOGE2ZjNiNjBmMWYyM2ZjNjlmYWJmMmFlMTBjMDMwNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCkBAIC02MCwxMCArNjAsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFVTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdAorICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fcHJvdmlkZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFVT
dHJpbmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gbV9wcm92aWRlci0+Z2V0UmFuZ2UobV9zdGFydENoYXIsIG1fZW5kQ2hhcik7CiAgICAg
ICAgIH0KICAgICAgICAgCkBAIC05MCw5ICs5MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBpbnQgbV9maXJzdExpbmU7CiAgICAgfTsKIAotICAgIGlubGluZSBTb3VyY2VDb2RlIG1ha2VT
b3VyY2UoY29uc3QgVVN0cmluZyYgc291cmNlLCBjb25zdCBVU3RyaW5nJiB1cmwgPSBVU3RyaW5n
KCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWlu
aW11bVBvc2l0aW9uKCkpCisgICAgaW5saW5lIFNvdXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwgPSBTdHJpbmcoKSwgY29uc3QgVGV4dFBv
c2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBTb3VyY2VDb2RlKFVTdHJpbmdTb3VyY2VQcm92aWRlcjo6
Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUu
b25lQmFzZWRJbnQoKSk7CisgICAgICAgIHJldHVybiBTb3VyY2VDb2RlKFN0cmluZ1NvdXJjZVBy
b3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pLCBzdGFydFBvc2l0aW9u
Lm1fbGluZS5vbmVCYXNlZEludCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgU291cmNlQ29kZSBT
b3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xv
c2VCcmFjZSwgaW50IGZpcnN0TGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlUHJvdmlkZXIuaAppbmRleCAyZTdmNzE3ODU0Njk1ZjdmNDRmOWI2Y2U2ODNlYjdkNzUy
ZjcyNGFmLi43ZjJlOGQ5OTVmNWI1N2VmZjNjNTA5MDI4OTJmYjU1MzM0MTQ2M2I5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCkBAIC0zMCw3ICsz
MCw2IEBACiAjZGVmaW5lIFNvdXJjZVByb3ZpZGVyX2gKIAogI2luY2x1ZGUgIlNvdXJjZVByb3Zp
ZGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgpAQCAtNDIsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBudWxsSUQgPSAxOwogICAgICAgICAKLSAgICAg
ICAgU291cmNlUHJvdmlkZXIoY29uc3QgVVN0cmluZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24m
IHN0YXJ0UG9zaXRpb24sIFNvdXJjZVByb3ZpZGVyQ2FjaGUqIGNhY2hlID0gMCkKKyAgICAgICAg
U291cmNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3Rh
cnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJDYWNoZSogY2FjaGUgPSAwKQogICAgICAgICAgICAg
OiBtX3VybCh1cmwpCiAgICAgICAgICAgICAsIG1fc3RhcnRQb3NpdGlvbihzdGFydFBvc2l0aW9u
KQogICAgICAgICAgICAgLCBtX3ZhbGlkYXRlZChmYWxzZSkKQEAgLTU3LDExICs1NiwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBkZWxldGUgbV9jYWNoZTsKICAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgVVN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQp
IGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBp
bnQgZW5kKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nSW1wbCogZGF0
YSgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBpbnQgbGVuZ3RoKCkgY29uc3QgPSAwOwog
ICAgICAgICAKLSAgICAgICAgY29uc3QgVVN0cmluZyYgdXJsKCkgeyByZXR1cm4gbV91cmw7IH0K
KyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSB7IHJldHVybiBtX3VybDsgfQogICAgICAgICBU
ZXh0UG9zaXRpb24gc3RhcnRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRQb3NpdGlv
bjsgfQogICAgICAgICBpbnRwdHJfdCBhc0lEKCkKICAgICAgICAgewpAQCAtODAsMjEgKzc5LDIx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
YWNoZVNpemVDaGFuZ2VkKGludCBkZWx0YSkgeyBVTlVTRURfUEFSQU0oZGVsdGEpOyB9CiAKLSAg
ICAgICAgVVN0cmluZyBtX3VybDsKKyAgICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICBUZXh0
UG9zaXRpb24gbV9zdGFydFBvc2l0aW9uOwogICAgICAgICBib29sIG1fdmFsaWRhdGVkOwogICAg
ICAgICBTb3VyY2VQcm92aWRlckNhY2hlKiBtX2NhY2hlOwogICAgICAgICBib29sIG1fY2FjaGVP
d25lZDsKICAgICB9OwogCi0gICAgY2xhc3MgVVN0cmluZ1NvdXJjZVByb3ZpZGVyIDogcHVibGlj
IFNvdXJjZVByb3ZpZGVyIHsKKyAgICBjbGFzcyBTdHJpbmdTb3VyY2VQcm92aWRlciA6IHB1Ymxp
YyBTb3VyY2VQcm92aWRlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxVU3RyaW5nU291cmNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFVTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4
dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nU291cmNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3Np
dGlvbjo6bWluaW11bVBvc2l0aW9uKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVVN0cmluZ1NvdXJjZVByb3ZpZGVyKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0
aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmluZ1NvdXJjZVByb3Zp
ZGVyKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2
aXJ0dWFsIFVTdHJpbmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdCBPVkVSUklE
RQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNv
bnN0IE9WRVJSSURFCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX3NvdXJjZS5zdWJz
dHJpbmdTaGFyaW5nSW1wbChzdGFydCwgZW5kIC0gc3RhcnQpOwogICAgICAgICB9CkBAIC0xMDIs
MTMgKzEwMSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlLmxlbmd0aCgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBV
U3RyaW5nU291cmNlUHJvdmlkZXIoY29uc3QgVVN0cmluZyYgc291cmNlLCBjb25zdCBVU3RyaW5n
JiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbikKKyAgICAgICAgU3RyaW5n
U291cmNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pCiAgICAgICAgICAgICA6IFNvdXJjZVBy
b3ZpZGVyKHVybCwgc3RhcnRQb3NpdGlvbikKICAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNl
KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBVU3RyaW5nIG1fc291cmNlOworICAg
ICAgICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAppbmRl
eCAyZGE4YTJmZjEwNGY5ODkzZjVmODdkOTA3ZjMyMWMwZDJjYWRiZmVkLi5iZjlmOTA0YjBiOWNl
YzQxZGEwZDNmNjAxZTc0NzgxYzAxY2ZjNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaApAQCAtMjcsMTcgKzI3LDE3IEBACiAjaWZuZGVm
IENhbGxJZGVudGlmaWVyX2gKICNkZWZpbmUgQ2FsbElkZW50aWZpZXJfaAogCi0jaW5jbHVkZSA8
cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgQ2FsbElkZW50aWZpZXIgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFVTdHJp
bmcgbV9uYW1lOwotICAgICAgICBVU3RyaW5nIG1fdXJsOworICAgICAgICBTdHJpbmcgbV9uYW1l
OworICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsK
IAogICAgICAgICBDYWxsSWRlbnRpZmllcigpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBDYWxsSWRlbnRpZmllcihjb25z
dCBVU3RyaW5nJiBuYW1lLCBjb25zdCBVU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQorICAg
ICAgICBDYWxsSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXJs
LCBpbnQgbGluZU51bWJlcikKICAgICAgICAgICAgIDogbV9uYW1lKG5hbWUpCiAgICAgICAgICAg
ICAsIG1fdXJsKCF1cmwuaXNOdWxsKCkgPyB1cmwgOiAiIikKICAgICAgICAgICAgICwgbV9saW5l
TnVtYmVyKGxpbmVOdW1iZXIpCkBAIC04Nyw3ICs4Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpDYWxsSWRlbnRpZmllcj4gOiBHZW5l
cmljSGFzaFRyYWl0czxKU0M6OkNhbGxJZGVudGlmaWVyPiB7CiAgICAgICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShKU0M6OkNhbGxJZGVudGlmaWVyJiBzbG90KQogICAgICAg
ICB7Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGwsICZzbG90KSBKU0M6OkNhbGxJZGVudGlmaWVy
KEpTQzo6VVN0cmluZygpLCBKU0M6OlVTdHJpbmcoKSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJnNsb3QpIEpTQzo6Q2Fs
bElkZW50aWZpZXIoU3RyaW5nKCksIFN0cmluZygpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IEpTQzo6Q2FsbElkZW50aWZpZXImIHZhbHVlKQogICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAKaW5kZXggOTJlMzJjNGJhNjY0YTQx
ZjQxYTg4ZTkyOWNhM2YwY2U4YmY3MDc2Zi4uNTFmODcxODk4MzhjNDliNzQwZTIxYjA2ZGRmMWI4
NzRmNjQ1ZjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNw
cApAQCAtMzIsMTggKzMyLDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1QYXNzUmVmUHRyPFBy
b2ZpbGU+IFByb2ZpbGU6OmNyZWF0ZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlk
KQorUGFzc1JlZlB0cjxQcm9maWxlPiBQcm9maWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgdW5zaWduZWQgdWlkKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJvZmlsZSh0aXRs
ZSwgdWlkKSk7CiB9CiAKLVByb2ZpbGU6OlByb2ZpbGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVu
c2lnbmVkIHVpZCkKK1Byb2ZpbGU6OlByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWdu
ZWQgdWlkKQogICAgIDogbV90aXRsZSh0aXRsZSkKICAgICAsIG1fdWlkKHVpZCkKIHsKICAgICAv
LyBGSVhNRTogV2hlbiBtdWx0aS10aHJlYWRpbmcgaXMgc3VwcG9ydGVkIHRoaXMgd2lsbCBiZSBh
IHZlY3RvciBhbmQgY2FsbHMKICAgICAvLyBpbnRvIHRoZSBwcm9maWxlciB3aWxsIG5lZWQgdG8g
a25vdyB3aGljaCB0aHJlYWQgaXQgaXMgZXhlY3V0aW5nIG9uLgotICAgIG1faGVhZCA9IFByb2Zp
bGVOb2RlOjpjcmVhdGUoMCwgQ2FsbElkZW50aWZpZXIoIlRocmVhZF8xIiwgVVN0cmluZygpLCAw
KSwgMCwgMCk7CisgICAgbV9oZWFkID0gUHJvZmlsZU5vZGU6OmNyZWF0ZSgwLCBDYWxsSWRlbnRp
ZmllcigiVGhyZWFkXzEiLCBTdHJpbmcoKSwgMCksIDAsIDApOwogfQogCiBQcm9maWxlOjp+UHJv
ZmlsZSgpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBQcm9maWxlOjpkZWJ1Z1ByaW50RGF0YVNh
bXBsZVN0eWxlKCkgY29uc3QKIAogICAgIHN0ZDo6c29ydChzb3J0ZWRGdW5jdGlvbnMuYmVnaW4o
KSwgc29ydGVkRnVuY3Rpb25zLmVuZCgpLCBmdW5jdGlvbk5hbWVDb3VudFBhaXJDb21wYXJhdG9y
KTsKICAgICBmb3IgKE5hbWVDb3VudFBhaXJWZWN0b3I6Oml0ZXJhdG9yIGl0ID0gc29ydGVkRnVu
Y3Rpb25zLmJlZ2luKCk7IGl0ICE9IHNvcnRlZEZ1bmN0aW9ucy5lbmQoKTsgKytpdCkKLSAgICAg
ICAgZGF0YUxvZygiICAgICAgICAlLTEyZCVzXG4iLCAoKml0KS5zZWNvbmQsIFVTdHJpbmcoKCpp
dCkuZmlyc3QpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkYXRhTG9nKCIgICAgICAgICUtMTJk
JXNcbiIsICgqaXQpLnNlY29uZCwgU3RyaW5nKCgqaXQpLmZpcnN0KS51dGY4KCkuZGF0YSgpKTsK
IAogICAgIGRhdGFMb2coIlxuU29ydCBieSB0b3Agb2Ygc3RhY2ssIHNhbWUgY29sbGFwc2VkICh3
aGVuID49IDUpOlxuIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUu
aAppbmRleCA5NDU1ZTM1OTUwMzJmMmMzZDljNTJhMDgwOTVkNTRhYzk5ODZlYTBlLi5jMWM2OTE5
M2NjMmJjMTE4MzQ5OTA5NTcyY2UzMmIxMzU0ZmMwNThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlLmgKQEAgLTI3LDE4ICsyNywxOCBAQAogI2RlZmluZSBQcm9maWxl
X2gKIAogI2luY2x1ZGUgIlByb2ZpbGVOb2RlLmgiCi0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUHJvZmlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFByb2ZpbGU+IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGU+IGNyZWF0ZShjb25zdCBVU3Ry
aW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJv
ZmlsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CiAgICAgICAg
IHZpcnR1YWwgflByb2ZpbGUoKTsKIAotICAgICAgICBjb25zdCBVU3RyaW5nJiB0aXRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KICAgICAgICAgUHJvZmlsZU5vZGUqIGhlYWQoKSBjb25z
dCB7IHJldHVybiBtX2hlYWQuZ2V0KCk7IH0KICAgICAgICAgdm9pZCBzZXRIZWFkKFBhc3NSZWZQ
dHI8UHJvZmlsZU5vZGU+IGhlYWQpIHsgbV9oZWFkID0gaGVhZDsgfQogICAgICAgICBkb3VibGUg
dG90YWxUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkLT50b3RhbFRpbWUoKTsgfQpAQCAtNTYs
MTMgKzU2LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIFByb2ZpbGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CisgICAg
ICAgIFByb2ZpbGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgcmVtb3ZlUHJvZmlsZVN0YXJ0KCk7CiAgICAgICAgIHZvaWQg
cmVtb3ZlUHJvZmlsZUVuZCgpOwogIAotICAgICAgICBVU3RyaW5nIG1fdGl0bGU7CisgICAgICAg
IFN0cmluZyBtX3RpdGxlOwogICAgICAgICBSZWZQdHI8UHJvZmlsZU5vZGU+IG1faGVhZDsKICAg
ICAgICAgdW5zaWduZWQgaW50IG1fdWlkOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKaW5kZXggNWRiMzhiY2E4ZDU2
YTVlZjAxZDI4YTVmOTQyYjBmZDkzMDI3ZmJlMi4uMDk4NzdkM2M4YzdmNDg3YTIwN2Y5MWE3OWZi
M2IxYjhjMTg5NTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlR2VuZXJhdG9yLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBzdGF0aWMgY29uc3QgY2hhciogTm9uSlNFeGVjdXRpb24gPSAiKGlkbGUpIjsKIAotUGFz
c1JlZlB0cjxQcm9maWxlR2VuZXJhdG9yPiBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQorUGFzc1JlZlB0
cjxQcm9maWxlR2VuZXJhdG9yPiBQcm9maWxlR2VuZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQcm9maWxlR2VuZXJhdG9yKGV4ZWMsIHRpdGxlLCB1aWQpKTsKIH0KIAotUHJv
ZmlsZUdlbmVyYXRvcjo6UHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVT
dHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCitQcm9maWxlR2VuZXJhdG9yOjpQcm9maWxlR2Vu
ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlk
KQogICAgIDogbV9vcmlnaW4oZXhlYyA/IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSA6IDAp
CiAgICAgLCBtX3Byb2ZpbGVHcm91cChleGVjID8gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5wcm9maWxlR3JvdXAoKSA6IDApCiB7CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgUHJvZmlsZUdl
bmVyYXRvcjo6YWRkUGFyZW50Rm9yQ29uc29sZVN0YXJ0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBpbnQgbGluZU51bWJlcjsKICAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICBVU3RyaW5nIHNv
dXJjZVVSTDsKKyAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIEpTVmFsdWUgZnVuY3Rpb247CiAK
ICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoZXhlYywgbGluZU51
bWJlciwgc291cmNlSUQsIHNvdXJjZVVSTCwgZnVuY3Rpb24pOwpAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmFkZFBhcmVudEZvckNvbnNvbGVTdGFydChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgbV9oZWFkLT5pbnNlcnROb2RlKG1fY3VycmVudE5vZGUuZ2V0KCkpOwogfQog
Ci1jb25zdCBVU3RyaW5nJiBQcm9maWxlR2VuZXJhdG9yOjp0aXRsZSgpIGNvbnN0Citjb25zdCBT
dHJpbmcmIFByb2ZpbGVHZW5lcmF0b3I6OnRpdGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
cm9maWxlLT50aXRsZSgpOwogfQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgUHJvZmlsZUdlbmVy
YXRvcjo6c3RvcFByb2ZpbGluZygpCiAgICAgbV9jdXJyZW50Tm9kZSA9IG1fY3VycmVudE5vZGUt
PnBhcmVudCgpOwogCiAgICBpZiAoZG91YmxlIGhlYWRTZWxmVGltZSA9IG1faGVhZC0+c2VsZlRp
bWUoKSkgewotICAgICAgICBSZWZQdHI8UHJvZmlsZU5vZGU+IGlkbGVOb2RlID0gUHJvZmlsZU5v
ZGU6OmNyZWF0ZSgwLCBDYWxsSWRlbnRpZmllcihOb25KU0V4ZWN1dGlvbiwgVVN0cmluZygpLCAw
KSwgbV9oZWFkLmdldCgpLCBtX2hlYWQuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UHJvZmlsZU5v
ZGU+IGlkbGVOb2RlID0gUHJvZmlsZU5vZGU6OmNyZWF0ZSgwLCBDYWxsSWRlbnRpZmllcihOb25K
U0V4ZWN1dGlvbiwgU3RyaW5nKCksIDApLCBtX2hlYWQuZ2V0KCksIG1faGVhZC5nZXQoKSk7CiAK
ICAgICAgICAgaWRsZU5vZGUtPnNldFRvdGFsVGltZShoZWFkU2VsZlRpbWUpOwogICAgICAgICBp
ZGxlTm9kZS0+c2V0U2VsZlRpbWUoaGVhZFNlbGZUaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCmluZGV4IDhjOGI4MTczMTUzNTYx
OWQxNDIzM2RmZjBmZGI3ZDFiMjI4ODBhZGYuLjQwY2M4ZGUwMWQ1NGJmZTk3Mzk3MTdkODU5MTg4
Mzc1ZTljN2RjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVHZW5lcmF0b3IuaApAQCAtMzcsMTUgKzM3LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIFByb2ZpbGU7CiAgICAgY2xhc3MgUHJv
ZmlsZU5vZGU7Ci0gICAgY2xhc3MgVVN0cmluZzsKICAgICBzdHJ1Y3QgQ2FsbElkZW50aWZpZXI7
ICAgIAogCiAgICAgY2xhc3MgUHJvZmlsZUdlbmVyYXRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFBy
b2ZpbGVHZW5lcmF0b3I+ICB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQcm9maWxlR2VuZXJhdG9yPiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0
bGUsIHVuc2lnbmVkIHVpZCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5l
cmF0b3I+IGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2ln
bmVkIHVpZCk7CiAKICAgICAgICAgLy8gTWVtYmVycwotICAgICAgICBjb25zdCBVU3RyaW5nJiB0
aXRsZSgpIGNvbnN0OworICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUoKSBjb25zdDsK
ICAgICAgICAgUGFzc1JlZlB0cjxQcm9maWxlPiBwcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9maWxlOyB9CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbjsgfQogICAgICAgICB1bnNpZ25lZCBwcm9maWxlR3JvdXAoKSBjb25zdCB7IHJl
dHVybiBtX3Byb2ZpbGVHcm91cDsgfQpAQCAtNjIsNyArNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdHlwZWRlZiB2b2lkIChQcm9maWxlR2VuZXJhdG9yOjoqUHJvZmlsZUZ1bmN0aW9u
KShFeGVjU3RhdGUqIGNhbGxlck9ySGFuZGxlckNhbGxGcmFtZSwgY29uc3QgQ2FsbElkZW50aWZp
ZXImIGNhbGxJZGVudGlmaWVyKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2ZpbGVHZW5l
cmF0b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7Cisg
ICAgICAgIFByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIHRp
dGxlLCB1bnNpZ25lZCB1aWQpOwogICAgICAgICB2b2lkIGFkZFBhcmVudEZvckNvbnNvbGVTdGFy
dChFeGVjU3RhdGUqKTsKIAogICAgICAgICB2b2lkIHJlbW92ZVByb2ZpbGVTdGFydCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuaAppbmRleCBmZmU3YjZm
OWQwZTM0Y2FmM2QzY2YyODI0MjJmMzQyYjVjN2QxZTkxLi4yNjAwMGE4MjcxMzM3MmUxZWE2YTZj
NjE3M2MwNDVmYzM0NzJiM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZU5vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZU5vZGUuaApAQCAtNjQsOCArNjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ly8gQ2FsbElkZW50aWZpZXIgbWVtYmVycwogICAgICAgICBFeGVjU3RhdGUqIGNhbGxlckNhbGxG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVyQ2FsbEZyYW1lOyB9CiAgICAgICAgIGNvbnN0
IENhbGxJZGVudGlmaWVyJiBjYWxsSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbElk
ZW50aWZpZXI7IH0KLSAgICAgICAgY29uc3QgVVN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWxsSWRlbnRpZmllci5tX25hbWU7IH0KLSAgICAgICAgY29uc3QgVVN0cmlu
ZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsSWRlbnRpZmllci5tX3VybDsgfQorICAgICAg
ICBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbElkZW50
aWZpZXIubV9uYW1lOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsSWRlbnRpZmllci5tX3VybDsgfQogICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsSWRlbnRpZmllci5tX2xpbmVOdW1iZXI7IH0KIAogICAg
ICAgICAvLyBSZWxhdGlvbnNoaXBzCkBAIC0xNDYsOCArMTQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBzZWxmVGltZUFzY2VuZGluZ0NvbXBhcmF0b3Io
Y29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYSwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYg
YikgeyByZXR1cm4gYS0+c2VsZlRpbWUoKSA8IGItPnNlbGZUaW1lKCk7IH0KICAgICAgICAgc3Rh
dGljIGlubGluZSBib29sIGNhbGxzRGVzY2VuZGluZ0NvbXBhcmF0b3IoY29uc3QgUmVmUHRyPFBy
b2ZpbGVOb2RlPiYgYSwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYikgeyByZXR1cm4gYS0+
bnVtYmVyT2ZDYWxscygpID4gYi0+bnVtYmVyT2ZDYWxscygpOyB9CiAgICAgICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBjYWxsc0FzY2VuZGluZ0NvbXBhcmF0b3IoY29uc3QgUmVmUHRyPFByb2ZpbGVO
b2RlPiYgYSwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYikgeyByZXR1cm4gYS0+bnVtYmVy
T2ZDYWxscygpIDwgYi0+bnVtYmVyT2ZDYWxscygpOyB9Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBmdW5jdGlvbk5hbWVEZXNjZW5kaW5nQ29tcGFyYXRvcihjb25zdCBSZWZQdHI8UHJvZmls
ZU5vZGU+JiBhLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBiKSB7IHJldHVybiBhLT5mdW5j
dGlvbk5hbWUoKSA+IGItPmZ1bmN0aW9uTmFtZSgpOyB9Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBmdW5jdGlvbk5hbWVBc2NlbmRpbmdDb21wYXJhdG9yKGNvbnN0IFJlZlB0cjxQcm9maWxl
Tm9kZT4mIGEsIGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGIpIHsgcmV0dXJuIGEtPmZ1bmN0
aW9uTmFtZSgpIDwgYi0+ZnVuY3Rpb25OYW1lKCk7IH0KKyAgICAgICAgc3RhdGljIGlubGluZSBi
b29sIGZ1bmN0aW9uTmFtZURlc2NlbmRpbmdDb21wYXJhdG9yKGNvbnN0IFJlZlB0cjxQcm9maWxl
Tm9kZT4mIGEsIGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGIpIHsgcmV0dXJuIGNvZGVQb2lu
dENvbXBhcmVMZXNzVGhhbihiLT5mdW5jdGlvbk5hbWUoKSwgYS0+ZnVuY3Rpb25OYW1lKCkpOyB9
CisgICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBmdW5jdGlvbk5hbWVBc2NlbmRpbmdDb21wYXJh
dG9yKGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGEsIGNvbnN0IFJlZlB0cjxQcm9maWxlTm9k
ZT4mIGIpIHsgcmV0dXJuIGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihhLT5mdW5jdGlvbk5hbWUo
KSwgYi0+ZnVuY3Rpb25OYW1lKCkpOyB9CiAKICAgICAgICAgRXhlY1N0YXRlKiBtX2NhbGxlckNh
bGxGcmFtZTsKICAgICAgICAgQ2FsbElkZW50aWZpZXIgbV9jYWxsSWRlbnRpZmllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuY3BwCmluZGV4IDcyMzM5M2I1YzY4
YmE2YjNiNDM1MzdjZGNlZTZlNTIyZGRiYzU5ZjUuLjk2NDJhMDY4NDc3N2IzYjRhMzMxYjBkMmJk
MjIzZGQzY2Q3Njc3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyLmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlByb2ZpbGUuaCIKICNpbmNsdWRl
ICJQcm9maWxlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiUHJvZmlsZU5vZGUuaCIKLSNpbmNsdWRl
ICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTQ4LDcgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIEdsb2JhbENvZGVFeGVj
dXRpb24gPSAiKHByb2dyYW0pIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBBbm9ueW1vdXNGdW5jdGlv
biA9ICIoYW5vbnltb3VzIGZ1bmN0aW9uKSI7CiBzdGF0aWMgdW5zaWduZWQgUHJvZmlsZXNVSUQg
PSAwOwogCi1zdGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXJGcm9tRnVu
Y3Rpb25JbXAoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBVU3RyaW5nJiBkZWZhdWx0U291
cmNlVVJMLCBpbnQgZGVmYXVsdExpbmVOdW1iZXIpOworc3RhdGljIENhbGxJZGVudGlmaWVyIGNy
ZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCBpbnQgZGVmYXVsdExpbmVOdW1iZXIpOwog
CiBQcm9maWxlciogUHJvZmlsZXI6OnNfc2hhcmVkUHJvZmlsZXIgPSAwOwogCkBAIC01OSw3ICs1
OCw3IEBAIFByb2ZpbGVyKiBQcm9maWxlcjo6cHJvZmlsZXIoKQogICAgIHJldHVybiBzX3NoYXJl
ZFByb2ZpbGVyOwogfSAgIAogCi12b2lkIFByb2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHRpdGxlKQordm9pZCBQcm9maWxlcjo6c3RhcnRQcm9m
aWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIEFTU0VS
VF9BUkcodGl0bGUsICF0aXRsZS5pc051bGwoKSk7CiAKQEAgLTc4LDcgKzc3LDcgQEAgdm9pZCBQ
cm9maWxlcjo6c3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiB0
aXRsZSkKICAgICBtX2N1cnJlbnRQcm9maWxlcy5hcHBlbmQocHJvZmlsZUdlbmVyYXRvcik7CiB9
CiAKLVBhc3NSZWZQdHI8UHJvZmlsZT4gUHJvZmlsZXI6OnN0b3BQcm9maWxpbmcoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBVU3RyaW5nJiB0aXRsZSkKK1Bhc3NSZWZQdHI8UHJvZmlsZT4gUHJvZmls
ZXI6OnN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewogICAgIEpTR2xvYmFsT2JqZWN0KiBvcmlnaW4gPSBleGVjID8gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpIDogMDsKICAgICBmb3IgKHB0cmRpZmZfdCBpID0gbV9jdXJyZW50UHJvZmlsZXMu
c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKQEAgLTEyNiw3ICsxMjUsNyBAQCB2b2lkIFByb2Zp
bGVyOjp3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwgSlNWYWx1ZSBmdW5j
dGlvbikKICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9Qcm9maWxlcyhjYWxsZXJDYWxsRnJhbWUsIG1f
Y3VycmVudFByb2ZpbGVzLCAmUHJvZmlsZUdlbmVyYXRvcjo6d2lsbEV4ZWN1dGUsIGNyZWF0ZUNh
bGxJZGVudGlmaWVyKGNhbGxlckNhbGxGcmFtZSwgZnVuY3Rpb24sICIiLCAwKSwgY2FsbGVyQ2Fs
bEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsKIH0KIAotdm9p
ZCBQcm9maWxlcjo6d2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcikKK3ZvaWQgUHJvZmls
ZXI6OndpbGxFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcikKIHsKICAgICBBU1NFUlQoIW1fY3Vy
cmVudFByb2ZpbGVzLmlzRW1wdHkoKSk7CiAKQEAgLTE0Miw3ICsxNDEsNyBAQCB2b2lkIFByb2Zp
bGVyOjpkaWRFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBKU1ZhbHVlIGZ1bmN0
aW9uKQogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub1Byb2ZpbGVzKGNhbGxlckNhbGxGcmFtZSwgbV9j
dXJyZW50UHJvZmlsZXMsICZQcm9maWxlR2VuZXJhdG9yOjpkaWRFeGVjdXRlLCBjcmVhdGVDYWxs
SWRlbnRpZmllcihjYWxsZXJDYWxsRnJhbWUsIGZ1bmN0aW9uLCAiIiwgMCksIGNhbGxlckNhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSk7CiB9CiAKLXZvaWQg
UHJvZmlsZXI6OmRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IFVT
dHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcikKK3ZvaWQgUHJvZmlsZXI6
OmRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKQogewogICAgIEFTU0VSVCghbV9jdXJyZW50
UHJvZmlsZXMuaXNFbXB0eSgpKTsKIApAQCAtMTU2LDcgKzE1NSw3IEBAIHZvaWQgUHJvZmlsZXI6
OmV4Y2VwdGlvblVud2luZChFeGVjU3RhdGUqIGhhbmRsZXJDYWxsRnJhbWUpCiAgICAgZGlzcGF0
Y2hGdW5jdGlvblRvUHJvZmlsZXMoaGFuZGxlckNhbGxGcmFtZSwgbV9jdXJyZW50UHJvZmlsZXMs
ICZQcm9maWxlR2VuZXJhdG9yOjpleGNlcHRpb25VbndpbmQsIGNyZWF0ZUNhbGxJZGVudGlmaWVy
KGhhbmRsZXJDYWxsRnJhbWUsIEpTVmFsdWUoKSwgIiIsIDApLCBoYW5kbGVyQ2FsbEZyYW1lLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsKIH0KIAotQ2FsbElkZW50aWZp
ZXIgUHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBmdW5jdGlvblZhbHVlLCBjb25zdCBVU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCBpbnQgZGVm
YXVsdExpbmVOdW1iZXIpCitDYWxsSWRlbnRpZmllciBQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50
aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgZGVmYXVsdFNvdXJjZVVSTCwgaW50IGRlZmF1bHRMaW5lTnVtYmVyKQogewogICAgIGlmICgh
ZnVuY3Rpb25WYWx1ZSkKICAgICAgICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKEdsb2JhbENvZGVF
eGVjdXRpb24sIGRlZmF1bHRTb3VyY2VVUkwsIGRlZmF1bHRMaW5lTnVtYmVyKTsKQEAgLTE2NCwx
MiArMTYzLDEyIEBAIENhbGxJZGVudGlmaWVyIFByb2ZpbGVyOjpjcmVhdGVDYWxsSWRlbnRpZmll
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb25WCiAgICAgICAgIHJldHVybiBDYWxs
SWRlbnRpZmllcigiKHVua25vd24pIiwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVOdW1i
ZXIpOwogICAgIGlmIChhc09iamVjdChmdW5jdGlvblZhbHVlKS0+aW5oZXJpdHMoJkpTRnVuY3Rp
b246OnNfaW5mbykgfHwgYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSktPmluaGVyaXRzKCZJbnRlcm5h
bEZ1bmN0aW9uOjpzX2luZm8pKQogICAgICAgICByZXR1cm4gY3JlYXRlQ2FsbElkZW50aWZpZXJG
cm9tRnVuY3Rpb25JbXAoZXhlYywgYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSksIGRlZmF1bHRTb3Vy
Y2VVUkwsIGRlZmF1bHRMaW5lTnVtYmVyKTsKLSAgICByZXR1cm4gQ2FsbElkZW50aWZpZXIobWFr
ZVVTdHJpbmcoIigiLCBhc09iamVjdChmdW5jdGlvblZhbHVlKS0+bWV0aG9kVGFibGUoKS0+Y2xh
c3NOYW1lKGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpKSwgIiBvYmplY3QpIiksIGRlZmF1bHRTb3Vy
Y2VVUkwsIGRlZmF1bHRMaW5lTnVtYmVyKTsKKyAgICByZXR1cm4gQ2FsbElkZW50aWZpZXIobWFr
ZVN0cmluZygiKCIsIGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpLT5tZXRob2RUYWJsZSgpLT5jbGFz
c05hbWUoYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSkpLCAiIG9iamVjdCkiKSwgZGVmYXVsdFNvdXJj
ZVVSTCwgZGVmYXVsdExpbmVOdW1iZXIpOwogfQogCi1DYWxsSWRlbnRpZmllciBjcmVhdGVDYWxs
SWRlbnRpZmllckZyb21GdW5jdGlvbkltcChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBmdW5j
dGlvbiwgY29uc3QgVVN0cmluZyYgZGVmYXVsdFNvdXJjZVVSTCwgaW50IGRlZmF1bHRMaW5lTnVt
YmVyKQorQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXJGcm9tRnVuY3Rpb25JbXAo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZnVuY3Rpb24sIGNvbnN0IFN0cmluZyYgZGVmYXVs
dFNvdXJjZVVSTCwgaW50IGRlZmF1bHRMaW5lTnVtYmVyKQogewotICAgIGNvbnN0IFVTdHJpbmcm
IG5hbWUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoZXhlYywgZnVuY3Rpb24pOworICAgIGNv
bnN0IFN0cmluZyYgbmFtZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShleGVjLCBmdW5jdGlv
bik7CiAgICAgSlNGdW5jdGlvbioganNGdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlv
bio+KGZ1bmN0aW9uKTsKICAgICBpZiAoanNGdW5jdGlvbiAmJiAhanNGdW5jdGlvbi0+aXNIb3N0
RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKG5hbWUuaXNFbXB0eSgp
ID8gQW5vbnltb3VzRnVuY3Rpb24gOiBuYW1lLCBqc0Z1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+
c291cmNlVVJMKCksIGpzRnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5saW5lTm8oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5oCmluZGV4IDg3NzA2NWVjYWViY2Ew
Y2U1Zjc3YTVlNDNhOGMxZWM5YTY3MGFiY2IuLjY4NTI0NTdjN2RjOGYwN2QzY2FjMzMzYzg1Nzdj
N2EyYWU3NTE5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5o
CkBAIC00MiwyMyArNDIsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNPYmplY3Q7
CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBQcm9maWxlR2VuZXJhdG9yOwotICAgIGNs
YXNzIFVTdHJpbmc7Ci0gICAgc3RydWN0IENhbGxJZGVudGlmaWVyOyAgICAKKyAgICBzdHJ1Y3Qg
Q2FsbElkZW50aWZpZXI7CiAKICAgICBjbGFzcyBQcm9maWxlciB7CiAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFByb2ZpbGVyKiBwcm9maWxlcigpOyAKLSAgICAgICAgc3RhdGljIENhbGxJZGVudGlm
aWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3Qg
VVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgICAgIHN0YXRpYyBDYWxs
SWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CiAKLSAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3Ry
aW5nJiB0aXRsZSk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8UHJvZmls
ZT4gc3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRQcm9maWxpbmcoRXhlY1N0YXRlKiwgY29u
c3QgV1RGOjpTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1Jl
ZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5n
JiB0aXRsZSk7CiAgICAgICAgIHZvaWQgc3RvcFByb2ZpbGluZyhKU0dsb2JhbE9iamVjdCopOwog
CiAgICAgICAgIHZvaWQgd2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIEpT
VmFsdWUgZnVuY3Rpb24pOwotICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSogY2Fs
bGVyQ2FsbEZyYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVO
dW1iZXIpOworICAgICAgICB2b2lkIHdpbGxFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZy
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVy
KTsKICAgICAgICAgdm9pZCBkaWRFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBK
U1ZhbHVlIGZ1bmN0aW9uKTsKLSAgICAgICAgdm9pZCBkaWRFeGVjdXRlKEV4ZWNTdGF0ZSogY2Fs
bGVyQ2FsbEZyYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVO
dW1iZXIpOworICAgICAgICB2b2lkIGRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJh
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIp
OwogCiAgICAgICAgIHZvaWQgZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxG
cmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmlu
ZGV4IDI1NzkzNzY1YmIwMTQ3OWU2ODg1YWRkNmVhZTY1YmViZDU4M2M0YWUuLmZlNzlmNzQwZTJj
MDBmYmFlZWFiOGYwY2UyNmFkZDA0Nzc1NmQzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEFyZ3VtZW50czo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IFVTdHJpbmc6Om51bWJlcihpKSksIHNsb3QpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpu
dW1iZXIoaSkpLCBzbG90KTsKIH0KICAgICAKIHZvaWQgQXJndW1lbnRzOjpjcmVhdGVTdHJpY3RN
b2RlQ2FsbGVySWZOZWNlc3NhcnkoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTg2LDcgKzE4Niw3IEBA
IHZvaWQgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganND
YXN0PEFyZ3VtZW50cyo+KG9iamVjdCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRo
aXNPYmplY3QtPmQtPm51bUFyZ3VtZW50czsgKytpKSB7CiAgICAgICAgIGlmICghdGhpc09iamVj
dC0+ZC0+ZGVsZXRlZEFyZ3VtZW50cyB8fCAhdGhpc09iamVjdC0+ZC0+ZGVsZXRlZEFyZ3VtZW50
c1tpXSkKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0
cmluZzo6bnVtYmVyKGkpKSk7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlm
aWVyKGV4ZWMsIFN0cmluZzo6bnVtYmVyKGkpKSk7CiAgICAgfQogICAgIGlmIChtb2RlID09IElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpIHsKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBBcmd1
bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVmFsdWUgdmEKICAgICB9CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzaG91bGRU
aHJvdyk7Ci0gICAgSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4
ZWMsIFVTdHJpbmc6Om51bWJlcihpKSksIHZhbHVlLCBzbG90KTsKKyAgICBKU09iamVjdDo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpudW1iZXIoaSkpLCB2
YWx1ZSwgc2xvdCk7CiB9CiAKIHZvaWQgQXJndW1lbnRzOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTI1NSw3ICsyNTUsNyBAQCBib29sIEFyZ3VtZW50czo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBpKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmc6Om51bWJl
cihpKSkpOworICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
ZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmc6Om51bWJlcihpKSkpOwogfQogCiBib29sIEFy
Z3VtZW50czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGE5N2NmODJkZTlmOTZkNTFjZWUxYjAxYjhm
ZmI1MmFmMWY1ODgxZTIuLmU0N2MzZjQ3NjgxNWY0MjBjODg4ZTE2ZDRhNzFmNTFkOTRhMzMzOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKQEAgLTMwMCw3ICszMDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoZWxlbWVudC5p
c1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAg
ICAgICBVU3RyaW5nIHN0ciA9IGVsZW1lbnQudG9VU3RyaW5nKGV4ZWMpOworICAgICAgICBTdHJp
bmcgc3RyID0gZWxlbWVudC50b1dURlN0cmluZyhleGVjKTsKICAgICAgICAgc3RyQnVmZmVyW2td
ID0gc3RyLmltcGwoKTsKICAgICAgICAgdG90YWxTaXplICs9IHN0ci5sZW5ndGgoKTsKICAgICAg
ICAgYWxsU3RyaW5nczhCaXQgPSBhbGxTdHJpbmdzOEJpdCAmJiBzdHIuaXM4Qml0KCk7CkBAIC0z
MjgsNyArMzI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5k
KHJlcC0+Y2hhcmFjdGVyczgoKSwgcmVwLT5sZW5ndGgoKSk7CiAgICAgICAgIH0KICAgICAgICAg
QVNTRVJUKGJ1ZmZlci5zaXplKCkgPT0gdG90YWxTaXplKTsKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nOjphZG9wdChidWZmZXIpKSk7ICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJpbmc6
OmFkb3B0KGJ1ZmZlcikpKTsKICAgICB9CiAKICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsKQEAg
LTM0Myw3ICszNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChy
ZXAtPmNoYXJhY3RlcnMoKSwgcmVwLT5sZW5ndGgoKSk7CiAgICAgfQogICAgIEFTU0VSVChidWZm
ZXIuc2l6ZSgpID09IHRvdGFsU2l6ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLCBVU3RyaW5nOjphZG9wdChidWZmZXIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZlcikpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKQEAgLTM2Miw3ICszNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAot
ICAgIFVTdHJpbmcgc2VwYXJhdG9yKCIsIik7CisgICAgU3RyaW5nIHNlcGFyYXRvcigiLCIsIFN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIEpTU3RyaW5nSm9pbmVyIHN0cmluZ0pv
aW5lcihzZXBhcmF0b3IsIGxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGxl
bmd0aDsgaysrKSB7CiAgICAgICAgIEpTVmFsdWUgZWxlbWVudCA9IHRoaXNPYmotPmdldChleGVj
LCBrKTsKQEAgLTM3MywxMyArMzczLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBKU1ZhbHVlIGNvbnZlcnNpb25GdW5jdGlvbiA9IG8tPmdldChleGVjLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudG9Mb2NhbGVTdHJpbmcpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgICAgICBVU3RyaW5nIHN0cjsKKyAgICAgICAgICAgIFN0cmluZyBzdHI7
CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAg
ICAgICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKQotICAgICAgICAgICAgICAgIHN0
ciA9IGNhbGwoZXhlYywgY29udmVyc2lvbkZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGVs
ZW1lbnQsIGV4ZWMtPmVtcHR5TGlzdCgpKS50b1VTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICAg
ICAgc3RyID0gY2FsbChleGVjLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgZWxlbWVudCwgZXhlYy0+ZW1wdHlMaXN0KCkpLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN0ciA9IGVsZW1lbnQudG9VU3RyaW5nKGV4ZWMp
OworICAgICAgICAgICAgICAgIHN0ciA9IGVsZW1lbnQudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAg
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIHN0cmluZ0pvaW5l
ci5hcHBlbmQoc3RyKTsKQEAgLTQwMCwxMSArNDAwLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoSlNW
YWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5WYWx1ZSk7CiAKLSAgICBVU3Ry
aW5nIHNlcGFyYXRvcjsKKyAgICBTdHJpbmcgc2VwYXJhdG9yOwogICAgIGlmICghZXhlYy0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgc2VwYXJhdG9yID0gZXhlYy0+YXJndW1l
bnQoMCkudG9VU3RyaW5nKGV4ZWMpOworICAgICAgICBzZXBhcmF0b3IgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoc2VwYXJhdG9yLmlzTnVsbCgpKQotICAg
ICAgICBzZXBhcmF0b3IgPSBVU3RyaW5nKCIsIik7CisgICAgICAgIHNlcGFyYXRvciA9IFN0cmlu
ZygiLCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgSlNTdHJpbmdKb2lu
ZXIgc3RyaW5nSm9pbmVyKHNlcGFyYXRvciwgbGVuZ3RoKTsKIApAQCAtNDE4LDE4ICs0MTgsMTgg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0
YXRlKiBleGVjKQogCiAgICAgICAgICAgICBKU1ZhbHVlIGVsZW1lbnQgPSBhcnJheS0+Z2V0SW5k
ZXgoayk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSkKLSAg
ICAgICAgICAgICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKGVsZW1lbnQudG9VU3RyaW5nSW5saW5l
KGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKGVsZW1lbnQudG9X
VEZTdHJpbmdJbmxpbmUoZXhlYykpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHN0cmluZ0pvaW5lci5hcHBlbmQoVVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdK
b2luZXIuYXBwZW5kKFN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoOyBr
IDwgbGVuZ3RoOyBrKyspIHsKICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0gdGhpc09iai0+Z2V0
KGV4ZWMsIGspOwogICAgICAgICBpZiAoIWVsZW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSkKLSAg
ICAgICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoZWxlbWVudC50b1VTdHJpbmdJbmxpbmUoZXhl
YykpOworICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChlbGVtZW50LnRvV1RGU3RyaW5n
SW5saW5lKGV4ZWMpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFw
cGVuZChVU3RyaW5nKCkpOworICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChTdHJpbmco
KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdKb2luZXIuYnVp
bGQoZXhlYykpOwpAQCAtNTIwLDcgKzUyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHRoaXNP
YmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoICsgbiwg
ZXhlYy0+YXJndW1lbnQobiksIHRydWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUo
ZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8
aW50NjRfdD4obikpLnRvVVN0cmluZyhleGVjKSk7CisgICAgICAgICAgICBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZShleGVjLCBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBz
dGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9XVEZTdHJpbmcoZXhlYykpOwogICAgICAgICAgICAg
dGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZXhlYy0+YXJndW1lbnQobiksIHNsb3QpOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKQEAgLTY2MSw3ICs2NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICAg
ICAgbC5hcHBlbmQobWluT2JqKTsKICAgICAgICAgICAgICAgICBjb21wYXJlUmVzdWx0ID0gY2Fs
bChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBsKS50
b051bWJlcihleGVjKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNvbXBh
cmVSZXN1bHQgPSAoak9iai50b1VTdHJpbmdJbmxpbmUoZXhlYykgPCBtaW5PYmoudG9VU3RyaW5n
SW5saW5lKGV4ZWMpKSA/IC0xIDogMTsKKyAgICAgICAgICAgICAgICBjb21wYXJlUmVzdWx0ID0g
Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGpPYmoudG9XVEZTdHJpbmdJbmxpbmUoZXhlYyksIG1p
bk9iai50b1dURlN0cmluZ0lubGluZShleGVjKSkgPyAtMSA6IDE7CiAKICAgICAgICAgICAgIGlm
IChjb21wYXJlUmVzdWx0IDwgMCkgewogICAgICAgICAgICAgICAgIHRoZW1pbiA9IGo7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmluZGV4IGIwYWRhYjMyY2ZmNGM0
Yjg5YjhhOTYwMGQ5NjhkYWVlZTNjY2Y1ZmEuLjRjNzJmM2VkMTBlMGU1MzIxYjcyM2NiNzI5NTI5
ZmU3MjQxMzYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5o
CkBAIC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIHZvaWQg
KCpHZXRQcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgICAgICBHZXRQcm9wZXJ0eU5h
bWVzRnVuY3Rpb25QdHIgZ2V0UHJvcGVydHlOYW1lczsKIAotICAgICAgICB0eXBlZGVmIFVTdHJp
bmcgKCpDbGFzc05hbWVGdW5jdGlvblB0cikoY29uc3QgSlNPYmplY3QqKTsKKyAgICAgICAgdHlw
ZWRlZiBTdHJpbmcgKCpDbGFzc05hbWVGdW5jdGlvblB0cikoY29uc3QgSlNPYmplY3QqKTsKICAg
ICAgICAgQ2xhc3NOYW1lRnVuY3Rpb25QdHIgY2xhc3NOYW1lOwogCiAgICAgICAgIHR5cGVkZWYg
Ym9vbCAoKkhhc0luc3RhbmNlRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29udmVyc2lvbi5jcHAKaW5kZXggNDc4Mzk4MTdmZjllZDFhYWVhMjAxODM0MjZkOGIyYWYyOTRk
NTk0ZC4uOTMzMTU0MWE4NDg2YjUzNGVhNGU1NmNiY2VkY2MwNzUzNmYyNDViMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcApAQCAtMjUs
MTAgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGF0ZUNvbnZlcnNp
b24uaCIKIAotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIE9TKFdJTkRP
V1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGFwcGVuZE51
bWJlcjwyPihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgdmFsdWUpCiAgICAgYnVpbGRlci5h
cHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4oJzAnICsgdmFsdWUgJSAxMCkpOwogfQogCi1VU3RyaW5n
IGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1h
dCBmb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KQorU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0
IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXNVVENW
YXJpYW50KQogewogICAgIGJvb2wgYXBwZW5kRGF0ZSA9IGZvcm1hdCAmIERhdGVUaW1lRm9ybWF0
RGF0ZTsKICAgICBib29sIGFwcGVuZFRpbWUgPSBmb3JtYXQgJiBEYXRlVGltZUZvcm1hdFRpbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaAppbmRl
eCBmZDFhN2ViMzU4OWJlM2I0MzZmYjMxNjM1NzVkNzlkNDVmMmI4YjIyLi44ZWE0YzE3YWRiZDJh
YmEzNDM4NjQ1YzIwMGIxN2NmMmM5NWNiZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpbmNsdWRl
IDx3dGYvR3JlZ29yaWFuRGF0ZVRpbWUuaD4KIAotbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2Ug
V1RGIHsKK2NsYXNzIFN0cmluZzsKK30gLy8gbmFtZXNwYWNlIFdURgogCi1jbGFzcyBVU3RyaW5n
OworbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gRGF0ZVRpbWVGb3JtYXQgewogICAgIERhdGVUaW1l
Rm9ybWF0RGF0ZSA9IDEsCkBAIC0zNyw3ICszOSw3IEBAIGVudW0gRGF0ZVRpbWVGb3JtYXQgewog
ICAgIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUgPSBEYXRlVGltZUZvcm1hdERhdGUgfCBEYXRl
VGltZUZvcm1hdFRpbWUKIH07CiAKLVVTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUmLCBEYXRlVGltZUZvcm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQpOworV1RGOjpT
dHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmLCBEYXRlVGltZUZv
cm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCAzNjNl
ZWMwM2E5ZjEyOTdiNzg1YTE1N2UwNTA0YmIwNzdlMTUwZjczLi44Y2ZkNDRlZWY4NzE0NDEyOWI3
NjBmMDZkYjk3MjgyNDg4ZTgzNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIGVudW0gTG9jYWxlRGF0
ZVRpbWVGb3JtYXQgeyBMb2NhbGVEYXRlQW5kVGltZSwgTG9jYWxlRGF0ZSwgTG9jYWxlVGltZSB9
OwogLy8gRklYTUU6IFNpbmNlIHRoaXMgaXMgc3VwZXJpb3IgdG8gdGhlIHN0cmZ0aW1lLWJhc2Vk
IHZlcnNpb24sIHdoeSBsaW1pdCB0aGlzIHRvIFBMQVRGT1JNKE1BQyk/CiAvLyBJbnN0ZWFkIHdl
IHNob3VsZCBjb25zaWRlciB1c2luZyB0aGlzIHdoZW5ldmVyIFVTRShDRikgaXMgdHJ1ZS4KIAot
c3RhdGljIENGRGF0ZUZvcm1hdHRlclN0eWxlIHN0eWxlRnJvbUFyZ1N0cmluZyhjb25zdCBVU3Ry
aW5nJiBzdHJpbmcsIENGRGF0ZUZvcm1hdHRlclN0eWxlIGRlZmF1bHRTdHlsZSkKK3N0YXRpYyBD
RkRhdGVGb3JtYXR0ZXJTdHlsZSBzdHlsZUZyb21BcmdTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIENGRGF0ZUZvcm1hdHRlclN0eWxlIGRlZmF1bHRTdHlsZSkKIHsKICAgICBpZiAoc3RyaW5n
ID09ICJzaG9ydCIpCiAgICAgICAgIHJldHVybiBrQ0ZEYXRlRm9ybWF0dGVyU2hvcnRTdHlsZTsK
QEAgLTE1MCw5ICsxNTAsOSBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNT
dGF0ZSogZXhlYywgRGF0ZUluc3RhbmNlKiwgZG91YmxlIHRpbWVJbk1pbAogICAgIENGRGF0ZUZv
cm1hdHRlclN0eWxlIHRpbWVTdHlsZSA9IChmb3JtYXQgIT0gTG9jYWxlRGF0ZSA/IGtDRkRhdGVG
b3JtYXR0ZXJMb25nU3R5bGUgOiBrQ0ZEYXRlRm9ybWF0dGVyTm9TdHlsZSk7CiAKICAgICBib29s
IHVzZUN1c3RvbUZvcm1hdCA9IGZhbHNlOwotICAgIFVTdHJpbmcgY3VzdG9tRm9ybWF0U3RyaW5n
OworICAgIFN0cmluZyBjdXN0b21Gb3JtYXRTdHJpbmc7CiAKLSAgICBVU3RyaW5nIGFyZzBTdHJp
bmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
U3RyaW5nIGFyZzBTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaWYgKGFyZzBTdHJpbmcgPT0gImN1c3RvbSIgJiYgIWV4ZWMtPmFyZ3Vt
ZW50KDEpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgdXNlQ3VzdG9tRm9ybWF0ID0gdHJ1ZTsK
ICAgICAgICAgY3VzdG9tRm9ybWF0U3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBKU0NlbGwqIGZv
cm1hdExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBEYXRlSW5zdGFuY2UqLCBkb3VibGUgdGlt
ZUluTWlsCiAKICAgICBDRlJlbGVhc2Uoc3RyaW5nKTsKIAotICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgVVN0cmluZyhidWZmZXIsIGxlbmd0aCkpOworICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7CiB9CiAKICNlbGlm
IFVTRShJQ1VfVU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fRk9STUFUVElORwpAQCAtMjEyLDcgKzIx
Miw3IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBE
YXRlSW5zdGFuY2UqIGRhdGVPYmplY3QsIGRvdWJsCiAgICAgaWYgKHN0YXR1cyAhPSBVX1pFUk9f
RVJST1IpCiAgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogCi0gICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBVU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7CisgICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoYnVmZmVyLCBsZW5ndGgpKTsK
IH0KIAogI2Vsc2UKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2Nh
bGVEYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIGdkdCwgTAog
ICAgIGlmIChsZW5ndGgpCiAgICAgICAgIGxlbmd0aC0tOwogCi0gICAgcmV0dXJuIGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBVU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOworICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCkpOwogCiAjZWxzZSAvLyBPUyhXSU5ET1dTKQogCkBAIC0zMjIsNyArMzIyLDcgQEAgc3RhdGlj
IEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lJiBnZHQsIEwKICAgICBpZiAobGVuZ3RoICE9IHN0YXRpY19jYXN0PHNpemVfdD4o
LTEpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICBidWZmZXJbaV0gPSBzdGF0aWNfY2FzdDxVQ2hhcj4odGVtcGJ1ZmZlcltpXSk7Ci0g
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgVVN0cmluZyhidWZmZXIsIGxl
bmd0aCkpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhi
dWZmZXIsIGxlbmd0aCkpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAKaW5kZXggYTNhOTkwZDU5NmUyM2Q3ZmE2MWY2ZjljMjQwYzVlZWY3OTA3
MzYyOS4uMGE1MjJjNGZkMDAzZGFkMDY2NDhhOGQxMzlhY2FmYzA0ZmU1YjdjMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtNDMsMzcgKzQzLDM3IEBAIG5hbWVz
cGFjZSBKU0Mgewogc3RhdGljIGNvbnN0IGNoYXIqIGxpbmVQcm9wZXJ0eU5hbWUgPSAibGluZSI7
CiBzdGF0aWMgY29uc3QgY2hhciogc291cmNlVVJMUHJvcGVydHlOYW1lID0gInNvdXJjZVVSTCI7
CiAKLUpTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQo
IW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0dXJlKCks
IG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRl
RXZhbEVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gRXJy
b3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmpl
Y3QtPmV2YWxFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwog
fQogCi1KU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBFcnJvckluc3RhbmNl
OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+cmFuZ2VF
cnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCi1KU09i
amVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAg
ICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5yZWZlcmVu
Y2VFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCi1K
U09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAg
QVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5zeW50YXhFcnJv
ckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCi1KU09iamVj
dCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVT
dHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1l
c3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9y
KCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwpAQCAtODQsMzggKzg0LDM4IEBAIEpTT2Jq
ZWN0KiBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVu
b3VnaCBhcmd1bWVudHMiKTsKIH0KIAotSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCog
Y3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIHJldHVy
biBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdC0+VVJJRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdl
KTsKIH0KIAotSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0
cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gY3JlYXRlRXJyb3IoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBtZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGNyZWF0ZUV2YWxF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCog
Y3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewogICAgIHJldHVybiBjcmVhdGVFdmFsRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCBtZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtZXNzYWdlKTsKIH0K
IAotSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
VVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtZXNzYWdlKTsKIH0KIAot
SlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmlu
ZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1cm4gY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtZXNzYWdlKTsKIH0KIAotSlNPYmplY3QqIGNy
ZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitK
U09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewogICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBtZXNzYWdlKTsKIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBKU09iamVjdCogY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OwogfQogCi1KU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBV
U3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBjcmVhdGVVUklFcnJvcihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQpAQCAtMTMzLDcgKzEzMyw3
IEBAIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJp
bmcmIG1lc3NhZ2UpCiBKU09iamVjdCogYWRkRXJyb3JJbmZvKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiB7
CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
OwotICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCA9IHNvdXJjZS5wcm92aWRlcigpLT51cmwo
KTsKKyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCA9IHNvdXJjZS5wcm92aWRlcigpLT51cmwo
KTsKIAogICAgIGlmIChsaW5lICE9IC0xKQogICAgICAgICBlcnJvci0+cHV0RGlyZWN0KCpnbG9i
YWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIGxpbmVQcm9wZXJ0eU5hbWUpLCBqc051bWJl
cihsaW5lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5oCmluZGV4IDY1YWVhM2VkY2MxM2Q0MGY1NDA4NjMyYTZlODczN2E3YmFlZTdlZmMu
LmJjNzFmNzBiMTkwNWU0YTNmODg0Zjc5ZTU0NzZlZjIwNWZmZjZjNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtMzYsMjYgKzM2LDI1IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgY2xhc3Mg
U3RydWN0dXJlOwotICAgIGNsYXNzIFVTdHJpbmc7CiAKICAgICAvLyBNZXRob2RzIHRvIGNyZWF0
ZSBhIHJhbmdlIG9mIGludGVybmFsIGVycm9ycy4KLSAgICBKU09iamVjdCogY3JlYXRlRXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZUV2
YWxFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCog
Y3JlYXRlUmFuZ2VFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBK
U09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3Ry
aW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNPYmplY3QqIGNyZWF0ZUV2YWxFcnJv
cihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOworICAgIEpTT2JqZWN0KiBjcmVhdGVS
YW5nZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNPYmplY3Qq
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJik7CisgICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihKU0dsb2JhbE9iamVjdCopOwotICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBl
cnMuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0
ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNT
dGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
Y3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlU3lu
dGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVh
dGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlU3ludGF4RXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
RXhlY1N0YXRlKik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSosIGNv
bnN0IFVTdHJpbmcmKTsKKyAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBNZXRob2RzIHRvIGFkZCAKICAgICBib29sIGhhc0Vy
cm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IpOwpAQCAtNzYsNyArNzUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwcml2YXRlOgotICAgICAgICBTdHJpY3RN
b2RlVHlwZUVycm9yRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAgIFN0cmljdE1v
ZGVUeXBlRXJyb3JGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICAgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICAgICAgICAgLCBtX21l
c3NhZ2UobWVzc2FnZSkKICAgICAgICAgewpAQCAtODcsNyArODYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwog
Ci0gICAgICAgIHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorICAgICAgICBzdGF0aWMgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogICAgICAgICB7CiAgICAgICAgICAgICBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24q
IGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaWN0TW9kZVR5cGVFcnJv
ckZ1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXNzYWdlKTsKICAgICAgICAgICAgIGZ1bmN0aW9uLT5m
aW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksICIiKTsKQEAgLTEyNiw3ICsxMjUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVVN0
cmluZyBtX21lc3NhZ2U7CisgICAgICAgIFN0cmluZyBtX21lc3NhZ2U7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvcklu
c3RhbmNlLmgKaW5kZXggZDZmYTMyZjk5Y2YzYjNkYzRiMGYxMjQ5Mzk3ZjVkNjA3NTU2NTI3ZC4u
ODk0Njc2MzYxMmFkOWZjNjhjMzMzMDQxOWQ5YWFkYWI2NjNmMzkwZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oRXJyb3JJbnN0YW5jZVR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgRXJyb3JJbnN0YW5jZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAgIHN0YXRpYyBF
cnJvckluc3RhbmNlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBFcnJvckluc3RhbmNlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVy
cm9ySW5zdGFuY2U+KGdsb2JhbERhdGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKTsKICAgICAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxE
YXRhLCBtZXNzYWdlKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU1ZhbHVlIG1lc3NhZ2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UuaXNVbmRl
ZmluZWQoKSA/IFVTdHJpbmcoKSA6IG1lc3NhZ2UudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
KTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1
cmUsIG1lc3NhZ2UuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogbWVzc2FnZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBhcHBlbmRTb3Vy
Y2VUb01lc3NhZ2UoKSB7IHJldHVybiBtX2FwcGVuZFNvdXJjZVRvTWVzc2FnZTsgfQpAQCAtNTUs
NyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxp
Y2l0IEVycm9ySW5zdGFuY2UoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJp
bmcmIG1lc3NhZ2UpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgQVNTRVJUKGlu
aGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAppbmRleCA1ZGQzZTg1ZTJmM2YzNDE1OWY5YjNkN2RjN2RlYjcwNWVh
MzMzY2EyLi4zNTRhMzEyMWE0Yjg3YTM2NDA0YjlkN2M5ZmVjMmM0NDE0YzI3MGYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC0y
Nyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiT2Jq
ZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmcuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTk3LDcgKzk2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIAogICAgIC8vIDQuIElmIG5hbWUgaXMgdW5kZWZpbmVkLCB0aGVuIGxldCBuYW1lIGJlICJF
cnJvciI7IGVsc2UgbGV0IG5hbWUgYmUgVG9TdHJpbmcobmFtZSkuCi0gICAgVVN0cmluZyBuYW1l
U3RyaW5nOworICAgIFN0cmluZyBuYW1lU3RyaW5nOwogICAgIGlmIChuYW1lLmlzVW5kZWZpbmVk
KCkpCiAgICAgICAgIG5hbWVTdHJpbmcgPSAiRXJyb3IiOwogICAgIGVsc2UgewpAQCAtMTE0LDcg
KzExMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gKHNpYykKICAgICAvLyA2LiBJZiBtc2cgaXMg
dW5kZWZpbmVkLCB0aGVuIGxldCBtc2cgYmUgdGhlIGVtcHR5IFN0cmluZzsgZWxzZSBsZXQgbXNn
IGJlIFRvU3RyaW5nKG1zZykuCiAgICAgLy8gNy4gSWYgbXNnIGlzIHVuZGVmaW5lZCwgdGhlbiBs
ZXQgbXNnIGJlIHRoZSBlbXB0eSBTdHJpbmc7IGVsc2UgbGV0IG1zZyBiZSBUb1N0cmluZyhtc2cp
LgotICAgIFVTdHJpbmcgbWVzc2FnZVN0cmluZzsKKyAgICBTdHJpbmcgbWVzc2FnZVN0cmluZzsK
ICAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICBtZXNzYWdlU3RyaW5nID0g
IiI7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGNlNjNhZTlhZjRlZjQ2NDdjNWMxNzY2MzdjYzQzY2Zk
ZDg3ZjhiOTQuLjgzYTRlMDNjM2IzYjcwNDM1MzQ5OWM0Y2M3M2YyMWJhNGJmYWNhOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEwNywxMyArMTA2LDEzIEBAIEpT
T2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKLSAgICBVU3RyaW5nIG1lc3NhZ2Uo
bWFrZVVTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnVzdHJpbmcoKSkpOwor
ICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlk
ZW50LnVzdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBt
ZXNzYWdlKTsKIH0KICAgICAKIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJp
bmcgZXJyb3JNZXNzYWdlID0gbWFrZVVTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyksICInIGlzIG5vdCBhIHZhbGlkIGFyZ3VtZW50IGZvciAnIiwgb3AsICInIik7
CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyksICInIGlzIG5vdCBhIHZhbGlkIGFyZ3VtZW50IGZvciAnIiwg
b3AsICInIik7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBlcnJvck1lc3NhZ2UpOwogICAgIEFTU0VSVChleGNlcHRpb24tPmlzRXJyb3JJbnN0YW5jZSgp
KTsKICAgICBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+c2V0QXBwZW5k
U291cmNlVG9NZXNzYWdlKCk7CkBAIC0xMjIsNyArMTIxLDcgQEAgSlNPYmplY3QqIGNyZWF0ZUlu
dmFsaWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogb3AsIEpTVmFsdWUg
dmFsdWUKIAogSlNPYmplY3QqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VV
U3RyaW5nKCInIiwgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiJyBpcyBub3Qg
YSBjb25zdHJ1Y3RvciIpOworICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCIn
IiwgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiJyBpcyBub3QgYSBjb25zdHJ1
Y3RvciIpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
ZXJyb3JNZXNzYWdlKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFuY2UoKSk7
CiAgICAgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiktPnNldEFwcGVuZFNv
dXJjZVRvTWVzc2FnZSgpOwpAQCAtMTMxLDcgKzEzMCw3IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RB
Q29uc3RydWN0b3JFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAKIEpTT2Jq
ZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlVVN0cmluZygiJyIsIHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIicgaXMgbm90IGEgZnVuY3Rpb24iKTsKKyAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiJyIsIHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSwgIicgaXMgbm90IGEgZnVuY3Rpb24iKTsKICAgICBKU09iamVjdCog
ZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAgICAgQVNT
RVJUKGV4Y2VwdGlvbi0+aXNFcnJvckluc3RhbmNlKCkpOwogICAgIHN0YXRpY19jYXN0PEVycm9y
SW5zdGFuY2UqPihleGNlcHRpb24pLT5zZXRBcHBlbmRTb3VyY2VUb01lc3NhZ2UoKTsKQEAgLTE0
MCwxNiArMTM5LDE2IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAKIEpTT2JqZWN0KiBjcmVhdGVOb3RBbk9iamVjdEVy
cm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGVycm9y
TWVzc2FnZSA9IG1ha2VVU3RyaW5nKCInIiwgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpLCAiJyBpcyBub3QgYW4gb2JqZWN0Iik7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1h
a2VTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICInIGlzIG5v
dCBhbiBvYmplY3QiKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbi0+aXNFcnJvckluc3Rh
bmNlKCkpOwogICAgIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb24pLT5zZXRB
cHBlbmRTb3VyY2VUb01lc3NhZ2UoKTsKICAgICByZXR1cm4gZXhjZXB0aW9uOwogfQogCi1KU09i
amVjdCogY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSkKK0pTT2JqZWN0KiBjcmVhdGVFcnJvckZv
ckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1h
a2VVU3RyaW5nKCJTdHJpY3QgbW9kZSBmb3JiaWRzIGltcGxpY2l0IGNyZWF0aW9uIG9mIGdsb2Jh
bCBwcm9wZXJ0eSAnIiwgcHJvcGVydHlOYW1lLCAiJyIpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiU3RyaWN0IG1vZGUgZm9yYmlkcyBpbXBsaWNp
dCBjcmVhdGlvbiBvZiBnbG9iYWwgcHJvcGVydHkgJyIsIHByb3BlcnR5TmFtZSwgIiciKSk7CiB9
CiAKIEpTT2JqZWN0KiBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmgKaW5kZXggN2JmZmQyOTRiMzU2ODc0ZmFjMTRiZDk0NGNjNGM5MmJiMmM3YjcyOC4u
ZDJkYWFhMDQ0YWFkNTA5Mzk3YTczZjk0ZGFjYmMzZDNmNDA5ZDRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAtNDksNyArNDks
NyBAQCBKU09iamVjdCogY3JlYXRlTm90QW5PYmplY3RFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVl
KTsKIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihFeGVjU3RhdGUqLCBjb25zdCBj
aGFyKiBvcCwgSlNWYWx1ZSk7CiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
RXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiBKU09iamVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3Io
RXhlY1N0YXRlKiwgSlNWYWx1ZSk7Ci1KU09iamVjdCogY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xv
YmFsQXNzaWdubWVudChFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CitKU09iamVjdCogY3Jl
YXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmKTsKIAogSlNPYmplY3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqKTsKIEpT
T2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggOTZiOGI5MzNhNTc1YzMz
YzIyOGE0OTkzOWNjMDg5YWI5MDJlZTNjOS4uNGFjNWY4ODEzODA5ZGY4MDgxN2JkNTAwNWZkMzM4
Zjg5MDM3NzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRE
cml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC02NjksMTYgKzY2OSwxNiBAQCBGdW5jdGlv
bkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRl
bnRpZmllciYgZnVuY3RpbwogICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShl
eGVjLT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25OYW1lLCBib2R5LT5zb3Vy
Y2UoKSwgYm9keS0+dXNlc0FyZ3VtZW50cygpLCBib2R5LT5wYXJhbWV0ZXJzKCksIGJvZHktPmlz
U3RyaWN0TW9kZSgpLCBib2R5LT5saW5lTm8oKSwgYm9keS0+bGFzdExpbmUoKSk7CiB9CiAKLVVT
dHJpbmcgRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CitTdHJpbmcgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CiB7CiAgICAgRnVuY3Rpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzID0gKm1fcGFyYW1ldGVyczsKLSAgICBVU3RyaW5nQnVpbGRlciBi
dWlsZGVyOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBwb3Mg
PSAwOyBwb3MgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytwb3MpIHsKICAgICAgICAgaWYgKCFidWls
ZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwYXJhbWV0ZXJzW3Bvc10udXN0cmluZygpKTsKICAgICB9Ci0gICAg
cmV0dXJuIGJ1aWxkZXIudG9VU3RyaW5nKCk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmlu
ZGV4IDM4YzM5ZjkxNGQ0NjZhYTBlZjNmMjJlODUxYzdiZmIwYmY5ZTQ4MmUuLmUxM2QyOGU1ZDg0
ZDY0OWQzZGQ4YWI2MTAyMTM5MmEyMzEwYmQ5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTMyMCw3ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZTsg
fQogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnBy
b3ZpZGVySUQoKTsgfQotICAgICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsgfQorICAgICAgICBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPnVybCgp
OyB9CiAgICAgICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZTsgfQog
ICAgICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKQEAg
LTY2MSw3ICs2NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNTdHJpbmcqIG5hbWVW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVZhbHVlLmdldCgpOyB9CiAgICAgICAgIHNpemVf
dCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9
IC8vIEV4Y2x1ZGluZyAndGhpcychCiAgICAgICAgIHVuc2lnbmVkIGNhcHR1cmVkVmFyaWFibGVD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXM7IH0KLSAgICAgICAg
VVN0cmluZyBwYXJhbVN0cmluZygpIGNvbnN0OworICAgICAgICBTdHJpbmcgcGFyYW1TdHJpbmco
KSBjb25zdDsKICAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQogCiAgICAgICAgIHZvaWQgY2xlYXJDb2Rl
SWZOb3RDb21waWxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggN2Y4MmE3NGNlMDBlMGMwMjg5NWYzYmI4
NGM0ZmY5ODJmYzQ4MzlhZi4uMGI5NTNmZDk2ZTUyOGY0NGNhM2RjZmQ2MWJiZDZkN2UwNDAzMWRm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKQEAgLTMwLDggKzMwLDcgQEAKICNpbmNsdWRlICJMZXhlci5oIgogI2lu
Y2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0J1
aWxkZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC04MCwyNSArNzks
MjUgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmIGNhbGxEYXRhKQogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29u
c3RydWN0b3IKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElk
ZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBjb25zdCBU
ZXh0UG9zaXRpb24mIHBvc2l0aW9uKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYg
YXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAoIWdsb2JhbE9i
amVjdC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlRXZhbEVycm9yKGV4ZWMsICJGdW5jdGlvbiBjb25zdHJ1Y3RvciBpcyBkaXNhYmxlZCIpKTsK
ICAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhl
YywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24p
OwogfQogCi1KU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2soRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBB
cmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJp
bmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBj
b25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0
IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgLy8gRnVuY3Rpb25zIG5lZWQgdG8gaGF2
ZSBhIHNwYWNlIGZvbGxvd2luZyB0aGUgb3BlbmluZyB7IGR1ZSB0byBmb3Igd2ViIGNvbXBhdGli
aWxpdHkKICAgICAvLyBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0MzUwCiAgICAgLy8gV2UgYWxzbyBuZWVkIFxuIGJlZm9yZSB0aGUgY2xvc2luZyB9IHRvIGhh
bmRsZSAvLyBjb21tZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGxpbmUKLSAgICBVU3RyaW5n
IHByb2dyYW07CisgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQog
ICAgICAgICBwcm9ncmFtID0gIihmdW5jdGlvbigpIHsgXG59KSI7CiAgICAgZWxzZSBpZiAoYXJn
cy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VVU3RyaW5nKCIoZnVuY3Rpb24o
KSB7ICIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59KSIpOwor
ICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygiKGZ1bmN0aW9uKCkgeyAiLCBhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufSkiKTsKICAgICBlbHNlIHsKLSAgICAg
ICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGZ1bmN0aW9uKCIpOwogICAgICAgICBidWlsZGVy
LmFwcGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgYXJncy5zaXplKCkgLSAxOyBpKyspIHsKQEAgLTEwOCw3
ICsxMDcsNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2soRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iagogICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiKSB7ICIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KGFyZ3Muc2l6ZSgpIC0g
MSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IlxufSkiKTsKLSAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIudG9VU3RyaW5nKCk7CisgICAgICAg
IHByb2dyYW0gPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CkBAIC0xMjcsNyArMTI2
LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmoKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlv
biBDb25zdHJ1Y3RvcgogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsK
LSAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBJ
ZGVudGlmaWVyKGV4ZWMsICJhbm9ueW1vdXMiKSwgVVN0cmluZygpLCBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpKTsKKyAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xv
YmFsT2JqZWN0LCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsICJhbm9ueW1vdXMiKSwgU3RyaW5nKCks
IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaAppbmRleCAzMTk4NmI3MGE3M2M2NTNkMTg4ZGIyNmY0YjE3ZWUxMDRkMDUyMTI3Li45
OWVhZmVlODBmMmE1ZTkwNTJmZmM2OGQ4NTRkMWE5MjZiYjM3NGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC01Niwx
MCArNTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0
JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VV
UkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7CisgICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0
IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0
IFdURjo6VGV4dFBvc2l0aW9uJik7CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYpOwogCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxl
ZENoZWNrKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBVU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGlu
Z0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdM
aXN0JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBv
c2l0aW9uJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggNDIwNmNmMmIwZjJj
Zjk2Mjg1NmRmNjk0MTdkYWMwYzA4ODljOTljYi4uYTIwMGRjYWM4MThkOTlmNGMzZWI1ZmNkMjkz
ZTVlMTBkMzE3MTM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBGdW5jdGlvblByb3RvdHlw
ZTo6RnVuY3Rpb25Qcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdAogewogfQogCi12b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCit2b2lkIEZ1bmN0aW9uUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKQEAgLTgzLDcgKzgzLDcgQEAgQ2FsbFR5cGUgRnVuY3Rpb25Qcm90b3R5
cGU6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKIC8vIEZ1bmN0aW9u
cwogCiAvLyBDb21wYXRpYmlsaXR5IGhhY2sgZm9yIHRoZSBPcHRpbW9zdCBKYXZhU2NyaXB0IGxp
YnJhcnkuIChTZWUgPHJkYXI6Ly9wcm9ibGVtLzY1OTUwNDA+LikKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChVU3RyaW5nJiBmdW5jdGlvbkJvZHkpCitzdGF0aWMg
aW5saW5lIHZvaWQgaW5zZXJ0U2VtaWNvbG9uSWZOZWVkZWQoU3RyaW5nJiBmdW5jdGlvbkJvZHkp
CiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uQm9keVswXSA9PSAneycpOwogICAgIEFTU0VSVChmdW5j
dGlvbkJvZHlbZnVuY3Rpb25Cb2R5Lmxlbmd0aCgpIC0gMV0gPT0gJ30nKTsKQEAgLTkyLDcgKzky
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFVTdHJpbmcm
IGZ1bmN0aW9uQm9keSkKICAgICAgICAgVUNoYXIgY2ggPSBmdW5jdGlvbkJvZHlbaV07CiAgICAg
ICAgIGlmICghTGV4ZXI8VUNoYXI+Ojppc1doaXRlU3BhY2UoY2gpICYmICFMZXhlcjxVQ2hhcj46
OmlzTGluZVRlcm1pbmF0b3IoY2gpKSB7CiAgICAgICAgICAgICBpZiAoY2ggIT0gJzsnICYmIGNo
ICE9ICd9JykKLSAgICAgICAgICAgICAgICBmdW5jdGlvbkJvZHkgPSBtYWtlVVN0cmluZyhmdW5j
dGlvbkJvZHkuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgaSArIDEpLCAiOyIsIGZ1bmN0aW9uQm9k
eS5zdWJzdHJpbmdTaGFyaW5nSW1wbChpICsgMSwgZnVuY3Rpb25Cb2R5Lmxlbmd0aCgpIC0gKGkg
KyAxKSkpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uQm9keSA9IG1ha2VTdHJpbmcoZnVuY3Rp
b25Cb2R5LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIGkgKyAxKSwgIjsiLCBmdW5jdGlvbkJvZHku
c3Vic3RyaW5nU2hhcmluZ0ltcGwoaSArIDEsIGZ1bmN0aW9uQm9keS5sZW5ndGgoKSAtIChpICsg
MSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTEwNiw3ICsx
MDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZp
YWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xu
ICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKLSAgICAgICAgVVN0cmluZyBzb3Vy
Y2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOworICAgICAgICBTdHJp
bmcgc291cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKICAgICAg
ICAgaW5zZXJ0U2VtaWNvbG9uSWZOZWVkZWQoc291cmNlU3RyaW5nKTsKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAi
LCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigiLCBleGVjdXRhYmxlLT5wYXJhbVN0cmluZygpLCAi
KSAiLCBzb3VyY2VTdHJpbmcpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAppbmRleCA1OTQyNzkxMmI2MzdiMjhmMThmOGEw
N2I4N2E5YzVhNTJlNTU0NzkwLi45ZmZlYmY3YTllZGQ1MDdkNjIzY2VlMzZhMGUzNTY5MzNhODUy
NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmIG5hbWUpOworICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CmluZGV4IDE5NmZkY2EyM2Y1OWI4YmIzOWFkY2IzNzFhNTAwYjdmNDRhNzAwMTAuLmU1MmI1YTlk
YTZiNDZhYWZjMDU0NThiYWM4ODkyM2JmNTI1YjZlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTIzLDkgKzIzLDkgQEAKIAogI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgotI2luY2x1ZGUg
IlVTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTQ1LDE0ICs0NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IGNoYXIgKCZjaGFy
YWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKSA6IG1fc3RyaW5nKGFkZChnbG9iYWxEYXRhLCBjaGFy
YWN0ZXJzKSkgeyB9CiAKICAgICAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIFN0cmlu
Z0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQoZXhlYywgcmVwKSkgeyB9Ci0gICAgICAgIElkZW50
aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChl
eGVjLCBzLmltcGwoKSkpIHsgfQorICAgICAgICBJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChleGVjLCBzLmltcGwoKSkpIHsgfQogCiAg
ICAgICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBMQ2hhciog
cywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcywgbGVuZ3RoKSkgeyB9
CiAgICAgICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVQ2hh
ciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcywgbGVuZ3RoKSkg
eyB9CiAgICAgICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJ
bXBsKiByZXApIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEsIHJlcCkpIHsgfSAKLSAgICAgICAg
SWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpIDog
bV9zdHJpbmcoYWRkKGdsb2JhbERhdGEsIHMuaW1wbCgpKSkgeyB9CisgICAgICAgIElkZW50aWZp
ZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmco
YWRkKGdsb2JhbERhdGEsIHMuaW1wbCgpKSkgeyB9CiAKLSAgICAgICAgY29uc3QgVVN0cmluZyYg
dXN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgICAgIC8vIEZJWE1FOiBm
aXggdGhpcyBuYW1lLgorICAgICAgICBjb25zdCBTdHJpbmcmIHVzdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZzsgfQogICAgICAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuaW1wbCgpOyB9CiAgICAgICAgIAogICAgICAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQpAQCAtOTEs
NyArOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFVTdHJpbmcgbV9zdHJpbmc7CisgICAgICAgIFN0cmlu
ZyBtX3N0cmluZzsKIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiAgICAg
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQzMl90IHRvVUludDMyRnJvbUNoYXJhY3RlcnMo
Y29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCYgb2spOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcAppbmRleCA2ZGUyOTJhNTMyZjQ3YWMyODVlNGU2MzM1OGU2ODE0MWM3NGE5ZDBmLi42
ZTdlZGRiZjExZjI0MDM1ZGY4YWY0NzkwZmZhNTEyNDNhNjRkZmJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAt
MzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIK
ICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggOTg1YWI3M2IwNDdlMGM2NmY0YzU3NjRmMDcx
OTQwZDQ5NDRkYTczZS4uMjE2ZGNlMzc5NTVmZDQ3NzllNWE1ZDQ5N2E0MDUyZjE3N2UzNTZhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnUKIHsKIH0KIAot
dm9pZCBJbnRlcm5hbEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCit2b2lkIEludGVybmFsRnVuY3Rpb246OmZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7CkBAIC00NywxOSArNDcsMTkgQEAgdm9pZCBJbnRlcm5hbEZ1bmN0aW9u
OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IG4KICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS5pc051bGwoKSA/ICIiIDogbmFtZSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAotY29uc3QgVVN0cmluZyYgSW50
ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCitjb25zdCBTdHJpbmcmIEludGVy
bmFsRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiBhc1N0cmlu
ZyhnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVy
dHlOYW1lcy0+bmFtZSkpLT50cnlHZXRWYWx1ZSgpOwogfQogCi1jb25zdCBVU3RyaW5nIEludGVy
bmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKK2NvbnN0IFN0cmluZyBJ
bnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNW
YWx1ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7CiAgICAgCiAgICAgaWYgKGRp
c3BsYXlOYW1lICYmIGlzSlNTdHJpbmcoZGlzcGxheU5hbWUpKQogICAgICAgICByZXR1cm4gYXNT
dHJpbmcoZGlzcGxheU5hbWUpLT50cnlHZXRWYWx1ZSgpOwogICAgIAotICAgIHJldHVybiBVU3Ry
aW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCiBDYWxsVHlwZSBJbnRlcm5hbEZ1bmN0
aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpCkBAIC02OCw5ICs2OCw5IEBAIENh
bGxUeXBlIEludGVybmFsRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJikK
ICAgICByZXR1cm4gQ2FsbFR5cGVOb25lOwogfQogCi1jb25zdCBVU3RyaW5nIEludGVybmFsRnVu
Y3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCitjb25zdCBTdHJp
bmcgSW50ZXJuYWxGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICBjb25zdCBVU3RyaW5nIGV4cGxpY2l0TmFtZSA9IGRpc3BsYXlOYW1lKGV4ZWMp
OworICAgIGNvbnN0IFN0cmluZyBleHBsaWNpdE5hbWUgPSBkaXNwbGF5TmFtZShleGVjKTsKICAg
ICAKICAgICBpZiAoIWV4cGxpY2l0TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBleHBs
aWNpdE5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmgKaW5kZXggMTUwZmI3NTllZDA5ZDRjMzAwN2Q5N2E1YjhhMDIyMDdiMGJlMzA5MS4u
ZTI2YjlmOTUzZmU4YTRkNzcyZWZlNDkyMzkyMjRkNzJjN2RjNWQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApAQCAtMzcsOSArMzcs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVT
dHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxheU5h
bWUoRXhlY1N0YXRlKik7Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlO
YW1lKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBTdHJpbmcm
IG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIGNvbnN0IFN0cmluZyBkaXNwbGF5TmFtZShFeGVj
U3RhdGUqKTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqKTsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvKSAKICAgICAgICAgeyAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAogICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCmluZGV4IDg1MTcwODVkZmVlMjY4ZjNm
NGY3OTZiODE2NDIwZDcyN2EyNGM5ZjIuLmNkMWQ4MzBmZTI0YTNiMTMyNjAyZjg3M2Q4ZjVhZjEw
YThiYWY3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJ
VmFsdWVXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQ
SVZhbHVlV3JhcHBlci5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJKU0FQSVZhbHVl
V3JhcHBlci5oIgogCiAjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiVVN0cmlu
Zy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAppbmRleCA3MjE4NjA0ZDExMmM3OGI1NzEyYjQ1NDQzOGYyOWIxMGI1MjA4NDM4
Li5mMjRkYzc1MWRiYzg5MWZmNmJmNDFjYTlhODg2ZWZiZjFiYWQ4MjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMTQ3OSw3ICsxNDc5LDcgQEAgdm9p
ZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyBhIHRvU3RyaW5nIGNhbGwg
cmFpc2VzIGFuIGV4Y2VwdGlvbi4KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
Tm90SW5jbHVkaW5nVW5kZWZpbmVkOyBpKyspCi0gICAgICAgIHZhbHVlc1tpXS5zZWNvbmQgPSB2
YWx1ZXNbaV0uZmlyc3QudG9VU3RyaW5nSW5saW5lKGV4ZWMpOworICAgICAgICB2YWx1ZXNbaV0u
c2Vjb25kID0gdmFsdWVzW2ldLmZpcnN0LnRvV1RGU3RyaW5nSW5saW5lKGV4ZWMpOwogCiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIEhlYXA6OmhlYXAodGhpcyktPnBv
cFRlbXBTb3J0VmVjdG9yKCZ2YWx1ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKaW5kZXggM2Y2NDMwODcxZDJjYTY5YmZhODBlZGJj
ZWNlMmY5YTg3MDY0MTljMy4uNzU0MGQ0Mzk0ODFhZGQyMDQ2Y2Y3ZWIxM2JhODEzOGRlMDQ4MjJh
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCkBAIC03Niw3ICs3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91
bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3QoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNvbnN0cnVjdFR5cGUsIGNv
bnN0cnVjdERhdGEsIGFyZ3MpKTsKIH0KIAotSlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rp
b246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91
bmRBcmdzLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorSlNCb3VuZEZ1bmN0aW9u
KiBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRo
aXMsIEpTVmFsdWUgYm91bmRBcmdzLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIENvbnN0cnVjdFR5cGUgY29u
c3RydWN0VHlwZSA9IEpTQzo6Z2V0Q29uc3RydWN0RGF0YSh0YXJnZXRGdW5jdGlvbiwgY29uc3Ry
dWN0RGF0YSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5kRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewog
fQogCi12b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVj
LCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5n
JiBuYW1lKQordm9pZCBKU0JvdW5kRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4ZWN1dGFibGUs
IGxlbmd0aCwgbmFtZSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKaW5kZXggZGQxMjI5
MjcyYmY2MDQ4Njc0NzExODI4MmI4NzljNTgwOTVkMTAwZi4uNTA2N2QxOTRjZTljNDk0MjY4Njc5
MDc5N2QxM2RjYzlkOGExZjczYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNCb3VuZEZ1bmN0aW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSlNCb3VuZEZ1bmN0
aW9uIDogcHVibGljIEpTRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSlNGdW5jdGlv
biBCYXNlOwogCi0gICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5k
VGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3QgVVN0cmluZyYpOworICAgIHN0YXRp
YyBKU0JvdW5kRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiB0YXJnZXRGdW5jdGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRB
cmdzLCBpbnQsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2Uo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvKTsKIApAQCAtNjEs
NyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEpTQm91bmRGdW5jdGlvbihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTT2JqZWN0KiB0YXJnZXRGdW5j
dGlvbiwgSlNWYWx1ZSBib3VuZFRoaXMsIEpTVmFsdWUgYm91bmRBcmdzKTsKICAgICAKLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQsIGNv
bnN0IFVTdHJpbmcmKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2
ZUV4ZWN1dGFibGUqLCBpbnQsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpT
T2JqZWN0PiBtX3RhcmdldEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2Jv
dW5kVGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDYx
ZTg1NDllZTkzMDgzNzVlYjZiODI4ZDBkNGYzOTc3NTJmYzJmYjEuLmZmYjc2ZmY5NTc2M2I2NmMw
Mjg0YWZlNjc1ZGNjNzRmMTY2YmU2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEpTQ2VsbDo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCiAgICAgY2VsbC0+SlNDZWxsOjp+SlNDZWxsKCk7CiB9CiAKLWJvb2wgSlNDZWxsOjpn
ZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJnN0cmluZ1ZhbHVlKSBjb25zdAorYm9v
bCBKU0NlbGw6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyYgc3RyaW5nVmFsdWUp
IGNvbnN0CiB7CiAgICAgaWYgKCFpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00Niw5ICs0Niw5IEBAIGJvb2wgSlNDZWxsOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBV
U3RyaW5nJnN0cmluZ1ZhbHVlKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1VU3RyaW5n
IEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK1N0cmluZyBKU0NlbGw6
OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzU3RyaW5n
KCkgPyBzdGF0aWNfY2FzdDxjb25zdCBKU1N0cmluZyo+KHRoaXMpLT52YWx1ZShleGVjKSA6IFVT
dHJpbmcoKTsKKyAgICByZXR1cm4gaXNTdHJpbmcoKSA/IHN0YXRpY19jYXN0PGNvbnN0IEpTU3Ry
aW5nKj4odGhpcyktPnZhbHVlKGV4ZWMpIDogU3RyaW5nKCk7CiB9CiAKIEpTT2JqZWN0KiBKU0Nl
bGw6OmdldE9iamVjdCgpCkBAIC0xNzgsMTAgKzE3OCwxMCBAQCB2b2lkIEpTQ2VsbDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1VU3RyaW5nIEpTQ2VsbDo6Y2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0KikKK1N0cmluZyBKU0NlbGw6OmNsYXNzTmFtZShjb25zdCBK
U09iamVjdCopCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFVTdHJp
bmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIGNvbnN0IGNoYXIqIEpTQ2VsbDo6Y2xh
c3NOYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggMTMwZjk3
MDZkNWU2ZWQ5YjJkMDEyZTlkZjhhOTExOGNlOTc1ODBkOC4uZWYwNmIxZWNmYmQ3MTJhNzM0MDI1
NTk0YmMzZThiYTg0YWYwYTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKQEAgLTg5LDggKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IGNoYXIq
IGNsYXNzTmFtZSgpOwogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJp
bmcmKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyBnZXRTdHJpbmco
RXhlY1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSosIFN0cmlu
ZyYpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0U3RyaW5nKEV4
ZWNTdGF0ZSopIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGdldE9iamVjdCgpOyAvLyBOVUxMIGlmIG5vdCBh
biBvYmplY3QKICAgICAgICAgY29uc3QgSlNPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0OyAvLyBO
VUxMIGlmIG5vdCBhbiBvYmplY3QKICAgICAgICAgCkBAIC0xMjYsNyArMTI2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90IGl0cyBzbG93ZXIg
dmlydHVhbCBjb3VudGVycGFydC4gKEZvciBpbnRlZ2VyCiAgICAgICAgIC8vIHByb3BlcnR5IG5h
bWVzLCB3ZSB3YW50IGEgc2ltaWxhciBpbnRlcmZhY2Ugd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6
YXRpb25zLikKICAgICAgICAgYm9vbCBmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTVmFsdWUgZmFzdEdldE93
blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICAgICAgSlNWYWx1ZSBm
YXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAgICAg
c3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZzZXQoKQogICAgICAgICB7CkBAIC0xNjEsNyAr
MTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRW
YWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUp
OwogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9p
ZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgVVN0cmluZyBjbGFzc05hbWUo
Y29uc3QgSlNPYmplY3QqKTsKKyAgICAgICAgc3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3Qg
SlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKICAgICAgICAg
c3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgcHV0RGlyZWN0VmlydHVhbChKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcyk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKQEAgLTIyMywxNyArMjIzLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBy
ZXR1cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7CiAgICAgfQogCi0gICAgaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYgcykg
Y29uc3QKKyAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVj
LCBTdHJpbmcmIHMpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXNDZWxsKCkgJiYgYXND
ZWxsKCktPmdldFN0cmluZyhleGVjLCBzKTsKICAgICB9CiAKLSAgICBpbmxpbmUgVVN0cmluZyBK
U1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAgIGlubGluZSBTdHJp
bmcgSlNWYWx1ZTo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5nZXRTdHJpbmcoZXhlYykgOiBVU3RyaW5n
KCk7CisgICAgICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5nZXRTdHJpbmcoZXhlYykg
OiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZT4gVVN0cmlu
ZyBIYW5kbGVDb252ZXJ0ZXI8QmFzZSwgVW5rbm93bj46OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IFN0cmluZyBIYW5kbGVDb252
ZXJ0ZXI8QmFzZSwgVW5rbm93bj46OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4ganNWYWx1ZSgpLmdldFN0cmluZyhleGVjKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IGZjZjFj
NDM0NWQxYjg5NjdiMjg1ZDg4NWI3YTZmNjVmZDU1OWI0N2MuLmY5MzQzOTE2MDhmZGU1ZTFmODFl
N2RmNGJhYjQ5MGQ5YzQ0M2VmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0ZU1hdGguY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21O
dWxsVGVybWluYXRlZENoYXJhY3RlcnMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBkYXRl
U3QKICAgICByZXR1cm4gbXMgLSAob2Zmc2V0ICogV1RGOjptc1Blck1pbnV0ZSk7CiB9CiAKLWRv
dWJsZSBwYXJzZURhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBkYXRlKQorZG91
YmxlIHBhcnNlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZGF0ZSkKIHsKICAg
ICBpZiAoZGF0ZSA9PSBleGVjLT5nbG9iYWxEYXRhKCkuY2FjaGVkRGF0ZVN0cmluZykKICAgICAg
ICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYWNoZWREYXRlU3RyaW5nVmFsdWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmgKaW5kZXggYzdmYjVhOTc1ZDE3
MmIwMTcyOTA0MTBmOWZhYzRmNzk5YWJhNTE5ZS4uYTZkZDk2Zjk5ZTliMDNjYTMwMzU0YzUwMDE1
ZTE4MTdlMmM2YjdiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1h
dGguaApAQCAtNDksMTMgKzQ5LDEyIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRXhlY1N0
YXRlOwotY2xhc3MgVVN0cmluZzsKIAogdm9pZCBtc1RvR3JlZ29yaWFuRGF0ZVRpbWUoRXhlY1N0
YXRlKiwgZG91YmxlLCBib29sIG91dHB1dElzVVRDLCBHcmVnb3JpYW5EYXRlVGltZSYpOwogZG91
YmxlIGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhFeGVjU3RhdGUqLCBjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSYsIGRvdWJsZSwgYm9vbCBpbnB1dElzVVRDKTsKIGRvdWJsZSBnZXRVVENPZmZzZXQoRXhl
Y1N0YXRlKik7CiBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKLWRvdWJsZSBwYXJzZURhdGUoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworZG91YmxlIHBhcnNlRGF0ZShFeGVjU3RhdGUqLCBj
b25zdCBXVEY6OlN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA2OTRkODM4ZWVkYjg4MDhi
ODNjMWEwMzI1YTZhYzA1MzAzMzc0ZWY1Li44MDgyZjRkNGY3MjA0MDU4MmFmYzNiOWM3ZjQ5N2Mw
MTZkOGVkZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcApAQCAtNTksNyArNTksNyBAQCBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uTm9u
SW5saW5lKCkgY29uc3QKICAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKTsKIH0KIAotSlNGdW5j
dGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUNvbnN0cnVjdG9yKQorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
IGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7CiAgICAgTmF0
aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZTsKICNpZiAhRU5BQkxFKEpJVCkKQEAgLTkyLDcgKzky
LDcgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgU2NvcGVDaGEKIHsKIH0KIAotdm9pZCBKU0Z1bmN0aW9uOjpm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCit2b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8p
KTsKQEAgLTEyNSwyOSArMTI1LDI5IEBAIFN0cnVjdHVyZSogSlNGdW5jdGlvbjo6Y2FjaGVJbmhl
cml0b3JJRChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIG1fY2FjaGVkSW5oZXJpdG9ySUQu
Z2V0KCk7CiB9CiAKLWNvbnN0IFVTdHJpbmcmIEpTRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBl
eGVjKQorY29uc3QgU3RyaW5nJiBKU0Z1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUpKS0+dHJ5R2V0VmFsdWUoKTsKIH0KIAot
Y29uc3QgVVN0cmluZyBKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCitj
b25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEpTVmFsdWUgZGlzcGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZGlzcGxheU5hbWUpOwogICAgIAogICAg
IGlmIChkaXNwbGF5TmFtZSAmJiBpc0pTU3RyaW5nKGRpc3BsYXlOYW1lKSkKICAgICAgICAgcmV0
dXJuIGFzU3RyaW5nKGRpc3BsYXlOYW1lKS0+dHJ5R2V0VmFsdWUoKTsKICAgICAKLSAgICByZXR1
cm4gVVN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotY29uc3QgVVN0cmluZyBK
U0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQorY29uc3Qg
U3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMp
CiB7Ci0gICAgY29uc3QgVVN0cmluZyBleHBsaWNpdE5hbWUgPSBkaXNwbGF5TmFtZShleGVjKTsK
KyAgICBjb25zdCBTdHJpbmcgZXhwbGljaXROYW1lID0gZGlzcGxheU5hbWUoZXhlYyk7CiAgICAg
CiAgICAgaWYgKCFleHBsaWNpdE5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZXhwbGlj
aXROYW1lOwogICAgIAotICAgIGNvbnN0IFVTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7
CisgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUgPSBuYW1lKGV4ZWMpOwogICAgIGlmICghYWN0
dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFj
dHVhbE5hbWU7CiAgICAgCkBAIC00NTUsNyArNDU1LDcgQEAgQ29uc3RydWN0VHlwZSBKU0Z1bmN0
aW9uOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCwgQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWMKIH0KICAgICAKIAotVVN0cmluZyBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBvYmplY3QpCitTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3Bs
YXlOYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIGlm
IChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVj
dCkpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+Y2FsY3VsYXRlZERpc3BsYXlOYW1lKGNhbGxG
cmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXgg
NTZmYWYwMGRlNWViOGIwNGNkMTE4NTMxNDFhNTJmMTI5ZDVhOWI3YS4uY2RlMGMwYjRkNTExNTEy
ZDZkYjZhY2ZhNzJiMmM0ZTk4ODVmNjg3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBVU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShDYWxsRnJhbWUqLCBKU09iamVjdCop
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUo
Q2FsbEZyYW1lKiwgSlNPYmplY3QqKTsKICAgICAKICAgICBjbGFzcyBKU0Z1bmN0aW9uIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtNTUs
NyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVu
Z3RoLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9J
bnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNG
dW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5z
aWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFz
Q29uc3RydWN0b3IpOwogCiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluKQogICAgICAgICB7CkBAIC02NSw5ICs2NSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOwot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNT
dGF0ZSopOwotICAgICAgICBjb25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgU3RyaW5nJiBuYW1lKEV4
ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBTdHJpbmcgZGlzcGxh
eU5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIGNvbnN0IFN0cmluZyBjYWxjdWxhdGVkRGlzcGxh
eU5hbWUoRXhlY1N0YXRlKik7CiAKICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlKCkKICAg
ICAgICAgewpAQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgRnVuY3Rpb25FeGVjdXRh
YmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFVT
dHJpbmcmIG5hbWUpOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5h
dGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSosIFNj
b3BlQ2hhaW5Ob2RlKik7CiAKICAgICAgICAgU3RydWN0dXJlKiBjYWNoZUluaGVyaXRvcklEKEV4
ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAKaW5kZXggODkzZGJiYWU1OTk4ZmVhNzU4ODg5ZDMwNTg1OGY4NGE2YjczYTNkNC4uM2U4
ZDQ0OTFkNjlkNzQ4MWUzMzM0OTU0YTNmNTNiNTI5NTE2Y2I0YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0zOTAsNyArMzkwLDcgQEAg
dm9pZCBKU0dsb2JhbERhdGE6OnJlc2V0RGF0ZUNhY2hlKCkKIHsKICAgICBjYWNoZWRVVENPZmZz
ZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgIGRzdE9m
ZnNldENhY2hlLnJlc2V0KCk7Ci0gICAgY2FjaGVkRGF0ZVN0cmluZyA9IFVTdHJpbmcoKTsKKyAg
ICBjYWNoZWREYXRlU3RyaW5nID0gU3RyaW5nKCk7CiAgICAgY2FjaGVkRGF0ZVN0cmluZ1ZhbHVl
ID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKICAgICBkYXRlSW5z
dGFuY2VDYWNoZS5yZXNldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAppbmRleCBiMWI3YWQ4NzA2MmM4MWMzOGZjZWRlYWE2ODllYjRhNTBkMjU1
NjUzLi4wZGRjMjRkOGNjNTY5YjBkNjFmZWFlMTIxMzljYmJmOWU5OTEyNTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAtNzYsNyArNzYsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBSZWdFeHBDYWNoZTsKICAgICBjbGFzcyBTdHJp
bmdpZmllcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7Ci0gICAgY2xhc3MgVVN0cmluZzsKICNpZiBF
TkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgY2xhc3MgUmVnRXhwOwogI2VuZGlmCkBAIC0zNjYs
NyArMzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGRvdWJsZSBjYWNoZWRVVENPZmZz
ZXQ7CiAgICAgICAgIERTVE9mZnNldENhY2hlIGRzdE9mZnNldENhY2hlOwogICAgICAgICAKLSAg
ICAgICAgVVN0cmluZyBjYWNoZWREYXRlU3RyaW5nOworICAgICAgICBTdHJpbmcgY2FjaGVkRGF0
ZVN0cmluZzsKICAgICAgICAgZG91YmxlIGNhY2hlZERhdGVTdHJpbmdWYWx1ZTsKIAogICAgICAg
ICBpbnQgbWF4UmVlbnRyeURlcHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGU4MDE3YjkwNDNi
ZWZjNzMzMTYyNDM3YzYzNmFkYmFlM2MxZDE0NjcuLjc0MWYwYWJmNDQxYzZhZjIyN2E2ZWE4ZGQ2
OTA3M2UzNmUxODAxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJMaXRlcmFsUGFyc2VyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQ
YXJzZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9kdG9h
Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTQyLDYgKzQx
LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIEpTVmFsdWUgZGVjb2Rl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgs
IGMKIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGRv
Tm90VW5lc2NhcGUsIGJvb2wgc3RyaWN0KQogewogICAgIEpTU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIFVTdHJpbmcgc3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgCiAgICAgaWYgKHN0ci5pczhCaXQoKSkKICAgICAgICAg
cmV0dXJuIGRlY29kZShleGVjLCBzdHIuY2hhcmFjdGVyczgoKSwgc3RyLmxlbmd0aCgpLCBkb05v
dFVuZXNjYXBlLCBzdHJpY3QpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIGRvdWJsZSBwYXJzZUludE92
ZXJmbG93KGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoLCBpbnQgcmFkaXgpCiAvLyBFUzUuMSAx
NS4xLjIuMgogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgogQUxXQVlTX0lOTElORQotc3Rh
dGljIGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBjb25zdCBDaGFyVHlwZSogZGF0
YSwgaW50IHJhZGl4KQorc3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBTdHJpbmcmIHMsIGNv
bnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgcmFkaXgpCiB7CiAgICAgLy8gMS4gTGV0IGlucHV0U3Ry
aW5nIGJlIFRvU3RyaW5nKHN0cmluZykuCiAgICAgLy8gMi4gTGV0IFMgYmUgYSBuZXdseSBjcmVh
dGVkIHN1YnN0cmluZyBvZiBpbnB1dFN0cmluZyBjb25zaXN0aW5nIG9mIHRoZSBmaXJzdCBjaGFy
YWN0ZXIgdGhhdCBpcyBub3QgYQpAQCAtMzEzLDcgKzMxMyw3IEBAIHN0YXRpYyBkb3VibGUgcGFy
c2VJbnQoY29uc3QgVVN0cmluZyYgcywgY29uc3QgQ2hhclR5cGUqIGRhdGEsIGludCByYWRpeCkK
ICAgICByZXR1cm4gc2lnbiAqIG51bWJlcjsKIH0KIAotc3RhdGljIGRvdWJsZSBwYXJzZUludChj
b25zdCBVU3RyaW5nJiBzLCBpbnQgcmFkaXgpCitzdGF0aWMgZG91YmxlIHBhcnNlSW50KGNvbnN0
IFN0cmluZyYgcywgaW50IHJhZGl4KQogewogICAgIGlmIChzLmlzOEJpdCgpKQogICAgICAgICBy
ZXR1cm4gcGFyc2VJbnQocywgcy5jaGFyYWN0ZXJzOCgpLCByYWRpeCk7CkBAIC00MzIsNyArNDMy
LDcgQEAgc3RhdGljIGRvdWJsZSB0b0RvdWJsZShjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywg
dW5zaWduZWQgc2l6ZSkKIH0KIAogLy8gU2VlIGVjbWEtMjYyIDkuMy4xCi1kb3VibGUganNUb051
bWJlcihjb25zdCBVU3RyaW5nJiBzKQorZG91YmxlIGpzVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBz
KQogewogICAgIHVuc2lnbmVkIHNpemUgPSBzLmxlbmd0aCgpOwogCkBAIC00NTAsNyArNDUwLDcg
QEAgZG91YmxlIGpzVG9OdW1iZXIoY29uc3QgVVN0cmluZyYgcykKICAgICByZXR1cm4gdG9Eb3Vi
bGUocy5jaGFyYWN0ZXJzMTYoKSwgc2l6ZSk7CiB9CiAKLXN0YXRpYyBkb3VibGUgcGFyc2VGbG9h
dChjb25zdCBVU3RyaW5nJiBzKQorc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KGNvbnN0IFN0cmlu
ZyYgcykKIHsKICAgICB1bnNpZ25lZCBzaXplID0gcy5sZW5ndGgoKTsKIApAQCAtNTA1LDcgKzUw
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0
YXRlKiBleGVjKQogICAgIGlmICgheC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHgpOwogCi0gICAgVVN0cmluZyBzID0geC50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgU3RyaW5nIHMgPSB4LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAog
ICAgIGlmIChzLmlzOEJpdCgpKSB7CiAgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBh
cnNlcihleGVjLCBzLmNoYXJhY3RlcnM4KCksIHMubGVuZ3RoKCksIE5vblN0cmljdEpTT04pOwpA
QCAtNTQ4LDcgKzU0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y1BhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAvLyBJZiBUb1N0cmluZyB0
aHJvd3MsIHdlIHNob3VsZG4ndCBjYWxsIFRvSW50MzIuCi0gICAgVVN0cmluZyBzID0gdmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtNjE1LDcg
KzYxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICIqKy0uL0BfIjsKIAogICAgIEpTU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotICAgIFVTdHJpbmcgc3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKHN0ci5pczhCaXQoKSkgewogICAg
ICAgICBjb25zdCBMQ2hhciogYyA9IHN0ci5jaGFyYWN0ZXJzOCgpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGsgPSAwOyBrIDwgc3RyLmxlbmd0aCgpOyBrKyssIGMrKykgewpAQCAtNjUzLDggKzY1
Myw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2FwZShFeGVj
U3RhdGUqIGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Vu
ZXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBVU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIFVTdHJpbmcgc3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBTdHJpbmcgc3RyID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGludCBrID0g
MDsKICAgICBpbnQgbGVuID0gc3RyLmxlbmd0aCgpOwogICAgIApAQCAtNjk5LDcgKzY5OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcoZXhlYywgYnVpbGRlci50b1VTdHJpbmcoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgYnVpbGRlci50b1N0cmluZygpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDg4MzNiZjZkMGNmMDMzNmM0MWVlNDJiNjViNGJl
ZWY3NmY3ZDZjZGEuLjc1N2M5ZGNhYzY2ZDQxMGE3NjRiNjg1MDFiM2EwY2MwMGU3YTExY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaApAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBBTFdB
WVNfSU5MSU5FIGRvdWJsZSBwYXJzZUludE92ZXJmbG93KGNvbnN0IGNoYXIqIHMsIGludCBsZW5n
dGgsIGludCByYWRpeCkgeyByZXR1cm4gcGFyc2VJbnRPdmVyZmxvdyhyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCwgcmFkaXgpOyB9CiAgICAgZG91YmxlIHBhcnNlSW50
T3ZlcmZsb3coY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQgcmFkaXgpOwogICAgIGJvb2wg
aXNTdHJXaGl0ZVNwYWNlKFVDaGFyKTsKLSAgICBkb3VibGUganNUb051bWJlcihjb25zdCBVU3Ry
aW5nJiBzKTsKKyAgICBkb3VibGUganNUb051bWJlcihjb25zdCBXVEY6OlN0cmluZyYpOwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09O
T2JqZWN0LmNwcAppbmRleCBiYTg4N2YzYjRiYTZmYWUwNjBkYmFjODc0ZWJmNTI1Y2YzY2Q0MTc0
Li45YzAxODk1NzVlMDM5ZmI2MDYxYzM5NTZiOWQxNTBkOTVjMDBkNjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMzYsOSArMzYsOCBAQAog
I2luY2x1ZGUgIkxvY2FsU2NvcGUuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgotI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVk
ZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC05NCw3ICs5Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2JqZWN0LmdldCgpOyB9CiAKLSAgICAgICAgYm9vbCBhcHBlbmROZXh0
UHJvcGVydHkoU3RyaW5naWZpZXImLCBVU3RyaW5nQnVpbGRlciYpOworICAgICAgICBib29sIGFw
cGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYsIFN0cmluZ0J1aWxkZXImKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIExvY2FsPEpTT2JqZWN0PiBtX29iamVjdDsKQEAgLTEwNywxNyArMTA2
LDE3IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgSG9sZGVyOwogCi0gICAgc3RhdGlj
IHZvaWQgYXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiwgY29uc3QgVVN0cmluZyYp
OworICAgIHN0YXRpYyB2b2lkIGFwcGVuZFF1b3RlZFN0cmluZyhTdHJpbmdCdWlsZGVyJiwgY29u
c3QgU3RyaW5nJik7CiAKICAgICBKU1ZhbHVlIHRvSlNPTihKU1ZhbHVlLCBjb25zdCBQcm9wZXJ0
eU5hbWVGb3JGdW5jdGlvbkNhbGwmKTsKIAogICAgIGVudW0gU3RyaW5naWZ5UmVzdWx0IHsgU3Ry
aW5naWZ5RmFpbGVkLCBTdHJpbmdpZnlTdWNjZWVkZWQsIFN0cmluZ2lmeUZhaWxlZER1ZVRvVW5k
ZWZpbmVkVmFsdWUgfTsKLSAgICBTdHJpbmdpZnlSZXN1bHQgYXBwZW5kU3RyaW5naWZpZWRWYWx1
ZShVU3RyaW5nQnVpbGRlciYsIEpTVmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3Bl
cnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOworICAgIFN0cmluZ2lmeVJlc3VsdCBhcHBlbmRTdHJp
bmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImLCBKU1ZhbHVlLCBKU09iamVjdCogaG9sZGVyLCBj
b25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmKTsKIAogICAgIGJvb2wgd2lsbEluZGVu
dCgpIGNvbnN0OwogICAgIHZvaWQgaW5kZW50KCk7CiAgICAgdm9pZCB1bmluZGVudCgpOwotICAg
IHZvaWQgc3RhcnROZXdMaW5lKFVTdHJpbmdCdWlsZGVyJikgY29uc3Q7CisgICAgdm9pZCBzdGFy
dE5ld0xpbmUoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCiAgICAgRXhlY1N0YXRlKiBjb25zdCBt
X2V4ZWM7CiAgICAgY29uc3QgTG9jYWw8VW5rbm93bj4gbV9yZXBsYWNlcjsKQEAgLTEyNSwxMSAr
MTI0LDExIEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbV9hcnJheVJlcGxhY2Vy
UHJvcGVydHlOYW1lczsKICAgICBDYWxsVHlwZSBtX3JlcGxhY2VyQ2FsbFR5cGU7CiAgICAgQ2Fs
bERhdGEgbV9yZXBsYWNlckNhbGxEYXRhOwotICAgIGNvbnN0IFVTdHJpbmcgbV9nYXA7CisgICAg
Y29uc3QgU3RyaW5nIG1fZ2FwOwogCiAgICAgVmVjdG9yPEhvbGRlciwgMTY+IG1faG9sZGVyU3Rh
Y2s7Ci0gICAgVVN0cmluZyBtX3JlcGVhdGVkR2FwOwotICAgIFVTdHJpbmcgbV9pbmRlbnQ7Cisg
ICAgU3RyaW5nIG1fcmVwZWF0ZWRHYXA7CisgICAgU3RyaW5nIG1faW5kZW50OwogfTsKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhlbHBlciBmdW5jdGlvbnMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0OCw3ICsxNDcsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUgdW53cmFwQm94ZWRQcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotc3RhdGljIGlubGluZSBVU3RyaW5nIGdhcChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc3BhY2UpCitzdGF0aWMgaW5saW5lIFN0cmluZyBnYXAo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNwYWNlKQogewogICAgIGNvbnN0IHVuc2lnbmVkIG1h
eEdhcExlbmd0aCA9IDEwOwogICAgIHNwYWNlID0gdW53cmFwQm94ZWRQcmltaXRpdmUoZXhlYywg
c3BhY2UpOwpAQCAtMTY2LDExICsxNjUsMTEgQEAgc3RhdGljIGlubGluZSBVU3RyaW5nIGdhcChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc3BhY2UpCiAgICAgICAgIFVDaGFyIHNwYWNlc1ttYXhH
YXBMZW5ndGhdOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCiAgICAg
ICAgICAgICBzcGFjZXNbaV0gPSAnICc7Ci0gICAgICAgIHJldHVybiBVU3RyaW5nKHNwYWNlcywg
Y291bnQpOworICAgICAgICByZXR1cm4gU3RyaW5nKHNwYWNlcywgY291bnQpOwogICAgIH0KIAog
ICAgIC8vIElmIHRoZSBzcGFjZSB2YWx1ZSBpcyBhIHN0cmluZywgdXNlIGl0IGFzIHRoZSBnYXAg
c3RyaW5nLCBvdGhlcndpc2UgdXNlIG5vIGdhcCBzdHJpbmcuCi0gICAgVVN0cmluZyBzcGFjZXMg
PSBzcGFjZS5nZXRTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHNwYWNlcyA9IHNwYWNlLmdldFN0
cmluZyhleGVjKTsKICAgICBpZiAoc3BhY2VzLmxlbmd0aCgpID4gbWF4R2FwTGVuZ3RoKSB7CiAg
ICAgICAgIHNwYWNlcyA9IHNwYWNlcy5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBtYXhHYXBMZW5n
dGgpOwogICAgIH0KQEAgLTI0NSwxNyArMjQ0LDE3IEBAIExvY2FsPFVua25vd24+IFN0cmluZ2lm
aWVyOjpzdHJpbmdpZnkoSGFuZGxlPFVua25vd24+IHZhbHVlKQogICAgIFByb3BlcnR5TmFtZUZv
ckZ1bmN0aW9uQ2FsbCBlbXB0eVByb3BlcnR5TmFtZShtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0KG1fZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0
eUlkZW50aWZpZXIsIHZhbHVlLmdldCgpKTsKIAotICAgIFVTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
KyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBpZiAoYXBwZW5kU3RyaW5naWZpZWRWYWx1
ZShyZXN1bHQsIHZhbHVlLmdldCgpLCBvYmplY3QsIGVtcHR5UHJvcGVydHlOYW1lKSAhPSBTdHJp
bmdpZnlTdWNjZWVkZWQpCiAgICAgICAgIHJldHVybiBMb2NhbDxVbmtub3duPihtX2V4ZWMtPmds
b2JhbERhdGEoKSwganNVbmRlZmluZWQoKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBMb2NhbDxVbmtub3duPihtX2V4ZWMtPmdsb2JhbERhdGEoKSwg
anNOdWxsKCkpOwogCi0gICAgcmV0dXJuIExvY2FsPFVua25vd24+KG1fZXhlYy0+Z2xvYmFsRGF0
YSgpLCBqc1N0cmluZyhtX2V4ZWMsIHJlc3VsdC50b1VTdHJpbmcoKSkpOworICAgIHJldHVybiBM
b2NhbDxVbmtub3duPihtX2V4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcobV9leGVjLCByZXN1
bHQudG9TdHJpbmcoKSkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1zdGF0
aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1VTdHJpbmdCdWlsZGVyKFVTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBjb25zdCBDaGFyVHlwZSogZGF0YSwgaW50IGxlbmd0aCkKK3N0YXRpYyB2b2lkIGFwcGVu
ZFN0cmluZ1RvU3RyaW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDaGFy
VHlwZSogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgIGludCBzdGFydCA9IGk7CkBAIC0zMDMsMTYgKzMwMiwxNiBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1VTdHJpbmdCdWlsZGVyKFVTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBjb25zdCBDaGFyVHlwZQogICAgIH0KIH0KICAgICAKLXZvaWQgU3RyaW5naWZpZXI6
OmFwcGVuZFF1b3RlZFN0cmluZyhVU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVVN0cmlu
ZyYgdmFsdWUpCit2b2lkIFN0cmluZ2lmaWVyOjphcHBlbmRRdW90ZWRTdHJpbmcoU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpbnQgbGVuZ3RoID0g
dmFsdWUubGVuZ3RoKCk7CiAKICAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogCiAgICAgaWYgKHZh
bHVlLmlzOEJpdCgpKQotICAgICAgICBhcHBlbmRTdHJpbmdUb1VTdHJpbmdCdWlsZGVyPExDaGFy
PihidWlsZGVyLCB2YWx1ZS5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOworICAgICAgICBhcHBlbmRT
dHJpbmdUb1N0cmluZ0J1aWxkZXI8TENoYXI+KGJ1aWxkZXIsIHZhbHVlLmNoYXJhY3RlcnM4KCks
IGxlbmd0aCk7CiAgICAgZWxzZQotICAgICAgICBhcHBlbmRTdHJpbmdUb1VTdHJpbmdCdWlsZGVy
PFVDaGFyPihidWlsZGVyLCB2YWx1ZS5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKKyAgICAgICAg
YXBwZW5kU3RyaW5nVG9TdHJpbmdCdWlsZGVyPFVDaGFyPihidWlsZGVyLCB2YWx1ZS5jaGFyYWN0
ZXJzMTYoKSwgbGVuZ3RoKTsKIAogICAgIGJ1aWxkZXIuYXBwZW5kKCciJyk7CiB9CkBAIC0zNDEs
NyArMzQwLDcgQEAgaW5saW5lIEpTVmFsdWUgU3RyaW5naWZpZXI6OnRvSlNPTihKU1ZhbHVlIHZh
bHVlLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkMKICAgICByZXR1cm4gY2FsbChtX2V4
ZWMsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB2YWx1ZSwgYXJncyk7CiB9CiAKLVN0cmlu
Z2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFs
dWUoVVN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBob2xk
ZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQorU3Ry
aW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRW
YWx1ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBKU09iamVjdCogaG9s
ZGVyLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3BlcnR5TmFtZSkKIHsK
ICAgICAvLyBDYWxsIHRoZSB0b0pTT04gZnVuY3Rpb24uCiAgICAgdmFsdWUgPSB0b0pTT04odmFs
dWUsIHByb3BlcnR5TmFtZSk7CkBAIC0zNzYsNyArMzc1LDcgQEAgU3RyaW5naWZpZXI6OlN0cmlu
Z2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVp
bGRlciYKICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKICAgICB9CiAKLSAgICBV
U3RyaW5nIHN0cmluZ1ZhbHVlOworICAgIFN0cmluZyBzdHJpbmdWYWx1ZTsKICAgICBpZiAodmFs
dWUuZ2V0U3RyaW5nKG1fZXhlYywgc3RyaW5nVmFsdWUpKSB7CiAgICAgICAgIGFwcGVuZFF1b3Rl
ZFN0cmluZyhidWlsZGVyLCBzdHJpbmdWYWx1ZSk7CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlT
dWNjZWVkZWQ7CkBAIC0zODcsNyArMzg2LDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3Vs
dCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYKICAg
ICAgICAgaWYgKCFpc2Zpbml0ZShudW1iZXIpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
Im51bGwiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoVVN0cmlu
Zzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KG51bWJlcikpOworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmdpZnlTdWNjZWVkZWQ7CiAgICAgfQogCkBAIC00NDgsNyArNDQ3LDcg
QEAgaW5saW5lIHZvaWQgU3RyaW5naWZpZXI6OmluZGVudCgpCiAgICAgLy8gVXNlIGEgc2luZ2xl
IHNoYXJlZCBzdHJpbmcsIG1fcmVwZWF0ZWRHYXAsIHNvIHdlIGRvbid0IGtlZXAgYWxsb2NhdGlu
ZyBuZXcgb25lcyBhcyB3ZSBpbmRlbnQgYW5kIHVuaW5kZW50LgogICAgIHVuc2lnbmVkIG5ld1Np
emUgPSBtX2luZGVudC5sZW5ndGgoKSArIG1fZ2FwLmxlbmd0aCgpOwogICAgIGlmIChuZXdTaXpl
ID4gbV9yZXBlYXRlZEdhcC5sZW5ndGgoKSkKLSAgICAgICAgbV9yZXBlYXRlZEdhcCA9IG1ha2VV
U3RyaW5nKG1fcmVwZWF0ZWRHYXAsIG1fZ2FwKTsKKyAgICAgICAgbV9yZXBlYXRlZEdhcCA9IG1h
a2VTdHJpbmcobV9yZXBlYXRlZEdhcCwgbV9nYXApOwogICAgIEFTU0VSVChuZXdTaXplIDw9IG1f
cmVwZWF0ZWRHYXAubGVuZ3RoKCkpOwogICAgIG1faW5kZW50ID0gbV9yZXBlYXRlZEdhcC5zdWJz
dHJpbmdTaGFyaW5nSW1wbCgwLCBuZXdTaXplKTsKIH0KQEAgLTQ1OSw3ICs0NTgsNyBAQCBpbmxp
bmUgdm9pZCBTdHJpbmdpZmllcjo6dW5pbmRlbnQoKQogICAgIG1faW5kZW50ID0gbV9yZXBlYXRl
ZEdhcC5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBtX2luZGVudC5sZW5ndGgoKSAtIG1fZ2FwLmxl
bmd0aCgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3RyaW5naWZpZXI6OnN0YXJ0TmV3TGluZShVU3Ry
aW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKK2lubGluZSB2b2lkIFN0cmluZ2lmaWVyOjpzdGFy
dE5ld0xpbmUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKIHsKICAgICBpZiAobV9nYXAu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC00NzcsNyArNDc2LDcgQEAgaW5saW5lIFN0
cmluZ2lmaWVyOjpIb2xkZXI6OkhvbGRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2Jq
ZWN0KiBvYmplY3QpCiB7CiB9CiAKLWJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4
dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIpCitib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdp
ZmllciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAgQVNTRVJU
KG1faW5kZXggPD0gbV9zaXplKTsKIApAQCAtNzA0LDcgKzcwMyw3IEBAIE5FVkVSX0lOTElORSBK
U1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIEFycmF5RW5kVmlzaXRNZW1iZXI6IHsKICAgICAgICAgICAgICAgICBK
U0FycmF5KiBhcnJheSA9IGFycmF5U3RhY2sucGVlaygpOwotICAgICAgICAgICAgICAgIEpTVmFs
dWUgZmlsdGVyZWRWYWx1ZSA9IGNhbGxSZXZpdmVyKGFycmF5LCBqc1N0cmluZyhtX2V4ZWMsIFVT
dHJpbmc6Om51bWJlcihpbmRleFN0YWNrLmxhc3QoKSkpLCBvdXRWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIoYXJyYXksIGpzU3RyaW5n
KG1fZXhlYywgU3RyaW5nOjpudW1iZXIoaW5kZXhTdGFjay5sYXN0KCkpKSwgb3V0VmFsdWUpOwog
ICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
YXJyYXksIG1fZXhlYywgaW5kZXhTdGFjay5sYXN0KCkpOwogICAgICAgICAgICAgICAgIGVsc2UK
QEAgLTgxMSw3ICs4MTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90
b0Z1bmNQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENv
dW50KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhl
YywgIkpTT04ucGFyc2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKTsKLSAgICBV
U3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAKQEAgLTg1MiwxMiArODUxLDEyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdHJpbmdpZmllcihleGVj
LCByZXBsYWNlciwgc3BhY2UpLnN0cmluZ2lmeSh2YWx1ZSkuZ2V0KCkpOwogfQogCi1VU3RyaW5n
IEpTT05TdHJpbmdpZnkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBp
bmRlbnQpCitTdHJpbmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUsIHVuc2lnbmVkIGluZGVudCkKIHsKICAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7CiAgICAgTG9jYWw8VW5rbm93bj4gcmVzdWx0ID0gU3RyaW5naWZpZXIoZXhlYywg
TG9jYWw8VW5rbm93bj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSksIExvY2FsPFVua25v
d24+KGV4ZWMtPmdsb2JhbERhdGEoKSwganNOdW1iZXIoaW5kZW50KSkpLnN0cmluZ2lmeShMb2Nh
bDxVbmtub3duPihleGVjLT5nbG9iYWxEYXRhKCksIHZhbHVlKSk7CiAgICAgaWYgKHJlc3VsdC5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gVVN0cmluZygpOworICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXRTdHJpbmcoZXhlYyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAppbmRleCAzYjg2NDc3
MTRlOWJmNDMxZmI3YjhkMWI3ZTA1MGM0MDZiNDZmZDY1Li5iNTM3YjkxNDQwMjBhOTQwYzhlOTdm
NTkxNzY4OWUyM2IwYTQ3ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09OT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5oCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgfTsKIAot
ICAgIFVTdHJpbmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGluZGVudCk7CisgICAgU3RyaW5nIEpTT05TdHJpbmdpZnkoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgdW5zaWduZWQgaW5kZW50KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBjNDBjNjI1ZTE2OTNh
Yjc2ZDZhM2NhYWNiYzA5YjBkZDBlYThkNWQ5Li4zMjc1YjIyMmI1Y2VmZmI4MDAzYTA4YzI3ZTc5
OTJkMGFmMjUzMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAjZW5kaWYKIH0KIAotVVN0cmlu
ZyBKU09iamVjdDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCitTdHJpbmcgSlNP
YmplY3Q6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IENs
YXNzSW5mbyogaW5mbyA9IG9iamVjdC0+Y2xhc3NJbmZvKCk7CiAgICAgQVNTRVJUKGluZm8pOwpA
QCAtODE4LDcgKzgxOCw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDllMTQ0NWU2OWNkNGUxYWY1ZTc1NDg0ZDNjNDY1
MGQxZTAyMmMyMGIuLmZmM2ZiMmE2MmE4ZjY5NWUxNDliMjE3MjczZjc1NDA3MzExNjZmMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNjUsNyArNjUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgc3RydWN0IEhhc2hU
YWJsZTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihF
eGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmpl
Y3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogICAgIGV4dGVy
biBKU19FWFBPUlREQVRBIGNvbnN0IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcjsKIAogICAgIC8vIEVDTUEgMjYyLTMgOC42LjEKQEAgLTk5LDcgKzk5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVj
dCopOwogCiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKQEAgLTYyMCw3
ICs2MjAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAvLyBpZGVudGlmaWVyLiBUaGUgZmly
c3QgdGltZSB3ZSBwZXJmb3JtIGEgcHJvcGVydHkgYWNjZXNzIHdpdGggYSBnaXZlbiBzdHJpbmcs
IHRyeQogLy8gcGVyZm9ybWluZyB0aGUgcHJvcGVydHkgbWFwIGxvb2t1cCB3aXRob3V0IGZvcm1p
bmcgYW4gaWRlbnRpZmllci4gV2UgZGV0ZWN0IHRoaXMKIC8vIGNhc2UgYnkgY2hlY2tpbmcgd2hl
dGhlciB0aGUgaGFzaCBoYXMgeWV0IGJlZW4gc2V0IGZvciB0aGlzIHN0cmluZy4KLUFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVTdHJpbmcmIG5hbWUpCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNDZWxsOjpmYXN0
R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSkgewogICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggNGViMmE1Mjk3NjJj
MGVlNjQ2Y2NhOGJkMmNkNGFlMWI4MTkxMzgyNi4uOTc3ZjBkMTAwM2M4NWE5ODYxM2MyYjg4ZjRk
M2U1MGNkOGViZmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9wZShF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB9CiAKIC8vIE92ZXJ2aWV3OiBUaGVzZSBmdW5jdGlvbnMg
Y29udmVydCBhIEpTU3RyaW5nIGZyb20gaG9sZGluZyBhIHN0cmluZyBpbiByb3BlIGZvcm0KLS8v
IGRvd24gdG8gYSBzaW1wbGUgVVN0cmluZyByZXByZXNlbnRhdGlvbi4gIEl0IGRvZXMgc28gYnkg
YnVpbGRpbmcgdXAgdGhlIHN0cmluZworLy8gZG93biB0byBhIHNpbXBsZSBTdHJpbmcgcmVwcmVz
ZW50YXRpb24uIEl0IGRvZXMgc28gYnkgYnVpbGRpbmcgdXAgdGhlIHN0cmluZwogLy8gYmFja3dh
cmRzLCBzaW5jZSB3ZSB3YW50IHRvIGF2b2lkIHJlY3Vyc2lvbiwgd2UgZXhwZWN0IHRoYXQgdGhl
IHRyZWUgc3RydWN0dXJlCiAvLyByZXByZXNlbnRpbmcgdGhlIHJvcGUgaXMgbGlrZWx5IGltYmFs
YW5jZWQgd2l0aCBtb3JlIG5vZGVzIGRvd24gdGhlIGxlZnQgc2lkZQogLy8gKHNpbmNlIGFwcGVu
ZGluZyB0byB0aGUgc3RyaW5nIGlzIGxpa2VseSBtb3JlIGNvbW1vbikgLSBhbmQgYXMgc3VjaCBy
ZXNvbHZpbmcKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIEpTUm9wZVN0cmluZzo6b3V0T2ZNZW1v
cnkoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc19t
YXhJbnRlcm5hbFJvcGVMZW5ndGggJiYgbV9maWJlcnNbaV07ICsraSkKICAgICAgICAgbV9maWJl
cnNbaV0uY2xlYXIoKTsKICAgICBBU1NFUlQoaXNSb3BlKCkpOwotICAgIEFTU0VSVChtX3ZhbHVl
ID09IFVTdHJpbmcoKSk7CisgICAgQVNTRVJUKG1fdmFsdWUuaXNOdWxsKCkpOwogICAgIGlmIChl
eGVjKQogICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCBlOTE1NTNhZWIyNDk2MGY4ZTc2NThl
NjgwNmExZTk0NjUzZGQ3NTQyLi5lMDA5ZWNiOGIxYzVmMjU3YzZjMWRiM2Q1MWUxNjAyNDJiYzQ0
Mzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTM3LDI3
ICszNywyNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5n
KEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSop
OwotICAgIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbERhdGEqLCBjb25zdCBVU3RyaW5nJik7
IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlmIHBhc3NlZCBudWxsIHN0cmluZwotICAgIEpTU3Ry
aW5nKiBqc1N0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7IC8vIHJldHVybnMgZW1w
dHkgc3RyaW5nIGlmIHBhc3NlZCBudWxsIHN0cmluZworICAgIEpTU3RyaW5nKiBqc1N0cmluZyhK
U0dsb2JhbERhdGEqLCBjb25zdCBTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYg
cGFzc2VkIG51bGwgc3RyaW5nCisgICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYpOyAvLyByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJp
bmcKIAogICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEq
LCBVQ2hhcik7CiAgICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEV4ZWNTdGF0
ZSosIFVDaGFyKTsKLSAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCk7Ci0gICAgSlNTdHJpbmcq
IGpzU3Vic3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0
ZSosIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCk7CisgICAgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEpT
R2xvYmFsRGF0YSosIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
JiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gTm9uLXRyaXZp
YWwgc3RyaW5ncyBhcmUgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBsb25nLgogICAgIC8vIFRoZXNl
IGZ1bmN0aW9ucyBhcmUgZmFzdGVyIHRoYW4ganVzdCBjYWxsaW5nIGpzU3RyaW5nLgotICAgIEpT
U3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYp
OwotICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYpOworICAgIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgU3RyaW5nJik7CisgICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmKTsKICAgICBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpT
R2xvYmFsRGF0YSosIGNvbnN0IGNoYXIqKTsKICAgICBKU1N0cmluZyoganNOb250cml2aWFsU3Ry
aW5nKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSB1c2VkIGZv
ciBzdHJpbmdzIHRoYXQgYXJlIG93bmVkIGJ5IGFuIG9iamVjdCB0aGF0IHdpbGwKICAgICAvLyBs
aWtlbHkgb3V0bGl2ZSB0aGUgSlNWYWx1ZSB0aGlzIG1ha2VzLCBzdWNoIGFzIHRoZSBwYXJzZSB0
cmVlIG9yIGEKLSAgICAvLyBET00gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBVU3RyaW5nCi0gICAg
SlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmluZyYpOyAK
LSAgICBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7
IAorICAgIC8vIERPTSBvYmplY3QgdGhhdCBjb250YWlucyBhIFN0cmluZworICAgIEpTU3RyaW5n
KiBqc093bmVkU3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFN0cmluZyYpOworICAgIEpTU3Ry
aW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgSlNS
b3BlU3RyaW5nKiBqc1N0cmluZ0J1aWxkZXIoSlNHbG9iYWxEYXRhKik7CiAKQEAgLTEzNiw4ICsx
MzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAg
ICAgICAgIH0KIAotICAgICAgICBjb25zdCBVU3RyaW5nJiB2YWx1ZShFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgY29uc3QgVVN0cmluZyYgdHJ5R2V0VmFsdWUoKSBjb25zdDsKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiB2YWx1ZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgY29uc3QgU3Ry
aW5nJiB0cnlHZXRWYWx1ZSgpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJl
dHVybiBtX2xlbmd0aDsgfQogCiAgICAgICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRl
KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CkBAIC0xOTAsOSArMTkwLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBJczhCaXQgPSAxdQogICAgICAgICB9OwogCi0gICAg
ICAgIC8vIEEgc3RyaW5nIGlzIHJlcHJlc2VudGVkIGVpdGhlciBieSBhIFVTdHJpbmcgb3IgYSBy
b3BlIG9mIGZpYmVycy4KKyAgICAgICAgLy8gQSBzdHJpbmcgaXMgcmVwcmVzZW50ZWQgZWl0aGVy
IGJ5IGEgU3RyaW5nIG9yIGEgcm9wZSBvZiBmaWJlcnMuCiAgICAgICAgIHVuc2lnbmVkIG1fbGVu
Z3RoOwotICAgICAgICBtdXRhYmxlIFVTdHJpbmcgbV92YWx1ZTsKKyAgICAgICAgbXV0YWJsZSBT
dHJpbmcgbV92YWx1ZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CkBAIC0yMDMsNyArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgVVN0cmluZyYgc3RyaW5nKCkgeyBB
U1NFUlQoIWlzUm9wZSgpKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICAgICAgU3RyaW5nJiBzdHJp
bmcoKSB7IEFTU0VSVCghaXNSb3BlKCkpOyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgICAgIGZy
aWVuZCBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsK
ICAgICAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqLCBKU1N0cmlu
ZyosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTM0MCwxMCArMzQwLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5n
cy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7Ci0gICAgICAgIHJldHVybiBK
U1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBVU3RyaW5nKCZjLCAxKS5pbXBsKCkpOworICAg
ICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgU3RyaW5nKCZjLCAxKS5p
bXBsKCkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hh
cmFjdGVyU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcywgdW5zaWdu
ZWQgb2Zmc2V0KQorICAgIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVy
U3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZz
ZXQpCiAgICAgewogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xv
YmFsRGF0YSgpOwogICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHMubGVuZ3RoKCkpKTsKQEAgLTM1OCwyMyArMzU4LDIzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBBU1NFUlQocyk7CiAgICAgICAgIEFTU0VSVChzWzBdKTsKICAgICAgICAgQVNTRVJUKHNb
MV0pOwotICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgVVN0cmlu
ZyhzKS5pbXBsKCkpOworICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqZ2xvYmFsRGF0
YSwgU3RyaW5nKHMpLmltcGwoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTU3RyaW5nKiBqc05v
bnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBz
KQorICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBzKQogICAgIHsKICAgICAgICAgQVNTRVJUKHMubGVu
Z3RoKCkgPiAxKTsKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEs
IHMuaW1wbCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgY29uc3QgVVN0cmluZyYgSlNTdHJpbmc6
OnZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICBpbmxpbmUgY29uc3QgU3RyaW5nJiBK
U1N0cmluZzo6dmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KGlzUm9wZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4o
dGhpcyktPnJlc29sdmVSb3BlKGV4ZWMpOwogICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgICB9
CiAKLSAgICBpbmxpbmUgY29uc3QgVVN0cmluZyYgSlNTdHJpbmc6OnRyeUdldFZhbHVlKCkgY29u
c3QKKyAgICBpbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6dHJ5R2V0VmFsdWUoKSBjb25z
dAogICAgIHsKICAgICAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlKDApOwpAQCAtMzkwLDcgKzM5
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJT
dWJzdHJpbmcoZXhlYywgbV92YWx1ZSwgaSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTU3RyaW5n
KiBqc1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCisg
ICAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNv
bnN0IFN0cmluZyYgcykKICAgICB7CiAgICAgICAgIGludCBzaXplID0gcy5sZW5ndGgoKTsKICAg
ICAgICAgaWYgKCFzaXplKQpAQCAtNDE0LDcgKzQxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICByZXR1cm4ganNTdWJzdHJpbmcoZ2xvYmFsRGF0YSwgcy0+dmFsdWUoZXhlYyksIG9mZnNl
dCwgbGVuZ3RoKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nOChK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmc4KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPD0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpKTsKICAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwpAQCAtNDI5LDcgKzQyOSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3du
ZXIoKmdsb2JhbERhdGEsIFN0cmluZ0ltcGw6OmNyZWF0ZTgocy5pbXBsKCksIG9mZnNldCwgbGVu
Z3RoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKQorICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CkBAIC00NDQsNyArNDQ0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xv
YmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlKHMuaW1wbCgpLCBvZmZzZXQsIGxlbmd0aCkpOwog
ICAgIH0KIAotICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc093
bmVkU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBzKQogICAg
IHsKICAgICAgICAgaW50IHNpemUgPSBzLmxlbmd0aCgpOwogICAgICAgICBpZiAoIXNpemUpCkBA
IC00NjMsMTMgKzQ2MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUg
SlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBqc0VtcHR5
U3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCkpOyB9Ci0gICAgaW5saW5lIEpTU3RyaW5nKiBqc1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMpIHsgcmV0dXJuIGpzU3RyaW5n
KCZleGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9CisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNTdHJpbmcoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgVUNoYXIgYykgeyByZXR1cm4ganNTaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgYyk7IH0KLSAgICBpbmxpbmUgSlNT
dHJpbmcqIGpzU3Vic3RyaW5nOChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmluZzgoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgcywgb2Zmc2V0LCBsZW5ndGgpOyB9Ci0gICAgaW5saW5lIEpTU3Ry
aW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmluZygmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBzLCBvZmZzZXQsIGxlbmd0aCk7IH0KLSAgICBpbmxpbmUgSlNTdHJpbmcq
IGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMpIHsg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQorICAg
IGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmc4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4ganNTdWJz
dHJpbmc4KCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQorICAgIGlu
bGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmlu
ZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzLCBvZmZzZXQsIGxlbmd0aCk7IH0KKyAgICBpbmxpbmUg
SlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMp
OyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBjaGFyKiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPmds
b2JhbERhdGEoKSwgcyk7IH0KLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVkU3RyaW5nKCZl
eGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9IAorICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0
cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29s
IEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewpAQCAtNTI3LDE0
ICs1MjcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiB0b1N0cmluZ1Nsb3dD
YXNlKGV4ZWMpOwogICAgIH0KIAotICAgIGlubGluZSBVU3RyaW5nIEpTVmFsdWU6OnRvVVN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CisgICAgaW5saW5lIFN0cmluZyBKU1ZhbHVlOjp0b1dU
RlN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNTdHJp
bmcoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgp
KS0+dmFsdWUoZXhlYyk7Ci0gICAgICAgIHJldHVybiB0b1VTdHJpbmdTbG93Q2FzZShleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAg
QUxXQVlTX0lOTElORSBVU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1VTdHJpbmcoY29u
c3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKKyAgICBBTFdBWVNfSU5MSU5FIFN0
cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUs
IEV4ZWNTdGF0ZSogZXhlYykKICAgICB7CiAgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKQEAg
LTU1MiwxMiArNTUyLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUg
VVN0cmluZyBKU1ZhbHVlOjp0b1VTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAor
ICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc1N0cmluZygpKQogICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVj
KTsKIAotICAgICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvVVN0cmluZygqdGhp
cywgZXhlYyk7CisgICAgICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmco
KnRoaXMsIGV4ZWMpOwogICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCmluZGV4IDFhMmI4MTJmMGYy
YWQyMDg1NzZjMGM5OGNhYTcyYzZhMjdhNWIyYTQuLmU3Nzc4ZTRmYjk1OWMyMTMxOWU5MWYwODk3
OGI3MzM2MjEzNzQ1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nQnVpbGRlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29uY2F0
ZW5hdGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
OTIsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fb2theSAmPSBidWZmZXIxNi50cnlBcHBl
bmQoc3RyLCBsZW4pOwogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVTdHJpbmcmIHN0
cikKKyAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHN0cikKICAgICB7CiAgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKIApAQCAtMTI5LDEyICsxMjgsMTIgQEAgcHVi
bGljOgogICAgICAgICAgICAgYnVmZmVyOC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgaWYg
KCFidWZmZXI4LmRhdGEoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOwotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6
OmFkb3B0KGJ1ZmZlcjgpKTsKKyAgICAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJp
bmc6OmFkb3B0KGJ1ZmZlcjgpKTsKICAgICAgICAgfQogICAgICAgICBidWZmZXIxNi5zaHJpbmtU
b0ZpdCgpOwogICAgICAgICBpZiAoIWJ1ZmZlcjE2LmRhdGEoKSkKICAgICAgICAgICAgIHJldHVy
biB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhl
eGVjLCBVU3RyaW5nOjphZG9wdChidWZmZXIxNikpOworICAgICAgICByZXR1cm4ganNTdHJpbmco
ZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIxNikpOwogICAgIH0KIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCmluZGV4
IGVhMjYwMjQzYjdjNDQzN2YxMWY5OTQyZThhODYxNDFmNjAwY2E2MTcuLjAxNzhjZDhjODg0YzQz
NzM4ZDMxMjgzNjViNzc2Yzg3YzA1Y2E0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiAvLyBUaGUgZGVzdGluYXRpb24gaXMgMTZiaXRzLCBhdCBsZWFzdCBvbmUgc3Ry
aW5nIGlzIDE2IGJpdHMuCi1zdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRhKFVD
aGFyKiYgZGF0YSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQorc3RhdGljIGlubGluZSB2b2lkIGFw
cGVuZFN0cmluZ1RvRGF0YShVQ2hhciomIGRhdGEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGlmIChzdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU3LDcgKzU3LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFN0cmluZ1RvRGF0YShVQ2hhciomIGRhdGEsIGNv
bnN0IFVTdHJpbmcmIHN0cmluZykKIH0KIAogLy8gSWYgdGhlIGRlc3RpbmF0aW9uIGlzIDhiaXRz
LCB3ZSBrbm93IGV2ZXJ5IHN0cmluZyBoYXMgdG8gYmUgOGJpdC4KLXN0YXRpYyBpbmxpbmUgdm9p
ZCBhcHBlbmRTdHJpbmdUb0RhdGEoTENoYXIqJiBkYXRhLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcp
CitzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRhKExDaGFyKiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5n
VG9EYXRhKExDaGFyKiYgZGF0YSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGpvaW5TdHJpbmdzKGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgc3RyaW5ncywgY29uc3Qg
VVN0cmluZyYgc2VwYXJhdG9yLCB1bnNpZ25lZCBvdXRwdXRMZW5ndGgpCitzdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gam9pblN0cmluZ3MoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHN0cmluZ3MsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCB1bnNpZ25lZCBvdXRwdXRMZW5ndGgp
CiB7CiAgICAgQVNTRVJUKG91dHB1dExlbmd0aCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGpvaW5TdHJpbmdzKGNvbnN0IFZlY3RvcjxV
U3RyaW5nPiYgc3RyaW5ncywKICAgICBpZiAoIW91dHB1dFN0cmluZ0ltcGwpCiAgICAgICAgIHJl
dHVybiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KCk7CiAKLSAgICBjb25zdCBVU3RyaW5nIGZpcnN0
U3RyaW5nID0gc3RyaW5ncy5maXJzdCgpOworICAgIGNvbnN0IFN0cmluZyBmaXJzdFN0cmluZyA9
IHN0cmluZ3MuZmlyc3QoKTsKICAgICBhcHBlbmRTdHJpbmdUb0RhdGEoZGF0YSwgZmlyc3RTdHJp
bmcpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzdHJpbmdzLnNpemUoKTsgKytpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5l
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaAppbmRl
eCA0OWY4NDZjMWYwMjFiZjAzZmQ2OTBmZTNkYWJiNWU5ZDY0OGYyMDJhLi41Y2I4NDFhODAyNjlk
ZDU3ODgwYjYzNjk1OGQ4NTA2YmY2NTIyZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgSlNT
dHJpbmdKb2luZXJfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlVTdHJpbmcu
aCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNywyMSArMzcsMjEgQEAgY2xhc3MgRXhlY1N0
YXRlOwogCiBjbGFzcyBKU1N0cmluZ0pvaW5lciB7CiBwdWJsaWM6Ci0gICAgSlNTdHJpbmdKb2lu
ZXIoY29uc3QgVVN0cmluZyYgc2VwYXJhdG9yLCBzaXplX3Qgc3RyaW5nQ291bnQpOworICAgIEpT
U3RyaW5nSm9pbmVyKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBzaXplX3Qgc3RyaW5nQ291bnQp
OwogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFN0cmluZyYpOwogICAgIEpTVmFsdWUgYnVpbGQoRXhlY1N0YXRlKik7CiAKIHByaXZhdGU6
Ci0gICAgVVN0cmluZyBtX3NlcGFyYXRvcjsKLSAgICBWZWN0b3I8VVN0cmluZz4gbV9zdHJpbmdz
OworICAgIFN0cmluZyBtX3NlcGFyYXRvcjsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3N0cmluZ3M7
CiAKICAgICB1bnNpZ25lZCBtX2N1bXVsYXRlZFN0cmluZ3NMZW5ndGg7CiAgICAgYm9vbCBtX2lz
VmFsaWQ7CiAgICAgYm9vbCBtX2lzOEJpdHM7CiB9OwogCi1pbmxpbmUgSlNTdHJpbmdKb2luZXI6
OkpTU3RyaW5nSm9pbmVyKGNvbnN0IFVTdHJpbmcmIHNlcGFyYXRvciwgc2l6ZV90IHN0cmluZ0Nv
dW50KQoraW5saW5lIEpTU3RyaW5nSm9pbmVyOjpKU1N0cmluZ0pvaW5lcihjb25zdCBTdHJpbmcm
IHNlcGFyYXRvciwgc2l6ZV90IHN0cmluZ0NvdW50KQogICAgIDogbV9zZXBhcmF0b3Ioc2VwYXJh
dG9yKQogICAgICwgbV9jdW11bGF0ZWRTdHJpbmdzTGVuZ3RoKDApCiAgICAgLCBtX2lzVmFsaWQo
dHJ1ZSkKQEAgLTYxLDcgKzYxLDcgQEAgaW5saW5lIEpTU3RyaW5nSm9pbmVyOjpKU1N0cmluZ0pv
aW5lcihjb25zdCBVU3RyaW5nJiBzZXBhcmF0b3IsIHNpemVfdCBzdHJpbmdDb3UKICAgICBtX2lz
VmFsaWQgPSBtX3N0cmluZ3MudHJ5UmVzZXJ2ZUNhcGFjaXR5KHN0cmluZ0NvdW50KTsKIH0KIAot
aW5saW5lIHZvaWQgSlNTdHJpbmdKb2luZXI6OmFwcGVuZChjb25zdCBVU3RyaW5nJiBzdHIpCitp
bmxpbmUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQogewog
ICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFsdWUuY3BwCmluZGV4IGMzNDQzMTE3ODljYjY2NjZiYmM1M2JkZTBjOWYx
ZDllYTA4ZmRiZTguLjBiZWRhYTMzZjI2MjMwMjcyYzA3MzliNzNjMzVmYzAyZmUwZjdhNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCkBAIC0yODMsOSArMjgz
LDkgQEAgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAogICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKTsKIH0KIAotVVN0cmluZyBK
U1ZhbHVlOjp0b1VTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CitTdHJpbmcg
SlNWYWx1ZTo6dG9XVEZTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1VTdHJpbmcoKnRoaXMsIGV4ZWMpOwor
ICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuaAppbmRleCAxZDgyMjMzMjViNWVmNjJkYjljZTQwYWZlOTgyNWQwMTM2OTMxZWUzLi5hOGE0
MzhmMTBkZmEyNzJkMGE3NWFiOTRlZDhjOGExNDVjMWRiZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5oCkBAIC00NCw3ICs0NCw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZTsKICAgICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xh
c3MgUHV0UHJvcGVydHlTbG90OwotICAgIGNsYXNzIFVTdHJpbmc7CiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgbmFtZXNwYWNlIERGRyB7CiAgICAgICAgIGNsYXNzIEFzc2VtYmx5SGVscGVyczsK
QEAgLTE5Nyw4ICsxOTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpbmhlcml0
cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIC8vIEV4dHJhY3Rp
bmcgdGhlIHZhbHVlLgotICAgICAgICBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVT
dHJpbmcmKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVj
KSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5nCisgICAgICAgIGJvb2wgZ2V0
U3RyaW5nKEV4ZWNTdGF0ZSosIFdURjo6U3RyaW5nJikgY29uc3Q7CisgICAgICAgIFdURjo6U3Ry
aW5nIGdldFN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEg
c3RyaW5nCiAgICAgICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gMCBpZiBub3Qg
YW4gb2JqZWN0CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyBpbnRlZ2VyIHZhbHVlcy4KQEAgLTIx
NCw4ICsyMTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gYmVlbiBzZXQgaW4gdGhl
IEV4ZWNTdGF0ZSBhbHJlYWR5LgogICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgICAgIEpTU3RyaW5nKiB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAg
ICAgICAgVVN0cmluZyB0b1VTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIFVTdHJp
bmcgdG9VU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBXVEY6OlN0cmlu
ZyB0b1dURlN0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgV1RGOjpTdHJpbmcgdG9X
VEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiB0b09i
amVjdChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKQEAgLTI2Niw3ICsyNjUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgaW5saW5lIGNvbnN0IEpTVmFsdWUgYXNWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuICp0aGlzOyB9CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b051
bWJlclNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1N0cmluZyogdG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyB0b1VTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmdT
bG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25z
dDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dD
YXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IGUxZjg1Y2VmZTZlYTRlNDRlNDBjODNlZjZmZjdj
NzY1MGVmZTYwNGEuLmFhNjU0MWI2YWVkNWJmMGNlY2Q4ZTVmNjM5OTQ3OWM4NmMyMjA5ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBA
IC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJMZXhlci5o
IgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5o
IgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC0zNDQsNyArMzQ0LDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZSwgY2hhciB0ZXJtaW5h
dG9yPiBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2UKIHsKICAgICArK21fcHRy
OwogICAgIGNvbnN0IENoYXJUeXBlKiBydW5TdGFydCA9IG1fcHRyOwotICAgIFVTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGRvIHsKICAgICAg
ICAgcnVuU3RhcnQgPSBtX3B0cjsKICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNT
YWZlU3RyaW5nQ2hhcmFjdGVyPG1vZGUsIENoYXJUeXBlLCB0ZXJtaW5hdG9yPigqbV9wdHIpKQpA
QCAtNDAwLDcgKzQwMCw3IEBAIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWlu
YXRvcj4gQUxXQVlTX0lOTElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlCiAgICAgICAgICAgICAg
ICAgICAgIH0gLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAxOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWlzQVNDSUlIZXhEaWdpdChtX3B0cltpXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJcIlxcJXNcIiBpcyBub3QgYSB2
YWxpZCB1bmljb2RlIGVzY2FwZSIsIFVTdHJpbmcobV9wdHIsIDUpLmFzY2lpKCkuZGF0YSgpKS5p
bXBsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBT
dHJpbmc6OmZvcm1hdCgiXCJcXCVzXCIgaXMgbm90IGEgdmFsaWQgdW5pY29kZSBlc2NhcGUiLCBT
dHJpbmcobV9wdHIsIDUpLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC00MjYsMTEgKzQyNiwxMSBAQCB0ZW1wbGF0ZSA8UGFy
c2VyTW9kZSBtb2RlLCBjaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExp
dGVyYWxQYXJzZQogICAgIH0KIAogICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSkgewotICAgICAg
ICB0b2tlbi5zdHJpbmdCdWZmZXIgPSBVU3RyaW5nKCk7CisgICAgICAgIHRva2VuLnN0cmluZ0J1
ZmZlciA9IFN0cmluZygpOwogICAgICAgICBzZXRQYXJzZXJUb2tlblN0cmluZzxDaGFyVHlwZT4o
dG9rZW4sIHJ1blN0YXJ0KTsKICAgICAgICAgdG9rZW4uc3RyaW5nTGVuZ3RoID0gbV9wdHIgLSBy
dW5TdGFydDsKICAgICB9IGVsc2UgewotICAgICAgICB0b2tlbi5zdHJpbmdCdWZmZXIgPSBidWls
ZGVyLnRvVVN0cmluZygpOworICAgICAgICB0b2tlbi5zdHJpbmdCdWZmZXIgPSBidWlsZGVyLnRv
U3RyaW5nKCk7CiAgICAgICAgIGlmICh0b2tlbi5zdHJpbmdCdWZmZXIuaXM4Qml0KCkpIHsKICAg
ICAgICAgICAgIHRva2VuLnN0cmluZ0lzOEJpdCA9IDE7CiAgICAgICAgICAgICB0b2tlbi5zdHJp
bmdUb2tlbjggPSB0b2tlbi5zdHJpbmdCdWZmZXIuY2hhcmFjdGVyczgoKTsKQEAgLTY5OCw5ICs2
OTgsOSBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0
ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjog
ewogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGl0ZXJhbFBhcnNlclRva2VuPENoYXJU
eXBlPiYgdG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRva2VuLnN0cmluZ0lzOEJpdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgaWRlbnRp
ZmllciBcIiVzXCIiLCBVU3RyaW5nKG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nVG9rZW44
LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ0xlbmd0aCkuYXNjaWkoKS5kYXRhKCkpLmlt
cGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
U3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciBcIiVzXCIiLCBTdHJpbmcobV9s
ZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbjgsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
c3RyaW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFVTdHJp
bmcobV9sZXhlci5jdXJyZW50VG9rZW4oKS5zdHJpbmdUb2tlbjE2LCBtX2xleGVyLmN1cnJlbnRU
b2tlbigpLnN0cmluZ0xlbmd0aCkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVu
ZXhwZWN0ZWQgaWRlbnRpZmllciBcIiVzXCIiLCBTdHJpbmcobV9sZXhlci5jdXJyZW50VG9rZW4o
KS5zdHJpbmdUb2tlbjE2LCBtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ0xlbmd0aCkuYXNj
aWkoKS5kYXRhKCkpLmltcGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY2FzZSBU
b2tDb2xvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVy
YWxQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
aAppbmRleCBhYmUzZjk1Yjc5OGNjMzViMmU0NjQyOTExN2I4N2QxMWFkZGZmZjg5Li42MWE4ZWYz
NGRjNjIwMTZjMWRkYzY2OWQ1MzdiOTI5Y2YwZTdkZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTY3LDcgKzY3LDcgQEAg
c3RydWN0IExpdGVyYWxQYXJzZXJUb2tlbiB7CiAgICAgVG9rZW5UeXBlIHR5cGU7CiAgICAgY29u
c3QgQ2hhclR5cGUqIHN0YXJ0OwogICAgIGNvbnN0IENoYXJUeXBlKiBlbmQ7Ci0gICAgVVN0cmlu
ZyBzdHJpbmdCdWZmZXI7CisgICAgU3RyaW5nIHN0cmluZ0J1ZmZlcjsKICAgICB1bmlvbiB7CiAg
ICAgICAgIGRvdWJsZSBudW1iZXJUb2tlbjsKICAgICAgICAgc3RydWN0IHsKQEAgLTk0LDcgKzk0
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgVVN0cmluZyBnZXRFcnJvck1l
c3NhZ2UoKSAKKyAgICBTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkKICAgICB7IAogICAgICAgICBp
ZiAoIW1fbGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJKU09OIFBhcnNlIGVycm9yOiAlcyIsIG1fbGV4ZXIuZ2V0RXJy
b3JNZXNzYWdlKCkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKQEAgLTEzMywxMCArMTMzLDEwIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50VG9rZW47CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIFVTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgeyByZXR1cm4gbV9s
ZXhFcnJvck1lc3NhZ2U7IH0KKyAgICAgICAgU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIHsgcmV0
dXJuIG1fbGV4RXJyb3JNZXNzYWdlOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IFVTdHJpbmcgbV9sZXhFcnJvck1lc3NhZ2U7CisgICAgICAgIFN0cmluZyBtX2xleEVycm9yTWVz
c2FnZTsKICAgICAgICAgdGVtcGxhdGUgPFBhcnNlck1vZGUgbW9kZT4gVG9rZW5UeXBlIGxleChM
aXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+Jik7CiAgICAgICAgIEFMV0FZU19JTkxJTkUgVG9r
ZW5UeXBlIGxleElkZW50aWZpZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPiYpOwogICAg
ICAgICB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2RlLCBjaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19J
TkxJTkUgVG9rZW5UeXBlIGxleFN0cmluZyhMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+Jik7
CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBFeGVjU3RhdGUqIG1fZXhlYzsKICAg
ICB0eXBlbmFtZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXIgbV9sZXhlcjsKICAgICBQ
YXJzZXJNb2RlIG1fbW9kZTsKLSAgICBVU3RyaW5nIG1fcGFyc2VFcnJvck1lc3NhZ2U7CisgICAg
U3RyaW5nIG1fcGFyc2VFcnJvck1lc3NhZ2U7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0IE1h
eGltdW1DYWNoYWJsZUNoYXJhY3RlciA9IDEyODsKICAgICBGaXhlZEFycmF5PElkZW50aWZpZXIs
IE1heGltdW1DYWNoYWJsZUNoYXJhY3Rlcj4gbV9zaG9ydElkZW50aWZpZXJzOwogICAgIEZpeGVk
QXJyYXk8SWRlbnRpZmllciwgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyPiBtX3JlY2VudElkZW50
aWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc2YWVhOWRhOGJmMGRiYWQwNjY4MThlYjE2Zjg2ODQ5
ZWZhY2ZkN2IuLjhkYjIzNzAyOGM4ODVkZDA1ZTQ1NDYyYTE4MTdkNGNlYzU2OWFkMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAotICAgICAgICBzdGF0aWMg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgICAgICBzdGF0aWMgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29u
c3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3Ry
dWN0dXJlLCBuYW1lKTsKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdl
dCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgbmFtZSk7CiAgICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUu
Y3BwCmluZGV4IGRmZGQ4N2Y4NTMyMWI5MTk3OTc3YmY1ZDdmNTliYzAzN2IwODc2NGIuLjdmZWUy
MTNmYTUzNTQ3YTVkNzliMjJjYmFhODNiMjExZmM3NzQ3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKQEAgLTI0
LDcgKzI0LDYgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlVT
dHJpbmcuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM1LDcgKzM0LDcgQEAgTmF0aXZlRXJy
b3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUKIHsKIH0KIAotdm9pZCBOYXRpdmVFcnJvclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IpCit2b2lkIE5hdGl2ZUVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdURjo6U3Ry
aW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ip
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwg
anNTdHJpbmcoZXhlYywgbmFtZUFuZE1lc3NhZ2UpLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAppbmRleCA0
YmNlYjg4M2E4MjBiMWUxNmM3YzU3YTVhMTc3ZWRkMWQ2NDBmMTcwLi5jOTRmMmI3NWFkYmQ3OTQ5
YjI2MTliM2E3OGM1YzU2NjNiODYzNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEVycm9yUHJvdG90eXBl
IEJhc2U7CiAKLSAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IpCisgICAgICAgIHN0YXRpYyBOYXRpdmVFcnJvclByb3RvdHlwZSogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29u
c3RydWN0b3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBw
cm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvclByb3RvdHlw
ZT4oKmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgbmFtZSwgY29uc3RydWN0b3IpOwpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3Nh
Z2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZUFuZE1lc3Nh
Z2UsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCmluZGV4IDY5MmE1ODRmYTRhMDlkMGRhZWEyMzljYzlkNjllNGY1NzVjNjcyMWIuLjFkNzkz
OTIyNTI0NmIyZGJlY2U4MjFhM2U0MzFjMGI3ZGJmZmU1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMzM5LDcgKzMzOSw3
IEBAIHN0YXRpYyBjaGFyKiB0b1N0cmluZ1dpdGhSYWRpeChSYWRpeEJ1ZmZlciYgYnVmZmVyLCBk
b3VibGUgbnVtYmVyLCB1bnNpZ25lZCByYWRpCiAgICAgcmV0dXJuIHN0YXJ0T2ZSZXN1bHRTdHJp
bmc7CiB9CiAKLXN0YXRpYyBVU3RyaW5nIHRvVVN0cmluZ1dpdGhSYWRpeChpbnQzMl90IG51bWJl
ciwgdW5zaWduZWQgcmFkaXgpCitzdGF0aWMgU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGludDMy
X3QgbnVtYmVyLCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICBMQ2hhciBidWZbMSArIDMyXTsgLy8g
V29yc3QgY2FzZSBpcyByYWRpeCA9PSAyLCB3aGljaCBnaXZlcyB1cyAzMiBkaWdpdHMgKyBzaWdu
LgogICAgIExDaGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlfTEVOR1RIKGJ1Zik7CkBAIC0zNjEs
NyArMzYxLDcgQEAgc3RhdGljIFVTdHJpbmcgdG9VU3RyaW5nV2l0aFJhZGl4KGludDMyX3QgbnVt
YmVyLCB1bnNpZ25lZCByYWRpeCkKICAgICBpZiAobmVnYXRpdmUpCiAgICAgICAgICotLXAgPSAn
LSc7CiAKLSAgICByZXR1cm4gVVN0cmluZyhwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0g
cCkpOworICAgIHJldHVybiBTdHJpbmcocCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHAp
KTsKIH0KIAogLy8gdG9FeHBvbmVudGlhbCBjb252ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywg
YWx3YXlzIGZvcm1hdHRpbmcgYXMgYW4gZXhwb2VudGlhbC4KQEAgLTM4Miw3ICszODIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwo
RXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gSGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCiAgICAg
aWYgKCFpc2Zpbml0ZSh4KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
ZyhleGVjLCBVU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoeCkpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3Ry
aW5nRUNNQVNjcmlwdCh4KSkpOwogCiAgICAgLy8gUm91bmQgaWYgdGhlIGFyZ3VtZW50IGlzIG5v
dCB1bmRlZmluZWQsIGFsd2F5cyBmb3JtYXQgYXMgZXhwb25lbnRpYWwuCiAgICAgY2hhciBidWZm
ZXJbV1RGOjpOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aF07CkBAIC0zOTIsNyArMzkyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFs
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpc1VuZGVmaW5lZAogICAgICAgICA/IGNvbnZlcnRlci5U
b0V4cG9uZW50aWFsKHgsIC0xLCAmYnVpbGRlcikKICAgICAgICAgOiBjb252ZXJ0ZXIuVG9FeHBv
bmVudGlhbCh4LCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudCwgJmJ1aWxkZXIpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZyhidWlsZGVyLkZpbmFsaXpl
KCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJpbmco
YnVpbGRlci5GaW5hbGl6ZSgpKSkpOwogfQogCiAvLyB0b0ZpeGVkIGNvbnZlcnRzIGEgbnVtYmVy
IHRvIGEgc3RyaW5nLCBhbHdheXMgZm9ybWF0dGluZyBhcyBhbiBhIGRlY2ltYWwgZnJhY3Rpb24u
CkBAIC00MTUsMTQgKzQxNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIFRoaXMgYWxzbyBjb3Zl
cnMgSW5pbml0eSwgYW5kIHN0cnVjdHVyZSB0aGUgY2hlY2sgc28gdGhhdCBOYU4KICAgICAvLyB2
YWx1ZXMgYXJlIGFsc28gaGFuZGxlZCBieSBudW1iZXJUb1N0cmluZwogICAgIGlmICghKGZhYnMo
eCkgPCAxZSsyMSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhl
YywgVVN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHgpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VD
TUFTY3JpcHQoeCkpKTsKIAogICAgIC8vIFRoZSBjaGVjayBhYm92ZSB3aWxsIHJldHVybiBmYWxz
ZSBmb3IgTmFOIG9yIEluZmluaXR5LCB0aGVzZSB3aWxsIGJlCiAgICAgLy8gaGFuZGxlZCBieSBu
dW1iZXJUb1N0cmluZy4KICAgICBBU1NFUlQoaXNmaW5pdGUoeCkpOwogCiAgICAgTnVtYmVyVG9T
dHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
ZXhlYywgVVN0cmluZyhudW1iZXJUb0ZpeGVkV2lkdGhTdHJpbmcoeCwgZGVjaW1hbFBsYWNlcywg
YnVmZmVyKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0
cmluZyhudW1iZXJUb0ZpeGVkV2lkdGhTdHJpbmcoeCwgZGVjaW1hbFBsYWNlcywgYnVmZmVyKSkp
KTsKIH0KIAogLy8gdG9QcmVjaXNpb24gY29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHRh
a2VpbmcgYW4gYXJndW1lbnQgc3BlY2lmeWluZyBhCkBAIC00NDYsMTQgKzQ0NiwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIC8vIFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVu
dCBpcyB0cmVhdGVkIGFzIFRvU3RyaW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nOjpudW1iZXJUb1N0
cmluZ0VDTUFTY3JpcHQoeCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOwogCiAgICAg
Ly8gSGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCiAgICAgaWYgKCFpc2Zpbml0ZSh4KSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nOjpudW1iZXJU
b1N0cmluZ0VDTUFTY3JpcHQoeCkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOwogCiAg
ICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZyhudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKHgs
IHNpZ25pZmljYW50RmlndXJlcywgYnVmZmVyKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZyhudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKHgs
IHNpZ25pZmljYW50RmlndXJlcywgYnVmZmVyKSkpKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQz
Ml90IGV4dHJhY3RSYWRpeEZyb21BcmdzKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTQ4NSw3ICs0ODUs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGludGVnZXJWYWx1ZVRvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgaW50MzJfdCByYWRpeAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGdsb2JhbERhdGEsIGdsb2JhbERhdGEtPm51bWVyaWNTdHJpbmdzLmFkZCh2
YWx1ZSkpKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4
ZWMsIHRvVVN0cmluZ1dpdGhSYWRpeCh2YWx1ZSwgcmFkaXgpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB0b1N0cmluZ1dpdGhSYWRpeCh2YWx1ZSwgcmFkaXgp
KSk7CiAKIH0KIApAQCAtNTA5LDcgKzUwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAg
IGlmICghaXNmaW5pdGUoZG91YmxlVmFsdWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3Vi
bGVWYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVj
LCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpKTsKIAogICAg
IFJhZGl4QnVmZmVyIHM7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVj
LCB0b1N0cmluZ1dpdGhSYWRpeChzLCBkb3VibGVWYWx1ZSwgcmFkaXgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1lcmljU3RyaW5ncy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtZXJpY1N0cmluZ3MuaAppbmRleCAwN2U4NDk0OTEx
NTUwZDgzYTFmM2I0ODM3ZDc5MDVmZjM3NTA4MmJiLi40Y2Q5MmZjMWYyZjY3ZDZjNTEzNmZlZjNi
MjczZDQxY2ZlZmEyNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1lcmljU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWVyaWNTdHJpbmdzLmgKQEAgLTI2LDI1ICsyNiwyNSBAQAogI2lmbmRlZiBOdW1lcmljU3RyaW5n
c19oCiAjZGVmaW5lIE51bWVyaWNTdHJpbmdzX2gKIAotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNp
bmNsdWRlIDx3dGYvRml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgTnVtZXJpY1N0cmluZ3MgewogICAgIHB1YmxpYzoKLSAgICAgICAgQUxXQVlTX0lO
TElORSBVU3RyaW5nIGFkZChkb3VibGUgZCkKKyAgICAgICAgQUxXQVlTX0lOTElORSBTdHJpbmcg
YWRkKGRvdWJsZSBkKQogICAgICAgICB7CiAgICAgICAgICAgICBDYWNoZUVudHJ5PGRvdWJsZT4m
IGVudHJ5ID0gbG9va3VwKGQpOwogICAgICAgICAgICAgaWYgKGQgPT0gZW50cnkua2V5ICYmICFl
bnRyeS52YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7
CiAgICAgICAgICAgICBlbnRyeS5rZXkgPSBkOwotICAgICAgICAgICAgZW50cnkudmFsdWUgPSBV
U3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZCk7CisgICAgICAgICAgICBlbnRyeS52
YWx1ZSA9IFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGQpOwogICAgICAgICAgICAg
cmV0dXJuIGVudHJ5LnZhbHVlOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBV
U3RyaW5nIGFkZChpbnQgaSkKKyAgICAgICAgQUxXQVlTX0lOTElORSBTdHJpbmcgYWRkKGludCBp
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpIDwg
Y2FjaGVTaXplKQogICAgICAgICAgICAgICAgIHJldHVybiBsb29rdXBTbWFsbFN0cmluZyhzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaSkpOwpAQCAtNTIsMTEgKzUyLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgaWYgKGkgPT0gZW50cnkua2V5ICYmICFlbnRyeS52YWx1ZS5pc051bGwo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgICAgICBlbnRy
eS5rZXkgPSBpOwotICAgICAgICAgICAgZW50cnkudmFsdWUgPSBVU3RyaW5nOjpudW1iZXIoaSk7
CisgICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFN0cmluZzo6bnVtYmVyKGkpOwogICAgICAgICAg
ICAgcmV0dXJuIGVudHJ5LnZhbHVlOwogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElO
RSBVU3RyaW5nIGFkZCh1bnNpZ25lZCBpKQorICAgICAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBh
ZGQodW5zaWduZWQgaSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGkgPCBjYWNoZVNpemUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvb2t1cFNtYWxsU3RyaW5nKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpKSk7CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgaWYgKGkgPT0gZW50cnkua2V5ICYmICFlbnRyeS52YWx1ZS5pc051bGwoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgICAgICBlbnRyeS5rZXkgPSBpOwot
ICAgICAgICAgICAgZW50cnkudmFsdWUgPSBVU3RyaW5nOjpudW1iZXIoaSk7CisgICAgICAgICAg
ICBlbnRyeS52YWx1ZSA9IFN0cmluZzo6bnVtYmVyKGkpOwogICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5LnZhbHVlOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKQEAgLTczLDI0ICs3MywyNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICAgICAgc3Ry
dWN0IENhY2hlRW50cnkgewogICAgICAgICAgICAgVCBrZXk7Ci0gICAgICAgICAgICBVU3RyaW5n
IHZhbHVlOworICAgICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAgICAgICB9OwogCiAgICAgICAg
IENhY2hlRW50cnk8ZG91YmxlPiYgbG9va3VwKGRvdWJsZSBkKSB7IHJldHVybiBkb3VibGVDYWNo
ZVtXVEY6OkZsb2F0SGFzaDxkb3VibGU+OjpoYXNoKGQpICYgKGNhY2hlU2l6ZSAtIDEpXTsgfQog
ICAgICAgICBDYWNoZUVudHJ5PGludD4mIGxvb2t1cChpbnQgaSkgeyByZXR1cm4gaW50Q2FjaGVb
V1RGOjpJbnRIYXNoPGludD46Omhhc2goaSkgJiAoY2FjaGVTaXplIC0gMSldOyB9CiAgICAgICAg
IENhY2hlRW50cnk8dW5zaWduZWQ+JiBsb29rdXAodW5zaWduZWQgaSkgeyByZXR1cm4gdW5zaWdu
ZWRDYWNoZVtXVEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNoKGkpICYgKGNhY2hlU2l6ZSAtIDEp
XTsgfQotICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFVTdHJpbmcmIGxvb2t1cFNtYWxsU3Ry
aW5nKHVuc2lnbmVkIGkpCisgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgU3RyaW5nJiBsb29r
dXBTbWFsbFN0cmluZyh1bnNpZ25lZCBpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
aSA8IGNhY2hlU2l6ZSk7CiAgICAgICAgICAgICBpZiAoc21hbGxJbnRDYWNoZVtpXS5pc051bGwo
KSkKLSAgICAgICAgICAgICAgICBzbWFsbEludENhY2hlW2ldID0gVVN0cmluZzo6bnVtYmVyKGkp
OworICAgICAgICAgICAgICAgIHNtYWxsSW50Q2FjaGVbaV0gPSBTdHJpbmc6Om51bWJlcihpKTsK
ICAgICAgICAgICAgIHJldHVybiBzbWFsbEludENhY2hlW2ldOwogICAgICAgICB9CiAKICAgICAg
ICAgRml4ZWRBcnJheTxDYWNoZUVudHJ5PGRvdWJsZT4sIGNhY2hlU2l6ZT4gZG91YmxlQ2FjaGU7
CiAgICAgICAgIEZpeGVkQXJyYXk8Q2FjaGVFbnRyeTxpbnQ+LCBjYWNoZVNpemU+IGludENhY2hl
OwogICAgICAgICBGaXhlZEFycmF5PENhY2hlRW50cnk8dW5zaWduZWQ+LCBjYWNoZVNpemU+IHVu
c2lnbmVkQ2FjaGU7Ci0gICAgICAgIEZpeGVkQXJyYXk8VVN0cmluZywgY2FjaGVTaXplPiBzbWFs
bEludENhY2hlOworICAgICAgICBGaXhlZEFycmF5PFN0cmluZywgY2FjaGVTaXplPiBzbWFsbElu
dENhY2hlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDVhNmZjZGRm
MDM5NTVhM2YwN2EzZDk2ZTk0MmMyODAzN2EzODA5ZDUuLjIxZWNjZDMwZTk5YmJjMGNlZWIyZjll
OWUxYTVjN2Y4YjgyNmJlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IlJlcXVlc3RlZCBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4g
b2JqZWN0LiIpKTsKLSAgICBVU3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0g
ZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bGwoKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDAp
KTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghZXhl
Yy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5l
ZCBvbiBPYmplY3RzLiIpKTsKICAgICBKU09iamVjdCogTyA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKLSAgICBVU3RyaW5nIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gZXhl
Yy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7CiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggMjQwNTNjNTJhYWJmZmM1YmQ5ZTM0MzM2
YmNjZGJhYTMzOTE3MWQzMS4uMzBiYTBiMjdkN2FlMmJkZjQ4NmY3YjlmNDFlNzg1NDFhYzk5ZWEx
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtNTAs
NyArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6
Y3JlYXRlKGdsb2JhbERhdGEsIHMxLCBzMik7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgdTEsIGNvbnN0
IFVTdHJpbmcmIHUyLCBjb25zdCBVU3RyaW5nJiB1MykKKyAgICBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHUxLCBjb25zdCBTdHJp
bmcmIHUyLCBjb25zdCBTdHJpbmcmIHUzKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtMjIxLDcgKzIyMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHYxLmFzTnVtYmVyKCkgPCB2Mi5hc051
bWJlcigpOwogCiAgICAgICAgIGlmIChpc0pTU3RyaW5nKHYxKSAmJiBpc0pTU3RyaW5nKHYyKSkK
LSAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPnZhbHVlKGNhbGxGcmFtZSkgPCBhc1N0
cmluZyh2MiktPnZhbHVlKGNhbGxGcmFtZSk7CisgICAgICAgICAgICByZXR1cm4gY29kZVBvaW50
Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKHYxKS0+dmFsdWUoY2FsbEZyYW1lKSwgYXNTdHJpbmco
djIpLT52YWx1ZShjYWxsRnJhbWUpKTsKIAogICAgICAgICBkb3VibGUgbjE7CiAgICAgICAgIGRv
dWJsZSBuMjsKQEAgLTIzOSw3ICsyMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBp
ZiAod2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpCiAgICAgICAgICAgICByZXR1cm4gbjEg
PCBuMjsKLSAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHAxKS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFz
U3RyaW5nKHAyKS0+dmFsdWUoY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENv
bXBhcmVMZXNzVGhhbihhc1N0cmluZyhwMSktPnZhbHVlKGNhbGxGcmFtZSksIGFzU3RyaW5nKHAy
KS0+dmFsdWUoY2FsbEZyYW1lKSk7CiAgICAgfQogCiAgICAgLy8gU2VlIEVTNSAxMS44LjMvMTEu
OC40LzExLjguNSBmb3IgZGVmaW5pdGlvbiBvZiBsZWZ0Rmlyc3QsIHRoaXMgdmFsdWUgZW5zdXJl
cyBjb3JyZWN0CkBAIC0yNTUsNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gdjEuYXNOdW1iZXIoKSA8PSB2Mi5hc051bWJlcigpOwogCiAgICAgICAgIGlmIChp
c0pTU3RyaW5nKHYxKSAmJiBpc0pTU3RyaW5nKHYyKSkKLSAgICAgICAgICAgIHJldHVybiAhKGFz
U3RyaW5nKHYyKS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFzU3RyaW5nKHYxKS0+dmFsdWUoY2FsbEZy
YW1lKSk7CisgICAgICAgICAgICByZXR1cm4gIWNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihhc1N0
cmluZyh2MiktPnZhbHVlKGNhbGxGcmFtZSksIGFzU3RyaW5nKHYxKS0+dmFsdWUoY2FsbEZyYW1l
KSk7CiAKICAgICAgICAgZG91YmxlIG4xOwogICAgICAgICBkb3VibGUgbjI7CkBAIC0yNzMsNyAr
MjczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgaWYgKHdhc05vdFN0cmluZzEgfCB3
YXNOb3RTdHJpbmcyKQogICAgICAgICAgICAgcmV0dXJuIG4xIDw9IG4yOwotICAgICAgICByZXR1
cm4gIShhc1N0cmluZyhwMiktPnZhbHVlKGNhbGxGcmFtZSkgPCBhc1N0cmluZyhwMSktPnZhbHVl
KGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gIWNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihh
c1N0cmluZyhwMiktPnZhbHVlKGNhbGxGcmFtZSksIGFzU3RyaW5nKHAxKS0+dmFsdWUoY2FsbEZy
YW1lKSk7CiAgICAgfQogCiAgICAgLy8gRmFzdC1wYXRoIGNob2ljZXMgaGVyZSBhcmUgYmFzZWQg
b24gZnJlcXVlbmN5IGRhdGEgZnJvbSBTdW5TcGlkZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRleCA1OTUzZjVlODc2
Yzc1YzIwNmE1NGEyNWY5ZjU4N2UxMDkwMTU4ZDI3Li4yZDBmMjdhM2UzY2Y0ZDExZGE5NWY4Y2Vk
ZTE4MzJlYTA2MDJhNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTIyLDExICsyMiwxMSBAQAogI2RlZmluZSBQ
cm9wZXJ0eU1hcEhhc2hUYWJsZV9oCiAKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFRhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiAKICNpZm5k
ZWYgTkRFQlVHCkBAIC00NCw3ICs0NCw3IEBAIGV4dGVybiBpbnQgbnVtUmVtb3ZlczsKIAogI2Vu
ZGlmCiAKLSNkZWZpbmUgUFJPUEVSVFlfTUFQX0RFTEVURURfRU5UUllfS0VZICgoU3RyaW5nSW1w
bCopMSkgCisjZGVmaW5lIFBST1BFUlRZX01BUF9ERUxFVEVEX0VOVFJZX0tFWSAoKFN0cmluZ0lt
cGwqKTEpCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcAppbmRleCA2NGU1NTNiZTFjOTRjNjEyOGUwNGUxNWQyNzUxYTdmNDQ5NjM4ZTcx
Li43NzU3Mjc0ZjFmMzkxM2I0M2Q3NDg3ZDdmNjQyNGUzNDJhMGRlYWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBSZWdFeHA6OnNfaW5mbyA9IHsgIlJlZ0V4cCIsIDAs
IDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUmVnRXhwKSB9OwogCi1SZWdFeHBGbGFncyByZWdF
eHBGbGFncyhjb25zdCBVU3RyaW5nJiBzdHJpbmcpCitSZWdFeHBGbGFncyByZWdFeHBGbGFncyhj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBSZWdFeHBGbGFncyBmbGFncyA9IE5vRmxhZ3M7
CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgflJlZ0V4cEZ1bmN0aW9uYWxUZXN0
Q29sbGVjdG9yKCk7CiAKLSAgICB2b2lkIG91dHB1dE9uZVRlc3QoUmVnRXhwKiwgVVN0cmluZywg
aW50LCBpbnQqLCBpbnQpOworICAgIHZvaWQgb3V0cHV0T25lVGVzdChSZWdFeHAqLCBTdHJpbmcs
IGludCwgaW50KiwgaW50KTsKICAgICB2b2lkIGNsZWFyUmVnRXhwKFJlZ0V4cCogcmVnRXhwKQog
ICAgIHsKICAgICAgICAgaWYgKHJlZ0V4cCA9PSBtX2xhc3RSZWdFeHApCkBAIC05Myw3ICs5Myw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3Io
KTsKIAotICAgIHZvaWQgb3V0cHV0RXNjYXBlZFVTdHJpbmcoY29uc3QgVVN0cmluZyYsIGJvb2wg
ZXNjYXBlU2xhc2ggPSBmYWxzZSk7CisgICAgdm9pZCBvdXRwdXRFc2NhcGVkU3RyaW5nKGNvbnN0
IFN0cmluZyYsIGJvb2wgZXNjYXBlU2xhc2ggPSBmYWxzZSk7CiAKICAgICBzdGF0aWMgUmVnRXhw
RnVuY3Rpb25hbFRlc3RDb2xsZWN0b3IqIHNfaW5zdGFuY2U7CiAgICAgRklMRSogbV9maWxlOwpA
QCAtMTExLDEyICsxMTEsMTIgQEAgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3IqIFJlZ0V4
cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpnZXQoKQogICAgIHJldHVybiBzX2luc3RhbmNlOwog
fQogCi12b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpvdXRwdXRPbmVUZXN0KFJl
Z0V4cCogcmVnRXhwLCBVU3RyaW5nIHMsIGludCBzdGFydE9mZnNldCwgaW50KiBvdmVjdG9yLCBp
bnQgcmVzdWx0KQordm9pZCBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvcjo6b3V0cHV0T25l
VGVzdChSZWdFeHAqIHJlZ0V4cCwgU3RyaW5nIHMsIGludCBzdGFydE9mZnNldCwgaW50KiBvdmVj
dG9yLCBpbnQgcmVzdWx0KQogewogICAgIGlmICgoIW1fbGFzdFJlZ0V4cCkgfHwgKG1fbGFzdFJl
Z0V4cCAhPSByZWdFeHApKSB7CiAgICAgICAgIG1fbGFzdFJlZ0V4cCA9IHJlZ0V4cDsKICAgICAg
ICAgZnB1dGMoJy8nLCBtX2ZpbGUpOwotICAgICAgICBvdXRwdXRFc2NhcGVkVVN0cmluZyhyZWdF
eHAtPnBhdHRlcm4oKSwgdHJ1ZSk7CisgICAgICAgIG91dHB1dEVzY2FwZWRTdHJpbmcocmVnRXhw
LT5wYXR0ZXJuKCksIHRydWUpOwogICAgICAgICBmcHV0YygnLycsIG1fZmlsZSk7CiAgICAgICAg
IGlmIChyZWdFeHAtPmdsb2JhbCgpKQogICAgICAgICAgICAgZnB1dGMoJ2cnLCBtX2ZpbGUpOwpA
QCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6Om91
dHB1dE9uZVRlc3QoUmVnRXhwKiByZWdFeHAsIFVTdHJpbmcgcywgaW50CiAgICAgfQogCiAgICAg
ZnByaW50ZihtX2ZpbGUsICIgXCIiKTsKLSAgICBvdXRwdXRFc2NhcGVkVVN0cmluZyhzKTsKKyAg
ICBvdXRwdXRFc2NhcGVkU3RyaW5nKHMpOwogICAgIGZwcmludGYobV9maWxlLCAiXCIsICVkLCAl
ZCwgKCIsIHN0YXJ0T2Zmc2V0LCByZXN1bHQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PD0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpOyBpKyspIHsKICAgICAgICAgaW50IHN1YnBhdHRl
cm5CZWdpbiA9IG92ZWN0b3JbaSAqIDJdOwpAQCAtMTU5LDcgKzE1OSw3IEBAIFJlZ0V4cEZ1bmN0
aW9uYWxUZXN0Q29sbGVjdG9yOjp+UmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3IoKQogICAg
IHNfaW5zdGFuY2UgPSAwOwogfQogCi12b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9y
OjpvdXRwdXRFc2NhcGVkVVN0cmluZyhjb25zdCBVU3RyaW5nJiBzLCBib29sIGVzY2FwZVNsYXNo
KQordm9pZCBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvcjo6b3V0cHV0RXNjYXBlZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHMsIGJvb2wgZXNjYXBlU2xhc2gpCiB7CiAgICAgaW50IGxlbiA9IHMu
bGVuZ3RoKCk7CiAgICAgCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBSZWdFeHBGdW5jdGlvbmFs
VGVzdENvbGxlY3Rvcjo6b3V0cHV0RXNjYXBlZFVTdHJpbmcoY29uc3QgVVN0cmluZyYgcywgYm9v
bAogfQogI2VuZGlmCiAKLVJlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCitSZWdFeHA6
OlJlZ0V4cChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0
cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCiAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFs
RGF0YS5yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBtX3N0YXRlKE5vdENvbXBpbGVkKQog
ICAgICwgbV9wYXR0ZXJuU3RyaW5nKHBhdHRlcm5TdHJpbmcpCkBAIC0yNTAsMTQgKzI1MCwxNCBA
QCB2b2lkIFJlZ0V4cDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+UmVn
RXhwOjp+UmVnRXhwKCk7CiB9CiAKLVJlZ0V4cCogUmVnRXhwOjpjcmVhdGVXaXRob3V0Q2FjaGlu
ZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcs
IFJlZ0V4cEZsYWdzIGZsYWdzKQorUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZVdpdGhvdXRDYWNoaW5n
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBS
ZWdFeHBGbGFncyBmbGFncykKIHsKICAgICBSZWdFeHAqIHJlZ0V4cCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFJlZ0V4cD4oZ2xvYmFsRGF0YS5oZWFwKSkgUmVnRXhwKGdsb2JhbERhdGEs
IHBhdHRlcm5TdHJpbmcsIGZsYWdzKTsKICAgICByZWdFeHAtPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEpOwogICAgIHJldHVybiByZWdFeHA7CiB9CiAKLVJlZ0V4cCogUmVnRXhwOjpjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBS
ZWdFeHBGbGFncyBmbGFncykKK1JlZ0V4cCogUmVnRXhwOjpjcmVhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdz
KQogewogICAgIHJldHVybiBnbG9iYWxEYXRhLnJlZ0V4cENhY2hlKCktPmxvb2t1cE9yQ3JlYXRl
KHBhdHRlcm5TdHJpbmcsIGZsYWdzKTsKIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFJlZ0V4
cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgWWFycjo6WWFy
ckNoYXJTaXplIGNoYQogICAgIGNvbXBpbGUoJmdsb2JhbERhdGEsIGNoYXJTaXplKTsKIH0KIAot
aW50IFJlZ0V4cDo6bWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+JiBvdmVjdG9yKQoraW50
IFJlZ0V4cDo6bWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpCiB7CiAjaWYg
RU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIG1fcnRNYXRjaENhbGxDb3VudCsrOwpAQCAtNDQw
LDcgKzQ0MCw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBZYXJyOjpZYXJyQ2hhCiAgICAgY29tcGlsZU1hdGNoT25s
eSgmZ2xvYmFsRGF0YSwgY2hhclNpemUpOwogfQogCi1NYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNo
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQgc3Rh
cnRPZmZzZXQpCitNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKIHsKICNpZiBFTkFC
TEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgbV9ydE1hdGNoQ2FsbENvdW50Kys7CkBAIC00OTQsNyAr
NDk0LDcgQEAgdm9pZCBSZWdFeHA6OmludmFsaWRhdGVDb2RlKCkKIH0KIAogI2lmIEVOQUJMRShZ
QVJSX0pJVF9ERUJVRykKLXZvaWQgUmVnRXhwOjptYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIo
Y29uc3QgVVN0cmluZyYgcywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqIG9mZnNldFZlY3RvciwgaW50
IGppdFJlc3VsdCkKK3ZvaWQgUmVnRXhwOjptYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIoY29u
c3QgU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0VmVjdG9yLCBpbnQgaml0
UmVzdWx0KQogewogICAgIGludCBvZmZzZXRWZWN0b3JTaXplID0gKG1fbnVtU3VicGF0dGVybnMg
KyAxKSAqIDI7CiAgICAgVmVjdG9yPGludCwgMzI+IGludGVycHJldGVyT3ZlY3RvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5kZXggYWQxMDIwMzc2Y2IxMmI3ZWVhMGU5
ZDYyZGEzMmE2NjlkMjViYWE4Yi4uMjg3NDQ0Yjk1MjQxMDAxMDQ1MWU3MTRmYjFlMzhjNDBkYzk2
NmI5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTI2LDEwICsy
NiwxMCBAQAogI2luY2x1ZGUgIk1hdGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiUmVnRXhwS2V5Lmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUg
InlhcnIvWWFyci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJM
RShZQVJSX0pJVCkKICNpbmNsdWRlICJ5YXJyL1lhcnJKSVQuaCIKQEAgLTQwLDI2ICs0MCwyNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxEYXRhOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnRXhwRmxhZ3Mg
cmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4
cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFN0cmluZyYpOwogCiAgICAgY2xhc3MgUmVnRXhwIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNl
OwogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShKU0ds
b2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBj
b25zdCBTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4cEZsYWdzKTsKICAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9CiAgICAgICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdub3JlQ2FzZTsgfQogICAgICAgICBib29sIG11bHRp
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnTXVsdGlsaW5lOyB9CiAKLSAgICAg
ICAgY29uc3QgVVN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmlu
ZzsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3Bh
dHRlcm5TdHJpbmc7IH0KIAogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAh
bV9jb25zdHJ1Y3Rpb25FcnJvciAmJiBtX2ZsYWdzICE9IEludmFsaWRGbGFnczsgfQogICAgICAg
ICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdGlv
bkVycm9yOyB9CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1hdGNoKEpTR2xvYmFs
RGF0YSYsIGNvbnN0IFVTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwg
MzI+JiBvdmVjdG9yKTsKLSAgICAgICAgTWF0Y2hSZXN1bHQgbWF0Y2goSlNHbG9iYWxEYXRhJiwg
Y29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgaW50IG1hdGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOworICAgICAgICBNYXRjaFJl
c3VsdCBtYXRjaChKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCk7CiAgICAgICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zKCkgY29uc3QgeyByZXR1cm4g
bV9udW1TdWJwYXR0ZXJuczsgfQogCiAgICAgICAgIGJvb2wgaGFzQ29kZSgpCkBAIC04Nyw5ICs4
Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIFJlZ0V4cENhY2hlOwotICAgICAgICBSZWdFeHAoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0
cmluZyYsIFJlZ0V4cEZsYWdzKTsKKyAgICAgICAgUmVnRXhwKEpTR2xvYmFsRGF0YSYsIGNvbnN0
IFN0cmluZyYsIFJlZ0V4cEZsYWdzKTsKIAotICAgICAgICBzdGF0aWMgUmVnRXhwKiBjcmVhdGVX
aXRob3V0Q2FjaGluZyhKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiwgUmVnRXhwRmxhZ3Mp
OworICAgICAgICBzdGF0aWMgUmVnRXhwKiBjcmVhdGVXaXRob3V0Q2FjaGluZyhKU0dsb2JhbERh
dGEmLCBjb25zdCBTdHJpbmcmLCBSZWdFeHBGbGFncyk7CiAKICAgICAgICAgZW51bSBSZWdFeHBT
dGF0ZSB7CiAgICAgICAgICAgICBQYXJzZUVycm9yLApAQCAtMTA1LDEwICsxMDUsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KEpT
R2xvYmFsRGF0YSYsIFlhcnI6OllhcnJDaGFyU2l6ZSk7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVRf
REVCVUcpCi0gICAgICAgIHZvaWQgbWF0Y2hDb21wYXJlV2l0aEludGVycHJldGVyKGNvbnN0IFVT
dHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0VmVjdG9yLCBpbnQgaml0UmVzdWx0
KTsKKyAgICAgICAgdm9pZCBtYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIoY29uc3QgU3RyaW5n
JiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqIG9mZnNldFZlY3RvciwgaW50IGppdFJlc3VsdCk7CiAj
ZW5kaWYKIAotICAgICAgICBVU3RyaW5nIG1fcGF0dGVyblN0cmluZzsKKyAgICAgICAgU3RyaW5n
IG1fcGF0dGVyblN0cmluZzsKICAgICAgICAgUmVnRXhwRmxhZ3MgbV9mbGFnczsKICAgICAgICAg
Y29uc3QgY2hhciogbV9jb25zdHJ1Y3Rpb25FcnJvcjsKICAgICAgICAgdW5zaWduZWQgbV9udW1T
dWJwYXR0ZXJuczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
LmNwcAppbmRleCA1M2ExM2E0YjU5Yjc3ZTc2YTRiODgwY2ZlNzViMzYwNmM4N2UxZmFkLi5jNjdk
YWI4ZTYxZWUwMmExNjkxYWY0Nzk2N2IwZGJkMzhlOWU2NDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1SZWdFeHAqIFJlZ0V4cENhY2hlOjpsb29rdXBPckNyZWF0ZShjb25z
dCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKK1JlZ0V4cCogUmVn
RXhwQ2FjaGU6Omxvb2t1cE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywgUmVn
RXhwRmxhZ3MgZmxhZ3MpCiB7CiAgICAgUmVnRXhwS2V5IGtleShmbGFncywgcGF0dGVyblN0cmlu
Zyk7CiAgICAgaWYgKFJlZ0V4cCogcmVnRXhwID0gbV93ZWFrQ2FjaGUuZ2V0KGtleSkpCkBAIC02
Myw3ICs2Myw3IEBAIHZvaWQgUmVnRXhwQ2FjaGU6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBo
YW5kbGUsIHZvaWQqKQogCiB2b2lkIFJlZ0V4cENhY2hlOjphZGRUb1N0cm9uZ0NhY2hlKFJlZ0V4
cCogcmVnRXhwKQogewotICAgIFVTdHJpbmcgcGF0dGVybiA9IHJlZ0V4cC0+cGF0dGVybigpOwor
ICAgIFN0cmluZyBwYXR0ZXJuID0gcmVnRXhwLT5wYXR0ZXJuKCk7CiAgICAgaWYgKHBhdHRlcm4u
bGVuZ3RoKCkgPiBtYXhTdHJvbmdDYWNoZWFibGVQYXR0ZXJuTGVuZ3RoKQogICAgICAgICByZXR1
cm47CiAgICAgbV9zdHJvbmdDYWNoZVttX25leHRFbnRyeUluU3Ryb25nQ2FjaGVdLnNldCgqbV9n
bG9iYWxEYXRhLCByZWdFeHApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENhY2hlLmgKaW5kZXggNGYzZWExNTM2YTRlYWUxMGQ5ZGNiZWI3OTRlY2Q3NTEwYzJhNjFmNi4u
YzZhNGEwYWEyYWQwYWRkMzYzMDYxZjljMWViNGViZGFmOTI1ZmE4MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5j
bHVkZSAiUmVnRXhwLmgiCiAjaW5jbHVkZSAiUmVnRXhwS2V5LmgiCiAjaW5jbHVkZSAiU3Ryb25n
LmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldlYWsuaCIKICNpbmNsdWRlIDx3
dGYvRml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01NCw3ICs1Myw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+
LCB2b2lkKiBjb250ZXh0KTsKIAotICAgIFJlZ0V4cCogbG9va3VwT3JDcmVhdGUoY29uc3QgVVN0
cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MpOworICAgIFJlZ0V4cCogbG9va3VwT3JD
cmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzKTsKICAg
ICB2b2lkIGFkZFRvU3Ryb25nQ2FjaGUoUmVnRXhwKik7CiAgICAgUmVnRXhwQ2FjaGVNYXAgbV93
ZWFrQ2FjaGU7IC8vIEhvbGRzIGFsbCByZWd1bGFyIGV4cHJlc3Npb25zIGN1cnJlbnRseSBsaXZl
LgogICAgIGludCBtX25leHRFbnRyeUluU3Ryb25nQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMGI0NjM0NzRm
MmY1ZjljODc2ODQ0N2Q4NWEwNjM4MzFmMjE2YTAwOC4uNTdlZTdkZjE0YjQ5NzRiZGQ0MTJkNGM2
MjBlZTk0YzAxYzBjOGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIEpTT2JqZWN0KiBj
b25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBBCiAgICAgICAgIHJldHVybiBhc09iamVjdChhcmcwKTsKICAgICB9CiAKLSAg
ICBVU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZpbmVkKCkgPyBVU3RyaW5nKCIiKSA6IGFy
ZzAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwYXR0ZXJuID0gYXJn
MC5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCIiKSA6IGFyZzAudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5oCmluZGV4IGQ3MTRmMjE2Nzk1MzU2YmQ3OWNhMDUxNGI1ODMxZWZkODQ5MDNiYTEuLjJjYjFj
MTIwNDRmNTAyMzE1OTg0NDZiYmZmMTIxODZkZGViNWExN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaApAQCAtNTUsOCArNTUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKIAotICAgICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0Y2goSlNHbG9iYWxEYXRhJiwgUmVn
RXhwKiwgSlNTdHJpbmcqLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqKiBv
dmVjdG9yKTsKLSAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0YSYs
IFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCk7Cisg
ICAgICAgIE1hdGNoUmVzdWx0IHBlcmZvcm1NYXRjaChKU0dsb2JhbERhdGEmLCBSZWdFeHAqLCBK
U1N0cmluZyosIGNvbnN0IFN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3Rvcik7
CisgICAgICAgIE1hdGNoUmVzdWx0IHBlcmZvcm1NYXRjaChKU0dsb2JhbERhdGEmLCBSZWdFeHAq
LCBKU1N0cmluZyosIGNvbnN0IFN0cmluZyYsIGludCBzdGFydE9mZnNldCk7CiAKICAgICAgICAg
dm9pZCBzZXRNdWx0aWxpbmUoYm9vbCBtdWx0aWxpbmUpIHsgbV9tdWx0aWxpbmUgPSBtdWx0aWxp
bmU7IH0KICAgICAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX211bHRpbGlu
ZTsgfQpAQCAtMTAxLDcgKzEwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgZXhwcmVzc2lv
biBtYXRjaGluZyB0aHJvdWdoIHRoZSBwZXJmb3JtTWF0Y2ggZnVuY3Rpb24uIFdlIHVzZSBjYWNo
ZWQgcmVzdWx0cyB0byBjYWxjdWxhdGUsIAogICAgICAgZS5nLiwgUmVnRXhwLmxhc3RNYXRjaCBh
bmQgUmVnRXhwLmxlZnRQYXJlbi4KICAgICAqLwotICAgIEFMV0FZU19JTkxJTkUgTWF0Y2hSZXN1
bHQgUmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFJlZ0V4cCogcmVnRXhwLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBVU3RyaW5nJiBpbnB1
dCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqKiBvdmVjdG9yKQorICAgIEFMV0FZU19JTkxJTkUgTWF0
Y2hSZXN1bHQgUmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFJlZ0V4cCogcmVnRXhwLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBTdHJpbmcm
IGlucHV0LCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IpCiAgICAgewogICAgICAgICBp
bnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoKGdsb2JhbERhdGEsIGlucHV0LCBzdGFydE9mZnNl
dCwgbV9vdmVjdG9yKTsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHJldHVybiBNYXRjaFJlc3VsdChwb3NpdGlvbiwgZW5kKTsKICAgICB9Ci0gICAgQUxX
QVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNoKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcs
IGNvbnN0IFVTdHJpbmcmIGlucHV0LCBpbnQgc3RhcnRPZmZzZXQpCisgICAgQUxXQVlTX0lOTElO
RSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNoKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFN0
cmluZyYgaW5wdXQsIGludCBzdGFydE9mZnNldCkKICAgICB7CiAgICAgICAgIE1hdGNoUmVzdWx0
IHJlc3VsdCA9IHJlZ0V4cC0+bWF0Y2goZ2xvYmFsRGF0YSwgaW5wdXQsIHN0YXJ0T2Zmc2V0KTsK
ICAgICAgICAgaWYgKHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cEtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
S2V5LmgKaW5kZXggY2RhZmYyN2Y1OWIwNjkzYmZiYjVjOGRhYjY5ZjZjOGM1YWEzYWM5Zi4uZjkz
ZmJiYzFkOTBkMTQ2MzE0OGYxODQ4MWFmZTFhZDA5ZGE0YjFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmgKQEAgLTI4LDggKzI4LDggQEAKICNpZm5kZWYgUmVn
RXhwS2V5X2gKICNkZWZpbmUgUmVnRXhwS2V5X2gKIAotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBSZWdF
eHBLZXkgewogICAgIHsKICAgICB9CiAKLSAgICBSZWdFeHBLZXkoUmVnRXhwRmxhZ3MgZmxhZ3Ms
IGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4pCisgICAgUmVnRXhwS2V5KFJlZ0V4cEZsYWdzIGZsYWdz
LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiAgICAgICAgIDogZmxhZ3NWYWx1ZShmbGFncykKICAg
ICAgICAgLCBwYXR0ZXJuKHBhdHRlcm4uaW1wbCgpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IGFlZmExYjQ0YTBiNzVjYzY3
NmQyNDZkYjMxYjEwYjYzNDc1OWFjMGEuLjZmZDlkYjI5YzA0YWEzNmI5M2ViZmNjOGIxNTRmY2Rm
ZGUwM2JiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcApAQCAtMzEsOSArMzEsOCBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90
eXBlLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE3OSw3ICsxNzgs
NyBAQCBKU1ZhbHVlIHJlZ0V4cE9iamVjdE11bHRpbGluZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNs
b3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiAKIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVTdHJp
bmcgcGF0dGVybiA9IGFzUmVnRXhwT2JqZWN0KHNsb3RCYXNlKS0+cmVnRXhwKCktPnBhdHRlcm4o
KTsKKyAgICBTdHJpbmcgcGF0dGVybiA9IGFzUmVnRXhwT2JqZWN0KHNsb3RCYXNlKS0+cmVnRXhw
KCktPnBhdHRlcm4oKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBwYXR0ZXJuLmxlbmd0aCgpOwog
ICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gcGF0dGVybi5jaGFyYWN0ZXJzKCk7CiAgICAg
Ym9vbCBwcmV2aW91c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOwpAQCAtMjI3LDcgKzIy
Niw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogCiAgICAgcHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNr
c2xhc2ggPSBmYWxzZTsKICAgICBpbkJyYWNrZXRzID0gZmFsc2U7Ci0gICAgVVN0cmluZ0J1aWxk
ZXIgcmVzdWx0OworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBVQ2hhciBjaCA9IGNoYXJhY3RlcnNb
aV07CiAgICAgICAgIGlmICghcHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2gpIHsKQEAgLTI2
NCw3ICsyNjMsNyBAQCBKU1ZhbHVlIHJlZ0V4cE9iamVjdFNvdXJjZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHByZXZpb3VzQ2hh
cmFjdGVyV2FzQmFja3NsYXNoID0gY2ggPT0gJ1xcJzsKICAgICB9CiAKLSAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgcmVzdWx0LnRvVVN0cmluZygpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywgcmVzdWx0LnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yODgsNyArMjg3LDcgQEAgTWF0
Y2hSZXN1bHQgUmVnRXhwT2JqZWN0OjptYXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBz
dHJpbmcpCiB7CiAgICAgUmVnRXhwKiByZWdFeHAgPSB0aGlzLT5yZWdFeHAoKTsKICAgICBSZWdF
eHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPnJlZ0V4cENvbnN0cnVjdG9yKCk7Ci0gICAgVVN0cmluZyBpbnB1dCA9IHN0cmluZy0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsKICAg
ICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgaWYg
KCFyZWdFeHAtPmdsb2JhbCgpKQogICAgICAgICByZXR1cm4gcmVnRXhwQ29uc3RydWN0b3ItPnBl
cmZvcm1NYXRjaChnbG9iYWxEYXRhLCByZWdFeHAsIHN0cmluZywgaW5wdXQsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXgg
MjRjN2M4MDI3YzFkOTM1MzM3M2ZjMjcwZmNjOTVkMmYxOTNlNzViZC4uYzIyZTZkMDM5ZDMyOTkx
ZjI0NzJlYTkyNTU1M2UwYzFiYTIzNjEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVk
ZSAiUmVnRXhwLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpbmdS
ZWN1cnNpb25DaGVja2VyLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0xMTAsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJDYW5u
b3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVy
LiIpKTsKICAgICAgICAgcmVnRXhwID0gYXNSZWdFeHBPYmplY3QoYXJnMCktPnJlZ0V4cCgpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFVTdHJpbmcgcGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENv
dW50KCkgPyBVU3RyaW5nKCIiKSA6IGFyZzAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwor
ICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50KCkgPyBTdHJpbmco
IiIpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKQEAgLTE1Myw3ICsxNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
cG9zdGZpeFtpbmRleCsrXSA9ICdpJzsKICAgICBpZiAodGhpc09iamVjdC0+Z2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5tdWx0aWxpbmUpLnRvQm9vbGVhbihleGVjKSkKICAgICAgICAg
cG9zdGZpeFtpbmRleF0gPSAnbSc7Ci0gICAgVVN0cmluZyBzb3VyY2UgPSB0aGlzT2JqZWN0LT5n
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnNvdXJjZSkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnNvdXJjZSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIC8vIElmIHNvdXJjZSBpcyBlbXB0eSwgdXNlICIvKD86KS8iIHRvIGF2b2lkIGNvbGxpZGlu
ZyB3aXRoIGNvbW1lbnQgc3ludGF4CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGV4ZWMsICIvIiwgc291cmNlLCBwb3N0Zml4KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAppbmRleCBmNTBmNzNk
MjdjN2MwMzBmYWUyYTNkZmI2NjZmNWE0ZmFhYjVjMjJlLi41NmEzNTkyNzlkY2NkZjY1ZDFhOWNj
NWFlZWFmODZlNzg1ZTVmYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TbWFsbFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NtYWxsU3RyaW5ncy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU1N0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAppbmRleCBl
NjA5YzUwOTIyMWM2YWIwMGQ2ZDU3OGE5ZjMzNGQxNjc0ZWQxYjFlLi41YmM5ZDIyNTIzOWZiZDM4
OTA2NmNlYjZmNGJjOWY1OTk3MWM3NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TbWFsbFN0cmluZ3MuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBTbWFsbFN0cmlu
Z3NfaAogI2RlZmluZSBTbWFsbFN0cmluZ3NfaAogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2lu
Y2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCiAjZGVmaW5lIEpTQ19DT01NT05fU1RSSU5HU19FQUNI
X05BTUUobWFjcm8pIFwKQEAgLTQxLDYgKzQxLDEwIEBACiAgICAgbWFjcm8oc3RyaW5nKSBcCiAg
ICAgbWFjcm8odHJ1ZSkKIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBTdHJpbmdJbXBsOworfQor
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKQEAgLTcxLDcg
Kzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9zaW5nbGVDaGFy
YWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl07CiAgICAgICAgIH0KIAotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmdJbXBsKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAodW5zaWduZWQgY2hh
ciBjaGFyYWN0ZXIpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZ0ltcGwq
IHNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CiAKICAg
ICAgICAgdm9pZCBmaW5hbGl6ZVNtYWxsU3RyaW5ncygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCAzYzAzN2JjZDE3YWMwN2FlMzBi
YmE2OGY3MzcyYjgxZTU0OTFhYmVmLi42YzFmMTZkNjNlYjdmYjI5YjhkMDUxZGYxNDBiY2QzMGVm
ZGEyNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcgogICAgIFN0
cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwog
ICAgIGludCBzaXplID0gdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5sZW5ndGgoKTsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nOjpudW1iZXIoaSkpKTsKKyAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBTdHJpbmc6Om51bWJlcihpKSkpOwogICAgIGlm
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpCiAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOwogICAgIHJldHVybiBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCmluZGV4IDAwMWU1ZThiMGQxYmE1Y2Y2ZWYxZGNkMDM5OTU0YjgyY2JjYTljNTUuLjc5
NWU0ZTY4YTZmZDhiNTFkNmU2YmJhMmJkMjEwMGU2MDJkYjQ2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTYyLDcgKzE2
Miw3IEBAIGJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjCiAvLyBIZWxwZXIgZm9yIHByb2R1Y2luZyBh
IEpTU3RyaW5nIGZvciAnc3RyaW5nJywgd2hlcmUgJ3N0cmluZycgd2FzIGJlZW4gcHJvZHVjZWQg
YnkKIC8vIGNhbGxpbmcgVG9TdHJpbmcgb24gJ29yaWdpbmFsVmFsdWUnLiBJbiBjYXNlcyB3aGVy
ZSAnb3JpZ2luYWxWYWx1ZScgYWxyZWFkeSB3YXMgYQogLy8gc3RyaW5nIHByaW1pdGl2ZSB3ZSBj
YW4ganVzdCB1c2UgdGhpcywgb3RoZXJ3aXNlIHdlIG5lZWQgdG8gYWxsb2NhdGUgYSBuZXcgSlNT
dHJpbmcuCi1zdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhSZXVzZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQor
c3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdHJpbmdXaXRoUmV1c2UoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlm
IChvcmlnaW5hbFZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgQVNTRVJUKGFzU3RyaW5nKG9y
aWdpbmFsVmFsdWUpLT52YWx1ZShleGVjKSA9PSBzdHJpbmcpOwpAQCAtMTcyLDcgKzE3Miw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aFJldXNlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KLXN0YXRpYyBORVZFUl9JTkxJTkUgVVN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNT
bG93KGNvbnN0IFVTdHJpbmcmIHJlcGxhY2VtZW50LCBjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcsIHNpemVfdCBpKQorc3RhdGljIE5FVkVSX0lO
TElORSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzU2xvdyhjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdF
eHAqIHJlZywgc2l6ZV90IGkpCiB7CiAgICAgVmVjdG9yPENoYXJUeXBlPiBzdWJzdGl0dXRlZFJl
cGxhY2VtZW50OwogICAgIGludCBvZmZzZXQgPSAwOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRp
YyBORVZFUl9JTkxJTkUgVVN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93KGNvbnN0
IFVTdHJpbmcmIHJlcGxhY2VtCiAgICAgICAgIGlmIChyZWYgPT0gJyQnKSB7CiAgICAgICAgICAg
ICAvLyAiJCQiIC0+ICIkIgogICAgICAgICAgICAgKytpOwotICAgICAgICAgICAgc3Vic3RpdHV0
ZWRSZXBsYWNlbWVudC5hcHBlbmQocmVwbGFjZW1lbnQuZ2V0Q2hhcmFjdGVyczxDaGFyVHlwZT4o
KSArIG9mZnNldCwgaSAtIG9mZnNldCk7CisgICAgICAgICAgICBzdWJzdGl0dXRlZFJlcGxhY2Vt
ZW50LmFwcGVuZChyZXBsYWNlbWVudC5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydDxDaGFyVHlw
ZT4oKSArIG9mZnNldCwgaSAtIG9mZnNldCk7CiAgICAgICAgICAgICBvZmZzZXQgPSBpICsgMTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0yMjQsMjEgKzIyNCwyMSBAQCBz
dGF0aWMgTkVWRVJfSU5MSU5FIFVTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzU2xvdyhj
b25zdCBVU3RyaW5nJiByZXBsYWNlbQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
aWYgKGkgLSBvZmZzZXQpCi0gICAgICAgICAgICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50LmFwcGVu
ZChyZXBsYWNlbWVudC5nZXRDaGFyYWN0ZXJzPENoYXJUeXBlPigpICsgb2Zmc2V0LCBpIC0gb2Zm
c2V0KTsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQuYXBwZW5kKHJlcGxhY2Vt
ZW50LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0PENoYXJUeXBlPigpICsgb2Zmc2V0LCBpIC0g
b2Zmc2V0KTsKICAgICAgICAgaSArPSAxICsgYWR2YW5jZTsKICAgICAgICAgb2Zmc2V0ID0gaSAr
IDE7CiAgICAgICAgIGlmIChiYWNrcmVmU3RhcnQgPj0gMCkKLSAgICAgICAgICAgIHN1YnN0aXR1
dGVkUmVwbGFjZW1lbnQuYXBwZW5kKHNvdXJjZS5nZXRDaGFyYWN0ZXJzPENoYXJUeXBlPigpICsg
YmFja3JlZlN0YXJ0LCBiYWNrcmVmTGVuZ3RoKTsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVkUmVw
bGFjZW1lbnQuYXBwZW5kKHNvdXJjZS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydDxDaGFyVHlw
ZT4oKSArIGJhY2tyZWZTdGFydCwgYmFja3JlZkxlbmd0aCk7CiAgICAgfSB3aGlsZSAoKGkgPSBy
ZXBsYWNlbWVudC5maW5kKCckJywgaSArIDEpKSAhPSBub3RGb3VuZCk7CiAKICAgICBpZiAocmVw
bGFjZW1lbnQubGVuZ3RoKCkgLSBvZmZzZXQpCi0gICAgICAgIHN1YnN0aXR1dGVkUmVwbGFjZW1l
bnQuYXBwZW5kKHJlcGxhY2VtZW50LmdldENoYXJhY3RlcnM8Q2hhclR5cGU+KCkgKyBvZmZzZXQs
IHJlcGxhY2VtZW50Lmxlbmd0aCgpIC0gb2Zmc2V0KTsKKyAgICAgICAgc3Vic3RpdHV0ZWRSZXBs
YWNlbWVudC5hcHBlbmQocmVwbGFjZW1lbnQuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQ8Q2hh
clR5cGU+KCkgKyBvZmZzZXQsIHJlcGxhY2VtZW50Lmxlbmd0aCgpIC0gb2Zmc2V0KTsKIAogICAg
IHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQuc2hyaW5rVG9GaXQoKTsKLSAgICByZXR1cm4gVVN0cmlu
Zzo6YWRvcHQoc3Vic3RpdHV0ZWRSZXBsYWNlbWVudCk7CisgICAgcmV0dXJuIFN0cmluZzo6YWRv
cHQoc3Vic3RpdHV0ZWRSZXBsYWNlbWVudCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVVN0cmluZyBz
dWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoY29uc3QgVVN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZykKK3N0YXRp
YyBpbmxpbmUgU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdF
eHAqIHJlZykKIHsKICAgICBzaXplX3QgaSA9IHJlcGxhY2VtZW50LmZpbmQoJyQnKTsKICAgICBp
ZiAoVU5MSUtFTFkoaSAhPSBub3RGb3VuZCkpIHsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMg
aW5saW5lIFVTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFVTdHJpbmcmIHJl
cGxhY2VtZW50LCBjb25zdAogICAgIHJldHVybiByZXBsYWNlbWVudDsKIH0KIAotc3RhdGljIGlu
bGluZSBpbnQgbG9jYWxlQ29tcGFyZShjb25zdCBVU3RyaW5nJiBhLCBjb25zdCBVU3RyaW5nJiBi
KQorc3RhdGljIGlubGluZSBpbnQgbG9jYWxlQ29tcGFyZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0
IFN0cmluZyYgYikKIHsKICAgICByZXR1cm4gQ29sbGF0b3I6OnVzZXJEZWZhdWx0KCktPmNvbGxh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4oYS5jaGFyYWN0ZXJzKCkpLCBhLmxl
bmd0aCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihiLmNoYXJhY3RlcnMoKSks
IGIubGVuZ3RoKCkpOwogfQpAQCAtMjcwLDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgbGVu
Z3RoOwogfTsKIAotc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmlu
Z3MoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBVU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJzdHJpbmdSYW5nZXMsIGludCByYW5nZUNvdW50
KQorc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0
YXRlKiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQpCiB7CiAgICAg
aWYgKHJhbmdlQ291bnQgPT0gMSkgewogICAgICAgICBpbnQgc291cmNlU2l6ZSA9IHNvdXJjZS5s
ZW5ndGgoKTsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyYwogICAg
ICAgICBpbnQgbGVuZ3RoID0gc3Vic3RyaW5nUmFuZ2VzWzBdLmxlbmd0aDsKICAgICAgICAgaWYg
KHBvc2l0aW9uIDw9IDAgJiYgbGVuZ3RoID49IHNvdXJjZVNpemUpCiAgICAgICAgICAgICByZXR1
cm4gc291cmNlVmFsOwotICAgICAgICAvLyBXZSBjb3VsZCBjYWxsIFVTdHJpbmc6OnN1YnN0ciwg
YnV0IHRoaXMgd291bGQgcmVzdWx0IGluIHJlZHVuZGFudCBjaGVja3MKKyAgICAgICAgLy8gV2Ug
Y291bGQgY2FsbCBTdHJpbmc6OnN1YnN0cmluZ1NoYXJpbmdJbXBsKCksIGJ1dCB0aGlzIHdvdWxk
IHJlc3VsdCBpbiByZWR1bmRhbnQgY2hlY2tzLgogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywgU3RyaW5nSW1wbDo6Y3JlYXRlKHNvdXJjZS5pbXBsKCksIG1heCgwLCBwb3NpdGlvbiksIG1p
bihzb3VyY2VTaXplLCBsZW5ndGgpKSk7CiAgICAgfQogCkBAIC0zMjUsNyArMzI1LDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0YXRlKiBl
eGVjLCBKU1N0cmluZyogc291cmMKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1wbC5yZWxl
YXNlKCkpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3Vic3Ry
aW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJjZVZhbCwg
Y29uc3QgVVN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmdSYW5nZSogc3Vic3RyaW5nUmFuZ2Vz
LCBpbnQgcmFuZ2VDb3VudCwgY29uc3QgVVN0cmluZyogc2VwYXJhdG9ycywgaW50IHNlcGFyYXRv
ckNvdW50KQorc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3NX
aXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyY2VWYWwsIGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmdSYW5nZSogc3Vic3RyaW5nUmFuZ2VzLCBpbnQg
cmFuZ2VDb3VudCwgY29uc3QgU3RyaW5nKiBzZXBhcmF0b3JzLCBpbnQgc2VwYXJhdG9yQ291bnQp
CiB7CiAgICAgaWYgKHJhbmdlQ291bnQgPT0gMSAmJiBzZXBhcmF0b3JDb3VudCA9PSAwKSB7CiAg
ICAgICAgIGludCBzb3VyY2VTaXplID0gc291cmNlLmxlbmd0aCgpOwpAQCAtMzMzLDcgKzMzMyw3
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNl
cGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLCBKCiAgICAgICAgIGludCBsZW5ndGggPSBzdWJzdHJp
bmdSYW5nZXNbMF0ubGVuZ3RoOwogICAgICAgICBpZiAocG9zaXRpb24gPD0gMCAmJiBsZW5ndGgg
Pj0gc291cmNlU2l6ZSkKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VWYWw7Ci0gICAgICAgIC8v
IFdlIGNvdWxkIGNhbGwgVVN0cmluZzo6c3Vic3RyLCBidXQgdGhpcyB3b3VsZCByZXN1bHQgaW4g
cmVkdW5kYW50IGNoZWNrcworICAgICAgICAvLyBXZSBjb3VsZCBjYWxsIFN0cmluZzo6c3Vic3Ry
aW5nU2hhcmluZ0ltcGwoKSwgYnV0IHRoaXMgd291bGQgcmVzdWx0IGluIHJlZHVuZGFudCBjaGVj
a3MuCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmdJbXBsOjpjcmVhdGUoc291
cmNlLmltcGwoKSwgbWF4KDAsIHBvc2l0aW9uKSwgbWluKHNvdXJjZVNpemUsIGxlbmd0aCkpKTsK
ICAgICB9CiAKQEAgLTQwMyw3ICs0MDMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSgogICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBpbXBsLnJlbGVhc2UoKSk7CiB9CiAKLXN0YXRpYyBORVZF
Ul9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2goRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBVU3RyaW5nJiBzb3VyY2UsIFJlZ0V4cCog
cmVnRXhwKQorc3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZW1vdmVVc2luZ1Jl
Z0V4cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBSZWdFeHAqIHJlZ0V4cCkKIHsKICAgICBzaXplX3QgbGFzdEluZGV4ID0gMDsK
ICAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9uID0gMDsKQEAgLTQ0NCwxMyArNDQ0LDEzIEBAIHN0
YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2go
RXhlY1N0YXRlKiBleGVjLCBKU1N0CiBzdGF0aWMgTkVWRVJfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJp
bmcsIEpTVmFsdWUgc2VhcmNoVmFsdWUpCiB7CiAgICAgSlNWYWx1ZSByZXBsYWNlVmFsdWUgPSBl
eGVjLT5hcmd1bWVudCgxKTsKLSAgICBVU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nOworICAgIFN0
cmluZyByZXBsYWNlbWVudFN0cmluZzsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHJlcGxhY2VWYWx1ZSwgY2FsbERhdGEpOwogICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5n
ID0gcmVwbGFjZVZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAotICAgIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZSA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5n
JiBzb3VyY2UgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwogICAgIHVuc2lnbmVkIHNvdXJjZUxlbiA9
IHNvdXJjZS5sZW5ndGgoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKQEAgLTQ3NCw3ICs0NzQsNyBAQCBz
dGF0aWMgTkVWRVJfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJj
aChFeGVjU3RhdGUqIGV4ZWMsIEpTUwogICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSAwOwog
CiAgICAgVmVjdG9yPFN0cmluZ1JhbmdlLCAxNj4gc291cmNlUmFuZ2VzOwotICAgIFZlY3RvcjxV
U3RyaW5nLCAxNj4gcmVwbGFjZW1lbnRzOworICAgIFZlY3RvcjxTdHJpbmcsIDE2PiByZXBsYWNl
bWVudHM7CiAKICAgICAvLyBUaGlzIGlzIGVpdGhlciBhIGxvb3AgKGlmIGdsb2JhbCBpcyBzZXQp
IG9yIGEgb25lLXdheSAoaWYgbm90KS4KICAgICBpZiAoZ2xvYmFsICYmIGNhbGxUeXBlID09IENh
bGxUeXBlSlMpIHsKQEAgLTYwMSw3ICs2MDEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIEVuY29k
ZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTUwog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVwbExlbikKICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxhY2VtZW50cy5hcHBlbmQoc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2VtZW50
U3RyaW5nLCBzb3VyY2UsIG92ZWN0b3IsIHJlZ0V4cCkpOwogICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKFVTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKFN0cmluZygp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTYyOCw4ICs2MjgsOCBA
QCBzdGF0aWMgTkVWRVJfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1JlZ0V4cFNl
YXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTUwogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBqc1N0
cmluZywgSlNWYWx1ZSBzZWFyY2hWYWx1ZSkKIHsKLSAgICBjb25zdCBVU3RyaW5nJiBzdHJpbmcg
PSBqc1N0cmluZy0+dmFsdWUoZXhlYyk7Ci0gICAgVVN0cmluZyBzZWFyY2hTdHJpbmcgPSBzZWFy
Y2hWYWx1ZS50b1VTdHJpbmcoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcgPSBqc1N0
cmluZy0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IHNlYXJjaFZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKQEAg
LTY1MSwxOSArNjUxLDE5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVz
aW5nU3RyaW5nU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIFVTdHJp
bmcgcmVwbGFjZVN0cmluZyA9IHJlcGxhY2VWYWx1ZS50b1VTdHJpbmcoZXhlYyk7CisgICAgU3Ry
aW5nIHJlcGxhY2VTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwg
PSBzdHJpbmcuaW1wbCgpOwotICAgIFVTdHJpbmcgbGVmdFBhcnQoU3RyaW5nSW1wbDo6Y3JlYXRl
KHN0cmluZ0ltcGwsIDAsIG1hdGNoU3RhcnQpKTsKKyAgICBTdHJpbmcgbGVmdFBhcnQoU3RyaW5n
SW1wbDo6Y3JlYXRlKHN0cmluZ0ltcGwsIDAsIG1hdGNoU3RhcnQpKTsKIAogICAgIHNpemVfdCBt
YXRjaEVuZCA9IG1hdGNoU3RhcnQgKyBzZWFyY2hTdHJpbmcuaW1wbCgpLT5sZW5ndGgoKTsKICAg
ICBpbnQgb3ZlY3RvclsyXSA9IHsgbWF0Y2hTdGFydCwgIG1hdGNoRW5kfTsKLSAgICBVU3RyaW5n
IG1pZGRsZVBhcnQgPSBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMocmVwbGFjZVN0cmluZywgc3Ry
aW5nLCBvdmVjdG9yLCAwKTsKKyAgICBTdHJpbmcgbWlkZGxlUGFydCA9IHN1YnN0aXR1dGVCYWNr
cmVmZXJlbmNlcyhyZXBsYWNlU3RyaW5nLCBzdHJpbmcsIG92ZWN0b3IsIDApOwogCiAgICAgc2l6
ZV90IGxlZnRMZW5ndGggPSBzdHJpbmdJbXBsLT5sZW5ndGgoKSAtIG1hdGNoRW5kOwotICAgIFVT
dHJpbmcgcmlnaHRQYXJ0KFN0cmluZ0ltcGw6OmNyZWF0ZShzdHJpbmdJbXBsLCBtYXRjaEVuZCwg
bGVmdExlbmd0aCkpOworICAgIFN0cmluZyByaWdodFBhcnQoU3RyaW5nSW1wbDo6Y3JlYXRlKHN0
cmluZ0ltcGwsIG1hdGNoRW5kLCBsZWZ0TGVuZ3RoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU0M6OmpzU3RyaW5nKGV4ZWMsIGxlZnRQYXJ0LCBtaWRkbGVQYXJ0LCByaWdodFBhcnQp
KTsKIH0KIApAQCAtNjk5LDcgKzY5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIHVuc2lnbmVkIGxlbiA9IHMubGVuZ3RoKCk7CiAgICAgSlNW
YWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJbnQzMigpKSB7CkBA
IC03MTksNyArNzE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIHVuc2lnbmVkIGxlbiA9IHMubGVuZ3RoKCk7CiAgICAgSlNWYWx1ZSBh
MCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJbnQzMigpKSB7CkBAIC03NTMs
MTEgKzc1MywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkg
Ly8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgSlNWYWx1ZSBh
MSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIFVTdHJpbmcgdTIgPSBhMC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHUyID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogCiAgICAgc2l6ZV90IHJlc3VsdDsKICAgICBpZiAoYTEuaXNVbmRlZmluZWQoKSkK
QEAgLTc4OCwxMyArNzg4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgaW50IGxlbiA9IHMubGVuZ3RoKCk7CiAKICAgICBKU1ZhbHVl
IGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50
KDEpOwogCi0gICAgVVN0cmluZyB1MiA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgdTIgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgZG91
YmxlIGRwb3MgPSBhMS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKICAgICBpZiAoZHBvcyA8
IDApCiAgICAgICAgIGRwb3MgPSAwOwpAQCAtODEzLDcgKzgxMyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTWF0Y2goRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2li
bGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgSlNTdHJpbmcq
IHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKLSAgICBVU3RyaW5nIHMgPSBzdHJp
bmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gc3RyaW5nLT52YWx1ZShleGVjKTsKICAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCiAgICAg
SlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtODM2LDcgKzgzNiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTWF0Y2goRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgKiAgcmVwbGFjZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBleHByZXNz
aW9uIG5ldyBSZWdFeHAocmVnZXhwKS4KICAgICAgICAgICogIFBlciBFQ01BIDE1LjEwLjQuMSwg
aWYgYTAgaXMgdW5kZWZpbmVkIHN1YnN0aXR1dGUgdGhlIGVtcHR5IHN0cmluZy4KICAgICAgICAg
ICovCi0gICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
YTAuaXNVbmRlZmluZWQoKSA/IFVTdHJpbmcoIiIpIDogYTAudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpLCBOb0ZsYWdzKTsKKyAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBhMC5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCIiKSA6IGEwLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSwgTm9GbGFncyk7CiAgICAgICAgIGlmICghcmVnRXhwLT5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRh
eEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKTsKICAgICB9CkBAIC04NzIsNyAr
ODcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTZWFy
Y2goRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KTsKLSAgICBVU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0g
c3RyaW5nLT52YWx1ZShleGVjKTsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhl
Yy0+Z2xvYmFsRGF0YSgpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpA
QCAtODg3LDcgKzg4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICogIHJlcGxhY2VkIHdpdGgg
dGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBuZXcgUmVnRXhwKHJlZ2V4cCkuCiAgICAgICAg
ICAqICBQZXIgRUNNQSAxNS4xMC40LjEsIGlmIGEwIGlzIHVuZGVmaW5lZCBzdWJzdGl0dXRlIHRo
ZSBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAqLwotICAgICAgICByZWcgPSBSZWdFeHA6OmNyZWF0
ZShleGVjLT5nbG9iYWxEYXRhKCksIGEwLmlzVW5kZWZpbmVkKCkgPyBVU3RyaW5nKCIiKSA6IGEw
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgTm9GbGFncyk7CisgICAgICAgIHJlZyA9IFJl
Z0V4cDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgYTAuaXNVbmRlZmluZWQoKSA/IFN0cmlu
ZygiIikgOiBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIE5vRmxhZ3MpOwogICAgICAg
ICBpZiAoIXJlZy0+aXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWctPmVycm9yTWVzc2FnZSgpKSk7CiAgICAg
fQpAQCAtOTAxLDcgKzkwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaW50IGxlbiA9IHMubGVuZ3RoKCk7CiAKICAgICBKU1ZhbHVlIGEwID0g
ZXhlYy0+YXJndW1lbnQoMCk7CkBAIC05MjUsNyArOTI1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAKIC8vIFJl
dHVybiB0cnVlIGluIGNhc2Ugb2YgZWFybHkgcmV0dXJuIChyZXN1bHRMZW5ndGggZ290IHRvIGxp
bWl0TGVuZ3RoKS4KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsKEV4ZWNTdGF0ZSog
ZXhlYywgSlNBcnJheSogcmVzdWx0LCBjb25zdCBVU3RyaW5nJiBpbnB1dCwgU3RyaW5nSW1wbCog
c3RyaW5nLCBVQ2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIsIHNpemVfdCYgcG9zaXRpb24sIHVuc2ln
bmVkJiByZXN1bHRMZW5ndGgsIHVuc2lnbmVkIGxpbWl0TGVuZ3RoKQorc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1wbChFeGVjU3RhdGUqIGV4ZWMs
IEpTQXJyYXkqIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBpbnB1dCwgU3RyaW5nSW1wbCogc3RyaW5n
LCBVQ2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIsIHNpemVfdCYgcG9zaXRpb24sIHVuc2lnbmVkJiBy
ZXN1bHRMZW5ndGgsIHVuc2lnbmVkIGxpbWl0TGVuZ3RoKQogewogICAgIC8vIDEyLiBMZXQgcSA9
IHAuCiAgICAgc2l6ZV90IG1hdGNoUG9zaXRpb247CkBAIC05NjIsNyArOTYyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdChFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICAvLyAyLiBMZXQgUyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9TdHJpbmcs
IGdpdmluZyBpdCB0aGUgdGhpcyB2YWx1ZSBhcyBpdHMgYXJndW1lbnQuCiAgICAgLy8gNi4gTGV0
IHMgYmUgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIFMuCi0gICAgVVN0cmluZyBpbnB1dCA9
IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGlucHV0
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAgIC8vIDMuIExl
dCBBIGJlIGEgbmV3IGFycmF5IGNyZWF0ZWQgYXMgaWYgYnkgdGhlIGV4cHJlc3Npb24gbmV3IEFy
cmF5KCkKICAgICAvLyAgICB3aGVyZSBBcnJheSBpcyB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gY29u
c3RydWN0b3Igd2l0aCB0aGF0IG5hbWUuCkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFVTdHJpbmcg
c2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwor
ICAgICAgICBTdHJpbmcgc2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogCiAgICAgICAgIC8vIDkuIElmIGxpbSA9PSAwLCByZXR1cm4gQS4KICAg
ICAgICAgaWYgKCFsaW1pdCkKQEAgLTExNjcsNyArMTE2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICB1bnNpZ25lZCBs
ZW47CiAgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0gMDsKLSAgICBVU3RyaW5nIHVTdHJpbmc7Cisg
ICAgU3RyaW5nIHVTdHJpbmc7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1N0cmluZygpKSB7CiAgICAg
ICAgIGpzU3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4odGhpc1ZhbHVlLmFzQ2VsbCgpKTsKICAg
ICAgICAgbGVuID0ganNTdHJpbmctPmxlbmd0aCgpOwpAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBD
aGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKLSAgICBj
b25zdCBVU3RyaW5nJiBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nJiBz
ID0gc1ZhbC0+dmFsdWUoZXhlYyk7CiAKICAgICBpbnQgc1NpemUgPSBzLmxlbmd0aCgpOwogICAg
IGlmICghc1NpemUpCkBAIC0xMjU3LDcgKzEyNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBS
ZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIgPSBvdXJJbXBsLT5sb3dlcigpOwogICAgIGlmIChvdXJJ
bXBsID09IGxvd2VyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNWYWwpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZyhsb3dlci5yZWxl
YXNlKCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJp
bmcobG93ZXIucmVsZWFzZSgpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTEyNjYsNyAr
MTI2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9V
cHBlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CiAgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyk7Ci0gICAgY29uc3QgVVN0cmluZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOworICAgIGNv
bnN0IFN0cmluZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogCiAgICAgaW50IHNTaXplID0gcy5s
ZW5ndGgoKTsKICAgICBpZiAoIXNTaXplKQpAQCAtMTI3Niw3ICsxMjc2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyID0gc0ltcGwtPnVwcGVyKCk7CiAg
ICAgaWYgKHNJbXBsID09IHVwcGVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNW
YWwpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZyh1
cHBlci5yZWxlYXNlKCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCBTdHJpbmcodXBwZXIucmVsZWFzZSgpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBleGVjKQpA
QCAtMTI4Nyw3ICsxMjg3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobG9jYWxlQ29tcGFyZShzLCBhMC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKSk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0JpZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAg
aWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJs
ZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMg
PSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0g
dGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxiaWc+IiwgcywgIjwvYmln
PiIpKTsKIH0KIApAQCAtMTMwNyw3ICsxMzA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTbWFsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5v
bnRyaXZpYWxTdHJpbmcoZXhlYywgIjxzbWFsbD4iLCBzLCAiPC9zbWFsbD4iKSk7CiB9CiAKQEAg
LTEzMTYsNyArMTMxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jQmxpbmsoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGV4ZWMsICI8Ymxpbms+IiwgcywgIjwvYmxpbms+IikpOwogfQogCkBAIC0xMzI1LDcgKzEzMjUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0JvbGQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1
ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmpl
Y3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAg
VVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8Yj4iLCBz
LCAiPC9iPiIpKTsKIH0KIApAQCAtMTMzNCw3ICsxMzM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjx0dD4iLCBzLCAiPC90dD4iKSk7CiB9CiAKQEAg
LTEzNDMsNyArMTM0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jSXRhbGljcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIjxpPiIsIHMsICI8L2k+IikpOwogfQogCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0cmlrZShFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENv
ZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxzdHJpa2U+Iiwg
cywgIjwvc3RyaWtlPiIpKTsKIH0KIApAQCAtMTM2MSw3ICsxMzYxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWIoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlz
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8c3ViPiIsIHMsICI8L3N1Yj4iKSk7CiB9
CiAKQEAgLTEzNzAsNyArMTM3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jU3VwKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0
cmluZyhleGVjLCAiPHN1cD4iLCBzLCAiPC9zdXA+IikpOwogfQogCkBAIC0xMzc5LDcgKzEzNzks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xv
cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhp
c1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVj
a09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
LSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwor
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8Zm9udCBjb2xvcj1cIiIsIGEwLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOwogfQpAQCAt
MTM4OSw3ICsxMzg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNGb250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAKICAgICB1aW50
MzJfdCBzbWFsbEludGVnZXI7CkBAIC0xNDM0LDcgKzE0MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0FuY2hvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJn
dW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICI8YSBuYW1lPVwiIiwgYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAi
XCI+IiwgcywgIjwvYT4iKSk7CiB9CkBAIC0xNDQ0LDkgKzE0NDQsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xpbmsoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlz
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFy
Z3VtZW50KDApOwotICAgIFVTdHJpbmcgbGlua1RleHQgPSBhMC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgU3RyaW5nIGxpbmtUZXh0ID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogCiAgICAgdW5zaWduZWQgbGlua1RleHRTaXplID0gbGlua1RleHQubGVuZ3RoKCk7
CiAgICAgdW5zaWduZWQgc3RyaW5nU2l6ZSA9IHMubGVuZ3RoKCk7CkBAIC0xNDg5LDcgKzE0ODks
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgdHJpbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBpbnQgdHJpbUtpbgogewogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgc3RyID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc3RyID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICB1bnNpZ25lZCBsZWZ0ID0gMDsKICAgICBpZiAodHJp
bUtpbmQgJiBUcmltTGVmdCkgewogICAgICAgICB3aGlsZSAobGVmdCA8IHN0ci5sZW5ndGgoKSAm
JiBpc1RyaW1XaGl0ZXNwYWNlKHN0cltsZWZ0XSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCmluZGV4IGUzYTI1YmI4NzFjNTMyN2YxYTcyNWMyNzhmYWVlMGI2NjJi
NDhmNzIuLjU3MzY4YmVlOGNjNTNiMWMxYTZlYmJlMDliMzdhYTkyNjhkYzc4MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC0zNiwxMiArMzYsMTIgQEAK
ICNpbmNsdWRlICJQcm90ZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJhbnNpdGlvblRhYmxl
LmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNs
dWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTI1OSw3ICsyNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKIAogICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRh
JiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQ
cm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYg
YXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAKICAgICAgICAgYm9vbCBoYXNH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzOyB9CkBAIC01MDEsNyArNTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OwogICAgIH0KIAot
ICAgIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgV1RGOjpTdHJp
bmcmIG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09ICZzX2luZm8pOwogICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nhcnko
Z2xvYmFsRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCmluZGV4IDIwNjdhODk5NTQ2Zjc4OGE3OWE0Nzdl
N2Q4MGRjN2YwZTIxZGIyNjAuLjdjOWQ1MDg5NGUzZWM5ZjJlYTcyNjY0OGJhYWMzMmJlMzBjM2E2
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpZm5kZWYgU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlX2gKICNkZWZpbmUgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlX2gK
IAotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJXZWFrR0NNYXAuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmgKaW5kZXggYjNjZjIwMjllYWJkNjg0YmE0NzRhNzY1ZTYxZTZjM2E5M2VhNThmNy4uMDhlYThj
MTYzMDhhMzJiZWQ3NzUwNTJlYTUzYmEzYzc3NGIzMDQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0zMCwxMCArMzAsMTAgQEAKICNkZWZpbmUg
U3ltYm9sVGFibGVfaAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJVU3RyaW5n
LmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0ltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNTczNWM0ZGY3
YzBhYTEyZmUxMDVkZjdhNGQ0ZmY1ZThlNDM5ODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmlu
Zy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjIgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAo
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCi0KLSNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5oIgotI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCi0jaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8c3RkbGli
Lmg+Ci0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi9kdG9hLmg+Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgot
Ci0jaWYgSEFWRShTVFJJTkdTX0gpCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0KLXVz
aW5nIG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUNPTVBJTEVfQVNTRVJUKHNpemVv
ZihVU3RyaW5nKSA9PSBzaXplb2Yodm9pZCopLCBVU3RyaW5nX3Nob3VsZF9zdGF5X3NtYWxsKTsK
LQotLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEuCi1VU3RyaW5nOjpVU3Ry
aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBtX2lt
cGwoY2hhcmFjdGVycyA/IFN0cmluZ0ltcGw6OmNyZWF0ZShjaGFyYWN0ZXJzLCBsZW5ndGgpIDog
MCkKLXsKLX0KLQotLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20g
YSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotVVN0cmluZzo6VVN0cmluZyhjb25zdCBVQ2hhciog
Y2hhcmFjdGVycykKLXsKLSAgICBpZiAoIWNoYXJhY3RlcnMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGludCBsZW5ndGggPSAwOwotICAgIHdoaWxlIChjaGFyYWN0ZXJzW2xlbmd0aF0gIT0gVUNo
YXIoMCkpCi0gICAgICAgICsrbGVuZ3RoOwotCi0gICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3Jl
YXRlKGNoYXJhY3RlcnMsIGxlbmd0aCk7Ci19Ci0KLS8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRo
IGxhdGluMSBkYXRhLgotVVN0cmluZzo6VVN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKQotICAgIDogbV9pbXBsKGNoYXJhY3RlcnMgPyBTdHJpbmdJbXBsOjpj
cmVhdGUoY2hhcmFjdGVycywgbGVuZ3RoKSA6IDApCi17Ci19Ci0KLVVTdHJpbmc6OlVTdHJpbmco
Y29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogbV9pbXBsKGNo
YXJhY3RlcnMgPyBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpIDogMCkKLXsKLX0KLQotLy8gQ29uc3RydWN0IGEgc3Ry
aW5nIHdpdGggbGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotVVN0
cmluZzo6VVN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycykKLSAgICA6IG1faW1wbChjaGFy
YWN0ZXJzID8gU3RyaW5nSW1wbDo6Y3JlYXRlKGNoYXJhY3RlcnMpIDogMCkKLXsKLX0KLQotVVN0
cmluZzo6VVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQotICAgIDogbV9pbXBsKGNoYXJh
Y3RlcnMgPyBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGNoYXJhY3RlcnMpKSA6IDApCi17Ci19Ci0KLVVTdHJpbmcgVVN0cmluZzo6bnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KGRvdWJsZSBkKQotewotICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZl
cjsKLSAgICByZXR1cm4gVVN0cmluZyhudW1iZXJUb1N0cmluZyhkLCBidWZmZXIpKTsKLX0KLQot
VVN0cmluZyBVU3RyaW5nOjpzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogV2UgdXNlZCB0byBjaGVjayBh
Z2FpbnN0IGEgbGltaXQgb2YgSGVhcDo6bWluRXh0cmFDb3N0IC8gc2l6ZW9mKFVDaGFyKS4KLQot
ICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IHRoaXMtPmxlbmd0aCgpOwotICAgIG9mZnNldCA9
IG1pbihvZmZzZXQsIHN0cmluZ0xlbmd0aCk7Ci0gICAgbGVuZ3RoID0gbWluKGxlbmd0aCwgc3Ry
aW5nTGVuZ3RoIC0gb2Zmc2V0KTsKLQotICAgIGlmICghb2Zmc2V0ICYmIGxlbmd0aCA9PSBzdHJp
bmdMZW5ndGgpCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICByZXR1cm4gVVN0cmluZyhTdHJp
bmdJbXBsOjpjcmVhdGUobV9pbXBsLCBvZmZzZXQsIGxlbmd0aCkpOwotfQotCi1ib29sIG9wZXJh
dG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IGNoYXIgKnMyKQotewotICAgIGlmIChzMS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAhczI7Ci0KLSAgICByZXR1cm4gZXF1YWwoczEuaW1w
bCgpLCBzMik7Ci19Ci0KLS8vIFRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCBhbGwgc2ltcGxlIGNo
ZWNrcyBoYXZlIGJlZW4gcGVyZm9ybWVkIGJ5Ci0vLyB0aGUgaW5saW5lZCBvcGVyYXRvcj09KCkg
aW4gdGhlIGhlYWRlciBmaWxlLgotYm9vbCBlcXVhbFNsb3dDYXNlKGNvbnN0IFVTdHJpbmcmIHMx
LCBjb25zdCBVU3RyaW5nJiBzMikKLXsKLSAgICBTdHJpbmdJbXBsKiByZXAxID0gczEuaW1wbCgp
OwotICAgIFN0cmluZ0ltcGwqIHJlcDIgPSBzMi5pbXBsKCk7Ci0gICAgdW5zaWduZWQgc2l6ZTEg
PSByZXAxLT5sZW5ndGgoKTsKLQotICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyAKLSAgICAv
LyAgIChhKSB0aGF0IHRoZSBzdHJpbmdzIGFyZSB0aGUgc2FtZSBsZW5ndGggYW5kCi0gICAgLy8g
ICAoYikgdGhhdCB0aGV5IGFyZSBncmVhdGVyIHRoYW4gemVybyBsZW5ndGguCi0gICAgYm9vbCBz
MUlzOEJpdCA9IHJlcDEtPmlzOEJpdCgpOwotICAgIGJvb2wgczJJczhCaXQgPSByZXAyLT5pczhC
aXQoKTsKLSAgICAKLSAgICBpZiAoczFJczhCaXQpIHsKLSAgICAgICAgY29uc3QgTENoYXIqIGQx
ID0gcmVwMS0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAgaWYgKHMySXM4Qml0KSB7Ci0gICAgICAg
ICAgICBjb25zdCBMQ2hhciogZDIgPSByZXAyLT5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoZDEgPT0gZDIpIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGF0YSBw
b2ludGVycyBhcmUgdGhlIHNhbWUuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIC8vIERvIHF1aWNrIGNoZWNrcyBmb3Igc2l6ZXMgMSBhbmQg
Mi4KLSAgICAgICAgICAgIHN3aXRjaCAoc2l6ZTEpIHsKLSAgICAgICAgICAgIGNhc2UgMToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZDFbMF0gPT0gZDJbMF07Ci0gICAgICAgICAgICBjYXNlIDI6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChkMVswXSA9PSBkMlswXSkgJiAoZDFbMV0gPT0gZDJb
MV0pOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gKCFtZW1j
bXAoZDEsIGQyLCBzaXplMSAqIHNpemVvZihMQ2hhcikpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3QgVUNoYXIqIGQyID0gcmVwMi0+Y2hhcmFjdGVy
czE2KCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTE7
IGkrKykgewotICAgICAgICAgICAgaWYgKGQxW2ldICE9IGQyW2ldKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKHMySXM4Qml0KSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBkMSA9IHJlcDEt
PmNoYXJhY3RlcnMxNigpOwotICAgICAgICBjb25zdCBMQ2hhciogZDIgPSByZXAyLT5jaGFyYWN0
ZXJzOCgpOwotICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemUx
OyBpKyspIHsKLSAgICAgICAgICAgIGlmIChkMVtpXSAhPSBkMltpXSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IAotICAgIH0KLSAgICAKLSAgICBjb25zdCBVQ2hhciogZDEgPSByZXAxLT5jaGFyYWN0ZXJzMTYo
KTsKLSAgICBjb25zdCBVQ2hhciogZDIgPSByZXAyLT5jaGFyYWN0ZXJzMTYoKTsKLSAgICAKLSAg
ICBpZiAoZDEgPT0gZDIpIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZGF0YSBwb2ludGVycyBhcmUg
dGhlIHNhbWUuCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIC8vIERvIHF1aWNrIGNo
ZWNrcyBmb3Igc2l6ZXMgMSBhbmQgMi4KLSAgICBzd2l0Y2ggKHNpemUxKSB7Ci0gICAgY2FzZSAx
OgotICAgICAgICByZXR1cm4gZDFbMF0gPT0gZDJbMF07Ci0gICAgY2FzZSAyOgotICAgICAgICBy
ZXR1cm4gKGQxWzBdID09IGQyWzBdKSAmIChkMVsxXSA9PSBkMlsxXSk7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuICghbWVtY21wKGQxLCBkMiwgc2l6ZTEgKiBzaXplb2YoVUNoYXIpKSk7
Ci0gICAgfQotfQotCi1ib29sIG9wZXJhdG9yPChjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0
cmluZyYgczIpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgbDEgPSBzMS5sZW5ndGgoKTsKLSAgICBj
b25zdCB1bnNpZ25lZCBsMiA9IHMyLmxlbmd0aCgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGxtaW4g
PSBsMSA8IGwyID8gbDEgOiBsMjsKLSAgICBpZiAoczEuaXM4Qml0KCkgJiYgczIuaXM4Qml0KCkp
IHsKLSAgICAgICAgY29uc3QgTENoYXIqIGMxID0gczEuY2hhcmFjdGVyczgoKTsKLSAgICAgICAg
Y29uc3QgTENoYXIqIGMyID0gczIuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gMDsKLSAgICAgICAgd2hpbGUgKGxlbmd0aCA8IGxtaW4gJiYgKmMxID09ICpjMikgewot
ICAgICAgICAgICAgYzErKzsKLSAgICAgICAgICAgIGMyKys7Ci0gICAgICAgICAgICBsZW5ndGgr
KzsKLSAgICAgICAgfQotICAgICAgICBpZiAobGVuZ3RoIDwgbG1pbikKLSAgICAgICAgICAgIHJl
dHVybiAoYzFbMF0gPCBjMlswXSk7Ci0KLSAgICAgICAgcmV0dXJuIChsMSA8IGwyKTsgICAgICAg
IAotICAgIH0KLSAgICBjb25zdCBVQ2hhciogYzEgPSBzMS5jaGFyYWN0ZXJzKCk7Ci0gICAgY29u
c3QgVUNoYXIqIGMyID0gczIuY2hhcmFjdGVycygpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7
Ci0gICAgd2hpbGUgKGxlbmd0aCA8IGxtaW4gJiYgKmMxID09ICpjMikgewotICAgICAgICBjMSsr
OwotICAgICAgICBjMisrOwotICAgICAgICBsZW5ndGgrKzsKLSAgICB9Ci0gICAgaWYgKGxlbmd0
aCA8IGxtaW4pCi0gICAgICAgIHJldHVybiAoYzFbMF0gPCBjMlswXSk7Ci0KLSAgICByZXR1cm4g
KGwxIDwgbDIpOwotfQotCi1ib29sIG9wZXJhdG9yPihjb25zdCBVU3RyaW5nJiBzMSwgY29uc3Qg
VVN0cmluZyYgczIpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgbDEgPSBzMS5sZW5ndGgoKTsKLSAg
ICBjb25zdCB1bnNpZ25lZCBsMiA9IHMyLmxlbmd0aCgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGxt
aW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKLSAgICBjb25zdCBVQ2hhciogYzEgPSBzMS5jaGFyYWN0
ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIGMyID0gczIuY2hhcmFjdGVycygpOwotICAgIHVuc2ln
bmVkIGwgPSAwOwotICAgIHdoaWxlIChsIDwgbG1pbiAmJiAqYzEgPT0gKmMyKSB7Ci0gICAgICAg
IGMxKys7Ci0gICAgICAgIGMyKys7Ci0gICAgICAgIGwrKzsKLSAgICB9Ci0gICAgaWYgKGwgPCBs
bWluKQotICAgICAgICByZXR1cm4gKGMxWzBdID4gYzJbMF0pOwotCi0gICAgcmV0dXJuIChsMSA+
IGwyKTsKLX0KLQotQ1N0cmluZyBVU3RyaW5nOjphc2NpaSgpIGNvbnN0Ci17Ci0gICAgLy8gQmFz
aWMgTGF0aW4xIChJU08pIGVuY29kaW5nIC0gVW5pY29kZSBjaGFyYWN0ZXJzIDAuLjI1NSBhcmUK
LSAgICAvLyBwcmVzZXJ2ZWQsIGNoYXJhY3RlcnMgb3V0c2lkZSBvZiB0aGlzIHJhbmdlIGFyZSBj
b252ZXJ0ZWQgdG8gJz8nLgotCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7
Ci0KLSAgICBpZiAodGhpcy0+aXM4Qml0KCkpIHsKLSAgICAgICAgY29uc3QgTENoYXIqIGNoYXJh
Y3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAKLSAgICAgICAgY2hhciogY2hh
cmFjdGVyQnVmZmVyOwotICAgICAgICBDU3RyaW5nIHJlc3VsdCA9IENTdHJpbmc6Om5ld1VuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBjaGFyYWN0ZXJCdWZmZXIpOwotICAgICAgICAKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBMQ2hhciBj
aCA9IGNoYXJhY3RlcnNbaV07Ci0gICAgICAgICAgICBjaGFyYWN0ZXJCdWZmZXJbaV0gPSBjaCAm
JiAoY2ggPCAweDIwIHx8IGNoID4gMHg3ZikgPyAnPycgOiBjaDsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgIAotICAgIH0KLQotICAgIGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVyczE2KCk7Ci0KLSAgICBjaGFyKiBjaGFy
YWN0ZXJCdWZmZXI7Ci0gICAgQ1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxp
emVkKGxlbmd0aCwgY2hhcmFjdGVyQnVmZmVyKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBVQ2hhciBjaCA9IGNoYXJhY3RlcnNbaV07Ci0g
ICAgICAgIGNoYXJhY3RlckJ1ZmZlcltpXSA9IGNoICYmIChjaCA8IDB4MjAgfHwgY2ggPj0gMHg3
ZikgPyAnPycgOiBjaDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1DU3RyaW5n
IFVTdHJpbmc6OmxhdGluMSgpIGNvbnN0Ci17Ci0gICAgLy8gQmFzaWMgTGF0aW4xIChJU08pIGVu
Y29kaW5nIC0gVW5pY29kZSBjaGFyYWN0ZXJzIDAuLjI1NSBhcmUKLSAgICAvLyBwcmVzZXJ2ZWQs
IGNoYXJhY3RlcnMgb3V0c2lkZSBvZiB0aGlzIHJhbmdlIGFyZSBjb252ZXJ0ZWQgdG8gJz8nLgot
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzKCk7Ci0KLSAgICBjaGFyKiBjaGFyYWN0ZXJC
dWZmZXI7Ci0gICAgQ1N0cmluZyByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxl
bmd0aCwgY2hhcmFjdGVyQnVmZmVyKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBVQ2hhciBjaCA9IGNoYXJhY3RlcnNbaV07Ci0gICAgICAg
IGNoYXJhY3RlckJ1ZmZlcltpXSA9IGNoID4gMHhmZiA/ICc/JyA6IGNoOwotICAgIH0KLQotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vIEhlbHBlciB0byB3cml0ZSBhIHRocmVlLWJ5dGUgVVRG
LTggY29kZSBwb2ludCB0byB0aGUgYnVmZmVyLCBjYWxsZXIgbXVzdCBjaGVjayByb29tIGlzIGF2
YWlsYWJsZS4KLXN0YXRpYyBpbmxpbmUgdm9pZCBwdXRVVEY4VHJpcGxlKGNoYXIqJiBidWZmZXIs
IFVDaGFyIGNoKQotewotICAgIEFTU0VSVChjaCA+PSAweDA4MDApOwotICAgICpidWZmZXIrKyA9
IHN0YXRpY19jYXN0PGNoYXI+KCgoY2ggPj4gMTIpICYgMHgwRikgfCAweEUwKTsKLSAgICAqYnVm
ZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPigoKGNoID4+IDYpICYgMHgzRikgfCAweDgwKTsKLSAg
ICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPigoY2ggJiAweDNGKSB8IDB4ODApOwotfQot
Ci1DU3RyaW5nIFVTdHJpbmc6OnV0ZjgoYm9vbCBzdHJpY3QpIGNvbnN0Ci17Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0KLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIENTdHJpbmcoIiIsIDApOwotCi0gICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVu
b3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycwotICAgIC8vIChhbiBpbmRpdmlkdWFsIFVU
Ri0xNiBVQ2hhciBjYW4gb25seSBleHBhbmQgdG8gMyBVVEYtOCBieXRlcykuCi0gICAgLy8gT3B0
aW1pemF0aW9uIGlkZWFzLCBpZiB3ZSBmaW5kIHRoaXMgZnVuY3Rpb24gaXMgaG90OgotICAgIC8v
ICAqIFdlIGNvdWxkIHNwZWN1bGF0aXZlbHkgY3JlYXRlIGEgQ1N0cmluZ0J1ZmZlciB0byBjb250
YWluICdsZW5ndGgnIAotICAgIC8vICAgIGNoYXJhY3RlcnMsIGFuZCByZXNpemUgaWYgbmVjZXNz
YXJ5IChpLmUuIGlmIHRoZSBidWZmZXIgY29udGFpbnMKLSAgICAvLyAgICBub24tYXNjaWkgY2hh
cmFjdGVycykuIChBbHRlcm5hdGl2ZWx5LCBzY2FuIHRoZSBidWZmZXIgZmlyc3QgZm9yCi0gICAg
Ly8gICAgYXNjaWkgY2hhcmFjdGVycywgc28gd2Uga25vdyB0aGlzIHdpbGwgYmUgc3VmZmljaWVu
dCkuCi0gICAgLy8gICogV2UgY291bGQgYWxsb2NhdGUgYSBDU3RyaW5nQnVmZmVyIHdpdGggYW4g
YXBwcm9wcmlhdGUgc2l6ZSB0bwotICAgIC8vICAgIGhhdmUgYSBnb29kIGNoYW5jZSBvZiBiZWlu
ZyBhYmxlIHRvIHdyaXRlIHRoZSBzdHJpbmcgaW50byB0aGUKLSAgICAvLyAgICBidWZmZXIgd2l0
aG91dCByZWFsbG9jaW5nIChzYXksIDEuNSB4IGxlbmd0aCkuCi0gICAgaWYgKGxlbmd0aCA+IG51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyAzKQotICAgICAgICByZXR1cm4gQ1N0cmlu
ZygpOwotCi0gICAgVmVjdG9yPGNoYXIsIDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsK
LSAgICBjaGFyKiBidWZmZXIgPSBidWZmZXJWZWN0b3IuZGF0YSgpOwotCi0gICAgaWYgKGlzOEJp
dCgpKSB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVy
czgoKTsKLQotICAgICAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnRMYXRpbjFU
b1VURjgoJmNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZlciAr
IGJ1ZmZlclZlY3Rvci5zaXplKCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0ICE9IHRhcmdldEV4aGF1c3RlZCk7IC8vIChsZW5ndGggKiAzKSBzaG91bGQgYmUgc3VmZmlj
aWVudCBmb3IgYW55IGNvbnZlcnNpb24KLSAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMxNigpOwotCi0gICAgICAgIENvbnZlcnNp
b25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVURjE2VG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFyYWN0
ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpLCBzdHJp
Y3QpOwotICAgICAgICBBU1NFUlQocmVzdWx0ICE9IHRhcmdldEV4aGF1c3RlZCk7IC8vIChsZW5n
dGggKiAzKSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgYW55IGNvbnZlcnNpb24KLQotICAgICAg
ICAvLyBPbmx5IHByb2R1Y2VkIGZyb20gc3RyaWN0IGNvbnZlcnNpb24uCi0gICAgICAgIGlmIChy
ZXN1bHQgPT0gc291cmNlSWxsZWdhbCkKLSAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0K
LSAgICAgICAgLy8gQ2hlY2sgZm9yIGFuIHVuY29udmVydGVkIGhpZ2ggc3Vycm9nYXRlLgotICAg
ICAgICBpZiAocmVzdWx0ID09IHNvdXJjZUV4aGF1c3RlZCkgewotICAgICAgICAgICAgaWYgKHN0
cmljdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgICAgICAgICAgLy8g
VGhpcyBzaG91bGQgYmUgb25lIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlLiBUcmVhdCBpdCB0aGUg
c2FtZQotICAgICAgICAgICAgLy8gd2FzIGFzIGFuIHVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlIHdv
dWxkIGhhdmUgYmVlbiBoYW5kbGVkIGluCi0gICAgICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIGEg
c3RyaW5nIHdpdGggbm9uLXN0cmljdCBjb252ZXJzaW9uIC0gd2hpY2ggaXMKLSAgICAgICAgICAg
IC8vIHRvIHNheSwgc2ltcGx5IGVuY29kZSBpdCB0byBVVEYtOC4KLSAgICAgICAgICAgIEFTU0VS
VCgoY2hhcmFjdGVycyArIDEpID09ICh0aGlzLT5jaGFyYWN0ZXJzKCkgKyBsZW5ndGgpKTsKLSAg
ICAgICAgICAgIEFTU0VSVCgoKmNoYXJhY3RlcnMgPj0gMHhEODAwKSAmJiAoKmNoYXJhY3RlcnMg
PD0gMHhEQkZGKSk7Ci0gICAgICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgcm9vbSBsZWZ0LCBz
aW5jZSBvbmUgVUNoYXIgaGFzbid0IGJlZW4gY29udmVydGVkLgotICAgICAgICAgICAgQVNTRVJU
KChidWZmZXIgKyAzKSA8PSAoYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSkpOwotICAgICAg
ICAgICAgcHV0VVRGOFRyaXBsZShidWZmZXIsICpjaGFyYWN0ZXJzKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlclZlY3Rvci5kYXRhKCksIGJ1ZmZlciAtIGJ1
ZmZlclZlY3Rvci5kYXRhKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDY4NThmOTMyZDhmMjA0ZDYwN2IxODE3NTY3YmIwYjU5ODdhZjU1NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VU3RyaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFVTdHJpbmdfaAotI2RlZmlu
ZSBVU3RyaW5nX2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
ewotCi1jbGFzcyBVU3RyaW5nIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3QgYSBudWxsIHN0
cmluZywgZGlzdGluZ3Vpc2hhYmxlIGZyb20gYW4gZW1wdHkgc3RyaW5nLgotICAgIFVTdHJpbmco
KSB7IH0KLQotICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0
YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
VVN0cmluZyhjb25zdCBVQ2hhciopOwotCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGgg
bGF0aW4xIGRhdGEuCi0gICAgVVN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcg
d2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAgVVN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycyk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0
cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKLQotICAgIC8vIENvbnN0cnVjdCBhIHN0cmlu
ZyByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTdHJpbmdJbXBsLgotICAgIFVTdHJpbmcoU3RyaW5n
SW1wbCogaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAgVVN0cmluZyhQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotICAgIFVTdHJpbmcoUmVmUHRyPFN0
cmluZ0ltcGw+IGltcGwpIDogbV9pbXBsKGltcGwpIHsgfQotCi0gICAgLy8gSW5saW5lIHRoZSBk
ZXN0cnVjdG9yLgotICAgIEFMV0FZU19JTkxJTkUgflVTdHJpbmcoKSB7IH0KLQotICAgIHZvaWQg
c3dhcChVU3RyaW5nJiBvKSB7IG1faW1wbC5zd2FwKG8ubV9pbXBsKTsgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBzdGF0aWMg
VVN0cmluZyBhZG9wdChWZWN0b3I8Q2hhclR5cGUsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yKSB7
IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdCh2ZWN0b3IpOyB9Ci0KLSAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmxlbmd0aCgpOyB9Ci0KLSAgICBTdHJpbmdJbXBsKiBp
bXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwpCi0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgfQotCi0gICAgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2ltcGwp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVy
cygpOwotICAgIH0KLQotICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBB
U1NFUlQobV9pbXBsLT5pczhCaXQoKSk7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3Rl
cnM4KCk7Ci0gICAgfQotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0Ci0g
ICAgewotICAgICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICBBU1NFUlQoIW1faW1wbC0+aXM4Qml0KCkpOwotICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFy
YWN0ZXJzMTYoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0g
ICAgaW5saW5lIGNvbnN0IENoYXJUeXBlKiBnZXRDaGFyYWN0ZXJzKCkgY29uc3Q7Ci0KLSAgICBi
b29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aXM4Qml0KCk7IH0KLQotICAgIEpT
X0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKLSAgICBDU3RyaW5nIGxhdGlu
MSgpIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdXRmOChib29sIHN0cmlj
dCA9IGZhbHNlKSBjb25zdDsKLQotICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgp
IGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCB8fCBpbmRleCA+PSBtX2ltcGwtPmxl
bmd0aCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChpczhCaXQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnM4KClbaW5kZXhdOwotICAgICAgICBy
ZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKVtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGlj
IFVTdHJpbmcgbnVtYmVyKGludCBpKSB7IHJldHVybiBXVEY6Om51bWJlclRvU3RyaW5nSW1wbChp
KTsgfQotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCB1KSB7IHJldHVybiBXVEY6
Om51bWJlclRvU3RyaW5nSW1wbCh1KTsgfQotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25n
IGkpIHsgcmV0dXJuIFdURjo6bnVtYmVyVG9TdHJpbmdJbXBsKGkpOyB9Ci0gICAgc3RhdGljIFVT
dHJpbmcgbnVtYmVyKGxvbmcgbG9uZyBpKSB7IHJldHVybiBXVEY6Om51bWJlclRvU3RyaW5nSW1w
bChpKTsgfQotCi0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRv
dWJsZSk7Ci0KLSAgICAvLyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28g
d2l0aCBtYXRjaCBmdW5jdGlvbiAmIGxhdGluMSBmb3Jtcy4KLSAgICBzaXplX3QgZmluZChVQ2hh
ciBjLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+ZmluZChjLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0gICAgc2l6ZV90IGZpbmQo
Y29uc3QgVVN0cmluZyYgc3RyKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPmZpbmQoc3RyLmltcGwoKSkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5kKGNvbnN0
IFVTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+ZmluZChzdHIuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0g
ICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIHN0ciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25z
dAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoc3RyLCBzdGFydCkgOiBu
b3RGb3VuZDsgfQotCi0gICAgLy8gRmluZCB0aGUgbGFzdCBpbnN0YW5jZSBvZiBhIHNpbmdsZSBj
aGFyYWN0ZXIgb3Igc3RyaW5nLgotICAgIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciBjLCB1bnNp
Z25lZCBzdGFydCA9IFVJTlRfTUFYKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPnJldmVyc2VGaW5kKGMsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJl
dmVyc2VGaW5kKGNvbnN0IFVTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkg
Y29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIu
aW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0
cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJ
TlRfTUFYKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBs
OwotfTsKLQotdGVtcGxhdGU8PgotaW5saW5lIGNvbnN0IExDaGFyKiBVU3RyaW5nOjpnZXRDaGFy
YWN0ZXJzPExDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnM4KCk7IH0KLQotdGVtcGxh
dGU8PgotaW5saW5lIGNvbnN0IFVDaGFyKiBVU3RyaW5nOjpnZXRDaGFyYWN0ZXJzPFVDaGFyPigp
IGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnMoKTsgfQotCi1ORVZFUl9JTkxJTkUgYm9vbCBlcXVh
bFNsb3dDYXNlKGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7Ci0KLUFMV0FZ
U19JTkxJTkUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5n
JiBzMikKLXsKLSAgICBTdHJpbmdJbXBsKiByZXAxID0gczEuaW1wbCgpOwotICAgIFN0cmluZ0lt
cGwqIHJlcDIgPSBzMi5pbXBsKCk7Ci0KLSAgICBpZiAocmVwMSA9PSByZXAyKSAvLyBJZiB0aGV5
J3JlIHRoZSBzYW1lIHJlcCwgdGhleSdyZSBlcXVhbC4KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICB1bnNpZ25lZCBzaXplMSA9IDA7Ci0gICAgdW5zaWduZWQgc2l6ZTIgPSAwOwotCi0gICAg
aWYgKHJlcDEpCi0gICAgICAgIHNpemUxID0gcmVwMS0+bGVuZ3RoKCk7Ci0KLSAgICBpZiAocmVw
MikKLSAgICAgICAgc2l6ZTIgPSByZXAyLT5sZW5ndGgoKTsKLQotICAgIGlmIChzaXplMSAhPSBz
aXplMikgLy8gSWYgdGhlIGxlbmd0aHMgYXJlIG5vdCB0aGUgc2FtZSwgd2UncmUgZG9uZS4KLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFzaXplMSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBpZiAoc2l6ZTEgPT0gMSkKLSAgICAgICAgcmV0dXJuICgqcmVwMSlbMHVdID09
ICgqcmVwMilbMHVdOwotCi0gICAgcmV0dXJuIGVxdWFsU2xvd0Nhc2UoczEsIHMyKTsKLX0KLQot
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5n
JiBzMikKLXsKLSAgICByZXR1cm4gIUpTQzo6b3BlcmF0b3I9PShzMSwgczIpOwotfQotCi1KU19F
WFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPChjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0
cmluZyYgczIpOwotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj4oY29uc3QgVVN0cmlu
ZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKTsKLQotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBjaGFyKiBzMik7Ci0KLWlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IGNoYXIqIHMyKQotewotICAgIHJl
dHVybiAhSlNDOjpvcGVyYXRvcj09KHMxLCBzMik7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgY2hhciAqczEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIHJldHVybiBvcGVy
YXRvcj09KHMyLCBzMSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciAq
czEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIHJldHVybiAhSlNDOjpvcGVyYXRvcj09KHMx
LCBzMik7Ci19Ci0KLWlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBVU3RyaW5nJiBz
MSwgY29uc3QgVVN0cmluZyYgczIpCi17Ci0gICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoczEu
aW1wbCgpLCBzMi5pbXBsKCkpOwotfQotCi1zdHJ1Y3QgVVN0cmluZ0hhc2ggewotICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKFN0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4ga2V5LT5oYXNoKCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJ
bXBsKiBiKQotICAgIHsKLSAgICAgICAgaWYgKGEgPT0gYikKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBpZiAoIWEgfHwgIWIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgdW5zaWduZWQgYUxlbmd0aCA9IGEtPmxlbmd0aCgpOwotICAgICAgICB1bnNpZ25l
ZCBiTGVuZ3RoID0gYi0+bGVuZ3RoKCk7Ci0gICAgICAgIGlmIChhTGVuZ3RoICE9IGJMZW5ndGgp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgLy8gRklYTUU6IHBlcmhhcHMg
d2Ugc2hvdWxkIGhhdmUgYSBtb3JlIGFic3RyYWN0IG1hY3JvIHRoYXQgaW5kaWNhdGVzIHdoZW4K
LSAgICAgICAgLy8gZ29pbmcgNCBieXRlcyBhdCBhIHRpbWUgaXMgdW5zYWZlCi0jaWYgQ1BVKEFS
TSkgfHwgQ1BVKFNINCkgfHwgQ1BVKE1JUFMpIHx8IENQVShTUEFSQykKLSAgICAgICAgY29uc3Qg
VUNoYXIqIGFDaGFycyA9IGEtPmNoYXJhY3RlcnMoKTsKLSAgICAgICAgY29uc3QgVUNoYXIqIGJD
aGFycyA9IGItPmNoYXJhY3RlcnMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAh
PSBhTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICgqYUNoYXJzKysgIT0gKmJDaGFycysr
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbHNlCi0gICAgICAgIC8qIERvIGl0IDQtYnl0ZXMtYXQtYS10aW1lIG9uIGFy
Y2hpdGVjdHVyZXMgd2hlcmUgaXQncyBzYWZlICovCi0gICAgICAgIGNvbnN0IHVpbnQzMl90KiBh
Q2hhcnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYS0+Y2hhcmFjdGVycygp
KTsKLSAgICAgICAgY29uc3QgdWludDMyX3QqIGJDaGFycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihiLT5jaGFyYWN0ZXJzKCkpOwotCi0gICAgICAgIHVuc2lnbmVkIGhhbGZM
ZW5ndGggPSBhTGVuZ3RoID4+IDE7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0g
aGFsZkxlbmd0aDsgKytpKQotICAgICAgICAgICAgaWYgKCphQ2hhcnMrKyAhPSAqYkNoYXJzKysp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChhTGVuZ3RoICYg
MSAmJiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGFDaGFycykgIT0gKnJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihiQ2hhcnMpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgfQotCi0gICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVmUHRyPFN0cmluZ0ltcGw+JiBrZXkpIHsgcmV0dXJu
IGtleS0+aGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVmUHRyPFN0cmlu
Z0ltcGw+JiBhLCBjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGIpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXF1YWwoYS5nZXQoKSwgYi5nZXQoKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVVN0cmluZyYga2V5KSB7IHJldHVybiBrZXkuaW1wbCgpLT5oYXNoKCk7
IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nJiBhLCBjb25zdCBVU3RyaW5n
JiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSBmYWxzZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsK
LQotLy8gVVN0cmluZ0hhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgVVN0cmluZwotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8SlNDOjpVU3RyaW5nPiB7Ci0gICAgdHlwZWRlZiBKU0M6OlVTdHJpbmdIYXNoIEhh
c2g7Ci19OwotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6VVN0cmluZz4g
OiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0j
ZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmlu
Z0J1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdCdWlsZGVy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxY2NmMzgyYTVmOTczZTYyNjU5ODI5
NGYxNTJhZTNjODliYmI2NDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBVU3RyaW5nQnVpbGRlcl9oCi0jZGVmaW5lIFVT
dHJpbmdCdWlsZGVyX2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFVTdHJpbmdCdWlsZGVyIDogcHVibGljIFN0cmluZ0J1
aWxkZXIgewotcHVibGljOgotICAgIHVzaW5nIFN0cmluZ0J1aWxkZXI6OmFwcGVuZDsKLSAgICB2
b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJiBzdHIpIHsgYXBwZW5kKFN0cmluZyhzdHIuaW1wbCgp
KSk7IH0KLQotICAgIFVTdHJpbmcgdG9VU3RyaW5nKCkgeyByZXR1cm4gdG9TdHJpbmcoKS5pbXBs
KCk7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gVVN0cmluZ0J1aWxk
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0Nv
bmNhdGVuYXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQ29uY2F0
ZW5hdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JkNGU2MGNhNGIzYTdhZTU0
ZmNjNzUyNWZmYWYyMDk0NmJlZTJkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQ29uY2F0
ZW5hdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgVVN0cmluZ0NvbmNhdGVuYXRl
X2gKLSNkZWZpbmUgVVN0cmluZ0NvbmNhdGVuYXRlX2gKLQotI2luY2x1ZGUgIlVTdHJpbmcuaCIK
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotdGVtcGxhdGU8PgotY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8SlNDOjpVU3RyaW5nPiB7
Ci1wdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXI8SlNDOjpVU3RyaW5nPihKU0M6OlVTdHJp
bmcmIHN0cmluZykKLSAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCi0gICAgICAgICwgbV9sZW5n
dGgoc3RyaW5nLmxlbmd0aCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgo
KSB7IHJldHVybiBtX2xlbmd0aDsgfQotCi0gICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiBtX3N0
cmluZy5pc051bGwoKSB8fCBtX3N0cmluZy5pczhCaXQoKTsgfQotCi0gICAgdm9pZCB3cml0ZVRv
KExDaGFyKiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0
ZXJzID0gbV9zdHJpbmcuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IGNoYXJh
Y3RlcnNbaV07Ci0gICAgfQotCi0gICAgdm9pZCB3cml0ZVRvKFVDaGFyKiBkZXN0aW5hdGlvbikK
LSAgICB7Ci0gICAgICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMgPSBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgZGVzdGlu
YXRpb25baV0gPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgKytpKQotICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uW2ldID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgfQotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBjb25zdCBKU0M6OlVTdHJpbmcmIG1fc3RyaW5nOwotICAgIHVuc2ln
bmVkIG1fbGVuZ3RoOwotfTsKLQotfTsgLy8gbmFtZXNwYWNlIFdURgotCi1uYW1lc3BhY2UgSlND
IHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUy
PgotVVN0cmluZyBtYWtlVVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBz
dHJpbmcyKQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9IFdURjo6
dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyKTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0g
ICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5n
VHlwZTM+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIs
IHN0cmluZzMpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBy
ZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5
cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5n
VHlwZTQ+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5
cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQpCi17
Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3Ry
aW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQpOwotICAgIGlmICghcmVzdWx0
SW1wbCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFt
ZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1
PgotVVN0cmluZyBtYWtlVVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBz
dHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJpbmc0LCBTdHJpbmdU
eXBlNSBzdHJpbmc1KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVzdWx0SW1wbCA9
IFdURjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBzdHJpbmczLCBzdHJpbmc0LCBz
dHJpbmc1KTsKLSAgICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgcmV0
dXJuIHJlc3VsdEltcGw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBl
bmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUgU3RyaW5nVHlwZTMsIHR5cGVuYW1lIFN0cmluZ1R5
cGU0LCB0eXBlbmFtZSBTdHJpbmdUeXBlNSwgdHlwZW5hbWUgU3RyaW5nVHlwZTY+Ci1VU3RyaW5n
IG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0
cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmlu
ZzUsIFN0cmluZ1R5cGU2IHN0cmluZzYpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0cmluZzMs
IHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAgICAg
ICAgQ1JBU0goKTsKLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBl
MywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBT
dHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTc+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0
cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmlu
ZzMsIFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2
IHN0cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0
cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYsIHN0cmluZzcpOwotICAgIGlmICghcmVz
dWx0SW1wbCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBl
bmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5
cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5nVHlwZTcsIHR5cGVuYW1l
IFN0cmluZ1R5cGU4PgotVVN0cmluZyBtYWtlVVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBT
dHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbmczLCBTdHJpbmdUeXBlNCBzdHJp
bmc0LCBTdHJpbmdUeXBlNSBzdHJpbmc1LCBTdHJpbmdUeXBlNiBzdHJpbmc2LCBTdHJpbmdUeXBl
NyBzdHJpbmc3LCBTdHJpbmdUeXBlOCBzdHJpbmc4KQotewotICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVzdWx0SW1wbCA9IFdURjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcxLCBzdHJpbmcyLCBz
dHJpbmczLCBzdHJpbmc0LCBzdHJpbmc1LCBzdHJpbmc2LCBzdHJpbmc3LCBzdHJpbmc4KTsKLSAg
ICBpZiAoIXJlc3VsdEltcGwpCi0gICAgICAgIENSQVNIKCk7Ci0gICAgcmV0dXJuIHJlc3VsdElt
cGw7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0UmVnRXhwLmNwcAppbmRleCA2MWMyMWMzMWIyYTZkMzkzOGU4ODZkMzNhNmU0NTlmMTUyMThi
NDQxLi5iMGIxMjZmMWM4NzFlZGIwYjIwNWRhNGI2NTY3ZDAwNTA1ZjhmZTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCkBAIC0yNCwxMSArMjQsMTEgQEAKICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgogI2lu
Y2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4K
ICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKICNpZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTYzLDggKzYzLDgg
QEAgc3RydWN0IENvbW1hbmRMaW5lIHsKIAogICAgIGJvb2wgaW50ZXJhY3RpdmU7CiAgICAgYm9v
bCB2ZXJib3NlOwotICAgIFZlY3RvcjxVU3RyaW5nPiBhcmd1bWVudHM7Ci0gICAgVmVjdG9yPFVT
dHJpbmc+IGZpbGVzOworICAgIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50czsKKyAgICBWZWN0b3I8
U3RyaW5nPiBmaWxlczsKIH07CiAKIGNsYXNzIFN0b3BXYXRjaCB7CkBAIC0xMDAsNyArMTAwLDcg
QEAgc3RydWN0IFJlZ0V4cFRlc3QgewogICAgIHsKICAgICB9CiAKLSAgICBVU3RyaW5nIHN1Ympl
Y3Q7CisgICAgU3RyaW5nIHN1YmplY3Q7CiAgICAgaW50IG9mZnNldDsKICAgICBpbnQgcmVzdWx0
OwogICAgIFZlY3RvcjxpbnQsIDMyPiBleHBlY3RWZWN0b3I7CkBAIC0xMDgsMTIgKzEwOCwxMiBA
QCBzdHJ1Y3QgUmVnRXhwVGVzdCB7CiAKIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0ds
b2JhbE9iamVjdCB7CiBwcml2YXRlOgotICAgIEdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cyk7CisgICAgR2xvYmFs
T2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBh
cmd1bWVudHMpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0dsb2JhbE9iamVjdCBCYXNlOwog
Ci0gICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRz
KQorICAgIHN0YXRpYyBHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRz
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdsb2Jh
bE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVj
dHVyZSwgYXJndW1lbnRzKTsKICAgICB9CkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEpOwogICAgICAgICBVTlVTRURfUEFSQU0oYXJndW1lbnRzKTsKQEAgLTEzOCw3ICsxMzgs
NyBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEdsb2JhbE9iamVjdCk7CiAKIGNvbnN0IENs
YXNzSW5mbyBHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgImdsb2JhbCIsICZKU0dsb2JhbE9iamVj
dDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Omdsb2JhbE9iamVjdFRhYmxlLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEdsb2JhbE9iamVjdCkgfTsKIAotR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9y
PFVTdHJpbmc+JiBhcmd1bWVudHMpCitHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJndW1lbnRzKQogICAgIDogSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKQogewogICAgIGZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGFyZ3VtZW50cyk7CkBAIC0y
MzksNyArMjM5LDcgQEAgc3RhdGljIGJvb2wgdGVzdE9uZVJlZ0V4cChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFJlZ0V4cCogcmVnZXhwLCBSZWdFeHBUZXN0KgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0YXRpYyBpbnQgc2NhblN0cmluZyhjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW5n
dGgsIFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjaGFyIHRlcm1DaGFyKQorc3RhdGljIGludCBz
Y2FuU3RyaW5nKGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmZlckxlbmd0aCwgU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgY2hhciB0ZXJtQ2hhcikKIHsKICAgICBib29sIGVzY2FwZSA9IGZhbHNlOwogICAg
IApAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBpbnQgc2NhblN0cmluZyhjaGFyKiBidWZmZXIs
IGludCBidWZmZXJMZW5ndGgsIFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjCiAKIHN0YXRpYyBS
ZWdFeHAqIHBhcnNlUmVnRXhwTGluZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNoYXIqIGxp
bmUsIGludCBsaW5lTGVuZ3RoKQogewotICAgIFVTdHJpbmdCdWlsZGVyIHBhdHRlcm47CisgICAg
U3RyaW5nQnVpbGRlciBwYXR0ZXJuOwogICAgIAogICAgIGlmIChsaW5lWzBdICE9ICcvJykKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0zMTksMTIgKzMxOSwxMiBAQCBzdGF0aWMgUmVnRXhwKiBwYXJz
ZVJlZ0V4cExpbmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjaGFyKiBsaW5lLCBpbnQgbGlu
ZUxlbgogCiAgICAgKytpOwogCi0gICAgcmV0dXJuIFJlZ0V4cDo6Y3JlYXRlKGdsb2JhbERhdGEs
IHBhdHRlcm4udG9VU3RyaW5nKCksIHJlZ0V4cEZsYWdzKGxpbmUgKyBpKSk7CisgICAgcmV0dXJu
IFJlZ0V4cDo6Y3JlYXRlKGdsb2JhbERhdGEsIHBhdHRlcm4udG9TdHJpbmcoKSwgcmVnRXhwRmxh
Z3MobGluZSArIGkpKTsKIH0KIAogc3RhdGljIFJlZ0V4cFRlc3QqIHBhcnNlVGVzdExpbmUoY2hh
ciogbGluZSwgaW50IGxpbmVMZW5ndGgpCiB7Ci0gICAgVVN0cmluZ0J1aWxkZXIgc3ViamVjdFN0
cmluZzsKKyAgICBTdHJpbmdCdWlsZGVyIHN1YmplY3RTdHJpbmc7CiAgICAgCiAgICAgaWYgKChs
aW5lWzBdICE9ICcgJykgfHwgKGxpbmVbMV0gIT0gJyInKSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0zNjMsNyArMzYzLDcgQEAgc3RhdGljIFJlZ0V4cFRlc3QqIHBhcnNlVGVzdExpbmUoY2hhciog
bGluZSwgaW50IGxpbmVMZW5ndGgpCiAgICAgCiAgICAgUmVnRXhwVGVzdCogcmVzdWx0ID0gbmV3
IFJlZ0V4cFRlc3QoKTsKICAgICAKLSAgICByZXN1bHQtPnN1YmplY3QgPSBzdWJqZWN0U3RyaW5n
LnRvVVN0cmluZygpOworICAgIHJlc3VsdC0+c3ViamVjdCA9IHN1YmplY3RTdHJpbmcudG9TdHJp
bmcoKTsKICAgICByZXN1bHQtPm9mZnNldCA9IG9mZnNldDsKICAgICByZXN1bHQtPnJlc3VsdCA9
IG1hdGNoUmVzdWx0OwogCkBAIC0zOTQsMTAgKzM5NCwxMCBAQCBzdGF0aWMgUmVnRXhwVGVzdCog
cGFyc2VUZXN0TGluZShjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0aCkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1zdGF0aWMgYm9vbCBydW5Gcm9tRmlsZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgZmlsZXMsIGJvb2wgdmVyYm9zZSkKK3N0YXRp
YyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVzLCBib29sIHZlcmJvc2UpCiB7Ci0gICAgVVN0cmluZyBzY3JpcHQ7
Ci0gICAgVVN0cmluZyBmaWxlTmFtZTsKKyAgICBTdHJpbmcgc2NyaXB0OworICAgIFN0cmluZyBm
aWxlTmFtZTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0QnVmZmVyOwogICAgIHVuc2lnbmVkIHRl
c3RzID0gMDsKICAgICB1bnNpZ25lZCBmYWlsdXJlcyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAppbmRleCBiYTEwMTcxYmZlOGViZjFiOTcw
ZGJmYjhlMWQyN2NkMDU1ZWRiNjE1Li41YzJhMjg3YzhlNTQwZWM3NTc1NzllOTBlNzRiM2Q0OGU0
M2Y1YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IllhcnJJbnRlcnByZXRlci5oIgogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIllh
cnIuaCIKICNpbmNsdWRlICJZYXJyQ2Fub25pY2FsaXplVUNTMi5oIgogI2luY2x1ZGUgPHd0Zi9C
dW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xOTM0LDcgKzE5MzQsNyBA
QCBQYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mIHBh
dHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdAogICAgIHJldHVybiBCeXRlQ29tcGlsZXIocGF0dGVy
bikuY29tcGlsZShhbGxvY2F0b3IpOwogfQogCi11bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQ
YXR0ZXJuKiBieXRlY29kZSwgY29uc3QgVVN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCogb3V0cHV0KQordW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiogYnl0
ZWNvZGUsIGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0
cHV0KQogewogICAgIGlmIChpbnB1dC5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIEludGVycHJl
dGVyPExDaGFyPihieXRlY29kZSwgb3V0cHV0LCBpbnB1dC5jaGFyYWN0ZXJzOCgpLCBpbnB1dC5s
ZW5ndGgoKSwgc3RhcnQpLmludGVycHJldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuaAppbmRleCA0ZWNkNjllY2E3MDNjZDZiODg0Y2E2MWE0NDI0OTE3
YzAzZjkxZGM2Li5mYjYwYmQ5NzlkNzZiMWM2MDQyMWYyMWE1MGI3OGM0OGE3NzI5MGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaApAQCAtMzc2LDcg
KzM3Niw3IEBAIHByaXZhdGU6CiB9OwogCiBKU19FWFBPUlRfUFJJVkFURSBQYXNzT3duUHRyPEJ5
dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9j
YXRvciopOwotSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0
dGVybiosIGNvbnN0IFVTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQqIG91
dHB1dCk7CitKU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0
ZXJuKiwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRw
dXQpOwogdW5zaWduZWQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IExDaGFyKiBp
bnB1dCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQqIG91dHB1dCk7
CiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgVUNoYXIqIGlucHV0
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCBlYjk4NjFmZWRkMTIxMDlk
NjViYThhMjQ4ZDEzYTc0MTJkNDFjMjA4Li5lZTZlMzk3NTM3M2M0NDZhM2Q1ZjQyZDllNjE4MTA1
ODdiZmMwOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMzks
NyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCiB0ZW1wbGF0ZTxZ
YXJySklUQ29tcGlsZU1vZGUgY29tcGlsZU1vZGU+CiBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7Ci0gICAgZnJpZW5kIHZvaWQgaml0Q29tcGlsZShKU0dsb2Jh
bERhdGEqLCBZYXJyQ29kZUJsb2NrJiBqaXRPYmplY3QsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4s
IHVuc2lnbmVkJiBudW1TdWJwYXR0ZXJucywgY29uc3QgY2hhciomIGVycm9yLCBib29sIGlnbm9y
ZUNhc2UsIGJvb2wgbXVsdGlsaW5lKTsKKyAgICBmcmllbmQgdm9pZCBqaXRDb21waWxlKEpTR2xv
YmFsRGF0YSosIFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJu
LCB1bnNpZ25lZCYgbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqJiBlcnJvciwgYm9vbCBpZ25v
cmVDYXNlLCBib29sIG11bHRpbGluZSk7CiAKICNpZiBDUFUoQVJNKQogICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIGlucHV0ID0gQVJNUmVnaXN0ZXJzOjpyMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuaAppbmRleCA3MTkyOGU3M2NlN2RkNDE1NmMyZTgzNTUxZDYzZDNmZWEwYTc3
MzhlLi5iYjcwMzNmZGVhYWUwOTk2ZTJmMTc0YjFiZTY4ZjVkM2ZhN2Q3ZWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiSlNH
bG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVk
ZSAiTWF0Y2hSZXN1bHQuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiWWFyci5o
IgogI2luY2x1ZGUgIllhcnJQYXR0ZXJuLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJQYXJzZXIuaAppbmRleCAxMTgyZDc5MDc4MWI3MDA4NTAyMDlmMzYzNTYwMjE0OWRkZWJhYmU2
Li40YmFiMWEwOTAzZDk1M2ExMmExMTE1MTU4MGM0Y2E4NWY1YzE5NmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBAIC0yNiw5ICsyNiw5IEBACiAjaWZuZGVmIFlh
cnJQYXJzZXJfaAogI2RlZmluZSBZYXJyUGFyc2VyX2gKIAotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0
cmluZy5oPgogI2luY2x1ZGUgIllhcnIuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1Vu
aWNvZGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKQEAgLTQ3LDcgKzQ3
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVsZWdhdGUsIHR5cGVuYW1lIENoYXJUeXBlPgogY2xhc3Mg
UGFyc2VyIHsKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRnJpZW5kRGVsZWdhdGU+Ci0g
ICAgZnJpZW5kIGNvbnN0IGNoYXIqIHBhcnNlKEZyaWVuZERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29u
c3QgVVN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KTsKKyAgICBm
cmllbmQgY29uc3QgY2hhciogcGFyc2UoRnJpZW5kRGVsZWdhdGUmLCBjb25zdCBTdHJpbmcmIHBh
dHRlcm4sIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCk7CiAKICAgICBlbnVtIEVycm9yQ29k
ZSB7CiAgICAgICAgIE5vRXJyb3IsCkBAIC0yMjgsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgVUNoYXIgbV9jaGFyYWN0ZXI7CiAgICAgfTsKIAotICAgIFBhcnNlcihEZWxlZ2F0ZSYgZGVs
ZWdhdGUsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1p
dCkKKyAgICBQYXJzZXIoRGVsZWdhdGUmIGRlbGVnYXRlLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4s
IHVuc2lnbmVkIGJhY2tSZWZlcmVuY2VMaW1pdCkKICAgICAgICAgOiBtX2RlbGVnYXRlKGRlbGVn
YXRlKQogICAgICAgICAsIG1fYmFja1JlZmVyZW5jZUxpbWl0KGJhY2tSZWZlcmVuY2VMaW1pdCkK
ICAgICAgICAgLCBtX2VycihOb0Vycm9yKQpAQCAtODY4LDcgKzg2OCw3IEBAIHByaXZhdGU6CiAg
Ki8KIAogdGVtcGxhdGU8Y2xhc3MgRGVsZWdhdGU+Ci1jb25zdCBjaGFyKiBwYXJzZShEZWxlZ2F0
ZSYgZGVsZWdhdGUsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIHVuc2lnbmVkIGJhY2tSZWZlcmVu
Y2VMaW1pdCA9IHF1YW50aWZ5SW5maW5pdGUpCitjb25zdCBjaGFyKiBwYXJzZShEZWxlZ2F0ZSYg
ZGVsZWdhdGUsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxp
bWl0ID0gcXVhbnRpZnlJbmZpbml0ZSkKIHsKICAgICBpZiAocGF0dGVybi5pczhCaXQoKSkKICAg
ICAgICAgcmV0dXJuIFBhcnNlcjxEZWxlZ2F0ZSwgTENoYXI+KGRlbGVnYXRlLCBwYXR0ZXJuLCBi
YWNrUmVmZXJlbmNlTGltaXQpLnBhcnNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJyUGF0dGVybi5jcHAKaW5kZXggYmJkYTljNTI2NmYyMzc5N2U1NjY3Mzk4N2ZmYTk0Y2Q3Mzdi
OTYyOS4uNTA4MDkyOWY0YTQxOWRmMjAzNDQ4MjY1NmU3ZGUyYjk5NTNiNDY5YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtODIwLDcgKzgyMCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb247CiB9Owog
Ci1jb25zdCBjaGFyKiBZYXJyUGF0dGVybjo6Y29tcGlsZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
U3RyaW5nKQorY29uc3QgY2hhciogWWFyclBhdHRlcm46OmNvbXBpbGUoY29uc3QgU3RyaW5nJiBw
YXR0ZXJuU3RyaW5nKQogewogICAgIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgY29uc3RydWN0b3Io
KnRoaXMpOwogCkBAIC04NTMsNyArODUzLDcgQEAgY29uc3QgY2hhciogWWFyclBhdHRlcm46OmNv
bXBpbGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZykKICAgICByZXR1cm4gMDsKIH0KIAot
WWFyclBhdHRlcm46OllhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdu
b3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcikKK1lhcnJQYXR0ZXJu
OjpZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3JlQ2FzZSwgYm9v
bCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcikKICAgICA6IG1faWdub3JlQ2FzZShpZ25v
cmVDYXNlKQogICAgICwgbV9tdWx0aWxpbmUobXVsdGlsaW5lKQogICAgICwgbV9jb250YWluc0Jh
Y2tyZWZlcmVuY2VzKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhdHRlcm4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmgKaW5kZXggYTMxZGVlZTY3Mjk0NjQ0ZTVkYzRhYWQ0ZDdhMDZiMDczYjIwYjc5Zi4uMTRlODli
OGUwOTI5Njg4MjZkZWEzOTc1NGMzNmQxM2IxNDExZjZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5oCkBAIC0yNywxMCArMjcsMTAgQEAKICNpZm5kZWYgWWFyclBh
dHRlcm5faAogI2RlZmluZSBZYXJyUGF0dGVybl9oCiAKLSNpbmNsdWRlIDxydW50aW1lL1VTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CkBAIC0zMTYsNyArMzE2LDcgQEAgc3RydWN0IFRl
cm1DaGFpbiB7CiB9OwogCiBzdHJ1Y3QgWWFyclBhdHRlcm4gewotICAgIEpTX0VYUE9SVF9QUklW
QVRFIFlhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3JlQ2FzZSwg
Ym9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgWWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJv
b2wgbXVsdGlsaW5lLCBjb25zdCBjaGFyKiogZXJyb3IpOwogCiAgICAgfllhcnJQYXR0ZXJuKCkK
ICAgICB7CkBAIC00MDUsNyArNDA1LDcgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICBWZWN0
b3I8Q2hhcmFjdGVyQ2xhc3MqPiBtX3VzZXJDaGFyYWN0ZXJDbGFzc2VzOwogCiBwcml2YXRlOgot
ICAgIGNvbnN0IGNoYXIqIGNvbXBpbGUoY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZyk7Cisg
ICAgY29uc3QgY2hhciogY29tcGlsZShjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpOwogCiAg
ICAgQ2hhcmFjdGVyQ2xhc3MqIG5ld2xpbmVDYWNoZWQ7CiAgICAgQ2hhcmFjdGVyQ2xhc3MqIGRp
Z2l0c0NhY2hlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJT
eW50YXhDaGVja2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhD
aGVja2VyLmNwcAppbmRleCA1MWZkYTk0ZDhhM2Q3NmZjNWEyZDc2YjU2M2ZiNWY2YmE5MjlmZjMx
Li5hYTk4YzRhMzU0NzU3N2ZhNmM1MWM4ODFmYWIzMzU4ZGJjZDk5MjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2p1bmN0aW9uKCkge30KIH07CiAKLWNvbnN0IGNo
YXIqIGNoZWNrU3ludGF4KGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4pCitjb25zdCBjaGFyKiBjaGVj
a1N5bnRheChjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiB7CiAgICAgU3ludGF4Q2hlY2tlciBzeW50
YXhDaGVja2VyOwogICAgIHJldHVybiBwYXJzZShzeW50YXhDaGVja2VyLCBwYXR0ZXJuKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oCmluZGV4IDIw
MTM2NzFlYjU3M2Y5YjZlMDIzYzMwYTNiNWFkMjhhNmFlOWFlZmMuLjEwNGNlZDNhYjRiZDc4Y2Iy
YWU2NDA2YjdmNjM1MTgyNjRjYWJkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclN5bnRheENoZWNrZXIuaApAQCAtMjYsMTEgKzI2LDExIEBACiAjaWZuZGVmIFlhcnJT
eW50YXhDaGVja2VyX2gKICNkZWZpbmUgWWFyclN5bnRheENoZWNrZXJfaAogCi0jaW5jbHVkZSA8
cnVudGltZS9VU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKLWNvbnN0IGNoYXIqIGNoZWNrU3ludGF4
KGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4pOworY29uc3QgY2hhciogY2hlY2tTeW50YXgoY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuKTsKIAogfX0gLy8gSlNDOjpZQVJSCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL3lhcnIucHJpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIveWFyci5wcmkKaW5kZXggNjIzMDk4ZmQzYWY3YjMwZTAwZWU4NTMxNDI1MzM2Y2M4MmQ0MDBl
OS4uN2U5YjRkM2YzYjNjZmJkNGUzYzk3YjNjOGIxMGE2OGFiY2RjYmYyOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIveWFyci5wcmkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIveWFyci5wcmkKQEAgLTEwLDkgKzEwLDMgQEAgU09VUkNFUyArPSBcCiAgICAg
JCRQV0QvWWFyclN5bnRheENoZWNrZXIuY3BwIFwKICAgICAkJFBXRC9ZYXJyQ2Fub25pY2FsaXpl
VUNTMi5jcHAKIAotIyBGb3IgVVN0cmluZy5oCi12OCB7Ci0gICAgSU5DTFVERVBBVEggKz0gXAot
ICAgICAgICAkJFBXRC8uLiBcCi0gICAgICAgICQkUFdELy4uL3J1bnRpbWUKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CmluZGV4IGQ5YWQ1YTVjMmJkNjExNjZmZGRlODA3NWJlYWRjMTlmMDAzNWIwM2UuLjRhNGVmZTg0
NmViNTU4MDFhOGU1OGJlYWRjN2ZmN2E4ZGRmMjE2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTE2OSw0
ICsxMTY5LDMgQEAKICNlbmRpZgogCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYjUwN2M0OThjMTJkN2U4NDIwNDFiMDJkOWYxZGQ5YzFh
NzkwZWM4OS4uM2FiMGFkZjNiZjk5NTMzZmU0ZGQyMTgzZmIyNmU4MmU0YTAyMzI0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0xOTgsOCArMTk4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVyczE2KCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotICAgIGlubGluZSBjb25zdCBDaGFyVHlwZSogZ2V0Q2hhcmFjdGVy
cygpIGNvbnN0OworICAgIC8vIFJldHVybiBjaGFyYWN0ZXJzOCgpIG9yIGNoYXJhY3RlcnMxNigp
IGRlcGVuZGluZyBvbiBDaGFyYWN0ZXJUeXBlLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorICAgIGlubGluZSBjb25zdCBDaGFyYWN0ZXJUeXBlKiBnZXRDaGFyYWN0ZXJz
KCkgY29uc3Q7CisKKyAgICAvLyBMaWtlIGdldENoYXJhY3RlcnMoKSBhbmQgdXBjb252ZXJ0IGlm
IENoYXJhY3RlclR5cGUgaXMgVUNoYXIgb24gYSA4Yml0IHN0cmluZy4KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBpbmxpbmUgY29uc3QgQ2hhcmFjdGVyVHlwZSog
Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoKSBjb25zdDsKIAogICAgIGJvb2wgaXM4Qml0KCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLT5pczhCaXQoKTsgfQogCkBAIC0zMTUsNyArMzIwLDcgQEAg
cHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBw
b3MsIGludCBsZW4gPSAxKTsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3Vi
c3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwotICAg
IFN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9
IFVJTlRfTUFYKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHN1YnN0
cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNv
bnN0OwogICAgIFN0cmluZyBsZWZ0KHVuc2lnbmVkIGxlbikgY29uc3QgeyByZXR1cm4gc3Vic3Ry
aW5nKDAsIGxlbik7IH0KICAgICBTdHJpbmcgcmlnaHQodW5zaWduZWQgbGVuKSBjb25zdCB7IHJl
dHVybiBzdWJzdHJpbmcobGVuZ3RoKCkgLSBsZW4sIGxlbik7IH0KIApAQCAtNTE4LDYgKzUyMywx
OSBAQCBpbmxpbmUgY29uc3QgVUNoYXIqIFN0cmluZzo6Z2V0Q2hhcmFjdGVyczxVQ2hhcj4oKSBj
b25zdAogICAgIHJldHVybiBjaGFyYWN0ZXJzMTYoKTsKIH0KIAordGVtcGxhdGU8PgoraW5saW5l
IGNvbnN0IExDaGFyKiBTdHJpbmc6OmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0PExDaGFyPigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzOEJpdCgpKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyczgo
KTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGNvbnN0IFVDaGFyKiBTdHJpbmc6OmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0PFVDaGFyPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoYXJhY3Rl
cnMoKTsKK30KKwogaW5saW5lIGJvb2wgU3RyaW5nOjpjb250YWluc09ubHlMYXRpbjEoKSBjb25z
dAogewogICAgIGlmIChpc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvVVN0cmluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkOTg1YWE1MjFjOTUxYjBmMmRiMDFkODU1ZWNmYzhlYmQ1NWU5M2ZjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvVVN0cmluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBA
Ci0jaWZuZGVmIFdlYkNvcmVfRldEX1VTdHJpbmdfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9VU3Ry
aW5nX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VU3RyaW5nLmg+Ci0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVVN0cmluZ0J1
aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVVN0cmlu
Z0J1aWxkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkyYTc4MzBmMWY0N2Q0
YzlmNjY5MjE3ZDg3NjM5YWNhNGIxZDYxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1VTdHJpbmdCdWlsZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSNpZm5kZWYg
V2ViQ29yZV9GV0RfVVN0cmluZ0J1aWxkZXJfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9VU3RyaW5n
QnVpbGRlcl9oCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVVN0cmluZ0J1aWxkZXIuaD4KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9VU3RyaW5nSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9VU3RyaW5nSW1wbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDE2N2E0ZDZl
ZWY1OTMzZjJjZWQ3Zjc0NTQ0ZDg3OWU3N2I5MzFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvVVN0cmluZ0ltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9VU3RyaW5nSW1wbF9oCi0jZGVmaW5lIFdlYkNvcmVfRldEX1VTdHJpbmdJ
bXBsX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VU3RyaW5nSW1wbC5oPgotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGJlYTE0ZDg3Mjc1MWQ3NGQ2NDhhOTZjN2EyYzllYzJjZDQ0
OTM0MzcuLmFiNWY2MmQ0MTU1MDVjZWU5NWFjMWI0MjFiYzY0YjZiY2FjY2E5MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0xODMzLDcgKzE4MzMsNyBAQCBfX1pON1dlYkNvcmUxNlRocmVhZEds
b2JhbERhdGEyNnNoYXJlZE1haW5UaHJlYWRTdGF0aWNEYXRhRQogX19aTjdXZWJDb3JlMTZWaXNp
YmxlU2VsZWN0aW9uMjdzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGVFUE5TXzROb2RlRQogX19a
TjdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uQzFFdgogX19aTjdXZWJDb3JlMTZlbmNsb3NpbmdJ
bnRSZWN0RVJLNkNHUmVjdAotX19aTjdXZWJDb3JlMTZqc1N0cmluZ1Nsb3dDYXNlRVBOM0pTQzlF
eGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0ltcGxFTlMwXzRXZWFrSU5TMF84
SlNTdHJpbmdFRUVOUzNfMTBTdHJpbmdIYXNoRU5TM18xMEhhc2hUcmFpdHNJUzZfRUVOU0JfSVM5
X0VFRUVTNl8KK19fWk43V2ViQ29yZTE2anNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZUVQTjNKU0M5
RXhlY1N0YXRlRVJOM1dURjdIYXNoTWFwSVBOUzNfMTBTdHJpbmdJbXBsRU5TMF80V2Vha0lOUzBf
OEpTU3RyaW5nRUVFTlMzXzEwU3RyaW5nSGFzaEVOUzNfMTBIYXNoVHJhaXRzSVM2X0VFTlNCX0lT
OV9FRUVFUzZfCiBfX1pON1dlYkNvcmUxNm5leHRMaW5lUG9zaXRpb25FUktOU18xNVZpc2libGVQ
b3NpdGlvbkVpTlNfMTJFZGl0YWJsZVR5cGVFCiBfX1pON1dlYkNvcmUxNm5leHRXb3JkUG9zaXRp
b25FUktOU18xNVZpc2libGVQb3NpdGlvbkUKIF9fWk43V2ViQ29yZTE3Q3JlZGVudGlhbFN0b3Jh
Z2UxNmNsZWFyQ3JlZGVudGlhbHNFdgpAQCAtMjMwOSw4ICsyMzA5LDggQEAgX19OUE5fU2V0UHJv
cGVydHkKIF9fTlBOX1VURjhGcm9tSWRlbnRpZmllcgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250
cm9sbGVyMjB3aW5kb3dTY3JpcHROUE9iamVjdEV2CiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRy
b2xsZXIyOWNsZWFudXBTY3JpcHRPYmplY3RzRm9yUGx1Z2luRVB2Ci1fX1pON1dlYkNvcmUxNmpz
U3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3Ry
aW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFzaElTNl9FRU5TM18x
MEhhc2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl8KIF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJ
bkVsZW1lbnQxMWdldE5QT2JqZWN0RXYKK19fWk43V2ViQ29yZTI1anNTdHJpbmdXaXRoQ2FjaGVT
bG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjdIYXNoTWFwSVBOUzNfMTBTdHJpbmdJbXBs
RU5TMF80V2Vha0lOUzBfOEpTU3RyaW5nRUVFTlMzXzdQdHJIYXNoSVM2X0VFTlMzXzEwSGFzaFRy
YWl0c0lTNl9FRU5TQ19JUzlfRUVFRVM2XwogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW45
Y2FuQWNjZXNzRVBLUzBfCiBfX1pOSzdXZWJDb3JlNEtVUkw3aGFzUGF0aEV2CiAjZW5kaWYKQEAg
LTIzMzgsNyArMjMzOCw3IEBAIF9fWk43V2ViQ29yZTVGcmFtZTI2c2VuZE9yaWVudGF0aW9uQ2hh
bmdlRXZlbnRFaQogCiAjaWYgVVNFKFBMVUdJTl9IT1NUX1BST0NFU1MpCiBfX1pOM0pTQzEzUnVu
dGltZU1ldGhvZDExZ2V0Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhDYWxsRGF0YUUKLV9fWk4z
SlNDMTNSdW50aW1lTWV0aG9kMTRmaW5pc2hDcmVhdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktO
U183VVN0cmluZ0UKK19fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTRmaW5pc2hDcmVhdGlvbkVSTlNf
MTJKU0dsb2JhbERhdGFFUktOM1dURjZTdHJpbmdFCiBfX1pOM0pTQzEzUnVudGltZU1ldGhvZDE4
Z2V0T3duUHJvcGVydHlTbG90RVBOU182SlNDZWxsRVBOU185RXhlY1N0YXRlRU5TXzEyUHJvcGVy
dHlOYW1lRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMjRnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3JFUE5TXzhKU09iamVjdEVQTlNfOUV4ZWNTdGF0ZUVOU18xMlBy
b3BlcnR5TmFtZUVSTlNfMThQcm9wZXJ0eURlc2NyaXB0b3JFCiBfX1pOM0pTQzEzUnVudGltZU1l
dGhvZDZzX2luZm9FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IGZiZDhhNWJhNTYyMWUyNzJmNDM4MGI1Mzc3YmRkMzYzYTg1ZDJhZjMuLmNhYTIx
OTExNTVhYWVlNjg0YWM3NzZkM2M5Y2JmMmE1ZGYzODFhYTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mzg3NywxNCArNzM4NzcsNiBAQAog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcU3RyaW5nT2Jq
ZWN0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXFVTdHJpbmcuaCIKLQkJCQkJPgotCQkJCTwv
RmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJz
XHJ1bnRpbWVcVVN0cmluZ0ltcGwuaCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVy
PgogCQkJPEZpbHRlcgogCQkJCU5hbWU9InlhcnIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAppbmRleCA4ZWZiNDgx
NzUzNDM2NmRjNTQ3OTk4NmIzYjBhZDJmODg1MDZiYzYxLi4wZGQzY2Y1NzdmMTg2ZjRiMjA1Y2Vh
MDhmZGI1OGExMWNlZmZjYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCi0jaW5jbHVkZSAiSlNET01CaW5k
aW5nLmgiIC8vIGZvciBzdHJpbmdUb1VTdHJpbmcKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VQcm92
aWRlci5oIgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAKQEAgLTQ1LDE0ICs0NCwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdC0+cmVt
b3ZlQ2xpZW50KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBKU0M6OlVTdHJp
bmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdCBPVkVSUklERQorICAgICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0IE9WRVJSSURF
CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBsZW5ndGggPSBlbmQgLSBzdGFydDsKICAgICAg
ICAgICAgIEFTU0VSVChsZW5ndGggPj0gMCk7CiAgICAgICAgICAgICBBU1NFUlQoc3RhcnQgKyBs
ZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOwogCiAgICAgICAgICAgICBTdHJpbmcgc2NyaXB0ID0g
bV9jYWNoZWRTY3JpcHQtPnNjcmlwdCgpOwotICAgICAgICAgICAgcmV0dXJuIEpTQzo6VVN0cmlu
ZyhTdHJpbmdJbXBsOjpjcmVhdGUoc2NyaXB0LmltcGwoKSwgc3RhcnQsIGxlbmd0aCkpOworICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGUoc2NyaXB0LmltcGwoKSwg
c3RhcnQsIGxlbmd0aCkpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5zY3JpcHQoKS5pbXBsKCk7IH0K
QEAgLTY2LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIoQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3Jp
cHQpCi0gICAgICAgICAgICA6IFNjcmlwdFNvdXJjZVByb3ZpZGVyKHN0cmluZ1RvVVN0cmluZyhj
YWNoZWRTY3JpcHQtPnJlc3BvbnNlKCkudXJsKCkpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3Np
dGlvbigpLCBjYWNoZWRTY3JpcHQtPnNvdXJjZVByb3ZpZGVyQ2FjaGUoKSkKKyAgICAgICAgICAg
IDogU2NyaXB0U291cmNlUHJvdmlkZXIoY2FjaGVkU2NyaXB0LT5yZXNwb25zZSgpLnVybCgpLCBU
ZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBjYWNoZWRTY3JpcHQtPnNvdXJjZVByb3Zp
ZGVyQ2FjaGUoKSkKICAgICAgICAgICAgICwgbV9jYWNoZWRTY3JpcHQoY2FjaGVkU2NyaXB0KQog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KHRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAppbmRleCBiYTk2MGRjODI4
M2JlYTNhMmQ0ZTI3MDEwYzQ5ZTNjYjQ5NDNmNmRmLi44NjM3ZGFjY2EwNzgyZDRhOWFjYmZmN2Q1
MGM1NTRlNWMzNzE0YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5
LmNwcApAQCAtNjUsMTMgKzY1LDEzIEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGll
c0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtCiAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKICAgICBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVuZCgpOyBp
dCsrKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSB1c3RyaW5nVG9TdHJpbmcoaXQtPnVz
dHJpbmcoKSk7CisgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+dXN0cmluZygpOwogICAg
ICAgICBpZiAoc3RyaW5nS2V5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgKml0KTsKICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFN0
cmluZyBzdHJpbmdWYWx1ZSA9IHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOworICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICBtYXAuc2V0KHN0cmluZ0tleSwgc3RyaW5nVmFsdWUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
aW5kZXggY2RjMGM0ODg0MTVjYTIzMzQyYjQxZjRkZTU1MzE5ZWE3Y2M5NDQ4Yy4uYjU1ZTc2YmJk
ZjZiODA3ZDc1MDgyY2Y4ZTY2Y2ExNTI5Yzk0NjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
UGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21WYWx1ZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHUKICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQogICAgICAg
ICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIodmFsdWUudG9OdW1iZXIoZXhlYykpOwogICAg
IGlmICh2YWx1ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJp
bmcodXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwor
ICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGRhdGVzLgogICAgIHJldHVy
biAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKaW5k
ZXggNDljYTI5NjRjNTY0ZmY4NjFjYWNiOGY3M2FiM2Y2NjAzZTQ5ZmRhNC4uM2VlNjE4NDMyZmVl
OGE3MDQ2Zjg3NmY3YTI1ZjliYmI3NDM5ZGU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Jsb2JDdXN0b20uY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU0Jsb2JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgaWYgKGl0ZW0uaW5oZXJpdHMoJkpTQmxvYjo6c19pbmZvKSkKICAg
ICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQodG9CbG9iKGl0ZW0pKTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gdXN0cmluZ1RvU3RyaW5nKGl0ZW0udG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBp
dGVtLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgYmxvYkJ1aWxkZXItPmFwcGVuZChzdHJpbmcsIGVu
ZGluZ3MsIEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNDY0
ZThiYjc3NWQwNTE2NDFlYTM2MzRjYWYzMTllODk2ZTlkYzQ3Ni4uNGExOTg5NGZiYWExZmNhMmY5
Nzk1NWQ3NjYxNGM0YmQxMjgwY2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC0yODMsNyAr
MjgzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGdldFByb3BlcnR5VmFsdWVGYWxsYmFjayhF
eGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXIKIHsKICAgICAvLyBJZiB0aGUgcHJvcGVy
dHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgKHN1Y2ggYXMgInBhZGRpbmciKSwKICAgICAvLyBp
dCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpbmRleCkpKTsKKyAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoZXhlYywgdGhpc09iai0+aW1wbCgpLT5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaW5kZXgpKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBl
eGVjLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmosIHVuc2lnbmVkIHByb3BlcnR5SUQp
CkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKIAogSlNWYWx1ZSBK
U0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKHVzdHJpbmdUb1N0cmluZyhleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKaW5kZXggMGM2
NzRjYjZmNGZmNDNiMTE3OGNkZWU1YzE4ZTBiNWQ3YTM4Njc1Yi4uMDI2YjFhZTFkZWQ3ZjIwMDdl
OWNmMTZiMTA2MTc0OTE2MjcwODVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApA
QCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FudmFzU3R5bAogICAgICAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0eWxlLT5jYW52YXNHcmFkaWVudCgpKTsKICAgICBp
ZiAoc3R5bGUtPmNhbnZhc1BhdHRlcm4oKSkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHlsZS0+Y2FudmFzUGF0dGVybigpKTsKLSAgICByZXR1cm4ganNTdHJpbmco
ZXhlYywgc3R5bGUtPmNvbG9yKCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBzdHlsZS0+Y29sb3IoKSk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiB0
b0hUTUxDYW52YXNTdHlsZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlKQpAQCAtNjksNyArNjks
NyBAQCB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4oaW1w
bCgpKTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcih1c3RyaW5nVG9TdHJpbmcoYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKSkp
OworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihhc1N0cmluZyh2YWx1ZSktPnZhbHVl
KGV4ZWMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjb250ZXh0LT5zZXRTdHJva2VT
dHlsZSh0b0hUTUxDYW52YXNTdHlsZShleGVjLCB2YWx1ZSkpOwpAQCAtODUsNyArODUsNyBAQCB2
b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsU3R5bGUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogY29u
dGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+KGltcGwoKSk7CiAg
ICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjb250ZXh0LT5zZXRGaWxsU3R5bGUodG9IVE1MQ2Fu
dmFzU3R5bGUoZXhlYywgdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRleCA4Y2ZkNjVhMjlkOWIwNzVkMjMxNDJlNjllYjg5
ZTg2MTRhOWEzNmY2Li4zYTkzZjg5MzNlNThiMzgzNjEyYjc4NzZiNzIyOTMxYWZhMTQ3YmEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIEpTVmFsdWUgSlNDbGlwYm9hcmQ6OnR5cGVzKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwogICAgIEhhc2hTZXQ8
U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdHlwZXMuZW5kKCk7CiAgICAgZm9yIChIYXNo
U2V0PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdHlwZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICBsaXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCBzdHJpbmdUb1VTdHJp
bmcoKml0KSkpOworICAgICAgICBsaXN0LmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShleGVjLCAq
aXQpKTsKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGxp
c3QpOwogfQogCkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgSlNDbGlwYm9hcmQ6OmNsZWFyRGF0
YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA9PSAxKSB7Ci0gICAgICAgIGNsaXBib2FyZC0+Y2xlYXJEYXRhKHVzdHJpbmdUb1N0cmluZyhl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAg
Y2xpcGJvYXJkLT5jbGVhckRhdGEoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZl
ci5jcHAKaW5kZXggODQ3YmNlNGQ2YWU3YzRjMzc1MWFmYjEyZWFhNjQ0OGI2Mjc4ZTA2NC4uZDFk
YzBiMWNlZWQzMjExNmI2N2YxMjQ4YjI4MGE0ZmQ0ZDdjM2JhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVz
cGFjZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICBSZWZQdHI8SlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXI+IHNlbGZQcm90ZWN0b3IodGhpcyk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHByZWZpeCkpOworICAgIGFy
Z3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHByZWZpeCkpOwogCiAgICAgbV9nbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFs
dWUgcmV0dmFsID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIG1fY3VzdG9tUmVzb2x2ZXIuZ2V0KCksIGFyZ3MpOwpAQCAtOTgs
NyArOTgsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFj
ZVVSSShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlv
bihleGVjKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCFyZXR2YWwuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHVzdHJpbmdUb1N0cmluZyhyZXR2YWwudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJldHZhbC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgfQogCiAgICAgRG9jdW1lbnQ6OnVwZGF0ZVN0
eWxlRm9yQWxsRG9jdW1lbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAppbmRleCA2NTUxZDY2ODdkZmY4MjhlOTU0YmMyY2YxZjRhYTZjOGZhMjQ2NTI1
Li4zNDRhODA3ODI4NmQyNWVhNDhhMTQyMmYxM2RkYWI4NzhjZjk5ZWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAgY29u
c3QgSlNDOjpIYXNoVGFibGUqIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdAogICAgIHJldHVybiBET01PYmplY3RIYXNoVGFibGVNYXA6Om1h
cEZvcihnbG9iYWxEYXRhKS5nZXQoc3RhdGljVGFibGUpOwogfQogCi1KU1ZhbHVlIGpzU3RyaW5n
U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZ0NhY2hlJiBzdHJpbmdDYWNoZSwgU3Ry
aW5nSW1wbCogc3RyaW5nSW1wbCkKK0pTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZShF
eGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nQ2FjaGUmIHN0cmluZ0NhY2hlLCBTdHJpbmdJbXBsKiBz
dHJpbmdJbXBsKQogewotICAgIEpTU3RyaW5nKiB3cmFwcGVyID0ganNTdHJpbmcoZXhlYywgVVN0
cmluZyhzdHJpbmdJbXBsKSk7CisgICAgSlNTdHJpbmcqIHdyYXBwZXIgPSBKU0M6OmpzU3RyaW5n
KGV4ZWMsIFN0cmluZyhzdHJpbmdJbXBsKSk7CiAgICAgd2Vha0FkZChzdHJpbmdDYWNoZSwgc3Ry
aW5nSW1wbCwgUGFzc1dlYWs8SlNTdHJpbmc+KHdyYXBwZXIsIGN1cnJlbnRXb3JsZChleGVjKS0+
c3RyaW5nV3JhcHBlck93bmVyKCksIHN0cmluZ0ltcGwpKTsKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KQEAgLTU5LDQwICs1OSw0MCBAQCBKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBzKQogewogICAgIGlmIChzLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHMpOworICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBzKTsKIH0KIAogSlNWYWx1ZSBqc093bmVkU3RyaW5n
T3JOdWxsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKQogewogICAgIGlmIChzLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIGpzT3duZWRTdHJp
bmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKHMpKTsKKyAgICByZXR1cm4ganNPd25lZFN0cmluZyhl
eGVjLCBzKTsKIH0KIAogSlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBzKQogewogICAgIGlmIChzLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcyk7CisgICAgcmV0
dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHMpOwogfQogCiBKU1ZhbHVlIGpzU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBqc1N0cmluZyhl
eGVjLCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1
cmwuc3RyaW5nKCkpOwogfQogCiBKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgdXJsLnN0cmluZygpKTsK
KyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgdXJsLnN0cmluZygpKTsKIH0KIAog
SlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS1VSTCYg
dXJsKQogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1cmwuc3RyaW5nKCkpOwogfQogCiBBdG9taWNTdHJp
bmdJbXBsKiBmaW5kQXRvbWljU3RyaW5nKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC0x
MDgsMTQgKzEwOCwxNCBAQCBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB1c3RyaW5nVG9TdHJpbmcodmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogfQogCiBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmlu
ZWRPck51bGxDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICByZXR1cm4gdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIH0KIAog
SlNWYWx1ZSBqc0RhdGVPck51bGwoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgdmFsdWUpCkBAIC0x
MzksNyArMTM5LDcgQEAgSlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3MKICAgICBKU0M6Ok1hcmtlZEFy
Z3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgaWYgKHN0cmluZ0xpc3QpIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHN0cmluZ0xpc3QtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAg
ICBsaXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCBzdHJpbmdMaXN0LT5pdGVtKGkpKSk7CisgICAg
ICAgICAgICBsaXN0LmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBzdHJpbmdMaXN0LT5p
dGVtKGkpKSk7CiAgICAgfQogICAgIHJldHVybiBKU0M6OmNvbnN0cnVjdEFycmF5KGV4ZWMsIGds
b2JhbE9iamVjdCwgbGlzdCk7CiB9CkBAIC0xNDksMTQgKzE0OSwxNCBAQCB2b2lkIHJlcG9ydEV4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXhjZXB0aW9uKQogICAgIGlmIChpc1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb24udG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb24udG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb25PYmplY3QgPSBleGNl
cHRpb24udG9PYmplY3QoZXhlYyk7CiAgICAgaW50IGxpbmVOdW1iZXIgPSBleGNlcHRpb25PYmpl
Y3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIikpLnRvSW50MzIoZXhlYyk7Ci0g
ICAgVVN0cmluZyBleGNlcHRpb25Tb3VyY2VVUkwgPSBleGNlcHRpb25PYmplY3QtPmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJzb3VyY2VVUkwiKSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgIFN0cmluZyBleGNlcHRpb25Tb3VyY2VVUkwgPSBleGNlcHRpb25PYmplY3QtPmdl
dChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJzb3VyY2VVUkwiKSkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICBpZiAoRXhjZXB0
aW9uQmFzZSogZXhjZXB0aW9uQmFzZSA9IHRvRXhjZXB0aW9uQmFzZShleGNlcHRpb24pKQotICAg
ICAgICBlcnJvck1lc3NhZ2UgPSBzdHJpbmdUb1VTdHJpbmcoZXhjZXB0aW9uQmFzZS0+bWVzc2Fn
ZSgpICsgIjogIiAgKyBleGNlcHRpb25CYXNlLT5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZXJy
b3JNZXNzYWdlID0gZXhjZXB0aW9uQmFzZS0+bWVzc2FnZSgpICsgIjogIiAgKyBleGNlcHRpb25C
YXNlLT5kZXNjcmlwdGlvbigpOwogCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7CiAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2lu
ZG93Kj4oZ2xvYmFsT2JqZWN0KSkgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgcmVwb3J0RXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBleGNlcHRpb24pCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5yZXBvcnRFeGNlcHRpb24odXN0cmluZ1RvU3RyaW5nKGVy
cm9yTWVzc2FnZSksIGxpbmVOdW1iZXIsIHVzdHJpbmdUb1N0cmluZyhleGNlcHRpb25Tb3VyY2VV
UkwpLCAwKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5yZXBvcnRFeGNlcHRpb24oZXJy
b3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBleGNlcHRpb25Tb3VyY2VVUkwsIDApOwogfQogCiB2b2lk
IHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCAwYzNkNTM3NDgxYmVhMmE5OWM5ODM1M2Mx
NGQ2ZTE2ZjAwMjQ0OTdkLi4wMDliMjdjM2FjYWFiMjlkMWFlN2ZkZGI0ZWMwNWNkMWJhMDdkMWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjMzLDEy
ICsyMzMsMTIgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICAvLyBDb252ZXJ0
IGEgRE9NIGltcGxlbWVudGF0aW9uIGV4Y2VwdGlvbiBjb2RlIGludG8gYSBKYXZhU2NyaXB0IGV4
Y2VwdGlvbiBpbiB0aGUgZXhlY3V0aW9uIHN0YXRlLgogICAgIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CiAKLSAgICBKU0M6OkpTVmFsdWUganNT
dHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsgLy8gZW1wdHkgaWYgdGhlIHN0
cmluZyBpcyBudWxsCi0gICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nU2xvd0Nhc2UoSlNDOjpFeGVj
U3RhdGUqLCBKU1N0cmluZ0NhY2hlJiwgU3RyaW5nSW1wbCopOworICAgIEpTQzo6SlNWYWx1ZSBq
c1N0cmluZ1dpdGhDYWNoZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIEpT
Qzo6SlNWYWx1ZSBqc1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlKEpTQzo6RXhlY1N0YXRlKiwgSlNT
dHJpbmdDYWNoZSYsIFN0cmluZ0ltcGwqKTsKICAgICBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBLVVJMJik7IC8vIGVtcHR5IGlmIHRoZSBVUkwgaXMgbnVsbAot
ICAgIGlubGluZSBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEF0b21pY1N0cmluZyYgcykKKyAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0
aENhY2hlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIHMpCiAgICAg
eyAKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHMuc3RyaW5nKCkpOworICAgICAgICBy
ZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcy5zdHJpbmcoKSk7CiAgICAgfQogICAgICAg
ICAKICAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmKTsgLy8gbnVsbCBpZiB0aGUgc3RyaW5nIGlzIG51bGwKQEAgLTI1MiwxMSArMjUy
LDggQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICBKU0M6OkpTVmFsdWUganNP
d25lZFN0cmluZ09yTnVsbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAKIAogICAg
IFN0cmluZyBwcm9wZXJ0eU5hbWVUb1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7Ci0gICAgU3Ry
aW5nIHVzdHJpbmdUb1N0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcmKTsKLSAgICBKU0M6OlVTdHJp
bmcgc3RyaW5nVG9VU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgQXRvbWljU3RyaW5nIHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lKTsKLSAgICBBdG9taWNT
dHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYpOwogICAgIEF0
b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiAg
ICAgU3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlKTsgLy8gbnVsbCBpZiB0aGUgdmFsdWUgaXMgbnVsbApAQCAtMzE3LDcgKzMxNCw3
IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgc3RydWN0IEpTVmFsdWVUcmFp
dHM8U3RyaW5nPiB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGFycmF5SlNW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywg
c3RyaW5nVG9VU3RyaW5nKHZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoZXhlYywgdmFsdWUpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMzU4LDcgKzM1NSw3
IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAgICAgc3RydWN0IE5hdGl2ZVZhbHVl
VHJhaXRzPFN0cmluZz4gewogICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgYXJyYXlOYXRpdmVW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0cmluZyYg
aW5kZXhlZFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbmRleGVkVmFsdWUgPSB1c3Ry
aW5nVG9TdHJpbmcoanNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAg
ICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH07CkBAIC00MDksMzAg
KzQwNiwyMiBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgIHZvaWQgcHJpbnRF
cnJvck1lc3NhZ2VGb3JGcmFtZShGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
SlNDOjpKU1ZhbHVlIG9iamVjdFRvU3RyaW5nRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIAotICAgIGlubGluZSBKU0M6OkpT
VmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKKyAg
ICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hlKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewogICAgICAgICBTdHJpbmdJbXBsKiBzdHJpbmdJ
bXBsID0gcy5pbXBsKCk7CiAgICAgICAgIGlmICghc3RyaW5nSW1wbCB8fCAhc3RyaW5nSW1wbC0+
bGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKIAorICAg
ICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkbid0IGludm9rZSBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJz
KCkuCisgICAgICAgIC8vIEZJWE1FOiB3aHkgbm90IGp1c3QgcmV0dXJuIGEgU21hbGxTdHJpbmdz
IHdoZW4gcG9zc2libGU/CiAgICAgICAgIGlmIChzdHJpbmdJbXBsLT5sZW5ndGgoKSA9PSAxICYm
IHN0cmluZ0ltcGwtPmNoYXJhY3RlcnMoKVswXSA8PSAweEZGKQotICAgICAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhzKSk7CisgICAgICAgICAgICByZXR1cm4g
SlNDOjpqc1N0cmluZyhleGVjLCBzKTsKIAogICAgICAgICBKU1N0cmluZ0NhY2hlJiBzdHJpbmdD
YWNoZSA9IGN1cnJlbnRXb3JsZChleGVjKS0+bV9zdHJpbmdDYWNoZTsKICAgICAgICAgaWYgKEpT
Qzo6SlNTdHJpbmcqIHN0cmluZyA9IHN0cmluZ0NhY2hlLmdldChzdHJpbmdJbXBsKSkKICAgICAg
ICAgICAgIHJldHVybiBzdHJpbmc7CiAKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nU2xvd0Nhc2Uo
ZXhlYywgc3RyaW5nQ2FjaGUsIHN0cmluZ0ltcGwpOwotICAgIH0KLQotICAgIGlubGluZSBTdHJp
bmcgdXN0cmluZ1RvU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYgdSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB1LmltcGwoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlNDOjpVU3RyaW5nIHN0cmlu
Z1RvVVN0cmluZyhjb25zdCBTdHJpbmcmIHMpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpV
U3RyaW5nKHMuaW1wbCgpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlU2xvd0Nh
c2UoZXhlYywgc3RyaW5nQ2FjaGUsIHN0cmluZ0ltcGwpOwogICAgIH0KIAogICAgIGlubGluZSBT
dHJpbmcgcHJvcGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQpAQCAtNDQwLDExICs0MjksNiBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAg
ICAgICByZXR1cm4gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgQXRvbWljU3RyaW5nIHVzdHJpbmdUb0F0b21pY1N0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcm
IHUpCi0gICAgewotICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHUuaW1wbCgpKTsKLSAgICB9
Ci0KICAgICBpbmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpT
Qzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBBdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUZvcm1EYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IDdiZTkzMzI4YzI2
NTY2NDdkN2YxZjBlNjIzYWJhNmQyNTA3NzNiYjMuLjRlZDQ0OTdhMWJkYTQwYmQ0MjQ3MTY0Yzc5
OGEwMmJmYTFiZTE5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NRm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NRm9ybURhdGFDdXN0b20uY3BwCkBAIC02MCwxNSArNjAsMTUgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU0RPTUZvcm1EYXRhQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRE9NRm9y
bURhdGEoRXgKIEpTVmFsdWUgSlNET01Gb3JtRGF0YTo6YXBwZW5kKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgU3RyaW5n
IG5hbWUgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVj
LT5hcmd1bWVudCgxKTsKICAgICAgICAgaWYgKHZhbHVlLmluaGVyaXRzKCZKU0Jsb2I6OnNfaW5m
bykpIHsKICAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZTsKICAgICAgICAgICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPj0gMyAmJiAhZXhlYy0+YXJndW1lbnQoMikuaXNVbmRlZmluZWRP
ck51bGwoKSkKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHVzdHJpbmdUb1N0cmluZyhleGVj
LT5hcmd1bWVudCgyKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gZXhlYy0+YXJndW1lbnQoMikudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgICAgICAgICAgaW1wbCgpLT5hcHBlbmQobmFtZSwgdG9CbG9iKHZhbHVlKSwgZmls
ZW5hbWUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGltcGwoKS0+YXBwZW5kKG5hbWUs
IHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAg
ICAgICAgICAgIGltcGwoKS0+YXBwZW5kKG5hbWUsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcAppbmRl
eCA3ZjhkNWVjNTNmZmMzZjM2OWE5Y2M2ZmEyNjNmYWQyYjZmM2JiZjM5Li42ODY5ZGNlYTQ5ZmU2
MzA0ODA3YTkyZDdlOTUzM2QxOWE0OWE2ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAg
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmluZ0xpc3QoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQogICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CiAg
ICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0cmluZ0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVh
dGUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kp
Ci0gICAgICAgIHN0cmluZ0xpc3QtPmFwcGVuZCh1c3RyaW5nVG9TdHJpbmcoYXJyYXktPmdldElu
ZGV4KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgICAgICBzdHJpbmdMaXN0
LT5hcHBlbmQoYXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CiAKICAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5kZXggODkxZWE2
YWI0MWI2MTg5YWQ4ZDQ0ODBmZWI3ODRkNGZhNGI0NDA3ZS4uZDM5NzljNDk0MzkxYjdhM2VhNWJi
MzFmMDg3ZDlkZTk5Zjc2YTg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApAQCAtNDMsNyArNDMsNyBAQCBib29sIEpTRE9N
U3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NU3RyaW5nTWFwKiBp
bXBsLCBQcm9wZXJ0eQogSlNWYWx1ZSBKU0RPTVN0cmluZ01hcDo6bmFtZUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNET01TdHJpbmdNYXAqIHRoaXNPYmogPSBqc0Nhc3Q8SlNET01TdHJpbmdNYXAqPihh
c09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5p
bXBsKCktPml0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwor
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT5pbXBsKCktPml0ZW0o
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQogCiB2b2lkIEpT
RE9NU3RyaW5nTWFwOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEpTRE9NU3RyaW5nTWFwOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAg
IHRoaXNPYmplY3QtPm1faW1wbC0+Z2V0TmFtZXMobmFtZXMpOwogICAgIHNpemVfdCBsZW5ndGgg
PSBuYW1lcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkK
LSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJp
bmcobmFtZXNbaV0pKSk7CisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhl
YywgbmFtZXNbaV0pKTsKIAogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC03Miw3ICs3Miw3IEBAIGJvb2wg
SlNET01TdHJpbmdNYXA6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUKIAogYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKQogewotICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHVzdHJpbmdUb1N0
cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAppbmRleCBhMWYwYzFiMjI2MGQ1ZmI2ZjBiY2Y5MTdiZWM2ZmU2YTU1YjdjZDNj
Li4zNDM5YWZiNDUxM2M0NTJmOWE1OWUwMDNlNzkzYzBhMjAyOGQ0N2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC00MjEsMTIg
KzQyMSwxMiBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiAgICAgfQogI2VuZGlmCiAKLSAgICBVU3RyaW5nIGxvY2F0aW9uU3Ry
aW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2Nh
dGlvblN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChMb2NhdGlv
biogbG9jYXRpb24gPSBpbXBsKCktPmxvY2F0aW9uKCkpCi0gICAgICAgIGxvY2F0aW9uLT5zZXRI
cmVmKHVzdHJpbmdUb1N0cmluZyhsb2NhdGlvblN0cmluZyksIGFjdGl2ZURPTVdpbmRvdyhleGVj
KSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgICAgICBsb2NhdGlvbi0+c2V0SHJlZihsb2Nh
dGlvblN0cmluZywgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7
CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OmV2ZW50KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
QEAgLTQ3Miw3ICs0NzIsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpvcGVuKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRP
ck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBBdG9taWNTdHJp
bmcgZnJhbWVOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSA/ICJf
YmxhbmsiIDogdXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgQXRvbWljU3RyaW5nIGZyYW1lTmFtZSA9IGV4ZWMt
PmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkgPyAiX2JsYW5rIiA6IGV4ZWMtPmFyZ3Vt
ZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFN0cmluZyB3aW5k
b3dGZWF0dXJlc1N0cmluZyA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
ZXhlYywgZXhlYy0+YXJndW1lbnQoMikpOwpAQCAtNjQxLDcgKzY0MSw3IEBAIEpTVmFsdWUgSlNE
T01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghbGlz
dGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBp
bXBsKCktPmFkZEV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSks
IGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wbCgpLT5hZGRFdmVu
dExpc3RlbmVyKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwg
SlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwg
Y3VycmVudFdvcmxkKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpKTsK
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAtNjU1LDcgKzY1NSw3IEBAIEpTVmFs
dWUgSlNET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAKLSAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UsIGN1cnJlbnRX
b3JsZChleGVjKSkuZ2V0KCksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7Cisg
ICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlz
dGVuZXIpLCB0aGlzLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKS5nZXQoKSwgZXhlYy0+YXJn
dW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApp
bmRleCA3NThlNzI3OGIxNDhjZjIxMTE1MTRmNDE0ZmE4YmI5MDM4YWIwYmQ1Li41NWQ5OWJjODBl
NTRhZWQ2OTdhNmJmZjU5NDMzZjIzZTNkNDNiOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIEpT
RE9NV2luZG93U2hlbGw6OnNldFdpbmRvdyhQYXNzUmVmUHRyPERPTVdpbmRvdz4gZG9tV2luZG93
KQogLy8gSlNPYmplY3QgbWV0aG9kcwogLy8gLS0tLQogCi1VU3RyaW5nIEpTRE9NV2luZG93U2hl
bGw6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIEpTRE9NV2luZG93
U2hlbGw6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdCogb2JqZWN0KQogewogICAgIGNvbnN0IEpT
RE9NV2luZG93U2hlbGwqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNET01XaW5kb3dTaGVs
bCo+KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPndpbmRvdygpLT5tZXRob2RUYWJs
ZSgpLT5jbGFzc05hbWUodGhpc09iamVjdC0+d2luZG93KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4IDVmMjJkN2IxOGQ0OWRiMzQyZjYw
NzUzMzlkYzRjZjYzNTMyZmJlMWYuLjg0YWM0ZjMzNmUxNTAyYWMxMDI2YmU5MzJiMzJiZWI4Njhi
ODE3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxs
LmgKQEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgc3RhdGljIEpTQzo6VVN0cmluZyBjbGFz
c05hbWUoY29uc3QgSlNDOjpKU09iamVjdCopOworICAgICAgICBzdGF0aWMgU3RyaW5nIGNsYXNz
TmFtZShjb25zdCBKU0M6OkpTT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3RhdGljIHZvaWQg
cHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCA4
ZTk5NDhmMWFjMjBiOWRlODg4ZTY4MzdhNDZkM2JhZWU2ZWYwZmYzLi4xOTNhNmM0YTM1MmUzMWYz
Y2YwNWU3OTA4ZDljNmI3ZWIwNTg2NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMTY0LDcgKzE2
NCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VNb3Rpb25FdmVudDo6aW50ZXJ2YWwoRXhlY1N0YXRlKikg
Y29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZl
bnQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGNvbnN0IFN0cmluZyYgdHlwZSA9IHVzdHJpbmdU
b1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwor
ICAgIGNvbnN0IFN0cmluZyB0eXBlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIGJvb2wgYnViYmxlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvQm9v
bGVhbihleGVjKTsKICAgICBib29sIGNhbmNlbGFibGUgPSBleGVjLT5hcmd1bWVudCgyKS50b0Jv
b2xlYW4oZXhlYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IGQwM2I3NDBhYTVm
ZmQzZGJlZGYxNTUyNGZhNzg2OGNhMjE4OWI1MzQuLjFmMDcwZmU2MGRjNDI1NTRkOGMwYTVlOTQ3
NzU5NmY3ZDQxODZiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAs
NyBAQCBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1dGUoRXhlY1N0YXRl
KikgY29uc3QKIAogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VP
cmllbnRhdGlvbkV2ZW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBjb25zdCBTdHJpbmcmIHR5
cGUgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKKyAgICBjb25zdCBTdHJpbmcgdHlwZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBib29sIGJ1YmJsZXMgPSBleGVjLT5hcmd1
bWVudCgxKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxlID0gZXhlYy0+YXJn
dW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpOwogICAgIC8vIElmIGFscGhhLCBiZXRhIG9yIGdhbW1h
IGFyZSBudWxsIG9yIHVuZGVmaW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92aWRlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmluZGV4IDg1Yjc1OTE5OGJi
NGFmMjgwZThiNmM4YTczN2ZjMmFmZjE1MjdkMTAuLmQ0ZTIyNjQ3Mzk2NDhjZmJlMjcwNWQzYjFk
NTE3Y2QzMmZlNGJmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRGljdGlvCiAKIHZv
aWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSB1c3RyaW5nVG9TdHJpbmcodmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXN1bHQgPSB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiB9CiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8U3RyaW5nPiYKICAgICAgICAg
SlNWYWx1ZSBpdGVtVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsKICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByZXN1bHQu
YXBwZW5kKHVzdHJpbmdUb1N0cmluZyhpdGVtVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbVZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CiAgICAgfQogfQogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBKU0RpY3Rp
b25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEhhc2hT
ZXQ8QXRvbWljU3QKICAgICAgICAgSlNWYWx1ZSBpdGVtVmFsdWUgPSBvYmplY3QtPmdldChleGVj
LCBpKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICByZXN1bHQuYWRkKHVzdHJpbmdUb0F0b21pY1N0cmluZyhpdGVtVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIHJlc3VsdC5hZGQoaXRlbVZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgfQogfQogI2VuZGlmCkBAIC0y
MDIsNyArMjAyLDcgQEAgYm9vbCBKU0RpY3Rpb25hcnk6OmdldFdpdGhVbmRlZmluZWRPck51bGxD
aGVjayhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW4KICAgICBpZiAodHJ5R2V0UHJv
cGVydHkocHJvcGVydHlOYW1lLnV0ZjgoKS5kYXRhKCksIHZhbHVlKSAhPSBQcm9wZXJ0eUZvdW5k
IHx8IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJlc3VsdCA9IHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhtX2V4ZWMpLT52YWx1
ZShtX2V4ZWMpKTsKKyAgICByZXN1bHQgPSB2YWx1ZS50b1dURlN0cmluZyhtX2V4ZWMpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwCmluZGV4IDY0N2I0NDYxZWFlNDBhYjQ1YmI2MjVlYmM5YmYyN2ZlNDVh
ZDQ5ZmQuLjU0ODg0MDRiNDhhNDdjOTc5NWZmMDNlMDIyYjZhZGY2OTVjNjRiNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCkBAIC02OSwx
MiArNjksMTIgQEAgdm9pZCBKU0RvY3VtZW50OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
VVN0cmluZyBsb2NhdGlvblN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgbG9jYXRpb25TdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoTG9jYXRpb24qIGxvY2F0aW9uID0gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5sb2NhdGlvbigpKQotICAgICAgICBsb2NhdGlvbi0+c2V0SHJlZih1c3RyaW5nVG9T
dHJpbmcobG9jYXRpb25TdHJpbmcpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2lu
ZG93KGV4ZWMpKTsKKyAgICAgICAgbG9jYXRpb24tPnNldEhyZWYobG9jYXRpb25TdHJpbmcsIGFj
dGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQogCiBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBE
b2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Vycm9ySGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9y
SGFuZGxlci5jcHAKaW5kZXggNWI0YjU5ZjhmZTBiOTg0MmFjYzE2YjRiMjQ3YTYwYjEzYzY0ZGFk
MS4uYjY1OTI1NjAwMWQwNmZiNzUzZDdkZmQ1MzllMDhiNmQyOTRkMjM5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcApAQCAtODUsOCArODUsOCBA
QCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJl
bnRFdmVudChldmVudCk7CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgZXJyb3JFdmVudC0+bWVzc2FnZSgpKSk7
Ci0gICAgICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIGVycm9yRXZlbnQtPmZpbGVuYW1l
KCkpKTsKKyAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgZXJyb3JF
dmVudC0+bWVzc2FnZSgpKSk7CisgICAgICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hl
KGV4ZWMsIGVycm9yRXZlbnQtPmZpbGVuYW1lKCkpKTsKICAgICAgICAgYXJncy5hcHBlbmQoanNO
dW1iZXIoZXJyb3JFdmVudC0+bGluZW5vKCkpKTsKIAogICAgICAgICBKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDc3OWU4ZDczOWQ1MzY5MzNi
NjY3ZjY0MjJkNDVhZTRiYjMzNzc4NTkuLjVlZWI0MTAxODFhNGIyODM4MGY2MDEzOGQzNmFkYWNj
N2RlZDBlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAg
ICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKCFyZXR2YWwuaXNVbmRlZmluZWRPck51bGwoKSAmJiBldmVudC0+c3Rv
cmVzUmVzdWx0QXNTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICBldmVudC0+c3RvcmVSZXN1bHQo
dXN0cmluZ1RvU3RyaW5nKHJldHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAg
ICAgICAgICAgICAgICBldmVudC0+c3RvcmVSZXN1bHQocmV0dmFsLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CiAgICAgICAgICAgICBpZiAobV9pc0F0dHJpYnV0ZSkgewogICAgICAgICAg
ICAgICAgIGlmIChyZXR2YWwuaXNGYWxzZSgpKQogICAgICAgICAgICAgICAgICAgICBldmVudC0+
cHJldmVudERlZmF1bHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggODU0NjcyOWY0ZDc1MzkwMDI4
MTI0NzkwYTZmN2UwODY3ZDllYTRmNi4uNTU2MWJjYWQwYjczNzBhNWQwN2NjZTI1MmMzY2ZmMDcy
ODhmZDgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgewogICAgICAgICAv
LyBTdXBwb3J0IGZvciBkb2N1bWVudC5hbGwoPGluZGV4PikgZXRjLgotICAgICAgICBVU3RyaW5n
IHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSB0b1VJbnQzMkZyb21TdHJp
bmdJbXBsKHN0cmluZy5pbXBsKCkpOwogICAgICAgICBpZiAoaW5kZXggIT0gUHJvcGVydHlOYW1l
OjpOb3RBbkluZGV4KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4
ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPml0ZW0oaW5kZXgp
KSk7CkBAIC04MCwxMCArODAsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICAv
LyBUaGUgc2Vjb25kIGFyZywgaWYgc2V0LCBpcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gd2Ugd2Fu
dAotICAgIFVTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwotICAgIHVuc2lnbmVkIGluZGV4ID0gdG9VSW50MzJGcm9tU3RyaW5nSW1w
bChleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuaW1wbCgpKTsK
KyAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIHVuc2lnbmVkIGluZGV4ID0gdG9VSW50MzJGcm9tU3RyaW5nSW1wbChl
eGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKS5pbXBsKCkpOwogICAgIGlmIChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpIHsKLSAgICAgICAgaWYgKE5vZGUqIG5vZGUg
PSBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1XaXRoSW5kZXgodXN0cmluZ1RvQXRvbWljU3RyaW5nKHN0
cmluZyksIGluZGV4KSkKKyAgICAgICAgaWYgKE5vZGUqIG5vZGUgPSBjb2xsZWN0aW9uLT5uYW1l
ZEl0ZW1XaXRoSW5kZXgoc3RyaW5nLCBpbmRleCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgbm9kZSkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzZjlhMzlmZDI1NjEzNzBiODA5MGY5NDMy
N2YzMWY1NWYwZjVjMmM4Li44MDIxMmE5ZWU5MTlmMDFhMWQ3OTdmM2IwODQ0M2IyZmM0ZWVhNzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52
YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2Fu
dmFzRWxlbWVudCo+KGltcGwoKSk7Ci0gICAgY29uc3QgVVN0cmluZyYgY29udGV4dElkID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0
cmluZyYgY29udGV4dElkID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIFJlZlB0cjxDYW52YXNDb250ZXh0QXR0cmlidXRlcz4gYXR0cnM7CiAjaWYg
RU5BQkxFKFdFQkdMKQogICAgIGlmIChjb250ZXh0SWQgPT0gImV4cGVyaW1lbnRhbC13ZWJnbCIg
fHwgY29udGV4dElkID09ICJ3ZWJraXQtM2QiKSB7CkBAIC03NCw3ICs3NCw3IEBAIEpTVmFsdWUg
SlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IH0KICAgICB9CiAjZW5kaWYKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0g
Y2FudmFzLT5nZXRDb250ZXh0KHVzdHJpbmdUb1N0cmluZyhjb250ZXh0SWQpLCBhdHRycy5nZXQo
KSk7CisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IGNhbnZhcy0+Z2V0Q29u
dGV4dChjb250ZXh0SWQsIGF0dHJzLmdldCgpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAg
IHJldHVybiBqc051bGwoKTsKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihjb250ZXh0KSk7CkBAIC0xMDUsNyArMTA1LDcgQEAgSlNW
YWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojp0b0RhdGFVUkwoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBjYW52
YXMtPnRvRGF0YVVSTCh0eXBlLCBxdWFsaXR5UHRyLCBlYykpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gSlNDOjpqc1N0cmluZyhleGVjLCBjYW52YXMtPnRvRGF0YVVSTCh0eXBlLCBxdWFsaXR5UHRy
LCBlYykpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcAppbmRleCA1ZTJmMzVlZmQzOTM4YmJhYTBiOTU4OWY5MzFkM2FjZDc3OTZiNzVh
Li4zYzY4OTNiMDA4Nzk0OTA1M2ZmZjMzZDVjMzQxZjUxOGEwNjJhOGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0x
MzYsMTUgKzEzNiwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZG9jdW1lbnRXcml0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIE5ld2xpbgogCiAgICAgc2l6ZV90IHNp
emUgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAKLSAgICBVU3RyaW5nIGZpcnN0U3RyaW5nID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIFNlZ21l
bnRlZFN0cmluZyBzZWdtZW50ZWRTdHJpbmcgPSB1c3RyaW5nVG9TdHJpbmcoZmlyc3RTdHJpbmcp
OworICAgIFN0cmluZyBmaXJzdFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTZWdtZW50ZWRTdHJpbmcgc2VnbWVudGVkU3RyaW5nID0g
Zmlyc3RTdHJpbmc7CiAgICAgaWYgKHNpemUgIT0gMSkgewogICAgICAgICBpZiAoIXNpemUpCiAg
ICAgICAgICAgICBzZWdtZW50ZWRTdHJpbmcuY2xlYXIoKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAg
ICAgIFVTdHJpbmcgc3Vic2VxdWVudFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KGkpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICAgICAgICAgICAgICBzZWdtZW50ZWRTdHJpbmcuYXBw
ZW5kKFNlZ21lbnRlZFN0cmluZyh1c3RyaW5nVG9TdHJpbmcoc3Vic2VxdWVudFN0cmluZykpKTsK
KyAgICAgICAgICAgICAgICBTdHJpbmcgc3Vic2VxdWVudFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50
KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgICAgICBzZWdtZW50
ZWRTdHJpbmcuYXBwZW5kKFNlZ21lbnRlZFN0cmluZyhzdWJzZXF1ZW50U3RyaW5nKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzNmZkOGI3NDZh
ZWYzZTM3MzA2ZDJiMThkOTdhZGMwNjBkZDA1NTAwLi41MjBjZTY1MGIzYTJjMmRjYTQ5NjljNWI3
YWFiYTY2MjAwMjFmM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgSlNWYWx1
ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiAgICAgaWYgKCFpbnB1dC0+Y2FuSGF2ZVNlbGVjdGlvbigpKQogICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW5w
dXQtPnNlbGVjdGlvbkRpcmVjdGlvbigpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgaW5wdXQtPnNlbGVjdGlvbkRpcmVjdGlvbigpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1
dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxl
Y3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaW5wdXQtPnNldFNlbGVjdGlvbkRpcmVjdGlvbih1c3RyaW5n
VG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgaW5wdXQt
PnNldFNlbGVjdGlvbkRpcmVjdGlvbih2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
OwogfQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoRXhl
Y1N0YXRlKiBleGVjKQpAQCAtOTcsNyArOTcsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVu
dDo6c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgaW50IHN0YXJ0ID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKICAgICBpbnQgZW5kID0gZXhlYy0+YXJn
dW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAgICBTdHJpbmcgZGlyZWN0aW9uID0gdXN0cmluZ1Rv
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDIpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Cisg
ICAgU3RyaW5nIGRpcmVjdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKIAogICAgIGlucHV0LT5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kLCBk
aXJlY3Rpb24pOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDNmOTA3YWM3NTBkMWEwNGQ5NDY0
ZDRjODQ3NjZmMTI3MWNhOWQ0MmMuLjc3MTEzYzcwZjJiMDg1MGVmNzdiMzc4N2FlM2Q4ZDhkOWRi
NTVkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSURCQW55KiBpZGJBbnkpCiAgICAgY2FzZSBJREJB
bnk6Ok51bGxUeXBlOgogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgY2FzZSBJREJBbnk6
OlN0cmluZ1R5cGU6Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBpZGJBbnktPnN0cmlu
ZygpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGlkYkFueS0+c3Ry
aW5nKCkpOwogICAgIGNhc2UgSURCQW55OjpET01TdHJpbmdMaXN0VHlwZToKICAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGJBbnktPmRvbVN0cmluZ0xpc3QoKSk7CiAg
ICAgY2FzZSBJREJBbnk6OklEQkN1cnNvclR5cGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQktleUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQktleUN1c3RvbS5jcHAKaW5kZXggYjJiNzhlYzU3NmM3NzY3NmI2YTk4ZmJlZjlh
MzgzZmFjMGFiZjFkNS4uNGFmYTU1MGI1Yjc2MTZiODVmYjA1NGFhOTdlNzAxMTYxMDkxNjAzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJLZXlDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCS2V5Q3VzdG9tLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBJREJLZXkqIGtleSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKG91dEFycmF5KTsKICAgICAgICAgfQogICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgot
ICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywga2V5LT5zdHJpbmcoKSk7CisgICAgICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBrZXktPnN0cmluZygpKTsKICAgICBjYXNlIElE
QktleTo6RGF0ZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0RhdGVPck51bGwoZXhlYywga2V5LT5k
YXRlKCkpOwogICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmlu
ZGV4IDE0MTM3NTA3OGE3OTRiYWM0ZDJjYWIzZWRjYmZmZmMwZGEyOGFlMTEuLjllZmVkNDZiZjg2
ZmE2ODk1YjRkYjNlNmEwZWI5NTY0NTUwZDUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTEw
OSw4ICsxMDksOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0
cnVjdG9yTmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b1RoaXNP
YmplY3QoZXhlYyk7Ci0gICAgVVN0cmluZyByZXN1bHQgPSB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5jbGFzc05hbWUodGhpc09iamVjdCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHJl
c3VsdCk7CisgICAgU3RyaW5nIHJlc3VsdCA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmNs
YXNzTmFtZSh0aGlzT2JqZWN0KTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
cmVzdWx0KTsKIH0KIAogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXNIVE1MQWxsQ29s
bGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNWYWx1ZSBKU0lu
amVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBp
bnQgbGluZU51bWJlciA9IHNvdXJjZUNvZGUtPmZpcnN0TGluZSgpOwogICAgIGlmIChsaW5lTnVt
YmVyKQogICAgICAgICBsaW5lTnVtYmVyIC09IDE7IC8vIEluIHRoZSBpbnNwZWN0b3IgcHJvdG9j
b2wgYWxsIHBvc2l0aW9ucyBhcmUgMC1iYXNlZCB3aGlsZSBpbiBTb3VyY2VDb2RlIHRoZXkgYXJl
IDEtYmFzZWQKLSAgICBVU3RyaW5nIHNjcmlwdElkID0gVVN0cmluZzo6bnVtYmVyKHNvdXJjZUNv
ZGUtPnByb3ZpZGVyKCktPmFzSUQoKSk7CisgICAgU3RyaW5nIHNjcmlwdElkID0gU3RyaW5nOjpu
dW1iZXIoc291cmNlQ29kZS0+cHJvdmlkZXIoKS0+YXNJRCgpKTsKIAogICAgIEpTT2JqZWN0KiBs
b2NhdGlvbiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwogICAgIGxvY2F0aW9uLT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lTnVtYmVyIiks
IGpzTnVtYmVyKGxpbmVOdW1iZXIpKTsKQEAgLTE3OCwxMiArMTc4LDEyIEBAIEpTVmFsdWUgSlNJ
bmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAg
ICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAgICAgcmVz
dWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsb2Nh
dGlvbiIpLCBsb2NhdGlvbik7Ci0gICAgVVN0cmluZyBuYW1lID0gZnVuY3Rpb24tPm5hbWUoZXhl
Yyk7CisgICAgU3RyaW5nIG5hbWUgPSBmdW5jdGlvbi0+bmFtZShleGVjKTsKICAgICBpZiAoIW5h
bWUuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgbmFtZSkpOwotICAg
IFVTdHJpbmcgZGlzcGxheU5hbWUgPSBmdW5jdGlvbi0+ZGlzcGxheU5hbWUoZXhlYyk7CisgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAibmFtZSIpLCBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBuYW1lKSk7CisgICAgU3RyaW5nIGRp
c3BsYXlOYW1lID0gZnVuY3Rpb24tPmRpc3BsYXlOYW1lKGV4ZWMpOwogICAgIGlmICghZGlzcGxh
eU5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIElkZW50aWZpZXIoZXhlYywgImRpc3BsYXlOYW1lIiksIGpzU3RyaW5nKGV4ZWMsIGRp
c3BsYXlOYW1lKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihleGVjLCAiZGlzcGxheU5hbWUiKSwganNTdHJpbmdXaXRoQ2FjaGUoZXhl
YywgZGlzcGxheU5hbWUpKTsKICAgICAvLyBGSVhNRTogcHJvdmlkZSBmdW5jdGlvbiBzY29wZSBk
YXRhIGluICJzY29wZXNSYXciIHByb3BlcnR5IHdoZW4gSlNDIHN1cHBvcnRzIGl0LgogICAgIC8v
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODcxOTIKICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtMjYwLDcgKzI2MCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlw
dEhvc3Q6OmRhdGFiYXNlSWQoRXhlY1N0YXRlKiBleGVjKQogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gdG9EYXRhYmFzZShleGVjLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKGRhdGFiYXNlKQotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1w
bCgpLT5kYXRhYmFzZUlkSW1wbChkYXRhYmFzZSkpOworICAgICAgICByZXR1cm4ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgaW1wbCgpLT5kYXRhYmFzZUlkSW1wbChkYXRhYmFzZSkpOwogI2VuZGlm
CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0yNzEsNyArMjcxLDcgQEAgSlNWYWx1
ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlkKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgU3RvcmFnZSogc3RvcmFnZSA9IHRvU3RvcmFn
ZShleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKHN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBpbXBsKCktPnN0b3JhZ2VJZEltcGwoc3RvcmFnZSkpOworICAgICAgICBy
ZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbCgpLT5zdG9yYWdlSWRJbXBsKHN0b3Jh
Z2UpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGU2
M2Y0OTc0Y2U3NzIwNDA1NmJjZTRiODc1NjlmZmYyMTQ5YzExN2UuLmNkZTc4NzU1MGViNzgxODAz
NDc3ZWJkYjgxNmRkM2NiYTU3NGU2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
U2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIFMKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRT
dGF0ZSk7CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNlKHN0cmluZ1Rv
VVN0cmluZyhzb3VyY2UpKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBtYWtlU291cmNl
KHNvdXJjZSk7CiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwog
ICAgIEpTVmFsdWUgZ2xvYmFsVGhpc1ZhbHVlID0gc2NyaXB0U3RhdGUtPmdsb2JhbFRoaXNWYWx1
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3Rv
ckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggMjk3OGRlYWYwNGRjOGI2MGY0ODhi
YzE3OGQyODY3YzE3ZjM1MzI5ZS4uODllNzcyYTI5YmY1MzQ2NDZiOGJhMTVhYjdhMWQwMjc5OTkw
MTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAtNjgsNyArNjgsNyBAQCBKU1ZhbHVl
IEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpwbGF0Zm9ybShFeGVjU3RhdGUqIGV4ZWNTdGF0ZSkK
ICNlbHNlCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAo
QVNDSUlMaXRlcmFsKCJ1bmtub3duIikpKTsKICNlbmRpZgotICAgIHJldHVybiBqc1N0cmluZyhl
eGVjU3RhdGUsIHBsYXRmb3JtKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlY1N0
YXRlLCBwbGF0Zm9ybSk7CiB9CiAKIEpTVmFsdWUgSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBv
cnQoRXhlY1N0YXRlKiBleGVjU3RhdGUpCkBAIC04Miw3ICs4Miw3IEBAIEpTVmFsdWUgSlNJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6OnBvcnQoRXhlY1N0YXRlKiBleGVjU3RhdGUpCiAjZWxzZQogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwb3J0LCAoQVNDSUlMaXRlcmFsKCJ1
bmtub3duIikpKTsKICNlbmRpZgotICAgIHJldHVybiBqc1N0cmluZyhleGVjU3RhdGUsIHBvcnQp
OworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjU3RhdGUsIHBvcnQpOwogfQogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyB2b2lkIHBv
cHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBD
b250ZXh0TWVuCiAgICAgICAgIGlmICghdHlwZS5pc1N0cmluZygpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgU3RyaW5nIHR5cGVTdHJpbmcgPSB1c3RyaW5nVG9TdHJpbmcodHlw
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBTdHJpbmcgdHlwZVN0cmlu
ZyA9IHR5cGUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBpZiAodHlwZVN0
cmluZyA9PSAic2VwYXJhdG9yIikgewogICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0o
U2VwYXJhdG9yVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uLApAQCAtMTExLDEyICsxMTEsMTIgQEAgc3RhdGljIHZv
aWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJy
YXksIENvbnRleHRNZW4KICAgICAgICAgICAgIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhleGVj
LCBzdWJJdGVtc0FycmF5LCBzdWJNZW51KTsKICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBp
dGVtKFN1Ym1lbnVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4
dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c3RyaW5nVG9TdHJpbmcobGFiZWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJNZW51KTsK
ICAgICAgICAgICAgIG1lbnUuYXBwZW5kSXRlbShpdGVtKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIENvbnRleHRNZW51QWN0aW9uIHR5cGVkSWQgPSBzdGF0aWNfY2FzdDxDb250ZXh0
TWVudUFjdGlvbj4oQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyArIGlkLnRvSW50MzIoZXhl
YykpOwotICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIG1lbnVJdGVtKCh0eXBlU3RyaW5nID09
ICJjaGVja2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZSksIHR5cGVkSWQs
IHVzdHJpbmdUb1N0cmluZyhsYWJlbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAg
ICAgICAgICAgIENvbnRleHRNZW51SXRlbSBtZW51SXRlbSgodHlwZVN0cmluZyA9PSAiY2hlY2ti
b3giID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGUpLCB0eXBlZElkLCBsYWJlbC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAgICAgICAgaWYgKCFlbmFibGVkLmlz
VW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgbWVudUl0ZW0uc2V0RW5hYmxlZChlbmFibGVk
LnRvQm9vbGVhbihleGVjKSk7CiAgICAgICAgICAgICBpZiAoIWNoZWNrZWQuaXNVbmRlZmluZWQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50ZW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnRlbnRDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNjBhMjE0YTczODcxYmExMDg2NDJjMTY4ZDBiYmRjYWZkNjQzZWM5NC4uNGYy
OWM3NDJhMTc1ODQzZjEyOGI4MTc5MmZjN2VjMDgyMzdlYWQ2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnRlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnRlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTYxLDExICs2
MSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTSW50ZW50Q29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTSW50ZW50KEV4ZWNTdGF0ZSogZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGlt
cGwuZ2V0KCkpKSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb24odXN0cmluZ1Rv
U3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5l
ZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAg
ICBjb25zdCBTdHJpbmcgYWN0aW9uKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERl
ZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvV1RGU3RyaW5nKGV4ZWMpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBjb25zdCBTdHJpbmcmIHR5cGUodXN0cmluZ1Rv
U3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5l
ZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAg
ICBjb25zdCBTdHJpbmcgdHlwZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZh
dWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1dURlN0cmluZyhleGVjKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRleCAxMjQ5OWZhYzkw
ZTNhNTBlZjk4ZjRmOWMwNDg0ZTVhNDgxMjY4YjQzLi4xNTlmMTg0MTY4ODRlMDMzNGZkMDhiMDUz
NTMzYzZmMzRmMmY3ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAgLTYzLDkgKzYzLDkgQEAg
SlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnR5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAogewogICAgIHN3aXRjaCAoaW1wbCgpLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBEZWJ1Z2dl
ckNhbGxGcmFtZTo6RnVuY3Rpb25UeXBlOgotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIFVTdHJpbmcoImZ1bmN0aW9uIikpOworICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiZnVuY3Rpb24iKSk7CiAgICAgICAgIGNhc2UgRGVidWdnZXJDYWxs
RnJhbWU6OlByb2dyYW1UeXBlOgotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFVT
dHJpbmcoInByb2dyYW0iKSk7CisgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgQVND
SUlMaXRlcmFsKCJwcm9ncmFtIikpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmNwcAppbmRleCA4ODc5NzI3ZTI4ZGVjMzVjMTIyYzZkYTZjMzVlYWExOTNiMzI0ODVmLi44N2Rj
NDkyNTM3ZGUzNTdhYmU4ZGJlNzhjNGFkN2JiMDgzYjAxN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcApAQCAtOTQsMTAgKzk0
LDEwIEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXplSlNGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OwotICAgIGFyZ3MuYXBwZW5kKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBzdHJpbmdUb1VTdHJp
bmcobV9ldmVudFBhcmFtZXRlck5hbWUpKSk7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhl
YywgbV9jb2RlKSk7CisgICAgYXJncy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIG1f
ZXZlbnRQYXJhbWV0ZXJOYW1lKSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgbV9jb2RlKSk7CiAKLSAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IGNvbnN0cnVjdEZ1
bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgYXJncywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcobV9mdW5jdGlv
bk5hbWUpKSwgc3RyaW5nVG9VU3RyaW5nKG1fc291cmNlVVJMKSwgbV9wb3NpdGlvbik7IC8vIEZJ
WE1FOiBpcyBnbG9iYWxFeGVjIG9rPworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gY29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsIG1fZnVuY3Rpb25OYW1lKSwgbV9z
b3VyY2VVUkwsIG1fcG9zaXRpb24pOyAvLyBGSVhNRTogaXMgZ2xvYmFsRXhlYyBvaz8KICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlv
bihleGVjKTsKICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggNWNiMGMwNzNlNGUx
N2EwYzc0ZmMwNTlmMGQyODVlYmY2ZjU1NDA2NS4uMTRiZDM1NzQ5NWQ5MTQyZDJiMmZlNDg1OTNi
Yjg0ODAwYzRmODc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAKQEAgLTE3OSw3NiArMTc5LDc2IEBAIGJvb2wgSlNMb2NhdGlvbjo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hCiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0SHJlZihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgVVN0cmluZyBocmVmID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBocmVmID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGltcGwoKS0+c2V0SHJlZih1c3RyaW5nVG9TdHJpbmcoaHJlZiksIGFjdGl2ZURPTVdpbmRvdyhl
eGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+c2V0SHJlZihocmVmLCBh
Y3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKIH0KIAogdm9pZCBK
U0xvY2F0aW9uOjpzZXRQcm90b2NvbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgVVN0cmluZyBwcm90b2NvbCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgcHJvdG9jb2wgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbCgpLT5zZXRQcm90b2NvbCh1c3RyaW5nVG9T
dHJpbmcocHJvdG9jb2wpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4
ZWMpLCBlYyk7CisgICAgaW1wbCgpLT5zZXRQcm90b2NvbChwcm90b2NvbCwgYWN0aXZlRE9NV2lu
ZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7CiB9CiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0SG9zdChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVVN0cmluZyBob3N0ID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBob3N0ID0gdmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGltcGwoKS0+c2V0SG9zdCh1c3RyaW5nVG9TdHJpbmcoaG9zdCksIGFjdGl2
ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+c2V0
SG9zdChob3N0LCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsK
IH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRIb3N0bmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7Ci0gICAgVVN0cmluZyBob3N0bmFtZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgaG9zdG5hbWUgPSB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRIb3N0bmFtZSh1c3RyaW5nVG9TdHJpbmcoaG9zdG5hbWUp
LCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKKyAgICBpbXBs
KCktPnNldEhvc3RuYW1lKGhvc3RuYW1lLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9N
V2luZG93KGV4ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRQb3J0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIHBvcnQgPSB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHBvcnQgPSB2YWx1ZS50b1dURlN0cmlu
ZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBpbXBsKCktPnNldFBvcnQodXN0cmluZ1RvU3RyaW5nKHBvcnQpLCBhY3RpdmVET01XaW5k
b3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKKyAgICBpbXBsKCktPnNldFBvcnQocG9y
dCwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CiB9CiAKIHZv
aWQgSlNMb2NhdGlvbjo6c2V0UGF0aG5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQogewotICAgIFVTdHJpbmcgcGF0aG5hbWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgU3RyaW5nIHBhdGhuYW1lID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIGltcGwoKS0+c2V0UGF0aG5hbWUodXN0cmluZ1RvU3RyaW5nKHBhdGhuYW1lKSwgYWN0aXZl
RE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAgaW1wbCgpLT5zZXRQ
YXRobmFtZShwYXRobmFtZSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhl
eGVjKSk7CiB9CiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0U2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIHBhdGhuYW1lID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwYXRobmFtZSA9IHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldFNlYXJjaCh1c3RyaW5nVG9TdHJpbmcocGF0aG5h
bWUpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKKyAgICBp
bXBsKCktPnNldFNlYXJjaChwYXRobmFtZSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERP
TVdpbmRvdyhleGVjKSk7CiB9CiAKIHZvaWQgSlNMb2NhdGlvbjo6c2V0SGFzaChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVVN0cmluZyBoYXNoID0gdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBoYXNoID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0SGFzaCh1c3RyaW5nVG9TdHJpbmcoaGFzaCksIGFj
dGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+
c2V0SGFzaChoYXNoLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMp
KTsKIH0KIAogSlNWYWx1ZSBKU0xvY2F0aW9uOjpyZXBsYWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICBVU3RyaW5nIHVybFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgaW1wbCgpLT5yZXBsYWNlKHVz
dHJpbmdUb1N0cmluZyh1cmxTdHJpbmcpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9N
V2luZG93KGV4ZWMpKTsKKyAgICBpbXBsKCktPnJlcGxhY2UodXJsU3RyaW5nLCBhY3RpdmVET01X
aW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KIApAQCAtMjYwLDEwICsyNjAsMTAgQEAgSlNWYWx1ZSBKU0xvY2F0aW9uOjpyZWxv
YWQoRXhlY1N0YXRlKiBleGVjKQogCiBKU1ZhbHVlIEpTTG9jYXRpb246OmFzc2lnbihFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgVVN0cmluZyB1cmxTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGltcGwo
KS0+YXNzaWduKHVzdHJpbmdUb1N0cmluZyh1cmxTdHJpbmcpLCBhY3RpdmVET01XaW5kb3coZXhl
YyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKKyAgICBpbXBsKCktPmFzc2lnbih1cmxTdHJpbmcs
IGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0yNzMsNyArMjczLDcgQEAgSlNWYWx1ZSBKU0xvY2F0
aW9uOjp0b1N0cmluZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIWZyYW1lIHx8
ICFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBpbXBsKCktPnRvU3Ry
aW5nKCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCktPnRvU3Ry
aW5nKCkpOwogfQogCiBib29sIEpTTG9jYXRpb25Qcm90b3R5cGU6OnB1dERlbGVnYXRlKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmgKaW5kZXggODM4ZTNlZGIzOTIwZjU2YWU1ZDZlM2E4MGIyNjYwNDIzNTljMzRj
Zi4uOTYwY2JiZjUzMDA5MTY3NDZiY2E1ZjVhZDQyNGFhNDY1ZGJmY2FmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lOwogICAgICAg
ICBpbnQgbGluZU51bWJlciA9IDE7CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBKU0M6OkNhbGxU
eXBlSlMpIHsKLSAgICAgICAgICAgIHJlc291cmNlTmFtZSA9IHVzdHJpbmdUb1N0cmluZyhjYWxs
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpKTsKKyAgICAgICAgICAgIHJl
c291cmNlTmFtZSA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+c291cmNlVVJMKCk7
CiAgICAgICAgICAgICBsaW5lTnVtYmVyID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxl
LT5saW5lTm8oKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXNvdXJjZU5hbWUgPSAi
dW5kZWZpbmVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcAppbmRleCA2NGZjZWY4OGE1MjEyMmFhOTk5NGZlZmUwZDAwNmY0NGFh
YjI3MWFlLi5lNDRjZGRkYTkwZjIzYjE0NWJkN2EzNWVhZTkyMzBmYzkzMTY4NGYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIEpTVmFsdWUgSlNNZXNzYWdlRXZlbnQ6OmRhdGEoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpE
YXRhVHlwZVN0cmluZzoKLSAgICAgICAgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgZXZlbnQtPmRh
dGFBc1N0cmluZygpKTsKKyAgICAgICAgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
ZXZlbnQtPmRhdGFBc1N0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1lc3Nh
Z2VFdmVudDo6RGF0YVR5cGVCbG9iOgpAQCAtMTAyLDExICsxMDIsMTEgQEAgSlNWYWx1ZSBKU01l
c3NhZ2VFdmVudDo6cG9ydHMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogCiBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGhhbmRsZUluaXRNZXNzYWdlRXZlbnQoSlNNZXNzYWdlRXZlbnQqIGpzRXZlbnQsIEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQogewotICAgIGNvbnN0IFVTdHJpbmcmIHR5cGVBcmcgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3Ry
aW5nJiB0eXBlQXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGJvb2wgY2FuQnViYmxlQXJnID0gZXhlYy0+YXJndW1lbnQoMSkudG9Cb29sZWFu
KGV4ZWMpOwogICAgIGJvb2wgY2FuY2VsYWJsZUFyZyA9IGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9v
bGVhbihleGVjKTsKLSAgICBjb25zdCBVU3RyaW5nJiBvcmlnaW5BcmcgPSBleGVjLT5hcmd1bWVu
dCg0KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgY29uc3QgVVN0cmluZyYgbGFz
dEV2ZW50SWRBcmcgPSBleGVjLT5hcmd1bWVudCg1KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CisgICAgY29uc3QgU3RyaW5nIG9yaWdpbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDQpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgbGFzdEV2ZW50SWRBcmcg
PSBleGVjLT5hcmd1bWVudCg1KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgRE9N
V2luZG93KiBzb3VyY2VBcmcgPSB0b0RPTVdpbmRvdyhleGVjLT5hcmd1bWVudCg2KSk7CiAgICAg
T3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0czsKICAgICBPd25QdHI8QXJyYXlC
dWZmZXJBcnJheT4gYXJyYXlCdWZmZXJzOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBKU0M6
OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01lc3NhZ2VFdmVudCoganNFdmVudCwg
SlNDOjpFeGVjU3RhCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgTWVzc2Fn
ZUV2ZW50KiBldmVudCA9IHN0YXRpY19jYXN0PE1lc3NhZ2VFdmVudCo+KGpzRXZlbnQtPmltcGwo
KSk7Ci0gICAgZXZlbnQtPmluaXRNZXNzYWdlRXZlbnQodXN0cmluZ1RvQXRvbWljU3RyaW5nKHR5
cGVBcmcpLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcsIGRhdGFBcmcsIHVzdHJpbmdUb1N0
cmluZyhvcmlnaW5BcmcpLCB1c3RyaW5nVG9TdHJpbmcobGFzdEV2ZW50SWRBcmcpLCBzb3VyY2VB
cmcsIG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCkpOworICAgIGV2ZW50LT5pbml0TWVzc2FnZUV2ZW50
KHR5cGVBcmcsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0YUFyZywgb3JpZ2luQXJn
LCBsYXN0RXZlbnRJZEFyZywgc291cmNlQXJnLCBtZXNzYWdlUG9ydHMucmVsZWFzZSgpKTsKICAg
ICBqc0V2ZW50LT5tX2RhdGEuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwganNFdmVudCwgZGF0YUFy
Zy5qc1ZhbHVlKCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20u
Y3BwCmluZGV4IDA5ZmMzM2Q3NGIyY2Y3M2JlNjM0YmI2ZDJhNDhlMDg5NWE1ZmYzZjguLmE3MDcw
OWE5OTg5MmYwNjEzZTU4MmRjYmQxNDU0NTkyZmJkMzgzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01pY3JvRGF0YUl0ZW1WYWx1ZUN1c3RvbS5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWljcm9EYXRhSXRlbVZhbHUKICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogICAgIGlmIChpdGVtVmFsdWUtPmlzTm9kZSgpKQogICAgICAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZS0+Z2V0Tm9kZSgpKTsKLSAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgaXRlbVZhbHVlLT5nZXRTdHJpbmcoKSk7CisgICAgcmV0dXJuIGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGl0ZW1WYWx1ZS0+Z2V0U3RyaW5nKCkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRS
b3dMaXN0Q3VzdG9tLmNwcAppbmRleCA0ODAwMzU1NjUzZmE4MzE1YzMyNjEzMDBlNGRkMGZjNWVl
NTI0YzZjLi4wZDA5Mzc1ZDE5M2VmMWZjZmNkMGNhNjkxYjFlYmE5ZGE3NWY0Y2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93
TGlzdEN1c3RvbS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJv
d0xpc3Q6Oml0ZW0oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgICAgIHN3aXRjaCAodmFsdWUudHlw
ZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpTdHJpbmdWYWx1ZToKLSAgICAgICAg
ICAgICAganNWYWx1ZSA9IGpzU3RyaW5nKGV4ZWMsIHZhbHVlLnN0cmluZygpKTsKKyAgICAgICAg
ICAgICAganNWYWx1ZSA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHZhbHVlLnN0cmluZygpKTsK
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBTUUxWYWx1ZTo6TnVsbFZhbHVl
OgogICAgICAgICAgICAgICBqc1ZhbHVlID0ganNOdWxsKCk7CkBAIC03NSw3ICs3NSw3IEBAIEpT
VmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBvYmpl
Y3QtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgc3RyaW5n
VG9VU3RyaW5nKG1faW1wbC0+Y29sdW1uTmFtZXMoKVtpXSkpLCBqc1ZhbHVlLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgICAgICBvYmplY3QtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRh
KCksIElkZW50aWZpZXIoZXhlYywgbV9pbXBsLT5jb2x1bW5OYW1lcygpW2ldKSwganNWYWx1ZSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICB9CiAKICAgICByZXR1cm4gb2JqZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9t
LmNwcAppbmRleCBhM2MxOThmODU3MWEyYTY2ZDZhMjJjMDQ3NGMwZTI3NWY1YzM4NjdmLi43YTkw
YzQzYmYyMmU5Nzg5MDI1Y2JmMzA1MDY3MmRmMDFiYWZiNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBKU1ZhbHVlIEpTU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgc3FsU3RhdGVtZW50ID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgU3RyaW5nIHNxbFN0YXRlbWVudCA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC04MSw3
ICs4MSw3IEBAIEpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS5hc051bWJlcigp
KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFy
Z3VtZW50IHRvIGEgc3RyaW5nIGFuZCBhcHBlbmQgaXQKLSAgICAgICAgICAgICAgICBzcWxWYWx1
ZXMuYXBwZW5kKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpKTsKKyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNh
Y3Rpb25TeW5jQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJh
bnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAppbmRleCA5NmMxODg0Y2I5NWJiODFlZDE3OTUzZTJmZWM4
ZTM4MjM4OWEyNzZkLi4zM2Y4NDM0NDczYzRkYzgwNTZiZTllMWM1YTZhNGMzMjZkZmYyMWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uU3lu
Y0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2Fj
dGlvblN5bmNDdXN0b20uY3BwCkBAIC00OSw3ICs0OSw3IEBAIEpTVmFsdWUgSlNTUUxUcmFuc2Fj
dGlvblN5bmM6OmV4ZWN1dGVTcWwoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBTdHJpbmcgc3FsU3RhdGVtZW50ID0gdXN0cmluZ1Rv
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Cisg
ICAgU3RyaW5nIHNxbFN0YXRlbWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC04MCw3ICs4MCw3IEBAIEpTVmFsdWUgSlNTUUxUcmFu
c2FjdGlvblN5bmM6OmV4ZWN1dGVTcWwoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAg
IHNxbFZhbHVlcy5hcHBlbmQodmFsdWUuYXNOdW1iZXIoKSk7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhcmd1bWVudCB0byBhIHN0cmluZyBhbmQg
YXBwZW5kIGl0Ci0gICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh1c3RyaW5nVG9TdHJp
bmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAgICAgICAgICAg
c3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAg
ICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKaW5kZXggYzc5Yjc5
M2ZhMjYxZmUyZDg2YjI4MzM5MjY5NDgzZWU4ZWRkOTlkYS4uN2Y2ZWIyOGYwMmJkNmU2NmZlN2Ni
YWU2ZDVhYjU0OWM5MWFiMWRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcApAQCAtNjIsOCArNjIsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
U2hhcmVkV29ya2VyKAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGV4ZWMpKTsKIAotICAgIFVTdHJpbmcgc2NyaXB0VVJMID0gZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIFVTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcg
c2NyaXB0VVJMID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworICAgIFN0cmluZyBuYW1lOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAxKQog
ICAgICAgICBuYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogCkBAIC03Myw3ICs3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNTaGFyZWRXb3JrZXIoCiAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gdXNlIGJvdGggdGhlIGR5bmFtaWMgc2NvcGUgYW5kIHRoZSBsZXhp
Y2FsIHNjb3BlIChkeW5hbWljIHNjb3BlIGZvciByZXNvbHZpbmcgdGhlIHdvcmtlciBVUkwpCiAg
ICAgRE9NV2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8
U2hhcmVkV29ya2VyPiB3b3JrZXIgPSBTaGFyZWRXb3JrZXI6OmNyZWF0ZSh3aW5kb3ctPmRvY3Vt
ZW50KCksIHVzdHJpbmdUb1N0cmluZyhzY3JpcHRVUkwpLCB1c3RyaW5nVG9TdHJpbmcobmFtZSks
IGVjKTsKKyAgICBSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIgPSBTaGFyZWRXb3JrZXI6OmNy
ZWF0ZSh3aW5kb3ctPmRvY3VtZW50KCksIHNjcmlwdFVSTCwgbmFtZSwgZWMpOwogICAgIGlmIChl
YykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCBhNzkzN2IwMTQ3NmMwOTAyMDFmYzA0ZGI5OTY4
NTc5NjE1MjAwZDU1Li41MmQ3ZWM0ZTE5YjIxMjZmYjQ2ZTI4NTBiNzk3NTU0NGFhYjIyMzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAg
LTczLDcgKzczLDcgQEAgdm9pZCBKU1N0b3JhZ2U6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICBKU1N0b3JhZ2UqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNTdG9yYWdlKj4ob2JqZWN0KTsKICAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzT2JqZWN0LT5tX2ltcGwtPmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBzdHJpbmdUb1VTdHJpbmcodGhpc09iamVjdC0+bV9pbXBsLT5rZXkoaSkpKSk7Cisg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+bV9p
bXBsLT5rZXkoaSkpKTsKICAgICAgICAgCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KQEAgLTkxLDcgKzkxLDcg
QEAgYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSAm
JiBhc09iamVjdChwcm90b3R5cGUpLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdXN0
cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgU3Ry
aW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYWYwMDgwNzRmODNmMTVlZDIxYmZlZmYwOTcxMTAz
N2I3M2IyNjdkZC4uZjRhZjU1ZDgyNmI2ZWFmY2VmZjI1NDIwYzAwYjFjN2E3ZjQ2MmIwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBKU1ZhbHVl
IHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBXZWJHCiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlTnVsbDoKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVN0cmluZzoKLSAgICAg
ICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGluZm8uZ2V0U3RyaW5nKCkpOworICAgICAgICByZXR1
cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW5mby5nZXRTdHJpbmcoKSk7CiAgICAgY2FzZSBX
ZWJHTEdldEluZm86OmtUeXBlVW5zaWduZWRJbnQ6CiAgICAgICAgIHJldHVybiBqc051bWJlcihp
bmZvLmdldFVuc2lnbmVkSW50KCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdM
QnVmZmVyOgpAQCAtMjU0LDcgKzI1NCw3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAogICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5n
Q29udGV4dCo+KGltcGwoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1lID0gdXN0cmluZ1RvU3Ry
aW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAg
Y29uc3QgU3RyaW5nIG5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICBXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9uID0gY29udGV4dC0+
Z2V0RXh0ZW5zaW9uKG5hbWUpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIEpTVmFsdWUgSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQog
ICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlID0gY29udGV4dC0+Z2V0U3VwcG9ydGVkRXh0ZW5zaW9u
cygpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CiAgICAgZm9yIChzaXplX3QgaWkg
PSAwOyBpaSA8IHZhbHVlLnNpemUoKTsgKytpaSkKLSAgICAgICAgbGlzdC5hcHBlbmQoanNTdHJp
bmcoZXhlYywgdmFsdWVbaWldKSk7CisgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nV2l0aENh
Y2hlKGV4ZWMsIHZhbHVlW2lpXSkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBn
bG9iYWxPYmplY3QoKSwgbGlzdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCBjNDJiM2NiZGZlZGM2ZGQ5YTQwZjBmMTA0
MDU0MGExYjk3ODAwYjMwLi4zZTM1MGNjYzRiN2YzMWFmYzgyY2JiN2YxNGZhNzQ2YTJlNjE5N2U0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20u
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNXZWJT
b2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJTb2NrZXQoRXhlY1N0CiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgU3RyaW5nIHVybFN0
cmluZyA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4
ZWMsICJ3cm9uZyBVUkwiKSk7CiAgICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0ID0gV2Vi
U29ja2V0OjpjcmVhdGUoY29udGV4dCk7CkBAIC03NCwxNCArNzQsMTQgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNv
Y2tldChFeGVjU3QKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKICAgICAg
ICAgICAgIEpTQXJyYXkqIHByb3RvY29sc0FycmF5ID0gYXNBcnJheShwcm90b2NvbHNWYWx1ZSk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvdG9jb2xzQXJyYXktPmxl
bmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcHJvdG9jb2wgPSB1c3RyaW5n
VG9TdHJpbmcocHJvdG9jb2xzQXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gcHJvdG9jb2xzQXJy
YXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBwcm90b2NvbHMu
YXBwZW5kKHByb3RvY29sKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdlYlNvY2tldC0+
Y29ubmVjdCh1cmxTdHJpbmcsIHByb3RvY29scywgZWMpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gdXN0cmluZ1RvU3RyaW5nKHByb3RvY29sc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgICAgICBTdHJpbmcgcHJvdG9j
b2wgPSBwcm90b2NvbHNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICAgICAgd2ViU29ja2V0LT5jb25uZWN0
KHVybFN0cmluZywgcHJvdG9jb2wsIGVjKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBKU1ZhbHVlIEpT
V2ViU29ja2V0OjpzZW5kKEV4ZWNTdGF0ZSogZXhlYykKICAgICBlbHNlIGlmIChtZXNzYWdlLmlu
aGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpCiAgICAgICAgIHJlc3VsdCA9IGltcGwoKS0+c2VuZCh0
b0Jsb2IobWVzc2FnZSksIGVjKTsKICAgICBlbHNlIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZ01l
c3NhZ2UgPSB1c3RyaW5nVG9TdHJpbmcobWVzc2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgICAgICBTdHJpbmcgc3RyaW5nTWVzc2FnZSA9IG1lc3NhZ2UudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgcmVzdWx0ID0gaW1wbCgpLT5z
ZW5kKHN0cmluZ01lc3NhZ2UsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IGYzZjZmNTYyMDhmMDg0MzU4MThi
NWJhNTM5OTk2OWNmMzQ4YzFmMWYuLmVjNTYzMzFlMmNkM2QwNmM0ZmU4YTE3ODhiMjcwZGY0MzJj
MmY2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIEpTVmFsdWUgSlNXb3JrZXJDb250
ZXh0OjppbXBvcnRTY3JpcHRzKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFZlY3RvcjxTdHJpbmc+
IHVybHM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQo
KTsgaSsrKSB7Ci0gICAgICAgIHVybHMuYXBwZW5kKHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1
bWVudChpKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgdXJscy5hcHBl
bmQoZXhlYy0+YXJndW1lbnQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0
b20uY3BwCmluZGV4IDcxNDVmY2YzNDU5MGQ4Y2Q3N2ZlNzk4MDIzYzQxMTA3Y2YxNWZjMWIuLmIx
ZjM4YTU4NmQyYjUzYTJiMTdhMThiN2ZkY2RiOGQzOTUzOTBlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1dvcmtlcihFeGVjU3RhdGUqIGUKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihleGVjKSk7CiAKLSAgICBVU3RyaW5nIHNjcmlwdFVSTCA9IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2NyaXB0VVJMID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOwogCkBAIC02NSw3ICs2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNX
b3JrZXJDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRlKiBlCiAgICAgRE9N
V2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPmltcGwoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXb3Jr
ZXI+IHdvcmtlciA9IFdvcmtlcjo6Y3JlYXRlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgdXN0cmluZ1Rv
U3RyaW5nKHNjcmlwdFVSTCksIGVjKTsKKyAgICBSZWZQdHI8V29ya2VyPiB3b3JrZXIgPSBXb3Jr
ZXI6OmNyZWF0ZSh3aW5kb3ctPmRvY3VtZW50KCksIHNjcmlwdFVSTCwgZWMpOwogICAgIGlmIChl
YykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGMwOGMyOTU2MDJiZGM4
ZWQzNTQzZjJjZDA4NmIzZjFlMTc0MDU4NWYuLjkwYmQ0OGI3ZjU2N2IyNjUzODhhMDJjYTVlNzg4
YTY4NmU0ZTM0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC04NCw4ICs4NCw4IEBAIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCA9IGltcGwo
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCh1c3RyaW5nVG9TdHJpbmco
ZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Ci0gICAgU3Ry
aW5nIG1ldGhvZCA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOworICAgIGNvbnN0IEtVUkwmIHVybCA9IGltcGwoKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChleGVjLT5hcmd1bWVudCgxKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyBtZXRob2QgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDMpIHsKQEAgLTEzMCwxNiAr
MTMwLDE2IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cygmSlNBcnJheUJ1ZmZlclZpZXc6OnNfaW5m
bykpCiAgICAgICAgICAgICBpbXBsKCktPnNlbmQodG9BcnJheUJ1ZmZlclZpZXcodmFsKSwgZWMp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbXBsKCktPnNlbmQodXN0cmluZ1RvU3RyaW5n
KHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBlYyk7CisgICAgICAgICAgICBpbXBs
KCktPnNlbmQodmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgZWMpOwogICAgIH0KIAog
ICAgIGludCBzaWduZWRMaW5lTnVtYmVyOwogICAgIGludHB0cl90IHNvdXJjZUlEOwotICAgIFVT
dHJpbmcgc291cmNlVVJMOworICAgIFN0cmluZyBzb3VyY2VVUkw7CiAgICAgSlNWYWx1ZSBmdW5j
dGlvbjsKICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoZXhlYywg
c2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHNvdXJjZVVSTCwgZnVuY3Rpb24pOwogICAgIGlt
cGwoKS0+c2V0TGFzdFNlbmRMaW5lTnVtYmVyKHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25l
ZExpbmVOdW1iZXIgOiAwKTsKLSAgICBpbXBsKCktPnNldExhc3RTZW5kVVJMKHVzdHJpbmdUb1N0
cmluZyhzb3VyY2VVUkwpKTsKKyAgICBpbXBsKCktPnNldExhc3RTZW5kVVJMKHNvdXJjZVVSTCk7
CiAKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vz
c29yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nv
ckN1c3RvbS5jcHAKaW5kZXggNzBiNjk4MDlkNzg3ZmI0YzEyMTFlZWI1YzdjMDAwM2I4NmJiYjlh
My4uZDgzZmYzODdiZWZhOTY5YTgwZWI4ZTdmODcxZDhiOTI2YWIwNzZiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCkBA
IC04OSw5ICs4OSw5IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZE9y
TnVsbCgpIHx8IGV4ZWMtPmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOyAvLyBUaHJvdyBleGNlcHRpb24/Ci0gICAgU3RyaW5nIG5h
bWVzcGFjZVVSSSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOwotICAgIFN0cmluZyBsb2NhbE5hbWUgPSB1c3RyaW5nVG9TdHJp
bmcoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKLSAgICBT
dHJpbmcgdmFsdWUgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMikudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2NhbE5h
bWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
U3RyaW5nIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMikudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGltcGwoKS0+c2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCB2
YWx1ZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC0xMDAsOCArMTAwLDggQEAg
SlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSB1c3RyaW5n
VG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
LSAgICBTdHJpbmcgbG9jYWxOYW1lID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJp
bmcgbG9jYWxOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIFN0cmluZyB2YWx1ZSA9IGltcGwoKS0+Z2V0UGFyYW1ldGVyKG5hbWVzcGFjZVVS
SSwgbG9jYWxOYW1lKTsKICAgICByZXR1cm4ganNTdHJpbmdPclVuZGVmaW5lZChleGVjLCB2YWx1
ZSk7CiB9CkBAIC0xMTAsOCArMTEwLDggQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OnJlbW92
ZVBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDEp
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
IFN0cmluZyBuYW1lc3BhY2VVUkkgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKLSAgICBTdHJpbmcgbG9jYWxOYW1lID0gdXN0
cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbG9jYWxOYW1lID0gZXhlYy0+YXJndW1l
bnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGltcGwoKS0+cmVtb3ZlUGFy
YW1ldGVyKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAKaW5kZXggOWVhOWVjOGYwZDM0ZmZhMGRlN2U2NGY1ZGIwZDlhOGFiNTI4ZmYwMy4u
YmI4ZjhkZWM1YjVmNjU5NTk5Zjk4Zjc1ODQ5Yjc5M2FlZWVhZmYyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTc4LDEw
ICs3OCwxMCBAQCBTdHJpbmcgSmF2YVNjcmlwdENhbGxGcmFtZTo6ZnVuY3Rpb25OYW1lKCkgY29u
c3QKICAgICBBU1NFUlQobV9pc1ZhbGlkKTsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIFVTdHJpbmcgZnVuY3Rpb25OYW1lID0gbV9kZWJ1Z2dlckNh
bGxGcmFtZS5jYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCk7CisgICAgU3RyaW5nIGZ1bmN0aW9uTmFt
ZSA9IG1fZGVidWdnZXJDYWxsRnJhbWUuY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpOwogICAgIGlm
IChmdW5jdGlvbk5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
cmV0dXJuIHVzdHJpbmdUb1N0cmluZyhmdW5jdGlvbk5hbWUpOworICAgIHJldHVybiBmdW5jdGlv
bk5hbWU7CiB9CiAKIERlYnVnZ2VyQ2FsbEZyYW1lOjpUeXBlIEphdmFTY3JpcHRDYWxsRnJhbWU6
OnR5cGUoKSBjb25zdApAQCAtMTA5LDcgKzEwOSw3IEBAIEV4ZWNTdGF0ZSogSmF2YVNjcmlwdENh
bGxGcmFtZTo6ZXhlYygpIGNvbnN0CiB9CiAKIC8vIEV2YWx1YXRlIHNvbWUgSmF2YVNjcmlwdCBj
b2RlIGluIHRoZSBzY29wZSBvZiB0aGlzIGZyYW1lLgotSlNWYWx1ZSBKYXZhU2NyaXB0Q2FsbEZy
YW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbikg
Y29uc3QKK0pTVmFsdWUgSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQobV9pc1Zh
bGlkKTsKICAgICBpZiAoIW1faXNWYWxpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaAppbmRleCBlOTg3ZWNmODhmOGRlODY0NmMzNGU5MGM5
ZDQzMDZkZDY4ZjU0MmFlLi5kYzIyOTEzNTJhYjg0ODkyOWI1YTkwN2I3NjNiYzIyMzZmNTIzOTVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFt
ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYygp
IGNvbnN0OwogCiAgICAgSlNDOjpKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAgIEpT
Qzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBKU0M6OlVTdHJpbmcmIHNjcmlwdCwgSlNDOjpKU1Zh
bHVlJiBleGNlcHRpb24pIGNvbnN0OworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBT
dHJpbmcmIHNjcmlwdCwgSlNDOjpKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OwogICAgIAogcHJp
dmF0ZToKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJh
bWUmLCBQYXNzUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IGNhbGxlciwgaW50cHRyX3Qgc291
cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggYzQ2OWJmODI5MjJlNmMwMmQyOWE2NmQxZmEz
YzEzMWMzN2Y0Y2M4ZC4uNzY4MjA1MTBkMTIyNmM2ZDIzZDEyMTg2OTEyZGU0NmRiYjlhNTVkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBA
IC01OCwxMCArNTgsMTAgQEAgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+IFNjaGVkdWxlZEFj
dGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3JhcHBlclcKICAgICAgICAgUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3Bl
Y3RvcihleGVjKSk7CiAgICAgICAgIGlmIChwb2xpY3kgJiYgIXBvbGljeS0+YWxsb3dFdmFsKGNh
bGxTdGFjay5yZWxlYXNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IFVTdHJpbmcgc3RyaW5nID0gdi50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAg
IFN0cmluZyBzdHJpbmcgPSB2LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9uKHVzdHJpbmdUb1N0cmlu
ZyhzdHJpbmcpLCBpc29sYXRlZFdvcmxkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
U2NoZWR1bGVkQWN0aW9uKHN0cmluZywgaXNvbGF0ZWRXb3JsZCkpOwogICAgIH0KIAogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9uKGV4ZWMsIHYsIGlzb2xhdGVkV29ybGQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAKaW5kZXggM2JiNjlmNDJjOGY5YTI2MzhkZDJkODgyNTcxMmMzYjZlMWQ3MDc1
MS4uNGZhZWVlZDg5NTJhZjk3NWZlMTE4Zjg2MmEzNDhmYWVmZjBlOGM5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTR2xvYmFsRGF0YS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC04MiwxMSArODIsMTEgQEAgUGFz
c1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgc2l6ZV90IG0KICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CiAgICAgICAg
IGludCBzaWduZWRMaW5lTnVtYmVyOwogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRDsKLSAgICAg
ICAgVVN0cmluZyB1cmxTdHJpbmc7CisgICAgICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgICAg
IEpTVmFsdWUgZnVuY3Rpb247CiAKICAgICAgICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmll
dmVMYXN0Q2FsbGVyKGNhbGxGcmFtZSwgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHVybFN0
cmluZywgZnVuY3Rpb24pOwotICAgICAgICBVU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICAgICAg
U3RyaW5nIGZ1bmN0aW9uTmFtZTsKICAgICAgICAgaWYgKGZ1bmN0aW9uKQogICAgICAgICAgICAg
ZnVuY3Rpb25OYW1lID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiktPm5hbWUoZXhlYyk7
CiAgICAgICAgIGVsc2UgewpAQCAtOTYsNyArOTYsNyBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qg
bQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVkIGxp
bmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5lTnVtYmVyIDogMDsK
LSAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUodXN0cmluZ1RvU3RyaW5nKGZ1
bmN0aW9uTmFtZSksIHVzdHJpbmdUb1N0cmluZyh1cmxTdHJpbmcpLCBsaW5lTnVtYmVyKSk7Cisg
ICAgICAgIGZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgdXJsU3Ry
aW5nLCBsaW5lTnVtYmVyKSk7CiAgICAgICAgIGlmICghZnVuY3Rpb24gfHwgZnJhbWVzLnNpemUo
KSA9PSBtYXhTdGFja1NpemUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FsbEZyYW1l
ID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA0MWJiZWE4YjJmOGRiNzU2YTgxNThhYjMw
NmUzMzg2ZmQxZTZiY2IwLi5kNmFlNjFmZWEwYzRhMzIwNGRkZDFhZDdjYzdmYmNiOTllZjljNzk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtMTIyLDcgKzEyMiw3IEBAIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6
OmNyZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiBTY3JpcHRWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKICAgICBjb25zdCBTb3VyY2VD
b2RlJiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwotICAgIFN0cmlu
ZyBzb3VyY2VVUkwgPSB1c3RyaW5nVG9TdHJpbmcoanNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVy
bCgpKTsKKyAgICBTdHJpbmcgc291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVy
bCgpOwogCiAgICAgLy8gZXZhbHVhdGUgY29kZS4gUmV0dXJucyB0aGUgSlMgcmV0dXJuIHZhbHVl
IG9yIDAKICAgICAvLyBpZiB0aGVyZSB3YXMgbm9uZSwgYW4gZXJyb3Igb2NjdXJyZWQgb3IgdGhl
IHR5cGUgY291bGRuJ3QgYmUgY29udmVydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGJiY2Q1NDI5OTY1NzBmYTEzNzk5YTRl
NWE4Mjk1MDMwZGU1MGEwYTEuLjUyZmY4ZjYzNzlkYTQxOTBmNmIxMWIyMTc5MmQwNTVlZWRlMDAy
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVD
dXJyZW50U3RhdGVtZW50UG9zaXRpb24oaW50cHRyX3Qgc291cmNlSUQsIGludCBsaQogICAgIFNv
dXJjZVByb3ZpZGVyKiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3ZpZGVyKj4o
c291cmNlSUQpOwogCiAgICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7Ci0g
ICAgICAgIFN0cmluZyBzb3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhj
b25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKKyAgICAgICAgU3RyaW5n
IHNvdXJjZUNvZGUoY29uc3RfY2FzdDxTdHJpbmdJbXBsKj4oc291cmNlLT5kYXRhKCkpKTsKICAg
ICAgICAgbV9jdXJyZW50U291cmNlQ29kZS5jbGVhcigpOwogICAgICAgICBzb3VyY2VDb2RlLnNw
bGl0KCJcbiIsIHRydWUsIG1fY3VycmVudFNvdXJjZUNvZGUpOwogICAgICAgICBtX2N1cnJlbnRT
b3VyY2VJRCA9IHNvdXJjZUlEOwpAQCAtMjAxLDcgKzIwMSw3IEBAIGJvb2wgU2NyaXB0RGVidWdT
ZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlv
biYgcG9zCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1Rv
VVN0cmluZyhicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoYnJlYWtzVmVjdG9y
LmF0KGkpLmNvbmRpdGlvbiwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAg
ICAgIC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIuCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTMxNiwxMSArMzE2LDExIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiAK
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3QgTGlz
dGVuZXJTZXQmIGxpc3RlbmVycywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBib29s
IGlzQ29udGVudFNjcmlwdCkKIHsKLSAgICBTdHJpbmcgc291cmNlSUQgPSB1c3RyaW5nVG9TdHJp
bmcoSlNDOjpVU3RyaW5nOjpudW1iZXIoc291cmNlUHJvdmlkZXItPmFzSUQoKSkpOworICAgIFN0
cmluZyBzb3VyY2VJRCA9IFN0cmluZzo6bnVtYmVyKHNvdXJjZVByb3ZpZGVyLT5hc0lEKCkpOwog
CiAgICAgU2NyaXB0RGVidWdMaXN0ZW5lcjo6U2NyaXB0IHNjcmlwdDsKLSAgICBzY3JpcHQudXJs
ID0gdXN0cmluZ1RvU3RyaW5nKHNvdXJjZVByb3ZpZGVyLT51cmwoKSk7Ci0gICAgc2NyaXB0LnNv
dXJjZSA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmcoY29uc3RfY2FzdDxTdHJpbmdJbXBs
Kj4oc291cmNlUHJvdmlkZXItPmRhdGEoKSkpKTsKKyAgICBzY3JpcHQudXJsID0gc291cmNlUHJv
dmlkZXItPnVybCgpOworICAgIHNjcmlwdC5zb3VyY2UgPSBTdHJpbmcoY29uc3RfY2FzdDxTdHJp
bmdJbXBsKj4oc291cmNlUHJvdmlkZXItPmRhdGEoKSkpOwogICAgIHNjcmlwdC5zdGFydExpbmUg
PSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsK
ICAgICBzY3JpcHQuc3RhcnRDb2x1bW4gPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigp
Lm1fY29sdW1uLnplcm9CYXNlZEludCgpOwogICAgIHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQgPSBp
c0NvbnRlbnRTY3JpcHQ7CkBAIC0zNTQsOCArMzU0LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBT
b3UKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNl
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92
aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAg
U3RyaW5nIHVybCA9IHVzdHJpbmdUb1N0cmluZyhzb3VyY2VQcm92aWRlci0+dXJsKCkpOwotICAg
IFN0cmluZyBkYXRhID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25zdF9jYXN0PFN0
cmluZ0ltcGwqPihzb3VyY2VQcm92aWRlci0+ZGF0YSgpKSkpOworICAgIFN0cmluZyB1cmwgPSBz
b3VyY2VQcm92aWRlci0+dXJsKCk7CisgICAgU3RyaW5nIGRhdGEgPSBTdHJpbmcoY29uc3RfY2Fz
dDxTdHJpbmdJbXBsKj4oc291cmNlUHJvdmlkZXItPmRhdGEoKSkpOwogICAgIGludCBmaXJzdExp
bmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgp
OwogCiAgICAgVmVjdG9yPFNjcmlwdERlYnVnTGlzdGVuZXIqPiBjb3B5OwpAQCAtMzgyLDcgKzM4
Miw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRldGFjaChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIERlYnVnZ2VyOjpkZXRhY2goZ2xvYmFsT2JqZWN0KTsKIH0KIAotdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSogZXhlYywgU291cmNl
UHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBVU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzb3VyY2VQYXJzZWQoRXhlY1N0
YXRlKiBleGVjLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIGlmIChtX2NhbGxpbmdMaXN0ZW5l
cnMpCiAgICAgICAgIHJldHVybjsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiBleGVjLCBTb3VyY2VQcm92aWRlciogc291
cmNlUHJvdgogCiAgICAgYm9vbCBpc0Vycm9yID0gZXJyb3JMaW5lICE9IC0xOwogICAgIGlmIChp
c0Vycm9yKQotICAgICAgICBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoKmxpc3RlbmVycywg
c291cmNlUHJvdmlkZXIsIGVycm9yTGluZSwgdXN0cmluZ1RvU3RyaW5nKGVycm9yTWVzc2FnZSkp
OworICAgICAgICBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoKmxpc3RlbmVycywgc291cmNl
UHJvdmlkZXIsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKICAgICBlbHNlCiAgICAgICAgIGRp
c3BhdGNoRGlkUGFyc2VTb3VyY2UoKmxpc3RlbmVycywgc291cmNlUHJvdmlkZXIsIGlzQ29udGVu
dFNjcmlwdChleGVjKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5oCmluZGV4IDkzNTkxNGM2YjQxOGRjM2ZhMzYzMzc4NzQyNjI1NzVhNWFhZDg1
ZDMuLjI4ZDk3YzU5YzhiOThlYzk4MWU0YzY2NTcwODQwNWIxYmMyODE1ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzgsMTIgKzM4
LDEyIEBACiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2Vy
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgRGVidWdnZXJDYWxsRnJhbWU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRl
ciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOworICAgIHZp
cnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlNvdXJjZVByb3Zp
ZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1zZyk7CiAgICAgdmlydHVh
bCB2b2lkIGNhbGxFdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICB2aXJ0dWFs
IHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgZmlyc3RMaW5lLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGE3
NjY1ZTE2ZTlmNjA1NTA0ZTE4Njg0NThiY2M4OTQ3YzA5MTU2MzguLmMwZTljM2UzOTcyZWYyNDQ3
YTc4OTY3NWI1OTJhZWZiMmY2NjEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgU3RyaW5n
IGV2ZW50TGlzdGVuZXJIYW5kbGVyQm9keShEb2N1bWVudCogZG9jdW1lbnQsIEV2ZW50TGlzdGVu
ZXIqIGV2ZW50TGlzdGVuZXIKICAgICBpZiAoIWpzRnVuY3Rpb24pCiAgICAgICAgIHJldHVybiAi
IjsKICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZUZyb21Ob2RlKGpz
TGlzdGVuZXItPmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOwotICAgIHJldHVybiB1c3RyaW5n
VG9TdHJpbmcoanNGdW5jdGlvbi0+dG9TdHJpbmcoc2NyaXB0U3RhdGUpLT52YWx1ZShzY3JpcHRT
dGF0ZSkpOworICAgIHJldHVybiBqc0Z1bmN0aW9uLT50b1N0cmluZyhzY3JpcHRTdGF0ZSktPnZh
bHVlKHNjcmlwdFN0YXRlKTsKIH0KIAogYm9vbCBldmVudExpc3RlbmVySGFuZGxlckxvY2F0aW9u
KERvY3VtZW50KiBkb2N1bWVudCwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwgU3RyaW5n
JiBzb3VyY2VOYW1lLCBpbnQmIGxpbmVOdW1iZXIpCkBAIC0xMjMsNyArMTIzLDcgQEAgYm9vbCBl
dmVudExpc3RlbmVySGFuZGxlckxvY2F0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgRXZlbnRMaXN0
ZW5lciogZXZlbnRMaXN0ZW4KICAgICBpZiAoIWZ1bmNFeGVjdXRhYmxlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgbGluZU51bWJlciA9IGZ1bmNFeGVjdXRhYmxlLT5saW5lTm8oKTsKLSAg
ICBzb3VyY2VOYW1lID0gdXN0cmluZ1RvU3RyaW5nKGZ1bmNFeGVjdXRhYmxlLT5zb3VyY2VVUkwo
KSk7CisgICAgc291cmNlTmFtZSA9IGZ1bmNFeGVjdXRhYmxlLT5zb3VyY2VVUkwoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAKaW5kZXggNTQ3NzgyNTlhODhmNjhmYWYzYzZhZjRlMzAyNzk3YTBl
ODMyOWZiYy4uZTUyODQyZTBiYmFhNWU2Y2Y3YzNkOWIxYjRmZWNkMGYyNzU2OTJkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNMb2NrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTU5LDE5
ICs1OSwxMyBAQCB2b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50
KGNvbnN0IFNjcmlwdFZhbHVlJiBhcmd1bWVudCkKIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFu
ZGxlcjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKIHsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2V4ZWMpOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyht
X2V4ZWMsIGFyZ3VtZW50KSk7Ci19Ci0KLXZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6
YXBwZW5kQXJndW1lbnQoY29uc3QgSlNDOjpVU3RyaW5nJiBhcmd1bWVudCkKLXsKLSAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2V4ZWMpOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyht
X2V4ZWMsIGFyZ3VtZW50KSk7CisgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nV2l0aENh
Y2hlKG1fZXhlYywgYXJndW1lbnQpKTsKIH0KIAogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5k
bGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBjaGFyKiBhcmd1bWVudCkKIHsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhtX2V4ZWMpOwotICAgIG1fYXJndW1lbnRzLmFwcGVuZChqc1N0cmluZyhtX2V4
ZWMsIFVTdHJpbmcoYXJndW1lbnQpKSk7CisgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5n
KG1fZXhlYywgU3RyaW5nKGFyZ3VtZW50KSkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1bWVu
dEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KEpTQzo6SlNWYWx1ZSBhcmd1bWVudCkKQEAgLTEyNyw3
ICsxMjEsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwoYm9vbCYgaGFk
RXhjZXB0aW9uLCBib29sIHJlcG9ydEV4Y2VwdGlvbnMpCiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhtX2V4ZWMpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4
ZWMsIElkZW50aWZpZXIobV9leGVjLCBzdHJpbmdUb1VTdHJpbmcobV9uYW1lKSkpOworICAgIEpT
VmFsdWUgZnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVyKG1fZXhl
YywgbV9uYW1lKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
aWYgKHJlcG9ydEV4Y2VwdGlvbnMpCiAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24obV9leGVj
LCBtX2V4ZWMtPmV4Y2VwdGlvbigpKTsKQEAgLTE2NSw3ICsxNTksNyBAQCBTY3JpcHRPYmplY3Qg
U2NyaXB0RnVuY3Rpb25DYWxsOjpjb25zdHJ1Y3QoYm9vbCYgaGFkRXhjZXB0aW9uLCBib29sIHJl
cG9ydEV4Y2VwdAogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9leGVjKTsKIAotICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvciA9IGFzT2JqZWN0KHRoaXNPYmplY3QtPmdldChtX2V4ZWMsIElkZW50
aWZpZXIobV9leGVjLCBzdHJpbmdUb1VTdHJpbmcobV9uYW1lKSkpKTsKKyAgICBKU09iamVjdCog
Y29uc3RydWN0b3IgPSBhc09iamVjdCh0aGlzT2JqZWN0LT5nZXQobV9leGVjLCBJZGVudGlmaWVy
KG1fZXhlYywgbV9uYW1lKSkpOwogICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIGlmIChyZXBvcnRFeGNlcHRpb25zKQogICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KG1fZXhlYywgbV9leGVjLT5leGNlcHRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCmluZGV4IDY5YjVlMjhkYmUzMzdkYWI4YWM4OWE4
MTdkZGFkODIyOGIxNjhmMmIuLjRlOWMyMDJiMTNkNWJhYzIwMTJmNDEwOTRkNmExMTYwNjljN2Mx
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9u
Q2FsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2Fs
bC5oCkBAIC0zMSwxNCArMzEsMTMgQEAKICNpZm5kZWYgU2NyaXB0RnVuY3Rpb25DYWxsX2gKICNk
ZWZpbmUgU2NyaXB0RnVuY3Rpb25DYWxsX2gKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKIAog
I2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBVU3RyaW5nOwogICAgIGNsYXNzIEpT
VmFsdWU7CiB9CiAKQEAgLTUxLDkgKzUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0T2JqZWN0Jik7CiAgICAgICAgIHZv
aWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmKTsKLSAgICAgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChj
b25zdCBjaGFyKik7Ci0gICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgSlNDOjpVU3Ry
aW5nJik7CisgICAgICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAg
ICAgIHZvaWQgYXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlKTsKICAgICAgICAgdm9pZCBhcHBl
bmRBcmd1bWVudChsb25nKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChsb25nIGxvbmcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAppbmRleCAz
YzJiNjVmZTAyZjYxNDI4MjM1MGIxOWNiNTJkMGJkMjhlOThhM2U4Li40Y2VmNGNkZGQ1OWMyN2Yy
MmNhNWUxNWE1MTIxZTY1MDY1MjgyOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBTY3JpcHRQcm9maWxlOjp+U2Ny
aXB0UHJvZmlsZSgpCiAKIFN0cmluZyBTY3JpcHRQcm9maWxlOjp0aXRsZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHVzdHJpbmdUb1N0cmluZyhtX3Byb2ZpbGUtPnRpdGxlKCkpOworICAgIHJldHVy
biBtX3Byb2ZpbGUtPnRpdGxlKCk7CiB9CiAKIHVuc2lnbmVkIGludCBTY3JpcHRQcm9maWxlOjp1
aWQoKSBjb25zdApAQCAtODAsOCArODAsOCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yKGNvbnN0IEpTQzo6UHJvZmlsZU5vZAogewog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAKLSAgICByZXN1bHQtPnNldFN0cmluZygiZnVuY3Rpb25OYW1lIiwgdXN0cmluZ1Rv
U3RyaW5nKG5vZGUtPmZ1bmN0aW9uTmFtZSgpKSk7Ci0gICAgcmVzdWx0LT5zZXRTdHJpbmcoInVy
bCIsIHVzdHJpbmdUb1N0cmluZyhub2RlLT51cmwoKSkpOworICAgIHJlc3VsdC0+c2V0U3RyaW5n
KCJmdW5jdGlvbk5hbWUiLCBub2RlLT5mdW5jdGlvbk5hbWUoKSk7CisgICAgcmVzdWx0LT5zZXRT
dHJpbmcoInVybCIsIG5vZGUtPnVybCgpKTsKICAgICByZXN1bHQtPnNldE51bWJlcigibGluZU51
bWJlciIsIG5vZGUtPmxpbmVOdW1iZXIoKSk7CiAgICAgcmVzdWx0LT5zZXROdW1iZXIoInRvdGFs
VGltZSIsIG5vZGUtPnRvdGFsVGltZSgpKTsKICAgICByZXN1bHQtPnNldE51bWJlcigic2VsZlRp
bWUiLCBub2RlLT5zZWxmVGltZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGVyLmNwcAppbmRleCBkNmFmZDg5NjZkYWI4MTRkOTExMTJjYmExZTE2ODBhNzQz
Yzk0MjMyLi41YzdlYmQ3ZDU2YjYxMzFiYjY4OTllYWIxZTE4YjU3MDFjMDZhYTkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC01OCw3ICs1
OCw3IEBAIHVuc2lnbmVkIFNjcmlwdFByb2ZpbGVyOjpnZXRIZWFwT2JqZWN0SWQoY29uc3QgU2Ny
aXB0VmFsdWUmKQogCiB2b2lkIFNjcmlwdFByb2ZpbGVyOjpzdGFydChTY3JpcHRTdGF0ZSogc3Rh
dGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgSlNDOjpQcm9maWxlcjo6cHJvZmlsZXIo
KS0+c3RhcnRQcm9maWxpbmcoc3RhdGUsIHN0cmluZ1RvVVN0cmluZyh0aXRsZSkpOworICAgIEpT
Qzo6UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKHN0YXRlLCB0aXRsZSk7CiB9
CiAKIHZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0Rm9yUGFnZShQYWdlKiBpbnNwZWN0ZWRQYWdl
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNjcmlwdFByb2Zp
bGVyOjpzdGFydEZvcldvcmtlckNvbnRleHQoV29ya2VyQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJgogCiBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVyOjpzdG9w
KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBSZWZQdHI8
SlNDOjpQcm9maWxlPiBwcm9maWxlID0gSlNDOjpQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RvcFBy
b2ZpbGluZyhzdGF0ZSwgc3RyaW5nVG9VU3RyaW5nKHRpdGxlKSk7CisgICAgUmVmUHRyPEpTQzo6
UHJvZmlsZT4gcHJvZmlsZSA9IEpTQzo6UHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0b3BQcm9maWxp
bmcoc3RhdGUsIHRpdGxlKTsKICAgICByZXR1cm4gU2NyaXB0UHJvZmlsZTo6Y3JlYXRlKHByb2Zp
bGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
b3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNl
UHJvdmlkZXIuaAppbmRleCA4NzYwMTg1MGFiYjQzMDBjYjk5YzMwOGNkYjI5NjQwOGY0MDliY2Q5
Li44Mzk2MDgyZmExYzc2Mjg1OWEyNTQ4ZTUzZWZiYWQyYWQ3NzRiMDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZVByb3ZpZGVyLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU2NyaXB0U291cmNlUHJv
dmlkZXIgOiBwdWJsaWMgSlNDOjpTb3VyY2VQcm92aWRlciB7CiAgICAgcHVibGljOgotICAgICAg
ICBTY3JpcHRTb3VyY2VQcm92aWRlcihjb25zdCBKU0M6OlVTdHJpbmcmIHVybCwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGUqIGNhY2hl
ID0gMCkKKyAgICAgICAgU2NyaXB0U291cmNlUHJvdmlkZXIoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgSlNDOjpTb3VyY2VQcm92aWRlckNhY2hl
KiBjYWNoZSA9IDApCiAgICAgICAgICAgICA6IFNvdXJjZVByb3ZpZGVyKHVybCwgc3RhcnRQb3Np
dGlvbiwgY2FjaGUpCiAgICAgICAgIHsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDgzZGZkNWZiODMyNjcxOGI2ZWViZjEzNDMyM2Fm
MjQ0MTNlYzM1MmMuLjQzMTBmZmNkN2RmNWQwZDYyMmFiMzA2MjZmNmZjMzBiOWY2NDczZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTM5LDcgKzM5
LDYgQEAKIAogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApAQCAtNTAsMTYgKzQ5LDE0IEBAIGJvb2wgU2NyaXB0VmFsdWU6OmdldFN0cmluZyhTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIFN0cmluZyYgcmVzdWx0KSBjb25zdAogICAgIGlmICghbV92
YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEpTTG9ja0hvbGRlciBsb2NrKHNjcmlw
dFN0YXRlKTsKLSAgICBVU3RyaW5nIHVzdHJpbmc7Ci0gICAgaWYgKCFtX3ZhbHVlLmdldCgpLmdl
dFN0cmluZyhzY3JpcHRTdGF0ZSwgdXN0cmluZykpCisgICAgaWYgKCFtX3ZhbHVlLmdldCgpLmdl
dFN0cmluZyhzY3JpcHRTdGF0ZSwgcmVzdWx0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc3VsdCA9IHVzdHJpbmdUb1N0cmluZyh1c3RyaW5nKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogU3RyaW5nIFNjcmlwdFZhbHVlOjp0b1N0cmluZyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUp
IGNvbnN0CiB7Ci0gICAgU3RyaW5nIHJlc3VsdCA9IHVzdHJpbmdUb1N0cmluZyhtX3ZhbHVlLmdl
dCgpLnRvU3RyaW5nKHNjcmlwdFN0YXRlKS0+dmFsdWUoc2NyaXB0U3RhdGUpKTsKKyAgICBTdHJp
bmcgcmVzdWx0ID0gbV92YWx1ZS5nZXQoKS50b1N0cmluZyhzY3JpcHRTdGF0ZSktPnZhbHVlKHNj
cmlwdFN0YXRlKTsKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW4gZXhjZXB0aW9uIGlz
IHRocm93biBhcyBwYXJ0IG9mIGludm9raW5nIHRvU3RyaW5nIG9uIHRoZSBvYmplY3QuCiAgICAg
aWYgKHNjcmlwdFN0YXRlLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgc2NyaXB0U3RhdGUtPmNs
ZWFyRXhjZXB0aW9uKCk7CkBAIC0xMzgsNyArMTM1LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUs
IEoKICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJh
c2ljVmFsdWU6OmNyZWF0ZSh2YWx1ZS5hc051bWJlcigpKTsKICAgICBpZiAodmFsdWUuaXNTdHJp
bmcoKSkgewotICAgICAgICBVU3RyaW5nIHMgPSB2YWx1ZS5nZXRTdHJpbmcoc2NyaXB0U3RhdGUp
OworICAgICAgICBTdHJpbmcgcyA9IHZhbHVlLmdldFN0cmluZyhzY3JpcHRTdGF0ZSk7CiAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZShTdHJpbmcocy5jaGFyYWN0ZXJzKCks
IHMubGVuZ3RoKCkpKTsKICAgICB9CiAgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CmluZGV4IGVhNzAyMjk1YjdlNjUzNmVkNDQ2MTk4MzMzZDA4NzJkZDEyNDA1M2MuLmYyOWExM2E1
ZmU0MGRhZDY3MTY3NzcxNGFmYmM1ZWU0YWM2MDBhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzg2LDcgKzM4
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogQ2xvbmVCYXNlKGV4ZWMpCiAgICAgICAgICwgbV9i
dWZmZXIob3V0KQogICAgICAgICAsIG1fYmxvYlVSTHMoYmxvYlVSTHMpCi0gICAgICAgICwgbV9l
bXB0eUlkZW50aWZpZXIoZXhlYywgVVN0cmluZygiIiwgMCkpCisgICAgICAgICwgbV9lbXB0eUlk
ZW50aWZpZXIoZXhlYywgZW1wdHlTdHJpbmcoKSkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJl
bnRWZXJzaW9uKTsKICAgICAgICAgZmlsbFRyYW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90cmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0cyk7CkBAIC01MjMsNyArNTIzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHZvaWQgZHVtcFN0cmluZyhVU3RyaW5nIHN0cikKKyAgICB2b2lk
IGR1bXBTdHJpbmcoU3RyaW5nIHN0cikKICAgICB7CiAgICAgICAgIGlmIChzdHIuaXNFbXB0eSgp
KQogICAgICAgICAgICAgd3JpdGUoRW1wdHlTdHJpbmdUYWcpOwpAQCAtNTMzLDcgKzUzMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGR1bXBTdHJpbmdPYmplY3Qo
VVN0cmluZyBzdHIpCisgICAgdm9pZCBkdW1wU3RyaW5nT2JqZWN0KFN0cmluZyBzdHIpCiAgICAg
ewogICAgICAgICBpZiAoc3RyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHdyaXRlKEVtcHR5U3Ry
aW5nT2JqZWN0VGFnKTsKQEAgLTU4OSw3ICs1ODksNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIFVTdHJpbmcgc3Ry
ID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShtX2V4ZWMpOworICAgICAgICAgICAgU3RyaW5nIHN0
ciA9IGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUobV9leGVjKTsKICAgICAgICAgICAgIGR1bXBTdHJp
bmcoc3RyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC02MjAsNyAr
NjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzKCZTdHJpbmdP
YmplY3Q6OnNfaW5mbykpIHsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0T2JqZWN0SW50ZXJu
YWwob2JqKSkgLy8gaGFuZGxlIGR1cGxpY2F0ZXMKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgICAgICAgICAgVVN0cmluZyBzdHIgPSBhc1N0cmluZyhhc1N0cmluZ09i
amVjdCh2YWx1ZSktPmludGVybmFsVmFsdWUoKSktPnZhbHVlKG1fZXhlYyk7CisgICAgICAgICAg
ICAgICAgU3RyaW5nIHN0ciA9IGFzU3RyaW5nKGFzU3RyaW5nT2JqZWN0KHZhbHVlKS0+aW50ZXJu
YWxWYWx1ZSgpKS0+dmFsdWUobV9leGVjKTsKICAgICAgICAgICAgICAgICBkdW1wU3RyaW5nT2Jq
ZWN0KHN0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC02NzYsNyArNjc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgZmxhZ3NbZmxh
Z0NvdW50KytdID0gJ20nOwogICAgICAgICAgICAgICAgIHdyaXRlKFJlZ0V4cFRhZyk7CiAgICAg
ICAgICAgICAgICAgd3JpdGUocmVnRXhwLT5yZWdFeHAoKS0+cGF0dGVybigpKTsKLSAgICAgICAg
ICAgICAgICB3cml0ZShVU3RyaW5nKGZsYWdzLCBmbGFnQ291bnQpKTsKKyAgICAgICAgICAgICAg
ICB3cml0ZShTdHJpbmcoZmxhZ3MsIGZsYWdDb3VudCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHMoJkpT
TWVzc2FnZVBvcnQ6OnNfaW5mbykpIHsKQEAgLTc5Miw3ICs3OTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB3cml0ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAgICB7Ci0gICAgICAgIFVT
dHJpbmcgc3RyID0gaWRlbnQudXN0cmluZygpOworICAgICAgICBjb25zdCBTdHJpbmcmIHN0ciA9
IGlkZW50LnVzdHJpbmcoKTsKICAgICAgICAgU3RyaW5nQ29uc3RhbnRQb29sOjpBZGRSZXN1bHQg
YWRkUmVzdWx0ID0gbV9jb25zdGFudFBvb2wuYWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQb29s
LnNpemUoKSk7CiAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
ICAgIHdyaXRlKFN0cmluZ1Bvb2xUYWcpOwpAQCAtODE4LDcgKzgxOCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBmYWlsKCk7CiAgICAgfQogCi0gICAgdm9pZCB3cml0ZShjb25zdCBVU3RyaW5n
JiBzdHIpCisgICAgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHN0cikKICAgICB7CiAgICAgICAg
IGlmIChzdHIuaXNOdWxsKCkpCiAgICAgICAgICAgICB3cml0ZShtX2VtcHR5SWRlbnRpZmllcik7
CkBAIC04MjYsMTQgKzgyNiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0ZShJZGVudGlm
aWVyKG1fZXhlYywgc3RyKSk7CiAgICAgfQogCi0gICAgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcm
IHN0cikKLSAgICB7Ci0gICAgICAgIGlmIChzdHIuaXNFbXB0eSgpKQotICAgICAgICAgICAgd3Jp
dGUobV9lbXB0eUlkZW50aWZpZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cml0ZShJ
ZGVudGlmaWVyKG1fZXhlYywgc3RyLmltcGwoKSkpOwotICAgIH0KLQogICAgIHZvaWQgd3JpdGUo
Y29uc3QgRmlsZSogZmlsZSkKICAgICB7CiAgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUt
PnVybCgpKTsKQEAgLTEwMzcsNyArMTAyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgdWlu
dDhfdCogc3RhcnQgPSB2YWx1ZS5iZWdpbigpOwogICAgICAgICBjb25zdCB1aW50OF90KiBlbmQg
PSB2YWx1ZS5lbmQoKTsKICAgICAgICAgY29uc3QgdWludDMyX3QgbGVuZ3RoID0gdmFsdWUuc2l6
ZSgpIC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgVVN0cmluZyBzdHI7CisgICAgICAgIFN0cmlu
ZyBzdHI7CiAgICAgICAgIGlmICghQ2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRTdHJpbmcoc3RhcnQs
IGVuZCwgc3RyLCBsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0x
MDU3LDcgKzEwNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsKICAgICAg
ICAgaWYgKCFyZWFkTGl0dGxlRW5kaWFuKHB0ciwgZW5kLCBsZW5ndGgpIHx8IGxlbmd0aCA+PSBT
dHJpbmdQb29sVGFnKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICBVU3Ry
aW5nIHN0cjsKKyAgICAgICAgU3RyaW5nIHN0cjsKICAgICAgICAgaWYgKCFyZWFkU3RyaW5nKHB0
ciwgZW5kLCBzdHIsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoc3RyLmltcGwoKSk7CkBAIC0xMDc3LDcgKzEwNjksNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENhY2hlZFN0cmluZyB7Ci0gICAgICAgIENhY2hl
ZFN0cmluZyhjb25zdCBVU3RyaW5nJiBzdHJpbmcpCisgICAgICAgIENhY2hlZFN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgICAgIDogbV9zdHJpbmcoc3RyaW5nKQogICAgICAg
ICB7CiAgICAgICAgIH0KQEAgLTEwODgsMTAgKzEwODAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBtX2pzU3RyaW5nID0gSlNDOjpqc1N0cmluZyhleGVjLCBtX3N0cmluZyk7CiAgICAg
ICAgICAgICByZXR1cm4gbV9qc1N0cmluZzsKICAgICAgICAgfQotICAgICAgICBjb25zdCBVU3Ry
aW5nJiB1c3RyaW5nKCkgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICAgICAgLy8gRklYTUU6IHJl
bmFtZSB0byBzdHJpbmcoKS4KKyAgICAgICAgY29uc3QgU3RyaW5nJiB1c3RyaW5nKCkgeyByZXR1
cm4gbV9zdHJpbmc7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFVTdHJpbmcgbV9zdHJpbmc7
CisgICAgICAgIFN0cmluZyBtX3N0cmluZzsKICAgICAgICAgSlNWYWx1ZSBtX2pzU3RyaW5nOwog
ICAgIH07CiAKQEAgLTEyNDAsNyArMTIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBy
ZWFkKGkpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIHJlYWRTdHJpbmcoY29uc3QgdWludDhf
dComIHB0ciwgY29uc3QgdWludDhfdCogZW5kLCBVU3RyaW5nJiBzdHIsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICBzdGF0aWMgYm9vbCByZWFkU3RyaW5nKGNvbnN0IHVpbnQ4X3QqJiBwdHIsIGNvbnN0
IHVpbnQ4X3QqIGVuZCwgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAg
ICAgIGlmIChsZW5ndGggPj0gbnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpIC8gc2l6ZW9m
KFVDaGFyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNTAsNyArMTI0Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBBU1NVTUVfTElUVExF
X0VORElBTgotICAgICAgICBzdHIgPSBVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPihwdHIpLCBsZW5ndGgpOworICAgICAgICBzdHIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVQ2hhcio+KHB0ciksIGxlbmd0aCk7CiAgICAgICAgIHB0ciArPSBsZW5ndGggKiBz
aXplb2YoVUNoYXIpOwogI2Vsc2UKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7CkBAIC0x
MjYwLDcgKzEyNTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmVhZExpdHRsZUVuZGlhbihw
dHIsIGVuZCwgY2gpOwogICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjaCk7CiAgICAgICAgIH0K
LSAgICAgICAgc3RyID0gVVN0cmluZzo6YWRvcHQoYnVmZmVyKTsKKyAgICAgICAgc3RyID0gU3Ry
aW5nOjphZG9wdChidWZmZXIpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTEyOTUsNyArMTI4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYWNoZWRTdHJpbmcg
PSBDYWNoZWRTdHJpbmdSZWYoJm1fY29uc3RhbnRQb29sLCBpbmRleCk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBVU3RyaW5nIHN0cjsKKyAgICAgICAgU3Ry
aW5nIHN0cjsKICAgICAgICAgaWYgKCFyZWFkU3RyaW5nKG1fcHRyLCBtX2VuZCwgc3RyLCBsZW5n
dGgpKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RyaW5nU291cmNlUHJvdmlkZXIuaApp
bmRleCA4YjY3MTg4OTEyYjc3ZTY0ODk4NzY3ODAyNzgzNjU3MWUxMWMzYTNlLi42YjZiYjRlOWFi
MTYxNmIyY2ZlZTRlN2M2MmU3ZGI3ZTQ2ODQzODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVyLmgKQEAgLTQyLDEzICs0MiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmlu
Z1NvdXJjZVByb3ZpZGVyKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSk7CiAgICAgICAgIH0K
IAotICAgICAgICB2aXJ0dWFsIEpTQzo6VVN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0IE9WRVJSSURFCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldFJhbmdlKGludCBz
dGFydCwgaW50IGVuZCkgY29uc3QgT1ZFUlJJREUKICAgICAgICAgewogICAgICAgICAgICAgaW50
IGxlbmd0aCA9IGVuZCAtIHN0YXJ0OwogICAgICAgICAgICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsK
ICAgICAgICAgICAgIEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSB0aGlzLT5sZW5ndGgoKSk7CiAK
LSAgICAgICAgICAgIHJldHVybiBKU0M6OlVTdHJpbmcoU3RyaW5nSW1wbDo6Y3JlYXRlKG1fc291
cmNlLmltcGwoKSwgc3RhcnQsIGxlbmd0aCkpOworICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhT
dHJpbmdJbXBsOjpjcmVhdGUobV9zb3VyY2UuaW1wbCgpLCBzdGFydCwgbGVuZ3RoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2UuaW1wbCgpOyB9CkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmluZ1NvdXJjZVByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBv
c2l0aW9uKQotICAgICAgICAgICAgOiBTY3JpcHRTb3VyY2VQcm92aWRlcihzdHJpbmdUb1VTdHJp
bmcodXJsKSwgc3RhcnRQb3NpdGlvbikKKyAgICAgICAgICAgIDogU2NyaXB0U291cmNlUHJvdmlk
ZXIodXJsLCBzdGFydFBvc2l0aW9uKQogICAgICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAg
ICAgICAgIHsKICAgICAgICAgfQpAQCAtNjUsMTEgKzY1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgfTsKIAotICAgIGlubGluZSBKU0M6OlNv
dXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1
cmwgPSBTdHJpbmcoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4dFBv
c2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlNv
dXJjZUNvZGUoU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQ
b3NpdGlvbiksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpOwotICAgIH0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU3RyaW5nU291cmNlUHJvdmlkZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpp
bmRleCBjMWMxOThkNjViYjQ0M2FhMGIxYWM1NTMyOWJkZGIyNWJlOGRhOGU0Li5lNzcwMjE5ZmVh
ZjMxNDM0YzAzZDQ0MDBkYmFkMzI1ZGY4OGFjNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpAQCAtMzE3LDcgKzMxNyw3IEBAIHN0YXRp
YyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5
LCBSb290T2JqZWN0KiByb290CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgQVNT
RVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gW3Nl
bGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhTdHJp
bmcobmFtZSkpKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IFtzZWxmIF9pbXBdLT5nZXQoZXhl
YywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcobmFtZSkpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0
YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKQEAgLTM3OSw3ICszNzksNyBA
QCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5
ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwog
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxl
KCktPnB1dChbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJp
bmcoU3RyaW5nKGtleSkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBP
YmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CisgICAgW3NlbGYgX2lt
cF0tPm1ldGhvZFRhYmxlKCktPnB1dChbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmllcihleGVj
LCBTdHJpbmcoa2V5KSksIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsICZ2YWx1ZSwgT2Jq
Y09iamVjdFR5cGUsIFtzZWxmIF9yb290T2JqZWN0XSksIHNsb3QpOwogCiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsK
QEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0
YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogICAgICAgICAvLyBs
ZWF2aW5nIHRoZSBsb2NrIHBlcm1hbmVudGx5IGhlbGQKICAgICAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IFtzZWxmIF9pbXBd
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nKGtleSkp
KSk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVj
KTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhl
Y1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogICAgIEFTU0VS
VCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
Ci0gICAgW3NlbGYgX2ltcF0tPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KFtzZWxmIF9p
bXBdLCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhTdHJpbmcoa2V5KSkp
KTsKKyAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoW3NlbGYg
X2ltcF0sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKIAogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhl
Yyk7CkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4
ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAgICBBU1NF
UlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OwotICAgIEJPT0wgcmVzdWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgc3RyaW5nVG9VU3RyaW5nKFN0cmluZyhrZXkpKSkpOworICAgIEJPT0wgcmVz
dWx0ID0gW3NlbGYgX2ltcF0tPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3Ry
aW5nKGtleSkpKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBh
ZGRFeGNlcHRpb25Ub0NvbnNvbGUoZXhlYyk7CkBAIC01NjksNyArNTY5LDcgQEAgc3RhdGljIHZv
aWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJyYXksIFJv
b3RPYmplY3QqIHJvb3QKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7
Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHUgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMp
OworICAgICAgICBjb25zdCBTdHJpbmcmIHUgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMp
OwogICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOnUuY2hhcmFj
dGVycygpIGxlbmd0aDp1Lmxlbmd0aCgpXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNGJlZWY5YzJkMTY2
MGFmMDcwODdiMDZjNzM4ZmExN2FlY2EyYmQ1Yi4uNjg5ODE0NGNhNjhmM2RjNTEyZDAyMWJjNzhm
NzcwNTM2ZGEyYWM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE2NSw3ICsxNjUsNyBAQCBFTkQKICAgICBKU1ZhbHVl
IGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
IGltcGwtPiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgJHdyYXBwZXJPYmplY3QsIGZhbHNl
LCBjdXJyZW50V29ybGQoZXhlYykpJHBhc3NSZWZQdHJIYW5kbGluZywgZXhlYy0+YXJndW1lbnQo
MikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsLT4ke2Z1bmN0aW9uTmFtZX1FdmVudExpc3Rl
bmVyKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgSlNFdmVu
dExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCAkd3JhcHBlck9iamVjdCwgZmFs
c2UsIGN1cnJlbnRXb3JsZChleGVjKSkkcGFzc1JlZlB0ckhhbmRsaW5nLCBleGVjLT5hcmd1bWVu
dCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiBFTkQKICAgICByZXR1cm4gQEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGw7CkBA
IC0yODQ1LDcgKzI4NDUsNyBAQCBFTkQKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChA
cGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsK
ICAgICAgICAgICAgICAgICBpZiAoJHBhcmFtLT50eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKGpzU3Ry
aW5nKGV4ZWMsICR7cGFyYW1OYW1lfSkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsICR7
cGFyYW1OYW1lfSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHBhcmFtLT50eXBl
IGVxICJib29sZWFuIikgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBhcmdzLmFwcGVuZChqc0Jvb2xlYW4oJHtwYXJhbU5hbWV9KSk7XG4iKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2lmICgkcGFyYW0tPnR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIp
IHsKQEAgLTMwNTEsNyArMzA1MSw3IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICAgICAgICAg
IHJldHVybiAidmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgJHZhbHVlKSIKICAgICAg
ICAgfQogICAgICAgICAjIEZJWE1FOiBBZGQgdGhlIGNhc2UgZm9yICdpZiAoJHNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlRyZWF0VW5kZWZpbmVkQXMifSBhbmQgJHNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlRyZWF0VW5kZWZpbmVkQXMifSBlcSAiTnVsbFN0cmluZyIp
KScuCi0gICAgICAgIHJldHVybiAidXN0cmluZ1RvU3RyaW5nKCR2YWx1ZS5pc0VtcHR5KCkgPyBV
U3RyaW5nKCkgOiAkdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSI7CisgICAgICAg
IHJldHVybiAiJHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogJHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJET01PYmplY3Qi
KSB7CkBAIC0zMTQ0LDcgKzMxNDQsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICAg
ICBkaWUgIlVua25vd24gdmFsdWUgZm9yIFRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXMgZXh0ZW5k
ZWQgYXR0cmlidXRlIjsKICAgICAgICAgfQogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHJ1
bnRpbWUvSlNTdHJpbmcuaD4iLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm4gImpzU3Ry
aW5nKGV4ZWMsICR2YWx1ZSkiOworICAgICAgICByZXR1cm4gImpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsICR2YWx1ZSkiOwogICAgIH0KIAogICAgIG15ICRnbG9iYWxPYmplY3Q7CkBAIC0zNjgxLDcg
KzM2ODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFz
c05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oRXhlYwogICAgIGlmICghZXhlY3V0aW9uQ29u
dGV4dCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCAiQ29uc3RydWN0b3IgYXNzb2NpYXRlZCBleGVjdXRpb24gY29udGV4dCBpcyB1
bmF2YWlsYWJsZSIpKTsKIAotICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSB1c3RyaW5nVG9B
dG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
KTsKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBmNzEwYmUxNjkwYjI0NzM2MTEwOTc5YTc5YjI0
OTRjNWZiMTkxOGJhLi44N2I5NjE4MzMyOGJiYTkxYzgxYTFmMDA0NDY5MDMxYWE2NDQ3MWFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
RnVuY3Rpb25Qb3N0TWVzc2FnZShFCiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RBY3RpdmVET01PYmplY3QqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkg
PyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgaW1wbC0+cG9zdE1lc3NhZ2UobWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcApp
bmRleCBmODRmOTE1ZmRlZDNmZTFhY2I4ZTExM2E0ODBmODE5ODk5ZjZlZTlhLi43NjIzNGQ2YTFk
NDU0ZTI0NjMyYmE5MzJkM2MyMTA4MzIyYjdiNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKQEAg
LTEwNCw3ICsxMDQsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhDbGFzczJQ
YXJhbShDbGFzczIqIGNsYXNzMlBhcmFtLCBjb25zdCBTdHJpbmcmCiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBtX2RhdGEtPmds
b2JhbE9iamVjdCgpLCBjbGFzczJQYXJhbSkpOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4
ZWMsIHN0ckFyZykpOworICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHN0
ckFyZykpOwogCiAgICAgYm9vbCByYWlzZWRFeGNlcHRpb24gPSBmYWxzZTsKICAgICBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKGFyZ3MsICZyYWlzZWRFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggOTZmODdhYjA0ODUxNWE3M2ZjYmJjNzBlOGMxNDJl
ZTBhOWNlN2Q2Mi4uYjExYTYzN2JjYmU4MTRhOGJjNTU1OGU0M2RjZGU0NjU2NGM4NDhjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3Rv
dHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmMKICAgICBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAg
ICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8g
U3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIGltcGwtPmFub3RoZXJGdW5jdGlvbihzdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCmluZGV4IGQ4ZGEzNTg2OGQ4N2FmZTE0M2U1OTFlODFjMTE0ZDZhMDljMWFl
NzQuLmRlZjM4NGQ0ZTVhMjQ4NzZmMjg0YmI1YzgwYzA4MGJlODFlMDg4NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0
cnVjdEpTVGVzdEUKICAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkNvbnN0cnVjdG9y
IGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUiKSk7CiAKLSAgICBB
dG9taWNTdHJpbmcgZXZlbnRUeXBlID0gdXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgQXRvbWljU3RyaW5nIGV2
ZW50VHlwZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBKU1ZhbHVlIGpzVGVz
dEV2ZW50Q29uc3RydWN0b3JBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2Us
IFByb3BlcnR5TgogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8VGVzdEV2ZW50Q29uc3RydWN0b3IqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+YXR0cjEoKSk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5hdHRyMSgpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgSlNWYWx1ZSBqc1Rlc3RFdmVu
dENvbnN0cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU4KICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdEV2ZW50Q29uc3RydWN0b3IqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RFdmVudENvbnN0cnVjdG9yKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcGwtPmF0dHIyKCkpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+YXR0cjIoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggNGNmOTVjOWNmNTM3
YWNmNTJmNGVmOGY4MzM3MGQzODk1ZDk1MmFhMC4uMWM2NDg1MTMyMTU3YmQyMDUwODE1ZjM3Y2Y5
MmY5MzExYmY2OWIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0yNTMsNyArMjUz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcigKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhl
Yy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwtPmFkZEV2ZW50
TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxp
c3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSksIGV4ZWMtPmFy
Z3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wbC0+YWRkRXZlbnRMaXN0ZW5lcihl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJl
bnRXb3JsZChleGVjKSksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMjY4LDcgKzI2
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90
b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuCiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4
ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLT5yZW1vdmVF
dmVudExpc3RlbmVyKHVzdHJpbmdUb0F0b21pY1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVj
dChsaXN0ZW5lciksIGNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLmdldCgp
LCBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwtPnJlbW92ZUV2
ZW50TGlzdGVuZXIoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
LCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGNhc3RlZFRoaXMs
IGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLmdldCgpLCBleGVjLT5hcmd1bWVudCgyKS50b0Jv
b2xlYW4oZXhlYykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggNDU4MmFjYTFmYTRjMGY3YjQzNTgxNDdj
ZTdhMjAyZjdhZjAwOGQzOS4uZTY5ZDZhMDU2YmI3NWI0MDY4ZGQ0NTRlZWQ3NzI5YjU5YzQ1MTEz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBKU1ZhbHVlIGpz
VGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9w
ZXJ0eU5hbWUpCiAgICAgSlNUZXN0RXhjZXB0aW9uKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dEV4Y2VwdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIFRlc3RFeGNlcHRpb24qIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0RXhjZXB0aW9uKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMs
IGltcGwtPm5hbWUoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShl
eGVjLCBpbXBsLT5uYW1lKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAKaW5kZXggMGUzOWM0MWVlOGQ3MTgyYjlhOGZjMGFlMjQwMjcwMGE1NWUzOTNmMC4u
ZDQ2ZDQ3YzdhYmMzZWRkNDk0Njg1MjkyYjJkN2IzYjQyN2IyYzBiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAKQEAgLTEzMiwxMCArMTMyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdEludGVyZmFjCiAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGNvbnN0IFN0cmluZyYgc3RyMSh1c3RyaW5nVG9TdHJp
bmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5p
c0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNv
bnN0IFN0cmluZyYgc3RyMShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0cjIodXN0cmlu
Z1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVm
aW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsK
KyAgICBjb25zdCBTdHJpbmcmIHN0cjIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwg
RGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAg
LTI1Nyw3ICsyNTcsNyBAQCBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxl
bWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogewogICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmcoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGlj
QXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRl
c3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtMjY5LDcgKzI2OSw3IEBAIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlCiAg
ICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+
KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RJ
bnRlcmZhY2UqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIFRlc3RTdXBwbGVt
ZW50YWw6OnN1cHBsZW1lbnRhbFN0cjEoaW1wbCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMShp
bXBsKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjgxLDcgKzI4MSw3IEBAIEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlCiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdEludGVyZmFjZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogICAgIFRlc3RJbnRlcmZhY2UqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0SW50
ZXJmYWNlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nKGV4ZWMsIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjIoaW1wbCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgVGVzdFN1cHBsZW1lbnRh
bDo6c3VwcGxlbWVudGFsU3RyMihpbXBsKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
MzI3LDcgKzMyNyw3IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpwdXQoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiB2b2lkIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0g
ICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RhdGljQXR0cih1c3RyaW5nVG9T
dHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSk7CisgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3Rh
dGljQXR0cih2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CiB9CiAKICNlbmRpZgpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgc2V0
SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBKCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIEpTVGVzdEludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzT2JqZWN0KTsK
ICAgICBUZXN0SW50ZXJmYWNlKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdEludGVyZmFjZSo+KGNh
c3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFs
U3RyMihpbXBsLCB1c3RyaW5nVG9TdHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDog
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgVGVzdFN1cHBsZW1lbnRh
bDo6c2V0U3VwcGxlbWVudGFsU3RyMihpbXBsLCB2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiB9CiAKICNlbmRpZgpAQCAtMzk4
LDcgKzM5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyCiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgp
ID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJp
bmcmIHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBlZWVmNjZhNDRlYWFjMzkzNWYzYjg4
MGI5ZmU2MjBhMTQ0YzVhODA5Li4xNmMzNDU3YjllMDg4YWFkMDk1M2JhY2E4OWIzZjg3ZGQyM2Ix
YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC05MywxMyArOTMs
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
TmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlMKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
Y29uc3QgU3RyaW5nJiBzdHIxKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHIxKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8g
U3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIGNvbnN0IFN0cmluZyYgc3RyMih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5n
KCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyMihN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVs
dElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0cjModXN0cmluZ1RvU3RyaW5nKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIERlZmF1bHRJc051bGxTdHJpbmcpLmlzRW1wdHkoKSA/
IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIERlZmF1bHRJc051
bGxTdHJpbmcpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmlu
ZyYgc3RyMyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAyLCBEZWZhdWx0SXNOdWxsU3Ry
aW5nKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDIsIERlZmF1bHRJc051bGxTdHJpbmcpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFJlZlB0cjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gb2Jq
ZWN0ID0gVGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoY2FzdGVk
VGhpcy0+ZG9jdW1lbnQoKSwgc3RyMSwgc3RyMiwgc3RyMywgZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBj
MTc2MTQzNjgxMTYxYTQ5ZTUwMzljMTc3NGFiMjM1Y2Y5ZDA0NDQ0Li5mYWU4NmQwOGY5ZTc3OWEx
NWViMzM2OTA3YjE4MGJiNjY3YjFmZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNDAxLDcgKzQwMSw3IEBA
IEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcGwtPnJl
YWRPbmx5U3RyaW5nQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKGV4ZWMsIGltcGwtPnJlYWRPbmx5U3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC00MjksNyArNDI5LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0
YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLAogewogICAg
IFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgVGVzdE9iajo6c3RhdGljU3RyaW5nQXR0cigp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIFRlc3RPYmo6
OnN0YXRpY1N0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDk2LDcg
KzQ5Niw3IEBAIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1w
bC0+c3RyaW5nQXR0cigpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KGV4ZWMsIGltcGwtPnN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
NTM2LDcgKzUzNiw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
KGV4ZWMsIGltcGwtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0
cmluZ2F0dHJBdHRyKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShl
eGVjLCBpbXBsLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJp
bmdhdHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU3Niw3ICs1NzYsNyBA
QCBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBpbXBsLT5n
ZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0cikp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+Z2V0
VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC01ODYsNyArNTg2LDcgQEAgSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHkKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+Z2V0QXR0cmlidXRlKFdl
YkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5nZXRBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC02MTYsNyArNjE2LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
UHJvcGUKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+Z2V0VVJMQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyKSk7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5nZXRVUkxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC02NTcsNyArNjU3LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0T2JqKiBpbXBs
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNDOjpK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcGwtPnN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uKGVjKSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKGV4ZWMsIGltcGwtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNjY4
LDcgKzY2OCw3IEBAIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlCiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4
ZWMsIGltcGwtPnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+c3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtOTM2LDcgKzkzNiw3
IEBAIEpTVmFsdWUganNUZXN0T2JqSGFzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSkKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAg
ICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+aGFzaCgpKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmhhc2go
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtOTY3LDcgKzk2Nyw3IEBAIHZvaWQgSlNU
ZXN0T2JqOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTCiB2b2lkIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgVGVzdE9iajo6c2V0U3RhdGljU3RyaW5nQXR0cih1c3Ry
aW5nVG9TdHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgVGVzdE9iajo6c2V0U3RhdGljU3RyaW5nQXR0cih2
YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CiB9CiAKIApAQCAtMTAyMSw3ICsxMDIxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJp
bmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0
aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBpbXBsLT5zZXRTdHJp
bmdBdHRyKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBpbXBsLT5zZXRTdHJpbmdBdHRy
KHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKIH0KIAogCkBAIC0xMTcwLDcgKzExNzAsNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRo
aXNPYgogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
T2JqZWN0KTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW1wbC0+c2V0
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24odXN0cmluZ1RvU3RyaW5nKHZhbHVlLmlzRW1w
dHkoKSA/IFVTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGVj
KTsKKyAgICBpbXBsLT5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2YWx1ZS5pc0Vt
cHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgZWMp
OwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiB9CiAKQEAgLTExODEsNyArMTE4MSw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0
aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBpbXBsLT5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih1c3Ry
aW5nVG9TdHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSwgZWMpOworICAgIGltcGwtPnNldFN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
IH0KIApAQCAtMTQzMyw3ICsxNDMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBs
b25nIGxvbmcgQXJnKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0ludGVnZXIoZXhlYykpKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5n
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNF
bXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVm
YXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25z
dCBTdHJpbmcmIHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0
SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2Jq
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsK
QEAgLTE0NjksNyArMTQ2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqCiAgICAgbG9uZyBs
b25nIEFyZyhzdGF0aWNfY2FzdDxsb25nIGxvbmc+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9JbnRlZ2VyKGV4ZWMpKSk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdUb1N0cmluZyhNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHko
KSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJ
c1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3Ry
aW5nJiBzdHJBcmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5k
ZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAyLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CkBAIC0x
NTA2LDcgKzE1MDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YQogICAgIGxvbmcgbG9uZyBB
cmcoc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvSW50ZWdlcihleGVjKSkpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBV
U3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYg
c3RyQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5l
ZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAx
LCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoZXhlYywgMiwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwpAQCAtMTU2Myw3
ICsxNTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmlu
ZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFy
ZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVm
YXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKQEAgLTE2ODEsNyArMTY4
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25BZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0CiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4
ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLT5hZGRFdmVu
dExpc3RlbmVyKHVzdHJpbmdUb0F0b21pY1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChs
aXN0ZW5lciksIGNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLCBleGVjLT5h
cmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwtPmFkZEV2ZW50TGlzdGVuZXIo
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBKU0V2ZW50TGlz
dGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGNhc3RlZFRoaXMsIGZhbHNlLCBjdXJy
ZW50V29ybGQoZXhlYykpLCBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTE2OTYsNyAr
MTY5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTCiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9
IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLT5yZW1v
dmVFdmVudExpc3RlbmVyKHVzdHJpbmdUb0F0b21pY1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09i
amVjdChsaXN0ZW5lciksIGNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLmdl
dCgpLCBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwtPnJlbW92
ZUV2ZW50TGlzdGVuZXIoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGNhc3RlZFRo
aXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLmdldCgpLCBleGVjLT5hcmd1bWVudCgyKS50
b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKQEAgLTE5MzksNyArMTkzOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0g
ICAgY29uc3QgU3RyaW5nJiBzdHIodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDog
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cihNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBpbXBsLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoc3RyKTsKQEAgLTE5NTQsNyAr
MTk1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAg
ICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwo
KSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHIodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmlu
ZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cihN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBpbXBsLT5tZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZChz
dHIpOwpAQCAtMTk2OSw3ICsxOTY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0
T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJp
bmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzTnVsbFN0cmluZyku
aXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwg
RGVmYXVsdElzTnVsbFN0cmluZykudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAg
Y29uc3QgU3RyaW5nJiBzdHIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzTnVsbFN0cmluZykuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAwLCBEZWZhdWx0SXNOdWxsU3RyaW5nKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5tZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc051bGxTdHJpbmcoc3RyKTsKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDEoRXhlY1N0CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKIAotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZyhleGVjLCBpbXBsLT5jb25kaXRpb25hbE1ldGhvZDEoKSk7CisgICAgSlNDOjpK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmNvbmRpdGlvbmFs
TWV0aG9kMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAg
LTIwOTYsNyArMjA5Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoCiAgICAgVGVzdE9iaiog
b2JqQXJnKHRvVGVzdE9iaihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYg
c3RyQXJnKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmcoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6
IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1w
bC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcsIHN0ckFyZyk7CkBAIC0yMTQwLDcgKzIxNDAsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QzKAogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0
cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
ZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
KTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9h
ZGVkTWV0aG9kKHN0ckFyZyk7CkBAIC0yMzQ4LDcgKzIzNDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZAogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKLSAgICBjb25zdCBTdHJpbmcmIHR5cGUodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0
cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHR5
cGUoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5p
c0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERl
ZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEodHlwZSk7CkBAIC0y
NTcxLDcgKzI1NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb24oRXhlY1N0YXRlKgogICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAzKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3Ry
aW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3Ry
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNF
bXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIGZsb2F0IGEoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwg
RGVmYXVsdElzVW5kZWZpbmVkKS50b0Zsb2F0KGV4ZWMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggZDdmOWEzN2M4
NzNhZTY5NGQxODNkOTliYTIwZTQ2YjQzNzc2MWQ3Yy4uYThjMGY2YmI3OTIyZTUyNTA0YTJlZTY0
NjAyZDNjMWUyNGRhY2MzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3Rvcjo6Y28KICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBoZWxs
byh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgaGVsbG8oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
ZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YShTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShl
eGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQp
LCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJl
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKaW5kZXggMmFj
ZjE0MTUzZDFkYjllMTJiNzI1NThhNTM4OGQ5ODZmZjhhNWU4NS4uMWYxNzZmYzhjMjA3M2Y3OGMw
OTBhMGY2NjIwMTA4MWJiMDdjZDg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L0lkZW50aWZpZXJSZXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVy
UmVwLmNwcApAQCAtMjgsOSArMjgsOSBAQAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtOTIsNyArOTIsNyBAQCBJZGVudGlmaWVyUmVwKiBJZGVudGlmaWVyUmVwOjpnZXQoY29u
c3QgY2hhciogbmFtZSkKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiAwOwogICAKLSAg
ICBVU3RyaW5nIHN0cmluZyA9IHN0cmluZ1RvVVN0cmluZyhTdHJpbmc6OmZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKG5hbWUsIHN0cmxlbihuYW1lKSkpOworICAgIFN0cmluZyBzdHJpbmcgPSBT
dHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIHN0cmxlbihuYW1lKSk7CiAg
ICAgU3RyaW5nSWRlbnRpZmllck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN0cmluZ0lkZW50aWZp
ZXJNYXAoKS5hZGQoc3RyaW5nLmltcGwoKSwgMCk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggNjFlMzY3OTU2MWE2M2U0ZTNjZjViZTRkMDg5
NjcyMzEzN2Y2MzJjNy4uZmJmNTQxOTRiYzE3NTVhYWNhNzVkNmY0YWM5ZmU3YmQ1MDQ5ZTRmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC00MzMsNyArNDMzLDcgQEAg
Ym9vbCBfTlBOX0hhc01ldGhvZChOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgbWV0aG9k
TmFtZSkKIHZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QqLCBjb25zdCBOUFVURjgqIG1l
c3NhZ2UpCiB7CiAgICAgLy8gSWdub3JpbmcgdGhlIE5QT2JqZWN0IHBhcmFtIGlzIGNvbnNpc3Rl
bnQgd2l0aCB0aGUgTW96aWxsYSBpbXBsZW1lbnRhdGlvbi4KLSAgICBVU3RyaW5nIGV4Y2VwdGlv
bihtZXNzYWdlKTsKKyAgICBTdHJpbmcgZXhjZXB0aW9uKG1lc3NhZ2UpOwogICAgIENJbnN0YW5j
ZTo6c2V0R2xvYmFsRXhjZXB0aW9uKGV4Y2VwdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y19jbGFzcy5jcHAKaW5kZXggY2ZjMDI2YjI4Y2I5ZmViNjUzMzU3NmViZTgyMzY1OGYzOTVjN2Ji
Ny4uY2U1ZmQ1NDg5ZGM1NmQ3M2UwN2YwMzQ5ZWFiYmQzM2U0YjljZThlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY19jbGFzcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgQ0NsYXNzKiBDQ2xhc3M6OmNs
YXNzRm9ySXNBKE5QQ2xhc3MqIGlzYSkKIAogTWV0aG9kTGlzdCBDQ2xhc3M6Om1ldGhvZHNOYW1l
ZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7
Ci0gICAgVVN0cmluZyBuYW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmlu
ZyBuYW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIAogICAgIE1ldGhvZExpc3Qg
bWV0aG9kTGlzdDsKIApAQCAtOTcsNyArOTcsNyBAQCBNZXRob2RMaXN0IENDbGFzczo6bWV0aG9k
c05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgYwog
CiBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIElu
c3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKIHsKLSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CiAgICAgCiAgICAgRmllbGQqIGFGaWVsZCA9IF9maWVsZHMuZ2V0KG5hbWUuaW1wbCgpKTsK
ICAgICBpZiAoYUZpZWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19p
bnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAppbmRl
eCA1Yjk4ZjZlZTE5NGQxNWNmZmYyN2UyMmQ0Zjc3YmE5MDJhZWE0ZDkwLi4yMDFjNjFlODYxMWUz
MzkzZDRmZjk4MWY4ZTU3ZTIwMTljZGNjMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcApAQCAtNTQsMTUgKzU0LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
bmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCi11c2luZyBKU0M6OlVTdHJp
bmc7Ci0KLXN0YXRpYyBKU0M6OlVTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCitzdGF0
aWMgU3RyaW5nJiBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKQogewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSlNDOjpVU3RyaW5nLCBleGNlcHRpb25TdHIsICgpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7CiAgICAgcmV0dXJuIGV4Y2VwdGlvblN0
cjsKIH0KIAotdm9pZCBDSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbihVU3RyaW5nIGV4Y2Vw
dGlvbikKK3ZvaWQgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW5nIGV4Y2VwdGlv
bikKIHsKICAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IGV4Y2VwdGlvbjsKIH0KQEAgLTc3
LDcgKzc1LDcgQEAgdm9pZCBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKICAgICB9CiAKLSAgICBnbG9iYWxFeGNl
cHRpb25TdHJpbmcoKSA9IFVTdHJpbmcoKTsKKyAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9
IFN0cmluZygpOwogfQogCiBDSW5zdGFuY2U6OkNJbnN0YW5jZShOUE9iamVjdCogbywgUGFzc1Jl
ZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQpAQCAtMTEzLDcgKzExMSw3IEBAIGNsYXNzIENS
dW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHR5cGVk
ZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIENSdW50aW1lTWV0aG9kKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBV
U3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgQ1J1
bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3Qp
CiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2Vz
IHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8v
IFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgpAQCAt
MTM2LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxE
YXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfaW5zdGFuY2UuaAppbmRleCA2MWUzNDkxMWI4MTU0MzcyMjY4YjE3ZjUzNTM4
OGZlOTNjZjAxMDNjLi5kZGFjMGMyNmM2NzBlYWQ4ZTliMjY2NmQ1N2U3ZTFmNTBjZjY4ZmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCkBAIC0zMSwxMyArMzEsMTIgQEAKICNp
bmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB0
eXBlZGVmIHN0cnVjdCBOUE9iamVjdCBOUE9iamVjdDsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNs
YXNzIFVTdHJpbmc7Ci0KIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIENDbGFzczsKQEAg
LTQ5LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENJbnN0
YW5jZShvYmplY3QsIHJvb3RPYmplY3QpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRH
bG9iYWxFeGNlcHRpb24oSlNDOjpVU3RyaW5nIGV4Y2VwdGlvbik7CisgICAgc3RhdGljIHZvaWQg
c2V0R2xvYmFsRXhjZXB0aW9uKFN0cmluZyk7CiAgICAgc3RhdGljIHZvaWQgbW92ZUdsb2JhbEV4
Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwogCiAgICAgfkNJbnN0YW5jZSAoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCmluZGV4IDMwOGFmNWFmZGM1ZGQ1ZjAxMWQ2
ODQyYTg5MDFkMDM3YjEzZDUxMTMuLjVmZWNjNWMyNTBlYzhlYmVjMjE2NDVmNTAyYTJlY2IyNTJm
M2M3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcApAQCAtNzMsNyArNzMs
NyBAQCB2b2lkIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSwgTlBWYXJpYW50KiByZXN1bHQpCiAgICAgVk9JRF9UT19OUFZBUklBTlQoKnJlc3Vs
dCk7CiAKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBVU3RyaW5nIHVzdHJp
bmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyB1
c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBDU3Ry
aW5nIGNzdHJpbmcgPSB1c3RyaW5nLnV0ZjgoKTsKICAgICAgICAgTlBTdHJpbmcgc3RyaW5nID0g
eyAoY29uc3QgTlBVVEY4Kiljc3RyaW5nLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNz
dHJpbmcubGVuZ3RoKCkpIH07CiAgICAgICAgIE5QTl9Jbml0aWFsaXplVmFyaWFudFdpdGhTdHJp
bmdDb3B5KHJlc3VsdCwgJnN0cmluZyk7CkBAIC0xMjIsNyArMTIyLDcgQEAgSlNWYWx1ZSBjb252
ZXJ0TlBWYXJpYW50VG9WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IE5QVmFyaWFudCogdmFy
aWFudCwgUm9vdE8KICAgICBpZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX0RvdWJsZSkKICAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKE5QVkFSSUFOVF9UT19ET1VCTEUoKnZhcmlhbnQpKTsKICAgICBp
ZiAodHlwZSA9PSBOUFZhcmlhbnRUeXBlX1N0cmluZykKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OmpzU3RyaW5nKGV4ZWMsIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoJnZhcmlhbnQtPnZhbHVlLnN0
cmluZ1ZhbHVlKSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpqc1N0cmluZ1dpdGhDYWNoZShl
eGVjLCBjb252ZXJ0TlBTdHJpbmdUb1VURjE2KCZ2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZSkp
OwogICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfT2JqZWN0KSB7CiAgICAgICAgIE5QT2Jq
ZWN0KiBvYmogPSB2YXJpYW50LT52YWx1ZS5vYmplY3RWYWx1ZTsKICAgICAgICAgCkBAIC0xNDQs
NyArMTQ0LDcgQEAgU3RyaW5nIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoY29uc3QgTlBTdHJpbmcq
IHN0cmluZykKIAogSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IE5QVVRGOCogbmFtZSkKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcihl
eGVjLCBXZWJDb3JlOjpzdHJpbmdUb1VTdHJpbmcoY29udmVydFVURjhUb1VURjE2V2l0aExhdGlu
MUZhbGxiYWNrKG5hbWUsIC0xKSkpOworICAgIHJldHVybiBJZGVudGlmaWVyKGV4ZWMsIGNvbnZl
cnRVVEY4VG9VVEYxNldpdGhMYXRpbjFGYWxsYmFjayhuYW1lLCAtMSkpOwogfQogCiB9IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KaW5kZXggYjVhN2QyMjBiM2Ex
M2ZiMzNhYzUyZDYzZjFmZTRlZGE1YzY5ODljYi4uYTE5ZDM0MzQ5YjU0Mzc5N2I0Mjk1ZGNjZjMw
MWEzZjkwZjk2NGQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlf
anNvYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3Qu
bW0KQEAgLTQ4OCw3ICs0ODgsNyBAQCBqb2JqZWN0IEphdmFKU09iamVjdDo6Y29udmVydFZhbHVl
VG9KT2JqZWN0KEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQgPSBlbnYt
Pk5ld09iamVjdCAoSlNPYmplY3RDbGFzcywgY29uc3RydWN0b3JJRCwgKGpkb3VibGUpdmFsdWUu
dG9OdW1iZXIoZXhlYykpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh2YWx1ZS5pc1N0cmlu
ZygpKSB7Ci0gICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgSk5JRW52ICplbnYgPSBnZXRKTklFbnYo
KTsKICAgICAgICAgcmVzdWx0ID0gZW52LT5OZXdTdHJpbmcgKChjb25zdCBqY2hhciAqKXN0cmlu
Z1ZhbHVlLmNoYXJhY3RlcnMoKSwgc3RyaW5nVmFsdWUubGVuZ3RoKCkpOwogICAgIH0gZWxzZSBp
ZiAodmFsdWUuaXNCb29sZWFuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0pOSVV0aWxpdHlQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvanNjL0pOSVV0aWxpdHlQcml2YXRlLmNwcAppbmRleCBhM2IyYzJlN2RmZTIxMDEwZGEzNTZh
OWQ2MGNhNGRlMTM1ZWJmMDc5Li4zNzZiMDJhNDRmODdlNjc1OTJiOTVjYTZjMGZkNzgxMmI4ZDc2
MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KTklVdGlsaXR5
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JVXRpbGl0
eVByaXZhdGUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBqb2JqZWN0IGNvbnZlcnRBcnJh
eUluc3RhbmNlVG9KYXZhQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBqc0FycmF5CiAg
ICAgICAgICAgICAgICAgICAgIGVudi0+TmV3U3RyaW5nVVRGKCIiKSk7CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsKLSAgICAgICAgICAg
ICAgICAgICAgVVN0cmluZyBzdHJpbmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSBpdGVtLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICAgICAgZW52LT5TZXRP
YmplY3RBcnJheUVsZW1lbnQoamFycmF5LCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgZW52
LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIChjb25zdCBqY2hhciAqKXN0cmluZ1ZhbHVlLmNo
YXJhY3RlcnMoKSwgc3RyaW5nVmFsdWUubGVuZ3RoKCkpKTsKICAgICAgICAgICAgICAgICB9CkBA
IC05OCw3ICs5OCw3IEBAIHN0YXRpYyBqb2JqZWN0IGNvbnZlcnRBcnJheUluc3RhbmNlVG9KYXZh
QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBqc0FycmF5CiAgICAgICAgICAgICBqYXJy
YXkgPSAoam9iamVjdEFycmF5KWVudi0+TmV3Q2hhckFycmF5KGxlbmd0aCk7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIGl0ZW0gPSBqc0FycmF5LT5nZXQoZXhlYywgaSk7Ci0gICAgICAgICAgICAgICAg
VVN0cmluZyBzdHJpbmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwor
ICAgICAgICAgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgICAgICAgICAgICAgIGpjaGFyIHZhbHVlID0gMDsKICAgICAgICAg
ICAgICAgICBpZiAoc3RyaW5nVmFsdWUubGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSA9ICgoY29uc3QgamNoYXIqKXN0cmluZ1ZhbHVlLmNoYXJhY3RlcnMoKSlbMF07CkBA
IC0yMTksNyArMjE5LDcgQEAganZhbHVlIGNvbnZlcnRWYWx1ZVRvSlZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYywgUm9vdE9iamVjdCogcm9vdE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgICAgIC8v
IENyZWF0ZSBhbiBhcHByb3ByaWF0ZSBKYXZhIG9iamVjdCBpZiB0YXJnZXQgdHlwZSBpcyBqYXZh
LmxhbmcuT2JqZWN0LgogICAgICAgICAgICAgaWYgKCFyZXN1bHQubCAmJiAhc3RyY21wKGphdmFD
bGFzc05hbWUsICJqYXZhLmxhbmcuT2JqZWN0IikpIHsKICAgICAgICAgICAgICAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVl
ID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIHN0cmluZ1ZhbHVlID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKTsKICAgICAgICAg
ICAgICAgICAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKICAgICAgICAgICAgICAgICAg
ICAgam9iamVjdCBqYXZhU3RyaW5nID0gZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIChj
b25zdCBqY2hhciopc3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5ndGgo
KSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKQEAgLTIzOCw3
ICsyMzgsNyBAQCBqdmFsdWUgY29udmVydFZhbHVlVG9KVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBS
b290T2JqZWN0KiByb290T2JqZWN0LCBKU1ZhbHVlIHZhbAogICAgICAgICAgICAgICAgICAgICBq
b2JqZWN0IGphdmFCb29sZWFuID0gZW52LT5mdW5jdGlvbnMtPk5ld09iamVjdChlbnYsIGNsYXp6
LCBjb25zdHJ1Y3RvciwgYm9vbFZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lmwg
PSBqYXZhQm9vbGVhbjsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgVVN0cmluZyBzdHJpbmdWYWx1ZSA9ICJ1bmRl
ZmluZWQiOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSAidW5kZWZp
bmVkIjsKICAgICAgICAgICAgICAgICAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKICAg
ICAgICAgICAgICAgICAgICAgam9iamVjdCBqYXZhU3RyaW5nID0gZW52LT5mdW5jdGlvbnMtPk5l
d1N0cmluZyhlbnYsIChjb25zdCBqY2hhciopc3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJp
bmdWYWx1ZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2YVN0
cmluZzsKQEAgLTI0OSw3ICsyNDksNyBAQCBqdmFsdWUgY29udmVydFZhbHVlVG9KVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBSb290T2JqZWN0KiByb290T2JqZWN0LCBKU1ZhbHVlIHZhbAogICAgICAg
ICAgICAgLy8gY29udmVydGluZyBmcm9tIGEgbnVsbC4KICAgICAgICAgICAgIGlmICghcmVzdWx0
LmwgJiYgIXN0cmNtcChqYXZhQ2xhc3NOYW1lLCAiamF2YS5sYW5nLlN0cmluZyIpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkgewotICAgICAgICAgICAgICAgICAgICBV
U3RyaW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwor
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgICAgIEpOSUVudiogZW52ID0gZ2V0
Sk5JRW52KCk7CiAgICAgICAgICAgICAgICAgICAgIGpvYmplY3QgamF2YVN0cmluZyA9IGVudi0+
ZnVuY3Rpb25zLT5OZXdTdHJpbmcoZW52LCAoY29uc3QgamNoYXIqKXN0cmluZ1ZhbHVlLmNoYXJh
Y3RlcnMoKSwgc3RyaW5nVmFsdWUubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgICAgICByZXN1
bHQubCA9IGphdmFTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L2pzYy9KYXZhRmllbGRKU0MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2
YUZpZWxkSlNDLmNwcAppbmRleCAxZWJmMWU2MTc1MzA5NmUwOTkyODFlZTRmMDBjNzgyYTE4ZGI2
MGZiLi5jODcxNzU1MzE5ZWUxMGNkNzg0Njk5OTY2MzFhYjU1ZjBjNjNkZjgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhRmllbGRKU0MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFGaWVsZEpTQy5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBKU1ZhbHVlIEphdmFGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJbnN0YW5jZSogaSkgY29uc3QKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSBnZXR0aW5n
ICVzID0gJXMiLCBVU3RyaW5nKG5hbWUoKS5pbXBsKCkpLnV0ZjgoKS5kYXRhKCksIGpzcmVzdWx0
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HKExp
dmVDb25uZWN0LCAiSmF2YUZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSBnZXR0aW5nICVzID0gJXMi
LCBTdHJpbmcobmFtZSgpLmltcGwoKSkudXRmOCgpLmRhdGEoKSwganNyZXN1bHQudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIHJldHVybiBqc3Jlc3Vs
dDsKIH0KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEphdmFGaWVsZDo6c2V0VmFsdWVUb0luc3Rh
bmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGksIEpTVmFsdWUgYQogICAgIGNv
bnN0IEphdmFJbnN0YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxjb25zdCBKYXZhSW5zdGFu
Y2UqPihpKTsKICAgICBqdmFsdWUgamF2YVZhbHVlID0gY29udmVydFZhbHVlVG9KVmFsdWUoZXhl
YywgaS0+cm9vdE9iamVjdCgpLCBhVmFsdWUsIG1fdHlwZSwgdHlwZUNsYXNzTmFtZSgpKTsKIAot
ICAgIExPRyhMaXZlQ29ubmVjdCwgIkphdmFGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlIHNldHRp
bmcgdmFsdWUgJXMgdG8gJXMiLCBVU3RyaW5nKG5hbWUoKS5pbXBsKCkpLnV0ZjgoKS5kYXRhKCks
IGFWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKS5kYXRhKCkpOworICAg
IExPRyhMaXZlQ29ubmVjdCwgIkphdmFGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlIHNldHRpbmcg
dmFsdWUgJXMgdG8gJXMiLCBTdHJpbmcobmFtZSgpLmltcGwoKSkudXRmOCgpLmRhdGEoKSwgYVZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgSmF2YVR5cGVBcnJheToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCmluZGV4IDE1ZGZmYTVh
ZDU2NDI0OTYxMDYwN2NlYzA4YzMxOGU1NThkMDgzZjUuLmIyZGJlMGU4MzdjOTVlODNlNjJmNmFi
ZTk5OTkxOWU1ZWY5NDhjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
anNjL0phdmFJbnN0YW5jZUpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YUluc3RhbmNlSlNDLmNwcApAQCAtOTMsMTEgKzkzLDExIEBAIEpTVmFsdWUgSmF2YUlu
c3RhbmNlOjpzdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAKICAgICAvLyBTaG91
bGQgdGhyb3cgYSBKUyBleGNlcHRpb24sIHJhdGhlciB0aGFuIHJldHVybmluZyAiIj8gLSBidXQg
YmV0dGVyIHRoYW4gYSBudWxsIGRlcmVmZXJlbmNlLgogICAgIGlmICghc3RyaW5nVmFsdWUpCi0g
ICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBVU3RyaW5nKCkpOworICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgU3RyaW5nKCkpOyAvLyBGSVhNRTogd2h5IG5vdCBqc0VtcHR5U3RyaW5n
KGV4ZWMpPwogCiAgICAgSk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKICAgICBjb25zdCBqY2hh
ciogYyA9IGdldFVDaGFyYWN0ZXJzRnJvbUpTdHJpbmdJbkVudihlbnYsIHN0cmluZ1ZhbHVlKTsK
LSAgICBVU3RyaW5nIHUoKGNvbnN0IFVDaGFyKiljLCAoaW50KWVudi0+R2V0U3RyaW5nTGVuZ3Ro
KHN0cmluZ1ZhbHVlKSk7CisgICAgU3RyaW5nIHUoKGNvbnN0IFVDaGFyKiljLCAoaW50KWVudi0+
R2V0U3RyaW5nTGVuZ3RoKHN0cmluZ1ZhbHVlKSk7CiAgICAgcmVsZWFzZVVDaGFyYWN0ZXJzRm9y
SlN0cmluZ0luRW52KGVudiwgc3RyaW5nVmFsdWUsIGMpOwogICAgIHJldHVybiBqc1N0cmluZyhl
eGVjLCB1KTsKIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBKYXZhUnVudGltZU1ldGhvZCA6
IHB1YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRo
b2QgQmFzZTsKIAotICAgIHN0YXRpYyBKYXZhUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbmFt
ZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGljIEphdmFSdW50aW1lTWV0
aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsK
ICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJv
dG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVk
IHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTE0MSw3ICsx
NDEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFt
ZSk7CiAgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CkBAIC0xODcsNyArMTg3LDcg
QEAgSlNWYWx1ZSBKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1
bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QKICAgICB9CiAKICAgICBjb25zdCBKYXZhTWV0aG9k
KiBqTWV0aG9kID0gc3RhdGljX2Nhc3Q8Y29uc3QgSmF2YU1ldGhvZCo+KG1ldGhvZCk7Ci0gICAg
TE9HKExpdmVDb25uZWN0LCAiSmF2YUluc3RhbmNlOjppbnZva2VNZXRob2QgY2FsbCAlcyAlcyBv
biAlcCIsIFVTdHJpbmcoak1ldGhvZC0+bmFtZSgpLmltcGwoKSkudXRmOCgpLmRhdGEoKSwgak1l
dGhvZC0+c2lnbmF0dXJlKCksIG1faW5zdGFuY2UtPmluc3RhbmNlKCkpOworICAgIExPRyhMaXZl
Q29ubmVjdCwgIkphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kIGNhbGwgJXMgJXMgb24gJXAiLCBT
dHJpbmcoak1ldGhvZC0+bmFtZSgpLmltcGwoKSkudXRmOCgpLmRhdGEoKSwgak1ldGhvZC0+c2ln
bmF0dXJlKCksIG1faW5zdGFuY2UtPmluc3RhbmNlKCkpOwogCiAgICAgVmVjdG9yPGp2YWx1ZT4g
akFyZ3MoY291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KYXZhU3RyaW5nSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhU3Ry
aW5nSlNDLmgKaW5kZXggMWUxODAzYWExNDRhMDA0YmE5NmNlMmJjOWRkNzc0MTlmY2I0MzNmOS4u
MWNjNTQ3NGEzZGNlNjJjNjk3MWZiZTE4MDBlMTkwZmYyZWMzMWMwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pTQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaApAQCAtNTQsNyArNTQsNiBAQCBw
dWJsaWM6CiAgICAgSmF2YVN0cmluZygpCiAgICAgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLSAgICAg
ICAgbV9pbXBsID0gVVN0cmluZygpLmltcGwoKTsKICAgICB9CiAKICAgICB+SmF2YVN0cmluZygp
CkBAIC02Nyw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbV91dGY4U3Ry
aW5nLmRhdGEoKSkgewogICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soV2ViQ29yZTo6SlNE
T01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7Ci0gICAgICAgICAgICBtX3V0ZjhT
dHJpbmcgPSBVU3RyaW5nKG1faW1wbCkudXRmOCgpOworICAgICAgICAgICAgbV91dGY4U3RyaW5n
ID0gU3RyaW5nKG1faW1wbCkudXRmOCgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3V0
ZjhTdHJpbmcuZGF0YSgpOwogICAgIH0KQEAgLTgxLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY29uc3QgamNoYXIqIHVjID0gZ2V0VUNoYXJhY3RlcnNGcm9tSlN0cmluZ0luRW52KGUsIHMp
OwogICAgICAgICB7CiAgICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhXZWJDb3JlOjpKU0RP
TVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAgIG1faW1wbCA9
IFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHVjKSwgc2l6ZSkuaW1wbCgp
OworICAgICAgICAgICAgbV9pbXBsID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPih1YyksIHNpemUpLmltcGwoKTsKICAgICAgICAgfQogICAgICAgICByZWxlYXNlVUNoYXJh
Y3RlcnNGb3JKU3RyaW5nSW5FbnYoZSwgcywgdWMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IDJkMDg3MDQ1ODFlN2JhZjQ5MmVjZTc5MDliYzcz
NGNjMmUwN2I2NGEuLmJjYmQ3ZTdiYzdmY2NhODMzOGFjMzI0ZTBlNmVmMjdjNTA3NGNkZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtOTcsNyArOTcsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgY29udmVydEpTTWV0aG9kTmFtZVRvT2JqYyhjb25zdCBDU3Ry
aW5nJiBqc05hbWUsIEpTTmFtZUNvbnZlcgogCiBNZXRob2RMaXN0IE9iamNDbGFzczo6bWV0aG9k
c05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKIHsKLSAg
ICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIG5h
bWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBNZXRob2RMaXN0KCk7CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBNZXRob2RM
aXN0IE9iamNDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIElu
c3RhbmNlKikgY29uc3QKIAogRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7Ci0gICAgVVN0cmlu
ZyBuYW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyBuYW1lKHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0K
aW5kZXggOGE5N2I3ZGU4YmQxMGFjMzMyMjAwY2I2NTlhMmQxMzUzNGQ3NDRkMS4uNGY1YmVjYWFk
YmNhMTc1MThjYzY4MDRlYWRhNWI5MTU1ODM0ODQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBPYmpjSW5z
dGFuY2U6OnN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0CiAKIGNsYXNzIE9iakNS
dW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgotICAgIHN0YXRp
YyBPYmpDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExp
c3QmIGxpc3QpCisgICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRl
cHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3Jv
bmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0
IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7CiAgICAgICAgIEFTU0VSVChp
bmhlcml0cygmc19pbmZvKSk7CkBAIC00MDMsNyArNDAzLDcgQEAgSlNWYWx1ZSBPYmpjSW5zdGFu
Y2U6Omludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogCiBib29sIE9iamNJbnN0
YW5jZTo6c2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBhVmFsdWUpCiB7Ci0gICAgVVN0cmluZyBuYW1lKHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyBuYW1lKHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIE9iamNJbnN0YW5jZTo6c2V0VmFsdWVPZlVu
ZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcgogCiBKU1Zh
bHVlIE9iamNJbnN0YW5jZTo6Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKLSAgICBVU3RyaW5nIG5hbWUo
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIG5hbWUocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5o
CmluZGV4IDFkMTYwNDBjNzRhMzIzN2YyODRiYTMyNTI4MGI0YTE5NjQ2ZmQzNjcuLjBkYzJiODM0
OGNiMDllYmY4NmE1MGQzYTUyMjIzZGJjY2FjYjViN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIE9iamNGYWxsYmFj
a09iamVjdEltcCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE9iamNJbnN0YW5jZSogaW5zdGFuY2UsIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSkK
KyAgICBzdGF0aWMgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNlLCBj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXBy
ZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25n
IGdsb2JhbCBvYmplY3QKICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3Jl
OjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iamNGYWxsYmFja09iamVjdEltcD4oZXhlYyk7
CkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CiAKLSAgICBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUoKSBjb25zdCB7IHJl
dHVybiBfaXRlbTsgfQorICAgIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9pdGVtOyB9CiAKICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVhdGVQcm90
b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7CkBA
IC0xMjEsNyArMTIxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToKLSAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmpjSW5zdGFuY2UqLCBjb25zdCBVU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpOworICAgIE9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSosIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNv
bnN0OyAvLyBGSVhNRTogQ3VycmVudGx5IHRoaXMgaXMgYnJva2VuIGJlY2F1c2Ugbm9uZSBvZiB0
aGUgc3VwZXJjbGFzc2VzIGFyZSBtYXJrZWQgdmlydHVhbC4gV2UgbmVlZCB0byBzb2x2ZSB0aGlz
IGluIHRoZSBsb25nZXIgdGVybS4KIAogICAgIFJlZlB0cjxPYmpjSW5zdGFuY2U+IF9pbnN0YW5j
ZTsKLSAgICBVU3RyaW5nIF9pdGVtOworICAgIFN0cmluZyBtX2l0ZW07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBCaW5kaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCmluZGV4IDMzNTY2OGVjNjM1YWYxNzU3NjM5MWMxNWIxM2JmNjNlZmE0OTM4MWEuLmRiM2Y5
OGU2NWIxZTMzNzI3Yjg2M2ZhMzlkM2Q1YzYyZTUzYjk0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTE5MCwxMCArMTkwLDEwIEBAIHVuc2lnbmVk
IGludCBPYmpjQXJyYXk6OmdldExlbmd0aCgpIGNvbnN0CiAKIGNvbnN0IENsYXNzSW5mbyBPYmpj
RmFsbGJhY2tPYmplY3RJbXA6OnNfaW5mbyA9IHsgIk9iamNGYWxsYmFja09iamVjdCIsICZKU05v
bkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqY0ZhbGxi
YWNrT2JqZWN0SW1wKSB9OwogCi1PYmpjRmFsbGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09i
amVjdEltcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgT2JqY0luc3RhbmNlKiBpLCBjb25zdCBVU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCitPYmpjRmFs
bGJhY2tPYmplY3RJbXA6Ok9iamNGYWxsYmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqY0luc3RhbmNlKiBpLCBjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSkKICAgICAsIF9pbnN0YW5jZShpKQotICAgICwgX2l0
ZW0ocHJvcGVydHlOYW1lKQorICAgICwgbV9pdGVtKHByb3BlcnR5TmFtZSkKIHsKIH0KIApAQCAt
MjQ3LDggKzI0Nyw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxP
YmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChbdGFyZ2V0T2JqZWN0
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdl
YlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3Mg
PSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwogICAg
ICAgICBPd25QdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRvcHRQdHIobmV3IE9iamNN
ZXRob2Qob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZy
b21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSkpOwotICAgICAgICBjb25zdCBVU3RyaW5nJiBu
YW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4ZWMt
PmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbmFtZShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIG5hbWVJZGVu
dGlmaWVyLmNoYXJhY3RlcnMoKSwgbmFtZUlkZW50aWZpZXIubGVuZ3RoKCkpKTsKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09i
amVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CisgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0
cmluZygpKTsKICAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWUu
Z2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9rZU9iamNNZXRob2Qo
ZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwogICAgIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCBi
b29sIE9iamNGYWxsYmFja09iamVjdEltcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lKQogSlNWYWx1ZSBPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUpCiB7CiAgICAgY29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiB0aGlz
T2JqZWN0ID0ganNDYXN0PGNvbnN0IE9iamNGYWxsYmFja09iamVjdEltcCo+KG9iamVjdCk7Ci0g
ICAgcmV0dXJuIHRoaXNPYmplY3QtPl9pbnN0YW5jZS0+Z2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxk
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgdGhpc09iamVjdC0+X2l0ZW0pKTsKKyAgICByZXR1cm4g
dGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRl
bnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5tX2l0ZW0pKTsKIH0KIAogYm9vbCBPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OnRvQm9vbGVhbihFeGVjU3RhdGUgKikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQppbmRleCBiNjJlM2RmNjA4MGZhY2U2N2ZmMTVm
OTEyMDhlNTM5OTcwOGU4MjBhLi5lODYwMjQ3N2FlNjE0MzVjOGQzMjYzZjFiZWE4YTU5NmQzMGE2
NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHku
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCkBAIC0x
NDcsMTQgKzE0Nyw3IEBAIE9iamNWYWx1ZSBjb252ZXJ0VmFsdWVUb09iamNWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIE9iamNWYWx1ZVR5cGUKIEpTVmFsdWUgY29udmVydE5T
U3RyaW5nVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBOU1N0cmluZyAqbnNzdHJpbmcpCiB7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgCi0gICAgdW5pY2hhciAqY2hhcnM7Ci0g
ICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IFtuc3N0cmluZyBsZW5ndGhdOwotICAgIGNoYXJzID0g
KHVuaWNoYXIgKiltYWxsb2Moc2l6ZW9mKHVuaWNoYXIpKmxlbmd0aCk7Ci0gICAgW25zc3RyaW5n
IGdldENoYXJhY3RlcnM6Y2hhcnNdOwotICAgIFVTdHJpbmcgdSgoY29uc3QgVUNoYXIqKWNoYXJz
LCBsZW5ndGgpOwotICAgIEpTVmFsdWUgYVZhbHVlID0ganNTdHJpbmcoZXhlYywgdSk7Ci0gICAg
ZnJlZSgodm9pZCAqKWNoYXJzKTsKKyAgICBKU1ZhbHVlIGFWYWx1ZSA9IGpzU3RyaW5nKGV4ZWMs
IFN0cmluZyhuc3N0cmluZykpOwogICAgIHJldHVybiBhVmFsdWU7CiB9CiAKQEAgLTMxMSwxMSAr
MzA0LDcgQEAgT2JqY1ZhbHVlVHlwZSBvYmpjVmFsdWVUeXBlRm9yVHlwZShjb25zdCBjaGFyICp0
eXBlKQogSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBOU1N0cmluZyAqbWVz
c2FnZSkKIHsKICAgICBBU1NFUlQobWVzc2FnZSk7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IFttZXNz
YWdlIGxlbmd0aF07Ci0gICAgdW5pY2hhciAqYnVmZmVyID0gbmV3IHVuaWNoYXJbbGVuZ3RoXTsK
LSAgICBbbWVzc2FnZSBnZXRDaGFyYWN0ZXJzOmJ1ZmZlcl07Ci0gICAgSlNPYmplY3QgKmVycm9y
ID0gSlNDOjp0aHJvd0Vycm9yKGV4ZWMsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgVVN0cmluZyhi
dWZmZXIsIGxlbmd0aCkpKTsKLSAgICBkZWxldGUgW10gYnVmZmVyOworICAgIEpTT2JqZWN0ICpl
cnJvciA9IEpTQzo6dGhyb3dFcnJvcihleGVjLCBKU0M6OmNyZWF0ZUVycm9yKGV4ZWMsIFN0cmlu
ZyhtZXNzYWdlKSkpOwogICAgIHJldHVybiBlcnJvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9jbGFzcy5jcHAKaW5kZXggZTI0Njc2YTI5ZDY3YzQ0ODc1MmI0NjhhOTcxMzJjNmIwN2Ri
Njg2Zi4uNzYxNzg3MWYzZjNlMGVlM2MxYTg3ZDk4NTJjMDM5ODY0NTA5OWNlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEpTVmFsdWUgUXRD
bGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBJbnN0YW5jZSogaW5zdCwgUHJv
cGVydHlOYW1lIGlkCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSB0b1JlZihleGVjKTsKICAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAKLSAgICBVU3RyaW5nIHVzdHJpbmcoaWRlbnRp
Zmllci5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyB1c3RyaW5nKGlkZW50aWZpZXIucHVibGlj
TmFtZSgpKTsKICAgICBjb25zdCBRQnl0ZUFycmF5IG5hbWUgPSBRU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgUUNoYXIqPih1c3RyaW5nLmNoYXJhY3RlcnMoKSksIHVzdHJpbmcubGVuZ3Ro
KCkpLnRvTGF0aW4xKCk7CiAKICAgICAvLyBGaXJzdCBzZWUgaWYgd2UgaGF2ZSBhIGNhY2hlIGhp
dApAQCAtMTM2LDcgKzEzNiw3IEBAIEZpZWxkKiBRdENsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5
TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgUXRJbnN0YW5j
ZSogcXRpbnN0ID0gc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGluc3RhbmNlKTsKIAogICAgIFFP
YmplY3QqIG9iaiA9IHF0aW5zdC0+Z2V0T2JqZWN0KCk7Ci0gICAgVVN0cmluZyB1c3RyaW5nKGlk
ZW50aWZpZXIucHVibGljTmFtZSgpKTsKKyAgICBTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1
YmxpY05hbWUoKSk7CiAgICAgY29uc3QgUVN0cmluZyBuYW1lKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgUUNoYXIqPih1c3RyaW5nLmNoYXJhY3RlcnMoKSksIHVzdHJpbmcubGVuZ3RoKCkpOwogICAg
IGNvbnN0IFFCeXRlQXJyYXkgYXNjaWkgPSBuYW1lLnRvTGF0aW4xKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmluZGV4IDA0MTI1MzJhODVjZDYyMDNlZTRhNzkz
NGZhNWYwNzhhNjExNmQ2NTcuLjNmMDY5MTQyYWU0MWY1MDQxYmIyNzFmYTUwNjAxZjU0YTljYTJl
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcApAQCAtMjEzLDcg
KzIxMyw3IEBAIHZvaWQgUXRJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBhcnJheSkKICAgICAgICAgICAgIFFNZXRhTWV0aG9kIG1l
dGhvZCA9IG1ldGEtPm1ldGhvZChpKTsKICAgICAgICAgICAgIGlmIChtZXRob2QuYWNjZXNzKCkg
IT0gUU1ldGFNZXRob2Q6OlByaXZhdGUpIHsKICAgICAgICAgICAgICAgICBRQnl0ZUFycmF5IHNp
ZyA9IG1ldGhvZC5tZXRob2RTaWduYXR1cmUoKTsKLSAgICAgICAgICAgICAgICBhcnJheS5hZGQo
SWRlbnRpZmllcihleGVjLCBVU3RyaW5nKHNpZy5jb25zdERhdGEoKSwgc2lnLmxlbmd0aCgpKSkp
OworICAgICAgICAgICAgICAgIGFycmF5LmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhzaWcu
Y29uc3REYXRhKCksIHNpZy5sZW5ndGgoKSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50
aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcApp
bmRleCBhMmRhYWRhODMxZTBiYzRlN2Q4NzVkMzAwMTA5ZTk0OTgwM2ViMjI3Li42MjBjYzQzZTNh
ZmZlOTg4NTFkMmY1NDM3MmRhYjZjNTY3ODRlYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCkBAIC0xNzEsOCArMTcxLDggQEAgcHVibGljOgog
ICAgICAgICBRQnVmZmVyIGJ1ZmZlcigmYnl0ZUFycmF5KTsKICAgICAgICAgaW5zdGFuY2UtPnRv
SW1hZ2UoKS5zYXZlKCZidWZmZXIsICJQTkciKTsKICAgICAgICAgY29uc3QgUVN0cmluZyBlbmNv
ZGVkU3RyaW5nID0gUUxhdGluMVN0cmluZygiZGF0YTppbWFnZS9wbmc7YmFzZTY0LCIpICsgUUxh
dGluMVN0cmluZyhieXRlQXJyYXkudG9CYXNlNjQoKSk7Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcg
dXN0cmluZygoVUNoYXIqKWVuY29kZWRTdHJpbmcudXRmMTYoKSwgZW5jb2RlZFN0cmluZy5sZW5n
dGgoKSk7Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB1c3RyaW5nKTsKKyAgICAgICAg
Y29uc3QgU3RyaW5nIHVzdHJpbmcoKFVDaGFyKillbmNvZGVkU3RyaW5nLnV0ZjE2KCksIGVuY29k
ZWRTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gSlNDOjpqc1N0cmluZyhleGVjLCB1
c3RyaW5nKTsKICAgICB9CiB9OwogCkBAIC0yNTksNyArMjU5LDcgQEAgSlNWYWx1ZSBRdFBpeG1h
cEluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBy
dW50aW1lTWUKIE1ldGhvZExpc3QgUXRQaXhtYXBDbGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5
TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiB7CiAgICAgTWV0aG9kTGlzdCBtZXRo
b2RzOwotICAgIFVTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7CisgICAg
U3RyaW5nIHVzdHJpbmcoaWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOwogICAgIGlmICh1c3RyaW5n
ID09IFF0UGl4bWFwVG9EYXRhVXJsTWV0aG9kOjpuYW1lKCkpCiAgICAgICAgIG1ldGhvZHMuYXBw
ZW5kKCZxdF9waXhtYXBfbWV0YURhdGEudG9EYXRhVXJsTWV0aG9kKTsKICAgICBlbHNlIGlmICh1
c3RyaW5nID09IFF0UGl4bWFwVG9JbWFnZURhdGFNZXRob2Q6Om5hbWUoKSkKQEAgLTI3Myw3ICsy
NzMsNyBAQCBNZXRob2RMaXN0IFF0UGl4bWFwQ2xhc3M6Om1ldGhvZHNOYW1lZChQcm9wZXJ0eU5h
bWUgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogCiBGaWVsZCogUXRQaXhtYXBDbGFzczo6
ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgaWRlbnRpZmllciwgSW5zdGFuY2UqKSBjb25zdAogewot
ICAgIFVTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5n
IHVzdHJpbmcoaWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOwogICAgIGlmICh1c3RyaW5nID09IFF0
UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKQogICAgICAgICByZXR1cm4gJnF0X3BpeG1hcF9tZXRh
RGF0YS53aWR0aEZpZWxkOwogICAgIGlmICh1c3RyaW5nID09IFF0UGl4bWFwSGVpZ2h0RmllbGQ6
Om5hbWUoKSkKQEAgLTI4MywxMiArMjgzLDEyIEBAIEZpZWxkKiBRdFBpeG1hcENsYXNzOjpmaWVs
ZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiAKIHZvaWQg
UXRQaXhtYXBJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIGFycikKIHsKLSAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmlu
ZyhRdFBpeG1hcFRvRGF0YVVybE1ldGhvZDo6bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwVG9JbWFnZURhdGFNZXRob2Q6Om5hbWUoKSkpKTsK
LSAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcEFzc2lnblRvRWxl
bWVudE1ldGhvZDo6bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3Ry
aW5nKFF0UGl4bWFwVG9TdHJpbmdNZXRob2Q6Om5hbWUoKSkpKTsKLSAgICBhcnIuYWRkKElkZW50
aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcFdpZHRoRmllbGQ6Om5hbWUoKSkpKTsKLSAgICBh
cnIuYWRkKElkZW50aWZpZXIoZXhlYywgVVN0cmluZyhRdFBpeG1hcEhlaWdodEZpZWxkOjpuYW1l
KCkpKSk7CisgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhRdFBpeG1hcFRvRGF0
YVVybE1ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBTdHJp
bmcoUXRQaXhtYXBUb0ltYWdlRGF0YU1ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQoSWRl
bnRpZmllcihleGVjLCBTdHJpbmcoUXRQaXhtYXBBc3NpZ25Ub0VsZW1lbnRNZXRob2Q6Om5hbWUo
KSkpKTsKKyAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgU3RyaW5nKFF0UGl4bWFwVG9TdHJp
bmdNZXRob2Q6Om5hbWUoKSkpKTsKKyAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgU3RyaW5n
KFF0UGl4bWFwV2lkdGhGaWVsZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQoSWRlbnRpZmllcihl
eGVjLCBTdHJpbmcoUXRQaXhtYXBIZWlnaHRGaWVsZDo6bmFtZSgpKSkpOwogfQogCiBKU1ZhbHVl
IFF0UGl4bWFwSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJl
ZFByaW1pdGl2ZVR5cGUgcHR5cGUpIGNvbnN0CkBAIC0zMDgsOCArMzA4LDggQEAgSlNWYWx1ZSBR
dFBpeG1hcEluc3RhbmNlOjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlIHAKIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6dmFsdWVPZihFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgY29uc3QgUVN0cmluZyBzdHJpbmdWYWx1ZSA9IFFTdHJp
bmc6OmZyb21MYXRpbjEoIltRdCBOYXRpdmUgUGl4bWFwICUxLCUyXSIpLmFyZyh3aWR0aCgpKS5h
cmcoaGVpZ2h0KCkpOwotICAgIFVTdHJpbmcgdXN0cmluZygoVUNoYXIqKXN0cmluZ1ZhbHVlLnV0
ZjE2KCksIHN0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywg
dXN0cmluZyk7CisgICAgU3RyaW5nIHVzdHJpbmcoKFVDaGFyKilzdHJpbmdWYWx1ZS51dGYxNigp
LCBzdHJpbmdWYWx1ZS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIEpTQzo6anNTdHJpbmcoZXhlYywg
dXN0cmluZyk7CiB9CiAKIFF0UGl4bWFwSW5zdGFuY2U6OlF0UGl4bWFwSW5zdGFuY2UoUGFzc1Jl
ZlB0cjxSb290T2JqZWN0PiByb290T2JqLCBjb25zdCBRVmFyaWFudCYgZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAppbmRleCAwZGI1YTg3M2MxZjEyZGVmYzE4MDVlOGQ0
YTAzMzhmNWU1MDk1M2ViLi45ODkyMTM1NGM3NTIwZTBjN2Q2NmI4NWFjMDU3MTEyMDkyMjJlODEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgVmFyaWFudCA9IDAsCiAgICAgTnVtYmVyLAogICAgIEJv
b2xlYW4sCi0gICAgU3RyaW5nLAorICAgIFJUU3RyaW5nLAogICAgIERhdGUsCiAgICAgQXJyYXks
CiAgICAgUU9iaiwKQEAgLTExMCw3ICsxMTAsNyBAQCB0eXBlZGVmIGVudW0gewogI2lmIGRlZmlu
ZWQoUVRXS19SVU5USU1FX0NPTlZFUlNJT05fREVCVUcpIHx8IGRlZmluZWQoUVRXS19SVU5USU1F
X01BVENIX0RFQlVHKQogUURlYnVnIG9wZXJhdG9yPDwoUURlYnVnIGRiZywgY29uc3QgSlNSZWFs
VHlwZSAmYykKIHsKLSAgICAgY29uc3QgY2hhciAqbWFwW10gPSB7ICJWYXJpYW50IiwgIk51bWJl
ciIsICJCb29sZWFuIiwgIlN0cmluZyIsICJEYXRlIiwKKyAgICAgY29uc3QgY2hhciAqbWFwW10g
PSB7ICJWYXJpYW50IiwgIk51bWJlciIsICJCb29sZWFuIiwgIlJUU3RyaW5nIiwgIkRhdGUiLAog
ICAgICAgICAgIkFycmF5IiwgIlJUT2JqZWN0IiwgIk9iamVjdCIsICJOdWxsIiwgIlJUQXJyYXki
fTsKIAogICAgICBkYmcubm9zcGFjZSgpIDw8ICJKU1R5cGUoIiA8PCAoKGludCljKSA8PCAiLCAi
IDw8ICBtYXBbY10gPDwgIikiOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBKU1JlYWxUeXBl
IHZhbHVlUmVhbFR5cGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbCkKICAgICBpZiAodmFs
LmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBOdW1iZXI7CiAgICAgZWxzZSBpZiAodmFsLmlz
U3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmc7CisgICAgICAgIHJldHVybiBSVFN0cmlu
ZzsKICAgICBlbHNlIGlmICh2YWwuaXNCb29sZWFuKCkpCiAgICAgICAgIHJldHVybiBCb29sZWFu
OwogICAgIGVsc2UgaWYgKHZhbC5pc051bGwoKSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMg
SlNSZWFsVHlwZSB2YWx1ZVJlYWxUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwpCiAg
ICAgICAgIHJldHVybiBPYmplY3Q7CiAgICAgfQogCi0gICAgcmV0dXJuIFN0cmluZzsgLy8gSSBk
b24ndCBrbm93LgorICAgIHJldHVybiBSVFN0cmluZzsgLy8gSSBkb24ndCBrbm93LgogfQogCiBR
VmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFFNZXRh
VHlwZTo6VHlwZSwgaW50KiwgSGFzaFNldDxKU09iamVjdCo+KiwgaW50KTsKQEAgLTE5OSw3ICsx
OTksNyBAQCBzdGF0aWMgUVZhcmlhbnRNYXAgY29udmVydFZhbHVlVG9RVmFyaWFudE1hcChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsCiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICBRVmFyaWFudCB2ID0gY29udmVydFZhbHVlVG9RVmFyaWFudChleGVjLCB2YWws
IFFNZXRhVHlwZTo6Vm9pZCwgJm9iamRpc3QsIHZpc2l0ZWRPYmplY3RzLCByZWN1cnNpb25MaW1p
dCk7CiAgICAgICAgICAgICAgICAgaWYgKG9iamRpc3QgPj0gMCkgewotICAgICAgICAgICAgICAg
ICAgICBVU3RyaW5nIHVzdHJpbmcgPSAoKml0KS51c3RyaW5nKCk7CisgICAgICAgICAgICAgICAg
ICAgIFdURjo6U3RyaW5nIHVzdHJpbmcgPSAoKml0KS51c3RyaW5nKCk7CiAgICAgICAgICAgICAg
ICAgICAgIFFTdHJpbmcgaWQgPSBRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBsKCkt
PmNoYXJhY3RlcnMoKSwgdXN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5pbnNlcnQoaWQsIHYpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI0Niw3ICsyNDYsNyBA
QCBRVmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSwgUU1ldGFUeXBlOjpUeXBlCiAgICAgICAgICAgICBjYXNlIEJvb2xlYW46CiAgICAg
ICAgICAgICAgICAgaGludCA9IFFNZXRhVHlwZTo6Qm9vbDsKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgU3RyaW5nOgorICAgICAgICAgICAgY2FzZSBSVFN0cmluZzoK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgaGludCA9IFFNZXRhVHlwZTo6
UVN0cmluZzsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTM1NCw5ICszNTQsOSBAQCBRVmFy
aWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSwgUU1ldGFUeXBlOjpUeXBlCiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBkaXN0ID0gNjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgVVN0
cmluZyBzdHIgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAg
ICAgICAgV1RGOjpTdHJpbmcgc3RyID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgICAgICAgICAgICAgIHJldCA9IFFWYXJpYW50KFFDaGFyKHN0ci5sZW5ndGgoKSA/ICoo
Y29uc3QgdXNob3J0KilzdHIuaW1wbCgpLT5jaGFyYWN0ZXJzKCkgOiAwKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHR5cGUgPT0gU3RyaW5nKQorICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJU
U3RyaW5nKQogICAgICAgICAgICAgICAgICAgICBkaXN0ID0gMzsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSAxMDsKQEAgLTM2OSw5ICszNjksOSBAQCBR
VmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSwgUU1ldGFUeXBlOjpUeXBlCiAgICAgICAgICAgICAgICAgICAgICpkaXN0YW5jZSA9IDE7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgVVN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgICAgIFdURjo6U3RyaW5nIHVzdHJpbmcgPSB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgcmV0ID0gUVZh
cmlhbnQoUVN0cmluZygoY29uc3QgUUNoYXIqKXVzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCks
IHVzdHJpbmcubGVuZ3RoKCkpKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBTdHJpbmcp
CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gUlRTdHJpbmcpCiAgICAgICAgICAgICAgICAg
ICAgIGRpc3QgPSAwOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ZGlzdCA9IDEwOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZh
cmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAg
ICAgICAgICAgICAgICBpbnQgbGVuID0gcnRhcnJheS0+Z2V0TGVuZ3RoKCk7CiAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIHZhbCA9IHJ0YXJyYXktPmdldENvbmNyZXRlQXJyYXkoKS0+dmFsdWVBdChleGVj
LCBpKTsKLSAgICAgICAgICAgICAgICAgICAgVVN0cmluZyB1c3RyaW5nID0gdmFsLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgV1RGOjpTdHJpbmcgdXN0
cmluZyA9IHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAg
ICAgIFFTdHJpbmcgcXN0cmluZyA9IFFTdHJpbmcoKGNvbnN0IFFDaGFyKil1c3RyaW5nLmltcGwo
KS0+Y2hhcmFjdGVycygpLCB1c3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHFzdHJpbmcpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIFFWYXJpYW50IGNv
bnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0
YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICBpbnQgbGVuID0gYXJyYXktPmxlbmd0aCgpOwog
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSB2YWwgPSBhcnJheS0+Z2V0KGV4ZWMsIGkpOwotICAgICAgICAg
ICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgICAgICAgICAgICAgICAgICBXVEY6OlN0cmluZyB1c3RyaW5nID0gdmFsLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBxc3Ry
aW5nID0gUVN0cmluZygoY29uc3QgUUNoYXIqKXVzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCks
IHVzdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
cXN0cmluZyk7CkBAIC00NzMsNyArNDczLDcgQEAgUVZhcmlhbnQgY29udmVydFZhbHVlVG9RVmFy
aWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFFNZXRhVHlwZTo6VHlwZQogICAg
ICAgICAgICAgICAgIHJldCA9IFFWYXJpYW50KHJlc3VsdCk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIE1ha2UgYSBzaW5nbGUgbGVuZ3RoIGFycmF5Ci0gICAgICAg
ICAgICAgICAgVVN0cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgICAgICAgICAgICAgIFdURjo6U3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgUVN0cmluZyBxc3RyaW5nID0g
UVN0cmluZygoY29uc3QgUUNoYXIqKXVzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCksIHVzdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFFTdHJpbmdMaXN0IHJlc3VsdDsKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHFzdHJpbmcpOwpAQCAtNDg5LDkgKzQ4OSw5IEBAIFFW
YXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICByZXQgPSBRVmFyaWFudChRQnl0
ZUFycmF5KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGFyci0+ZGF0YSgpKSwgYXJyLT5s
ZW5ndGgoKSkpOwogICAgICAgICAgICAgICAgIGRpc3QgPSAwOwogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgV1RGOjpTdHJpbmcgdXN0cmluZyA9IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICByZXQgPSBR
VmFyaWFudChRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBsKCktPmNoYXJhY3RlcnMo
KSwgdXN0cmluZy5sZW5ndGgoKSkudG9MYXRpbjEoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5
cGUgPT0gU3RyaW5nKQorICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJUU3RyaW5nKQogICAg
ICAgICAgICAgICAgICAgICBkaXN0ID0gNTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGRpc3QgPSAxMDsKQEAgLTUzMSw4ICs1MzEsOCBAQCBRVmFyaWFudCBjb252
ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUU1ldGFU
eXBlOjpUeXBlCiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSAxMDsKICAgICAgICAgICAgICAg
ICB9CiAjaWZuZGVmIFFUX05PX0RBVEVTVFJJTkcKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlw
ZSA9PSBTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gUlRTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBXVEY6OlN0cmluZyB1c3RyaW5nID0gdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICAgICAgICAgIFFTdHJpbmcg
cXN0cmluZyA9IFFTdHJpbmcoKGNvbnN0IFFDaGFyKil1c3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVy
cygpLCB1c3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAgICAgICAgIGlmIChoaW50ID09IFFN
ZXRhVHlwZTo6UURhdGVUaW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmNwcAppbmRleCA0ZGM0ZTZkN2U3NDNkMDJhYzZjN2MwMjU3YTE5Njg1NzY3NDNhNGE3Li45ZmRi
NjRkZjczY2UwYzhlYTc0NGNjNzk0ODE2NWMzNjU1YWJiNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBSdW50aW1lTWV0
aG9kOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2FzdDxSdW50aW1lTWV0aG9k
Kj4oY2VsbCktPlJ1bnRpbWVNZXRob2Q6On5SdW50aW1lTWV0aG9kKCk7CiB9CiAKLXZvaWQgUnVu
dGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBVU3RyaW5nJiBpZGVudCkKK3ZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIGlkZW50KQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGlkZW50KTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
JnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAppbmRleCBmNjI5
NTc4ZWZmMWVjN2M5NjgzOWVjYTBkNGZiMzk3MjUxYzUzZmRmLi43NDgxNjA1ZDQ0MTU4Yzk4MDky
MDMyMWQzMTEwYTQ5NDRmYmE1ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogCi0gICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkK
KyAgICBzdGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExpc3QpCiAgICAgewogICAgICAg
ICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50
aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgbWV0aG9kTGlzdCk7CiAgICAgICAgIG1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgUnVudGltZU1ldGhvZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJp
bmRpbmdzOjpNZXRob2RMaXN0Jik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmLCBjb25zdCBVU3RyaW5nJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpT
dHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5k
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcAppbmRleCBm
ZTlmYzFiMDRhZGExMjAzYTc4YTliYzhlNTBhNDIxMzY3MmU5MDkwLi5iNDNiNzVkNTZmY2MxMzM3
NzA1Y2I3ZWY5ODA5YWQ2ZjI0MGM3NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvdGVzdGJpbmRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRp
bmdzLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdz
OwogCiBjbGFzcyBHbG9iYWxJbXAgOiBwdWJsaWMgT2JqZWN0SW1wIHsKIHB1YmxpYzoKLSAgdmly
dHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9CisgICAg
dmlydHVhbCBTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gImdsb2JhbCI7IH0KIH07
CiAKICNkZWZpbmUgQnVmZmVyU2l6ZSAyMDAwMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRp
bmdzLm1tCmluZGV4IGVmM2JjNGUxZTJkMWE4ZTk5ZDBkMGMyMDQ4NzE1OTAwOGJhZGVhMWIuLmU1
MGYxNmFiN2I4ZTRjNDQxYTljMDA5NjNiYjhlYzIyYTUxMDc1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3Rlc3RiaW5kaW5ncy5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M6OkJpbmRpbmdzOwogCiBjbGFzcyBHbG9iYWxJbXAgOiBwdWJsaWMgT2JqZWN0SW1wIHsKIHB1
YmxpYzoKLSAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9i
YWwiOyB9CisgIHZpcnR1YWwgU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9i
YWwiOyB9CiB9OwogCiAjZGVmaW5lIEJ1ZmZlclNpemUgMjAwMDAwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3Rlc3RxdGJpbmRpbmdzLmNwcAppbmRleCBhNGY0ZDVhMTRjMTA1YmZkMjM5ODE0MTZmY2M0
NWMxMTU1ZmRmNTE5Li43ZDNkNDE2YTVmNWIxZWFkYTk2Yzg4MWIzNWZjMzRmM2VjMjAzNTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0cXRiaW5kaW5ncy5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgY2xhc3MgR2xvYmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIFVTdHJpbmcgY2xh
c3NOYW1lKGNvbnN0IEpTT2JqZWN0KikgeyByZXR1cm4gImdsb2JhbCI7IH0KKyAgICBzdGF0aWMg
U3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopIHsgcmV0dXJuICJnbG9iYWwiOyB9CiB9
OwogCiBzdGF0aWMgY2hhciBjb2RlW10gPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxzLmNwcAppbmRleCAwNTRkYTM0OGZlNjNhZTk2NjFkMzA2ZjhiMjE2
NDM0YzBmNjliNjZiLi5hM2Y4M2MyZDY4NGI0ODU4OTgwZDMxMGQzNDVkMzM2MjFmNzAzOTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcApA
QCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBTdHJpbmcgcGF0dGVy
blN0cmluZyA9ICIvL0BbXDA0MFx0XSIgKyBuYW1lICsgIj1bXDA0MFx0XSooW15cXHNcJ1wiXSop
W1wwNDBcdF0qJCI7CiAgICAgY29uc3QgY2hhciogZXJyb3IgPSAwOwotICAgIEpTQzo6WWFycjo6
WWFyclBhdHRlcm4gcGF0dGVybihKU0M6OlVTdHJpbmcocGF0dGVyblN0cmluZy5pbXBsKCkpLCBm
YWxzZSwgdHJ1ZSwgJmVycm9yKTsKKyAgICBKU0M6OllhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4o
cGF0dGVyblN0cmluZywgZmFsc2UsIHRydWUsICZlcnJvcik7CiAgICAgQVNTRVJUKCFlcnJvcik7
CiAgICAgQnVtcFBvaW50ZXJBbGxvY2F0b3IgcmVnZXhBbGxvY2F0b3I7CiAgICAgT3duUHRyPEpT
Qzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlY29kZVBhdHRlcm4gPSBKU0M6OllhcnI6OmJ5
dGVDb21waWxlKHBhdHRlcm4sICZyZWdleEFsbG9jYXRvcik7CkBAIC0xNTMsNyArMTUzLDcgQEAg
c3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVudCwgY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgIEFTU0VSVChwYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgPT0g
MSk7CiAgICAgVmVjdG9yPGludCwgND4gbWF0Y2hlczsKICAgICBtYXRjaGVzLnJlc2l6ZSg0KTsK
LSAgICB1bnNpZ25lZCByZXN1bHQgPSBKU0M6OllhcnI6OmludGVycHJldChieXRlY29kZVBhdHRl
cm4uZ2V0KCksIEpTQzo6VVN0cmluZyhjb250ZW50LmltcGwoKSksIDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQqPihtYXRjaGVzLmRhdGEoKSkpOworICAgIHVuc2lnbmVkIHJlc3VsdCA9IEpT
Qzo6WWFycjo6aW50ZXJwcmV0KGJ5dGVjb2RlUGF0dGVybi5nZXQoKSwgY29udGVudCwgMCwgcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1hdGNoZXMuZGF0YSgpKSk7CiAgICAgaWYgKHJlc3Vs
dCA9PSBKU0M6OllhcnI6Om9mZnNldE5vTWF0Y2gpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICBBU1NFUlQobWF0Y2hlc1syXSA+IDAgJiYgbWF0Y2hlc1szXSA+IDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS1VSTC5oCmluZGV4IGZiZjlmODIzN2ZhYTE2MGViMGRhNjliNjQ2YTNkODNhOWMyZjRkMDQu
LmEzODBlZGY4ODIzOTc0ZDg2ZTA3N2E1MzBiYzFmNDA2NDZjMDRiNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmgKQEAgLTQ4LDEwICs0OCw2IEBAIFFUX0VORF9OQU1FU1BBQ0UKICNpbmNsdWRlICJL
VVJMR29vZ2xlUHJpdmF0ZS5oIgogI2VuZGlmCiAKLSNpZiBVU0UoSlNDKQotI2luY2x1ZGUgPHJ1
bnRpbWUvVVN0cmluZy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
VGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9S
ZWd1bGFyRXhwcmVzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3Vs
YXJFeHByZXNzaW9uLmNwcAppbmRleCBmNzRmOTU3ZGNkMzkzNDZiZTJhNWI1YzM2Yjk1Yzg0NGYy
M2E0OTY0Li4yMzY5NTkwODU1NmU5NTIxN2U1ZTY5NjlkMzQ5MzhlOGFkYjljMmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgUGFzc093blB0cjxKU0M6OllhcnI6OkJ5
dGVjb2RlUGF0dGVybj4gY29tcGlsZShjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFRleHRD
YXNlU2Vuc2l0aXZpdHkgY2FzZVNlbnNpdGl2aXR5KQogICAgIHsKLSAgICAgICAgSlNDOjpZYXJy
OjpZYXJyUGF0dGVybiBwYXR0ZXJuKEpTQzo6VVN0cmluZyhwYXR0ZXJuU3RyaW5nLmltcGwoKSks
IChjYXNlU2Vuc2l0aXZpdHkgPT0gVGV4dENhc2VJbnNlbnNpdGl2ZSksIGZhbHNlLCAmbV9jb25z
dHJ1Y3Rpb25FcnJvcik7CisgICAgICAgIEpTQzo6WWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihw
YXR0ZXJuU3RyaW5nLCAoY2FzZVNlbnNpdGl2aXR5ID09IFRleHRDYXNlSW5zZW5zaXRpdmUpLCBm
YWxzZSwgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogICAgICAgICBpZiAobV9jb25zdHJ1Y3Rpb25F
cnJvcikgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJSZWd1bGFyRXhwcmVzc2lvbjogWUFSUiBj
b21waWxlIGZhaWxlZCB3aXRoICclcyciLCBtX2NvbnN0cnVjdGlvbkVycm9yKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyLDcgKzExMiw3IEBAIGludCBSZWd1bGFyRXhwcmVz
c2lvbjo6bWF0Y2goY29uc3QgU3RyaW5nJiBzdHIsIGludCBzdGFydEZyb20sIGludCogbWF0Y2hM
ZW5ndGgpCiAKICAgICB1bnNpZ25lZCByZXN1bHQ7CiAgICAgaWYgKHN0ci5sZW5ndGgoKSA8PSBJ
TlRfTUFYKQotICAgICAgICByZXN1bHQgPSBKU0M6OllhcnI6OmludGVycHJldChkLT5tX3JlZ0V4
cEJ5dGVDb2RlLmdldCgpLCBKU0M6OlVTdHJpbmcoc3RyLmltcGwoKSksIHN0YXJ0RnJvbSwgb2Zm
c2V0VmVjdG9yKTsKKyAgICAgICAgcmVzdWx0ID0gSlNDOjpZYXJyOjppbnRlcnByZXQoZC0+bV9y
ZWdFeHBCeXRlQ29kZS5nZXQoKSwgc3RyLCBzdGFydEZyb20sIG9mZnNldFZlY3Rvcik7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgY29kZSBjYW4ndCBoYW5kbGUgdW5zaWduZWQgb2Zmc2V0
cy4gTGltaXQgb3VyIHByb2Nlc3NpbmcgdG8gc3RyaW5ncyB3aXRoIG9mZnNldHMgdGhhdCAKICAg
ICAgICAgLy8gY2FuIGJlIHJlcHJlc2VudGVkIGFzIGludHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQlN0cmluZy5jcHAKaW5kZXggODcyYWI3ZWFjMDIzYzAwYTMyMDM5ODg5NGYzZDk4OWU0
NzYyY2YwYi4uYTU3N2VmNTQ1NTBhYTE3YjIzMDVlNzI2MzQ5ZmY1YzkyMDRhNmNlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtODQsMTQgKzg0LDYgQEAgQlN0
cmluZzo6QlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHMpCiAgICAgICAgIG1fYnN0ciA9IFN5
c0FsbG9jU3RyaW5nTGVuKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsKIH0KIAotQlN0cmlu
Zzo6QlN0cmluZyhjb25zdCBVU3RyaW5nJiBzKQotewotICAgIGlmIChzLmlzTnVsbCgpKQotICAg
ICAgICBtX2JzdHIgPSAwOwotICAgIGVsc2UKLSAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJp
bmdMZW4ocy5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpOwotfQotCiAjaWYgVVNFKENGKQogQlN0
cmluZzo6QlN0cmluZyhDRlN0cmluZ1JlZiBjZnN0cikKICAgICA6IG1fYnN0cigwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKaW5kZXggOTIyZDNlMmZiNDYwNDFhYTdjNDI2ZDU5
MGQ3MTc1MTdjOTQxNmRjYi4uNzM3M2VlZGFkZmY2OTE2ZTkyMGY2OTBkOTllMmM3MjMxNzcyM2Y5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCkBAIC0zNCwxMCArMzQsNiBA
QCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7CiAKIHR5cGVk
ZWYgd2NoYXJfdCogQlNUUjsKIAotbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgVVN0cmluZzsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgS1VSTDsKQEAgLTUwLDcgKzQ2
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBCU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwogICAgICAgICBCU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgICAgICBCU3RyaW5n
KGNvbnN0IEtVUkwmKTsKLSAgICAgICAgQlN0cmluZyhjb25zdCBKU0M6OlVTdHJpbmcmKTsKICNp
ZiBVU0UoQ0YpCiAgICAgICAgIEJTdHJpbmcoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAwZDY4NTdmMjVjNGM5ODg2NDZhYjEwODUw
YjQzNTcwN2U4YjkyYWFjLi5kZDIyMGQ4Nzg4YjViYzVhYzNiYjBlNjRjODVjMWNkZDc3YzJhYTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTY0LDYgKzY0LDcgQEAK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2luY2x1
ZGUgIlBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaCIKQEAgLTgxLDcgKzgyLDYgQEAgdXNpbmcg
SlNDOjpFeGVjU3RhdGU7CiB1c2luZyBKU0M6OkpTTG9jazsKIHVzaW5nIEpTQzo6SlNPYmplY3Q7
CiB1c2luZyBKU0M6OkpTVmFsdWU7Ci11c2luZyBKU0M6OlVTdHJpbmc7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAKaW5kZXggMmNj
OTZkNWUyMjMyYTc0MmQzODMyZmVhMzdkZTEzMjZlNjJjNjE4NC4uZjU0NzhmMDhjNjU4ZDczZDlj
ODMzMTQwNGEyNjBlN2UyYjhjM2YyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCkBAIC05MCw3ICs5
MCw2IEBAIHVzaW5nIEpTQzo6RXhlY1N0YXRlOwogdXNpbmcgSlNDOjpJbnRlcnByZXRlcjsKIHVz
aW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVjdDsKLXVzaW5nIEpTQzo6VVN0cmlu
ZzsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCmluZGV4IDY4NDRlZWNjNTk2
YzQzZDQ3OTE1M2M3OWU1MzJiMmE0ODQwYTZmMDkuLjYyZjlmOGQ4NDM5MTdmNmFjYjEzOTQ3MDgy
YzI2OTNlZDFiODFhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1Bs
dWdpblZpZXdHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZp
ZXdHdGsuY3BwCkBAIC04Myw3ICs4Myw2IEBAIHVzaW5nIEpTQzo6RXhlY1N0YXRlOwogdXNpbmcg
SlNDOjpJbnRlcnByZXRlcjsKIHVzaW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVj
dDsKLXVzaW5nIEpTQzo6VVN0cmluZzsKIAogdXNpbmcgc3RkOjptaW47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCmluZGV4IDc4NWE3NGRmMGU0ZTNmZDA3
ZTA2ZGNlNjI5ZjU1N2UzYjFhZGJhYzMuLjQyYmE2YTY0NWFjYWJiMGVhOWFjMWNkMzRhMTUxZTgz
NTZhMmZhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZp
ZXdNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5t
bQpAQCAtNzAsNyArNzAsNiBAQCB1c2luZyBKU0M6OkludGVycHJldGVyOwogdXNpbmcgSlNDOjpK
U0xvY2s7CiB1c2luZyBKU0M6OkpTT2JqZWN0OwogdXNpbmcgSlNDOjpKU1ZhbHVlOwotdXNpbmcg
SlNDOjpVU3RyaW5nOwogCiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UVdpZGdldD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAppbmRleCAwNGQ3MTBlYTI4
ZTVkNzg0NTMwMDgxYjUyZWQ3YmM3OGQ4MGM3OTA1Li45YmMwMjI3NWFhOGQyYTMxNGZlM2IxODUx
YzhkODA4NzhhOTFjZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblZpZXdRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3
UXQuY3BwCkBAIC05MCw3ICs5MCw2IEBAIHVzaW5nIEpTQzo6SW50ZXJwcmV0ZXI7CiAjZW5kaWYK
IHVzaW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVjdDsKLXVzaW5nIEpTQzo6VVN0
cmluZzsKIAogdXNpbmcgc3RkOjptaW47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4v
UGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMTQyZmE4MzA1ODBkMDNhZmUxMTI0NzEyM2JjYTA5MWI2
MDQ1YzU1NC4uMDVmZjMwYmE0NDYxNWNmNzc5MzU3NWFjODBhM2VhYTBlOTc2MDcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKQEAgLTY5LDYgKzY5
LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiAhUExBVEZPUk0oV1gpCiAjaW5jbHVkZSAiQml0bWFwSW5mby5o
IgpAQCAtMTI3LDcgKzEyOCw2IEBAIHN0YXRpYyBpbmxpbmUgSFdORCB3aW5kb3dIYW5kbGVGb3JQ
YWdlQ2xpZW50KFBsYXRmb3JtUGFnZUNsaWVudCBjbGllbnQpCiB1c2luZyBKU0M6OkV4ZWNTdGF0
ZTsKIHVzaW5nIEpTQzo6SlNMb2NrOwogdXNpbmcgSlNDOjpKU09iamVjdDsKLXVzaW5nIEpTQzo6
VVN0cmluZzsKIAogdXNpbmcgc3RkOjptaW47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DbGllbnRFeHRlbnNpb24uY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAKaW5kZXgg
MzkyMDk3MTg5ZmEwMmJkODI4YTc0MDlmOGU0MmMyOGQ4NThlYjU5YS4uNTRjNDU2YTcxYmMyYzk5
NjNmMGY1M2EwOGI5ZDJkM2QxNTY3Mzg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lvbi5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCB2b2lkIGF0dGFjaEV4dGVuc2lvbk9iamVjdFRvRnJhbWUoRnJhbWUqIGZy
YW1lLCBXZWJQYWdlQ2xpZW50KiBjbGllbnQpCiAgICAgSlNPYmplY3RSZWYgY2xpZW50Q2xhc3NP
YmplY3QgPSBKU09iamVjdE1ha2Uoc2NyaXB0Q3R4LCBjbGllbnRDbGFzcywgMCk7CiAgICAgSlNP
YmplY3RTZXRQcml2YXRlKGNsaWVudENsYXNzT2JqZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQq
PihjbGllbnQpKTsKIAotICAgIEpTQzo6VVN0cmluZyBuYW1lKCJxbngiKTsKKyAgICBTdHJpbmcg
bmFtZSgicW54Iik7CiAKICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgIHdpbmRv
dy0+cHV0KHdpbmRvdywgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsIG5hbWUpLCB0b0pTKGNs
aWVudENsYXNzT2JqZWN0KSwgc2xvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKaW5k
ZXggNDAyYjUyMzMzM2FkOWI1ZDljY2YyNGU0OGI4NWRiNGU1NzJmYWNmNy4uZTJlZDM0OTBiZmU4
N2I0NDM4Y2Y3NjRhNmE0OGNlYWVkNjFmZDliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5
LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgUGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFs
bERvbUZ1bmN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBKU09iamVjdFJlZiBjbGllbnRDbGFzc09i
amVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBjbGllbnRDbGFzcywgMCk7CiAgICAgSlNPYmpl
Y3RTZXRQcml2YXRlKGNsaWVudENsYXNzT2JqZWN0LCByZWludGVycHJldF9jYXN0PHZvaWQqPiht
X2NsaWVudC5nZXQoKSkpOwogCi0gICAgSlNDOjpVU3RyaW5nIG5hbWUoInBvcFVwIik7CisgICAg
U3RyaW5nIG5hbWUoInBvcFVwIik7CiAKICAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90Owog
ICAgIHdpbmRvdy0+cHV0KHdpbmRvdywgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsIG5hbWUp
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggOTZhNTc5MWVlMmE5ZjA2NTQxMWQyOTg0
YWIwYTRmODJhMWZhOGRiYS4uOGE5ZWY5YmUwZjViY2JmZmY1ZjRlODU4ODAxZTM2NjY0NTU1YjIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyhib29sIGVuYWJs
ZWQpCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VuZFdlYkludGVudFJlc3BvbnNl
KEV3a19JbnRlbnRfUmVxdWVzdCogcmVxdWVzdCwgSlNTdHJpbmdSZWYgcmVzcG9uc2UpCiB7CiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEpTQzo6VVN0cmluZyByZXNwb25zZVN0cmluZyA9
IHJlc3BvbnNlLT51c3RyaW5nKCk7CisgICAgU3RyaW5nIHJlc3BvbnNlU3RyaW5nID0gcmVzcG9u
c2UtPnVzdHJpbmcoKTsKICAgICBpZiAocmVzcG9uc2VTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAg
IGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJlX3Bvc3QocmVxdWVzdCwgV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOCgiRVJST1IiKSkpOwogICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNzIzMWI1NDlkZDk1ZmQy
MzQwMjFjMmIzYzljNjhjODVjZTMxYzA4YS4uNGIzM2M2MjgwZjNjZDJmNGMxNDZkYWI5OGM4ZTNj
YzdkZmYyMWFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTQ1OCw3ICs0
NTgsNyBAQCBjb25zdCBjaGFyKiBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzY3JpcHQpCiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFp
blRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKLSAgICByZXN1bHRTdHJpbmcgPSBXZWJDb3JlOjp1c3RyaW5nVG9TdHJp
bmcocmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgcmVzdWx0U3RyaW5n
ID0gcmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4gZWluYV9z
dHJpbmdzaGFyZV9hZGQocmVzdWx0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252
ZXJ0VG9HQ2hhclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0No
YXJQcml2YXRlLmgKaW5kZXggYWZiZWQ0OTYxZmFmYzBiNWNhMTMwMjc5ZmFkNDI5N2Y2YzhhMGY4
Ny4uYmUwMmZmYjgyYTI5OGYwMWIzNTk1M2QwMTBlYjlmZTA2OGQ4ODg5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oCkBAIC0zNSw3ICszNSw3
IEBAIGlubGluZSBnY2hhciogY29weUFzR2NoYXIoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKICAg
ICByZXR1cm4gY29weUFzR2NoYXIocy5zdHJpbmcoKSk7CiB9CiAKLWlubGluZSBnY2hhciogY29w
eUFzR2NoYXIoY29uc3QgSlNDOjpVU3RyaW5nJiBzKQoraW5saW5lIGdjaGFyKiBjb3B5QXNHY2hh
cihjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgcmV0dXJuIGdfc3RyZHVwKHMuVVRGOFN0cmluZygp
LmNfc3RyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCBhZjZmMmJlOTk2OWNiMTFj
YjMzYTU2MzE3ZmRkYThjMmNmNjFjZjVlLi4wZjlmMDdkZGI0NDA3MjNkYmFmNWE3MTJiOGE0MGEw
OTg5NDc0OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNjA3LDcgKzYwNyw3IEBAIHN0
YXRpYyBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChJZGVudGlmaWVyUmVw
KiBpZGVudGlmaWVyKQogICAgIEFTU0VSVChpZGVudGlmaWVyLT5pc1N0cmluZygpKTsKICAgCiAg
ICAgY29uc3QgY2hhciogc3RyID0gaWRlbnRpZmllci0+c3RyaW5nKCk7ICAgIAotICAgIHJldHVy
biBJZGVudGlmaWVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgc3RyaW5nVG9V
U3RyaW5nKFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3Ry
KSkpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcihKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxE
YXRhKCksIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3Ry
KSkpOwogfQogCiBrZXJuX3JldHVybl90IFdLUENJbnZva2UobWFjaF9wb3J0X3QgY2xpZW50UG9y
dCwgdWludDMyX3QgcGx1Z2luSUQsIHVpbnQzMl90IHJlcXVlc3RJRCwgdWludDMyX3Qgb2JqZWN0
SUQsIHVpbnQ2NF90IHNlcnZlcklkZW50aWZpZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KaW5kZXggOTEwNDQzMDVmYmE2YjIzYWIyNTU1MDZjMTE3YTEyNGFjNDkzMWNiNS4uMTc0YTNh
NDgxNGI4OWM4MDU1ZTNlZGFjYmExNTVkZjhjNDI5ZDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQpAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OmFkZFZhbHVlVG9BcnJheShOU011dGFibGVBcnJheSAqYXJyYXksIEV4ZWNTdGEK
IAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6U3RyaW5nVmFsdWVUeXBlXV07Ci0gICAgICAgIFthcnJh
eSBhZGRPYmplY3Q6dXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSldOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMp
XTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpEb3VibGVWYWx1ZVR5cGVdXTsKICAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS50b051
bWJlcihleGVjKV1dOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4
ZWMKIAogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgc3RyaW5nVG9VU3RyaW5nKGdsb2JhbEV4
Y2VwdGlvblN0cmluZygpKSkpOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogCiAgICAgZ2xvYmFsRXhj
ZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVn
aW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDg5OGM1ZTIxNDA2OWZjOWJiZmQzNDlj
NWI0YzZiYThmNzM1NWUyNzAuLjQ5ZTk4ZmU2ZTIxNDdkMDdlZmUwODA5YjMyM2Y1ZDFiNjJkZjFj
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5z
dGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQpAQCAtMTgxLDcgKzE4MSw3IEBAIGNsYXNzIFByb3h5UnVudGltZU1ldGhvZCA6IHB1
YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2Qg
QmFzZTsKIAotICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUs
IEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQorICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRo
b2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewog
ICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGV4ZWMtZ2xv
YmFsRGF0YSgpIGlzIGFsc28gbGlrZWx5IHdyb25nLgpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewog
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIFByb3h5
SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgbmFtZUFycgogCiAgICAgICAgIGlmIChpZGVudGlmaWVyLT5pc1N0cmluZygpKSB7CiAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmcoKTsKLSAgICAg
ICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmllcihKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCksIHN0cmluZ1RvVVN0cmluZyhTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKHN0ciwgc3RybGVuKHN0cikpKSkpOworICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVu
dGlmaWVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgU3RyaW5nOjpmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhzdHIsIHN0cmxlbihzdHIpKSkpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG5hbWVBcnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpZGVudGlm
aWVyLT5udW1iZXIoKSkpOwogICAgIH0KQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFByb3h5SW5z
dGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgbmFtZUFycgogCiBNZXRob2RMaXN0IFByb3h5SW5zdGFuY2U6Om1ldGhvZHNOYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFVTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKKyAgICBTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKICAgICBpZiAobmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsK
IApAQCAtMzkyLDcgKzM5Miw3IEBAIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6bWV0aG9kc05h
bWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAKIEZpZWxkKiBQcm94eUluc3RhbmNlOjpm
aWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVVN0cmluZyBuYW1l
KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyBuYW1lKHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggOTJmOWUwYmI2MTY2
ZWNkNzJjMDQ5ZjNlZDM3MjIxMGNlZTIwODhlZi4uZjkxZmZkOGU1MWJkNGRhY2I3YWYwYTFjYzRm
MjY1MTNjM2VkYTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC01
OTgsNyArNTk4LDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdv
cmxkKCkpLT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
LSAgICByZXR1cm4gdXN0cmluZ1RvU3RyaW5nKHJlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOworICAgIHJldHVybiByZXN1bHQudG9XVEZTdHJpbmcoZXhlYyk7CiB9CiAKIC0gKE5T
UmVjdClfY2FyZXRSZWN0QXRQb3NpdGlvbjooY29uc3QgUG9zaXRpb24mKXBvcyBhZmZpbml0eToo
TlNTZWxlY3Rpb25BZmZpbml0eSlhZmZpbml0eQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGlj
IGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICByZXR1cm4g
dXN0cmluZ1RvU3RyaW5nKHJlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAg
IHJldHVybiByZXN1bHQudG9XVEZTdHJpbmcoZXhlYyk7CiB9CiAKIC0gKEpTR2xvYmFsQ29udGV4
dFJlZilfZ2xvYmFsQ29udGV4dEZvclNjcmlwdFdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmxk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdh
dGUubW0KaW5kZXggOTFkNDczNTk2YWUzNDkyNmU2ZjhlMDIwODUzNDJkYjY3NTY1ODkyNC4uMGZj
ZmM4YmM1MzJhY2EwZDlkZDkxZGU3NzVhMjQwMjAzMjA4ZGNlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQpAQCAtMjAzLDgg
KzIwMyw4IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5ID0g
QCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwogICAgIGlmICghX3ByaXZhdGUtPmRlYnVnZ2Vy
Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgY29uc3QgVVN0cmluZyogZnVu
Y3Rpb25OYW1lID0gX3ByaXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5mdW5jdGlvbk5hbWUoKTsK
LSAgICByZXR1cm4gZnVuY3Rpb25OYW1lID8gdG9OU1N0cmluZygqZnVuY3Rpb25OYW1lKSA6IG5p
bDsKKyAgICBjb25zdCBTdHJpbmcqIGZ1bmN0aW9uTmFtZSA9IF9wcml2YXRlLT5kZWJ1Z2dlckNh
bGxGcmFtZS0+ZnVuY3Rpb25OYW1lKCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZSA/IG5zU3Ry
aW5nTmlsSWZFbXB0eSgqZnVuY3Rpb25OYW1lKSA6IG5pbDsKIH0KIAogLy8gUmV0dXJucyB0aGUg
cGVuZGluZyBleGNlcHRpb24gZm9yIHRoaXMgZnJhbWUgKG5pbCBpZiBub25lKS4KQEAgLTI0Miwx
NCArMjQyLDE0IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5
ID0gQCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwogICAgICAgICBEeW5hbWljR2xvYmFsT2Jq
ZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdCk7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShzdHJpbmdUb1VTdHJpbmcoc2Ny
aXB0KSwgZXhjZXB0aW9uLCBnbG9iYWxPYmplY3QpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGV2YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWUoc2NyaXB0LCBleGNlcHRpb24sIGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm4gW3NlbGYgX2Nv
bnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOmV4Y2VwdGlvbl07CiAgICAgICAgIHJldHVybiByZXN1bHQg
PyBbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6cmVzdWx0XSA6IG5pbDsgICAgICAgIAog
ICAgIH0KIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gX3By
aXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoc2NyaXB0
KSwgZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5kZWJ1Z2dlckNh
bGxGcmFtZS0+ZXZhbHVhdGUoc2NyaXB0LCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24p
CiAgICAgICAgIHJldHVybiBbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6ZXhjZXB0aW9u
XTsKICAgICByZXR1cm4gcmVzdWx0ID8gW3NlbGYgX2NvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlOnJl
c3VsdF0gOiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNj
cmlwdERlYnVnZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLmgKaW5kZXggYjU1MWY3ZGM4NzU4OGRlOWI0NWM5ZmQwNGM1MjAzYzY5YWNiZjQzYS4uYzdk
YThmZTFmYjBlY2M4NjQ4ZDA3NDY3NzMwNDZlMmFhMDEwNTA4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaApAQCAtMzQsMjYgKzM0LDI3IEBACiAK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3Ry
aW5nOworfQorCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsK
ICAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xh
c3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgQXJnTGlzdDsKLSAgICBjbGFzcyBVU3RyaW5nOwogfQog
CiBAY2xhc3MgV2ViU2NyaXB0Q2FsbEZyYW1lOwogCi1OU1N0cmluZyAqdG9OU1N0cmluZyhjb25z
dCBKU0M6OlVTdHJpbmcmKTsKLQogY2xhc3MgV2ViU2NyaXB0RGVidWdnZXIgOiBwdWJsaWMgSlND
OjpEZWJ1Z2dlciB7CiBwdWJsaWM6CiAgICAgV2ViU2NyaXB0RGVidWdnZXIoSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogCiAgICAgdm9pZCBpbml0R2xvYmFsQ2FsbEZyYW1lKGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgSlND
OjpVU3RyaW5nJiBlcnJvck1zZyk7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBX
VEY6OlN0cmluZyYgZXJyb3JNc2cpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3Qg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0
IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpOwogICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDRmZmU3MjViOGFmYTMyOTYwZjRhYzg1ODQ5ZjQ3MTUw
OTVjYjk0ODguLjEzYzRmN2NlYzQ1MzI0ZDI0MzNlM2FkZTk2OTg5MmYxMGZmMjc1MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtNTEs
MTMgKzUxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAtICh2b2lkKV9jbGVhckRlYnVn
Z2VyQ2FsbEZyYW1lOwogQGVuZAogCi1OU1N0cmluZyAqdG9OU1N0cmluZyhjb25zdCBVU3RyaW5n
JiBzKQotewotICAgIGlmIChzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOnJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5pY2hhcio+KHMuY2hhcmFjdGVycygpKSBsZW5ndGg6cy5sZW5ndGgoKV07Ci19Ci0KIHN0
YXRpYyBOU1N0cmluZyAqdG9OU1N0cmluZyhTb3VyY2VQcm92aWRlciogcykKIHsKICAgICBpZiAo
IXMtPmxlbmd0aCgpKQpAQCAtNjUsMTIgKzU4LDEyIEBAIHN0YXRpYyBOU1N0cmluZyAqdG9OU1N0
cmluZyhTb3VyY2VQcm92aWRlciogcykKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhD
aGFyYWN0ZXJzOnMtPmRhdGEoKS0+Y2hhcmFjdGVycygpIGxlbmd0aDpzLT5sZW5ndGgoKV07CiB9
CiAKLS8vIGNvbnZlcnQgVVN0cmluZyB0byBOU1VSTAotc3RhdGljIE5TVVJMICp0b05TVVJMKGNv
bnN0IFVTdHJpbmcmIHMpCisvLyBDb252ZXJ0IFN0cmluZyB0byBOU1VSTC4KK3N0YXRpYyBOU1VS
TCAqdG9OU1VSTChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXN0cmlu
Z1RvU3RyaW5nKHMpKTsKKyAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHMpOwogfQog
CiBzdGF0aWMgV2ViRnJhbWUgKnRvV2ViRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKQEAgLTEwNSw3ICs5OCw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmluaXRHbG9iYWxD
YWxsRnJhbWUoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsCiB9CiAKIC8vIGNh
bGxiYWNrcyAtIHJlbGF5IHRvIGRlbGVnYXRlCi12b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpzb3Vy
Y2VQYXJzZWQoRXhlY1N0YXRlKiBleGVjLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIs
IGludCBlcnJvckxpbmUsIGNvbnN0IFVTdHJpbmcmIGVycm9yTXNnKQordm9pZCBXZWJTY3JpcHRE
ZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSogZXhlYywgU291cmNlUHJvdmlkZXIqIHNv
dXJjZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTXNnKQogewog
ICAgIGlmIChtX2NhbGxpbmdEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4LDcgKzEy
MSw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4
ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92CiAgICAgICAgICAgICAgICAgQ2FsbFNjcmlw
dERlYnVnRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRQYXJzZVNvdXJjZUZ1bmMsIHdlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFBhcnNlU291cmNlOmZyb21VUkw6c291cmNlSWQ6Zm9y
V2ViRnJhbWU6KSwgbnNTb3VyY2UsIFtuc1VSTCBhYnNvbHV0ZVN0cmluZ10sIHNvdXJjZVByb3Zp
ZGVyLT5hc0lEKCksIHdlYkZyYW1lKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAg
IE5TU3RyaW5nKiBuc0Vycm9yTWVzc2FnZSA9IHRvTlNTdHJpbmcoZXJyb3JNc2cpOworICAgICAg
ICBOU1N0cmluZyogbnNFcnJvck1lc3NhZ2UgPSBuc1N0cmluZ05pbElmRW1wdHkoZXJyb3JNc2cp
OwogICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzQW5kS2V5czpuc0Vycm9yTWVzc2FnZSwgV2ViU2NyaXB0RXJyb3JEZXNjcmlw
dGlvbktleSwgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDplcnJvckxpbmVdLCBXZWJT
Y3JpcHRFcnJvckxpbmVOdW1iZXJLZXksIG5pbF07CiAgICAgICAgIE5TRXJyb3IgKmVycm9yID0g
W1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpXZWJTY3JpcHRFcnJvckRvbWFpbiBjb2Rl
OldlYlNjcmlwdEdlbmVyYWxFcnJvckNvZGUgdXNlckluZm86aW5mb107CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA2MGIzNTNmMmQ0NmYwZTg3MjBhYmRiNTI1ZWExN2Y5
MzQwZGI2YTk3Li4zNzk5ZjkyM2ZhZWE5OWVjYTM1NDE1OTk5YWY4OGY5OTlhMWE1ZWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC00Nzg4LDcgKzQ3ODgsNyBAQCBzdGF0
aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGpzVmFsdQogICAgIGlmIChqc1ZhbHVlLmlzQm9vbGVhbigpKQogICAgICAg
ICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhCb29sZWFuOmpz
VmFsdWUuYXNCb29sZWFuKCldOwogICAgIGlmIChqc1ZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAg
IHJldHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlwdG9yV2l0aFN0cmluZzp1c3Ry
aW5nVG9TdHJpbmcoanNWYWx1ZS5nZXRTdHJpbmcoZXhlYykpXTsKKyAgICAgICAgcmV0dXJuIFtO
U0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoU3RyaW5nOmpzVmFsdWUuZ2V0U3Ry
aW5nKGV4ZWMpXTsKICAgICBpZiAoanNWYWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJs
ZSB2YWx1ZSA9IGpzVmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaW50IGludFZhbHVlID0gdmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKaW5kZXggYTIwOGNiYzRlYTViNDdm
MTgxNzNlOTIyNGI5NzllYmMzOWI5MWY0NS4uMDYyY2RkMjdkNGYxOWU5N2JjZTcyMGRlOTJkMjRh
NDdkZTY4Y2Y0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcApAQCAtNzUxLDcg
Kzc1MSw3IEBAIFFWYXJpYW50IFFXZWJFbGVtZW50OjpldmFsdWF0ZUphdmFTY3JpcHQoY29uc3Qg
UVN0cmluZyYgc2NyaXB0U291cmNlKQogICAgIGlmICghc2V0dXBTY3JpcHRDb250ZXh0KG1fZWxl
bWVudCwgdGhpc1ZhbHVlLCBzdGF0ZSwgc2NyaXB0Q29udHJvbGxlcikpCiAgICAgICAgIHJldHVy
biBRVmFyaWFudCgpOwogICAgIEpTQzo6U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBzdGF0
ZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCk7Ci0gICAgSlNDOjpV
U3RyaW5nIHNjcmlwdChyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBVQ2hhcio+KHNjcmlwdFNv
dXJjZS5kYXRhKCkpLCBzY3JpcHRTb3VyY2UubGVuZ3RoKCkpOworICAgIFN0cmluZyBzY3JpcHQo
cmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVUNoYXIqPihzY3JpcHRTb3VyY2UuZGF0YSgpKSwg
c2NyaXB0U291cmNlLmxlbmd0aCgpKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0aW9uRXhj
ZXB0aW9uOwogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0aW9uUmVzdWx0ID0gSlNDOjpldmFsdWF0
ZShzdGF0ZSwgc2NvcGVDaGFpbiwgSlNDOjptYWtlU291cmNlKHNjcmlwdCksIHRoaXNWYWx1ZSwg
JmV2YWx1YXRpb25FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IGQxODgwY2Yz
ZmM2YmI5NWQxYTU5NTU3NDc5NDMwMTRkOTdiOTAwYjMuLjA2MmNmMTQxNjQ1YjUzY2Q1MzkyNzVm
NGJkZDVlMGFmMDU5NzYxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTI1MzksNyArMjUz
OSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRJblNj
cmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCogaVdvCiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKLSAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gdXN0cmluZ1RvU3Ry
aW5nKHJlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyByZXN1
bHRTdHJpbmcgPSByZXN1bHQudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgKmV2YWx1YXRpb25SZXN1
bHQgPSBCU3RyaW5nKHJlc3VsdFN0cmluZykucmVsZWFzZSgpOwogCiAgICAgcmV0dXJuIFNfT0s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDcwZDQ5MWVkYjE0Y2EzZmJjN2U2YmFiNDY1MTc4Zjgw
OTg0YTY4ODUuLmMzZmRlZDZiMTQyMDQ2MTQwNGMxZDIwYjU5ODE0NDZkMGFkNmFiNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCkBAIC0zMTk4LDcgKzMxOTgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKAog
ICAgIGVsc2UgaWYgKHNjcmlwdEV4ZWN1dGlvblJlc3VsdC5pc1N0cmluZygpKSB7CiAgICAgICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gY29yZUZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwogICAgICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICAqcmVzdWx0ID0gQlN0cmluZyh1c3RyaW5n
VG9TdHJpbmcoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LmdldFN0cmluZyhleGVjKSkpOworICAgICAg
ICAqcmVzdWx0ID0gQlN0cmluZyhzY3JpcHRFeGVjdXRpb25SZXN1bHQuZ2V0U3RyaW5nKGV4ZWMp
KTsKICAgICB9CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d3gvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKaW5kZXggOTQy
YzRiZWFhYWIxYmIzYmY0MDRiM2I4MjI3ZjU3NDJkYWNjNWExOS4uYWFhNzYxNGVmYTNiNjQxM2I3
MTBlMGU4NWFhZDk1MWQ2ZmU5MmY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKQEAgLTU0LDggKzU0
LDggQEAKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2luY2x1ZGUg
IkVkaXRvckNsaWVudFd4LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRXeC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gv
V2ViVmlldy5jcHAKaW5kZXggYWNiNjBmNjQzMWU2NGViYWFmZWRmNTkzN2Q4MWEwZWU3YzcyYWNl
Ni4uNGY4NGExYjNkNDk0MzkyMzEwNzMyNzc0NThiMTlhMTk5MzcyZTQ5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYlZp
ZXcuY3BwCkBAIC03Miw5ICs3Miw5IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1ZGUg
IkFic3RyYWN0RGF0YWJhc2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAppbmRleCBlZGY0MmU0ZDVlODNm
MmZiMzE3MjJkYTIwMzgxZTMzNGRiNDZjNGU1Li40NmVmZjA5ZDZjMTlhMGQ5ZmJlOGM5MWQ0N2Jm
N2UwODgzYjgwYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEpTTlBN
ZXRob2Q6OkpTTlBNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIE5QSWRlCiB7CiB9CiAKLXZvaWQgSlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQordm9pZCBK
U05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBu
YW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgKaW5kZXgg
M2NiMzNmYzQxNmE4NDBhOTBiZmU2YmRlYjIxYzg4NDYxYThjMTU3ZS4uOTM2MTRkNTJkM2RjNjlj
MDM2Y2VhMmJiYTM5ZWRlYTAyZGY0ODEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIEpTTlBNZXRob2QgOiBwdWJsaWMgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiBCYXNlOwogCi0gICAgc3Rh
dGljIEpTTlBNZXRob2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlVTdHJpbmcmIG5hbWUsIE5QSWRlbnRp
ZmllciBucElkZW50KQorICAgIHN0YXRpYyBKU05QTWV0aG9kKiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBOUElkZW50aWZpZXIgbnBJZGVudCkKICAgICB7CiAgICAgICAgIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSk7CiAgICAgICAgIEpT
TlBNZXRob2QqIG1ldGhvZCA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNOUE1ldGhvZD4oKmV4
ZWMtPmhlYXAoKSkpIEpTTlBNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5wSWRlbnQp
OwpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fbnBJZGVudGlmaWVyOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDOjpVU3RyaW5n
JiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6SlNHbG9iYWxEYXRhJiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAogcHJpdmF0ZTogICAgCiAgICAgSlNOUE1ldGhvZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqLCBOUElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCmluZGV4IDU0ZmVjMGMxYTI3MzhhMzBjODdjMzc5MTMyNjM2OGNlMWFlZTJiODIuLjlh
YTkwMTY5ZjlmZjg5Y2I2MTEzNTc1YzFkMzA3MzczNDE3MGJiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBOUElkZW50
aWZpZXIgbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
U3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOUElkZW50
aWZpZXI+KElkZW50aWZpZXJSZXA6OmdldChuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVP
YmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5jcHAKaW5kZXggMzU4NTMzZmViZmM4NjI3YjljM2FjYWY2NjA2
ODE0ZWI4ZGQyNzFhYS4uYTUyNWZiOWI4ZmQ2YmE2Y2U0ZmQ1Y2U3ZmQ5YTE3ODFmOTNhMzJjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
UnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2
b2lkIE5QUnVudGltZU9iamVjdE1hcDo6Y29udmVydEpTVmFsdWVUb05QVmFyaWFudChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1i
b29sIE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0LCBjb25z
dCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCkKK2Jvb2wgTlBSdW50aW1l
T2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBTdHJvbmc8SlNHbG9iYWxPYmpl
Y3Q+IGdsb2JhbE9iamVjdCh0aGlzLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLCB0aGlz
LT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCkBAIC0xOTAsNyArMTkw
LDcgQEAgYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVj
dCwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGdl
dE9yQ3JlYXRlSlNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldCgpLCBucE9iamVjdCk7CiAKICAgICBn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwotICAgIEpT
VmFsdWUgcmVzdWx0VmFsdWUgPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGdsb2JhbE9iamVjdC0+Z2xv
YmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKFVTdHJpbmcoc2NyaXB0U3RyaW5nLmltcGwoKSkp
LCB0aGlzVmFsdWUpOworICAgIEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBKU0M6OmV2YWx1YXRlKGV4
ZWMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKHNjcmlwdFN0
cmluZyksIHRoaXNWYWx1ZSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RvcCgpOwogCiAgICAgY29udmVydEpTVmFsdWVUb05QVmFyaWFudChleGVjLCBy
ZXN1bHRWYWx1ZSwgKnJlc3VsdCk7CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBOUFJ1bnRpbWVP
YmplY3RNYXA6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMp
CiAKICAgICB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICB0aHJv
d0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyhnbG9iYWxFeGNl
cHRpb25TdHJpbmcoKSkpKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0KICAgICAKICAgICBnbG9iYWxF
eGNlcHRpb25TdHJpbmcoKSA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDFi
ZjA3OGY1YjdlMGE2Mjg4MmYwNDU1M2Q2MzI1NDZkOGNiZTk3MjYuLmY1MTAyZTY2N2NkNmJhOTAz
Zjk3YTNlZGY0MTYxMjQ3OTgwNzQzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTI3Niw3
ICsyNzYsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGluZ0hhY2tzQFRleHRS
dW5AV2ViQ29yZUBAU0FYX05AWgogICAgICAgICA/cHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUFFX05YWgogICAgICAgICA/c2V0UHJvZmlsZXJFbmFibGVkQElu
c3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFoKLSAgICAgICAgP2pzU3RyaW5nU2xv
d0Nhc2VAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAQUFWPyRIYXNo
TWFwQFBBVlN0cmluZ0ltcGxAV1RGQEBWPyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQFU/JFB0
ckhhc2hAUEFWU3RyaW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hUcmFpdHNAUEFWU3RyaW5nSW1wbEBX
VEZAQEAyQFU/JEhhc2hUcmFpdHNAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBAMkBAV1RG
QEBQQVZTdHJpbmdJbXBsQDZAQFogICAgICAgIAorICAgICAgICA/anNTdHJpbmdXaXRoQ2FjaGVT
bG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhh
c2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVT8k
UHRySGFzaEBQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BQQVZTdHJpbmdJbXBs
QFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQEAyQEBX
VEZAQFBBVlN0cmluZ0ltcGxANkBAWiAgICAgICAgCiAgICAgICAgID9yZWdpc3RlclVSTFNjaGVt
ZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5QFNjaGVtZVJlZ2lzdHJ5QFdlYkNvcmVA
QFNBWEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9yZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVk
QXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3lAU2NoZW1lUmVnaXN0cnlAV2ViQ29yZUBA
U0FYQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2ljb25VUkxzQERvY3VtZW50QFdlYkNvcmVA
QFFBRUFCVj8kVmVjdG9yQFVJY29uVVJMQFdlYkNvcmVAQCQwQUBAV1RGQEBYWgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDU2MWRiMjIyMGYwNDk1Nzk5YmQzNGI2ZDczYTg0
MjkzMWU3OTdkYjMuLmJiMWEwZDIzODMyZTBmODQ5YWQ1OGI0MDRmM2FiMjBkOTk2YWFlN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTI2Nyw2ICsyNjcsNiBAQCBFWFBP
UlRTCiAgICAgICAgID9wcm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3Jl
QEBRQUVfTlhaCiAgICAgICAgID9zZXRQcm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxl
ckBXZWJDb3JlQEBRQUVYX05AWgogCT8/MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNv
cmVAQE1BRUBYWgotICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFs
dWVASlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/
JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVT8kUHRySGFzaEBQQVZTdHJpbmdJbXBsQFdURkBA
QDJAVT8kSGFzaFRyYWl0c0BQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRX
ZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgorICAg
ICAgICA/anNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlND
QEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtA
VkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVT8kUHRySGFzaEBQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8k
SGFzaFRyYWl0c0BQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZK
U1N0cmluZ0BKU0NAQEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgogICAgICAgICA/
cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeUBTY2hlbWVS
ZWdpc3RyeUBXZWJDb3JlQEBTQVhBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/cmVtb3ZlVVJM
U2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5QFNjaGVtZVJl
Z2lzdHJ5QFdlYkNvcmVAQFNBWEFCVlN0cmluZ0BXVEZAQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cgppbmRleCBhZjRiZmY2YTliOTUxMmJhYmFjYThlMWQ5NGUyNDZiNzc0Y2FlOTc4Li45NzQ0NTAz
ZWNmMmVjZGYzZmE1ZjQ5MWYzODA2MWQ4YjFiNTcwZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKQEAgLTY5LDcgKzY5LDcgQEAgX1pON1dlYkNvcmUxNXNldERPTUV4Y2VwdGlvbkVQTjNKU0M5
RXhlY1N0YXRlRWk7CiBfWk43V2ViQ29yZTE1dG9ET01TdHJpbmdMaXN0RVBOM0pTQzlFeGVjU3Rh
dGVFTlMwXzdKU1ZhbHVlRTsKIF9aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MTdzZXRTdWdn
ZXN0ZWRWYWx1ZUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVu
dDE1c2V0RWRpdGluZ1ZhbHVlRVJLTjNXVEY2U3RyaW5nRTsKLV9aTjdXZWJDb3JlMTZqc1N0cmlu
Z1Nsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0lt
cGxFTlMwXzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfN1B0ckhhc2hJUzZfRUVOUzNfMTBIYXNo
VHJhaXRzSVM2X0VFTlNDX0lTOV9FRUVFUzZfOworX1pON1dlYkNvcmUxNmpzU3RyaW5nV2l0aENh
Y2hlU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5n
SW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFzaElTNl9FRU5TM18xMEhh
c2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl87CiBfWk43V2ViQ29yZTE2c2NyaXB0TmFtZVRv
Q29kZUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5T
XzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRTsK
IF9aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3Rh
dGVFdjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjMmJiOGI2ZTkwMTkxYjUxY2EzZTYzNjk4ZDYwNzI1NTU3NjI1NDMyLi5mYTNjOGFhOWVhOGE2
YzA2YTE0MmY4NWY3M2Q2ZWEwOWZkYzYwZGJhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMjggIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6
OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2Fy
ZW4uCisKKyAgICAgICAgR2V0IHJpZCBvZiBVU3RyaW5nLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwOgorICAgICAgICAqIGdkYi93ZWJraXQucHk6
CisgICAgICAgIChXVEZTdHJpbmdQcmludGVyLnRvX3N0cmluZyk6CisgICAgICAgIChKU0NJZGVu
dGlmaWVyUHJpbnRlci50b19zdHJpbmcpOgorICAgICAgICAoSlNDSlNTdHJpbmdQcmludGVyLnRv
X3N0cmluZyk6CisgICAgICAgIChhZGRfcHJldHR5X3ByaW50ZXJzKToKKwogMjAxMi0wOC0yOSAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBWDogQ2Fu
dmFzIHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgcm9sZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwCmluZGV4IDYxZmY3YmFhNGZkYjU2MTI1NWU3ZWEwNjlj
OWQwODY3NDMyZmY2ZmEuLjFiNmMwYjA5ODIyZmY3MTJlNzAwMjNlZGViOWY0NDE3MTdkYzNhNjcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHAKQEAg
LTI4LDggKzI4LDggQEAKICNpbmNsdWRlIDxFV2ViS2l0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0
cmluZy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L2dkYi93ZWJraXQucHkgYi9Ub29scy9nZGIvd2Via2l0LnB5CmluZGV4IDFiMmFlNTc1MTZiNGVl
NDE3Zjk0OWFmMTRhZGIzM2M1MGIzMDNjYjEuLmJkZjNkMDg5MDIxMWI2MmZjMmI3NDBjZDA0ZTM0
ODc4MGY3YzFlZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2dkYi93ZWJraXQucHkKKysrIGIvVG9vbHMv
Z2RiL3dlYmtpdC5weQpAQCAtMTUxLDEzICsxNTEsMTEgQEAgY2xhc3MgV1RGU3RyaW5nUHJpbnRl
cihTdHJpbmdQcmludGVyKToKICAgICAgICAgcmV0dXJuIHNlbGYuc3RyaW5naW1wbF9wdHIoKS5k
ZXJlZmVyZW5jZSgpCiAKIAotSlNDVVN0cmluZ1ByaW50ZXIgPSBXVEZTdHJpbmdJbXBsUHJpbnRl
cgotCiAKIGNsYXNzIEpTQ0lkZW50aWZpZXJQcmludGVyKFN0cmluZ1ByaW50ZXIpOgogICAgICJQ
cmludCBhIEpTQzo6SWRlbnRpZmllciIKICAgICBkZWYgdG9fc3RyaW5nKHNlbGYpOgotICAgICAg
ICByZXR1cm4gSlNDVVN0cmluZ1ByaW50ZXIoc2VsZi52YWxbJ21fc3RyaW5nJ10pLnRvX3N0cmlu
ZygpCisgICAgICAgIHJldHVybiBXVEZTdHJpbmdJbXBsUHJpbnRlcihzZWxmLnZhbFsnbV9zdHJp
bmcnXSkudG9fc3RyaW5nKCkKIAogCiBjbGFzcyBKU0NKU1N0cmluZ1ByaW50ZXIoU3RyaW5nUHJp
bnRlcik6CkBAIC0xNjYsNyArMTY0LDcgQEAgY2xhc3MgSlNDSlNTdHJpbmdQcmludGVyKFN0cmlu
Z1ByaW50ZXIpOgogICAgICAgICBpZiBzZWxmLnZhbFsnbV9sZW5ndGgnXSA9PSAwOgogICAgICAg
ICAgICAgcmV0dXJuICcnCiAKLSAgICAgICAgcmV0dXJuIEpTQ1VTdHJpbmdQcmludGVyKHNlbGYu
dmFsWydtX3ZhbHVlJ10pLnRvX3N0cmluZygpCisgICAgICAgIHJldHVybiBXVEZTdHJpbmdJbXBs
UHJpbnRlcihzZWxmLnZhbFsnbV92YWx1ZSddKS50b19zdHJpbmcoKQogCiAKIGNsYXNzIFdlYkNv
cmVLVVJMR29vZ2xlUHJpdmF0ZVByaW50ZXIoU3RyaW5nUHJpbnRlcik6CkBAIC0yODIsNyArMjgw
LDYgQEAgZGVmIGFkZF9wcmV0dHlfcHJpbnRlcnMoKToKICAgICAgICAgKHJlLmNvbXBpbGUoIl5X
VEY6OlN0cmluZ0ltcGwkIiksIFdURlN0cmluZ0ltcGxQcmludGVyKSwKICAgICAgICAgKHJlLmNv
bXBpbGUoIl5XZWJDb3JlOjpLVVJMR29vZ2xlUHJpdmF0ZSQiKSwgV2ViQ29yZUtVUkxHb29nbGVQ
cml2YXRlUHJpbnRlciksCiAgICAgICAgIChyZS5jb21waWxlKCJeV2ViQ29yZTo6UXVhbGlmaWVk
TmFtZSQiKSwgV2ViQ29yZVF1YWxpZmllZE5hbWVQcmludGVyKSwKLSAgICAgICAgKHJlLmNvbXBp
bGUoIl5KU0M6OlVTdHJpbmckIiksIEpTQ1VTdHJpbmdQcmludGVyKSwKICAgICAgICAgKHJlLmNv
bXBpbGUoIl5KU0M6OklkZW50aWZpZXIkIiksIEpTQ0lkZW50aWZpZXJQcmludGVyKSwKICAgICAg
ICAgKHJlLmNvbXBpbGUoIl5KU0M6OkpTU3RyaW5nJCIpLCBKU0NKU1N0cmluZ1ByaW50ZXIpLAog
ICAgICkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0
ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKaW5kZXggNzE0OWUxOTZjODhjZTc0YjI4MDY5MGY1M2M1
OTk0MDM5OWY4NWI1My4uY2RkZDIzNDAxMDdlNDNlMWNlYTA0MjliZDBmMDY3NGFjM2NhOGZhZCAx
MDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKKysrIGIvV2Vic2l0ZXMv
d2Via2l0Lm9yZy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOC0yOCAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6
VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICBVcGRhdGUgdGhlIGNvZGluZyBzdHlsZSB0byBhdm9pZCBtZW50aW9uaW5n
IGEgY2xhc3MgdGhhdCBubyBsb25nZXIgZXhpc3QuCisKKyAgICAgICAgKiBjb2RpbmcvY29kaW5n
LXN0eWxlLmh0bWw6CisKIDIwMTItMDgtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkcmVzcyBvbmUgbW9yZSByZXZpZXcgY29tbWVudC4KZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sIGIvV2Vic2l0
ZXMvd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKaW5kZXggMmE1ZDZkNmM4YWMw
Njg2YmE4YjNiNDA3ZTAzZjQzMzM2NDllNDk0OC4uNzM1YWIzODE3OWY3ZGVjNDVhYjc3MTI5NTYz
MGExYzU5YjM3NjkzNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RpbmcvY29k
aW5nLXN0eWxlLmh0bWwKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0
eWxlLmh0bWwKQEAgLTk0MSw3ICs5NDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogPC9wcmU+
CiA8aDQgY2xhc3M9Indyb25nIj5Xcm9uZzo8L2g0PgogPHByZSBjbGFzcz0iY29kZSI+Ci0vLyBy
dW50aW1lL1VTdHJpbmcuaAorLy8gcnVudGltZS9KU09iamVjdC5oCiAKIG5hbWVzcGFjZSBXVEYg
ewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161411</attachid>
            <date>2012-08-30 00:32:37 -0700</date>
            <delta_ts>2012-08-30 01:07:31 -0700</delta_ts>
            <desc>Patch for GTK build fix</desc>
            <filename>p</filename>
            <type>text/plain</type>
            <size>995</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDk3NDQ1MDMuLmRjNGMyMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgpAQCAtNjksNyArNjksNyBAQCBfWk43V2ViQ29yZTE1c2V0RE9NRXhjZXB0
aW9uRVBOM0pTQzlFeGVjU3RhdGVFaTsKIF9aTjdXZWJDb3JlMTV0b0RPTVN0cmluZ0xpc3RFUE4z
SlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFOwogX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1l
bnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3JlMTZIVE1M
SW5wdXRFbGVtZW50MTVzZXRFZGl0aW5nVmFsdWVFUktOM1dURjZTdHJpbmdFOwotX1pON1dlYkNv
cmUxNmpzU3RyaW5nV2l0aENhY2hlU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFz
aE1hcElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRy
SGFzaElTNl9FRU5TM18xMEhhc2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl87CitfWk43V2Vi
Q29yZTI1anNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjdI
YXNoTWFwSVBOUzNfMTBTdHJpbmdJbXBsRU5TMF80V2Vha0lOUzBfOEpTU3RyaW5nRUVFTlMzXzdQ
dHJIYXNoSVM2X0VFTlMzXzEwSGFzaFRyYWl0c0lTNl9FRU5TQ19JUzlfRUVFRVM2XzsKIF9aTjdX
ZWJDb3JlMTZzY3JpcHROYW1lVG9Db2RlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3JlMTdj
YWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJl
RVBLTlMyXzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUxN0hpc3RvcnlDb250cm9sbGVyMjZzYXZl
RG9jdW1lbnRBbmRTY3JvbGxTdGF0ZUV2Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161423</attachid>
            <date>2012-08-30 01:07:42 -0700</date>
            <delta_ts>2012-08-30 09:29:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95271-20120830010726.patch</filename>
            <type>text/plain</type>
            <size>554640</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDAxY2E4ZjgxNDY4ZmZkMmI3MmFmMmQ1ZTg2NGJhNGIzMmQ1YmI1Li5kOGZhNjY0ZTY0MzY3NTk2
ZDQ1N2E1ODA5NjBiNzkxOWMzZmZlNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBIYXZpbmcgSlNDOjpV
U3RyaW5nIGFuZCBXVEY6OlN0cmluZyBpbmNyZWFzZSB0aGUgY29tcGxleGl0eSBvZiB3b3JraW5n
IG9uIFdlYktpdCwgYW5kCisgICAgICAgIGFkZCB1c2VsZXNzIGNvbnZlcnNpb25zIGluIHRoZSBi
aW5kaW5ncy4gSXQgYWxzbyBjYXVzZSBzb21lIGNvZGUgYmxvYXQuCisKKyAgICAgICAgVGhlIHBl
cmZvcm1hbmNlIGFkdmFudGFnZXMgb2YgVVN0cmluZyBoYXZlIGJlZW4gcG9ydGVkIG92ZXIgaW4g
cHJldmlvdXMgcGF0Y2hlcy4gVGhpcyBwYXRjaAorICAgICAgICBpcyB0aGUgbGFzdCBzdGVwOiBn
ZXR0aW5nIHJpZCBvZiBVU3RyaW5nLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzaW1w
bGlmaWVkIGNvZGUsIHRoaXMgYWxzbyByZWR1Y2UgdGhlIGJpbmFyeSBzaXplIGJ5IDE1a2Igb24g
eDg2XzY0LgorCisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9w
YXF1ZUpTU3RyaW5nOjp1c3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6dXN0cmluZyk6CisgICAgICAgIFRvIGF2b2lkIGNo
YW5naW5nIGV2ZXJ5dGhpbmcgYXQgb25jZSwgdGhlIGZ1bmN0aW9uIG5hbWVkIHVzdHJpbmcoKSB3
ZXJlIGtlcHQgYXMgaXMuIFRoZXkKKyAgICAgICAgd2lsbCBiZSByZW5hbWVkIGluIGEgZm9sbG93
IHVwIHBhdGNoLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmcp
OgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgIFNpbmNlIEpTVmFs
dWU6OnRvU3RyaW5nKCkgYWxyZWFkeSBleGlzdCAoYW5kIHJldHVybiB0aGUgSlNTdHJpbmcpLCB0
aGUgZGlyZWN0IGFjY2Vzc29yIGlzIHJlbmFtZWQKKyAgICAgICAgdG8gOjp0b1dURlN0cmluZygp
LiBXZSBtYXkgY2hhbmdlIDo6c3RyaW5nKCkgdG8gOjpqc1N0cmluZygpIGFuZCA6OnRvV1RGU3Ry
aW5nKCkgdG8gOjp0b1N0cmluZygpCisgICAgICAgIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVC
YWNrcmVmZXJlbmNlc1Nsb3cpOiBSZXBsYWNlIHRoZSB1c2Ugb2YgVVN0cmluZzo6Z2V0Q2hhcmFj
dGVyczw+KCkgYnkgU3RyaW5nOjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydDw+KCkuCisKIDIw
MTItMDgtMjkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgdXNlIG9mIENsYXNzSW5mbyBmcm9tIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1l
bnRzIGFuZCBjb21waWxlR2V0QXJndW1lbnRzTGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZjY2VlMzdmZWMyOTk1Zjhj
NDVkMmIwZTFlZWZkODgxM2YzOTNlMGIuLjZhMGNiOThjNjUwZmE0OGYyOWQ5NTQ1ZDVhYWY3ZmQy
NjM0MmM5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxh
aW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcg
YnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDogVXNlbGVzcyBlZGl0IHRvIGZvcmNlIGEgZnVsbCBidWls
ZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHNvbWUgYm90cyBmb3Igc29tZSByZWFzb24uCisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6IEV4cG9ydCBhIHN5bWJvbCB0aGF0IHdhcyBleHBvcnRl
ZCBvbiBVU3RyaW5nIGFuZCBuZWVkZWQgaW4gV2ViQ29yZS4KKworICAgICAgICBBZGQgU3RyaW5n
OjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydDw+KCksIHdoaWNoIGlzIHNpbWlsYXIgdG8gU3Ry
aW5nOjpnZXRDaGFyYWN0ZXJzPD4oKSBidXQgd2l0aCB0aGUgc2FtZQorICAgICAgICBiZWhhdmlv
cnMgYXMgVVN0cmluZzo6Z2V0Q2hhcmFjdGVyczw+KCkuCisKKyAgICAgICAgU3RyaW5nOjpnZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydDw+KCkgaXMgdXNlZnVsIHdoZW4gbWFuaXB1bGF0aW5nIG11
bHRpcGxlIHN0cmluZ3MsIGl0IGFsbG93IHdyaXR0aW5nIGNvZGUKKyAgICAgICAgdXNpbmcgMTZi
aXRzIGNoYXJhY3RlcnMgaWYgYW55IG9mIHRoZSBpbnB1dCBTdHJpbmcgaXMgbm90IDhiaXQuCisK
IDIwMTItMDgtMjkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMTI2NzgwKTogQ3Jhc2ggdXNpbmcgU3RyaW5nSW1wbDo6aXM4Qml0
IGJlZm9yZSBjaGVja2luZyBpZiB0aGVyZSBpcyBhbiBpbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q4MjY2
YjQ0OGM4ZmQ2YjNlY2Q5NmNhYmRkNTBkOTYxODdmZjlhYy4uNjk5N2NmMGEyOWY1YTJkNDQ3NGUy
YTUyODU5YTY5NzA5NDJiNGIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA4
LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
cGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFVwZGF0ZSB0aGUgY29kZSB0byB1c2UgU3RyaW5nIGlu
c3RlYWQgb2YgVVN0cmluZy4KKworICAgICAgICBPbiB4ODZfNjQsIHRoaXMgcmVkdWNlcyB0aGUg
YmluYXJ5IHNpemUgYnkgMjJrYi4KKworICAgICAgICBTaW5jZSBpdCBpcyBubyBsb25nZXIgcG9z
c2libGUgdG8gZGlmZmVyZW5jaWF0ZSBKU0M6OmpzU3RyaW5nKCkgYW5kIFdlYkNvcmU6OmpzU3Ry
aW5nKCkgYnkgdGhlIGlucHV0CisgICAgICAgIHR5cGVzLCBXZWJDb3JlOjpqc1N0cmluZygpIGlz
IHJlbmF0ZWQgdG8gV2ViQ29yZTo6anNTdHJpbmdXaXRoQ2FjaGUoKS4KKworICAgICAgICBTaW5j
ZSB0aGUgY2FjaGUgaXMgdXNpbmcgYSBQdHJIYXNoLCBKU0M6OmpzU3RyaW5nKCkgaXMgdXNlZCBp
biBwbGFjZSBvZiB0aGUgb2xkIFdlYkNvcmU6OmpzU3RyaW5nKCkgd2hlbgorICAgICAgICB0aGUg
c3RyaW5nIGlzIGdlbmVyYXRlZCBsb2NhbGx5LiBUaGlzIGlzIGJlY2F1c2UgdGhlIGNhY2hlIGNh
biBuZXZlciBtYXRjaCBpbiB0aG9zZSBjYXNlcy4KKwogMjAxMi0wOC0zMCAgU2hpbnlhIEthd2Fu
YWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXV0aG9yU2hhZG93RE9NIHN1
cHBvcnQgZm9yIHRleHRhcmVhIGVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwNjY4NDgyMzViZTgzNjllNjVkMjdmN2RjZjlhYmE0MWZiZjVkYmFjLi44Y2U1MzZkMjli
NWM3ZDdjYTIyNGQyMjE3MGQyNjZkZDdlNTBmMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6
OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBS
ZXBsYWNlIFVTdHJpbmcgYnkgU3RyaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2xp
ZW50RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFj
a0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6Omluc3Rh
bGxEb21GdW5jdGlvbik6CisKIDIwMTItMDgtMjkgIE5pbWEgR2hhbmF2YXRpYW4gIDxuZ2hhbmF2
YXRpYW5AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRG8gbm90IHVzZSB0aGUgc2hh
ZG93IHRyZWUgd2hlbiByZXRyaWV2aW5nIHRoZSB1bmRlcmx5aW5nIGVsZW1lbnQgZm9yIEZhdEZp
bmdlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAxNmE4OTFlYTBjMGRmMDM5N2ZlZGRmZDQ3ODNjY2Nh
YWJhYjBiYzg5Li44NTNkMGEwNzM1ZGY1NTA4MjQ4YWNlNmEwMDY0OGEzOTU3N2E3ZDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxh
aW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcg
YnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgUmVwbGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRSZXNwb25zZSk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUpOgorCiAyMDEyLTA4
LTI5ICBLYW1pbCBCbGFuayAgPGsuYmxhbmtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0g
QWRkIHNldHRpbmcgQVBJIGZvciBhbGxvdyB1bml2ZXJzYWwvZmlsZSBhY2Nlc3MgZnJvbSBmaWxl
IFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZGIwOWU4ODdhZTcxN2Q2ODE2ZGZlYzI0NTI5ZDI2
OWUwNTQzYmQ2Ny4uZWIyOWFmMzc3ZmFjOTg5Y2EwZGM0N2E1N2ZhOTUyOWFmNzViZDliYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5n
IGJ5IFdURjo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisg
ICAgICAgIFJlcGxhY2UgVVN0cmluZyBieSBTdHJpbmcuCisKKyAgICAgICAgKiBnZG9tL0NvbnZl
cnRUb0dDaGFyUHJpdmF0ZS5oOgorICAgICAgICAoY29weUFzR2NoYXIpOgorCiAyMDEyLTA4LTI5
ICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHdGtd
IFByb2Nlc3MgR3RrIDMuNCBzbW9vdGggc2Nyb2xsIGV2ZW50cyBwcm9wZXJseS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAxMWYwMzU4ZGI0OTc0NTNhZTIxY2IzMzczYWRjMmYzMGQxMjNkOTFkLi44YzU2
NTg5YTg4ZDA1OGJlMjA4ZmFhNWQzOGFlYWU2ZGE0ZDY3ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgR2V0IHJpZCBv
ZiBVU3RyaW5nLCByZXBsYWNlIGl0IGJ5IFN0cmluZywgYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHdo
ZW4gcG9zc2libGUuCisKKyAgICAgICAgT24geDg2XzY0LCB0aGlzIHJlZHVjZXMgdGhlIGJpbmFy
eSBzaXplIGJ5IDdrYi4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdFByb3h5Lm1tOgorICAgICAgICAoaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKToKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0Fy
cmF5KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojptb3Zl
R2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1By
b3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQpOgorICAgICAgICAo
V2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdEZyb21TdHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOndpdGhHbG9iYWxPYmplY3Q6
aW5TY3JpcHRXb3JsZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdh
dGUubW06CisgICAgICAgICgtW1dlYlNjcmlwdENhbGxGcmFtZSBmdW5jdGlvbk5hbWVdKToKKyAg
ICAgICAgKC1bV2ViU2NyaXB0Q2FsbEZyYW1lIGV2YWx1YXRlV2ViU2NyaXB0Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaDoKKyAgICAgICAgKFdURik6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXIpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW06CisgICAgICAgICh0b05TVVJMKToKKyAgICAgICAgKFdlYlNj
cmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVlKToKKwogMjAxMi0wOC0yOSAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQWRkIGljb25VUkwgdG8gV2ViTm90
aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDdkNjk1OWQ3MDY2NDVlM2VjYjk0YmZmMmRjYWQ2
YzgwM2U0ZmM3MjMuLjExODFhYTg2ZjQ1YmU3ZjI3ZWEzNGVkYTNjMjBiMjE2MzkwOTJjYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxh
aW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcg
YnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgUmVwbGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAgICAqIEFwaS9xd2ViZWxl
bWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKwog
MjAxMi0wOC0yOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBGaXggZG9jIGdlbmVyYXRpb24gd2l0aCBtYWtlIGRvY3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCBmNjAxOWEyYjU5ZjM5MTg2ODBjZjg0NmU3NTA2NTUzZDQ1Yzc0OTEzLi4wN2U0
YTZlYjdlNTNiY2FkZDRmNDUzMjFiOTZmNDVlOGNkOTMwN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgUmVwbGFjZSBV
U3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZCk6CisgICAg
ICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZyk6CisKIDIwMTItMDgtMjkgIERvbWluaWMgTWF6em9uaSAgPGRt
YXp6b25pQGdvb2dsZS5jb20+CiAKICAgICAgICAgQVg6IENhbnZhcyBzaG91bGQgaGF2ZSBhIGRp
c3RpbmN0IHJvbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMTk1MmJiYmYwMTM5YmU0ZGJlZWUyMmFjMmRj
ZmVjZWU1NDA4ODk2OC4uMzcxODNjZjQ2ZDE3OTgyNjQ4ZDA4YWNiZTllMGFjNzQ2ZTI3NTI1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91
bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmlu
ZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICBVcGRhdGUgdGhlICNpbmNsdWRlcyB0byB1c2UgdGhlIGNvcnJlY3QgdHlwZXMuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTIt
MDgtMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSByZWxlYXNlIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6bV9wbHVnaW5XaWRnZXQgcmVmcHRy
IHVwb24gUGx1Z2luIERvY3VtZW50IGRldGFjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MjBhN2JlNDg4MTkw
YTcwZTVmZTNjZmM2NWU2ZTAxNjRhNzQ2M2NjLi42ZDVjOTIxY2U4NDFlNWExYjU3ZjVjZjc4MDIy
YmEwZTdmZGE4YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDgtMzAgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBK
U0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisKKyAgICAgICAgVXBkYXRlIHRvIGNvZGUgdG8gc3dpdGNoIGZyb20gVVN0cmluZyB0
byBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1l
dGhvZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oOgorICAg
ICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNOUE1ldGhvZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6
CisKIDIwMTItMDgtMjkgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gUmVwbGFjZSBQYWdlQ2xpZW50SW1wbCB3aXRoIGV3ayB2aWV3IGlu
IGNvbnN0cnVjdG9yIG9mIEVmbFZpZXdwb3J0SGFuZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAppbmRleCA1OWRlMTg2YjBhYmE3ZDEx
NTJlYWViMTkxNDNjMjkwZTk5NWViMGU3Li4wZjYzZDNjMTY2OWNmMmZkMDk0YWUyOTIwYzRkYmNl
ZWU5ZWZjYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
RnVuY3Rpb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIEpTQ2FsbGJhY2tGdW5jdGlvbjo6SlNDYWxs
YmFja0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsCiB7
CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5j
dGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IDQwYmVmOGM0ODcyNGM5NDJjNGIzMzlh
Y2JlZWM0MzIxYzVhZGQ4NDEuLjUwNjMwYjU1MDNlNWU0ZTIyNmI0Y2M1ZGUwMDk0ODI4NTA4OWJl
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
aApAQCAtMzQsMTIgKzM0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNDYWxsYmFja0Z1
bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHJvdGVjdGVkOgogICAgIEpTQ2Fs
bGJhY2tGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxs
YmFjayk7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3Ry
aW5nJiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKIAotICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgSlND
YWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVu
Y3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpl
eGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7
CiAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRl
eCAyYzNlMGU4NTlmMTZlODk1ODFhMmZhMzU2Yjg0OTJmMjAzNzkyMDdkLi4zNmQ3ZmE5YzI1NjBk
ZTA3NTcwOWY2MTkyNGJiZTZiMjU5OGJjMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTcxLDcgKzE3MSw3IEBAIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBQcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmcgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgfCBPdmVycmlkZXNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgUGFyZW50OjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKKyAg
ICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogCiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAxNjBmNDg4ODdiODcyYzI5
YmMzZTJhZGJlZGM5MWVmYWZjZDRkOTM5Li44MzI2YzA1NzlhYTA3MWMzNzU3MzdlZjY0MjdjZTMx
ZDdhYzYwMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMTExLDEwICsxMTEsMTAgQEAgdm9pZCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmluaXQoRXhlY1N0YXRlKiBleGVjKQogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyZW50PgotVVN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU0NhbGxiYWNrT2JqZWN0Kj4o
b2JqZWN0KTsKLSAgICBVU3RyaW5nIHRoaXNDbGFzc05hbWUgPSB0aGlzT2JqZWN0LT5jbGFzc1Jl
ZigpLT5jbGFzc05hbWUoKTsKKyAgICBTdHJpbmcgdGhpc0NsYXNzTmFtZSA9IHRoaXNPYmplY3Qt
PmNsYXNzUmVmKCktPmNsYXNzTmFtZSgpOwogICAgIGlmICghdGhpc0NsYXNzTmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB0aGlzQ2xhc3NOYW1lOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggMTM0NDMxNjU0Nzg5MTVmOGExM2E0ZGJkMzgw
NDQxZWQyNGJjNGQyZC4uYTk1ZDQyZTM5ZWQxMzM5MjcyOTY5MWUxOTAzMDI4NjE3NjYwZTM0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCkBAIC00MiwyMCArNDIs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCiBjb25zdCBKU0NsYXNzRGVmaW5p
dGlvbiBrSlNDbGFzc0RlZmluaXRpb25FbXB0eSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwogCi1zdGF0aWMgaW5saW5lIFVTdHJpbmcgdHJ5
Q3JlYXRlU3RyaW5nRnJvbVVURjgoY29uc3QgY2hhciogc3RyaW5nKQotewotICAgIGlmICghc3Ry
aW5nKQotICAgICAgICByZXR1cm4gVVN0cmluZygpOwotCi0gICAgc2l6ZV90IGxlbmd0aCA9IHN0
cmxlbihzdHJpbmcpOwotICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gYnVmZmVyKGxlbmd0aCk7Ci0g
ICAgVUNoYXIqIHAgPSBidWZmZXIuZGF0YSgpOwotICAgIGlmIChjb252ZXJzaW9uT0sgIT0gY29u
dmVydFVURjhUb1VURjE2KCZzdHJpbmcsIHN0cmluZyArIGxlbmd0aCwgJnAsIHAgKyBsZW5ndGgp
KQotICAgICAgICByZXR1cm4gVVN0cmluZygpOwotCi0gICAgcmV0dXJuIFVTdHJpbmcoYnVmZmVy
LmRhdGEoKSwgcCAtIGJ1ZmZlci5kYXRhKCkpOwotfQotCiBPcGFxdWVKU0NsYXNzOjpPcGFxdWVK
U0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBPcGFxdWVKU0NsYXNz
KiBwcm90b0NsYXNzKSAKICAgICA6IHBhcmVudENsYXNzKGRlZmluaXRpb24tPnBhcmVudENsYXNz
KQogICAgICwgcHJvdG90eXBlQ2xhc3MoMCkKQEAgLTcwLDE0ICs1NiwxNCBAQCBPcGFxdWVKU0Ns
YXNzOjpPcGFxdWVKU0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBP
cGFxdWVKU0NsYXNzKgogICAgICwgY2FsbEFzQ29uc3RydWN0b3IoZGVmaW5pdGlvbi0+Y2FsbEFz
Q29uc3RydWN0b3IpCiAgICAgLCBoYXNJbnN0YW5jZShkZWZpbml0aW9uLT5oYXNJbnN0YW5jZSkK
ICAgICAsIGNvbnZlcnRUb1R5cGUoZGVmaW5pdGlvbi0+Y29udmVydFRvVHlwZSkKLSAgICAsIG1f
Y2xhc3NOYW1lKHRyeUNyZWF0ZVN0cmluZ0Zyb21VVEY4KGRlZmluaXRpb24tPmNsYXNzTmFtZSkp
CisgICAgLCBtX2NsYXNzTmFtZShTdHJpbmc6OmZyb21VVEY4KGRlZmluaXRpb24tPmNsYXNzTmFt
ZSkpCiB7CiAgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3Rh
dGljVmFsdWUqIHN0YXRpY1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7CiAgICAg
ICAgIG1fc3RhdGljVmFsdWVzID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1
ZXNUYWJsZSk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+bmFtZSkgewotICAgICAgICAg
ICAgVVN0cmluZyB2YWx1ZU5hbWUgPSB0cnlDcmVhdGVTdHJpbmdGcm9tVVRGOChzdGF0aWNWYWx1
ZS0+bmFtZSk7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gU3RyaW5nOjpmcm9tVVRG
OChzdGF0aWNWYWx1ZS0+bmFtZSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlTmFtZS5pc051bGwo
KSkKICAgICAgICAgICAgICAgICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCks
IGFkb3B0UHRyKG5ldyBTdGF0aWNWYWx1ZUVudHJ5KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwg
c3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcykpKTsKICAg
ICAgICAgICAgICsrc3RhdGljVmFsdWU7CkBAIC04Nyw3ICs3Myw3IEBAIE9wYXF1ZUpTQ2xhc3M6
Ok9wYXF1ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1
ZUpTQ2xhc3MqCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9u
ID0gZGVmaW5pdGlvbi0+c3RhdGljRnVuY3Rpb25zKSB7CiAgICAgICAgIG1fc3RhdGljRnVuY3Rp
b25zID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZSk7CiAg
ICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkgewotICAgICAgICAgICAgVVN0cmlu
ZyBmdW5jdGlvbk5hbWUgPSB0cnlDcmVhdGVTdHJpbmdGcm9tVVRGOChzdGF0aWNGdW5jdGlvbi0+
bmFtZSk7CisgICAgICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gU3RyaW5nOjpmcm9tVVRG
OChzdGF0aWNGdW5jdGlvbi0+bmFtZSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5p
c051bGwoKSkKICAgICAgICAgICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9u
TmFtZS5pbXBsKCksIGFkb3B0UHRyKG5ldyBTdGF0aWNGdW5jdGlvbkVudHJ5KHN0YXRpY0Z1bmN0
aW9uLT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKSk7CiAgICAg
ICAgICAgICArK3N0YXRpY0Z1bmN0aW9uOwpAQCAtMTcwLDEwICsxNTYsMTAgQEAgT3BhcXVlSlND
bGFzc0NvbnRleHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuICpjb250ZXh0RGF0YTsKIH0KIAotVVN0cmluZyBPcGFxdWVKU0NsYXNz
OjpjbGFzc05hbWUoKQorU3RyaW5nIE9wYXF1ZUpTQ2xhc3M6OmNsYXNzTmFtZSgpCiB7CiAgICAg
Ly8gTWFrZSBhIGRlZXAgY29weSwgc28gdGhhdCB0aGUgY2FsbGVyIGhhcyBubyBjaGFuY2UgdG8g
cHV0IHRoZSBvcmlnaW5hbCBpbnRvIElkZW50aWZpZXJUYWJsZS4KLSAgICByZXR1cm4gVVN0cmlu
ZyhtX2NsYXNzTmFtZS5jaGFyYWN0ZXJzKCksIG1fY2xhc3NOYW1lLmxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gbV9jbGFzc05hbWUuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIE9wYXF1ZUpTQ2xhc3NTdGF0
aWNWYWx1ZXNUYWJsZSogT3BhcXVlSlNDbGFzczo6c3RhdGljVmFsdWVzKEpTQzo6RXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAppbmRleCA4MmM3YWIz
Zjk3MjllM2RmZGNmYTlkYjlkYzdiMWI4YjgwODE4NWFkLi40NGQ1ZDExYjk1MjVlZGU3YjI0ZGEz
NGYxMGRjZWUyZDBmZjNiZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2xhc3NSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
aApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIldlYWsuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3Ry
dWN0IFN0YXRpY1ZhbHVlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
ODksNyArODksNyBAQCBzdHJ1Y3QgT3BhcXVlSlNDbGFzcyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxPcGFxdWVKU0NsYXNzPiB7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlND
bGFzcz4gY3JlYXRlTm9BdXRvbWF0aWNQcm90b3R5cGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24q
KTsKICAgICB+T3BhcXVlSlNDbGFzcygpOwogICAgIAotICAgIEpTQzo6VVN0cmluZyBjbGFzc05h
bWUoKTsKKyAgICBTdHJpbmcgY2xhc3NOYW1lKCk7CiAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1Zh
bHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBPcGFxdWVKU0Ns
YXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyhKU0M6OkV4ZWNTdGF0ZSop
OwogICAgIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTE4
LDggKzExOCw4IEBAIHByaXZhdGU6CiAKICAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIGNv
bnRleHREYXRhKEpTQzo6RXhlY1N0YXRlKik7CiAKLSAgICAvLyBVU3RyaW5ncyBpbiB0aGVzZSBk
YXRhIG1lbWJlcnMgc2hvdWxkIG5vdCBiZSBwdXQgaW50byBhbnkgSWRlbnRpZmllclRhYmxlLgot
ICAgIEpTQzo6VVN0cmluZyBtX2NsYXNzTmFtZTsKKyAgICAvLyBTdHJpbmdzIGluIHRoZXNlIGRh
dGEgbWVtYmVycyBzaG91bGQgbm90IGJlIHB1dCBpbnRvIGFueSBJZGVudGlmaWVyVGFibGUuCisg
ICAgU3RyaW5nIG1fY2xhc3NOYW1lOwogICAgIE93blB0cjxPcGFxdWVKU0NsYXNzU3RhdGljVmFs
dWVzVGFibGU+IG1fc3RhdGljVmFsdWVzOwogICAgIE93blB0cjxPcGFxdWVKU0NsYXNzU3RhdGlj
RnVuY3Rpb25zVGFibGU+IG1fc3RhdGljRnVuY3Rpb25zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCA3YTU3Mjg3ZGVkNGUwMmQ0YjBkY2M0OTk3
ZGRhOTA0MzFiNmRhMWFiLi5iYWUzMTAxMDViMjRiNmEyZDFmYjQ2ZWRmMzI2NGVhZjllZDEzYzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiSlNDbGFzc1JlZi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xNjcsOSArMTY3LDkgQEAgSlNT
dHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBjdHgsIHVuc2ln
bmVkIG1heFN0YWNrU2l6ZSkKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAogICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKLSAgICBVU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGV4ZWM7Ci0gICAg
VVN0cmluZyBmdW5jdGlvbk5hbWU7CisgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKICAgICBpZiAo
ZXhlYy0+Y2FsbGVlKCkpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KGV4ZWMtPmNhbGxlZSgpKS0+
aW5oZXJpdHMoJkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpIHsKICAgICAgICAgICAgIGZ1bmN0
aW9uTmFtZSA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPm5hbWUoZXhlYyk7
CkBAIC0xODMsMTAgKzE4MywxMCBAQCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJh
Y2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXplKQogICAgICAgICBBU1NF
UlQoY2FsbEZyYW1lKTsKICAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CiAgICAgICAgIGlu
dHB0cl90IHNvdXJjZUlEOwotICAgICAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICAgICAgU3Ry
aW5nIHVybFN0cmluZzsKICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKICAgICAgICAgCi0gICAg
ICAgIFVTdHJpbmcgbGV2ZWxTdHIgPSBVU3RyaW5nOjpudW1iZXIoY291bnQpOworICAgICAgICBT
dHJpbmcgbGV2ZWxTdHIgPSBTdHJpbmc6Om51bWJlcihjb3VudCk7CiAgICAgICAgIAogICAgICAg
ICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoY2FsbEZyYW1lLCBzaWdu
ZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7CiAKQEAgLTIwOCwx
MiArMjA4LDEyIEBAIEpTU3RyaW5nUmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRl
eHRSZWYgY3R4LCB1bnNpZ25lZCBtYXhTdGFja1NpemUpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIoKSBhdCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQodXJsU3RyaW5nKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVVN0cmluZzo6bnVt
YmVyKGxpbmVOdW1iZXIpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIo
bGluZU51bWJlcikpOwogICAgICAgICBpZiAoIWZ1bmN0aW9uIHx8ICsrY291bnQgPT0gbWF4U3Rh
Y2tTaXplKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKICAgICB9Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVh
dGUoYnVpbGRlci50b1VTdHJpbmcoKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0
cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4IDA4NzdhMTNlNjBi
Mjc4NjY4MGI2ZDljZDg1MzdjNTkxZTBiMmVmNTguLmU4N2ZkODM4ZGU1YjY2OWZmYmYxMWVkMTcx
YWIzNGUyYmVmZDgyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
dHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1Jl
ZkNGLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcu
aCIKICNpbmNsdWRlICJKU1N0cmluZ1JlZi5oIgogI2luY2x1ZGUgIk9wYXF1ZUpTU3RyaW5nLmgi
Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuY3BwCmluZGV4IDliNzI2OGEyZGE2MzAwOWVmMjU1ZDAwYjMwY2IxN2Jl
OThjZWRkYjYuLjBhMTEzMzkzNjQ0OGRlNzMzMWU4NTAyZWZhY2NjODRiYzY4YmNkMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApAQCAtMzYsMTEgKzM2LDExIEBA
CiAjaW5jbHVkZSA8cnVudGltZS9MaXRlcmFsUGFyc2VyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9P
cGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGFsZ29yaXRobT4gLy8g
Zm9yIHN0ZDo6bWluCiAKQEAgLTIzNCw3ICsyMzQsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtl
RnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOwotICAgIFVTdHJpbmcgc3RyID0gc3RyaW5nLT51c3RyaW5nKCk7CisgICAgU3Ry
aW5nIHN0ciA9IHN0cmluZy0+dXN0cmluZygpOwogICAgIGlmIChzdHIuaXM4Qml0KCkpIHsKICAg
ICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcGFyc2VyKGV4ZWMsIHN0ci5jaGFyYWN0ZXJzOCgp
LCBzdHIubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICByZXR1cm4gdG9SZWYoZXhlYywg
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBKU1N0cmluZ1Jl
ZiBKU1ZhbHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIGFw
aVZhbHVlLCB1bnNpZwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElF
bnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMs
IGFwaVZhbHVlKTsKLSAgICBVU3RyaW5nIHJlc3VsdCA9IEpTT05TdHJpbmdpZnkoZXhlYywgdmFs
dWUsIGluZGVudCk7CisgICAgU3RyaW5nIHJlc3VsdCA9IEpTT05TdHJpbmdpZnkoZXhlYywgdmFs
dWUsIGluZGVudCk7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCmluZGV4IDlhMTE2ZTZiMmY2MzkzN2QwZDAyZDA4OGM2
MWE1NTRjOWZjMjNiODYuLmNkZTU3YWNkYWUzZjIwMGIyODc4YWM2MjQ1Mjc1N2ZkZmQzOGI2Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCkBAIC0z
MiwxOCArMzIsMTggQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUGFzc1JlZlB0cjxPcGFx
dWVKU1N0cmluZz4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShjb25zdCBVU3RyaW5nJiB1c3RyaW5n
KQorUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIXVzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgT3BhcXVlSlNTdHJpbmcodXN0cmluZy5jaGFyYWN0ZXJzKCks
IHVzdHJpbmcubGVuZ3RoKCkpKTsKKyAgICBpZiAoIXN0cmluZy5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0cmluZyhzdHJpbmcuY2hhcmFjdGVycygpLCBz
dHJpbmcubGVuZ3RoKCkpKTsKICAgICByZXR1cm4gMDsKIH0KIAotVVN0cmluZyBPcGFxdWVKU1N0
cmluZzo6dXN0cmluZygpIGNvbnN0CitTdHJpbmcgT3BhcXVlSlNTdHJpbmc6OnVzdHJpbmcoKSBj
b25zdAogewogICAgIGlmICh0aGlzICYmIG1fY2hhcmFjdGVycykKLSAgICAgICAgcmV0dXJuIFVT
dHJpbmcobV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCk7Ci0gICAgcmV0dXJuIFVTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZyhtX2NoYXJhY3RlcnMsIG1fbGVuZ3RoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKIElkZW50aWZpZXIgT3BhcXVlSlNTdHJpbmc6OmlkZW50aWZpZXIoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9P
cGFxdWVKU1N0cmluZy5oCmluZGV4IDFjNjMxNTBjZjE1NGU3MWM4ZTNhOTZmNDdlYmViZDg2Zjg4
Mjc5NzcuLjdlMjIyYzVlZTg0NmQ3NTU4N2EwMjU5NGY4ODY4MGRmNjRiM2U2MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKQEAgLTI3LDcgKzI3LDcgQEAK
ICNkZWZpbmUgT3BhcXVlSlNTdHJpbmdfaAogCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIElkZW50aWZpZXI7
CkBAIC00NiwxMiArNDYsMTMgQEAgc3RydWN0IE9wYXF1ZUpTU3RyaW5nIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3RyaW5nPiB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgT3BhcXVlSlNTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZShjb25zdCBKU0M6OlVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFz
c1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgVUNo
YXIqIGNoYXJhY3RlcnMoKSB7IHJldHVybiB0aGlzID8gbV9jaGFyYWN0ZXJzIDogMDsgfQogICAg
IHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIHRoaXMgPyBtX2xlbmd0aCA6IDA7IH0KIAotICAg
IEpTQzo6VVN0cmluZyB1c3RyaW5nKCkgY29uc3Q7CisgICAgLy8gRklYTUU6IHJlbmFtZSB0byBz
dHJpbmcoKS4KKyAgICBTdHJpbmcgdXN0cmluZygpIGNvbnN0OwogICAgIEpTQzo6SWRlbnRpZmll
ciBpZGVudGlmaWVyKEpTQzo6SlNHbG9iYWxEYXRhKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzJmNDIxMzZmNjA0YWViNmViMmJlZmU3
Y2RiMmQyNjc0NmUzYTcyYy4uMjcyYjczZjVkZWY2NzAxZjMzYTBmMDkwZDVmN2E4ZDM4ZTgzNTE0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjU1LDcgKzI1NSw2IEBA
IFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5j
cHAKICAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNr
ZXIuY3BwCi0gICAgcnVudGltZS9VU3RyaW5nLmNwcAogCiAgICAgdG9vbHMvQ29kZVByb2ZpbGUu
Y3BwCiAgICAgdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDM2M2ZkNjYwODc5NjMxODVjYmExZDgzZDE0ZGUxZTBh
OGEwZmRlMi4uOTc5NjQ1ZWRmZjBiNjRlYzFlYWNkNDdmMzg1OTg1OGY3YTE3ZDQ4NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTY1OCwxMCArNjU4LDYg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGltZW91dENoZWNrZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHJhY2luZy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJh
Y3Rpb24uaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAgXAot
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBcCi0JU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaCBcCi0JU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVVN0cmluZ0NvbmNhdGVuYXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtHQ01hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrUmFuZG9tLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmll
ci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5kZWYKaW5kZXggOWQ4ZDAxNWM3MDEwYTU0ZTQ2YTFiZTJjMTI0ZDg2N2ZiN2MzMTZiNC4uODU2
ZjcxYmYwNDZjNWEzNWQwMjVlMDNmYzBjYTZjZDNjZWYwYTM4MyAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTI0LDEyICsyNCw4
IEBAIEVYUE9SVFMKICAgICA/PzBTdHJpbmdPYmplY3RASlNDQEBJQUVAQUFWSlNHbG9iYWxEYXRh
QDFAUEFWU3RydWN0dXJlQDFAQFoKICAgICA/PzBTdHJ1Y3R1cmVASlNDQEBBQUVAQUFWSlNHbG9i
YWxEYXRhQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBWSlNWYWx1ZUAxQEFCVlR5cGVJbmZvQDFAUEJV
Q2xhc3NJbmZvQDFAQFoKICAgICA/PzBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKLSAgICA/
PzBVU3RyaW5nQEpTQ0BAUUFFQFBCREBaCi0gICAgPz8wVVN0cmluZ0BKU0NAQFFBRUBQQkRJQFoK
LSAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCX1dAWgotICAgID8/MFVTdHJpbmdASlNDQEBRQUVA
UEJfV0lAWgogICAgID8/MFdURlRocmVhZERhdGFAV1RGQEBRQUVAWFoKLSAgICA/PzBZYXJyUGF0
dGVybkBZYXJyQEpTQ0BAUUFFQEFCVlVTdHJpbmdAMkBfTjFQQVBCREBaCisgICAgPz8wWWFyclBh
dHRlcm5AWWFyckBKU0NAQFFBRUBBQlZTdHJpbmdAV1RGQEBfTjFQQVBCREBaCiAgICAgPz8xQXJy
YXlCdWZmZXJWaWV3QFdURkBAVUFFQFhaCiAgICAgPz8xQ2xpZW50RGF0YUBKU0dsb2JhbERhdGFA
SlNDQEBVQUVAWFoKICAgICA/PzFDb2xsYXRvckBXVEZAQFFBRUBYWgpAQCAtNDQsNyArNDAsNiBA
QCBFWFBPUlRTCiAgICAgPz8xVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFQFhaCiAgICAgPz8xV1RG
VGhyZWFkRGF0YUBXVEZAQFFBRUBYWgogICAgID8/MVdlYWtIYW5kbGVPd25lckBKU0NAQFVBRUBY
WgotICAgID8/OEpTQ0BAWUFfTkFCVlVTdHJpbmdAMEAwQFoKICAgICA/PzhXVEZAQFlBX05BQlZD
U3RyaW5nQDBAMEBaCiAgICAgP0VjbWFTY3JpcHRDb252ZXJ0ZXJARG91YmxlVG9TdHJpbmdDb252
ZXJ0ZXJAZG91YmxlX2NvbnZlcnNpb25AV1RGQEBTQUFCVjEyM0BYWgogICAgID9TdHJpbmdUb0Rv
dWJsZUBTdHJpbmdUb0RvdWJsZUNvbnZlcnRlckBkb3VibGVfY29udmVyc2lvbkBXVEZAQFNBTlBC
RElQQUlAWgpAQCAtNzEsNyArNjYsNiBAQCBFWFBPUlRTCiAgICAgP2FsbG9jYXRlU2xvd0Nhc2VA
TWFya2VkQWxsb2NhdG9yQEpTQ0BAQUFFUEFYWFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJA
V1RGQEBRQUVYUEJFSUBaCiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCX1dJ
QFoKLSAgICA/YXNjaWlAVVN0cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdAV1RGQEBYWgogICAgID9h
dHRhY2hARGVidWdnZXJASlNDQEBRQUVYUEFWSlNHbG9iYWxPYmplY3RAMkBAWgogICAgID9iYXNl
NjREZWNvZGVAV1RGQEBZQV9OQUJWU3RyaW5nQDFAQUFWPyRWZWN0b3JARCQwQUBAMUBXNEJhc2U2
NERlY29kZVBvbGljeUAxQEBaCiAgICAgP2Jhc2U2NEVuY29kZUBXVEZAQFlBP0FWU3RyaW5nQDFA
UEJESVc0QmFzZTY0RW5jb2RlUG9saWN5QDFAQFoKQEAgLTg0LDcgKzc4LDcgQEAgRVhQT1JUUwog
ICAgID9jYWxjdWxhdGVEU1RPZmZzZXRAV1RGQEBZQU5OTkBaCiAgICAgP2NhbGN1bGF0ZVN0cmlu
Z0hhc2hBbmRMZW5ndGhGcm9tVVRGOE1hc2tpbmdUb3A4Qml0c0BVbmljb2RlQFdURkBAWUFJUEJE
MEFBSTFAWgogICAgID9jYWxjdWxhdGVVVENPZmZzZXRAV1RGQEBZQUhYWgotICAgID9jYWxjdWxh
dGVkRnVuY3Rpb25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFP0FWVVN0cmluZ0AyQFha
CisgICAgP2NhbGN1bGF0ZWRGdW5jdGlvbk5hbWVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkU/
QVZTdHJpbmdAV1RGQEBYWgogICAgID9jYWxsQEpTQ0BAWUE/QVZKU1ZhbHVlQDFAUEFWRXhlY1N0
YXRlQDFAVjIxQFc0Q2FsbFR5cGVAMUBBQlRDYWxsRGF0YUAxQDFBQlZBcmdMaXN0QDFAQFoKICAg
ICA/Y2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3JASlNDQEBZSV9KUEFWRXhlY1N0YXRlQDFA
QFoKICAgICA/Y2FsbE9uTWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgpAQCAtOTcsNyAr
OTEsNyBAQCBFWFBPUlRTCiAgICAgP2NoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZUBJZGVudGlm
aWVyQEpTQ0BAQ0FYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/Y2hlY2tTeW50YXhASlNDQEBZ
QV9OUEFWRXhlY1N0YXRlQDFAQUJWU291cmNlQ29kZUAxQFBBVkpTVmFsdWVAMUBAWgogICAgID9j
aGVja3N1bUBNRDVAV1RGQEBRQUVYQUFWPyRWZWN0b3JARSQwQkFAQDJAQFoKLSAgICA/Y2xhc3NO
YW1lQEpTT2JqZWN0QEpTQ0BAU0E/QVZVU3RyaW5nQDJAUEJWMTJAQFoKKyAgICA/Y2xhc3NOYW1l
QEpTT2JqZWN0QEpTQ0BAU0E/QVZTdHJpbmdAV1RGQEBQQlYxMkBAWgogICAgID9jbGVhckBTb3Vy
Y2VQcm92aWRlckNhY2hlQEpTQ0BAUUFFWFhaCiAgICAgP2NsZWFyUmFyZURhdGFASlNHbG9iYWxP
YmplY3RASlNDQEBDQVhQQVZKU0NlbGxAMkBAWgogICAgID9jb2xsYXRlQENvbGxhdG9yQFdURkBA
UUJFP0FXNFJlc3VsdEAxMkBQQl9XSTBJQFoKQEAgLTEwNywzMSArMTAxLDMwIEBAIEVYUE9SVFMK
ICAgICA/Y29uc3RydWN0QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFZKU1Zh
bHVlQDFAVzRDb25zdHJ1Y3RUeXBlQDFAQUJUQ29uc3RydWN0RGF0YUAxQEFCVkFyZ0xpc3RAMUBA
WgogICAgID9jb25zdHJ1Y3RBcnJheUBKU0NAQFlBUEFWSlNBcnJheUAxQFBBVkV4ZWNTdGF0ZUAx
QEFCVkFyZ0xpc3RAMUBAWgogICAgID9jb25zdHJ1Y3RFbXB0eU9iamVjdEBKU0NAQFlBUEFWSlNP
YmplY3RAMUBQQVZFeGVjU3RhdGVAMUBAWgotICAgID9jb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5n
RXZhbEVuYWJsZWRDaGVja0BKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBQQVZK
U0dsb2JhbE9iamVjdEAxQEFCVkFyZ0xpc3RAMUBBQlZJZGVudGlmaWVyQDFAQUJWVVN0cmluZ0Ax
QEFCVlRleHRQb3NpdGlvbkBXVEZAQEBaCisgICAgP2NvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFBBVkpT
R2xvYmFsT2JqZWN0QDFAQUJWQXJnTGlzdEAxQEFCVklkZW50aWZpZXJAMUBBQlZTdHJpbmdAV1RG
QEBBQlZUZXh0UG9zaXRpb25AOEBAWgogICAgID9jb25zdHJ1Y3ROdW1iZXJASlNDQEBZQVBBVk51
bWJlck9iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVkpTVmFsdWVA
MUBAWgogICAgID9jb25zdHJ1Y3RTdHJpbmdASlNDQEBZQVBBVlN0cmluZ09iamVjdEAxQFBBVkV4
ZWNTdGF0ZUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVkpTVmFsdWVAMUBAWgogICAgID9jb252ZXJ0
TGF0aW4xVG9VVEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJF
UEJFUEFQQURQQURAWgogICAgID9jb252ZXJ0VVRGMTZUb1VURjhAVW5pY29kZUBXVEZAQFlBP0FX
NENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQl9XUEJfV1BBUEFEUEFEX05AWgogICAgID9jb252ZXJ0
VVRGOFRvVVRGMTZAVW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkRQ
QkRQQVBBX1dQQV9XX05AWgotICAgID9jcmVhdGVASlNGdW5jdGlvbkBKU0NAQFNBUEFWMTJAUEFW
RXhlY1N0YXRlQDJAUEFWSlNHbG9iYWxPYmplY3RAMkBIQUJWVVN0cmluZ0AyQFA2SV9KMEBaVzRJ
bnRyaW5zaWNAMkAzQFoKKyAgICA/Y3JlYXRlQEpTRnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4
ZWNTdGF0ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJASEFCVlN0cmluZ0BXVEZAQFA2SV9KMEBaVzRJ
bnRyaW5zaWNAMkAzQFoKICAgICA/Y3JlYXRlQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQYXNz
UmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQFc0SGVh
cFR5cGVAMkBAWgotICAgID9jcmVhdGVAT3BhcXVlSlNTdHJpbmdAQFNBP0FWPyRQYXNzUmVmUHRy
QFVPcGFxdWVKU1N0cmluZ0BAQFdURkBAQUJWVVN0cmluZ0BKU0NAQEBaCi0gICAgP2NyZWF0ZUBS
ZWdFeHBASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVTdHJpbmdAMkBXNFJlZ0V4
cEZsYWdzQDJAQFoKKyAgICA/Y3JlYXRlQFJlZ0V4cEBKU0NAQFNBUEFWMTJAQUFWSlNHbG9iYWxE
YXRhQDJAQUJWU3RyaW5nQFdURkBAVzRSZWdFeHBGbGFnc0AyQEBaCiAgICAgP2NyZWF0ZUVtcHR5
U3RyaW5nQFNtYWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBAWgotICAgID9j
cmVhdGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5n
QDFAQFoKKyAgICA/Y3JlYXRlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRl
QDFAQUJWU3RyaW5nQFdURkBAQFoKICAgICA/Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNl
cHRpb25ASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWSlNHbG9iYWxEYXRhQDFAQFoKICAgICA/Y3Jl
YXRlTGVha2VkQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0dsb2JhbERh
dGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQFc0SGVhcFR5cGVAMkBAWgogICAgID9j
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVj
U3RhdGVAMUBAWgotICAgID9jcmVhdGVSYW5nZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBB
VkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgotICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBK
U0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKKyAgICA/
Y3JlYXRlUmFuZ2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZT
dHJpbmdAV1RGQEBAWgorICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmpl
Y3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZTdHJpbmdAV1RGQEBAWgogICAgID9jcmVhdGVTaW5nbGVD
aGFyYWN0ZXJTdHJpbmdAU21hbGxTdHJpbmdzQEpTQ0BAQUFFWFBBVkpTR2xvYmFsRGF0YUAyQEVA
WgogICAgID9jcmVhdGVTdGFja092ZXJmbG93RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFW
RXhlY1N0YXRlQDFAQFoKLSAgICA/Y3JlYXRlU3ludGF4RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0
QDFAUEFWRXhlY1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBaCisgICAgP2NyZWF0ZVN5bnRheEVycm9y
QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlN0cmluZ0BXVEZAQEBaCiAg
ICAgP2NyZWF0ZVRhYmxlQEhhc2hUYWJsZUBKU0NAQEFCRVhQQVZKU0dsb2JhbERhdGFAMkBAWgog
ICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBAWgogICAgID9jcmVhdGVUaHJl
YWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBQQkRAWgogICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQ
NkFYUEFYQFowUEJEQFoKLSAgICA/Y3JlYXRlVHlwZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAx
QFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID9jcmVhdGVUeXBlRXJyb3JASlND
QEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWU3RyaW5nQFdURkBAQFoKICAgICA/
Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXJAV1RGQEBZQUlYWgogICAgID9jcnlwdG9ncmFw
aGljYWxseVJhbmRvbVZhbHVlc0BXVEZAQFlBWFBBWElAWgogICAgID9jdXJyZW50VGhyZWFkQFdU
RkBAWUFJWFoKQEAgLTE2NCw3ICsxNTcsNyBAQCBFWFBPUlRTCiAgICAgP2RldGFjaFRocmVhZEBX
VEZAQFlBWElAWgogICAgID9kaWRUaW1lT3V0QFRpbWVvdXRDaGVja2VyQEpTQ0BAUUFFX05QQVZF
eGVjU3RhdGVAMkBAWgogICAgID9kZWxldGVBbGxDb21waWxlZENvZGVASGVhcEBKU0NAQFFBRVhY
WgotICAgID9kaXNwbGF5TmFtZUBKU0Z1bmN0aW9uQEpTQ0BAUUFFP0JWVVN0cmluZ0AyQFBBVkV4
ZWNTdGF0ZUAyQEBaCisgICAgP2Rpc3BsYXlOYW1lQEpTRnVuY3Rpb25ASlNDQEBRQUU/QlZTdHJp
bmdAV1RGQEBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9kdG9hQFdURkBAWUFYUUFETkFBX05BQUhB
QUlAWgogICAgID9kdW1wQWxsT3B0aW9uc0BPcHRpb25zQEpTQ0BAU0FYUEFVX2lvYnVmQEBAWgog
ICAgID9kdW1wQ2FsbEZyYW1lQEludGVycHJldGVyQEpTQ0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEBa
CkBAIC0xNzIsNyArMTY1LDcgQEAgRVhQT1JUUwogICAgID9lbXB0eUBTdHJpbmdJbXBsQFdURkBA
U0FQQVYxMkBYWgogICAgID9lbnVtZXJhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFCRV9O
WFoKICAgICA/ZXF1YWxVVEYxNldpdGhVVEY4QFVuaWNvZGVAV1RGQEBZQV9OUEJfVzBQQkQxQFoK
LSAgICA/ZXZhbHVhdGVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkU/QVZKU1ZhbHVlQDJAQUJW
VVN0cmluZ0AyQEFBVjMyQEBaCisgICAgP2V2YWx1YXRlQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BA
UUJFP0FWSlNWYWx1ZUAyQEFCVlN0cmluZ0BXVEZAQEFBVjMyQEBaCiAgICAgP2V2YWx1YXRlQEpT
Q0BAWUE/QVZKU1ZhbHVlQDFAUEFWRXhlY1N0YXRlQDFAUEFWU2NvcGVDaGFpbk5vZGVAMUBBQlZT
b3VyY2VDb2RlQDFAVjIxQFBBVjIxQEBaCiAgICAgP2V4Y2x1ZGVAUHJvZmlsZUBKU0NAQFFBRVhQ
QlZQcm9maWxlTm9kZUAyQEBaCiAgICAgP2V4ZWN1dGVAUGFyYWxsZWxFbnZpcm9ubWVudEBXVEZA
QFFBRVhQQVhAWgpAQCAtMTkxLDcgKzE4NCw3IEBAIEVYUE9SVFMKICAgICA/ZmluZEFsbG9jYXRv
ckBXZWFrU2V0QEpTQ0BAQUFFUEFVRnJlZUNlbGxAV2Vha0Jsb2NrQDJAWFoKICAgICA/ZmluaXNo
Q3JlYXRpb25AQm9vbGVhbk9iamVjdEBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBAWgogICAg
ID9maW5pc2hDcmVhdGlvbkBEYXRlSW5zdGFuY2VASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJA
TkBaCi0gICAgP2ZpbmlzaENyZWF0aW9uQEludGVybmFsRnVuY3Rpb25ASlNDQEBJQUVYQUFWSlNH
bG9iYWxEYXRhQDJAQUJWVVN0cmluZ0AyQEBaCisgICAgP2ZpbmlzaENyZWF0aW9uQEludGVybmFs
RnVuY3Rpb25ASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJAQUJWU3RyaW5nQFdURkBAQFoKICAg
ICA/ZmluaXNoQ3JlYXRpb25ASlNBcnJheUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBJQFoK
ICAgICA/ZmluaXNoQ3JlYXRpb25AUmVnRXhwT2JqZWN0QEpTQ0BASUFFWFBBVkpTR2xvYmFsT2Jq
ZWN0QDJAQFoKICAgICA/ZmluaXNoQ3JlYXRpb25AU3RyaW5nT2JqZWN0QEpTQ0BASUFFWEFBVkpT
R2xvYmFsRGF0YUAyQFBBVkpTU3RyaW5nQDJAQFoKQEAgLTIwMCw4ICsxOTMsNyBAQCBFWFBPUlRT
CiAgICAgP2Zyb21ASWRlbnRpZmllckBKU0NAQFNBP0FWMTJAUEFWRXhlY1N0YXRlQDJASEBaCiAg
ICAgP2Zyb21ASWRlbnRpZmllckBKU0NAQFNBP0FWMTJAUEFWRXhlY1N0YXRlQDJASUBaCiAgICAg
P2Z1bmN0aW9uR2V0dGVyQFByb3BlcnR5U2xvdEBKU0NAQEFCRT9BVkpTVmFsdWVAMkBQQVZFeGVj
U3RhdGVAMkBAWgotICAgID9mdW5jdGlvbk5hbWVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQ
QlZVU3RyaW5nQDJAWFoKLSAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/QVZV
U3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgorICAgID9nZXRDYWxjdWxh
dGVkRGlzcGxheU5hbWVASlNDQEBZQT9BVlN0cmluZ0BXVEZAQFBBVkV4ZWNTdGF0ZUAxQFBBVkpT
T2JqZWN0QDFAQFoKICAgICA/Z2V0Q2FsbERhdGFASlNDZWxsQEpTQ0BAU0E/QVc0Q2FsbFR5cGVA
MkBQQVYxMkBBQVRDYWxsRGF0YUAyQEBaCiAgICAgP2dldENhbGxhYmxlT2JqZWN0U2xvd0BKU0NA
QFlBUEFWSlNDZWxsQDFAUEFWMjFAQFoKICAgICA/Z2V0Q29uc3RydWN0RGF0YUBKU0NlbGxASlND
QEBTQT9BVzRDb25zdHJ1Y3RUeXBlQDJAUEFWMTJAQUFUQ29uc3RydWN0RGF0YUAyQEBaCkBAIC0y
MTYsOCArMjA4LDggQEAgRVhQT1JUUwogICAgID9nZXRQcm9wZXJ0eU5hbWVzQEpTT2JqZWN0QEpT
Q0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRlQDJAQUFWUHJvcGVydHlOYW1lQXJyYXlAMkBXNEVudW1l
cmF0aW9uTW9kZUAyQEBaCiAgICAgP2dldFNsaWNlQEFyZ0xpc3RASlNDQEBRQkVYSEFBVjEyQEBa
CiAgICAgP2dldFN0YWNrVHJhY2VASW50ZXJwcmV0ZXJASlNDQEBTQVhQQVZKU0dsb2JhbERhdGFA
MkBBQVY/JFZlY3RvckBVU3RhY2tGcmFtZUBKU0NAQCQwQUBAV1RGQEBAWgotICAgID9nZXRTdHJp
bmdASlNDZWxsQEpTQ0BAUUJFP0FWVVN0cmluZ0AyQFBBVkV4ZWNTdGF0ZUAyQEBaCi0gICAgP2dl
dFN0cmluZ0BKU0NlbGxASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFBVlVTdHJpbmdAMkBAWgor
ICAgID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFP0FWU3RyaW5nQFdURkBAUEFWRXhlY1N0YXRl
QDJAQFoKKyAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBKU0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUFW
U3RyaW5nQFdURkBAQFoKICAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUhBQVZKU0dsb2JhbERh
dGFAMkBWUHJvcGVydHlOYW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAgID9nZXR0ZXJAUHJv
cGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFP0FWSlNWYWx1ZUAyQFhaCiAgICAgP2dsb2JhbEV4ZWNA
SlNHbG9iYWxPYmplY3RASlNDQEBRQUVQQVZFeGVjU3RhdGVAMkBYWgpAQCAtMjM2LDcgKzIyOCw3
IEBAIEVYUE9SVFMKICAgICA/aW5pdGlhbGl6ZU1haW5UaHJlYWRAV1RGQEBZQVhYWgogICAgID9p
bml0aWFsaXplVGhyZWFkaW5nQEpTQ0BAWUFYWFoKICAgICA/aW5pdGlhbGl6ZVRocmVhZGluZ0BX
VEZAQFlBWFhaCi0gICAgP2ludGVycHJldEBZYXJyQEpTQ0BAWUFJUEFVQnl0ZWNvZGVQYXR0ZXJu
QDEyQEFCVlVTdHJpbmdAMkBJUEFJQFoKKyAgICA/aW50ZXJwcmV0QFlhcnJASlNDQEBZQUlQQVVC
eXRlY29kZVBhdHRlcm5AMTJAQUJWU3RyaW5nQFdURkBASVBBSUBaCiAgICAgP2lzQWNjZXNzb3JE
ZXNjcmlwdG9yQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFCRV9OWFoKICAgICA/aXNCdXN5QEhl
YXBASlNDQEBRQUVfTlhaCiAgICAgP2lzRGF0YURlc2NyaXB0b3JAUHJvcGVydHlEZXNjcmlwdG9y
QEpTQ0BAUUJFX05YWgpAQCAtMjQ2LDE5ICsyMzgsMTYgQEAgRVhQT1JUUwogICAgID9pc1Rlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQV9OVkpTVmFsdWVAMUBAWgogICAgID9pc1Zh
bGlkQWxsb2NhdGlvbkBIZWFwQEpTQ0BAQUFFX05JQFoKICAgICA/aXNWYWxpZENhbGxlZUBKU1Zh
bHVlQEpTQ0BAUUFFX05YWgotICAgID9qc093bmVkU3RyaW5nQEpTQ0BAWUFQQVZKU1N0cmluZ0Ax
QFBBVkpTR2xvYmFsRGF0YUAxQEFCVlVTdHJpbmdAMUBAWgotICAgID9qc1N0cmluZ0BKU0NAQFlB
UEFWSlNTdHJpbmdAMUBQQVZKU0dsb2JhbERhdGFAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/bGVu
Z3RoQENTdHJpbmdAV1RGQEBRQkVJWFoKICAgICA/bG9ja0BKU0xvY2tASlNDQEBRQUVYWFoKICAg
ICA/bG9ja0BNdXRleEBXVEZAQFFBRVhYWgogICAgID9sb2NrQXRvbWljYWxseUluaXRpYWxpemVk
U3RhdGljTXV0ZXhAV1RGQEBZQVhYWgotICAgID9tYXRjaEBSZWdFeHBASlNDQEBRQUVIQUFWSlNH
bG9iYWxEYXRhQDJAQUJWVVN0cmluZ0AyQElBQVY/JFZlY3RvckBIJDBDQUBAV1RGQEBAWgorICAg
ID9tYXRjaEBSZWdFeHBASlNDQEBRQUVIQUFWSlNHbG9iYWxEYXRhQDJAQUJWU3RyaW5nQFdURkBA
SUFBVj8kVmVjdG9yQEgkMENBQEA1QEBaCiAgICAgP21hdGVyaWFsaXplUHJvcGVydHlNYXBAU3Ry
dWN0dXJlQEpTQ0BAQUFFWEFBVkpTR2xvYmFsRGF0YUAyQEBaCiAgICAgP21vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZUBXVEZAQFlBTlhaCiAgICAgP21vbnRoRnJvbURheUluWWVhckBXVEZAQFlB
SEhfTkBaCiAgICAgP21zVG9ZZWFyQFdURkBAWUFITkBaCi0gICAgP25hbWVASW50ZXJuYWxGdW5j
dGlvbkBKU0NAQFFBRUFCVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAgID9uYW1lQEpT
RnVuY3Rpb25ASlNDQEBRQUVBQlZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKKyAgICA/bmFt
ZUBKU0Z1bmN0aW9uQEpTQ0BAUUFFQUJWU3RyaW5nQFdURkBAUEFWRXhlY1N0YXRlQDJAQFoKICAg
ICA/bmV1dGVyQEFycmF5QnVmZmVyVmlld0BXVEZAQE1BRVhYWgogICAgID9uZXdVbmluaXRpYWxp
emVkQENTdHJpbmdAV1RGQEBTQT9BVjEyQElBQVBBREBaCiAgICAgP25vdGlmeVdyaXRlU2xvd0BT
eW1ib2xUYWJsZUVudHJ5QEpTQ0BAQUFFWFhaCkBAIC0yOTMsNyArMjgyLDcgQEAgRVhQT1JUUwog
ICAgID9wdXREaXJlY3RWaXJ0dWFsQEpTT2JqZWN0QEpTQ0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRl
QDJAVlByb3BlcnR5TmFtZUAyQFZKU1ZhbHVlQDJASUBaCiAgICAgP3JhbmRvbU51bWJlckBXVEZA
QFlBTlhaCiAgICAgP3JlY29tcGlsZUFsbEpTRnVuY3Rpb25zQERlYnVnZ2VyQEpTQ0BAUUFFWFBB
VkpTR2xvYmFsRGF0YUAyQEBaCi0gICAgP3JlZ0V4cEZsYWdzQEpTQ0BAWUE/QVc0UmVnRXhwRmxh
Z3NAMUBBQlZVU3RyaW5nQDFAQFoKKyAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBG
bGFnc0AxQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgP3JlaWZ5U3RyaW5nQFN0cmluZ0J1aWxkZXJA
V1RGQEBBQkVYWFoKICAgICA/cmVsZWFzZURlY29tbWl0dGVkQE9TQWxsb2NhdG9yQFdURkBAU0FY
UEFYSUBaCiAgICAgP3JlbGVhc2VFeGVjdXRhYmxlTWVtb3J5QEpTR2xvYmFsRGF0YUBKU0NAQFFB
RVhYWgpAQCAtMzEwLDcgKzI5OSw3IEBAIEVYUE9SVFMKICAgICA/cmVzb2x2ZVJvcGVASlNSb3Bl
U3RyaW5nQEpTQ0BAQUJFWFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3Jlc3RvcmVBbGxAUHJvZmls
ZUBKU0NAQFFBRVhYWgogICAgID9yZXRyaWV2ZUNhbGxlckZyb21WTUNvZGVASW50ZXJwcmV0ZXJA
SlNDQEBRQkU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAUEFWSlNGdW5jdGlvbkAyQEBaCi0g
ICAgP3JldHJpZXZlTGFzdENhbGxlckBJbnRlcnByZXRlckBKU0NAQFFCRVhQQVZFeGVjU3RhdGVA
MkBBQUgxQUFWVVN0cmluZ0AyQEFBVkpTVmFsdWVAMkBAWgorICAgID9yZXRyaWV2ZUxhc3RDYWxs
ZXJASW50ZXJwcmV0ZXJASlNDQEBRQkVYUEFWRXhlY1N0YXRlQDJAQUFIMUFBVlN0cmluZ0BXVEZA
QEFBVkpTVmFsdWVAMkBAWgogICAgID9zZXRDb25maWd1cmFibGVAUHJvcGVydHlEZXNjcmlwdG9y
QEpTQ0BAUUFFWF9OQFoKICAgICA/c2V0RGVzY3JpcHRvckBQcm9wZXJ0eURlc2NyaXB0b3JASlND
QEBRQUVYVkpTVmFsdWVAMkBJQFoKICAgICA/c2V0RHVtcHNHZW5lcmF0ZWRDb2RlQEJ5dGVjb2Rl
R2VuZXJhdG9yQEpTQ0BAU0FYX05AWgpAQCAtMzM3LDExICszMjYsMTAgQEAgRVhQT1JUUwogICAg
ID9zbG93VmFsaWRhdGVDZWxsQEpTQ0BAWUFYUEFWSlNDZWxsQDFAQFoKICAgICA/c2xvd1ZhbGlk
YXRlQ2VsbEBKU0NAQFlBWFBBVkpTR2xvYmFsT2JqZWN0QDFAQFoKICAgICA/c291cmNlQ29kZUBK
U0Z1bmN0aW9uQEpTQ0BAUUJFUEJWU291cmNlQ29kZUAyQFhaCi0gICAgP3N0YXJ0UHJvZmlsaW5n
QFByb2ZpbGVyQEpTQ0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgorICAgID9z
dGFydFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRVhQQVZFeGVjU3RhdGVAMkBBQlZTdHJpbmdA
V1RGQEBAWgogICAgID9zdGFydFNhbXBsaW5nQEpTR2xvYmFsRGF0YUBKU0NAQFFBRVhYWgotICAg
ID9zdG9wUHJvZmlsaW5nQFByb2ZpbGVyQEpTQ0BAUUFFP0FWPyRQYXNzUmVmUHRyQFZQcm9maWxl
QEpTQ0BAQFdURkBAUEFWRXhlY1N0YXRlQDJAQUJWVVN0cmluZ0AyQEBaCisgICAgP3N0b3BQcm9m
aWxpbmdAUHJvZmlsZXJASlNDQEBRQUU/QVY/JFBhc3NSZWZQdHJAVlByb2ZpbGVASlNDQEBAV1RG
QEBQQVZFeGVjU3RhdGVAMkBBQlZTdHJpbmdANEBAWgogICAgID9zdG9wU2FtcGxpbmdASlNHbG9i
YWxEYXRhQEpTQ0BAUUFFWFhaCi0gICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBsQFVTdHJpbmdASlND
QEBRQkU/QVYxMkBJSUBaCiAgICAgP3N1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0
eUBTdHJ1Y3R1cmVASlNDQEBRQUVJWFoKICAgICA/c3dlZXBlckBIZWFwQEpTQ0BAUUFFUEFWSW5j
cmVtZW50YWxTd2VlcGVyQDJAWFoKICAgICA/c3ludGhlc2l6ZVByb3RvdHlwZUBKU1ZhbHVlQEpT
Q0BAUUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgpAQCAtMzUwLDcgKzMzOCw3IEBA
IEVYUE9SVFMKICAgICA/dGhyb3dFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3Rh
dGVAMUBQQVYyMUBAWgogICAgID90aHJvd1N5bnRheEVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAx
QFBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgP3Rocm93VHlwZUVycm9yQEpTQ0BAWUFQQVZKU09iamVj
dEAxQFBBVkV4ZWNTdGF0ZUAxQEBaCi0gICAgP3Rocm93VHlwZUVycm9yQEpTQ0BAWUFQQVZKU09i
amVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID90aHJvd1R5cGVFcnJv
ckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZTdHJpbmdAV1RGQEBAWgog
ICAgID90aW1lZFdhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFX05BQVZNdXRleEAyQE5AWgog
ICAgID90bHNLZXlDb3VudEBXVEZAQFlBQUFKWFoKICAgICA/dGxzS2V5c0BXVEZAQFlBUEFLWFoK
QEAgLTM2Niw2ICszNTQsNyBAQCBFWFBPUlRTCiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VASlNWYWx1
ZUBKU0NAQEFCRVBBVkpTU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9UaGlzT2Jq
ZWN0QEpTT2JqZWN0QEpTQ0BAU0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBAWgog
ICAgID90b1RoaXNPYmplY3RTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmplY3RAMkBQ
QVZFeGVjU3RhdGVAMkBAWgorICAgID90b1dURlN0cmluZ1Nsb3dDYXNlQEpTVmFsdWVASlNDQEBB
QkU/QVZTdHJpbmdAV1RGQEBQQVZFeGVjU3RhdGVAMkBAWgogICAgID90cmFuc2ZlckBBcnJheUJ1
ZmZlckBXVEZAQFFBRV9OQUFWQXJyYXlCdWZmZXJDb250ZW50c0AyQEFBVj8kVmVjdG9yQFY/JFJl
ZlB0ckBWQXJyYXlCdWZmZXJWaWV3QFdURkBAQFdURkBAJDBBQEAyQEBaCiAgICAgP3RyeUZhc3RD
YWxsb2NAV1RGQEBZQT9BVVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUlAWgogICAgID90cnlGYXN0
TWFsbG9jQFdURkBAWUE/QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElAWgpAQCAtMzc3LDcgKzM2
Niw2IEBAIEVYUE9SVFMKICAgICA/dW5sb2NrQE11dGV4QFdURkBAUUFFWFhaCiAgICAgP3VubG9j
a0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4QFdURkBAWUFYWFoKICAgICA/dW5wcm90
ZWN0QEhlYXBASlNDQEBRQUVfTlZKU1ZhbHVlQDJAQFoKLSAgICA/dXRmOEBVU3RyaW5nQEpTQ0BA
UUJFP0FWQ1N0cmluZ0BXVEZAQF9OQFoKICAgICA/dmFsaWRhdGVATWFya1N0YWNrQEpTQ0BAS0FY
UEFWSlNDZWxsQDJAQFoKICAgICA/dmlzaXRDaGlsZHJlbkBKU0dsb2JhbE9iamVjdEBKU0NAQFNB
WFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/dmlzaXRDaGlsZHJlbkBKU0ds
b2JhbFRoaXNASlNDQEBLQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmlu
ZGV4IDMyYjE3YTg3YmE5NGZlOWNhYzFiZTUzYjk0ZDlkZGJhN2JmNDBkNjguLmNlYzY1OGJiOTVm
NDI5YTI4MjQxNGRjMzlhN2Q5OGIxMDlmNGQxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCkBAIC0xMjk0LDI2ICsxMjk0
LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccnVudGltZVxVU3RyaW5nLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nLmgiCi0JCQkJPgotCQkJPC9GaWxl
PgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcVVN0cmluZ0J1aWxk
ZXIuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccnVudGltZVxVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8
RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nSW1wbC5oIgotCQkJ
CT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1l
XFdlYWtHQ01hcC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDA4NTliODYyMzFkYjRlMGNkYTQ1ZTk2ZDBjNjBjNjNiMGQxNzIyMy4uZDNkYjYx
OGNkMzEzYjIyMGE0YjEwMTlkNWNhNDlhZDJlYWY4Y2Y3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU4LDcgKzU4LDYgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkwOEREQTVDMTEy
NjQ2MzE3MDA3NTE3MzIgLyogVVN0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RERBNUJCMTI2NDVGMUQwMDc1MTczMiAvKiBVU3Ry
aW5nQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwNzc2QkQx
NEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzOUExNEJDRjQ1RDAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwICovOyB9OwogCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzMxLDcgKzMzMCw2IEBA
CiAJCTE0NDY5REVCMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDMDBFMTZF
RTMzMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQkxNDQ2OURFQzEw
N0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0MyMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJp
bmdPYmplY3QuY3BwICovOyB9OwogCQkxNDQ2OURFRDEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5n
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMThDM0M1MEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuY3BwICovOyB9
OwotCQkxNDQ2OURFRTEwN0VDN0U3MDA2NTA0NDYgLyogVVN0cmluZy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg4NTAyNTU1OTdEMDFGRjYw
RjcgLyogVVN0cmluZy5jcHAgKi87IH07CiAJCTE0NDgzNkU3MTMyREE3QkUwMDVCRTc4NSAvKiBD
b25zZXJ2YXRpdmVSb290cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ1NzIy
ODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NTcyMjg1MTQzN0UxNDAwMDVGREUyNiAvKiBT
dHJvbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQ2QUFCMzgwQjY2QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2QUFCMzcwQjY2
QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwICovOyB9OwpAQCAtNjYzLDcgKzY2MSw2
IEBACiAJCUJDMThDNDY4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0MzMEUxNkVFMzMw
MEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzE4QzNDNjBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0NkIwRTE2RjVDRDAw
QjM0NDYwIC8qIFN5bWJvbFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNEEzOTZBNjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzE4QzQ3
NjBFMTZGNUNEMDBCMzQ0NjAgLyogVVN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4
QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REUzRDBGNDBERDhEREZCMDA0Njg3
MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwogCQlCQzE4QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi87IH07
CiAJCUJDMThDNTI2MEUxNkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyNTBFMTZG
Q0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oICovOyB9OwpAQCAtODE3LDggKzgx
NCw2IEBACiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkwODk2QzI5QjEyNjVBQUY2MDBCMUNE
RDMgLyogVVN0cmluZ0NvbmNhdGVuYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVTdHJpbmdDb25jYXRlbmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
OEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVVN0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZm
b3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvbXBpbGF0aW9uRWZm
b3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4Mzk2MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTgsOCArMTUxMyw2IEBACiAJCUY2
OTJBODdDMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0QwMjU1NTk3RDAx
RkY2MEY3IC8qIFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKLQkJRjY5MkE4ODUw
MjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKLQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8q
IFVTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07
CiAJCUY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUZFNEEzMzFEMTVCRDJF
MDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWTUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWTUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjIzNSwxMCArMjIyOCw2IEBACiAJCQkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5
IC8qIFRyYWNpbmcuZCAqLywKIAkJCQk1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2lu
Zy5oICovLAogCQkJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rp
b24uaCAqLywKLQkJCQlGNjkyQTg4NTAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5jcHAgKi8s
Ci0JCQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcuaCAqLywKLQkJCQkwOERE
QTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLywKLQkJCQkwODk2QzI5
QjEyNjVBQUY2MDBCMUNERDMgLyogVVN0cmluZ0NvbmNhdGVuYXRlLmggKi8sCiAJCQkJMTRCRkNF
NjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJCTE0MjBCRTdBMTBBQTZE
REIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTEx
OTQwIC8qIFdyaXRlQmFycmllci5oICovLApAQCAtMjc4Niw4ICsyNzc1LDYgQEAKIAkJCQk1RDUz
NzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY2
NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDMThDNDc2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVU3Ry
aW5nLmggaW4gSGVhZGVycyAqLywKLQkJCQkwOEREQTVDMTEyNjQ2MzE3MDA3NTE3MzIgLyogVVN0
cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlC
MiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ4MTQ2MENCQjMw
MDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0OTE0
NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM0
MzMsNyArMzQyMCw2IEBACiAJCQkJQkNDRjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVy
ZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3
OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRBNDJFM0YwRjRG
NjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0
NDY5REVFMTA3RUM3RTcwMDY1MDQ0NiAvKiBVU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQzgxNTE2MTQwNTExQjUwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9y
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFy
ckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpp
bmRleCBlNWFmMWY3NzcyZTYwODEzOTZlOGQwNjUxYWUzNmZmMDRkNjIwOTYwLi41NDUzYThlNjYy
YmM1ZjgwNGIyMDljYWFiYjYyMjlhYzlkMzdlNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnBy
aQpAQCAtMjU1LDcgKzI1NSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvU3RydWN0dXJl
LmNwcCBcCiAgICAgcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgXAogICAgIHJ1bnRpbWUvVGltZW91
dENoZWNrZXIuY3BwIFwKLSAgICBydW50aW1lL1VTdHJpbmcuY3BwIFwKICAgICB0b29scy9Db2Rl
UHJvZmlsZS5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwIFwKICAgICB5YXJyL1lh
cnJKSVQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggMDZiZTc3MDgwNTNiN2MyOTg1MzdiN2IwZWE4MzcwMTkxMzFiOTg2MS4uNWJmZTlk
MGFjNzk0ODQ4ZTkwZWZkZjU1Y2NiNzFiMjY1OTBlZjc5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTWV0aG9kQ2FsbExpbmtTdGF0dXMu
aCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVu
YXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC02MiwzNiArNjEsMzYgQEAgbmFtZXNw
YWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLXN0YXRpYyBVU3RyaW5n
IGVzY2FwZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIpCitzdGF0aWMgU3RyaW5nIGVzY2FwZVF1
b3Rlcyhjb25zdCBTdHJpbmcmIHN0cikKIHsKLSAgICBVU3RyaW5nIHJlc3VsdCA9IHN0cjsKKyAg
ICBTdHJpbmcgcmVzdWx0ID0gc3RyOwogICAgIHNpemVfdCBwb3MgPSAwOwogICAgIHdoaWxlICgo
cG9zID0gcmVzdWx0LmZpbmQoJ1wiJywgcG9zKSkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgcmVz
dWx0ID0gbWFrZVVTdHJpbmcocmVzdWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIHBvcyksICJc
IlxcXCJcIiIsIHJlc3VsdC5zdWJzdHJpbmdTaGFyaW5nSW1wbChwb3MgKyAxKSk7CisgICAgICAg
IHJlc3VsdCA9IG1ha2VTdHJpbmcocmVzdWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIHBvcyks
ICJcIlxcXCJcIiIsIHJlc3VsdC5zdWJzdHJpbmdTaGFyaW5nSW1wbChwb3MgKyAxKSk7CiAgICAg
ICAgIHBvcyArPSA0OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgVVN0
cmluZyB2YWx1ZVRvU291cmNlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwpCitz
dGF0aWMgU3RyaW5nIHZhbHVlVG9Tb3VyY2VTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbCkKIHsKICAgICBpZiAoIXZhbCkKICAgICAgICAgcmV0dXJuICIwIjsKIAogICAgIGlmICh2
YWwuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVU3RyaW5nKCJcIiIsIGVzY2FwZVF1
b3Rlcyh2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgIlwiIik7CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJcIiIsIGVzY2FwZVF1b3Rlcyh2YWwudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKSwgIlwiIik7CiAKICAgICByZXR1cm4gdmFsLmRlc2NyaXB0aW9uKCk7CiB9CiAK
IHN0YXRpYyBDU3RyaW5nIGNvbnN0YW50TmFtZShFeGVjU3RhdGUqIGV4ZWMsIGludCBrLCBKU1Zh
bHVlIHZhbHVlKQogewotICAgIHJldHVybiBtYWtlVVN0cmluZyh2YWx1ZVRvU291cmNlU3RyaW5n
KGV4ZWMsIHZhbHVlKSwgIihAayIsIFVTdHJpbmc6Om51bWJlcihrIC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgpLCAiKSIpLnV0ZjgoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyh2YWx1ZVRv
U291cmNlU3RyaW5nKGV4ZWMsIHZhbHVlKSwgIihAayIsIFN0cmluZzo6bnVtYmVyKGsgLSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCksICIpIikudXRmOCgpOwogfQogCiBzdGF0aWMgQ1N0cmlu
ZyBpZE5hbWUoaW50IGlkMCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAgcmV0dXJu
IG1ha2VVU3RyaW5nKGlkZW50LnVzdHJpbmcoKSwgIihAaWQiLCBVU3RyaW5nOjpudW1iZXIoaWQw
KSwgIikiKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoaWRlbnQudXN0cmluZygpLCAi
KEBpZCIsIFN0cmluZzo6bnVtYmVyKGlkMCksICIpIikudXRmOCgpOwogfQogCiB2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUoaW50IGxvY2F0aW9uKQpAQCAtMTE0
LDEwICsxMTMsMTAgQEAgQ1N0cmluZyBDb2RlQmxvY2s6OnJlZ2lzdGVyTmFtZShFeGVjU3RhdGUq
IGV4ZWMsIGludCByKSBjb25zdAogICAgIGlmIChpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChyKSkK
ICAgICAgICAgcmV0dXJuIGNvbnN0YW50TmFtZShleGVjLCByLCBnZXRDb25zdGFudChyKSk7CiAK
LSAgICByZXR1cm4gbWFrZVVTdHJpbmcoInIiLCBVU3RyaW5nOjpudW1iZXIocikpLnV0ZjgoKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygiciIsIFN0cmluZzo6bnVtYmVyKHIpKS51dGY4KCk7CiB9
CiAKLXN0YXRpYyBVU3RyaW5nIHJlZ2V4cFRvU291cmNlU3RyaW5nKFJlZ0V4cCogcmVnRXhwKQor
c3RhdGljIFN0cmluZyByZWdleHBUb1NvdXJjZVN0cmluZyhSZWdFeHAqIHJlZ0V4cCkKIHsKICAg
ICBjaGFyIHBvc3RmaXhbNV0gPSB7ICcvJywgMCwgMCwgMCwgMCB9OwogICAgIGludCBpbmRleCA9
IDE7CkBAIC0xMjgsMTUgKzEyNywxNSBAQCBzdGF0aWMgVVN0cmluZyByZWdleHBUb1NvdXJjZVN0
cmluZyhSZWdFeHAqIHJlZ0V4cCkKICAgICBpZiAocmVnRXhwLT5tdWx0aWxpbmUoKSkKICAgICAg
ICAgcG9zdGZpeFtpbmRleF0gPSAnbSc7CiAKLSAgICByZXR1cm4gbWFrZVVTdHJpbmcoIi8iLCBy
ZWdFeHAtPnBhdHRlcm4oKSwgcG9zdGZpeCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIi8iLCBy
ZWdFeHAtPnBhdHRlcm4oKSwgcG9zdGZpeCk7CiB9CiAKIHN0YXRpYyBDU3RyaW5nIHJlZ2V4cE5h
bWUoaW50IHJlLCBSZWdFeHAqIHJlZ2V4cCkKIHsKLSAgICByZXR1cm4gbWFrZVVTdHJpbmcocmVn
ZXhwVG9Tb3VyY2VTdHJpbmcocmVnZXhwKSwgIihAcmUiLCBVU3RyaW5nOjpudW1iZXIocmUpLCAi
KSIpLnV0ZjgoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhyZWdleHBUb1NvdXJjZVN0cmluZyhy
ZWdleHApLCAiKEByZSIsIFN0cmluZzo6bnVtYmVyKHJlKSwgIikiKS51dGY4KCk7CiB9CiAKLXN0
YXRpYyBVU3RyaW5nIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2b2lkKiBwKQorc3RhdGljIFN0cmlu
ZyBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodm9pZCogcCkKIHsKICAgICBjaGFyIGJ1ZmZlclsyICsg
MiAqIHNpemVvZih2b2lkKikgKyAxXTsgLy8gMHggW3R3byBjaGFyYWN0ZXJzIHBlciBieXRlXSBc
MAogICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlcCIsIHApOwpAQCAtNjQy
LDcgKzY0MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCEoKGkgKyBt
X3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKSAmIH4weEZGRkYp
KTsKICAgICAgICAgICAgICAgICBVQ2hhciBjaCA9IHN0YXRpY19jYXN0PFVDaGFyPihlbnRyeSAr
IG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5taW4pOwotICAgICAg
ICAgICAgICAgIGRhdGFMb2coIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmluZygmY2gsIDEp
LnV0ZjgoKS5kYXRhKCksICppdGVyKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJcdFx0XCIl
c1wiID0+ICUwNGRcbiIsIFN0cmluZygmY2gsIDEpLnV0ZjgoKS5kYXRhKCksICppdGVyKTsKICAg
ICAgICAgfQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgfVxuIik7CiAgICAgICAgICAgICAr
K2k7CkBAIC02NTYsNyArNjU1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgZGF0YUxvZygiICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAg
IFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5lbmQo
KTsKICAgICAgICAgICAgIGZvciAoU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
c1tpXS5vZmZzZXRUYWJsZS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICAg
ICAgICAgIGRhdGFMb2coIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmluZyhpdGVyLT5maXJz
dCkudXRmOCgpLmRhdGEoKSwgaXRlci0+c2Vjb25kLmJyYW5jaE9mZnNldCk7CisgICAgICAgICAg
ICAgICAgZGF0YUxvZygiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoaXRlci0+Zmlyc3Qp
LnV0ZjgoKS5kYXRhKCksIGl0ZXItPnNlY29uZC5icmFuY2hPZmZzZXQpOwogICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgfVxuIik7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUg
KGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKQEAgLTMw
MDIsMTIgKzMwMDEsMTIgQEAgYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bj
b2RlSUQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1VU3RyaW5nIENvZGVCbG9jazo6bmFtZUZv
clJlZ2lzdGVyKGludCByZWdpc3Rlck51bWJlcikKK1N0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JS
ZWdpc3RlcihpbnQgcmVnaXN0ZXJOdW1iZXIpCiB7CiAgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9y
IGVuZCA9IG1fc3ltYm9sVGFibGUtPmVuZCgpOwogICAgIGZvciAoU3ltYm9sVGFibGU6Oml0ZXJh
dG9yIHB0ciA9IG1fc3ltYm9sVGFibGUtPmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAg
ICAgICAgIGlmIChwdHItPnNlY29uZC5nZXRJbmRleCgpID09IHJlZ2lzdGVyTnVtYmVyKQotICAg
ICAgICAgICAgcmV0dXJuIFVTdHJpbmcocHRyLT5maXJzdCk7CisgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKHB0ci0+Zmlyc3QpOwogICAgIH0KICAgICBpZiAobmVlZHNBY3RpdmF0aW9uKCkgJiYg
cmVnaXN0ZXJOdW1iZXIgPT0gYWN0aXZhdGlvblJlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiAi
YWN0aXZhdGlvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggNGE1MDgwYjIwMjRmZDI1YjY5ZDA0NzZiMWM4OGU0OTU4NTI3M2UwNy4uYTY0ZmQ2ZGNj
NDc5OTdmYTI4OTI4N2IxNTk0ZTQxY2Y5NjZmNmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNjQsNyArNjQsNiBAQAogI2luY2x1ZGUgIk5vZGVz
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1Yklu
Zm8uaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFs
aXplci5oIgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQu
aCIKQEAgLTc1LDYgKzc0LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogLy8gU2V0IEVOQUJMRV9CWVRFQ09ERV9DT01NRU5U
UyB0byAxIHRvIGVuYWJsZSByZWNvcmRpbmcgYnl0ZWNvZGUgZ2VuZXJhdG9yCiAvLyBjb21tZW50
cyBmb3IgdGhlIGJ5dGVjb2RlcyB0aGF0IGl0IGdlbmVyYXRlcy4gVGhpcyB3aWxsIGFsbG93CkBA
IC01ODMsNyArNTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2
YWxDYWNoZSgpOwogICAgICAgICAKLSAgICAgICAgVVN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoaW50
IHJlZ2lzdGVyTnVtYmVyKTsKKyAgICAgICAgU3RyaW5nIG5hbWVGb3JSZWdpc3RlcihpbnQgcmVn
aXN0ZXJOdW1iZXIpOwogICAgICAgICAKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4
IDZjMWJiOTdkMzAyZGI3NTY5MjgzMDY5YWZmZWFiYTI2ZjQxNjdiMzguLjg4ZTllNWMyNGYzMjYw
ZGM0ZGZhN2U3MmM5MDE1MjYyYTExYmQ5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIk5v
ZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NSwxNCAr
NDQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsQ29kZUNhY2hlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiB0cnlHZXQoYm9vbCBpblN0cmljdENv
bnRleHQsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIWluU3RyaWN0Q29udGV4dCAmJiBldmFsU291cmNl
Lmxlbmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmIHNjb3BlQ2hhaW4tPmJlZ2lu
KCktPmlzVmFyaWFibGVPYmplY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1h
cC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdldCgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNT
dGF0ZSogZXhlYywgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBjb25zdCBVU3RyaW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwg
SlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93
KEV4ZWNTdGF0ZSogZXhlYywgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgRXZh
bEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVj
LCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0cmljdENvbnRleHQpOwogICAgICAgICAgICAg
ZXhjZXB0aW9uVmFsdWUgPSBldmFsRXhlY3V0YWJsZS0+Y29tcGlsZShleGVjLCBzY29wZUNoYWlu
KTsKQEAgLTY1LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
ZXZhbEV4ZWN1dGFibGU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRh
YmxlKiBnZXQoRXhlY1N0YXRlKiBleGVjLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lciwgYm9vbCBp
blN0cmljdENvbnRleHQsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSkKKyAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGdldChFeGVjU3RhdGUqIGV4ZWMsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyLCBib29s
IGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbiwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IHRyeUdldChpblN0cmljdENv
bnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlQ2hhaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSnVtcFRhYmxlLmgKaW5kZXggNWJiZTA0NzEwN2Y1YjAxYzAyODliZWEzMzE4NmUx
Zjg0YTNhYWZjNy4uY2IwZGVmNTZlYzcwZGZjYWVmNWZiMDY3NTM5Y2MyN2E2ZWI1OTFjOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaApAQCAtMzEsNyArMzEs
NiBAQAogI2RlZmluZSBKdW1wVGFibGVfaAogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
LSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggOWQyZGQ3YmFiNTQwMDUyNWU4
YjE1N2MwMTRiMjRlMTc2ZDYzNTQ0OS4uYThhYWNmNDczMzgwNTgxNWY5MjI4ODJkMTJlZWFkMTdj
ZDUyZGVkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUg
IlN0cm9uZ0lubGluZXMuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTExNTgsNyArMTE1
OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcChPcGNv
ZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0CiAgICAgICAgICAgICAmJiBzcmMxLT5pc1Rl
bXBvcmFyeSgpCiAgICAgICAgICAgICAmJiBtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVy
SW5kZXgoc3JjMi0+aW5kZXgoKSkKICAgICAgICAgICAgICYmIG1fY29kZUJsb2NrLT5jb25zdGFu
dFJlZ2lzdGVyKHNyYzItPmluZGV4KCkpLmdldCgpLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAg
IGNvbnN0IFVTdHJpbmcmIHZhbHVlID0gYXNTdHJpbmcobV9jb2RlQmxvY2stPmNvbnN0YW50UmVn
aXN0ZXIoc3JjMi0+aW5kZXgoKSkuZ2V0KCkpLT50cnlHZXRWYWx1ZSgpOworICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiB2YWx1ZSA9IGFzU3RyaW5nKG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lz
dGVyKHNyYzItPmluZGV4KCkpLmdldCgpKS0+dHJ5R2V0VmFsdWUoKTsKICAgICAgICAgICAgIGlm
ICh2YWx1ZSA9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3Ao
KTsKICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2lzX3VuZGVmaW5lZCk7CkBAIC0yNDQ2
LDcgKzI0NDYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6cG9wVHJ5QW5kRW1p
dENhdGNoKFRyeURhdGEqIHRyeURhdGEsIFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIHRhcmdldFJl
Z2lzdGVyOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VF
cnJvcihjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGVtaXRP
cGNvZGUob3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnRWYWx1ZShqc1N0cmluZyhnbG9iYWxEYXRhKCksIG1lc3NhZ2UpKS0+aW5k
ZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYmMwZjZkYjI4NGI1NTc5MTUzYzhjY2U5ODk4Y2Y0ODE4
ZDllY2U4OC4uNzlhM2YzNjgyN2M1YTYwYWY3NjhmYWFmN2NjYWRhYTA0NzM0MzNkOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtNTIwLDcgKzUyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
ZW1pdFVuYXJ5Tm9Ec3RPcChvcF90aHJvdywgZXhjKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CisgICAg
ICAgIHZvaWQgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
IAogICAgICAgICB2b2lkIGVtaXRQdXNoTmV3U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMGQ2
MzgwODNhNjNiZmE0ODcxYTE5ZWMxNDNlMWU5NmI1MjQ5ZDJjNC4uYWMzNzU0NTE3NzI2MDk1ZmNm
MDRmMmQ0YWQ1NjQwNjMyN2EyZDI3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1
ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2FtcGxpbmdUb29sLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNzcsNyArNzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVy
SUQqIFRocm93YWJsZUV4cHJlc3Npb25EYXRhOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorUmVnaXN0
ZXJJRCogVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFRocm93UmVmZXJlbmNlRXJyb3IobWVzc2Fn
ZSk7CkBAIC0xODA4LDcgKzE4MDcsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ2xhdXNlTGlzdChD
bGF1c2VMaXN0Tm9kZSogbGlzdCwgVmVjdG9yPEV4cHJlc3Npb25Ob2RlKiwgOD4mCiAgICAgICAg
ICAgICAgICAgdHlwZUZvclRhYmxlID0gU3dpdGNoTmVpdGhlcjsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlID0g
c3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KGNsYXVzZUV4cHJlc3Npb24pLT52YWx1ZSgpLnVzdHJp
bmcoKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBzdGF0aWNfY2FzdDxTdHJp
bmdOb2RlKj4oY2xhdXNlRXhwcmVzc2lvbiktPnZhbHVlKCkudXN0cmluZygpOwogICAgICAgICAg
ICAgaWYgKHNpbmdsZUNoYXJhY3RlclN3aXRjaCAmPSB2YWx1ZS5sZW5ndGgoKSA9PSAxKSB7CiAg
ICAgICAgICAgICAgICAgaW50MzJfdCBpbnRWYWwgPSB2YWx1ZVswXTsKICAgICAgICAgICAgICAg
ICBpZiAoaW50VmFsIDwgbWluX251bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCmluZGV4IDBhNjZkNmYzNGU2ZjRiYzljYzZkMDQ3YmY5ODZkZmI0MWI3MGVi
ZDAuLmVkNTZhNTNjZDY4NTFkOTE1NzhlZDYzZWFiMTJmNTljZDZhMWY1ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBp
bmxpbmUgUmVjb21waWxlcjo6flJlY29tcGlsZXIoKQogICAgIC8vIEphdmFTY3JpcHQgaW4gdGhl
IGluc3BlY3Rvci4KICAgICBTb3VyY2VQcm92aWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9zb3VyY2VQcm92aWRlcnMuZW5kKCk7CiAgICAgZm9yIChTb3VyY2VQcm92aWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IG1fc291cmNlUHJvdmlkZXJzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCi0gICAgICAgIG1fZGVidWdnZXItPnNvdXJjZVBhcnNlZChpdGVyLT5zZWNvbmQs
IGl0ZXItPmZpcnN0LCAtMSwgVVN0cmluZygpKTsKKyAgICAgICAgbV9kZWJ1Z2dlci0+c291cmNl
UGFyc2VkKGl0ZXItPnNlY29uZCwgaXRlci0+Zmlyc3QsIC0xLCBTdHJpbmcoKSk7CiB9CiAKIGlu
bGluZSB2b2lkIFJlY29tcGlsZXI6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQpAQCAtMTIxLDcg
KzEyMSw3IEBAIHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKICAgICBnbG9iYWxEYXRhLT5oZWFwLm9iamVjdFNwYWNlKCkuZm9y
RWFjaENlbGwocmVjb21waWxlcik7CiB9CiAKLUpTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxG
cmFtZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbiwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShj
b25zdCBTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9uLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewogICAgIENhbGxGcmFtZSogZ2xvYmFsQ2FsbEZyYW1lID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5oCmluZGV4IGJjNzQzNjc3ZTIyNzQzNzZmOWRkMGQ4NWFhNWQ2ZDg3NTFiNTAxMDku
LjNjNGE0ZWQ3NjIxOWNjMjFmNGE5NjYzNGM0YjI2MTcxOWRlOGVjNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC0zMiw3ICszMiw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7CiAg
ICAgY2xhc3MgU291cmNlUHJvdmlkZXI7Ci0gICAgY2xhc3MgVVN0cmluZzsKIAogICAgIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyIHsKICAgICBwdWJsaWM6CkBAIC00MSw3ICs0MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGF0dGFjaChKU0dsb2JhbE9iamVjdCop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBTb3VyY2VQcm92aWRlcios
IGludCBlcnJvckxpbmVOdW1iZXIsIGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3Zp
ZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgV1RGOjpTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQsIGJvb2wpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGlu
dCwgaW50KSA9IDA7CkBAIC02MCw3ICs1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJp
bGl0eSB3aXRoIGV4aXN0aW5nIFdlYlNjcmlwdERlYnVnZ2VyIGNsaWVudHMuCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJp
bmcmLCBKU1ZhbHVlJiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uLCBKU0dsb2JhbE9iamVjdCopOwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCA0YzI1NTRmMWEyY2E0MjljMjI5NWJiZTBkMjk2MTRj
ZjAxOTNiODRjLi5lMjM0NjgwMzUxNDU0MWQxMGM1MzI4NjI4NDQzMGMyMDBiOTc0OTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0
aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24pOwogfQogCi1VU3RyaW5nIERlYnVnZ2Vy
QWN0aXZhdGlvbjo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCitTdHJpbmcgRGVi
dWdnZXJBY3RpdmF0aW9uOjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBjb25zdCBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgRGVi
dWdnZXJBY3RpdmF0aW9uKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3Rp
dmF0aW9uLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09iamVjdC0+bV9hY3RpdmF0aW9u
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckFjdGl2YXRpb24uaAppbmRleCAwN2QyMDE0MWY0OTljNzY4OTQ0MGJkMGUxODIzZjdlODllY2Rj
NGI4Li5jOTM0NDA3ZmMyMjkzYjYyMDg1YzQzMmE1MGU3MTMyMDRiNTRmZjhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotICAgICAgICBz
dGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKKyAgICAgICAgc3RhdGlj
IFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0
aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGE0OGU3ZDE1
NjEyY2NiN2MyOWQwZGVmOWQwM2U2N2QwYmU4MzFkNzQuLjNmOGM5Y2ExNWQ4MWVlZDc4ZjRiMDRk
OThkNWJmODkyOGQxYWVhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotY29uc3QgVVN0cmluZyogRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aW9uTmFt
ZSgpIGNvbnN0Citjb25zdCBTdHJpbmcqIERlYnVnZ2VyQ2FsbEZyYW1lOjpmdW5jdGlvbk5hbWUo
KSBjb25zdAogewogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpKQogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTUwLDE1ICs1MCwxNSBAQCBjb25zdCBVU3RyaW5nKiBEZWJ1Z2dlckNhbGxG
cmFtZTo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICByZXR1cm4gJmpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oZnVuY3Rpb24pLT5uYW1lKG1fY2FsbEZyYW1lKTsKIH0KICAgICAKLVVTdHJpbmcgRGVidWdn
ZXJDYWxsRnJhbWU6OmNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBjb25zdAorU3RyaW5nIERlYnVn
Z2VyQ2FsbEZyYW1lOjpjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkKLSAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0gbV9jYWxs
RnJhbWUtPmNhbGxlZSgpOwogCiAgICAgaWYgKCFmdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIFVT
dHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJuIGdldENhbGN1
bGF0ZWREaXNwbGF5TmFtZShtX2NhbGxGcmFtZSwgZnVuY3Rpb24pOwogfQpAQCAtODQsNyArODQs
NyBAQCBKU09iamVjdCogRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNPYmplY3QoKSBjb25zdAogICAg
IHJldHVybiBhc09iamVjdCh0aGlzVmFsdWUpOwogfQogCi1KU1ZhbHVlIERlYnVnZ2VyQ2FsbEZy
YW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbikg
Y29uc3QKK0pTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbGxGcmFt
ZS0+Y29kZUJsb2NrKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCmluZGV4IGRjYTc0
ODdjMDdiNDA4Y2FlZTljZWM4Y2JkN2I4YTA2MGZmNTJjNzIuLmM0NTc3NzVjZmNjNzFhOGU3M2Nj
OTEwOTljNDMxOGI0NTk0Nzg5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC01MSwxMSArNTEsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsRnJhbWU7IH0KICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOyB9CiAg
ICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
RnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBV
U3RyaW5nKiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
VVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGNvbnN0IFN0cmluZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBl
eGNlcHRpb24pIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1
YXRlKGNvbnN0IFN0cmluZyYsIEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CiAgICAgICAgIEpT
VmFsdWUgZXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9leGNlcHRpb247IH0KIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCmluZGV4IDYyZjI2N2UxMmMyZmU0
YTMwM2Q4ZDk0ODRmNjAyM2I2MThiMGVlODkuLjNiNjJlMjA1NDQ4MmM1YmEzMDViYTc5ODg2YjEx
ZWY4MjRjMWRhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCkBAIC0xMDIsNyAr
MTAyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXI8
QmFzZSwgVW5rbm93bj4gewogICAgIEhhbmRsZTxKU09iamVjdD4gYXNPYmplY3QoKSBjb25zdDsK
ICAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4ganNWYWx1ZSgpLmlzT2JqZWN0KCk7
IH0KICAgICBib29sIGdldE51bWJlcihkb3VibGUgbnVtYmVyKSBjb25zdCB7IHJldHVybiBqc1Zh
bHVlKCkuZ2V0TnVtYmVyKG51bWJlcik7IH0KLSAgICBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGpzVmFsdWUoKS5p
c1VuZGVmaW5lZE9yTnVsbCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKaW5kZXggNmYxM2FmYjcyNWE5OTk5ZTczZWNmMDM4NDc0MzZlNWMzYTMzZjIxNC4uZTM0OTNh
YzY0Njg3Mjg2MjliODQzYjNmZDZmYjgzZjk1NGYyYTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaApAQCAtNTksMTEgKzU5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAg
ICBjbGFzcyBSZWdpc3RlckZpbGU7Ci0gICAgY2xhc3MgVVN0cmluZzsKICAgICBjbGFzcyBXZWFr
R0NIYW5kbGVQb29sOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogCi0gICAgdHlwZWRlZiBzdGQ6
OnBhaXI8SlNWYWx1ZSwgVVN0cmluZz4gVmFsdWVTdHJpbmdQYWlyOworICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPEpTVmFsdWUsIFdURjo6U3RyaW5nPiBWYWx1ZVN0cmluZ1BhaXI7CiAgICAgdHlwZWRl
ZiBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiBQcm90ZWN0Q291bnRTZXQ7CiAgICAgdHlwZWRlZiBI
YXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj4gVHlwZUNvdW50U2V0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCBiMzEzNjY0M2I0ZWRiNzhmMWFmMTE1M2M3
OTVlYzIzMTAxNGM5NThlLi42ZWY5ZjllMDQ5ZTAyNDk1N2I4ZGVjYTk3N2NjZWY2MDE2MWIzMzM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxp
bmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5o
IgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAKaW5kZXggY2ZiZmIzZTNhZDAzOGY3ODU0OGFjMGZmYTJhMWM5
NzJmYWE1NzBjMy4uZjgyMTJlYWZlNmE4MDAyNjM5NGExMzgxOTkzMWQ0YTJjMTMwZDhlOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAgdm9pZCBDYWxsRnJhbWU6OmR1bXBDYWxsZXIoKQogewogICAgIGludCBz
aWduZWRMaW5lTnVtYmVyOwogICAgIGludHB0cl90IHNvdXJjZUlEOwotICAgIFVTdHJpbmcgdXJs
U3RyaW5nOworICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKICAg
ICAKICAgICBpbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIodGhpcywgc2lnbmVkTGlu
ZU51bWJlciwgc291cmNlSUQsIHVybFN0cmluZywgZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggN2E5ZmM5NGUz
ZTdkMmExNGY5YTM1Y2E0ODhiZDc2Njk4MDk3N2Q3MC4uZmM1YWY1NGM2MDFhYWFkM2U5YTczNzM4
YzBjMmI4MmJlOTQ2ZjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MSw3ICs2MSw2IEBACiAjaW5jbHVkZSAiU2FtcGxp
bmdUb29sLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJT
dHJvbmdJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVk
ZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CkBAIC0xNTAsNyArMTQ5LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgICAgICByZXR1cm4gcHJvZ3JhbTsKICAgICAKICAgICBUb3BDYWxsRnJhbWVTZXR0ZXIg
dG9wQ2FsbEZyYW1lKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUpOwotICAgIFVT
dHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxsRnJhbWUp
OworICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gYXNTdHJpbmcocHJvZ3JhbSktPnZhbHVlKGNh
bGxGcmFtZSk7CiAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CiAgICAgCkBAIC0zNjEsNyArMzYwLDcgQEAgdm9pZCBJbnRlcnByZXRl
cjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB3aGlsZSAoaXQgPCBl
bmQpIHsKICAgICAgICAgSlNWYWx1ZSB2ID0gaXQtPmpzVmFsdWUoKTsKICAgICAgICAgaW50IHJl
Z2lzdGVyTnVtYmVyID0gaXQgLSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwotICAgICAgICBVU3Ry
aW5nIG5hbWUgPSBjb2RlQmxvY2stPm5hbWVGb3JSZWdpc3RlcihyZWdpc3Rlck51bWJlcik7Cisg
ICAgICAgIFN0cmluZyBuYW1lID0gY29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJO
dW1iZXIpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGRhdGFMb2coIltyJSAzZCAl
MTRzXSAgICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIHJlZ2lzdGVyTnVtYmVyLCBuYW1l
LmFzY2lpKCkuZGF0YSgpLCBpdCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikp
OwogI2Vsc2UKQEAgLTQwMCw3ICszOTksNyBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0
ZXJzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICBkbyB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHYgPSBpdC0+anNWYWx1ZSgpOwogICAgICAgICAgICAgaW50IHJlZ2lzdGVyTnVtYmVyID0g
aXQgLSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwotICAgICAgICAgICAgVVN0cmluZyBuYW1lID0g
Y29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJOdW1iZXIpOworICAgICAgICAgICAg
U3RyaW5nIG5hbWUgPSBjb2RlQmxvY2stPm5hbWVGb3JSZWdpc3RlcihyZWdpc3Rlck51bWJlcik7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgICAgIGRhdGFMb2coIltyJSAzZCAlMTRz
XSAgICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIHJlZ2lzdGVyTnVtYmVyLCBuYW1lLmFz
Y2lpKCkuZGF0YSgpLCBpdCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOwog
I2Vsc2UKQEAgLTUzMSwxMCArNTMwLDEwIEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJy
b3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICBp
ZiAoIWpzTWVzc2FnZSB8fCAhanNNZXNzYWdlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFVTdHJpbmcgbWVzc2FnZSA9IGFzU3RyaW5nKGpzTWVzc2FnZSktPnZhbHVlKGNhbGxG
cmFtZSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBhc1N0cmluZyhqc01lc3NhZ2UpLT52YWx1ZShj
YWxsRnJhbWUpOwogCiAgICAgaWYgKGV4cHJlc3Npb25TdGFydCA8IGV4cHJlc3Npb25TdG9wKQot
ICAgICAgICBtZXNzYWdlID0gIG1ha2VVU3RyaW5nKG1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIs
IGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lv
blN0b3ApLCAiJykiKTsKKyAgICAgICAgbWVzc2FnZSA9ICBtYWtlU3RyaW5nKG1lc3NhZ2UsICIg
KGV2YWx1YXRpbmcgJyIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKGV4cHJlc3Npb25T
dGFydCwgZXhwcmVzc2lvblN0b3ApLCAiJykiKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gTm8g
cmFuZ2UgaW5mb3JtYXRpb24sIHNvIGdpdmUgYSBmZXcgY2hhcmFjdGVycyBvZiBjb250ZXh0CiAg
ICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGRhdGEgPSBjb2RlQmxvY2stPnNvdXJjZSgpLT5kYXRh
KCk7CkBAIC01NTEsNyArNTUwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogICAgICAgICAg
ICAgc3RvcCsrOwogICAgICAgICB3aGlsZSAoc3RvcCA+IGV4cHJlc3Npb25TdGFydCAmJiBpc1N0
cldoaXRlU3BhY2UoKCpkYXRhKVtzdG9wIC0gMV0pKQogICAgICAgICAgICAgc3RvcC0tOwotICAg
ICAgICBtZXNzYWdlID0gbWFrZVVTdHJpbmcobWVzc2FnZSwgIiAobmVhciAnLi4uIiwgY29kZUJs
b2NrLT5zb3VyY2UoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0b3ApLCAiLi4uJykiKTsKKyAgICAgICAg
bWVzc2FnZSA9IG1ha2VTdHJpbmcobWVzc2FnZSwgIiAobmVhciAnLi4uIiwgY29kZUJsb2NrLT5z
b3VyY2UoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0b3ApLCAiLi4uJykiKTsKICAgICB9CiAKICAgICBl
eGNlcHRpb24tPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2FnZSkpOwpAQCAtNjY0LDcgKzY2
Myw3IEBAIHN0YXRpYyBDYWxsRnJhbWUqIGdldENhbGxlckluZm8oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICByZXR1cm4gY2FsbGVyRnJhbWU7CiB9
CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGNvbnN0IFVTdHJpbmcgZ2V0U291cmNlVVJMRnJvbUNh
bGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgCitzdGF0aWMgQUxXQVlTX0lOTElORSBjb25z
dCBTdHJpbmcgZ2V0U291cmNlVVJMRnJvbUNhbGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFzSG9zdENhbGxGcmFtZUZsYWcoKSk7CiAjaWYg
RU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCkBAIC03MDUsMTMgKzcwNCwxMyBAQCB2b2lkIElu
dGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgVmVjdG9y
PFN0YWNrRnJhbWU+JiByZQogICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+dHJ1ZUNhbGxGcmFt
ZUZyb21WTUNvZGUoKTsKIAogICAgIHdoaWxlIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lICE9IENh
bGxGcmFtZTo6bm9DYWxsZXIoKSkgewotICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTDsKKyAgICAg
ICAgU3RyaW5nIHNvdXJjZVVSTDsKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkp
IHsKICAgICAgICAgICAgIHNvdXJjZVVSTCA9IGdldFNvdXJjZVVSTEZyb21DYWxsRnJhbWUoY2Fs
bEZyYW1lKTsKICAgICAgICAgICAgIFN0YWNrRnJhbWUgcyA9IHsgU3Ryb25nPEpTT2JqZWN0Pigq
Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLT5jYWxsZWUoKSksIGdldFN0YWNrRnJhbWVDb2RlVHlwZShj
YWxsRnJhbWUpLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+KCpnbG9iYWxEYXRhLCBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSksIGxpbmUsIHNvdXJjZVVSTH07CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IFN0YWNrRnJhbWUgcyA9IHsgU3Ryb25nPEpTT2JqZWN0PigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1l
LT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+
KCksIC0xLCBVU3RyaW5nKCl9OworICAgICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8
SlNPYmplY3Q+KCpnbG9iYWxEYXRhLCBjYWxsRnJhbWUtPmNhbGxlZSgpKSwgU3RhY2tGcmFtZU5h
dGl2ZUNvZGUsIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4oKSwgLTEsIFN0cmluZygpfTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOwogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVkIHVu
dXNlZEJ5dGVjb2RlT2Zmc2V0ID0gMDsKQEAgLTc0NCw3ICs3NDMsNyBAQCB2b2lkIEludGVycHJl
dGVyOjphZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2Jq
ZWN0KiBlcnJvcgogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogICAg
IAotICAgIGVycm9yLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPnN0YWNrLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBVU3RyaW5nKGJ1aWxkZXIudG9TdHJp
bmcoKS5pbXBsKCkpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBlcnJvci0+cHV0RGly
ZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5zdGFjaywganNTdHJp
bmcoZ2xvYmFsRGF0YSwgYnVpbGRlci50b1N0cmluZygpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRl
KTsKIH0KIAogTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dGhyb3dFeGNl
cHRpb24oQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC04NDcsNyArODQ2LDcgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFMKICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUo
KnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7
CiAgICAgVmVjdG9yPEpTT05QRGF0YT4gSlNPTlBEYXRhOwogICAgIGJvb2wgcGFyc2VSZXN1bHQ7
Ci0gICAgY29uc3QgVVN0cmluZyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbS0+c291cmNlKCkudG9T
dHJpbmcoKTsKKyAgICBjb25zdCBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJj
ZSgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHByb2dyYW1Tb3VyY2UuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7
CkBAIC00OTU1LDcgKzQ5NTQsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICBv
cmlnaW5hbCBjb25zdHJ1Y3RvciwgdXNpbmcgY29uc3RhbnQgbWVzc2FnZSBhcyB0aGUKICAgICAg
ICAgICAgbWVzc2FnZSBzdHJpbmcuIFRoZSByZXN1bHQgaXMgdGhyb3duLgogICAgICAgICAqLwot
ICAgICAgICBVU3RyaW5nIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPnIodlBDWzFdLnUub3BlcmFuZCku
anNWYWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZhbHVlKGNhbGxGcmFtZSk7CisgICAgICAg
IFN0cmluZyBtZXNzYWdlID0gY2FsbEZyYW1lLT5yKHZQQ1sxXS51Lm9wZXJhbmQpLmpzVmFsdWUo
KS50b1N0cmluZyhjYWxsRnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgICAgICBleGNlcHRp
b25WYWx1ZSA9IEpTVmFsdWUoY3JlYXRlUmVmZXJlbmNlRXJyb3IoY2FsbEZyYW1lLCBtZXNzYWdl
KSk7CiAgICAgICAgIGdvdG8gdm1fdGhyb3c7CiAgICAgfQpAQCAtNTEzOSwxMSArNTEzOCwxMSBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpyZXRyaWV2ZUNhbGxlckZyb21WTUNvZGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qCiAgICAgcmV0dXJuIGNhbGxlcjsKIH0KIAotdm9pZCBJ
bnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQm
IGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1Zh
bHVlJiBmdW5jdGlvbikgY29uc3QKK3ZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxl
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291cmNl
SUQsIFN0cmluZyYgc291cmNlVVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBm
dW5jdGlvbiA9IEpTVmFsdWUoKTsKICAgICBsaW5lTnVtYmVyID0gLTE7Ci0gICAgc291cmNlVVJM
ID0gVVN0cmluZygpOworICAgIHNvdXJjZVVSTCA9IFN0cmluZygpOwogCiAgICAgQ2FsbEZyYW1l
KiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBpZiAoY2FsbGVy
RnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDgzNGY3ZGU5NTVlMjQ3NDU0OGNiN2Jm
NTk4MDMyZTNiYTU1NzA0Y2EuLmFhMGQ0MDMwNTFmNTZjOGM1MDgyYWJkNmUwN2YxYWIyNDFhM2Zm
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCkBAIC03OSw4ICs3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGFja0ZyYW1l
Q29kZVR5cGUgY29kZVR5cGU7CiAgICAgICAgIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4gZXhlY3V0
YWJsZTsKICAgICAgICAgaW50IGxpbmU7Ci0gICAgICAgIFVTdHJpbmcgc291cmNlVVJMOwotICAg
ICAgICBVU3RyaW5nIHRvU3RyaW5nKENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAorICAgICAg
ICBTdHJpbmcgc291cmNlVVJMOworICAgICAgICBTdHJpbmcgdG9TdHJpbmcoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgdHJh
Y2VCdWlsZDsKICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBmcmllbmRseUZ1bmN0
aW9uTmFtZShjYWxsRnJhbWUpOwpAQCAtMjMzLDcgKzIzMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVudHNGcm9tVk1Db2RlKENhbGxGcmFtZSos
IEpTRnVuY3Rpb24qKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlckZyb21W
TUNvZGUoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1i
ZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1ZhbHVlJiBmdW5j
dGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmV0cmlldmVMYXN0
Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51bWJlciwgaW50cHRyX3QmIHNvdXJjZUlELCBT
dHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OwogICAgICAgICAKICAg
ICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRy
ZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7
CiAgICAgICAgIApAQCAtMjQxLDcgKzI0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpT
VmFsdWUmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2
b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUsIGludCBjb2x1bW4pOwotICAgICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFj
ZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tGcmFtZUNvZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwg
U3RhY2tGcmFtZUNvZGVUeXBlLCBjb25zdCBTdHJpbmcmLCBpbnQpOwogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSosIFZlY3Rv
cjxTdGFja0ZyYW1lPiYgcmVzdWx0cyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZFN0YWNrVHJh
Y2VJZk5lY2Vzc2FyeShDYWxsRnJhbWUqLCBKU09iamVjdCogZXJyb3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGQ1MWE3NDAwMjA5ODgzZWQyYzY3OTg0MzU2
NmI4YjQ4MjAzMTNmMmMuLjdjMDM1NjJmOTY1NjYzYzY0YTE5MWE5YjMzYTYzMjE0Y2I2Yzk4ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zNDEwLDcgKzM0MTAs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF90aHJvd19yZWZlcmVuY2VfZXJyb3Ip
CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBVU3RyaW5nIG1lc3NhZ2Ug
PSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZhbHVl
KGNhbGxGcmFtZSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgc3RhY2tG
cmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24gPSBjcmVhdGVSZWZlcmVuY2VFcnJvcihjYWxsRnJh
bWUsIG1lc3NhZ2UpOwogICAgIFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKaW5kZXggMTdhYjUxNTg4M2MyYWQ1ZGE5ZmJkMmZmZDg4ZWUwZmMyY2Y2OWMz
YS4uZjNkOWIyZTEwNTY5YTg0MDNiMDIwNTBmMTRhNzNkYzhjMjBmNmIwYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCi1zdGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFVTdHJpbmcmIGZpbGVOYW1lLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcik7CitzdGF0aWMg
Ym9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IFZlY3RvcjxjaGFyPiYgYnVmZmVyKTsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CkBAIC0xMjksNyArMTI5LDcg
QEAgcHVibGljOgogICAgIGJvb2wgbV9kdW1wOwogICAgIGJvb2wgbV9leGl0Q29kZTsKICAgICBW
ZWN0b3I8U2NyaXB0PiBtX3NjcmlwdHM7Ci0gICAgVmVjdG9yPFVTdHJpbmc+IG1fYXJndW1lbnRz
OworICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwogCiAgICAgdm9pZCBwYXJzZUFyZ3Vt
ZW50cyhpbnQsIGNoYXIqKik7CiB9OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBKU0dsb2JhbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEdsb2Jh
bE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQorICAgIHN0YXRpYyBHbG9i
YWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAg
R2xvYmFsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxP
YmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGFyZ3VtZW50
cyk7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNHbG9iYWxPYmplY3QqKSB7IHJldHVybiB0cnVl
OyB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9i
YWxEYXRhKTsKICAgICAgICAgCkBAIC0yNTIsNyArMjUyLDcgQEAgR2xvYmFsT2JqZWN0OjpHbG9i
YWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKIH0KIAotc3RhdGljIGlubGluZSBTb3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBjaGFyKiB1
dGY4LCBjb25zdCBVU3RyaW5nJiBmaWxlbmFtZSkKK3N0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBq
c2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKICAg
ICAvLyBGaW5kIHRoZSB0aGUgZmlyc3Qgbm9uLWFzY2lpIGNoYXJhY3Rlciwgb3IgbnVsLgogICAg
IGNvbnN0IGNoYXIqIHBvcyA9IHV0Zjg7CkBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIGlubGlu
ZSBTb3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBjaGFyKiB1dGY4LCBjb25zdCBVU3RyaW5nJiBm
aWxlbmFtZSkKIAogICAgIC8vIEZhc3QgY2FzZSAtIHN0cmluZyBpcyBhbGwgYXNjaWkuCiAgICAg
aWYgKCEqcG9zKQotICAgICAgICByZXR1cm4gbWFrZVNvdXJjZShVU3RyaW5nKHV0ZjgsIGFzY2lp
TGVuZ3RoKSwgZmlsZW5hbWUpOworICAgICAgICByZXR1cm4gbWFrZVNvdXJjZShTdHJpbmcodXRm
OCwgYXNjaWlMZW5ndGgpLCBmaWxlbmFtZSk7CiAKICAgICAvLyBTbG93IGNhc2UgLSBjb250YWlu
cyBub24tYXNjaWkgY2hhcmFjdGVycywgdXNlIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrLgog
ICAgIEFTU0VSVCgqcG9zIDwgMCk7CkBAIC0zNDcsMTIgKzM0NywxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihFeGVjU3RhdGUqKQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBV
U3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICgh
ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSk7CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgR2xvYmFsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSksIFZlY3Rv
cjxVU3RyaW5nPigpKTsKKyAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9i
amVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwog
CiAgICAgSlNWYWx1ZSBleGNlcHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsKQEAgLTM3
MCw3ICszNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4
ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxv
YWQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFZl
Y3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxl
KGZpbGVOYW1lLCBzY3JpcHQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKTsK
QEAgLTM4Niw3ICszODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
TG9hZChFeGVjU3RhdGUqIGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgVVN0cmluZyBmaWxlTmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRo
Q29udGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9w
ZW4gZmlsZS4iKSkpOwpAQCAtNTIzLDcgKzUyMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQogewogICAg
IGNvbnN0IGNoYXIqIHNjcmlwdDsKLSAgICBVU3RyaW5nIGZpbGVOYW1lOworICAgIFN0cmluZyBm
aWxlTmFtZTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0QnVmZmVyOwogCiAgICAgaWYgKGR1bXAp
CkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKIAogc3RhdGljIHZv
aWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgVVN0
cmluZyBpbnRlcnByZXRlck5hbWUoIkludGVycHJldGVyIik7CisgICAgU3RyaW5nIGludGVycHJl
dGVyTmFtZSgiSW50ZXJwcmV0ZXIiKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CiAjaWYgSEFWRShS
RUFETElORSkgJiYgIVJVTk5JTkdfRlJPTV9YQ09ERQpAQCAtNzUwLDcgKzc1MCw3IEBAIGludCBq
c2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1z
dGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFVTdHJpbmcmIGZp
bGVOYW1lLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKK3N0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNoYXI+JiBidWZm
ZXIpCiB7CiAgICAgRklMRSogZiA9IGZvcGVuKGZpbGVOYW1lLnV0ZjgoKS5kYXRhKCksICJyIik7
CiAgICAgaWYgKCFmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4
IDJhOGE4ZGM5ZTM2M2FkM2EyMjcxNTk2ZTc1ZTE5ZjVkY2MyYjMxMzEuLjA2MzE2OGJlMTNjMTZj
NGJmZGUwM2ZjNDliYTkwMDAwM2Y1ODBkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgTGV4ZXI8VD46On5MZXhlcigpCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotVVN0cmluZyBMZXhlcjxUPjo6aW52YWxpZENoYXJhY3Rlck1l
c3NhZ2UoKSBjb25zdAorU3RyaW5nIExleGVyPFQ+OjppbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgp
IGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2N1cnJlbnQpIHsKICAgICBjYXNlIDA6CkBAIC00MTgs
NyArNDE4LDcgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV9hdExp
bmVTdGFydCA9IHRydWU7CiAgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwotICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gVVN0cmluZygpOworICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nKCk7CiAg
ICAgCiAgICAgbV9idWZmZXI4LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbFJlYWRCdWZm
ZXJDYXBhY2l0eSk7CiAgICAgbV9idWZmZXIxNi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KChtX2Nv
ZGVFbmQgLSBtX2NvZGUpIC8gMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5k
ZXggMWFjODMyYTJjN2I1ZjM4MmIzM2I3OGE1YzgzMDRiMTc1NTQwZjQ3Mi4uZDc1ZjIwMjBkN2Mw
NWVkZGQzNjJiZmFmYzI2Y2E5ODdhYjYxNGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuaApAQCAtMTAwLDEyICsxMDAsMTIgQEAgcHVibGljOgogCiAgICAgLy8gRnVuY3Rpb25z
IGZvciB1c2UgYWZ0ZXIgcGFyc2luZy4KICAgICBib29sIHNhd0Vycm9yKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvcjsgfQotICAgIFVTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9sZXhFcnJvck1lc3NhZ2U7IH0KKyAgICBTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7IH0KICAgICB2b2lkIGNsZWFyKCk7CiAgICAg
dm9pZCBzZXRPZmZzZXQoaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIG1fZXJyb3IgPSAwOwot
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFVTdHJpbmcoKTsKKyAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSBTdHJpbmcoKTsKICAgICAgICAgbV9jb2RlID0gbV9jb2RlU3RhcnQgKyBvZmZz
ZXQ7CiAgICAgICAgIG1fYnVmZmVyOC5yZXNpemUoMCk7CiAgICAgICAgIG1fYnVmZmVyMTYucmVz
aXplKDApOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgaW50IHBhcnNlRm91ckRp
Z2l0VW5pY29kZUhleCgpOwogICAgIHZvaWQgc2hpZnRMaW5lVGVybWluYXRvcigpOwogCi0gICAg
VVN0cmluZyBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0OworICAgIFN0cmluZyBpbnZh
bGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0OwogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVCog
Y3VycmVudENoYXJhY3RlcigpIGNvbnN0OwogICAgIEFMV0FZU19JTkxJTkUgaW50IGN1cnJlbnRP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2NvZGUgLSBtX2NvZGVTdGFydDsgfQogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRPZmZzZXRGcm9tQ2hhck9mZnNldChjb25zdCBUKiBjaGFyT2Zmc2V0
KSB7IHNldE9mZnNldChjaGFyT2Zmc2V0IC0gbV9jb2RlU3RhcnQpOyB9CkBAIC0xODEsNyArMTgx
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNSZXBhcnNpbmc7CiAgICAgYm9vbCBtX2F0TGlu
ZVN0YXJ0OwogICAgIGJvb2wgbV9lcnJvcjsKLSAgICBVU3RyaW5nIG1fbGV4RXJyb3JNZXNzYWdl
OworICAgIFN0cmluZyBtX2xleEVycm9yTWVzc2FnZTsKIAogICAgIFQgbV9jdXJyZW50OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZWQxYTg1YWFmYmM4OWNlMThmNDUx
MjAwOTg0ZGNiYTEyZWQ3OWFmOS4uZGM2OTRjYzhiYzFlNmIyNzhiZWM3YTFlZWJlYTJhMDRmMjYy
YWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMjc5LDcgKzI3OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1aW50MTZfdCBlbmRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2VuZE9mZnNldDsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRvciYsIGNvbnN0IFVT
dHJpbmcmIG1lc3NhZ2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGhyb3dSZWZlcmVuY2VF
cnJvcihCeXRlY29kZUdlbmVyYXRvciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB1aW50MzJfdCBtX2Rpdm90OwpAQCAtMTM4OSw3ICsxMzg5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQotICAgICAgICBjb25zdCBVU3RyaW5n
JiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsg
fQorICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9CiAgICAgICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJRCgpOyB9CiAKICAgICAgICAgdm9pZCBzZXRG
ZWF0dXJlcyhDb2RlRmVhdHVyZXMgZmVhdHVyZXMpIHsgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNGZkNjcxZmI3MzVm
MWRkMjE1MTExMjkzMzAzMjE4NGYzOGJjNzQwNS4uZmRkYTczYzYxYWM1YjZiZGMxZWM3Y2RlNmVi
NGFhNzQ1ZDMzMzcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtODEsOSArODEsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1VU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKCkKK1N0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiB7Ci0gICAg
VVN0cmluZyBwYXJzZUVycm9yID0gVVN0cmluZygpOworICAgIFN0cmluZyBwYXJzZUVycm9yID0g
U3RyaW5nKCk7CiAgICAgCiAgICAgdW5zaWduZWQgb2xkRnVuY3Rpb25DYWNoZVNpemUgPSBtX2Z1
bmN0aW9uQ2FjaGUgPyBtX2Z1bmN0aW9uQ2FjaGUtPmJ5dGVTaXplKCkgOiAwOwogICAgIEFTVEJ1
aWxkZXIgY29udGV4dChjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIGNv
bnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAppbmRleCA3OWE5NWI2OTYzYjQxMjkwYmNhM2I0ZmE5Yzg1ODBmY2I2MjM1NTc2
Li4yODMxN2Q1NGVlMmQ5NTliY2FkMzFkOTNiNzE1MDFkZTU4NWI1YmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTU2LDcgKzU2LDYgQEAgY2xhc3MgSWRlbnRpZmll
cjsKIGNsYXNzIEpTR2xvYmFsRGF0YTsKIGNsYXNzIFByb2dyYW1Ob2RlOwogY2xhc3MgU291cmNl
Q29kZTsKLWNsYXNzIFVTdHJpbmc7CiAKICNkZWZpbmUgZmFpbCgpIGRvIHsgaWYgKCFtX2Vycm9y
KSB1cGRhdGVFcnJvck1lc3NhZ2UoKTsgcmV0dXJuIDA7IH0gd2hpbGUgKDApCiAjZGVmaW5lIGZh
aWxXaXRoVG9rZW4odG9rKSBkbyB7IGlmICghbV9lcnJvcikgdXBkYXRlRXJyb3JNZXNzYWdlKHRv
ayk7IHJldHVybiAwOyB9IHdoaWxlICgwKQpAQCAtNDg5LDcgKzQ4OCw3IEBAIHByaXZhdGU6CiAg
ICAgfQogCiAgICAgUGFyc2VyKCk7Ci0gICAgVVN0cmluZyBwYXJzZUlubmVyKCk7CisgICAgU3Ry
aW5nIHBhcnNlSW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVt
ZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNr
czo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsCkBAIC01MjksOSArNTI4LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lO
TElORSBVU3RyaW5nIGdldFRva2VuKCkgeworICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGdldFRv
a2VuKCkgewogICAgICAgICBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIgPSBtX3NvdXJj
ZS0+cHJvdmlkZXIoKTsKLSAgICAgICAgcmV0dXJuIFVTdHJpbmcoc291cmNlUHJvdmlkZXItPmdl
dFJhbmdlKHRva2VuU3RhcnQoKSwgdG9rZW5FbmQoKSkuaW1wbCgpKTsKKyAgICAgICAgcmV0dXJu
IHNvdXJjZVByb3ZpZGVyLT5nZXRSYW5nZSh0b2tlblN0YXJ0KCksIHRva2VuRW5kKCkpOwogICAg
IH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2goSlNUb2tlblR5cGUgZXhwZWN0
ZWQpCkBAIC03OTMsNyArNzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFuYW1lKSAKICAg
ICAgICAgICAgIHVwZGF0ZUVycm9yTWVzc2FnZVNwZWNpYWxDYXNlKG1fdG9rZW4ubV90eXBlKTsK
ICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gVVN0cmluZyhTdHJp
bmc6OmZvcm1hdCgiVW5leHBlY3RlZCB0b2tlbiAnJXMnIiwgbmFtZSkuaW1wbCgpKTsKKyAgICAg
ICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgdG9rZW4g
JyVzJyIsIG5hbWUpOwogICAgIH0KICAgICAKICAgICBORVZFUl9JTkxJTkUgdm9pZCB1cGRhdGVF
cnJvck1lc3NhZ2UoSlNUb2tlblR5cGUgZXhwZWN0ZWRUb2tlbikgCkBAIC04MDEsNyArODAwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgbV9lcnJvciA9IHRydWU7CiAgICAgICAgIGNvbnN0IGNoYXIq
IG5hbWUgPSBnZXRUb2tlbk5hbWUoZXhwZWN0ZWRUb2tlbik7CiAgICAgICAgIGlmIChuYW1lKQot
ICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBVU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJFeHBl
Y3RlZCB0b2tlbiAnJXMnIiwgbmFtZSkuaW1wbCgpKTsKKyAgICAgICAgICAgIG1fZXJyb3JNZXNz
YWdlID0gU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIHRva2VuICclcyciLCBuYW1lKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWdldFRva2VuTmFtZShtX3Rva2VuLm1fdHlwZSkp
CiAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JNZXNzYWdlU3BlY2lhbENhc2UobV90b2tlbi5t
X3R5cGUpOwpAQCAtODEwLDcgKzgwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0gCiAgICAgfQog
ICAgIAotICAgIE5FVkVSX0lOTElORSB2b2lkIHVwZGF0ZUVycm9yV2l0aE5hbWVBbmRNZXNzYWdl
KGNvbnN0IGNoYXIqIGJlZm9yZU1zZywgVVN0cmluZyBuYW1lLCBjb25zdCBjaGFyKiBhZnRlck1z
ZykgCisgICAgTkVWRVJfSU5MSU5FIHZvaWQgdXBkYXRlRXJyb3JXaXRoTmFtZUFuZE1lc3NhZ2Uo
Y29uc3QgY2hhciogYmVmb3JlTXNnLCBTdHJpbmcgbmFtZSwgY29uc3QgY2hhciogYWZ0ZXJNc2cp
CiAgICAgewogICAgICAgICBtX2Vycm9yID0gdHJ1ZTsKICAgICAgICAgU3RyaW5nIHByZWZpeChi
ZWZvcmVNc2cpOwpAQCAtODI1LDcgKzgyNCw3IEBAIHByaXZhdGU6CiAgICAgTkVWRVJfSU5MSU5F
IHZvaWQgdXBkYXRlRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIG1zZykgCiAgICAgeyAgIAogICAg
ICAgICBtX2Vycm9yID0gdHJ1ZTsKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBVU3RyaW5nKG1z
Zyk7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nKG1zZyk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgc3RhcnRMb29wKCkgeyBjdXJyZW50U2NvcGUoKS0+c3RhcnRMb29wKCk7IH0KQEAg
LTkzOCw3ICs5MzcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFN0YWNrQm91bmRzIG1fc3RhY2s7
CiAgICAgYm9vbCBtX2Vycm9yOwotICAgIFVTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CisgICAgU3Ry
aW5nIG1fZXJyb3JNZXNzYWdlOwogICAgIEpTVG9rZW4gbV90b2tlbjsKICAgICBib29sIG1fYWxs
b3dzSW47CiAgICAgaW50IG1fbGFzdExpbmU7CkBAIC05ODIsNyArOTgxLDcgQEAgUGFzc1JlZlB0
cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmoKICAgICBBU1NFUlQobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgQVNT
RVJUKGV4Y2VwdGlvbiAmJiAhKmV4Y2VwdGlvbik7CiAgICAgaW50IGVyckxpbmU7Ci0gICAgVVN0
cmluZyBlcnJNc2c7CisgICAgU3RyaW5nIGVyck1zZzsKIAogICAgIGlmIChQYXJzZWROb2RlOjpz
Y29wZUlzRnVuY3Rpb24pCiAgICAgICAgIG1fbGV4ZXItPnNldElzUmVwYXJzaW5nKCk7CkBAIC05
OTAsMTMgKzk4OSwxMyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgIG1fc291cmNlRWxl
bWVudHMgPSAwOwogCiAgICAgZXJyTGluZSA9IC0xOwotICAgIGVyck1zZyA9IFVTdHJpbmcoKTsK
KyAgICBlcnJNc2cgPSBTdHJpbmcoKTsKIAotICAgIFVTdHJpbmcgcGFyc2VFcnJvciA9IHBhcnNl
SW5uZXIoKTsKKyAgICBTdHJpbmcgcGFyc2VFcnJvciA9IHBhcnNlSW5uZXIoKTsKIAogICAgIGlu
dCBsaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3Ig
PSBtX2xleGVyLT5zYXdFcnJvcigpOwotICAgIFVTdHJpbmcgbGV4RXJyb3JNZXNzYWdlID0gbGV4
RXJyb3IgPyBtX2xleGVyLT5nZXRFcnJvck1lc3NhZ2UoKSA6IFVTdHJpbmcoKTsKKyAgICBTdHJp
bmcgbGV4RXJyb3JNZXNzYWdlID0gbGV4RXJyb3IgPyBtX2xleGVyLT5nZXRFcnJvck1lc3NhZ2Uo
KSA6IFN0cmluZygpOwogICAgIEFTU0VSVChsZXhFcnJvck1lc3NhZ2UuaXNOdWxsKCkgIT0gbGV4
RXJyb3IpOwogICAgIG1fbGV4ZXItPmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCAyZmZmZDI3ZDEzYWIyYmU2MmNkYjNmYTJlMGU1ZDk3
NmE5M2RjNTMxLi4yZjViNDQ3YjE2OWIwMzQ1YWU4ZWQ0ZWMwYjMwMjUyMDAwYzkxYjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xMTMsNyArMTEz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIm
IElkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgZG91YmxlIG51bWJlcikKICAgICB7Ci0gICAgICAgIG1faWRlbnRpZmllcnMuYXBw
ZW5kKElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgVVN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KG51bWJlcikpKTsKKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcihn
bG9iYWxEYXRhLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChudW1iZXIpKSk7CiAg
ICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKaW5kZXggMTFhMDAzMzdkYTg1M2NiMDliZGQ1
ZDYxZTVlZDIzOTIzNDVmNDQ4Zi4uYmRhOTFiM2M4YTZmM2I2MGYxZjIzZmM2OWZhYmYyYWUxMGMw
MzA0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKQEAgLTYw
LDEwICs2MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgVVN0cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAgICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9wcm92aWRlcikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gVVN0cmluZygpOworICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICAgICAgICAgIHJldHVybiBtX3Byb3ZpZGVyLT5nZXRSYW5nZShtX3N0YXJ0Q2hhciwg
bV9lbmRDaGFyKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTkwLDkgKzkwLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGludCBtX2ZpcnN0TGluZTsKICAgICB9OwogCi0gICAgaW5saW5l
IFNvdXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVTdHJp
bmcmIHVybCA9IFVTdHJpbmcoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0g
VGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKKyAgICBpbmxpbmUgU291cmNlQ29kZSBt
YWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9IFN0cmlu
ZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoVVN0cmlu
Z1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pLCBzdGFy
dFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKTsKKyAgICAgICAgcmV0dXJuIFNvdXJjZUNv
ZGUoU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlv
biksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpOwogICAgIH0KIAogICAgIGlu
bGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJy
YWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IDJlN2Y3MTc4NTQ2OTVmN2Y0
NGY5YjZjZTY4M2ViN2Q3NTJmNzI0YWYuLjdmMmU4ZDk5NWY1YjU3ZWZmM2M1MDkwMjg5MmZiNTUz
MzQxNDYzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3Zp
ZGVyLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNkZWZpbmUgU291cmNlUHJvdmlkZXJfaAogCiAjaW5j
bHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC00Miw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IG51bGxJRCA9IDE7
CiAgICAgICAgIAotICAgICAgICBTb3VyY2VQcm92aWRlcihjb25zdCBVU3RyaW5nJiB1cmwsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJDYWNoZSogY2Fj
aGUgPSAwKQorICAgICAgICBTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlckNhY2hlKiBjYWNoZSA9
IDApCiAgICAgICAgICAgICA6IG1fdXJsKHVybCkKICAgICAgICAgICAgICwgbV9zdGFydFBvc2l0
aW9uKHN0YXJ0UG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fdmFsaWRhdGVkKGZhbHNlKQpAQCAt
NTcsMTEgKzU2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGRlbGV0ZSBt
X2NhY2hlOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBVU3RyaW5nIGdldFJhbmdlKGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRS
YW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBjb25z
dCBTdHJpbmdJbXBsKiBkYXRhKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIGludCBsZW5n
dGgoKSBjb25zdCA9IDA7CiAgICAgICAgIAotICAgICAgICBjb25zdCBVU3RyaW5nJiB1cmwoKSB7
IHJldHVybiBtX3VybDsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCgpIHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgICAgIFRleHRQb3NpdGlvbiBzdGFydFBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydFBvc2l0aW9uOyB9CiAgICAgICAgIGludHB0cl90IGFzSUQoKQogICAgICAgICB7
CkBAIC04MCwyMSArNzksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhY2hlU2l6ZUNoYW5nZWQoaW50IGRlbHRhKSB7IFVOVVNFRF9QQVJB
TShkZWx0YSk7IH0KIAotICAgICAgICBVU3RyaW5nIG1fdXJsOworICAgICAgICBTdHJpbmcgbV91
cmw7CiAgICAgICAgIFRleHRQb3NpdGlvbiBtX3N0YXJ0UG9zaXRpb247CiAgICAgICAgIGJvb2wg
bV92YWxpZGF0ZWQ7CiAgICAgICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGUqIG1fY2FjaGU7CiAgICAg
ICAgIGJvb2wgbV9jYWNoZU93bmVkOwogICAgIH07CiAKLSAgICBjbGFzcyBVU3RyaW5nU291cmNl
UHJvdmlkZXIgOiBwdWJsaWMgU291cmNlUHJvdmlkZXIgeworICAgIGNsYXNzIFN0cmluZ1NvdXJj
ZVByb3ZpZGVyIDogcHVibGljIFNvdXJjZVByb3ZpZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFVT
dHJpbmcmIHNvdXJjZSwgY29uc3QgVVN0cmluZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0
YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBv
c2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNl
LCB1cmwsIHN0YXJ0UG9zaXRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZpcnR1YWwgVVN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0IE9WRVJSSURFCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldFJhbmdlKGludCBz
dGFydCwgaW50IGVuZCkgY29uc3QgT1ZFUlJJREUKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIG1fc291cmNlLnN1YnN0cmluZ1NoYXJpbmdJbXBsKHN0YXJ0LCBlbmQgLSBzdGFydCk7CiAg
ICAgICAgIH0KQEAgLTEwMiwxMyArMTAxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBp
bnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UubGVuZ3RoKCk7IH0KIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFVTdHJpbmdTb3VyY2VQcm92aWRlcihjb25zdCBVU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFVTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9u
KQorICAgICAgICBTdHJpbmdTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbikKICAgICAg
ICAgICAgIDogU291cmNlUHJvdmlkZXIodXJsLCBzdGFydFBvc2l0aW9uKQogICAgICAgICAgICAg
LCBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFVTdHJp
bmcgbV9zb3VyY2U7CisgICAgICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvQ2FsbElkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9DYWxs
SWRlbnRpZmllci5oCmluZGV4IDJkYThhMmZmMTA0Zjk4OTNmNWY4N2Q5MDdmMzIxYzBkMmNhZGJm
ZWQuLmJmOWY5MDRiMGI5Y2VjNDFkYTBkM2Y2MDFlNzQ3ODFjMDFjZmM2YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9DYWxsSWRlbnRpZmllci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9DYWxsSWRlbnRpZmllci5oCkBAIC0yNywxNyAr
MjcsMTcgQEAKICNpZm5kZWYgQ2FsbElkZW50aWZpZXJfaAogI2RlZmluZSBDYWxsSWRlbnRpZmll
cl9oCiAKLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBDYWxs
SWRlbnRpZmllciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKLSAgICAgICAgVVN0cmluZyBtX25hbWU7Ci0gICAgICAgIFVTdHJpbmcgbV91cmw7CisgICAg
ICAgIFN0cmluZyBtX25hbWU7CisgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgdW5zaWdu
ZWQgbV9saW5lTnVtYmVyOwogCiAgICAgICAgIENhbGxJZGVudGlmaWVyKCkKQEAgLTQ1LDcgKzQ1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIENh
bGxJZGVudGlmaWVyKGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNvbnN0IFVTdHJpbmcmIHVybCwgaW50
IGxpbmVOdW1iZXIpCisgICAgICAgIENhbGxJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQogICAgICAgICAgICAgOiBtX25hbWUo
bmFtZSkKICAgICAgICAgICAgICwgbV91cmwoIXVybC5pc051bGwoKSA/IHVybCA6ICIiKQogICAg
ICAgICAgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKQEAgLTg3LDcgKzg3LDcgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkNhbGxJ
ZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEpTQzo6Q2FsbElkZW50aWZpZXI+IHsKICAg
ICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEpTQzo6Q2FsbElkZW50aWZp
ZXImIHNsb3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJnNsb3QpIEpT
Qzo6Q2FsbElkZW50aWZpZXIoSlNDOjpVU3RyaW5nKCksIEpTQzo6VVN0cmluZygpLCBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCAmc2xvdCkgSlNDOjpDYWxsSWRlbnRpZmllcihTdHJpbmcoKSwgU3RyaW5nKCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgSlNDOjpDYWxsSWRlbnRpZmllciYgdmFsdWUpCiAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAppbmRl
eCA5MmUzMmM0YmE2NjRhNDFmNDFhODhlOTI5Y2EzZjBjZThiZjcwNzZmLi41MWY4NzE4OTgzOGM0
OWI3NDBlMjFiMDZkZGYxYjg3NGY2NDVmMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGUuY3BwCkBAIC0zMiwxOCArMzIsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLVBhc3NSZWZQdHI8UHJvZmlsZT4gUHJvZmlsZTo6Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHRp
dGxlLCB1bnNpZ25lZCB1aWQpCitQYXNzUmVmUHRyPFByb2ZpbGU+IFByb2ZpbGU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBQcm9maWxlKHRpdGxlLCB1aWQpKTsKIH0KIAotUHJvZmlsZTo6UHJvZmlsZShjb25zdCBV
U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQorUHJvZmlsZTo6UHJvZmlsZShjb25zdCBTdHJp
bmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCiAgICAgOiBtX3RpdGxlKHRpdGxlKQogICAgICwgbV91
aWQodWlkKQogewogICAgIC8vIEZJWE1FOiBXaGVuIG11bHRpLXRocmVhZGluZyBpcyBzdXBwb3J0
ZWQgdGhpcyB3aWxsIGJlIGEgdmVjdG9yIGFuZCBjYWxscwogICAgIC8vIGludG8gdGhlIHByb2Zp
bGVyIHdpbGwgbmVlZCB0byBrbm93IHdoaWNoIHRocmVhZCBpdCBpcyBleGVjdXRpbmcgb24uCi0g
ICAgbV9oZWFkID0gUHJvZmlsZU5vZGU6OmNyZWF0ZSgwLCBDYWxsSWRlbnRpZmllcigiVGhyZWFk
XzEiLCBVU3RyaW5nKCksIDApLCAwLCAwKTsKKyAgICBtX2hlYWQgPSBQcm9maWxlTm9kZTo6Y3Jl
YXRlKDAsIENhbGxJZGVudGlmaWVyKCJUaHJlYWRfMSIsIFN0cmluZygpLCAwKSwgMCwgMCk7CiB9
CiAKIFByb2ZpbGU6On5Qcm9maWxlKCkKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFByb2ZpbGU6
OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoKSBjb25zdAogCiAgICAgc3RkOjpzb3J0KHNvcnRl
ZEZ1bmN0aW9ucy5iZWdpbigpLCBzb3J0ZWRGdW5jdGlvbnMuZW5kKCksIGZ1bmN0aW9uTmFtZUNv
dW50UGFpckNvbXBhcmF0b3IpOwogICAgIGZvciAoTmFtZUNvdW50UGFpclZlY3Rvcjo6aXRlcmF0
b3IgaXQgPSBzb3J0ZWRGdW5jdGlvbnMuYmVnaW4oKTsgaXQgIT0gc29ydGVkRnVuY3Rpb25zLmVu
ZCgpOyArK2l0KQotICAgICAgICBkYXRhTG9nKCIgICAgICAgICUtMTJkJXNcbiIsICgqaXQpLnNl
Y29uZCwgVVN0cmluZygoKml0KS5maXJzdCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRhdGFM
b2coIiAgICAgICAgJS0xMmQlc1xuIiwgKCppdCkuc2Vjb25kLCBTdHJpbmcoKCppdCkuZmlyc3Qp
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZGF0YUxvZygiXG5Tb3J0IGJ5IHRvcCBvZiBzdGFjaywg
c2FtZSBjb2xsYXBzZWQgKHdoZW4gPj0gNSk6XG4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZS5oCmluZGV4IDk0NTVlMzU5NTAzMmYyYzNkOWM1MmEwODA5NWQ1NGFj
OTk4NmVhMGUuLmMxYzY5MTkzY2MyYmMxMTgzNDk5MDk1NzJjZTMyYjEzNTRmYzA1OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaApAQCAtMjcsMTggKzI3LDE4IEBA
CiAjZGVmaW5lIFByb2ZpbGVfaAogCiAjaW5jbHVkZSAiUHJvZmlsZU5vZGUuaCIKLSNpbmNsdWRl
IDxydW50aW1lL1VTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJv
ZmlsZT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZT4g
Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQcm9maWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWdu
ZWQgdWlkKTsKICAgICAgICAgdmlydHVhbCB+UHJvZmlsZSgpOwogCi0gICAgICAgIGNvbnN0IFVT
dHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgICAgICBjb25zdCBT
dHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogICAgICAgICBQcm9maWxl
Tm9kZSogaGVhZCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZC5nZXQoKTsgfQogICAgICAgICB2b2lk
IHNldEhlYWQoUGFzc1JlZlB0cjxQcm9maWxlTm9kZT4gaGVhZCkgeyBtX2hlYWQgPSBoZWFkOyB9
CiAgICAgICAgIGRvdWJsZSB0b3RhbFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2hlYWQtPnRvdGFs
VGltZSgpOyB9CkBAIC01NiwxMyArNTYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgUHJvZmlsZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5z
aWduZWQgdWlkKTsKKyAgICAgICAgUHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCB1aWQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCByZW1vdmVQcm9maWxlU3RhcnQo
KTsKICAgICAgICAgdm9pZCByZW1vdmVQcm9maWxlRW5kKCk7CiAgCi0gICAgICAgIFVTdHJpbmcg
bV90aXRsZTsKKyAgICAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgICAgIFJlZlB0cjxQcm9maWxl
Tm9kZT4gbV9oZWFkOwogICAgICAgICB1bnNpZ25lZCBpbnQgbV91aWQ7CiAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcApp
bmRleCA1ZGIzOGJjYThkNTZhNWVmMDFkMjhhNWY5NDJiMGZkOTMwMjdmYmUyLi4wOTg3N2QzYzhj
N2Y0ODdhMjA3ZjkxYTc5ZmIzYjFiOGMxODk1N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCkBAIC00MCwxMiArNDAsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBOb25KU0V4ZWN1dGlvbiA9
ICIoaWRsZSkiOwogCi1QYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IFByb2ZpbGVHZW5lcmF0
b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCB1aWQpCitQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IFByb2ZpbGVHZW5lcmF0b3I6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2ZpbGVHZW5lcmF0b3IoZXhlYywgdGl0bGUs
IHVpZCkpOwogfQogCi1Qcm9maWxlR2VuZXJhdG9yOjpQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKK1Byb2ZpbGVHZW5l
cmF0b3I6OlByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCB1bnNpZ25lZCB1aWQpCiAgICAgOiBtX29yaWdpbihleGVjID8gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpIDogMCkKICAgICAsIG1fcHJvZmlsZUdyb3VwKGV4ZWMgPyBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpIDogMCkKIHsKQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBQcm9maWxlR2VuZXJhdG9yOjphZGRQYXJlbnRGb3JDb25zb2xlU3RhcnQoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIGludCBsaW5lTnVtYmVyOwogICAgIGludHB0cl90IHNvdXJjZUlE
OwotICAgIFVTdHJpbmcgc291cmNlVVJMOworICAgIFN0cmluZyBzb3VyY2VVUkw7CiAgICAgSlNW
YWx1ZSBmdW5jdGlvbjsKIAogICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENh
bGxlcihleGVjLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCwgc291cmNlVVJMLCBmdW5jdGlvbik7CkBA
IC02Nyw3ICs2Nyw3IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6YWRkUGFyZW50Rm9yQ29uc29s
ZVN0YXJ0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBtX2hlYWQtPmluc2VydE5vZGUobV9jdXJyZW50
Tm9kZS5nZXQoKSk7CiB9CiAKLWNvbnN0IFVTdHJpbmcmIFByb2ZpbGVHZW5lcmF0b3I6OnRpdGxl
KCkgY29uc3QKK2NvbnN0IFN0cmluZyYgUHJvZmlsZUdlbmVyYXRvcjo6dGl0bGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3Byb2ZpbGUtPnRpdGxlKCk7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBQcm9maWxlR2VuZXJhdG9yOjpzdG9wUHJvZmlsaW5nKCkKICAgICBtX2N1cnJlbnROb2Rl
ID0gbV9jdXJyZW50Tm9kZS0+cGFyZW50KCk7CiAKICAgIGlmIChkb3VibGUgaGVhZFNlbGZUaW1l
ID0gbV9oZWFkLT5zZWxmVGltZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gaWRs
ZU5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKDAsIENhbGxJZGVudGlmaWVyKE5vbkpTRXhlY3V0
aW9uLCBVU3RyaW5nKCksIDApLCBtX2hlYWQuZ2V0KCksIG1faGVhZC5nZXQoKSk7CisgICAgICAg
IFJlZlB0cjxQcm9maWxlTm9kZT4gaWRsZU5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKDAsIENh
bGxJZGVudGlmaWVyKE5vbkpTRXhlY3V0aW9uLCBTdHJpbmcoKSwgMCksIG1faGVhZC5nZXQoKSwg
bV9oZWFkLmdldCgpKTsKIAogICAgICAgICBpZGxlTm9kZS0+c2V0VG90YWxUaW1lKGhlYWRTZWxm
VGltZSk7CiAgICAgICAgIGlkbGVOb2RlLT5zZXRTZWxmVGltZShoZWFkU2VsZlRpbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgKaW5k
ZXggOGM4YjgxNzMxNTM1NjE5ZDE0MjMzZGZmMGZkYjdkMWIyMjg4MGFkZi4uNDBjYzhkZTAxZDU0
YmZlOTczOTcxN2Q4NTkxODgzNzVlOWM3ZGM1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCkBAIC0zNywxNSArMzcsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgUHJvZmls
ZTsKICAgICBjbGFzcyBQcm9maWxlTm9kZTsKLSAgICBjbGFzcyBVU3RyaW5nOwogICAgIHN0cnVj
dCBDYWxsSWRlbnRpZmllcjsgICAgCiAKICAgICBjbGFzcyBQcm9maWxlR2VuZXJhdG9yIDogcHVi
bGljIFJlZkNvdW50ZWQ8UHJvZmlsZUdlbmVyYXRvcj4gIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IGNyZWF0ZShFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3Ry
aW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKIAogICAgICAgICAvLyBNZW1iZXJzCi0gICAgICAg
IGNvbnN0IFVTdHJpbmcmIHRpdGxlKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFdURjo6U3RyaW5n
JiB0aXRsZSgpIGNvbnN0OwogICAgICAgICBQYXNzUmVmUHRyPFByb2ZpbGU+IHByb2ZpbGUoKSBj
b25zdCB7IHJldHVybiBtX3Byb2ZpbGU7IH0KICAgICAgICAgSlNHbG9iYWxPYmplY3QqIG9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIHVuc2lnbmVkIHByb2ZpbGVH
cm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZmlsZUdyb3VwOyB9CkBAIC02Miw3ICs2MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIHZvaWQgKFByb2ZpbGVHZW5lcmF0b3I6
OipQcm9maWxlRnVuY3Rpb24pKEV4ZWNTdGF0ZSogY2FsbGVyT3JIYW5kbGVyQ2FsbEZyYW1lLCBj
b25zdCBDYWxsSWRlbnRpZmllciYgY2FsbElkZW50aWZpZXIpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgUHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSwg
dW5zaWduZWQgdWlkKTsKKyAgICAgICAgUHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBjb25z
dCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CiAgICAgICAgIHZvaWQgYWRkUGFy
ZW50Rm9yQ29uc29sZVN0YXJ0KEV4ZWNTdGF0ZSopOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlUHJv
ZmlsZVN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZU5vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9k
ZS5oCmluZGV4IGZmZTdiNmY5ZDBlMzRjYWYzZDNjZjI4MjQyMmYzNDJiNWM3ZDFlOTEuLjI2MDAw
YTgyNzEzMzcyZTFlYTZhNmM2MTczYzA0NWZjMzQ3MmIzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCkBAIC02NCw4ICs2NCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAvLyBDYWxsSWRlbnRpZmllciBtZW1iZXJzCiAgICAgICAgIEV4ZWNT
dGF0ZSogY2FsbGVyQ2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZXJDYWxsRnJhbWU7
IH0KICAgICAgICAgY29uc3QgQ2FsbElkZW50aWZpZXImIGNhbGxJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWxsSWRlbnRpZmllcjsgfQotICAgICAgICBjb25zdCBVU3RyaW5nJiBmdW5j
dGlvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVyLm1fbmFtZTsgfQotICAg
ICAgICBjb25zdCBVU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVy
Lm1fdXJsOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsSWRlbnRpZmllci5tX25hbWU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVyLm1fdXJsOyB9CiAgICAgICAgIHVu
c2lnbmVkIGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVyLm1fbGlu
ZU51bWJlcjsgfQogCiAgICAgICAgIC8vIFJlbGF0aW9uc2hpcHMKQEAgLTE0Niw4ICsxNDYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGlubGluZSBib29sIHNlbGZUaW1lQXNj
ZW5kaW5nQ29tcGFyYXRvcihjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBhLCBjb25zdCBSZWZQ
dHI8UHJvZmlsZU5vZGU+JiBiKSB7IHJldHVybiBhLT5zZWxmVGltZSgpIDwgYi0+c2VsZlRpbWUo
KTsgfQogICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY2FsbHNEZXNjZW5kaW5nQ29tcGFyYXRv
cihjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBhLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+
JiBiKSB7IHJldHVybiBhLT5udW1iZXJPZkNhbGxzKCkgPiBiLT5udW1iZXJPZkNhbGxzKCk7IH0K
ICAgICAgICAgc3RhdGljIGlubGluZSBib29sIGNhbGxzQXNjZW5kaW5nQ29tcGFyYXRvcihjb25z
dCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBhLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBiKSB7
IHJldHVybiBhLT5udW1iZXJPZkNhbGxzKCkgPCBiLT5udW1iZXJPZkNhbGxzKCk7IH0KLSAgICAg
ICAgc3RhdGljIGlubGluZSBib29sIGZ1bmN0aW9uTmFtZURlc2NlbmRpbmdDb21wYXJhdG9yKGNv
bnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGEsIGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGIp
IHsgcmV0dXJuIGEtPmZ1bmN0aW9uTmFtZSgpID4gYi0+ZnVuY3Rpb25OYW1lKCk7IH0KLSAgICAg
ICAgc3RhdGljIGlubGluZSBib29sIGZ1bmN0aW9uTmFtZUFzY2VuZGluZ0NvbXBhcmF0b3IoY29u
c3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYSwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYikg
eyByZXR1cm4gYS0+ZnVuY3Rpb25OYW1lKCkgPCBiLT5mdW5jdGlvbk5hbWUoKTsgfQorICAgICAg
ICBzdGF0aWMgaW5saW5lIGJvb2wgZnVuY3Rpb25OYW1lRGVzY2VuZGluZ0NvbXBhcmF0b3IoY29u
c3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYSwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYikg
eyByZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGItPmZ1bmN0aW9uTmFtZSgpLCBhLT5m
dW5jdGlvbk5hbWUoKSk7IH0KKyAgICAgICAgc3RhdGljIGlubGluZSBib29sIGZ1bmN0aW9uTmFt
ZUFzY2VuZGluZ0NvbXBhcmF0b3IoY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYSwgY29uc3Qg
UmVmUHRyPFByb2ZpbGVOb2RlPiYgYikgeyByZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFu
KGEtPmZ1bmN0aW9uTmFtZSgpLCBiLT5mdW5jdGlvbk5hbWUoKSk7IH0KIAogICAgICAgICBFeGVj
U3RhdGUqIG1fY2FsbGVyQ2FsbEZyYW1lOwogICAgICAgICBDYWxsSWRlbnRpZmllciBtX2NhbGxJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5jcHAK
aW5kZXggNzIzMzkzYjVjNjhiYTZiM2I0MzUzN2NkY2VlNmU1MjJkZGJjNTlmNS4uOTY0MmEwNjg0
Nzc3YjNiNGEzMzFiMGQyYmQyMjNkZDNjZDc2NzcwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiUHJv
ZmlsZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJQcm9maWxl
Tm9kZS5oIgotI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDgsNyArNDcsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogR2xvYmFsQ29kZUV4ZWN1dGlvbiA9ICIocHJvZ3JhbSkiOwogc3RhdGljIGNvbnN0IGNoYXIq
IEFub255bW91c0Z1bmN0aW9uID0gIihhbm9ueW1vdXMgZnVuY3Rpb24pIjsKIHN0YXRpYyB1bnNp
Z25lZCBQcm9maWxlc1VJRCA9IDA7CiAKLXN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxs
SWRlbnRpZmllckZyb21GdW5jdGlvbkltcChFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IFVT
dHJpbmcmIGRlZmF1bHRTb3VyY2VVUkwsIGludCBkZWZhdWx0TGluZU51bWJlcik7CitzdGF0aWMg
Q2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXJGcm9tRnVuY3Rpb25JbXAoRXhlY1N0
YXRlKiwgSlNPYmplY3QqLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRTb3VyY2VVUkwsIGludCBkZWZh
dWx0TGluZU51bWJlcik7CiAKIFByb2ZpbGVyKiBQcm9maWxlcjo6c19zaGFyZWRQcm9maWxlciA9
IDA7CiAKQEAgLTU5LDcgKzU4LDcgQEAgUHJvZmlsZXIqIFByb2ZpbGVyOjpwcm9maWxlcigpCiAg
ICAgcmV0dXJuIHNfc2hhcmVkUHJvZmlsZXI7CiB9ICAgCiAKLXZvaWQgUHJvZmlsZXI6OnN0YXJ0
UHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgdGl0bGUpCit2b2lkIFBy
b2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiB7CiAgICAgQVNTRVJUX0FSRyh0aXRsZSwgIXRpdGxlLmlzTnVsbCgpKTsKIApAQCAtNzgs
NyArNzcsNyBAQCB2b2lkIFByb2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVTdHJpbmcmIHRpdGxlKQogICAgIG1fY3VycmVudFByb2ZpbGVzLmFwcGVuZChwcm9m
aWxlR2VuZXJhdG9yKTsKIH0KIAotUGFzc1JlZlB0cjxQcm9maWxlPiBQcm9maWxlcjo6c3RvcFBy
b2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHRpdGxlKQorUGFzc1JlZlB0
cjxQcm9maWxlPiBQcm9maWxlcjo6c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIG9yaWdpbiA9IGV4ZWMgPyBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkgOiAwOwogICAgIGZvciAocHRyZGlmZl90IGkgPSBt
X2N1cnJlbnRQcm9maWxlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewpAQCAtMTI2LDcgKzEy
NSw3IEBAIHZvaWQgUHJvZmlsZXI6OndpbGxFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZy
YW1lLCBKU1ZhbHVlIGZ1bmN0aW9uKQogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub1Byb2ZpbGVzKGNh
bGxlckNhbGxGcmFtZSwgbV9jdXJyZW50UHJvZmlsZXMsICZQcm9maWxlR2VuZXJhdG9yOjp3aWxs
RXhlY3V0ZSwgY3JlYXRlQ2FsbElkZW50aWZpZXIoY2FsbGVyQ2FsbEZyYW1lLCBmdW5jdGlvbiwg
IiIsIDApLCBjYWxsZXJDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdy
b3VwKCkpOwogfQogCi12b2lkIFByb2ZpbGVyOjp3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxl
ckNhbGxGcmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVt
YmVyKQordm9pZCBQcm9maWxlcjo6d2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJh
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKQogewog
ICAgIEFTU0VSVCghbV9jdXJyZW50UHJvZmlsZXMuaXNFbXB0eSgpKTsKIApAQCAtMTQyLDcgKzE0
MSw3IEBAIHZvaWQgUHJvZmlsZXI6OmRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJh
bWUsIEpTVmFsdWUgZnVuY3Rpb24pCiAgICAgZGlzcGF0Y2hGdW5jdGlvblRvUHJvZmlsZXMoY2Fs
bGVyQ2FsbEZyYW1lLCBtX2N1cnJlbnRQcm9maWxlcywgJlByb2ZpbGVHZW5lcmF0b3I6OmRpZEV4
ZWN1dGUsIGNyZWF0ZUNhbGxJZGVudGlmaWVyKGNhbGxlckNhbGxGcmFtZSwgZnVuY3Rpb24sICIi
LCAwKSwgY2FsbGVyQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91
cCgpKTsKIH0KIAotdm9pZCBQcm9maWxlcjo6ZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNh
bGxGcmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVy
KQordm9pZCBQcm9maWxlcjo6ZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpCiB7CiAgICAg
QVNTRVJUKCFtX2N1cnJlbnRQcm9maWxlcy5pc0VtcHR5KCkpOwogCkBAIC0xNTYsNyArMTU1LDcg
QEAgdm9pZCBQcm9maWxlcjo6ZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxG
cmFtZSkKICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9Qcm9maWxlcyhoYW5kbGVyQ2FsbEZyYW1lLCBt
X2N1cnJlbnRQcm9maWxlcywgJlByb2ZpbGVHZW5lcmF0b3I6OmV4Y2VwdGlvblVud2luZCwgY3Jl
YXRlQ2FsbElkZW50aWZpZXIoaGFuZGxlckNhbGxGcmFtZSwgSlNWYWx1ZSgpLCAiIiwgMCksIGhh
bmRsZXJDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkpOwog
fQogCi1DYWxsSWRlbnRpZmllciBQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUsIGNvbnN0IFVTdHJpbmcmIGRlZmF1bHRT
b3VyY2VVUkwsIGludCBkZWZhdWx0TGluZU51bWJlcikKK0NhbGxJZGVudGlmaWVyIFByb2ZpbGVy
OjpjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb25W
YWx1ZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCBpbnQgZGVmYXVsdExpbmVOdW1i
ZXIpCiB7CiAgICAgaWYgKCFmdW5jdGlvblZhbHVlKQogICAgICAgICByZXR1cm4gQ2FsbElkZW50
aWZpZXIoR2xvYmFsQ29kZUV4ZWN1dGlvbiwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVO
dW1iZXIpOwpAQCAtMTY0LDEyICsxNjMsMTIgQEAgQ2FsbElkZW50aWZpZXIgUHJvZmlsZXI6OmNy
ZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvblYKICAg
ICAgICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKCIodW5rbm93bikiLCBkZWZhdWx0U291cmNlVVJM
LCBkZWZhdWx0TGluZU51bWJlcik7CiAgICAgaWYgKGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpLT5p
bmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSB8fCBhc09iamVjdChmdW5jdGlvblZhbHVlKS0+
aW5oZXJpdHMoJkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBjcmVh
dGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlvbkltcChleGVjLCBhc09iamVjdChmdW5jdGlvblZh
bHVlKSwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVOdW1iZXIpOwotICAgIHJldHVybiBD
YWxsSWRlbnRpZmllcihtYWtlVVN0cmluZygiKCIsIGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpLT5t
ZXRob2RUYWJsZSgpLT5jbGFzc05hbWUoYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSkpLCAiIG9iamVj
dCkiKSwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVOdW1iZXIpOworICAgIHJldHVybiBD
YWxsSWRlbnRpZmllcihtYWtlU3RyaW5nKCIoIiwgYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSktPm1l
dGhvZFRhYmxlKCktPmNsYXNzTmFtZShhc09iamVjdChmdW5jdGlvblZhbHVlKSksICIgb2JqZWN0
KSIpLCBkZWZhdWx0U291cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7CiB9CiAKLUNhbGxJZGVu
dGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGZ1bmN0aW9uLCBjb25zdCBVU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCBp
bnQgZGVmYXVsdExpbmVOdW1iZXIpCitDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmll
ckZyb21GdW5jdGlvbkltcChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29u
c3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCBpbnQgZGVmYXVsdExpbmVOdW1iZXIpCiB7Ci0g
ICAgY29uc3QgVVN0cmluZyYgbmFtZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShleGVjLCBm
dW5jdGlvbik7CisgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlO
YW1lKGV4ZWMsIGZ1bmN0aW9uKTsKICAgICBKU0Z1bmN0aW9uKiBqc0Z1bmN0aW9uID0ganNEeW5h
bWljQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pOwogICAgIGlmIChqc0Z1bmN0aW9uICYmICFq
c0Z1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQ2FsbElkZW50aWZp
ZXIobmFtZS5pc0VtcHR5KCkgPyBBbm9ueW1vdXNGdW5jdGlvbiA6IG5hbWUsIGpzRnVuY3Rpb24t
PmpzRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKSwganNGdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkt
PmxpbmVObygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKaW5k
ZXggODc3MDY1ZWNhZWJjYTBjZTVmNzdhNWU0M2E4YzFlYzlhNjcwYWJjYi4uNjg1MjQ1N2M3ZGM4
ZjA3ZDNjYWMzMzNjODU3N2M3YTJhZTc1MTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyLmgKQEAgLTQyLDIzICs0MiwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIFByb2ZpbGVH
ZW5lcmF0b3I7Ci0gICAgY2xhc3MgVVN0cmluZzsKLSAgICBzdHJ1Y3QgQ2FsbElkZW50aWZpZXI7
ICAgIAorICAgIHN0cnVjdCBDYWxsSWRlbnRpZmllcjsKIAogICAgIGNsYXNzIFByb2ZpbGVyIHsK
ICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUHJvZmlsZXIqIHByb2ZpbGVyKCk7IAotICAgICAgICBz
dGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKKyAg
ICAgICAgc3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVy
KTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNT
dGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGlu
ZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBQYXNzUmVmUHRyPFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwg
Y29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlKTsKICAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKEpT
R2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNh
bGxlckNhbGxGcmFtZSwgSlNWYWx1ZSBmdW5jdGlvbik7Ci0gICAgICAgIHZvaWQgd2lsbEV4ZWN1
dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwg
aW50IHN0YXJ0aW5nTGluZU51bWJlcik7CisgICAgICAgIHZvaWQgd2lsbEV4ZWN1dGUoRXhlY1N0
YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGludCBz
dGFydGluZ0xpbmVOdW1iZXIpOwogICAgICAgICB2b2lkIGRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBj
YWxsZXJDYWxsRnJhbWUsIEpTVmFsdWUgZnVuY3Rpb24pOwotICAgICAgICB2b2lkIGRpZEV4ZWN1
dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwg
aW50IHN0YXJ0aW5nTGluZU51bWJlcik7CisgICAgICAgIHZvaWQgZGlkRXhlY3V0ZShFeGVjU3Rh
dGUqIGNhbGxlckNhbGxGcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0
YXJ0aW5nTGluZU51bWJlcik7CiAKICAgICAgICAgdm9pZCBleGNlcHRpb25VbndpbmQoRXhlY1N0
YXRlKiBoYW5kbGVyQ2FsbEZyYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5jcHAKaW5kZXggMjU3OTM3NjViYjAxNDc5ZTY4ODVhZGQ2ZWFlNjViZWJkNTgz
YzRhZS4uZmU3OWY3NDBlMmMwMGZiYWVlYWI4ZjBjZTI2YWRkMDQ3NzU2ZDM0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC05OCw3ICs5OCw3IEBA
IGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSwgc2xvdCk7CisgICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmll
cihleGVjLCBTdHJpbmc6Om51bWJlcihpKSksIHNsb3QpOwogfQogICAgIAogdm9pZCBBcmd1bWVu
dHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeShFeGVjU3RhdGUqIGV4ZWMpCkBA
IC0xODYsNyArMTg2LDcgQEAgdm9pZCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICBBcmd1bWVudHMq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJndW1lbnRzKj4ob2JqZWN0KTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzOyArK2kpIHsKICAgICAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5k
LT5kZWxldGVkQXJndW1lbnRzW2ldKQotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcihleGVjLCBVU3RyaW5nOjpudW1iZXIoaSkpKTsKKyAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpudW1iZXIoaSkpKTsKICAgICB9CiAg
ICAgaWYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykgewogICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlKTsKQEAgLTIwNCw3ICsy
MDQsNyBAQCB2b2lkIEFyZ3VtZW50czo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YQogICAgIH0KIAogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KHNob3VsZFRocm93KTsKLSAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSwgdmFsdWUsIHNsb3QpOwor
ICAgIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJp
bmc6Om51bWJlcihpKSksIHZhbHVlLCBzbG90KTsKIH0KIAogdm9pZCBBcmd1bWVudHM6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjU1LDcgKzI1NSw3IEBA
IGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgVVN0cmluZzo6bnVtYmVyKGkpKSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6bnVtYmVyKGkp
KSk7CiB9CiAKIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggYTk3Y2Y4MmRl
OWY5NmQ1MWNlZTFiMDFiOGZmYjUyYWYxZjU4ODFlMi4uZTQ3YzNmNDc2ODE1ZjQyMGM4ODhlMTZk
NGE3MWY1MWQ5NGEzMzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIGlmIChlbGVtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgCi0gICAgICAgIFVTdHJpbmcgc3RyID0gZWxlbWVudC50b1VTdHJpbmcoZXhl
Yyk7CisgICAgICAgIFN0cmluZyBzdHIgPSBlbGVtZW50LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAg
ICAgICBzdHJCdWZmZXJba10gPSBzdHIuaW1wbCgpOwogICAgICAgICB0b3RhbFNpemUgKz0gc3Ry
Lmxlbmd0aCgpOwogICAgICAgICBhbGxTdHJpbmdzOEJpdCA9IGFsbFN0cmluZ3M4Qml0ICYmIHN0
ci5pczhCaXQoKTsKQEAgLTMyOCw3ICszMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAg
ICAgIGJ1ZmZlci5hcHBlbmQocmVwLT5jaGFyYWN0ZXJzOCgpLCByZXAtPmxlbmd0aCgpKTsKICAg
ICAgICAgfQogICAgICAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSA9PSB0b3RhbFNpemUpOwotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6OmFkb3B0
KGJ1ZmZlcikpKTsgICAgICAgIAorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKGV4ZWMsIFN0cmluZzo6YWRvcHQoYnVmZmVyKSkpOwogICAgIH0KIAogICAgIFZlY3RvcjxV
Q2hhcj4gYnVmZmVyOwpAQCAtMzQzLDcgKzM0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBidWZmZXIuYXBwZW5kKHJlcC0+Y2hhcmFjdGVycygpLCByZXAtPmxlbmd0aCgpKTsKICAgICB9
CiAgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkgPT0gdG90YWxTaXplKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6OmFkb3B0KGJ1ZmZlcikpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6YWRvcHQoYnVm
ZmVyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQpAQCAtMzYyLDcgKzM2Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIu
ZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5
UmV0dXJuVmFsdWUpOwogCi0gICAgVVN0cmluZyBzZXBhcmF0b3IoIiwiKTsKKyAgICBTdHJpbmcg
c2VwYXJhdG9yKCIsIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgSlNTdHJp
bmdKb2luZXIgc3RyaW5nSm9pbmVyKHNlcGFyYXRvciwgbGVuZ3RoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0g
dGhpc09iai0+Z2V0KGV4ZWMsIGspOwpAQCAtMzczLDEzICszNzMsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIEpTVmFsdWUgY29udmVyc2lvbkZ1bmN0aW9uID0gby0+Z2V0KGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0xvY2FsZVN0cmluZyk7CiAgICAgICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIFVTdHJpbmcgc3RyOworICAgICAg
ICAgICAgU3RyaW5nIHN0cjsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAg
ICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjb252ZXJzaW9uRnVuY3Rpb24s
IGNhbGxEYXRhKTsKICAgICAgICAgICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpCi0g
ICAgICAgICAgICAgICAgc3RyID0gY2FsbChleGVjLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgZWxlbWVudCwgZXhlYy0+ZW1wdHlMaXN0KCkpLnRvVVN0cmluZyhleGVj
KTsKKyAgICAgICAgICAgICAgICBzdHIgPSBjYWxsKGV4ZWMsIGNvbnZlcnNpb25GdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBlbGVtZW50LCBleGVjLT5lbXB0eUxpc3QoKSkudG9XVEZTdHJp
bmcoZXhlYyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RyID0gZWxlbWVu
dC50b1VTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICAgICAgc3RyID0gZWxlbWVudC50b1dURlN0
cmluZyhleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAg
ICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChzdHIpOwpAQCAtNDAwLDExICs0MDAsMTEgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBl
eGVjKQogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0
dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZh
bHVlKTsKIAotICAgIFVTdHJpbmcgc2VwYXJhdG9yOworICAgIFN0cmluZyBzZXBhcmF0b3I7CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBzZXBhcmF0
b3IgPSBleGVjLT5hcmd1bWVudCgwKS50b1VTdHJpbmcoZXhlYyk7CisgICAgICAgIHNlcGFyYXRv
ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChzZXBhcmF0
b3IuaXNOdWxsKCkpCi0gICAgICAgIHNlcGFyYXRvciA9IFVTdHJpbmcoIiwiKTsKKyAgICAgICAg
c2VwYXJhdG9yID0gU3RyaW5nKCIsIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBKU1N0cmluZ0pvaW5lciBzdHJpbmdKb2luZXIoc2VwYXJhdG9yLCBsZW5ndGgpOwogCkBA
IC00MTgsMTggKzQxOCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAgICAgICAgIEpTVmFsdWUgZWxlbWVu
dCA9IGFycmF5LT5nZXRJbmRleChrKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudC5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoZWxlbWVu
dC50b1VTdHJpbmdJbmxpbmUoZXhlYykpOworICAgICAgICAgICAgICAgIHN0cmluZ0pvaW5lci5h
cHBlbmQoZWxlbWVudC50b1dURlN0cmluZ0lubGluZShleGVjKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChVU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgZm9yICg7IGsgPCBsZW5ndGg7IGsrKykgewogICAgICAgICBKU1ZhbHVlIGVsZW1l
bnQgPSB0aGlzT2JqLT5nZXQoZXhlYywgayk7CiAgICAgICAgIGlmICghZWxlbWVudC5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChlbGVtZW50LnRv
VVN0cmluZ0lubGluZShleGVjKSk7CisgICAgICAgICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKGVs
ZW1lbnQudG9XVEZTdHJpbmdJbmxpbmUoZXhlYykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzdHJpbmdKb2luZXIuYXBwZW5kKFVTdHJpbmcoKSk7CisgICAgICAgICAgICBzdHJpbmdKb2lu
ZXIuYXBwZW5kKFN0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHN0cmluZ0pvaW5lci5idWlsZChleGVjKSk7CkBAIC01MjAsNyArNTIwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBsZW5ndGggKyBuLCBleGVjLT5hcmd1bWVudChuKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZShleGVjLCBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0
aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9VU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50
NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVj
KSk7CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iaiwgZXhl
YywgcHJvcGVydHlOYW1lLCBleGVjLT5hcmd1bWVudChuKSwgc2xvdCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNjYxLDcgKzY2MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgICAgICBsLmFwcGVuZChtaW5PYmopOwogICAgICAgICAgICAgICAgIGNv
bXBhcmVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpz
VW5kZWZpbmVkKCksIGwpLnRvTnVtYmVyKGV4ZWMpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgY29tcGFyZVJlc3VsdCA9IChqT2JqLnRvVVN0cmluZ0lubGluZShleGVjKSA8
IG1pbk9iai50b1VTdHJpbmdJbmxpbmUoZXhlYykpID8gLTEgOiAxOworICAgICAgICAgICAgICAg
IGNvbXBhcmVSZXN1bHQgPSBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oak9iai50b1dURlN0cmlu
Z0lubGluZShleGVjKSwgbWluT2JqLnRvV1RGU3RyaW5nSW5saW5lKGV4ZWMpKSA/IC0xIDogMTsK
IAogICAgICAgICAgICAgaWYgKGNvbXBhcmVSZXN1bHQgPCAwKSB7CiAgICAgICAgICAgICAgICAg
dGhlbWluID0gajsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5k
ZXggYjBhZGFiMzJjZmY0YzRiODliOGE5NjAwZDk2OGRhZWVlM2NjZjVmYS4uNGM3MmYzZWQxMGUw
ZTUzMjFiNzIzY2I3Mjk1MjlmZTcyNDEzNjA5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHR5cGVkZWYgdm9pZCAoKkdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0cikoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
ICAgIEdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBnZXRQcm9wZXJ0eU5hbWVzOwogCi0gICAg
ICAgIHR5cGVkZWYgVVN0cmluZyAoKkNsYXNzTmFtZUZ1bmN0aW9uUHRyKShjb25zdCBKU09iamVj
dCopOworICAgICAgICB0eXBlZGVmIFN0cmluZyAoKkNsYXNzTmFtZUZ1bmN0aW9uUHRyKShjb25z
dCBKU09iamVjdCopOwogICAgICAgICBDbGFzc05hbWVGdW5jdGlvblB0ciBjbGFzc05hbWU7CiAK
ICAgICAgICAgdHlwZWRlZiBib29sICgqSGFzSW5zdGFuY2VGdW5jdGlvblB0cikoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA0NzgzOTgxN2ZmOWVkMWFhZWEy
MDE4MzQyNmQ4YjJhZjI5NGQ1OTRkLi45MzMxNTQxYTg0ODZiNTM0ZWE0ZTU2Y2JjZWRjYzA3NTM2
ZjI0NWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZl
cnNpb24uY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJEYXRlQ29udmVyc2lvbi5oIgogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC02Miw3ICs2Miw3
IEBAIHZvaWQgYXBwZW5kTnVtYmVyPDI+KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCB2YWx1
ZSkKICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPignMCcgKyB2YWx1ZSAlIDEw
KSk7CiB9CiAKLVVTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUm
IHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQpCitTdHJpbmcgZm9y
bWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZv
cm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQpCiB7CiAgICAgYm9vbCBhcHBlbmREYXRlID0gZm9ybWF0
ICYgRGF0ZVRpbWVGb3JtYXREYXRlOwogICAgIGJvb2wgYXBwZW5kVGltZSA9IGZvcm1hdCAmIERh
dGVUaW1lRm9ybWF0VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb252ZXJzaW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29udmVyc2lvbi5oCmluZGV4IGZkMWE3ZWIzNTg5YmUzYjQzNmZiMzE2MzU3NWQ3OWQ0NWYyYjhi
MjIuLjhlYTRjMTdhZGJkMmFiYTM0Mzg2NDVjMjAwYjE3Y2YyYzk1Y2JmZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaApAQCAtMjcsOSArMjcs
MTEgQEAKIAogI2luY2x1ZGUgPHd0Zi9HcmVnb3JpYW5EYXRlVGltZS5oPgogCi1uYW1lc3BhY2Ug
SlNDIHsKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfSAvLyBuYW1lc3BhY2UgV1RG
CiAKLWNsYXNzIFVTdHJpbmc7CituYW1lc3BhY2UgSlNDIHsKIAogZW51bSBEYXRlVGltZUZvcm1h
dCB7CiAgICAgRGF0ZVRpbWVGb3JtYXREYXRlID0gMSwKQEAgLTM3LDcgKzM5LDcgQEAgZW51bSBE
YXRlVGltZUZvcm1hdCB7CiAgICAgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSA9IERhdGVUaW1l
Rm9ybWF0RGF0ZSB8IERhdGVUaW1lRm9ybWF0VGltZQogfTsKIAotVVN0cmluZyBmb3JtYXREYXRl
VGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYsIERhdGVUaW1lRm9ybWF0LCBib29sIGFzVVRD
VmFyaWFudCk7CitXVEY6OlN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSYsIERhdGVUaW1lRm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCk7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCmluZGV4IDM2M2VlYzAzYTlmMTI5N2I3ODVhMTU3ZTA1MDRiYjA3N2UxNTBmNzMuLjhj
ZmQ0NGVlZjg3MTQ0MTI5Yjc2MGYwNmRiOTcyODI0ODhlODM2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgZW51bSBMb2NhbGVEYXRlVGltZUZvcm1hdCB7IExvY2FsZURhdGVBbmRUaW1lLCBMb2NhbGVE
YXRlLCBMb2NhbGVUaW1lIH07CiAvLyBGSVhNRTogU2luY2UgdGhpcyBpcyBzdXBlcmlvciB0byB0
aGUgc3RyZnRpbWUtYmFzZWQgdmVyc2lvbiwgd2h5IGxpbWl0IHRoaXMgdG8gUExBVEZPUk0oTUFD
KT8KIC8vIEluc3RlYWQgd2Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoaXMgd2hlbmV2ZXIgVVNF
KENGKSBpcyB0cnVlLgogCi1zdGF0aWMgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgc3R5bGVGcm9tQXJn
U3RyaW5nKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgZGVmYXVs
dFN0eWxlKQorc3RhdGljIENGRGF0ZUZvcm1hdHRlclN0eWxlIHN0eWxlRnJvbUFyZ1N0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZywgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgZGVmYXVsdFN0eWxlKQog
ewogICAgIGlmIChzdHJpbmcgPT0gInNob3J0IikKICAgICAgICAgcmV0dXJuIGtDRkRhdGVGb3Jt
YXR0ZXJTaG9ydFN0eWxlOwpAQCAtMTUwLDkgKzE1MCw5IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1h
dExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBEYXRlSW5zdGFuY2UqLCBkb3VibGUgdGltZUlu
TWlsCiAgICAgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlID0gKGZvcm1hdCAhPSBMb2Nh
bGVEYXRlID8ga0NGRGF0ZUZvcm1hdHRlckxvbmdTdHlsZSA6IGtDRkRhdGVGb3JtYXR0ZXJOb1N0
eWxlKTsKIAogICAgIGJvb2wgdXNlQ3VzdG9tRm9ybWF0ID0gZmFsc2U7Ci0gICAgVVN0cmluZyBj
dXN0b21Gb3JtYXRTdHJpbmc7CisgICAgU3RyaW5nIGN1c3RvbUZvcm1hdFN0cmluZzsKIAotICAg
IFVTdHJpbmcgYXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgYXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoYXJnMFN0cmluZyA9PSAiY3VzdG9t
IiAmJiAhZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkgewogICAgICAgICB1c2VDdXN0
b21Gb3JtYXQgPSB0cnVlOwogICAgICAgICBjdXN0b21Gb3JtYXRTdHJpbmcgPSBleGVjLT5hcmd1
bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBAIC0xOTAsNyArMTkwLDcgQEAg
c3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0
YW5jZSosIGRvdWJsZSB0aW1lSW5NaWwKIAogICAgIENGUmVsZWFzZShzdHJpbmcpOwogCi0gICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBVU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7
CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoYnVmZmVyLCBsZW5n
dGgpKTsKIH0KIAogI2VsaWYgVVNFKElDVV9VTklDT0RFKSAmJiAhVUNPTkZJR19OT19GT1JNQVRU
SU5HCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShF
eGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5jZSogZGF0ZU9iamVjdCwgZG91YmwKICAgICBpZiAo
c3RhdHVzICE9IFVfWkVST19FUlJPUikKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhl
Yyk7CiAKLSAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFVTdHJpbmcoYnVmZmVy
LCBsZW5ndGgpKTsKKyAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhi
dWZmZXIsIGxlbmd0aCkpOwogfQogCiAjZWxzZQpAQCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyBK
U0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBHcmVnb3JpYW5E
YXRlVGltZSYgZ2R0LCBMCiAgICAgaWYgKGxlbmd0aCkKICAgICAgICAgbGVuZ3RoLS07CiAKLSAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFVTdHJpbmcoYnVmZmVyLmRhdGEoKSwg
bGVuZ3RoKSk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoYnVm
ZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CiAKICNlbHNlIC8vIE9TKFdJTkRPV1MpCiAKQEAgLTMyMiw3
ICszMjIsNyBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIGdkdCwgTAogICAgIGlmIChsZW5ndGggIT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PigtMSkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IHN0YXRpY19jYXN0PFVDaGFyPih0
ZW1wYnVmZmVyW2ldKTsKLSAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBV
U3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCBhM2E5OTBkNTk2ZTIzZDdmYTYx
ZjZmOWMyNDBjNWVlZjc5MDczNjI5Li4wYTUyMmM0ZmQwMDNkYWQwNjY0OGE4ZDEzOWFjYWZjMDRm
ZTViN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC00Mywz
NyArNDMsMzcgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgY2hhciogbGluZVByb3Bl
cnR5TmFtZSA9ICJsaW5lIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBzb3VyY2VVUkxQcm9wZXJ0eU5h
bWUgPSAic291cmNlVVJMIjsKIAotSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRl
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBFcnJvcklu
c3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+
ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVFdmFsRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
K0pTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkp
OwogICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdC0+ZXZhbEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1
cmUoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCog
Y3JlYXRlUmFuZ2VFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgcmV0
dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LT5yYW5nZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVz
c2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0
ZVJlZmVyZW5jZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1
cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QtPnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwg
bWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0
ZVN5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1cm4g
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QtPnN5bnRheEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2Fn
ZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVUeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBFcnJvckluc3Rh
bmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+dHlw
ZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CkBAIC04NCwz
OCArODQsMzggQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOwogfQogCi1KU09iamVjdCogY3JlYXRl
VVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVz
c2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1w
dHkoKSk7CiAgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5VUklFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3Ry
dWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBjcmVh
dGVFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQogCi1KU09i
amVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVz
c2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUV2YWxFcnJvcihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlUmFuZ2VF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCog
Y3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAg
IHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBj
cmVhdGVTeW50YXhFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwog
fQogCi1KU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0
cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQpAQCAtMTI1LDcgKzEyNSw3
IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRlVVJJRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVVSSUVycm9yKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9
CkBAIC0xMzMsNyArMTMzLDcgQEAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKIHsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCk7Ci0gICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJMID0gc291cmNl
LnByb3ZpZGVyKCktPnVybCgpOworICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMID0gc291cmNl
LnByb3ZpZGVyKCktPnVybCgpOwogCiAgICAgaWYgKGxpbmUgIT0gLTEpCiAgICAgICAgIGVycm9y
LT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgbGluZVByb3Bl
cnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggNjVhZWEzZWRjYzEzZDQwZjU0MDg2MzJh
NmU4NzM3YTdiYWVlN2VmYy4uYmM3MWY3MGIxOTA1ZTRhM2Y4ODRmNzllNTQ3NmVmMjA1ZmZmNmM1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBAIC0zNiwyNiArMzYsMjUg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgU291cmNl
Q29kZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7Ci0gICAgY2xhc3MgVVN0cmluZzsKIAogICAgIC8v
IE1ldGhvZHMgdG8gY3JlYXRlIGEgcmFuZ2Ugb2YgaW50ZXJuYWwgZXJyb3JzLgotICAgIEpTT2Jq
ZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBK
U09iamVjdCogY3JlYXRlRXZhbEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYp
OwotICAgIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
VVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVR5
cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU09iamVjdCog
Y3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU09iamVj
dCogY3JlYXRlRXZhbEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CisgICAg
SlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmKTsKKyAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgSlNPYmplY3QqIGNyZWF0
ZVVSSUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTT2JqZWN0
KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOwogICAgIC8v
IEV4ZWNTdGF0ZSB3cmFwcGVycy4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3Jl
YXRlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVh
dGVFdmFsRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0
ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIEpTT2JqZWN0KiBjcmVhdGVF
dmFsRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihFeGVjU3RhdGUqKTsKLSAgICBKU09iamVjdCogY3JlYXRlVVJJRXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTT2JqZWN0KiBjcmVhdGVVUklF
cnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRk
IAogICAgIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvcik7CkBA
IC03Niw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHByaXZhdGU6
Ci0gICAgICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
KyAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAg
ICAgICAgICAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAg
ICAgICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogICAgICAgICB7CkBAIC04Nyw3ICs4Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBJbnRlcm5h
bEZ1bmN0aW9uIEJhc2U7CiAKLSAgICAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAg
IHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOwogICAgICAg
ICAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgIiIpOwpA
QCAtMTI2LDcgKzEyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBVU3RyaW5nIG1fbWVzc2FnZTsKKyAgICAgICAgU3RyaW5nIG1fbWVzc2Fn
ZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAppbmRleCBkNmZhMzJmOTljZjNiM2RjNGIwZjEyNDkz
OTdmNWQ2MDc1NTY1MjdkLi44OTQ2NzYzNjEyYWQ5ZmM2OGMzMzMwNDE5ZDlhYWRhYjY2M2YzOTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhFcnJvckluc3RhbmNlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
KyAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEVycm9ySW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0
YW5jZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEsIG1lc3NhZ2UpOwpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgRXJyb3JJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVy
ZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gVVN0cmluZygpIDogbWVzc2FnZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIHN0cnVjdHVyZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBt
ZXNzYWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBib29sIGFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpIHsgcmV0dXJuIG1fYXBwZW5kU291cmNlVG9N
ZXNzYWdlOyB9CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqKTsKIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAg
ICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAg
ICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDVkZDNlODVlMmYzZjM0MTU5
ZjliM2Q3ZGM3ZGViNzA1ZWEzMzNjYTIuLjM1NGEzMTIxYTRiODdhMzY0MDRiOWQ3YzlmZWMyYzQ0
MTRjMjcwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIu
aCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNp
b25DaGVja2VyLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtOTcsNyArOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQsIHRo
ZW4gbGV0IG5hbWUgYmUgIkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1lKS4K
LSAgICBVU3RyaW5nIG5hbWVTdHJpbmc7CisgICAgU3RyaW5nIG5hbWVTdHJpbmc7CiAgICAgaWYg
KG5hbWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgbmFtZVN0cmluZyA9ICJFcnJvciI7CiAgICAg
ZWxzZSB7CkBAIC0xMTQsNyArMTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
cnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyAoc2ljKQogICAg
IC8vIDYuIElmIG1zZyBpcyB1bmRlZmluZWQsIHRoZW4gbGV0IG1zZyBiZSB0aGUgZW1wdHkgU3Ry
aW5nOyBlbHNlIGxldCBtc2cgYmUgVG9TdHJpbmcobXNnKS4KICAgICAvLyA3LiBJZiBtc2cgaXMg
dW5kZWZpbmVkLCB0aGVuIGxldCBtc2cgYmUgdGhlIGVtcHR5IFN0cmluZzsgZWxzZSBsZXQgbXNn
IGJlIFRvU3RyaW5nKG1zZykuCi0gICAgVVN0cmluZyBtZXNzYWdlU3RyaW5nOworICAgIFN0cmlu
ZyBtZXNzYWdlU3RyaW5nOwogICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IG1lc3NhZ2VTdHJpbmcgPSAiIjsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggY2U2M2FlOWFmNGVmNDY0
N2M1YzE3NjYzN2NjNDNjZmRkODdmOGI5NC4uODNhNGUwM2MzYjNiNzA0MzUzNDk5YzRjYzczZjIx
YmE0YmZhY2E5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU05vdEFuT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTA3
LDEzICsxMDYsMTMgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewotICAg
IFVTdHJpbmcgbWVzc2FnZShtYWtlVVN0cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRl
bnQudXN0cmluZygpKSk7CisgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogIiwgaWRlbnQudXN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogfQogICAgIAogSlNPYmplY3QqIGNyZWF0ZUludmFs
aWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogb3AsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlVVN0cmluZygiJyIsIHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIicgaXMgbm90IGEgdmFsaWQgYXJndW1lbnQg
Zm9yICciLCBvcCwgIiciKTsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygi
JyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIicgaXMgbm90IGEgdmFsaWQg
YXJndW1lbnQgZm9yICciLCBvcCwgIiciKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbi0+
aXNFcnJvckluc3RhbmNlKCkpOwogICAgIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNl
cHRpb24pLT5zZXRBcHBlbmRTb3VyY2VUb01lc3NhZ2UoKTsKQEAgLTEyMiw3ICsxMjEsNyBAQCBK
U09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBj
aGFyKiBvcCwgSlNWYWx1ZSB2YWx1ZQogCiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9y
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJpbmcgZXJy
b3JNZXNzYWdlID0gbWFrZVVTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksICInIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CisgICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICIn
IGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOwogICAgIEFTU0VSVChleGNlcHRpb24tPmlz
RXJyb3JJbnN0YW5jZSgpKTsKICAgICBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0
aW9uKS0+c2V0QXBwZW5kU291cmNlVG9NZXNzYWdlKCk7CkBAIC0xMzEsNyArMTMwLDcgQEAgSlNP
YmplY3QqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKIAogSlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VV
U3RyaW5nKCInIiwgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiJyBpcyBub3Qg
YSBmdW5jdGlvbiIpOworICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCInIiwg
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiJyBpcyBub3QgYSBmdW5jdGlvbiIp
OwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFuY2UoKSk7CiAgICAg
c3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiktPnNldEFwcGVuZFNvdXJjZVRv
TWVzc2FnZSgpOwpAQCAtMTQwLDE2ICsxMzksMTYgQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5j
dGlvbkVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIAogSlNPYmplY3QqIGNy
ZWF0ZU5vdEFuT2JqZWN0RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewot
ICAgIFVTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVVTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyksICInIGlzIG5vdCBhbiBvYmplY3QiKTsKKyAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiJyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSwgIicgaXMgbm90IGFuIG9iamVjdCIpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24g
PSBjcmVhdGVUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKTsKICAgICBBU1NFUlQoZXhjZXB0
aW9uLT5pc0Vycm9ySW5zdGFuY2UoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+
KGV4Y2VwdGlvbiktPnNldEFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpOwogICAgIHJldHVybiBleGNl
cHRpb247CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25t
ZW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcHJvcGVydHlOYW1lKQorSlNPYmpl
Y3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVmZXJl
bmNlRXJyb3IoZXhlYywgbWFrZVVTdHJpbmcoIlN0cmljdCBtb2RlIGZvcmJpZHMgaW1wbGljaXQg
Y3JlYXRpb24gb2YgZ2xvYmFsIHByb3BlcnR5ICciLCBwcm9wZXJ0eU5hbWUsICInIikpOworICAg
IHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJTdHJpY3QgbW9k
ZSBmb3JiaWRzIGltcGxpY2l0IGNyZWF0aW9uIG9mIGdsb2JhbCBwcm9wZXJ0eSAnIiwgcHJvcGVy
dHlOYW1lLCAiJyIpKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCA3YmZmZDI5NGIzNTY4NzRmYWMxNGJkOTQ0
Y2M0YzkyYmIyYzdiNzI4Li5kMmRhYWEwNDRhYWQ1MDkzOTdhNzNmOTRkYWNiYzNkM2Y0MDlkNGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oCkBAIC00OSw3ICs0OSw3IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RBbk9iamVjdEVycm9yKEV4
ZWNTdGF0ZSosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RB
Q29uc3RydWN0b3JFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVO
b3RBRnVuY3Rpb25FcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLUpTT2JqZWN0KiBjcmVhdGVF
cnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKK0pTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYpOwogCiBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9y
KEV4ZWNTdGF0ZSopOwogSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRl
eCA5NmI4YjkzM2E1NzVjMzNjMjI4YTQ5OTM5Y2MwODlhYjkwMmVlM2M5Li40YWM1Zjg4MTM4MDlk
ZjgwODE3YmQ1MDA1ZmQzMzhmODkwMzc3MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgotI2luY2x1ZGUg
IlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTY2OSwxNiAr
NjY5LDE2IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xv
YmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvCiAgICAgcmV0dXJuIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb25OYW1lLCBmdW5jdGlv
bk5hbWUsIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFt
ZXRlcnMoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0
TGluZSgpKTsKIH0KIAotVVN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkg
Y29uc3QKK1N0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKIHsK
ICAgICBGdW5jdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMgPSAqbV9wYXJhbWV0ZXJzOwotICAg
IFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAg
IGZvciAoc2l6ZV90IHBvcyA9IDA7IHBvcyA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK3Bvcykgewog
ICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiwgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnNbcG9zXS51c3RyaW5n
KCkpOwogICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1VTdHJpbmcoKTsKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKaW5kZXggMzhjMzlmOTE0ZDQ2NmFhMGVmM2YyMmU4NTFjN2JmYjBiZjll
NDgyZS4uZTEzZDI4ZTVkODRkNjQ5ZDNkZDhhYjYxMDIxMzkyYTIzMTBiZDljYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMzIwLDcgKzMyMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIHsg
cmV0dXJuIG1fc291cmNlOyB9CiAgICAgICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJRCgpOyB9Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHNv
dXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
cHJvdmlkZXIoKS0+dXJsKCk7IH0KICAgICAgICAgaW50IGxpbmVObygpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3RMaW5lOyB9CiAgICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdExpbmU7IH0KIApAQCAtNjYxLDcgKzY2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lVmFsdWUuZ2V0KCk7
IH0KICAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLT5zaXplKCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKICAgICAgICAgdW5zaWduZWQg
Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9udW1DYXB0dXJlZFZhcmlh
YmxlczsgfQotICAgICAgICBVU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3Q7CisgICAgICAgIFN0
cmluZyBwYXJhbVN0cmluZygpIGNvbnN0OwogICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAKICAgICAg
ICAgdm9pZCBjbGVhckNvZGVJZk5vdENvbXBpbGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCA3ZjgyYTc0
Y2UwMGUwYzAyODk1ZjNiYjg0YzRmZjk4MmZjNDgzOWFmLi4wYjk1M2ZkOTZlNTI4ZjQ0Y2EzZGNm
ZDYxYmJkNmQ3ZTA0MDMxZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzAsOCArMzAsNyBAQAogI2luY2x1
ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKLSNp
bmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTgwLDI1ICs3OSwyNSBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4y
IFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlz
dCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBz
b3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCitKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQogewog
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgIkZ1bmN0aW9uIGNvbnN0cnVjdG9y
IGlzIGRpc2FibGVkIikpOwogICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291
cmNlVVJMLCBwb3NpdGlvbik7CiB9CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBw
aW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9u
TmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0
aW9uKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJn
TGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICAvLyBGdW5j
dGlvbnMgbmVlZCB0byBoYXZlIGEgc3BhY2UgZm9sbG93aW5nIHRoZSBvcGVuaW5nIHsgZHVlIHRv
IGZvciB3ZWIgY29tcGF0aWJpbGl0eQogICAgIC8vIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAKICAgICAvLyBXZSBhbHNvIG5lZWQgXG4gYmVmb3JlIHRo
ZSBjbG9zaW5nIH0gdG8gaGFuZGxlIC8vIGNvbW1lbnRzIGF0IHRoZSBlbmQgb2YgdGhlIGxhc3Qg
bGluZQotICAgIFVTdHJpbmcgcHJvZ3JhbTsKKyAgICBTdHJpbmcgcHJvZ3JhbTsKICAgICBpZiAo
YXJncy5pc0VtcHR5KCkpCiAgICAgICAgIHByb2dyYW0gPSAiKGZ1bmN0aW9uKCkgeyBcbn0pIjsK
ICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFtID0gbWFrZVVT
dHJpbmcoIihmdW5jdGlvbigpIHsgIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksICJcbn0pIik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24o
KSB7ICIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59KSIpOwog
ICAgIGVsc2UgewotICAgICAgICBVU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBhcmdzLnNpemUoKSAtIDE7
IGkrKykgewpAQCAtMTA4LDcgKzEwNyw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqCiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIpIHsgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3Mu
YXQoYXJncy5zaXplKCkgLSAxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXG59KSIpOwotICAgICAgICBwcm9ncmFtID0gYnVpbGRlci50b1VT
dHJpbmcoKTsKKyAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAK
ICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KTsKQEAgLTEyNyw3ICsxMjYsNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGlu
Z0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iagogLy8gRUNNQSAx
NS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBB
cmdMaXN0JiBhcmdzKQogewotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgImFub255bW91cyIpLCBVU3RyaW5nKCks
IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOworICAgIHJldHVybiBjb25zdHJ1Y3RG
dW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgImFub255
bW91cyIpLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDMxOTg2YjcwYTczYzY1M2QxODhkYjI2ZjRi
MTdlZTEwNGQwNTIxMjcuLjk5ZWFmZWU4MGYyYTVlOTA1MmZmYzY4ZDg1NGQxYTkyNmJiMzc0YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmgKQEAgLTU2LDEwICs1NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsKIAot
ICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKKyAgICBKU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKICAgICBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0
Jik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFVTdHJpbmcmLCBjb25zdCBXVEY6
OlRleHRQb3NpdGlvbiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApp
bmRleCA0MjA2Y2YyYjBmMmNmOTYyODU2ZGY2OTQxN2RhYzBjMDg4OWM5OWNiLi5hMjAwZGNhYzgx
OGQ5OWY0YzNlYjVmY2QyOTNlNWUxMGQzMTcxMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IEZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0CiB7CiB9CiAKLXZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKK3Zv
aWQgRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwpAQCAtODMsNyArODMsNyBAQCBDYWxsVHlw
ZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxE
YXRhKQogLy8gRnVuY3Rpb25zCiAKIC8vIENvbXBhdGliaWxpdHkgaGFjayBmb3IgdGhlIE9wdGlt
b3N0IEphdmFTY3JpcHQgbGlicmFyeS4gKFNlZSA8cmRhcjovL3Byb2JsZW0vNjU5NTA0MD4uKQot
c3RhdGljIGlubGluZSB2b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFVTdHJpbmcmIGZ1bmN0
aW9uQm9keSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChTdHJp
bmcmIGZ1bmN0aW9uQm9keSkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25Cb2R5WzBdID09ICd7Jyk7
CiAgICAgQVNTRVJUKGZ1bmN0aW9uQm9keVtmdW5jdGlvbkJvZHkubGVuZ3RoKCkgLSAxXSA9PSAn
fScpOwpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW5zZXJ0U2VtaWNvbG9u
SWZOZWVkZWQoVVN0cmluZyYgZnVuY3Rpb25Cb2R5KQogICAgICAgICBVQ2hhciBjaCA9IGZ1bmN0
aW9uQm9keVtpXTsKICAgICAgICAgaWYgKCFMZXhlcjxVQ2hhcj46OmlzV2hpdGVTcGFjZShjaCkg
JiYgIUxleGVyPFVDaGFyPjo6aXNMaW5lVGVybWluYXRvcihjaCkpIHsKICAgICAgICAgICAgIGlm
IChjaCAhPSAnOycgJiYgY2ggIT0gJ30nKQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uQm9keSA9
IG1ha2VVU3RyaW5nKGZ1bmN0aW9uQm9keS5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBpICsgMSks
ICI7IiwgZnVuY3Rpb25Cb2R5LnN1YnN0cmluZ1NoYXJpbmdJbXBsKGkgKyAxLCBmdW5jdGlvbkJv
ZHkubGVuZ3RoKCkgLSAoaSArIDEpKSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb25Cb2R5ID0g
bWFrZVN0cmluZyhmdW5jdGlvbkJvZHkuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgaSArIDEpLCAi
OyIsIGZ1bmN0aW9uQm9keS5zdWJzdHJpbmdTaGFyaW5nSW1wbChpICsgMSwgZnVuY3Rpb25Cb2R5
Lmxlbmd0aCgpIC0gKGkgKyAxKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTA2LDcgKzEwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5h
bWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwotICAg
ICAgICBVU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5n
KCk7CisgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50
b1N0cmluZygpOwogICAgICAgICBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChzb3VyY2VTdHJpbmcp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
ZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCIsIGV4ZWN1dGFibGUt
PnBhcmFtU3RyaW5nKCksICIpICIsIHNvdXJjZVN0cmluZykpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCmluZGV4IDU5NDI3
OTEyYjYzN2IyOGYxOGY4YTA3Yjg3YTljNWE1MmU1NTQ3OTAuLjlmZmViZjdhOWVkZDUwN2Q2MjNj
ZWUzNmEwZTM1NjkzM2E4NTI1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgVVN0cmlu
ZyYgbmFtZSk7CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVyLmgKaW5kZXggMTk2ZmRjYTIzZjU5YjhiYjM5YWRjYjM3MWE1MDBiN2Y0
NGE3MDAxMC4uZTUyYjVhOWRhNmI0NmFhZmMwNTQ1OGJhYzg4OTIzYmY1MjViNmUwMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMjMsOSArMjMsOSBA
QAogCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNp
ZmljLmg+Ci0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRh
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTQgKzQ1LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRk
KGdsb2JhbERhdGEsIGNoYXJhY3RlcnMpKSB7IH0KIAogICAgICAgICBJZGVudGlmaWVyKEV4ZWNT
dGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZChleGVjLCByZXApKSB7
IH0KLSAgICAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMp
IDogbV9zdHJpbmcoYWRkKGV4ZWMsIHMuaW1wbCgpKSkgeyB9CisgICAgICAgIElkZW50aWZpZXIo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHMu
aW1wbCgpKSkgeyB9CiAKICAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChnbG9iYWxEYXRh
LCBzLCBsZW5ndGgpKSB7IH0KICAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChnbG9iYWxE
YXRhLCBzLCBsZW5ndGgpKSB7IH0KICAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcmVw
KSkgeyB9IAotICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKSB7IH0K
KyAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmlu
ZyYgcykgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKSB7IH0KIAotICAgICAg
ICBjb25zdCBVU3RyaW5nJiB1c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAg
ICAgICAgLy8gRklYTUU6IGZpeCB0aGlzIG5hbWUuCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgICAgIFN0cmluZ0ltcGwqIGlt
cGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pbXBsKCk7IH0KICAgICAgICAgCiAgICAgICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY2hhcmFj
dGVycygpOyB9CkBAIC05MSw3ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRl
KiwgY29uc3QgY2hhciopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVVN0cmluZyBtX3N0cmlu
ZzsKKyAgICAgICAgU3RyaW5nIG1fc3RyaW5nOwogCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KICAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDMyX3QgdG9VSW50
MzJGcm9tQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoLCBib29sJiBvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmluZGV4IDZkZTI5MmE1MzJmNDdhYzI4NWU0ZTYzMzU4
ZTY4MTQxYzc0YTlkMGYuLjZlN2VkZGJmMTFmMjQwMzVkZjhhZjQ3OTBmZmE1MTI0M2E2NGRmYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCi0jaW5j
bHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0
Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCA5ODVhYjczYjA0
N2UwYzY2ZjRjNTc2NGYwNzE5NDBkNDk0NGRhNzNlLi4yMTZkY2UzNzk1NWZkNDc3OWU1YTVkNDk3
YTQwNTJmMTc3ZTM1NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBJbnRlcm5hbEZ1bmN0aW9u
OjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydQogewogfQogCi12b2lkIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKK3ZvaWQgSW50ZXJu
YWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTQ3LDE5ICs0NywxOSBAQCB2b2lk
IEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgbgogICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRh
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCi1j
b25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKK2Nv
bnN0IFN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgcmV0dXJuIGFzU3RyaW5nKGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CiB9CiAKLWNv
bnN0IFVTdHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVj
KQorY29uc3QgU3RyaW5nIEludGVybmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsK
ICAgICAKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZyhkaXNwbGF5TmFtZSkpCiAg
ICAgICAgIHJldHVybiBhc1N0cmluZyhkaXNwbGF5TmFtZSktPnRyeUdldFZhbHVlKCk7CiAgICAg
Ci0gICAgcmV0dXJuIFVTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIENhbGxU
eXBlIEludGVybmFsRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJikKQEAg
LTY4LDkgKzY4LDkgQEAgQ2FsbFR5cGUgSW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKQogICAgIHJldHVybiBDYWxsVHlwZU5vbmU7CiB9CiAKLWNvbnN0IFVT
dHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSog
ZXhlYykKK2NvbnN0IFN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5h
bWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGNvbnN0IFVTdHJpbmcgZXhwbGljaXROYW1lID0g
ZGlzcGxheU5hbWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIGV4cGxpY2l0TmFtZSA9IGRpc3Bs
YXlOYW1lKGV4ZWMpOwogICAgIAogICAgIGlmICghZXhwbGljaXROYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAppbmRleCAxNTBmYjc1OWVkMDlkNGMzMDA3ZDk3YTVi
OGEwMjIwN2IwYmUzMDkxLi5lMjZiOWY5NTNmZThhNGQ3NzJlZmU0OTIzOTIyNGQ3MmM3ZGM1ZDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKLSAgICAgICAgY29uc3Qg
VVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKLSAgICAgICAgY29uc3QgVVN0cmluZyBj
YWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IFN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgY29uc3QgU3RyaW5n
IGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOworICAgICAgICBjb25zdCBTdHJpbmcgY2FsY3VsYXRl
ZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pIAogICAgICAgICB7IApAQCAtNTEsNyArNTEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5n
JiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgICAgIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAKaW5kZXgg
ODUxNzA4NWRmZWUyNjhmM2Y0Zjc5NmI4MTY0MjBkNzI3YTI0YzlmMi4uY2QxZDgzMGZlMjRhM2Ix
MzI2MDJmODczZDhmNWFmMTBhOGJhZjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2lu
Y2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIK
LSNpbmNsdWRlICJVU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDcyMTg2MDRkMTEyYzc4YjU3MTJiNDU0
NDM4ZjI5YjEwYjUyMDg0MzguLmYyNGRjNzUxZGJjODkxZmY2YmY0MWNhOWE4ODZlZmJmMWJhZDgy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xNDc5
LDcgKzE0NzksNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgIC8v
IGEgdG9TdHJpbmcgY2FsbCByYWlzZXMgYW4gZXhjZXB0aW9uLgogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7IGkrKykKLSAgICAgICAgdmFs
dWVzW2ldLnNlY29uZCA9IHZhbHVlc1tpXS5maXJzdC50b1VTdHJpbmdJbmxpbmUoZXhlYyk7Cisg
ICAgICAgIHZhbHVlc1tpXS5zZWNvbmQgPSB2YWx1ZXNbaV0uZmlyc3QudG9XVEZTdHJpbmdJbmxp
bmUoZXhlYyk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgSGVh
cDo6aGVhcCh0aGlzKS0+cG9wVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCAzZjY0MzA4
NzFkMmNhNjliZmE4MGVkYmNlY2UyZjlhODcwNjQxOWMzLi43NTQwZDQzOTQ4MWFkZDIwNDZjZjdl
YjEzYmE4MTM4ZGUwNDgyMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwg
Y29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncykpOwogfQogCi1KU0JvdW5kRnVuY3Rp
b24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5k
VGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUp
CitKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9u
LCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAg
Q29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRhKHRhcmdl
dEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBKU0JvdW5kRnVu
Y3Rpb246OkpTQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiB7CiB9CiAKLXZvaWQgSlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5n
dGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCit2b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYywgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uaAppbmRleCBkZDEyMjkyNzJiZjYwNDg2NzQ3MTE4MjgyYjg3OWM1ODA5NWQxMDBmLi41MDY3
ZDE5NGNlOWM0OTQyNjg2NzkwNzk3ZDEzZGNjOWQ4YTFmNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQCBj
bGFzcyBKU0JvdW5kRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBj
cmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rp
b24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBjb25zdCBVU3Ry
aW5nJik7CisgICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhp
cywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMg
Ym9vbCBoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUg
cHJvdG8pOwogCkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgSlNC
b3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNP
YmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFy
Z3MpOwogICAgIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgTmF0aXZlRXhl
Y3V0YWJsZSosIGludCwgY29uc3QgVVN0cmluZyYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCwgY29uc3QgU3RyaW5nJik7CiAKICAg
ICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0RnVuY3Rpb247CiAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+IG1fYm91bmRUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKaW5kZXggNjFlODU0OWVlOTMwODM3NWViNmI4MjhkMGQ0ZjM5Nzc1MmZjMmZiMS4u
ZmZiNzZmZjk1NzYzYjY2YzAyODRhZmU2NzVkY2M3NGYxNjZiZTZlNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgSlNDZWxs
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwoKTsKIH0K
IAotYm9vbCBKU0NlbGw6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmc3RyaW5n
VmFsdWUpIGNvbnN0Citib29sIEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
aW5nJiBzdHJpbmdWYWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIWlzU3RyaW5nKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTQ2LDkgKzQ2LDkgQEAgYm9vbCBKU0NlbGw6OmdldFN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmc3RyaW5nVmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVVTdHJpbmcgSlNDZWxsOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAorU3RyaW5nIEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAg
ICByZXR1cm4gaXNTdHJpbmcoKSA/IHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcykt
PnZhbHVlKGV4ZWMpIDogVVN0cmluZygpOworICAgIHJldHVybiBpc1N0cmluZygpID8gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dmFsdWUoZXhlYykgOiBTdHJpbmcoKTsKIH0K
IAogSlNPYmplY3QqIEpTQ2VsbDo6Z2V0T2JqZWN0KCkKQEAgLTE3OCwxMCArMTc4LDEwIEBAIHZv
aWQgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVVT
dHJpbmcgSlNDZWxsOjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKQorU3RyaW5nIEpTQ2VsbDo6
Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVVN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogY29uc3Qg
Y2hhciogSlNDZWxsOjpjbGFzc05hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAppbmRleCAxMzBmOTcwNmQ1ZTZlZDliMmQwMTJlOWRmOGE5MTE4Y2U5NzU4MGQ4Li5lZjA2
YjFlY2ZiZDcxMmE3MzQwMjU1OTRiYzNlOGJhODRhZjBhNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaApAQCAtODksOCArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgY29uc3QgY2hhciogY2xhc3NOYW1lKCk7CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyB0
aGUgdmFsdWUuCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBV
U3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBp
ZiBub3QgYSBzdHJpbmcKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRTdHJpbmco
RXhlY1N0YXRlKiwgU3RyaW5nJikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBh
IHN0cmluZwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogZ2V0T2JqZWN0KCk7
IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICBjb25zdCBKU09iamVjdCogZ2V0T2Jq
ZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICAKQEAgLTEyNiw3
ICsxMjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gY2FsbCB0aGlzIGZ1bmN0aW9u
LCBub3QgaXRzIHNsb3dlciB2aXJ0dWFsIGNvdW50ZXJwYXJ0LiAoRm9yIGludGVnZXIKICAgICAg
ICAgLy8gcHJvcGVydHkgbmFtZXMsIHdlIHdhbnQgYSBzaW1pbGFyIGludGVyZmFjZSB3aXRoIGFw
cHJvcHJpYXRlIG9wdGltaXphdGlvbnMuKQogICAgICAgICBib29sIGZhc3RHZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAg
SlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwor
ICAgICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmKTsKIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCiAgICAg
ICAgIHsKQEAgLTE2MSw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VS
VCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyBV
U3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOworICAgICAgICBzdGF0aWMgU3RyaW5n
IGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbnN0
YW5jZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJv
cGVydHkpOwogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXRE
aXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpAQCAtMjIzLDE3ICsyMjMsMTcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNPYmplY3QoKTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBVU3RyaW5nJiBzKSBjb25zdAorICAgIGlubGluZSBib29sIEpTVmFsdWU6OmdldFN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyYgcykgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+Z2V0U3RyaW5nKGV4ZWMsIHMpOwogICAgIH0KIAotICAg
IGlubGluZSBVU3RyaW5nIEpTVmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CisgICAgaW5saW5lIFN0cmluZyBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldFN0cmlu
ZyhleGVjKSA6IFVTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCkt
PmdldFN0cmluZyhleGVjKSA6IFN0cmluZygpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBCYXNlPiBVU3RyaW5nIEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6Z2V0U3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZT4g
U3RyaW5nIEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6Z2V0U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBqc1ZhbHVlKCkuZ2V0U3RyaW5n
KGV4ZWMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0
aC5jcHAKaW5kZXggZmNmMWM0MzQ1ZDFiODk2N2IyODVkODg1YjdhNmY2NWZkNTU5YjQ3Yy4uZjkz
NDM5MTYwOGZkZTVlMWY4MWU3ZGY0YmFiNDkwZDljNDQzZWZiMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCBkb3Vi
bGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IGNoYXIqIGRhdGVTdAogICAgIHJldHVybiBtcyAtIChvZmZzZXQgKiBXVEY6Om1zUGVy
TWludXRlKTsKIH0KIAotZG91YmxlIHBhcnNlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVT
dHJpbmcmIGRhdGUpCitkb3VibGUgcGFyc2VEYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBkYXRlKQogewogICAgIGlmIChkYXRlID09IGV4ZWMtPmdsb2JhbERhdGEoKS5jYWNoZWRE
YXRlU3RyaW5nKQogICAgICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZERhdGVT
dHJpbmdWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0ZU1hdGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaApp
bmRleCBjN2ZiNWE5NzVkMTcyYjAxNzI5MDQxMGY5ZmFjNGY3OTlhYmE1MTllLi5hNmRkOTZmOTll
OWIwM2NhMzAzNTRjNTAwMTVlMTgxN2UyYzZiN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRlTWF0aC5oCkBAIC00OSwxMyArNDksMTIgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBFeGVjU3RhdGU7Ci1jbGFzcyBVU3RyaW5nOwogCiB2b2lkIG1zVG9HcmVnb3Jp
YW5EYXRlVGltZShFeGVjU3RhdGUqLCBkb3VibGUsIGJvb2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlh
bkRhdGVUaW1lJik7CiBkb3VibGUgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKEV4ZWNTdGF0ZSosIGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiwgZG91YmxlLCBib29sIGlucHV0SXNVVEMpOwogZG91Ymxl
IGdldFVUQ09mZnNldChFeGVjU3RhdGUqKTsKIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1p
bmF0ZWRDaGFyYWN0ZXJzKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwotZG91
YmxlIHBhcnNlRGF0ZShFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Citkb3VibGUgcGFyc2VE
YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4
IDY5NGQ4MzhlZWRiODgwOGI4M2MxYTAzMjVhNmFjMDUzMDMzNzRlZjUuLjgwODJmNGQ0ZjcyMDQw
NTgyYWZjM2I5YzdmNDk3YzAxNmQ4ZWRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6
aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdAogICAgIHJldHVybiBpc0hvc3RGdW5jdGlv
bigpOwogfQogCi1KU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5n
JiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCitKU0Z1bmN0aW9uKiBKU0Z1bmN0
aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1
Y3RvcikKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwogI2lmICFFTkFCTEUo
SklUKQpAQCAtOTIsNyArOTIsNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYQogewogfQogCi12
b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKK3Zv
aWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMTI1LDI5ICsxMjUsMjkgQEAgU3RydWN0dXJlKiBKU0Z1
bmN0aW9uOjpjYWNoZUluaGVyaXRvcklEKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gbV9j
YWNoZWRJbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotY29uc3QgVVN0cmluZyYgSlNGdW5jdGlvbjo6
bmFtZShFeGVjU3RhdGUqIGV4ZWMpCitjb25zdCBTdHJpbmcmIEpTRnVuY3Rpb246Om5hbWUoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiBhc1N0cmluZyhnZXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSkpLT50cnlH
ZXRWYWx1ZSgpOwogfQogCi1jb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSogZXhlYykKK2NvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZShFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5
TmFtZSk7CiAgICAgCiAgICAgaWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmcoZGlzcGxheU5h
bWUpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlHZXRWYWx1ZSgp
OwogICAgIAotICAgIHJldHVybiBVU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQog
Ci1jb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCitjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1l
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBjb25zdCBVU3RyaW5nIGV4cGxpY2l0TmFtZSA9IGRp
c3BsYXlOYW1lKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBleHBsaWNpdE5hbWUgPSBkaXNwbGF5
TmFtZShleGVjKTsKICAgICAKICAgICBpZiAoIWV4cGxpY2l0TmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCi0gICAgY29uc3QgVVN0cmluZyBhY3R1YWxO
YW1lID0gbmFtZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhl
Yyk7CiAgICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gYWN0dWFsTmFtZTsKICAgICAKQEAgLTQ1NSw3ICs0NTUsNyBAQCBDb25z
dHJ1Y3RUeXBlIEpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsLCBDb25z
dHJ1Y3REYXRhJiBjb25zdHJ1YwogfQogICAgIAogCi1VU3RyaW5nIGdldENhbGN1bGF0ZWREaXNw
bGF5TmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIG9iamVjdCkKK1N0cmluZyBn
ZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBv
YmplY3QpCiB7CiAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5jYWxjdWxhdGVk
RGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAppbmRleCA1NmZhZjAwZGU1ZWI4YjA0Y2QxMTg1MzE0MWE1MmYxMjlkNWE5Yjdh
Li5jZGUwYzBiNGQ1MTE1MTJkNmRiNmFjZmE3MmIyYzRlOTg4NWY2ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKENhbGxG
cmFtZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldENhbGN1
bGF0ZWREaXNwbGF5TmFtZShDYWxsRnJhbWUqLCBKU09iamVjdCopOwogICAgIAogICAgIGNsYXNz
IEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9u
LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0
b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBj
YWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgc3RhdGljIEpTRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCiAgICAgICAgIHsKQEAgLTY1LDkgKzY1LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcmIG5h
bWUoRXhlY1N0YXRlKik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcg
ZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRl
ZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25z
dCBTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNv
bnN0IFN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgY29uc3QgU3RyaW5n
IGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKIAogICAgICAgICBTY29wZUNoYWlu
Tm9kZSogc2NvcGUoKQogICAgICAgICB7CkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUq
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICAKLSAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50
IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSk7CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGNh
Y2hlSW5oZXJpdG9ySUQoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCA4OTNkYmJhZTU5OThmZWE3NTg4ODlkMzA1ODU4
Zjg0YTZiNzNhM2Q0Li4zZThkNDQ5MWQ2OWQ3NDgxZTMzMzQ5NTRhM2Y1M2I1Mjk1MTZjYjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAg
LTM5MCw3ICszOTAsNyBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6cmVzZXREYXRlQ2FjaGUoKQogewog
ICAgIGNhY2hlZFVUQ09mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRf
TmFOKCk7CiAgICAgZHN0T2Zmc2V0Q2FjaGUucmVzZXQoKTsKLSAgICBjYWNoZWREYXRlU3RyaW5n
ID0gVVN0cmluZygpOworICAgIGNhY2hlZERhdGVTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBjYWNo
ZWREYXRlU3RyaW5nVmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpOwogICAgIGRhdGVJbnN0YW5jZUNhY2hlLnJlc2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IGIxYjdhZDg3MDYyYzgxYzM4ZmNl
ZGVhYTY4OWViNGE1MGQyNTU2NTMuLjBkZGMyNGQ4Y2M1NjliMGQ2MWZlYWUxMjEzOWNiYmY5ZTk5
MTI1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
CkBAIC03Niw3ICs3Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFJlZ0V4cENhY2hl
OwogICAgIGNsYXNzIFN0cmluZ2lmaWVyOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKLSAgICBjbGFz
cyBVU3RyaW5nOwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBjbGFzcyBSZWdFeHA7
CiAjZW5kaWYKQEAgLTM2Niw3ICszNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZG91
YmxlIGNhY2hlZFVUQ09mZnNldDsKICAgICAgICAgRFNUT2Zmc2V0Q2FjaGUgZHN0T2Zmc2V0Q2Fj
aGU7CiAgICAgICAgIAotICAgICAgICBVU3RyaW5nIGNhY2hlZERhdGVTdHJpbmc7CisgICAgICAg
IFN0cmluZyBjYWNoZWREYXRlU3RyaW5nOwogICAgICAgICBkb3VibGUgY2FjaGVkRGF0ZVN0cmlu
Z1ZhbHVlOwogCiAgICAgICAgIGludCBtYXhSZWVudHJ5RGVwdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
aW5kZXggZTgwMTdiOTA0M2JlZmM3MzMxNjI0MzdjNjM2YWRiYWUzYzFkMTQ2Ny4uNzQxZjBhYmY0
NDFjNmFmMjI3YTZlYThkZDY5MDczZTM2ZTE4MDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAt
MzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIKICNpbmNsdWRlICJOb2Rl
cy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgotI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAj
aW5jbHVkZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L1VURjguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0
aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDaGFyVHlwZSogY2hhcmFj
dGVycywgaW50IGxlbmd0aCwgYwogc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciogZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJpY3QpCiB7CiAgICAgSlNTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAKICAgICBpZiAoc3RyLmlz
OEJpdCgpKQogICAgICAgICByZXR1cm4gZGVjb2RlKGV4ZWMsIHN0ci5jaGFyYWN0ZXJzOCgpLCBz
dHIubGVuZ3RoKCksIGRvTm90VW5lc2NhcGUsIHN0cmljdCk7CkBAIC0yMzIsNyArMjMyLDcgQEAg
ZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgsIGludCBy
YWRpeCkKIC8vIEVTNS4xIDE1LjEuMi4yCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBB
TFdBWVNfSU5MSU5FCi1zdGF0aWMgZG91YmxlIHBhcnNlSW50KGNvbnN0IFVTdHJpbmcmIHMsIGNv
bnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgcmFkaXgpCitzdGF0aWMgZG91YmxlIHBhcnNlSW50KGNv
bnN0IFN0cmluZyYgcywgY29uc3QgQ2hhclR5cGUqIGRhdGEsIGludCByYWRpeCkKIHsKICAgICAv
LyAxLiBMZXQgaW5wdXRTdHJpbmcgYmUgVG9TdHJpbmcoc3RyaW5nKS4KICAgICAvLyAyLiBMZXQg
UyBiZSBhIG5ld2x5IGNyZWF0ZWQgc3Vic3RyaW5nIG9mIGlucHV0U3RyaW5nIGNvbnNpc3Rpbmcg
b2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzIG5vdCBhCkBAIC0zMTMsNyArMzEzLDcgQEAg
c3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBjb25zdCBDaGFyVHlwZSog
ZGF0YSwgaW50IHJhZGl4KQogICAgIHJldHVybiBzaWduICogbnVtYmVyOwogfQogCi1zdGF0aWMg
ZG91YmxlIHBhcnNlSW50KGNvbnN0IFVTdHJpbmcmIHMsIGludCByYWRpeCkKK3N0YXRpYyBkb3Vi
bGUgcGFyc2VJbnQoY29uc3QgU3RyaW5nJiBzLCBpbnQgcmFkaXgpCiB7CiAgICAgaWYgKHMuaXM4
Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChzLCBzLmNoYXJhY3RlcnM4KCksIHJhZGl4
KTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgZG91YmxlIHRvRG91YmxlKGNvbnN0IENoYXJU
eXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzaXplKQogfQogCiAvLyBTZWUgZWNtYS0yNjIgOS4z
LjEKLWRvdWJsZSBqc1RvTnVtYmVyKGNvbnN0IFVTdHJpbmcmIHMpCitkb3VibGUganNUb051bWJl
cihjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHMubGVuZ3RoKCk7CiAK
QEAgLTQ1MCw3ICs0NTAsNyBAQCBkb3VibGUganNUb051bWJlcihjb25zdCBVU3RyaW5nJiBzKQog
ICAgIHJldHVybiB0b0RvdWJsZShzLmNoYXJhY3RlcnMxNigpLCBzaXplKTsKIH0KIAotc3RhdGlj
IGRvdWJsZSBwYXJzZUZsb2F0KGNvbnN0IFVTdHJpbmcmIHMpCitzdGF0aWMgZG91YmxlIHBhcnNl
RmxvYXQoY29uc3QgU3RyaW5nJiBzKQogewogICAgIHVuc2lnbmVkIHNpemUgPSBzLmxlbmd0aCgp
OwogCkBAIC01MDUsNyArNTA1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCF4LmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoeCk7CiAKLSAgICBVU3RyaW5nIHMgPSB4LnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHgudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogCiAgICAgaWYgKHMuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0ZXJhbFBh
cnNlcjxMQ2hhcj4gcHJlcGFyc2VyKGV4ZWMsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwg
Tm9uU3RyaWN0SlNPTik7CkBAIC01NDgsNyArNTQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAg
IC8vIElmIFRvU3RyaW5nIHRocm93cywgd2Ugc2hvdWxkbid0IGNhbGwgVG9JbnQzMi4KLSAgICBV
U3RyaW5nIHMgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IHMgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCkBAIC02MTUsNyArNjE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgIiorLS4vQF8iOwogCiAg
ICAgSlNTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoc3Ry
LmlzOEJpdCgpKSB7CiAgICAgICAgIGNvbnN0IExDaGFyKiBjID0gc3RyLmNoYXJhY3RlcnM4KCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBzdHIubGVuZ3RoKCk7IGsrKywgYysr
KSB7CkBAIC02NTMsOCArNjUzLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IFN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaW50IGsgPSAwOwogICAgIGludCBsZW4gPSBzdHIubGVuZ3RoKCk7CiAgICAgCkBA
IC02OTksNyArNjk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
VW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBidWlsZGVyLnRvVVN0cmluZygpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBidWlsZGVyLnRvU3RyaW5n
KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggODgzM2JmNmQwY2Yw
MzM2YzQxZWU0MmI2NWI0YmVlZjc2ZjdkNmNkYS4uNzU3YzlkY2FjNjZkNDEwYTc2NGI2ODUwMWIz
YTBjYzAwZTdhMTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIEFMV0FZU19JTkxJTkUgZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3Qg
Y2hhciogcywgaW50IGxlbmd0aCwgaW50IHJhZGl4KSB7IHJldHVybiBwYXJzZUludE92ZXJmbG93
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoLCByYWRpeCk7IH0KICAg
ICBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCBy
YWRpeCk7CiAgICAgYm9vbCBpc1N0cldoaXRlU3BhY2UoVUNoYXIpOwotICAgIGRvdWJsZSBqc1Rv
TnVtYmVyKGNvbnN0IFVTdHJpbmcmIHMpOworICAgIGRvdWJsZSBqc1RvTnVtYmVyKGNvbnN0IFdU
Rjo6U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGJhODg3ZjNiNGJhNmZhZTA2MGRiYWM4
NzRlYmY1MjVjZjNjZDQxNzQuLjljMDE4OTU3NWUwMzlmYjYwNjFjMzk1NmI5ZDE1MGQ5NWMwMGQ2
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBA
IC0zNiw5ICszNiw4IEBACiAjaW5jbHVkZSAiTG9jYWxTY29wZS5oIgogI2luY2x1ZGUgIkxvb2t1
cC5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCi0jaW5jbHVkZSAiVVN0cmluZ0J1
aWxkZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTk0LDcgKzkzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBKU09i
amVjdCogb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3QuZ2V0KCk7IH0KIAotICAgICAg
ICBib29sIGFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYsIFVTdHJpbmdCdWlsZGVyJik7
CisgICAgICAgIGJvb2wgYXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiwgU3RyaW5nQnVp
bGRlciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTG9jYWw8SlNPYmplY3Q+IG1fb2JqZWN0
OwpAQCAtMTA3LDE3ICsxMDYsMTcgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBIb2xk
ZXI7CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRRdW90ZWRTdHJpbmcoVVN0cmluZ0J1aWxkZXIm
LCBjb25zdCBVU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgYXBwZW5kUXVvdGVkU3RyaW5nKFN0
cmluZ0J1aWxkZXImLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIEpTVmFsdWUgdG9KU09OKEpTVmFs
dWUsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOwogCiAgICAgZW51bSBTdHJp
bmdpZnlSZXN1bHQgeyBTdHJpbmdpZnlGYWlsZWQsIFN0cmluZ2lmeVN1Y2NlZWRlZCwgU3RyaW5n
aWZ5RmFpbGVkRHVlVG9VbmRlZmluZWRWYWx1ZSB9OwotICAgIFN0cmluZ2lmeVJlc3VsdCBhcHBl
bmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJiwgSlNWYWx1ZSwgSlNPYmplY3QqIGhv
bGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJik7CisgICAgU3RyaW5naWZ5
UmVzdWx0IGFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYsIEpTVmFsdWUsIEpT
T2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOwogCiAg
ICAgYm9vbCB3aWxsSW5kZW50KCkgY29uc3Q7CiAgICAgdm9pZCBpbmRlbnQoKTsKICAgICB2b2lk
IHVuaW5kZW50KCk7Ci0gICAgdm9pZCBzdGFydE5ld0xpbmUoVVN0cmluZ0J1aWxkZXImKSBjb25z
dDsKKyAgICB2b2lkIHN0YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJikgY29uc3Q7CiAKICAgICBF
eGVjU3RhdGUqIGNvbnN0IG1fZXhlYzsKICAgICBjb25zdCBMb2NhbDxVbmtub3duPiBtX3JlcGxh
Y2VyOwpAQCAtMTI1LDExICsxMjQsMTEgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzOwogICAgIENhbGxUeXBlIG1fcmVwbGFjZXJD
YWxsVHlwZTsKICAgICBDYWxsRGF0YSBtX3JlcGxhY2VyQ2FsbERhdGE7Ci0gICAgY29uc3QgVVN0
cmluZyBtX2dhcDsKKyAgICBjb25zdCBTdHJpbmcgbV9nYXA7CiAKICAgICBWZWN0b3I8SG9sZGVy
LCAxNj4gbV9ob2xkZXJTdGFjazsKLSAgICBVU3RyaW5nIG1fcmVwZWF0ZWRHYXA7Ci0gICAgVVN0
cmluZyBtX2luZGVudDsKKyAgICBTdHJpbmcgbV9yZXBlYXRlZEdhcDsKKyAgICBTdHJpbmcgbV9p
bmRlbnQ7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaGVscGVyIGZ1
bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ4LDcgKzE0Nyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB1bndyYXBCb3hlZFByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgaW5s
aW5lIFVTdHJpbmcgZ2FwKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzcGFjZSkKK3N0YXRpYyBp
bmxpbmUgU3RyaW5nIGdhcChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc3BhY2UpCiB7CiAgICAg
Y29uc3QgdW5zaWduZWQgbWF4R2FwTGVuZ3RoID0gMTA7CiAgICAgc3BhY2UgPSB1bndyYXBCb3hl
ZFByaW1pdGl2ZShleGVjLCBzcGFjZSk7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBzdGF0aWMgaW5s
aW5lIFVTdHJpbmcgZ2FwKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzcGFjZSkKICAgICAgICAg
VUNoYXIgc3BhY2VzW21heEdhcExlbmd0aF07CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkKICAgICAgICAgICAgIHNwYWNlc1tpXSA9ICcgJzsKLSAgICAgICAgcmV0dXJu
IFVTdHJpbmcoc3BhY2VzLCBjb3VudCk7CisgICAgICAgIHJldHVybiBTdHJpbmcoc3BhY2VzLCBj
b3VudCk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHNwYWNlIHZhbHVlIGlzIGEgc3RyaW5nLCB1
c2UgaXQgYXMgdGhlIGdhcCBzdHJpbmcsIG90aGVyd2lzZSB1c2Ugbm8gZ2FwIHN0cmluZy4KLSAg
ICBVU3RyaW5nIHNwYWNlcyA9IHNwYWNlLmdldFN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3Bh
Y2VzID0gc3BhY2UuZ2V0U3RyaW5nKGV4ZWMpOwogICAgIGlmIChzcGFjZXMubGVuZ3RoKCkgPiBt
YXhHYXBMZW5ndGgpIHsKICAgICAgICAgc3BhY2VzID0gc3BhY2VzLnN1YnN0cmluZ1NoYXJpbmdJ
bXBsKDAsIG1heEdhcExlbmd0aCk7CiAgICAgfQpAQCAtMjQ1LDE3ICsyNDQsMTcgQEAgTG9jYWw8
VW5rbm93bj4gU3RyaW5naWZpZXI6OnN0cmluZ2lmeShIYW5kbGU8VW5rbm93bj4gdmFsdWUpCiAg
ICAgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsIGVtcHR5UHJvcGVydHlOYW1lKG1fZXhlYy0+
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcik7CiAgICAgb2JqZWN0
LT5wdXREaXJlY3QobV9leGVjLT5nbG9iYWxEYXRhKCksIG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnBy
b3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllciwgdmFsdWUuZ2V0KCkpOwogCi0gICAgVVN0cmlu
Z0J1aWxkZXIgcmVzdWx0OworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGlmIChhcHBl
bmRTdHJpbmdpZmllZFZhbHVlKHJlc3VsdCwgdmFsdWUuZ2V0KCksIG9iamVjdCwgZW1wdHlQcm9w
ZXJ0eU5hbWUpICE9IFN0cmluZ2lmeVN1Y2NlZWRlZCkKICAgICAgICAgcmV0dXJuIExvY2FsPFVu
a25vd24+KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAobV9l
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIExvY2FsPFVua25vd24+KG1fZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSk7CiAKLSAgICByZXR1cm4gTG9jYWw8VW5rbm93bj4o
bV9leGVjLT5nbG9iYWxEYXRhKCksIGpzU3RyaW5nKG1fZXhlYywgcmVzdWx0LnRvVVN0cmluZygp
KSk7CisgICAgcmV0dXJuIExvY2FsPFVua25vd24+KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1N0
cmluZyhtX2V4ZWMsIHJlc3VsdC50b1N0cmluZygpKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KLXN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvVVN0cmluZ0J1aWxkZXIoVVN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoKQor
c3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGNvbnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gaTsKQEAgLTMw
MywxNiArMzAyLDE2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvVVN0cmluZ0J1aWxkZXIo
VVN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENoYXJUeXBlCiAgICAgfQogfQogICAgIAot
dm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU3RyaW5naWZpZXI6OmFwcGVuZFF1b3Rl
ZFN0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIGludCBsZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKIAogICAgIGJ1aWxkZXIuYXBwZW5kKCci
Jyk7CiAKICAgICBpZiAodmFsdWUuaXM4Qml0KCkpCi0gICAgICAgIGFwcGVuZFN0cmluZ1RvVVN0
cmluZ0J1aWxkZXI8TENoYXI+KGJ1aWxkZXIsIHZhbHVlLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7
CisgICAgICAgIGFwcGVuZFN0cmluZ1RvU3RyaW5nQnVpbGRlcjxMQ2hhcj4oYnVpbGRlciwgdmFs
dWUuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKICAgICBlbHNlCi0gICAgICAgIGFwcGVuZFN0cmlu
Z1RvVVN0cmluZ0J1aWxkZXI8VUNoYXI+KGJ1aWxkZXIsIHZhbHVlLmNoYXJhY3RlcnMxNigpLCBs
ZW5ndGgpOworICAgICAgICBhcHBlbmRTdHJpbmdUb1N0cmluZ0J1aWxkZXI8VUNoYXI+KGJ1aWxk
ZXIsIHZhbHVlLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogCiAgICAgYnVpbGRlci5hcHBlbmQo
JyInKTsKIH0KQEAgLTM0MSw3ICszNDAsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6
dG9KU09OKEpTVmFsdWUgdmFsdWUsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQwogICAg
IHJldHVybiBjYWxsKG1fZXhlYywgb2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHZhbHVlLCBh
cmdzKTsKIH0KIAotU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBw
ZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSlNWYWx1ZSB2YWx1
ZSwgSlNPYmplY3QqIGhvbGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJiBw
cm9wZXJ0eU5hbWUpCitTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjph
cHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIEpTVmFsdWUgdmFs
dWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYg
cHJvcGVydHlOYW1lKQogewogICAgIC8vIENhbGwgdGhlIHRvSlNPTiBmdW5jdGlvbi4KICAgICB2
YWx1ZSA9IHRvSlNPTih2YWx1ZSwgcHJvcGVydHlOYW1lKTsKQEAgLTM3Niw3ICszNzUsNyBAQCBT
dHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmll
ZFZhbHVlKFVTdHJpbmdCdWlsZGVyJgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVk
OwogICAgIH0KIAotICAgIFVTdHJpbmcgc3RyaW5nVmFsdWU7CisgICAgU3RyaW5nIHN0cmluZ1Zh
bHVlOwogICAgIGlmICh2YWx1ZS5nZXRTdHJpbmcobV9leGVjLCBzdHJpbmdWYWx1ZSkpIHsKICAg
ICAgICAgYXBwZW5kUXVvdGVkU3RyaW5nKGJ1aWxkZXIsIHN0cmluZ1ZhbHVlKTsKICAgICAgICAg
cmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKQEAgLTM4Nyw3ICszODYsNyBAQCBTdHJpbmdpZmll
cjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVT
dHJpbmdCdWlsZGVyJgogICAgICAgICBpZiAoIWlzZmluaXRlKG51bWJlcikpCiAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChVU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSk7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlw
dChudW1iZXIpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKICAgICB9CiAK
QEAgLTQ0OCw3ICs0NDcsNyBAQCBpbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6aW5kZW50KCkKICAg
ICAvLyBVc2UgYSBzaW5nbGUgc2hhcmVkIHN0cmluZywgbV9yZXBlYXRlZEdhcCwgc28gd2UgZG9u
J3Qga2VlcCBhbGxvY2F0aW5nIG5ldyBvbmVzIGFzIHdlIGluZGVudCBhbmQgdW5pbmRlbnQuCiAg
ICAgdW5zaWduZWQgbmV3U2l6ZSA9IG1faW5kZW50Lmxlbmd0aCgpICsgbV9nYXAubGVuZ3RoKCk7
CiAgICAgaWYgKG5ld1NpemUgPiBtX3JlcGVhdGVkR2FwLmxlbmd0aCgpKQotICAgICAgICBtX3Jl
cGVhdGVkR2FwID0gbWFrZVVTdHJpbmcobV9yZXBlYXRlZEdhcCwgbV9nYXApOworICAgICAgICBt
X3JlcGVhdGVkR2FwID0gbWFrZVN0cmluZyhtX3JlcGVhdGVkR2FwLCBtX2dhcCk7CiAgICAgQVNT
RVJUKG5ld1NpemUgPD0gbV9yZXBlYXRlZEdhcC5sZW5ndGgoKSk7CiAgICAgbV9pbmRlbnQgPSBt
X3JlcGVhdGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG5ld1NpemUpOwogfQpAQCAtNDU5
LDcgKzQ1OCw3IEBAIGlubGluZSB2b2lkIFN0cmluZ2lmaWVyOjp1bmluZGVudCgpCiAgICAgbV9p
bmRlbnQgPSBtX3JlcGVhdGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG1faW5kZW50Lmxl
bmd0aCgpIC0gbV9nYXAubGVuZ3RoKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6
c3RhcnROZXdMaW5lKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAoraW5saW5lIHZvaWQg
U3RyaW5naWZpZXI6OnN0YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAog
ewogICAgIGlmIChtX2dhcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3Nyw3ICs0
NzYsNyBAQCBpbmxpbmUgU3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVjdCkKIHsKIH0KIAotYm9vbCBTdHJpbmdpZmllcjo6
SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBVU3Ry
aW5nQnVpbGRlciYgYnVpbGRlcikKK2Jvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4
dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpbGRlciYgYnVpbGRl
cikKIHsKICAgICBBU1NFUlQobV9pbmRleCA8PSBtX3NpemUpOwogCkBAIC03MDQsNyArNzAzLDcg
QEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQXJyYXlFbmRWaXNpdE1lbWJlcjogewog
ICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXJyYXlTdGFjay5wZWVrKCk7Ci0gICAg
ICAgICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIoYXJyYXksIGpz
U3RyaW5nKG1fZXhlYywgVVN0cmluZzo6bnVtYmVyKGluZGV4U3RhY2subGFzdCgpKSksIG91dFZh
bHVlKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZl
cihhcnJheSwganNTdHJpbmcobV9leGVjLCBTdHJpbmc6Om51bWJlcihpbmRleFN0YWNrLmxhc3Qo
KSkpLCBvdXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRl
ZmluZWQoKSkKICAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmRlbGV0
ZVByb3BlcnR5QnlJbmRleChhcnJheSwgbV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQpAQCAtODExLDcgKzgxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCAiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFy
YW1ldGVyIikpOwotICAgIFVTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIApAQCAt
ODUyLDEyICs4NTEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9G
dW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFN0cmluZ2lmaWVyKGV4ZWMsIHJlcGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQo
KSk7CiB9CiAKLVVTdHJpbmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGluZGVudCkKK1N0cmluZyBKU09OU3RyaW5naWZ5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgaW5kZW50KQogewogICAgIExvY2FsU2NvcGUg
c2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICBMb2NhbDxVbmtub3duPiByZXN1bHQgPSBT
dHJpbmdpZmllcihleGVjLCBMb2NhbDxVbmtub3duPihleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVs
bCgpKSwgTG9jYWw8VW5rbm93bj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcihpbmRlbnQp
KSkuc3RyaW5naWZ5KExvY2FsPFVua25vd24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUpKTsK
ICAgICBpZiAocmVzdWx0LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBVU3Ry
aW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gcmVzdWx0LmdldFN0
cmluZyhleGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5oCmluZGV4IDNiODY0NzcxNGU5YmY0MzFmYjdiOGQxYjdlMDUwYzQwNmI0NmZkNjUuLmI1Mzdi
OTE0NDAyMGE5NDBjOGU5N2Y1OTE3Njg5ZTIzYjBhNDdmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICB9OwogCi0gICAgVVN0cmluZyBKU09OU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgaW5kZW50KTsKKyAgICBTdHJpbmcgSlNPTlN0cmlu
Z2lmeShFeGVjU3RhdGUqLCBKU1ZhbHVlLCB1bnNpZ25lZCBpbmRlbnQpOwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmlu
ZGV4IGM0MGM2MjVlMTY5M2FiNzZkNmEzY2FhY2JjMDliMGRkMGVhOGQ1ZDkuLjMyNzViMjIyYjVj
ZWZmYjgwMDNhMDhjMjdlNzk5MmQwYWYyNTMwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEpTRmluYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICNl
bmRpZgogfQogCi1VU3RyaW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9i
amVjdCkKK1N0cmluZyBKU09iamVjdDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8oKTsKICAg
ICBBU1NFUlQoaW5mbyk7CkBAIC04MTgsNyArODE4LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggOWUxNDQ1ZTY5Y2Q0
ZTFhZjVlNzU0ODRkM2M0NjUwZDFlMDIyYzIwYi4uZmYzZmIyYTYyYThmNjk1ZTE0OWIyMTcyNzNm
NzU0MDczMTE2NmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0cnVjdHVyZTsK
ICAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJik7CiAgICAgZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogCiAgICAgLy8gRUNNQSAyNjItMyA4LjYuMQpAQCAt
OTksNyArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpT
T2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NO
YW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25z
dDsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmZh
c3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIC8vIGlk
ZW50aWZpZXIuIFRoZSBmaXJzdCB0aW1lIHdlIHBlcmZvcm0gYSBwcm9wZXJ0eSBhY2Nlc3Mgd2l0
aCBhIGdpdmVuIHN0cmluZywgdHJ5CiAvLyBwZXJmb3JtaW5nIHRoZSBwcm9wZXJ0eSBtYXAgbG9v
a3VwIHdpdGhvdXQgZm9ybWluZyBhbiBpZGVudGlmaWVyLiBXZSBkZXRlY3QgdGhpcwogLy8gY2Fz
ZSBieSBjaGVja2luZyB3aGV0aGVyIHRoZSBoYXNoIGhhcyB5ZXQgYmVlbiBzZXQgZm9yIHRoaXMg
c3RyaW5nLgotQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKK0FMV0FZU19JTkxJTkUgSlNW
YWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcygpKSB7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgp
LT5oYXNIYXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApp
bmRleCA0ZWIyYTUyOTc2MmMwZWU2NDZjY2E4YmQyY2Q0YWUxYjgxOTEzODI2Li45NzdmMGQxMDAz
Yzg1YTk4NjEzYzJiODhmNGQzZTUwY2Q4ZWJmYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBKU1JvcGVTdHJp
bmc6OnJlc29sdmVSb3BlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIH0KIAogLy8gT3ZlcnZpZXc6
IFRoZXNlIGZ1bmN0aW9ucyBjb252ZXJ0IGEgSlNTdHJpbmcgZnJvbSBob2xkaW5nIGEgc3RyaW5n
IGluIHJvcGUgZm9ybQotLy8gZG93biB0byBhIHNpbXBsZSBVU3RyaW5nIHJlcHJlc2VudGF0aW9u
LiAgSXQgZG9lcyBzbyBieSBidWlsZGluZyB1cCB0aGUgc3RyaW5nCisvLyBkb3duIHRvIGEgc2lt
cGxlIFN0cmluZyByZXByZXNlbnRhdGlvbi4gSXQgZG9lcyBzbyBieSBidWlsZGluZyB1cCB0aGUg
c3RyaW5nCiAvLyBiYWNrd2FyZHMsIHNpbmNlIHdlIHdhbnQgdG8gYXZvaWQgcmVjdXJzaW9uLCB3
ZSBleHBlY3QgdGhhdCB0aGUgdHJlZSBzdHJ1Y3R1cmUKIC8vIHJlcHJlc2VudGluZyB0aGUgcm9w
ZSBpcyBsaWtlbHkgaW1iYWxhbmNlZCB3aXRoIG1vcmUgbm9kZXMgZG93biB0aGUgbGVmdCBzaWRl
CiAvLyAoc2luY2UgYXBwZW5kaW5nIHRvIHRoZSBzdHJpbmcgaXMgbGlrZWx5IG1vcmUgY29tbW9u
KSAtIGFuZCBhcyBzdWNoIHJlc29sdmluZwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSlNSb3Bl
U3RyaW5nOjpvdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzX21heEludGVybmFsUm9wZUxlbmd0aCAmJiBtX2ZpYmVyc1tpXTsgKytp
KQogICAgICAgICBtX2ZpYmVyc1tpXS5jbGVhcigpOwogICAgIEFTU0VSVChpc1JvcGUoKSk7Ci0g
ICAgQVNTRVJUKG1fdmFsdWUgPT0gVVN0cmluZygpKTsKKyAgICBBU1NFUlQobV92YWx1ZS5pc051
bGwoKSk7CiAgICAgaWYgKGV4ZWMpCiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGU5MTU1
M2FlYjI0OTYwZjhlNzY1OGU2ODA2YTFlOTQ2NTNkZDc1NDIuLmUwMDllY2I4YjFjNWYyNTdjNmMx
ZGIzZDUxZTE2MDI0MmJjNDQzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaApAQCAtMzcsMjcgKzM3LDI3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgSlNTdHJp
bmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlT
dHJpbmcoRXhlY1N0YXRlKik7Ci0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSos
IGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwg
c3RyaW5nCi0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCisgICAgSlNT
dHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFN0cmluZyYpOyAvLyByZXR1cm5z
IGVtcHR5IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKKyAgICBKU1N0cmluZyoganNTdHJp
bmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlm
IHBhc3NlZCBudWxsIHN0cmluZwogCiAgICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKEpTR2xvYmFsRGF0YSosIFVDaGFyKTsKICAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoRXhlY1N0YXRlKiwgVUNoYXIpOwotICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJh
Y3RlclN1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0
KTsKLSAgICBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmlu
ZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBKU1N0cmluZyoganNT
dWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmco
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBKU1N0cmlu
ZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAK
ICAgICAvLyBOb24tdHJpdmlhbCBzdHJpbmdzIGFyZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxv
bmcuCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBmYXN0ZXIgdGhhbiBqdXN0IGNhbGxpbmcg
anNTdHJpbmcuCi0gICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEq
LCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmlu
ZyhKU0dsb2JhbERhdGEqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU1N0cmluZyoganNOb250cml2
aWFsU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogICAgIEpTU3RyaW5nKiBqc05v
bnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOwogICAgIEpTU3RyaW5n
KiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOwogCiAgICAgLy8g
U2hvdWxkIGJlIHVzZWQgZm9yIHN0cmluZ3MgdGhhdCBhcmUgb3duZWQgYnkgYW4gb2JqZWN0IHRo
YXQgd2lsbAogICAgIC8vIGxpa2VseSBvdXRsaXZlIHRoZSBKU1ZhbHVlIHRoaXMgbWFrZXMsIHN1
Y2ggYXMgdGhlIHBhcnNlIHRyZWUgb3IgYQotICAgIC8vIERPTSBvYmplY3QgdGhhdCBjb250YWlu
cyBhIFVTdHJpbmcKLSAgICBKU1N0cmluZyoganNPd25lZFN0cmluZyhKU0dsb2JhbERhdGEqLCBj
b25zdCBVU3RyaW5nJik7IAotICAgIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSos
IGNvbnN0IFVTdHJpbmcmKTsgCisgICAgLy8gRE9NIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgU3Ry
aW5nCisgICAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgU3Ry
aW5nJik7CisgICAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJik7CiAKICAgICBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihKU0dsb2JhbERhdGEq
KTsKIApAQCAtMTM2LDggKzEzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVl
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBjb25zdCBVU3RyaW5nJiB0cnlHZXRWYWx1ZSgp
IGNvbnN0OworICAgICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0Owor
ICAgICAgICBjb25zdCBTdHJpbmcmIHRyeUdldFZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAgICAgSlNWYWx1ZSB0b1By
aW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKQEAgLTE5
MCw5ICsxOTAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIElzOEJpdCA9IDF1CiAg
ICAgICAgIH07CiAKLSAgICAgICAgLy8gQSBzdHJpbmcgaXMgcmVwcmVzZW50ZWQgZWl0aGVyIGJ5
IGEgVVN0cmluZyBvciBhIHJvcGUgb2YgZmliZXJzLgorICAgICAgICAvLyBBIHN0cmluZyBpcyBy
ZXByZXNlbnRlZCBlaXRoZXIgYnkgYSBTdHJpbmcgb3IgYSByb3BlIG9mIGZpYmVycy4KICAgICAg
ICAgdW5zaWduZWQgbV9sZW5ndGg7Ci0gICAgICAgIG11dGFibGUgVVN0cmluZyBtX3ZhbHVlOwor
ICAgICAgICBtdXRhYmxlIFN0cmluZyBtX3ZhbHVlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTIwMyw3ICsyMDMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBVU3Ry
aW5nJiBzdHJpbmcoKSB7IEFTU0VSVCghaXNSb3BlKCkpOyByZXR1cm4gbV92YWx1ZTsgfQorICAg
ICAgICBTdHJpbmcmIHN0cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVl
OyB9CiAKICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiwgSlNTdHJp
bmcqLCBKU1N0cmluZyopOwogICAgICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4
ZWNTdGF0ZSosIEpTU3RyaW5nKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwpA
QCAtMzQwLDEwICszNDAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBpZiAo
YyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFs
RGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCBjKTsK
LSAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFVTdHJpbmcoJmMs
IDEpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRh
LCBTdHJpbmcoJmMsIDEpLmltcGwoKSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBKU1N0
cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBV
U3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgQUxXQVlTX0lOTElORSBKU1N0cmluZyog
anNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHMsIHVuc2lnbmVkIG9mZnNldCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwpAQCAtMzU4LDIzICszNTgsMjMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVChzKTsKICAgICAgICAgQVNTRVJUKHNbMF0pOwog
ICAgICAgICBBU1NFUlQoc1sxXSk7Ci0gICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpn
bG9iYWxEYXRhLCBVU3RyaW5nKHMpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6
Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmcocykuaW1wbCgpKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IFVTdHJpbmcmIHMpCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJp
bmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewogICAg
ICAgICBBU1NFUlQocy5sZW5ndGgoKSA+IDEpOwogICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNy
ZWF0ZSgqZ2xvYmFsRGF0YSwgcy5pbXBsKCkpOwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBV
U3RyaW5nJiBKU1N0cmluZzo6dmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAgIGlubGlu
ZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp2YWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgICAgIHJldHVy
biBtX3ZhbHVlOwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBVU3RyaW5nJiBKU1N0cmluZzo6
dHJ5R2V0VmFsdWUoKSBjb25zdAorICAgIGlubGluZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp0
cnlHZXRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUo
MCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBq
c1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhleGVjLCBtX3ZhbHVlLCBpKTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgcykKKyAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBzKQogICAgIHsKICAgICAgICAgaW50IHNpemUg
PSBzLmxlbmd0aCgpOwogICAgICAgICBpZiAoIXNpemUpCkBAIC00MTQsNyArNDE0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhnbG9iYWxEYXRhLCBzLT52
YWx1ZShleGVjKSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgIH0KIAotICAgIGlubGluZSBKU1N0cmlu
ZyoganNTdWJzdHJpbmc4KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgaW5saW5lIEpTU3RyaW5n
KiBqc1N1YnN0cmluZzgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG9mZnNldCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwogICAgICAgICBB
U1NFUlQobGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CkBAIC00
MjksNyArNDI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBKU1N0cmluZzo6
Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlOChzLmlt
cGwoKSwgb2Zmc2V0LCBsZW5ndGgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1
YnN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcywgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBBU1NFUlQob2Zmc2V0
IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CiAgICAgICAgIEFTU0VSVChs
ZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpKTsKQEAgLTQ0NCw3ICs0
NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVI
YXNPdGhlck93bmVyKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5pbXBsKCksIG9m
ZnNldCwgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3Ry
aW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcykKKyAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBTdHJpbmcmIHMpCiAgICAgewogICAgICAgICBpbnQgc2l6ZSA9IHMubGVuZ3RoKCk7CiAgICAg
ICAgIGlmICghc2l6ZSkKQEAgLTQ2MywxMyArNDYzLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
IHsgcmV0dXJuIGpzRW1wdHlTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSk7IH0KLSAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcykg
eyByZXR1cm4ganNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KKyAgICBpbmxpbmUg
SlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJl
dHVybiBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVQ2hhciBjKSB7
IHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBjKTsg
fQotICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmc4KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJu
IGpzU3Vic3RyaW5nOCgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzLCBvZmZzZXQsIGxlbmd0aCk7IH0K
LSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
VVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGpz
U3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQotICAg
IGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT5nbG9iYWxE
YXRhKCksIHMpOyB9CisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZzgoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KSB7IHJldHVybiBqc1N1YnN0cmluZzgoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcywgb2Zmc2V0LCBs
ZW5ndGgpOyB9CisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsg
cmV0dXJuIGpzU3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3Ro
KTsgfQorICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgcyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQotICAgIGlubGluZSBKU1N0cmluZyog
anNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMpIHsgcmV0dXJu
IGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0gCisgICAgaW5saW5lIEpT
U3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7
IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
ICAgICB7CkBAIC01MjcsMTQgKzUyNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIHRvU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgaW5saW5lIFVTdHJpbmcg
SlNWYWx1ZTo6dG9VU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICBpbmxpbmUgU3Ry
aW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
U3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLSAgICAgICAgcmV0dXJuIHRvVVN0cmlu
Z1Nsb3dDYXNlKGV4ZWMpOworICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVj
KTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0
cmluZ3RvVVN0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQorICAg
IEFMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25z
dCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgICAgICBpZiAodmFs
dWUuaXNJbnQzMigpKQpAQCAtNTUyLDEyICs1NTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSBVU3RyaW5nIEpTVmFsdWU6OnRvVVN0cmluZ0lubGluZShFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZT
dHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlz
U3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0Nl
bGwoKSktPnZhbHVlKGV4ZWMpOwogCi0gICAgICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3Ry
aW5ndG9VU3RyaW5nKCp0aGlzLCBleGVjKTsKKyAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVO
b3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVp
bGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgK
aW5kZXggMWEyYjgxMmYwZjJhZDIwODU3NmMwYzk4Y2FhNzJjNmEyN2E1YjJhNC4uZTc3NzhlNGZi
OTU5YzIxMzE5ZTkxZjA4OTc4YjczMzYyMTM3NDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1
ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC05Miw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9va2F5ICY9
IGJ1ZmZlcjE2LnRyeUFwcGVuZChzdHIsIGxlbik7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgVVN0cmluZyYgc3RyKQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyLmxlbmd0aCgpOwogCkBAIC0xMjks
MTIgKzEyOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBidWZmZXI4LnNocmlua1RvRml0KCk7
CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcjguZGF0YSgpKQogICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJp
bmcoZXhlYywgVVN0cmluZzo6YWRvcHQoYnVmZmVyOCkpOworICAgICAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIFN0cmluZzo6YWRvcHQoYnVmZmVyOCkpOwogICAgICAgICB9CiAgICAgICAg
IGJ1ZmZlcjE2LnNocmlua1RvRml0KCk7CiAgICAgICAgIGlmICghYnVmZmVyMTYuZGF0YSgpKQog
ICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKLSAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6OmFkb3B0KGJ1ZmZlcjE2KSk7CisgICAgICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZlcjE2KSk7CiAgICAgfQog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZ0pvaW5lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0pvaW5lci5jcHAKaW5kZXggZWEyNjAyNDNiN2M0NDM3ZjExZjk5NDJlOGE4NjE0MWY2MDBjYTYx
Ny4uMDE3OGNkOGM4ODRjNDM3MzhkMzEyODM2NWI3NzZjODdjMDVjYTQyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcApAQCAtMzUsNyAr
MzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFRoZSBkZXN0aW5hdGlvbiBpcyAxNmJpdHMs
IGF0IGxlYXN0IG9uZSBzdHJpbmcgaXMgMTYgYml0cy4KLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBl
bmRTdHJpbmdUb0RhdGEoVUNoYXIqJiBkYXRhLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCitzdGF0
aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRhKFVDaGFyKiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRh
KFVDaGFyKiYgZGF0YSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQogfQogCiAvLyBJZiB0aGUgZGVz
dGluYXRpb24gaXMgOGJpdHMsIHdlIGtub3cgZXZlcnkgc3RyaW5nIGhhcyB0byBiZSA4Yml0Lgot
c3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFN0cmluZ1RvRGF0YShMQ2hhciomIGRhdGEsIGNvbnN0
IFVTdHJpbmcmIHN0cmluZykKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTdHJpbmdUb0RhdGEo
TENoYXIqJiBkYXRhLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBlbmRTdHJpbmdUb0RhdGEoTENoYXIqJiBkYXRhLCBjb25zdCBVU3RyaW5nJiBzdHJp
bmcpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gam9pblN0cmluZ3MoY29uc3QgVmVjdG9yPFVTdHJpbmc+
JiBzdHJpbmdzLCBjb25zdCBVU3RyaW5nJiBzZXBhcmF0b3IsIHVuc2lnbmVkIG91dHB1dExlbmd0
aCkKK3N0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBqb2luU3RyaW5ncyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncywgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIHVuc2ln
bmVkIG91dHB1dExlbmd0aCkKIHsKICAgICBBU1NFUlQob3V0cHV0TGVuZ3RoKTsKIApAQCAtODIs
NyArODIsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gam9pblN0cmlu
Z3MoY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBzdHJpbmdzLAogICAgIGlmICghb3V0cHV0U3RyaW5n
SW1wbCkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4oKTsKIAotICAgIGNv
bnN0IFVTdHJpbmcgZmlyc3RTdHJpbmcgPSBzdHJpbmdzLmZpcnN0KCk7CisgICAgY29uc3QgU3Ry
aW5nIGZpcnN0U3RyaW5nID0gc3RyaW5ncy5maXJzdCgpOwogICAgIGFwcGVuZFN0cmluZ1RvRGF0
YShkYXRhLCBmaXJzdFN0cmluZyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHN0cmlu
Z3Muc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nSm9pbmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZ0pvaW5lci5oCmluZGV4IDQ5Zjg0NmMxZjAyMWJmMDNmZDY5MGZlM2RhYmI1ZTlkNjQ4ZjIw
MmEuLjVjYjg0MWE4MDI2OWRkNTc4ODBiNjM2OTU4ZDg1MDZiZjY1MjJlYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaApAQCAtMjcsOCArMjcs
OCBAQAogI2RlZmluZSBKU1N0cmluZ0pvaW5lcl9oCiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCi0j
aW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDIxICszNywy
MSBAQCBjbGFzcyBFeGVjU3RhdGU7CiAKIGNsYXNzIEpTU3RyaW5nSm9pbmVyIHsKIHB1YmxpYzoK
LSAgICBKU1N0cmluZ0pvaW5lcihjb25zdCBVU3RyaW5nJiBzZXBhcmF0b3IsIHNpemVfdCBzdHJp
bmdDb3VudCk7CisgICAgSlNTdHJpbmdKb2luZXIoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIHNp
emVfdCBzdHJpbmdDb3VudCk7CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJik7Cisg
ICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAgSlNWYWx1ZSBidWlsZChFeGVjU3Rh
dGUqKTsKIAogcHJpdmF0ZToKLSAgICBVU3RyaW5nIG1fc2VwYXJhdG9yOwotICAgIFZlY3RvcjxV
U3RyaW5nPiBtX3N0cmluZ3M7CisgICAgU3RyaW5nIG1fc2VwYXJhdG9yOworICAgIFZlY3RvcjxT
dHJpbmc+IG1fc3RyaW5nczsKIAogICAgIHVuc2lnbmVkIG1fY3VtdWxhdGVkU3RyaW5nc0xlbmd0
aDsKICAgICBib29sIG1faXNWYWxpZDsKICAgICBib29sIG1faXM4Qml0czsKIH07CiAKLWlubGlu
ZSBKU1N0cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoY29uc3QgVVN0cmluZyYgc2VwYXJhdG9y
LCBzaXplX3Qgc3RyaW5nQ291bnQpCitpbmxpbmUgSlNTdHJpbmdKb2luZXI6OkpTU3RyaW5nSm9p
bmVyKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBzaXplX3Qgc3RyaW5nQ291bnQpCiAgICAgOiBt
X3NlcGFyYXRvcihzZXBhcmF0b3IpCiAgICAgLCBtX2N1bXVsYXRlZFN0cmluZ3NMZW5ndGgoMCkK
ICAgICAsIG1faXNWYWxpZCh0cnVlKQpAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUgSlNTdHJpbmdK
b2luZXI6OkpTU3RyaW5nSm9pbmVyKGNvbnN0IFVTdHJpbmcmIHNlcGFyYXRvciwgc2l6ZV90IHN0
cmluZ0NvdQogICAgIG1faXNWYWxpZCA9IG1fc3RyaW5ncy50cnlSZXNlcnZlQ2FwYWNpdHkoc3Ry
aW5nQ291bnQpOwogfQogCi1pbmxpbmUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kKGNvbnN0
IFVTdHJpbmcmIHN0cikKK2lubGluZSB2b2lkIEpTU3RyaW5nSm9pbmVyOjphcHBlbmQoY29uc3Qg
U3RyaW5nJiBzdHIpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKaW5kZXggYzM0NDMxMTc4OWNi
NjY2NmJiYzUzYmRlMGM5ZjFkOWVhMDhmZGJlOC4uMGJlZGFhMzNmMjYyMzAyNzJjMDczOWI3M2Mz
NWZjMDJmZTBmN2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5j
cHAKQEAgLTI4Myw5ICsyODMsOSBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2Fz
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMp
OwogfQogCi1VU3RyaW5nIEpTVmFsdWU6OnRvVVN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKK1N0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvVVN0cmlu
ZygqdGhpcywgZXhlYyk7CisgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmlu
ZygqdGhpcywgZXhlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5oCmluZGV4IDFkODIyMzMyNWI1ZWY2MmRiOWNlNDBhZmU5ODI1
ZDAxMzY5MzFlZTMuLmE4YTQzOGYxMGRmYTI3MmQwYTc1YWI5NGVkOGM4YTE0NWMxZGJlNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lOwogICAgIGNsYXNzIFByb3Bl
cnR5U2xvdDsKICAgICBjbGFzcyBQdXRQcm9wZXJ0eVNsb3Q7Ci0gICAgY2xhc3MgVVN0cmluZzsK
ICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBuYW1lc3BhY2UgREZHIHsKICAgICAgICAgY2xhc3Mg
QXNzZW1ibHlIZWxwZXJzOwpAQCAtMTk3LDggKzE5Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgICAgICAKICAg
ICAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCi0gICAgICAgIGJvb2wgZ2V0U3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGdldFN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcK
KyAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiwgV1RGOjpTdHJpbmcmKSBjb25zdDsK
KyAgICAgICAgV1RGOjpTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBudWxs
IHN0cmluZyBpZiBub3QgYSBzdHJpbmcKICAgICAgICAgSlNPYmplY3QqIGdldE9iamVjdCgpIGNv
bnN0OyAvLyAwIGlmIG5vdCBhbiBvYmplY3QKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIGludGVn
ZXIgdmFsdWVzLgpAQCAtMjE0LDggKzIxMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAv
LyBiZWVuIHNldCBpbiB0aGUgRXhlY1N0YXRlIGFscmVhZHkuCiAgICAgICAgIGRvdWJsZSB0b051
bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNTdHJpbmcqIHRvU3RyaW5nKEV4ZWNT
dGF0ZSopIGNvbnN0OwotICAgICAgICBVU3RyaW5nIHRvVVN0cmluZyhFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgVVN0cmluZyB0b1VTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKikgY29uc3Q7Cisg
ICAgICAgIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAg
ICBXVEY6OlN0cmluZyB0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAg
ICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU09iamVj
dCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIApAQCAtMjY2
LDcgKzI2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgY29uc3QgSlNWYWx1
ZSBhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSop
IGNvbnN0OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIHRvVVN0cmluZ1Nsb3dD
YXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0
cmluZyB0b1dURlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggZTFmODVjZWZlNmVh
NGU0NGU0MGM4M2VmNmZmN2M3NjUwZWZlNjA0YS4uYWE2NTQxYjZhZWQ1YmYwY2VjZDhlNWY2Mzk5
NDc5Yzg2YzIyMDllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUg
IlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRl
IDx3dGYvZHRvYS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTM0NCw3ICszNDQsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBt
b2RlLCBjaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJz
ZQogewogICAgICsrbV9wdHI7CiAgICAgY29uc3QgQ2hhclR5cGUqIHJ1blN0YXJ0ID0gbV9wdHI7
Ci0gICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgZG8gewogICAgICAgICBydW5TdGFydCA9IG1fcHRyOwogICAgICAgICB3aGlsZSAobV9w
dHIgPCBtX2VuZCAmJiBpc1NhZmVTdHJpbmdDaGFyYWN0ZXI8bW9kZSwgQ2hhclR5cGUsIHRlcm1p
bmF0b3I+KCptX3B0cikpCkBAIC00MDAsNyArNDAwLDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUg
bW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFy
c2UKICAgICAgICAgICAgICAgICAgICAgfSAvLyB1Tk5OTiA9PSA1IGNoYXJhY3RlcnMKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlwi
XFwlc1wiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgVVN0cmluZyhtX3B0ciwgNSku
YXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJcIlxcJXNcIiBpcyBub3QgYSB2YWxpZCB1
bmljb2RlIGVzY2FwZSIsIFN0cmluZyhtX3B0ciwgNSkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQyNiwxMSArNDI2LDEx
IEBAIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWluYXRvcj4gQUxXQVlTX0lO
TElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlCiAgICAgfQogCiAgICAgaWYgKGJ1aWxkZXIuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIHRva2VuLnN0cmluZ0J1ZmZlciA9IFVTdHJpbmcoKTsKKyAgICAg
ICAgdG9rZW4uc3RyaW5nQnVmZmVyID0gU3RyaW5nKCk7CiAgICAgICAgIHNldFBhcnNlclRva2Vu
U3RyaW5nPENoYXJUeXBlPih0b2tlbiwgcnVuU3RhcnQpOwogICAgICAgICB0b2tlbi5zdHJpbmdM
ZW5ndGggPSBtX3B0ciAtIHJ1blN0YXJ0OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRva2VuLnN0
cmluZ0J1ZmZlciA9IGJ1aWxkZXIudG9VU3RyaW5nKCk7CisgICAgICAgIHRva2VuLnN0cmluZ0J1
ZmZlciA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRva2VuLnN0cmluZ0J1ZmZl
ci5pczhCaXQoKSkgewogICAgICAgICAgICAgdG9rZW4uc3RyaW5nSXM4Qml0ID0gMTsKICAgICAg
ICAgICAgIHRva2VuLnN0cmluZ1Rva2VuOCA9IHRva2VuLnN0cmluZ0J1ZmZlci5jaGFyYWN0ZXJz
OCgpOwpAQCAtNjk4LDkgKzY5OCw5IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46
OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBUb2tJZGVudGlmaWVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXRlcmFs
UGFyc2VyVG9rZW48Q2hhclR5cGU+JiB0b2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4uc3RyaW5nSXM4Qml0KQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgi
VW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFVTdHJpbmcobV9sZXhlci5jdXJyZW50VG9r
ZW4oKS5zdHJpbmdUb2tlbjgsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5h
c2NpaSgpLmRhdGEoKSkuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwi
JXNcIiIsIFN0cmluZyhtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuOCwgbV9sZXhl
ci5jdXJyZW50VG9rZW4oKS5zdHJpbmdMZW5ndGgpLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIGlkZW50aWZp
ZXIgXCIlc1wiIiwgVVN0cmluZyhtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuMTYs
IG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSkuaW1w
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBT
dHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFN0cmluZyhtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuMTYsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
c3RyaW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRva0NvbG9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IGFiZTNmOTViNzk4Y2MzNWIyZTQ2NDI5MTE3Yjg3ZDEx
YWRkZmZmODkuLjYxYThlZjM0ZGM2MjAxNmMxZGRjNjY5ZDUzN2I5MjljZjBlN2RlZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTI5LDcg
KzI5LDcgQEAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtNjcsNyArNjcsNyBAQCBzdHJ1Y3QgTGl0ZXJhbFBhcnNlclRva2VuIHsKICAgICBUb2tlblR5
cGUgdHlwZTsKICAgICBjb25zdCBDaGFyVHlwZSogc3RhcnQ7CiAgICAgY29uc3QgQ2hhclR5cGUq
IGVuZDsKLSAgICBVU3RyaW5nIHN0cmluZ0J1ZmZlcjsKKyAgICBTdHJpbmcgc3RyaW5nQnVmZmVy
OwogICAgIHVuaW9uIHsKICAgICAgICAgZG91YmxlIG51bWJlclRva2VuOwogICAgICAgICBzdHJ1
Y3QgewpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBV
U3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIAorICAgIFN0cmluZyBnZXRFcnJvck1lc3NhZ2UoKQog
ICAgIHsgCiAgICAgICAgIGlmICghbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6ICVz
IiwgbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwpAQCAt
MTMzLDEwICsxMzMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnRU
b2tlbjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgVVN0cmluZyBnZXRFcnJvck1lc3Nh
Z2UoKSB7IHJldHVybiBtX2xleEVycm9yTWVzc2FnZTsgfQorICAgICAgICBTdHJpbmcgZ2V0RXJy
b3JNZXNzYWdlKCkgeyByZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7IH0KICAgICAgICAgCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgVVN0cmluZyBtX2xleEVycm9yTWVzc2FnZTsKKyAgICAgICAgU3Ry
aW5nIG1fbGV4RXJyb3JNZXNzYWdlOwogICAgICAgICB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2Rl
PiBUb2tlblR5cGUgbGV4KExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4mKTsKICAgICAgICAg
QUxXQVlTX0lOTElORSBUb2tlblR5cGUgbGV4SWRlbnRpZmllcihMaXRlcmFsUGFyc2VyVG9rZW48
Q2hhclR5cGU+Jik7CiAgICAgICAgIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVy
bWluYXRvcj4gQUxXQVlTX0lOTElORSBUb2tlblR5cGUgbGV4U3RyaW5nKExpdGVyYWxQYXJzZXJU
b2tlbjxDaGFyVHlwZT4mKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIEV4ZWNT
dGF0ZSogbV9leGVjOwogICAgIHR5cGVuYW1lIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhl
ciBtX2xleGVyOwogICAgIFBhcnNlck1vZGUgbV9tb2RlOwotICAgIFVTdHJpbmcgbV9wYXJzZUVy
cm9yTWVzc2FnZTsKKyAgICBTdHJpbmcgbV9wYXJzZUVycm9yTWVzc2FnZTsKICAgICBzdGF0aWMg
dW5zaWduZWQgY29uc3QgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwogICAgIEZpeGVk
QXJyYXk8SWRlbnRpZmllciwgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyPiBtX3Nob3J0SWRlbnRp
ZmllcnM7CiAgICAgRml4ZWRBcnJheTxJZGVudGlmaWVyLCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0
ZXI+IG1fcmVjZW50SWRlbnRpZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggNzZhZWE5ZGE4YmYwZGJh
ZDA2NjgxOGViMTZmODY4NDllZmFjZmQ3Yi4uOGRiMjM3MDI4Yzg4NWRkMDVlNDU0NjJhMTgxN2Q0
Y2VjNTY5YWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwog
Ci0gICAgICAgIHN0YXRpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisg
ICAgICAgIHN0YXRpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAg
ICAgewogICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUpOwpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
ZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lKQor
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvclByb3RvdHlwZS5jcHAKaW5kZXggZGZkZDg3Zjg1MzIxYjkxOTc5NzdiZjVkN2Y1OWJj
MDM3YjA4NzY0Yi4uN2ZlZTIxM2ZhNTM1NDdhNWQ3OWIyMmNiYWE4M2IyMTFmYzc3NDc2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJv
dG90eXBlLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzUsNyAr
MzQsNyBAQCBOYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogewogfQogCi12b2lkIE5hdGl2ZUVycm9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3ZvaWQgTmF0aXZlRXJyb3JQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvcikKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBnbG9i
YWxPYmplY3QpOwogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERvbnRFbnVt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclBy
b3RvdHlwZS5oCmluZGV4IDRiY2ViODgzYTgyMGIxZTE2YzdjNTdhNWExNzdlZGQxZDY0MGYxNzAu
LmM5NGYyYjc1YWRiZDc5NDliMjYxOWIzYTc4YzVjNTY2M2I4NjM1MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgRXJyb3JQcm90b3R5cGUgQmFzZTsKIAotICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90
b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKKyAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yUHJv
dG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5h
dGl2ZUVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUo
ZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
ZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBjb25zdHJ1Y3Rvcik7CkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3Ry
aW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOworICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggNjkyYTU4NGZhNGEwOWQwZGFlYTIzOWNjOWQ2OWU0
ZjU3NWM2NzIxYi4uMWQ3OTM5MjI1MjQ2YjJkYmVjZTgyMWEzZTQzMWMwYjdkYmZmZTViYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3Bw
CkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIGNoYXIqIHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4
QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBudW1iZXIsIHVuc2lnbmVkIHJhZGkKICAgICByZXR1cm4g
c3RhcnRPZlJlc3VsdFN0cmluZzsKIH0KIAotc3RhdGljIFVTdHJpbmcgdG9VU3RyaW5nV2l0aFJh
ZGl4KGludDMyX3QgbnVtYmVyLCB1bnNpZ25lZCByYWRpeCkKK3N0YXRpYyBTdHJpbmcgdG9TdHJp
bmdXaXRoUmFkaXgoaW50MzJfdCBudW1iZXIsIHVuc2lnbmVkIHJhZGl4KQogewogICAgIExDaGFy
IGJ1ZlsxICsgMzJdOyAvLyBXb3JzdCBjYXNlIGlzIHJhZGl4ID09IDIsIHdoaWNoIGdpdmVzIHVz
IDMyIGRpZ2l0cyArIHNpZ24uCiAgICAgTENoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5H
VEgoYnVmKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgVVN0cmluZyB0b1VTdHJpbmdXaXRo
UmFkaXgoaW50MzJfdCBudW1iZXIsIHVuc2lnbmVkIHJhZGl4KQogICAgIGlmIChuZWdhdGl2ZSkK
ICAgICAgICAgKi0tcCA9ICctJzsKIAotICAgIHJldHVybiBVU3RyaW5nKHAsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihlbmQgLSBwKSk7CisgICAgcmV0dXJuIFN0cmluZyhwLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZW5kIC0gcCkpOwogfQogCiAvLyB0b0V4cG9uZW50aWFsIGNvbnZlcnRzIGEgbnVt
YmVyIHRvIGEgc3RyaW5nLCBhbHdheXMgZm9ybWF0dGluZyBhcyBhbiBleHBvZW50aWFsLgpAQCAt
MzgyLDcgKzM4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9G
dW5jVG9FeHBvbmVudGlhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyBIYW5kbGUgTmFOIGFu
ZCBJbmZpbml0eS4KICAgICBpZiAoIWlzZmluaXRlKHgpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlw
dCh4KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0
cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHgpKSk7CiAKICAgICAvLyBSb3VuZCBpZiB0
aGUgYXJndW1lbnQgaXMgbm90IHVuZGVmaW5lZCwgYWx3YXlzIGZvcm1hdCBhcyBleHBvbmVudGlh
bC4KICAgICBjaGFyIGJ1ZmZlcltXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKQEAg
LTM5Miw3ICszOTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvRXhwb25lbnRpYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIGlzVW5kZWZpbmVkCiAgICAg
ICAgID8gY29udmVydGVyLlRvRXhwb25lbnRpYWwoeCwgLTEsICZidWlsZGVyKQogICAgICAgICA6
IGNvbnZlcnRlci5Ub0V4cG9uZW50aWFsKHgsIGRlY2ltYWxQbGFjZXNJbkV4cG9uZW50LCAmYnVp
bGRlcik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5n
KGJ1aWxkZXIuRmluYWxpemUoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKGV4ZWMsIFN0cmluZyhidWlsZGVyLkZpbmFsaXplKCkpKSk7CiB9CiAKIC8vIHRvRml4ZWQg
Y29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIGFsd2F5cyBmb3JtYXR0aW5nIGFzIGFuIGEg
ZGVjaW1hbCBmcmFjdGlvbi4KQEAgLTQxNSwxNCArNDE1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
Ly8gVGhpcyBhbHNvIGNvdmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0
aGF0IE5hTgogICAgIC8vIHZhbHVlcyBhcmUgYWxzbyBoYW5kbGVkIGJ5IG51bWJlclRvU3RyaW5n
CiAgICAgaWYgKCEoZmFicyh4KSA8IDFlKzIxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoeCkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJpbmc6
Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOwogCiAgICAgLy8gVGhlIGNoZWNrIGFib3Zl
IHdpbGwgcmV0dXJuIGZhbHNlIGZvciBOYU4gb3IgSW5maW5pdHksIHRoZXNlIHdpbGwgYmUKICAg
ICAvLyBoYW5kbGVkIGJ5IG51bWJlclRvU3RyaW5nLgogICAgIEFTU0VSVChpc2Zpbml0ZSh4KSk7
CiAKICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyh4
LCBkZWNpbWFsUGxhY2VzLCBidWZmZXIpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcoZXhlYywgU3RyaW5nKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyh4LCBkZWNpbWFs
UGxhY2VzLCBidWZmZXIpKSkpOwogfQogCiAvLyB0b1ByZWNpc2lvbiBjb252ZXJ0cyBhIG51bWJl
ciB0byBhIHN0cmluZywgdGFrZWluZyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEKQEAgLTQ0Niwx
NCArNDQ2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5j
VG9QcmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gVG8gcHJlY2lzaW9uIGNhbGxl
ZCB3aXRoIG5vIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAgaWYgKGlzVW5k
ZWZpbmVkKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVT
dHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KHgpKSk7CiAKICAgICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAoIWlz
ZmluaXRlKHgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMs
IFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01B
U2NyaXB0KHgpKSk7CiAKICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nKG51bWJlclRvRml4ZWRQ
cmVjaXNpb25TdHJpbmcoeCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBidWZmZXIpKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5nKG51bWJlclRvRml4ZWRQ
cmVjaXNpb25TdHJpbmcoeCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBidWZmZXIpKSkpOwogfQogCiBz
dGF0aWMgaW5saW5lIGludDMyX3QgZXh0cmFjdFJhZGl4RnJvbUFyZ3MoRXhlY1N0YXRlKiBleGVj
KQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgaW50ZWdl
clZhbHVlVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IHJhZGl4CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+bnVt
ZXJpY1N0cmluZ3MuYWRkKHZhbHVlKSkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoZXhlYywgdG9VU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCByYWRpeCkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5nV2l0aFJh
ZGl4KHZhbHVlLCByYWRpeCkpKTsKIAogfQogCkBAIC01MDksNyArNTA5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgfQogCiAgICAgaWYgKCFpc2Zpbml0ZShkb3VibGVWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZzo6bnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KGRvdWJsZVZhbHVlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJs
ZVZhbHVlKSkpOwogCiAgICAgUmFkaXhCdWZmZXIgczsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5nV2l0aFJhZGl4KHMsIGRvdWJsZVZhbHVlLCByYWRp
eCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWVyaWNT
dHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1lcmljU3RyaW5ncy5o
CmluZGV4IDA3ZTg0OTQ5MTE1NTBkODNhMWYzYjQ4MzdkNzkwNWZmMzc1MDgyYmIuLjRjZDkyZmMx
ZjJmNjdkNmM1MTM2ZmVmM2IyNzNkNDFjZmVmYTI3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWVyaWNTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtZXJpY1N0cmluZ3MuaApAQCAtMjYsMjUgKzI2LDI1IEBACiAjaWZu
ZGVmIE51bWVyaWNTdHJpbmdzX2gKICNkZWZpbmUgTnVtZXJpY1N0cmluZ3NfaAogCi0jaW5jbHVk
ZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1lcmljU3RyaW5ncyB7CiAgICAgcHVibGljOgot
ICAgICAgICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgYWRkKGRvdWJsZSBkKQorICAgICAgICBBTFdB
WVNfSU5MSU5FIFN0cmluZyBhZGQoZG91YmxlIGQpCiAgICAgICAgIHsKICAgICAgICAgICAgIENh
Y2hlRW50cnk8ZG91YmxlPiYgZW50cnkgPSBsb29rdXAoZCk7CiAgICAgICAgICAgICBpZiAoZCA9
PSBlbnRyeS5rZXkgJiYgIWVudHJ5LnZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgICAgIGVudHJ5LmtleSA9IGQ7Ci0gICAgICAgICAg
ICBlbnRyeS52YWx1ZSA9IFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkKTsKKyAg
ICAgICAgICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQo
ZCk7CiAgICAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgYWRkKGludCBpKQorICAgICAgICBBTFdBWVNfSU5MSU5F
IFN0cmluZyBhZGQoaW50IGkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaSkgPCBjYWNoZVNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvb2t1
cFNtYWxsU3RyaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSk7CkBAIC01MiwxMSArNTIsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoaSA9PSBlbnRyeS5rZXkgJiYgIWVu
dHJ5LnZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsK
ICAgICAgICAgICAgIGVudHJ5LmtleSA9IGk7Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFVT
dHJpbmc6Om51bWJlcihpKTsKKyAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1i
ZXIoaSk7CiAgICAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgYWRkKHVuc2lnbmVkIGkpCisgICAgICAgIEFMV0FZ
U19JTkxJTkUgU3RyaW5nIGFkZCh1bnNpZ25lZCBpKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoaSA8IGNhY2hlU2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbG9va3VwU21hbGxTdHJp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpKTsKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBpZiAoaSA9PSBlbnRyeS5rZXkgJiYgIWVudHJ5LnZhbHVlLmlz
TnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgICAg
IGVudHJ5LmtleSA9IGk7Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFVTdHJpbmc6Om51bWJl
cihpKTsKKyAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1iZXIoaSk7CiAgICAg
ICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgpAQCAt
NzMsMjQgKzczLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgICAgICBzdHJ1Y3QgQ2FjaGVFbnRyeSB7CiAgICAgICAgICAgICBUIGtleTsKLSAg
ICAgICAgICAgIFVTdHJpbmcgdmFsdWU7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWU7CiAgICAg
ICAgIH07CiAKICAgICAgICAgQ2FjaGVFbnRyeTxkb3VibGU+JiBsb29rdXAoZG91YmxlIGQpIHsg
cmV0dXJuIGRvdWJsZUNhY2hlW1dURjo6RmxvYXRIYXNoPGRvdWJsZT46Omhhc2goZCkgJiAoY2Fj
aGVTaXplIC0gMSldOyB9CiAgICAgICAgIENhY2hlRW50cnk8aW50PiYgbG9va3VwKGludCBpKSB7
IHJldHVybiBpbnRDYWNoZVtXVEY6OkludEhhc2g8aW50Pjo6aGFzaChpKSAmIChjYWNoZVNpemUg
LSAxKV07IH0KICAgICAgICAgQ2FjaGVFbnRyeTx1bnNpZ25lZD4mIGxvb2t1cCh1bnNpZ25lZCBp
KSB7IHJldHVybiB1bnNpZ25lZENhY2hlW1dURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2goaSkg
JiAoY2FjaGVTaXplIC0gMSldOyB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVVN0cmlu
ZyYgbG9va3VwU21hbGxTdHJpbmcodW5zaWduZWQgaSkKKyAgICAgICAgQUxXQVlTX0lOTElORSBj
b25zdCBTdHJpbmcmIGxvb2t1cFNtYWxsU3RyaW5nKHVuc2lnbmVkIGkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVChpIDwgY2FjaGVTaXplKTsKICAgICAgICAgICAgIGlmIChzbWFsbElu
dENhY2hlW2ldLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIHNtYWxsSW50Q2FjaGVbaV0gPSBV
U3RyaW5nOjpudW1iZXIoaSk7CisgICAgICAgICAgICAgICAgc21hbGxJbnRDYWNoZVtpXSA9IFN0
cmluZzo6bnVtYmVyKGkpOwogICAgICAgICAgICAgcmV0dXJuIHNtYWxsSW50Q2FjaGVbaV07CiAg
ICAgICAgIH0KIAogICAgICAgICBGaXhlZEFycmF5PENhY2hlRW50cnk8ZG91YmxlPiwgY2FjaGVT
aXplPiBkb3VibGVDYWNoZTsKICAgICAgICAgRml4ZWRBcnJheTxDYWNoZUVudHJ5PGludD4sIGNh
Y2hlU2l6ZT4gaW50Q2FjaGU7CiAgICAgICAgIEZpeGVkQXJyYXk8Q2FjaGVFbnRyeTx1bnNpZ25l
ZD4sIGNhY2hlU2l6ZT4gdW5zaWduZWRDYWNoZTsKLSAgICAgICAgRml4ZWRBcnJheTxVU3RyaW5n
LCBjYWNoZVNpemU+IHNtYWxsSW50Q2FjaGU7CisgICAgICAgIEZpeGVkQXJyYXk8U3RyaW5nLCBj
YWNoZVNpemU+IHNtYWxsSW50Q2FjaGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNWE2ZmNkZGYwMzk1NWEzZjA3YTNkOTZlOTQyYzI4MDM3YTM4MDlkNS4uMjFlY2Nk
MzBlOTliYmMwY2VlYjJmOWU5ZTFhNWM3ZjhiODI2YmVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1
ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpOwotICAgIFVTdHJpbmcgcHJvcGVydHlOYW1lID0g
ZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUHJvcGVydGllcyBj
YW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOwogICAgIEpTT2JqZWN0KiBPID0gYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIFVTdHJpbmcgcHJvcGVydHlOYW1lID0gZXhl
Yy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBw
cm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCAyNDA1M2M1
MmFhYmZmYzViZDllMzQzMzZiY2NkYmFhMzM5MTcxZDMxLi4zMGJhMGIyN2Q3YWUyYmRmNDg2Zjdi
OWY0MWU3ODU0MWFjOTllYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1
cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUoZ2xvYmFsRGF0YSwgczEsIHMyKTsKICAgICB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBV
U3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIsIGNvbnN0IFVTdHJpbmcmIHUzKQorICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgdTEsIGNvbnN0IFN0cmluZyYgdTIsIGNvbnN0IFN0cmluZyYgdTMpCiAgICAgewogICAgICAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCkBAIC0y
MjEsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gdjEuYXNO
dW1iZXIoKSA8IHYyLmFzTnVtYmVyKCk7CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcodjEpICYm
IGlzSlNTdHJpbmcodjIpKQotICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+dmFsdWUo
Y2FsbEZyYW1lKSA8IGFzU3RyaW5nKHYyKS0+dmFsdWUoY2FsbEZyYW1lKTsKKyAgICAgICAgICAg
IHJldHVybiBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oYXNTdHJpbmcodjEpLT52YWx1ZShjYWxs
RnJhbWUpLCBhc1N0cmluZyh2MiktPnZhbHVlKGNhbGxGcmFtZSkpOwogCiAgICAgICAgIGRvdWJs
ZSBuMTsKICAgICAgICAgZG91YmxlIG4yOwpAQCAtMjM5LDcgKzIzOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikKICAgICAg
ICAgICAgIHJldHVybiBuMSA8IG4yOwotICAgICAgICByZXR1cm4gYXNTdHJpbmcocDEpLT52YWx1
ZShjYWxsRnJhbWUpIDwgYXNTdHJpbmcocDIpLT52YWx1ZShjYWxsRnJhbWUpOworICAgICAgICBy
ZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKHAxKS0+dmFsdWUoY2FsbEZy
YW1lKSwgYXNTdHJpbmcocDIpLT52YWx1ZShjYWxsRnJhbWUpKTsKICAgICB9CiAKICAgICAvLyBT
ZWUgRVM1IDExLjguMy8xMS44LjQvMTEuOC41IGZvciBkZWZpbml0aW9uIG9mIGxlZnRGaXJzdCwg
dGhpcyB2YWx1ZSBlbnN1cmVzIGNvcnJlY3QKQEAgLTI1NSw3ICsyNTUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpIDw9IHYyLmFzTnVtYmVyKCk7
CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcodjEpICYmIGlzSlNTdHJpbmcodjIpKQotICAgICAg
ICAgICAgcmV0dXJuICEoYXNTdHJpbmcodjIpLT52YWx1ZShjYWxsRnJhbWUpIDwgYXNTdHJpbmco
djEpLT52YWx1ZShjYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIHJldHVybiAhY29kZVBvaW50Q29t
cGFyZUxlc3NUaGFuKGFzU3RyaW5nKHYyKS0+dmFsdWUoY2FsbEZyYW1lKSwgYXNTdHJpbmcodjEp
LT52YWx1ZShjYWxsRnJhbWUpKTsKIAogICAgICAgICBkb3VibGUgbjE7CiAgICAgICAgIGRvdWJs
ZSBuMjsKQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpZiAo
d2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpCiAgICAgICAgICAgICByZXR1cm4gbjEgPD0g
bjI7Ci0gICAgICAgIHJldHVybiAhKGFzU3RyaW5nKHAyKS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFz
U3RyaW5nKHAxKS0+dmFsdWUoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiAhY29kZVBvaW50
Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKHAyKS0+dmFsdWUoY2FsbEZyYW1lKSwgYXNTdHJpbmco
cDEpLT52YWx1ZShjYWxsRnJhbWUpKTsKICAgICB9CiAKICAgICAvLyBGYXN0LXBhdGggY2hvaWNl
cyBoZXJlIGFyZSBiYXNlZCBvbiBmcmVxdWVuY3kgZGF0YSBmcm9tIFN1blNwaWRlcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CmluZGV4IDU5NTNmNWU4NzZjNzVjMjA2YTU0YTI1ZjlmNTg3ZTEwOTAxNThkMjcuLjJkMGYyN2Ez
ZTNjZjRkMTFkYTk1ZjhjZWRlMTgzMmVhMDYwMmE0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaApAQCAtMjIsMTEgKzIy
LDExIEBACiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKIAogI2luY2x1ZGUgIlByb3Bl
cnR5T2Zmc2V0LmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmll
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJ
bXBsLmg+CiAKIAogI2lmbmRlZiBOREVCVUcKQEAgLTQ0LDcgKzQ0LDcgQEAgZXh0ZXJuIGludCBu
dW1SZW1vdmVzOwogCiAjZW5kaWYKIAotI2RlZmluZSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRS
WV9LRVkgKChTdHJpbmdJbXBsKikxKSAKKyNkZWZpbmUgUFJPUEVSVFlfTUFQX0RFTEVURURfRU5U
UllfS0VZICgoU3RyaW5nSW1wbCopMSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDY0ZTU1M2JlMWM5NGM2MTI4ZTA0ZTE1
ZDI3NTFhN2Y0NDk2MzhlNzEuLjc3NTcyNzRmMWYzOTEzYjQzZDc0ODdkN2Y2NDI0ZTM0MmEwZGVh
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtNDAsNyAr
NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cDo6c19pbmZv
ID0geyAiUmVnRXhwIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdFeHApIH07CiAK
LVJlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFVTdHJpbmcmIHN0cmluZykKK1JlZ0V4cEZs
YWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIFJlZ0V4cEZsYWdz
IGZsYWdzID0gTm9GbGFnczsKIApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB+UmVn
RXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3IoKTsKIAotICAgIHZvaWQgb3V0cHV0T25lVGVzdChS
ZWdFeHAqLCBVU3RyaW5nLCBpbnQsIGludCosIGludCk7CisgICAgdm9pZCBvdXRwdXRPbmVUZXN0
KFJlZ0V4cCosIFN0cmluZywgaW50LCBpbnQqLCBpbnQpOwogICAgIHZvaWQgY2xlYXJSZWdFeHAo
UmVnRXhwKiByZWdFeHApCiAgICAgewogICAgICAgICBpZiAocmVnRXhwID09IG1fbGFzdFJlZ0V4
cCkKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWdFeHBGdW5jdGlv
bmFsVGVzdENvbGxlY3RvcigpOwogCi0gICAgdm9pZCBvdXRwdXRFc2NhcGVkVVN0cmluZyhjb25z
dCBVU3RyaW5nJiwgYm9vbCBlc2NhcGVTbGFzaCA9IGZhbHNlKTsKKyAgICB2b2lkIG91dHB1dEVz
Y2FwZWRTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBlc2NhcGVTbGFzaCA9IGZhbHNlKTsKIAog
ICAgIHN0YXRpYyBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvciogc19pbnN0YW5jZTsKICAg
ICBGSUxFKiBtX2ZpbGU7CkBAIC0xMTEsMTIgKzExMSwxMiBAQCBSZWdFeHBGdW5jdGlvbmFsVGVz
dENvbGxlY3RvciogUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6OmdldCgpCiAgICAgcmV0
dXJuIHNfaW5zdGFuY2U7CiB9CiAKLXZvaWQgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6
Om91dHB1dE9uZVRlc3QoUmVnRXhwKiByZWdFeHAsIFVTdHJpbmcgcywgaW50IHN0YXJ0T2Zmc2V0
LCBpbnQqIG92ZWN0b3IsIGludCByZXN1bHQpCit2b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29s
bGVjdG9yOjpvdXRwdXRPbmVUZXN0KFJlZ0V4cCogcmVnRXhwLCBTdHJpbmcgcywgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQqIG92ZWN0b3IsIGludCByZXN1bHQpCiB7CiAgICAgaWYgKCghbV9sYXN0UmVn
RXhwKSB8fCAobV9sYXN0UmVnRXhwICE9IHJlZ0V4cCkpIHsKICAgICAgICAgbV9sYXN0UmVnRXhw
ID0gcmVnRXhwOwogICAgICAgICBmcHV0YygnLycsIG1fZmlsZSk7Ci0gICAgICAgIG91dHB1dEVz
Y2FwZWRVU3RyaW5nKHJlZ0V4cC0+cGF0dGVybigpLCB0cnVlKTsKKyAgICAgICAgb3V0cHV0RXNj
YXBlZFN0cmluZyhyZWdFeHAtPnBhdHRlcm4oKSwgdHJ1ZSk7CiAgICAgICAgIGZwdXRjKCcvJywg
bV9maWxlKTsKICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAgICAgICAgICBmcHV0
YygnZycsIG1fZmlsZSk7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBSZWdFeHBGdW5jdGlvbmFs
VGVzdENvbGxlY3Rvcjo6b3V0cHV0T25lVGVzdChSZWdFeHAqIHJlZ0V4cCwgVVN0cmluZyBzLCBp
bnQKICAgICB9CiAKICAgICBmcHJpbnRmKG1fZmlsZSwgIiBcIiIpOwotICAgIG91dHB1dEVzY2Fw
ZWRVU3RyaW5nKHMpOworICAgIG91dHB1dEVzY2FwZWRTdHJpbmcocyk7CiAgICAgZnByaW50Ziht
X2ZpbGUsICJcIiwgJWQsICVkLCAoIiwgc3RhcnRPZmZzZXQsIHJlc3VsdCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7IGkrKykgewogICAg
ICAgICBpbnQgc3VicGF0dGVybkJlZ2luID0gb3ZlY3RvcltpICogMl07CkBAIC0xNTksNyArMTU5
LDcgQEAgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6On5SZWdFeHBGdW5jdGlvbmFsVGVz
dENvbGxlY3RvcigpCiAgICAgc19pbnN0YW5jZSA9IDA7CiB9CiAKLXZvaWQgUmVnRXhwRnVuY3Rp
b25hbFRlc3RDb2xsZWN0b3I6Om91dHB1dEVzY2FwZWRVU3RyaW5nKGNvbnN0IFVTdHJpbmcmIHMs
IGJvb2wgZXNjYXBlU2xhc2gpCit2b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpv
dXRwdXRFc2NhcGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgcywgYm9vbCBlc2NhcGVTbGFzaCkKIHsK
ICAgICBpbnQgbGVuID0gcy5sZW5ndGgoKTsKICAgICAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lk
IFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpvdXRwdXRFc2NhcGVkVVN0cmluZyhjb25z
dCBVU3RyaW5nJiBzLCBib29sCiB9CiAjZW5kaWYKIAotUmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFn
cyBmbGFncykKK1JlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKICAgICA6IEpTQ2VsbChn
bG9iYWxEYXRhLCBnbG9iYWxEYXRhLnJlZ0V4cFN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fc3Rh
dGUoTm90Q29tcGlsZWQpCiAgICAgLCBtX3BhdHRlcm5TdHJpbmcocGF0dGVyblN0cmluZykKQEAg
LTI1MCwxNCArMjUwLDE0IEBAIHZvaWQgUmVnRXhwOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAg
ICB0aGlzT2JqZWN0LT5SZWdFeHA6On5SZWdFeHAoKTsKIH0KIAotUmVnRXhwKiBSZWdFeHA6OmNy
ZWF0ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmlu
ZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCitSZWdFeHAqIFJlZ0V4cDo6Y3Jl
YXRlV2l0aG91dENhY2hpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcm
IHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQogewogICAgIFJlZ0V4cCogcmVnRXhw
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwPihnbG9iYWxEYXRhLmhlYXApKSBS
ZWdFeHAoZ2xvYmFsRGF0YSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwogICAgIHJlZ0V4cC0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgcmV0dXJuIHJlZ0V4cDsKIH0KIAotUmVnRXhw
KiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQorUmVnRXhwKiBSZWdFeHA6OmNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywg
UmVnRXhwRmxhZ3MgZmxhZ3MpCiB7CiAgICAgcmV0dXJuIGdsb2JhbERhdGEucmVnRXhwQ2FjaGUo
KS0+bG9va3VwT3JDcmVhdGUocGF0dGVyblN0cmluZywgZmxhZ3MpOwogfQpAQCAtMzE4LDcgKzMx
OCw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhCiAgICAgY29tcGlsZSgmZ2xvYmFsRGF0YSwg
Y2hhclNpemUpOwogfQogCi1pbnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAz
Mj4mIG92ZWN0b3IpCitpbnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYg
b3ZlY3RvcikKIHsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgbV9ydE1hdGNoQ2Fs
bENvdW50Kys7CkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vz
c2FyeU1hdGNoT25seShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFlhcnI6OllhcnJDaGEKICAg
ICBjb21waWxlTWF0Y2hPbmx5KCZnbG9iYWxEYXRhLCBjaGFyU2l6ZSk7CiB9CiAKLU1hdGNoUmVz
dWx0IFJlZ0V4cDo6bWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKK01hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KQogewogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBtX3J0TWF0Y2hDYWxsQ291
bnQrKzsKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIFJlZ0V4cDo6aW52YWxpZGF0ZUNvZGUoKQog
fQogCiAjaWYgRU5BQkxFKFlBUlJfSklUX0RFQlVHKQotdm9pZCBSZWdFeHA6Om1hdGNoQ29tcGFy
ZVdpdGhJbnRlcnByZXRlcihjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIGludCog
b2Zmc2V0VmVjdG9yLCBpbnQgaml0UmVzdWx0KQordm9pZCBSZWdFeHA6Om1hdGNoQ29tcGFyZVdp
dGhJbnRlcnByZXRlcihjb25zdCBTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZz
ZXRWZWN0b3IsIGludCBqaXRSZXN1bHQpCiB7CiAgICAgaW50IG9mZnNldFZlY3RvclNpemUgPSAo
bV9udW1TdWJwYXR0ZXJucyArIDEpICogMjsKICAgICBWZWN0b3I8aW50LCAzMj4gaW50ZXJwcmV0
ZXJPdmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCBhZDEw
MjAzNzZjYjEyYjdlZWEwZTlkNjJkYTMyYTY2OWQyNWJhYThiLi4yODc0NDRiOTUyNDEwMDEwNDUx
ZTcxNGZiMWUzOGM0MGRjOTY2YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiTWF0Y2hSZXN1bHQuaCIKICNpbmNs
dWRlICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKLSNpbmNsdWRlICJVU3Ry
aW5nLmgiCiAjaW5jbHVkZSAieWFyci9ZYXJyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogI2luY2x1ZGUgInlhcnIvWWFyckpJVC5oIgpA
QCAtNDAsMjYgKzQwLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBSZWdFeHBSZXBy
ZXNlbnRhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBSZWdFeHBGbGFncyByZWdFeHBGbGFncyhjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
Z0V4cCogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4
cEZsYWdzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3JlYXRl
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIGJvb2wgZ2xvYmFs
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdHbG9iYWw7IH0KICAgICAgICAgYm9vbCBp
Z25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9CiAg
ICAgICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdNdWx0
aWxpbmU7IH0KIAotICAgICAgICBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1
cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuICFtX2NvbnN0cnVjdGlvbkVycm9yICYmIG1fZmxhZ3MgIT0gSW52YWxp
ZEZsYWdzOyB9CiAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0KIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBp
bnQgbWF0Y2goSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOwotICAgICAgICBNYXRjaFJlc3VsdCBtYXRj
aChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0Y2goSlNHbG9iYWxEYXRhJiwgY29uc3Qg
U3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7
CisgICAgICAgIE1hdGNoUmVzdWx0IG1hdGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMo
KSBjb25zdCB7IHJldHVybiBtX251bVN1YnBhdHRlcm5zOyB9CiAKICAgICAgICAgYm9vbCBoYXND
b2RlKCkKQEAgLTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgUmVnRXhwQ2FjaGU7Ci0gICAgICAgIFJlZ0V4cChKU0dsb2Jh
bERhdGEmLCBjb25zdCBVU3RyaW5nJiwgUmVnRXhwRmxhZ3MpOworICAgICAgICBSZWdFeHAoSlNH
bG9iYWxEYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVnRXhwRmxhZ3MpOwogCi0gICAgICAgIHN0YXRp
YyBSZWdFeHAqIGNyZWF0ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJp
bmcmLCBSZWdFeHBGbGFncyk7CisgICAgICAgIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZVdpdGhvdXRD
YWNoaW5nKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYsIFJlZ0V4cEZsYWdzKTsKIAogICAg
ICAgICBlbnVtIFJlZ0V4cFN0YXRlIHsKICAgICAgICAgICAgIFBhcnNlRXJyb3IsCkBAIC0xMDUs
MTAgKzEwNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb21waWxlSWZOZWNl
c3NhcnlNYXRjaE9ubHkoSlNHbG9iYWxEYXRhJiwgWWFycjo6WWFyckNoYXJTaXplKTsKIAogI2lm
IEVOQUJMRShZQVJSX0pJVF9ERUJVRykKLSAgICAgICAgdm9pZCBtYXRjaENvbXBhcmVXaXRoSW50
ZXJwcmV0ZXIoY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZzZXRWZWN0
b3IsIGludCBqaXRSZXN1bHQpOworICAgICAgICB2b2lkIG1hdGNoQ29tcGFyZVdpdGhJbnRlcnBy
ZXRlcihjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0VmVjdG9yLCBp
bnQgaml0UmVzdWx0KTsKICNlbmRpZgogCi0gICAgICAgIFVTdHJpbmcgbV9wYXR0ZXJuU3RyaW5n
OworICAgICAgICBTdHJpbmcgbV9wYXR0ZXJuU3RyaW5nOwogICAgICAgICBSZWdFeHBGbGFncyBt
X2ZsYWdzOwogICAgICAgICBjb25zdCBjaGFyKiBtX2NvbnN0cnVjdGlvbkVycm9yOwogICAgICAg
ICB1bnNpZ25lZCBtX251bVN1YnBhdHRlcm5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCmluZGV4IDUzYTEzYTRiNTliNzdlNzZhNGI4ODBjZmU3NWIz
NjA2Yzg3ZTFmYWQuLmM2N2RhYjhlNjFlZTAyYTE2OTFhZjQ3OTY3YjBkYmQzOGU5ZTY0NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVJlZ0V4cCogUmVnRXhwQ2FjaGU6Omxv
b2t1cE9yQ3JlYXRlKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZs
YWdzKQorUmVnRXhwKiBSZWdFeHBDYWNoZTo6bG9va3VwT3JDcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKIHsKICAgICBSZWdFeHBLZXkga2V5KGZs
YWdzLCBwYXR0ZXJuU3RyaW5nKTsKICAgICBpZiAoUmVnRXhwKiByZWdFeHAgPSBtX3dlYWtDYWNo
ZS5nZXQoa2V5KSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBSZWdFeHBDYWNoZTo6ZmluYWxpemUo
SGFuZGxlPFVua25vd24+IGhhbmRsZSwgdm9pZCopCiAKIHZvaWQgUmVnRXhwQ2FjaGU6OmFkZFRv
U3Ryb25nQ2FjaGUoUmVnRXhwKiByZWdFeHApCiB7Ci0gICAgVVN0cmluZyBwYXR0ZXJuID0gcmVn
RXhwLT5wYXR0ZXJuKCk7CisgICAgU3RyaW5nIHBhdHRlcm4gPSByZWdFeHAtPnBhdHRlcm4oKTsK
ICAgICBpZiAocGF0dGVybi5sZW5ndGgoKSA+IG1heFN0cm9uZ0NhY2hlYWJsZVBhdHRlcm5MZW5n
dGgpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0cm9uZ0NhY2hlW21fbmV4dEVudHJ5SW5TdHJv
bmdDYWNoZV0uc2V0KCptX2dsb2JhbERhdGEsIHJlZ0V4cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAppbmRleCA0ZjNlYTE1MzZhNGVhZTEwZDlkY2JlYjc5
NGVjZDc1MTBjMmE2MWY2Li5jNmE0YTBhYTJhZDBhZGQzNjMwNjFmOWMxZWI0ZWJkYWY5MjVmYTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgKQEAgLTI4
LDcgKzI4LDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIK
ICNpbmNsdWRlICJTdHJvbmcuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2Vh
ay5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTU0LDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6
ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogCi0gICAgUmVnRXhwKiBsb29rdXBP
ckNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyk7CisgICAg
UmVnRXhwKiBsb29rdXBPckNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVyblN0cmluZywg
UmVnRXhwRmxhZ3MpOwogICAgIHZvaWQgYWRkVG9TdHJvbmdDYWNoZShSZWdFeHAqKTsKICAgICBS
ZWdFeHBDYWNoZU1hcCBtX3dlYWtDYWNoZTsgLy8gSG9sZHMgYWxsIHJlZ3VsYXIgZXhwcmVzc2lv
bnMgY3VycmVudGx5IGxpdmUuCiAgICAgaW50IG1fbmV4dEVudHJ5SW5TdHJvbmdDYWNoZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cAppbmRleCAwYjQ2MzQ3NGYyZjVmOWM4NzY4NDQ3ZDg1YTA2MzgzMWYyMTZhMDA4Li41N2VlN2Rm
MTRiNDk3NGJkZDQxMmQ0YzYyMGVlOTRjMDFjMGM4YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yNzEsNyArMjcx
LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KGFy
ZzApOwogICAgIH0KIAotICAgIFVTdHJpbmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/
IFVTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3Ry
aW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoIiIpIDogYXJnMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmgKaW5kZXggZDcxNGYyMTY3OTUzNTZiZDc5Y2EwNTE0YjU4MzFl
ZmQ4NDkwM2JhMS4uMmNiMWMxMjA0NGY1MDIzMTU5ODQ0NmJiZmYxMjE4NmRkZWI1YTE3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
CkBAIC01NSw4ICs1NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIE1hdGNoUmVzdWx0IHBlcmZvcm1NYXRjaChK
U0dsb2JhbERhdGEmLCBSZWdFeHAqLCBKU1N0cmluZyosIGNvbnN0IFVTdHJpbmcmLCBpbnQgc3Rh
cnRPZmZzZXQsIGludCoqIG92ZWN0b3IpOwotICAgICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0
Y2goSlNHbG9iYWxEYXRhJiwgUmVnRXhwKiwgSlNTdHJpbmcqLCBjb25zdCBVU3RyaW5nJiwgaW50
IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFs
RGF0YSYsIFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0
LCBpbnQqKiBvdmVjdG9yKTsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xv
YmFsRGF0YSYsIFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zm
c2V0KTsKIAogICAgICAgICB2b2lkIHNldE11bHRpbGluZShib29sIG11bHRpbGluZSkgeyBtX211
bHRpbGluZSA9IG11bHRpbGluZTsgfQogICAgICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbXVsdGlsaW5lOyB9CkBAIC0xMDEsNyArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICBleHByZXNzaW9uIG1hdGNoaW5nIHRocm91Z2ggdGhlIHBlcmZvcm1NYXRjaCBmdW5j
dGlvbi4gV2UgdXNlIGNhY2hlZCByZXN1bHRzIHRvIGNhbGN1bGF0ZSwgCiAgICAgICBlLmcuLCBS
ZWdFeHAubGFzdE1hdGNoIGFuZCBSZWdFeHAubGVmdFBhcmVuLgogICAgICovCi0gICAgQUxXQVlT
X0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNoKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcsIGNv
bnN0IFVTdHJpbmcmIGlucHV0LCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IpCisgICAg
QUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNo
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJp
bmcsIGNvbnN0IFN0cmluZyYgaW5wdXQsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3RvcikK
ICAgICB7CiAgICAgICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2goZ2xvYmFsRGF0YSwg
aW5wdXQsIHN0YXJ0T2Zmc2V0LCBtX292ZWN0b3IpOwogCkBAIC0xMjAsNyArMTIwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHBvc2l0aW9uLCBlbmQp
OwogICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cENvbnN0cnVjdG9y
OjpwZXJmb3JtTWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHJlZ0V4cCwg
SlNTdHJpbmcqIHN0cmluZywgY29uc3QgVVN0cmluZyYgaW5wdXQsIGludCBzdGFydE9mZnNldCkK
KyAgICBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cENvbnN0cnVjdG9yOjpwZXJmb3Jt
TWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHJlZ0V4cCwgSlNTdHJpbmcq
IHN0cmluZywgY29uc3QgU3RyaW5nJiBpbnB1dCwgaW50IHN0YXJ0T2Zmc2V0KQogICAgIHsKICAg
ICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwLT5tYXRjaChnbG9iYWxEYXRhLCBpbnB1
dCwgc3RhcnRPZmZzZXQpOwogICAgICAgICBpZiAocmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBLZXkuaAppbmRleCBjZGFmZjI3ZjU5YjA2OTNiZmJiNWM4ZGFiNjlm
NmM4YzVhYTNhYzlmLi5mOTNmYmJjMWQ5MGQxNDYzMTQ4ZjE4NDgxYWZlMWFkMDlkYTRiMWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXkuaApAQCAtMjgsOCArMjgs
OCBAQAogI2lmbmRlZiBSZWdFeHBLZXlfaAogI2RlZmluZSBSZWdFeHBLZXlfaAogCi0jaW5jbHVk
ZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU2LDcgKzU2
LDcgQEAgc3RydWN0IFJlZ0V4cEtleSB7CiAgICAgewogICAgIH0KIAotICAgIFJlZ0V4cEtleShS
ZWdFeHBGbGFncyBmbGFncywgY29uc3QgVVN0cmluZyYgcGF0dGVybikKKyAgICBSZWdFeHBLZXko
UmVnRXhwRmxhZ3MgZmxhZ3MsIGNvbnN0IFN0cmluZyYgcGF0dGVybikKICAgICAgICAgOiBmbGFn
c1ZhbHVlKGZsYWdzKQogICAgICAgICAsIHBhdHRlcm4ocGF0dGVybi5pbXBsKCkpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXgg
YWVmYTFiNDRhMGI3NWNjNjc2ZDI0NmRiMzFiMTBiNjM0NzU5YWMwYS4uNmZkOWRiMjljMDRhYTM2
YjkzZWJmY2M4YjE1NGZjZGZkZTAzYmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0zMSw5ICszMSw4IEBACiAjaW5jbHVkZSAiUmVn
RXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNs
dWRlICJSZWdFeHBQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTc5LDcgKzE3OCw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0TXVsdGlsaW5lKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIAogSlNWYWx1ZSByZWdFeHBP
YmplY3RTb3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVVN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5y
ZWdFeHAoKS0+cGF0dGVybigpOworICAgIFN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qo
c2xvdEJhc2UpLT5yZWdFeHAoKS0+cGF0dGVybigpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBh
dHRlcm4ubGVuZ3RoKCk7CiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwYXR0ZXJuLmNo
YXJhY3RlcnMoKTsKICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFs
c2U7CkBAIC0yMjcsNyArMjI2LDcgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiAKICAgICBwcmV2aW91
c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOwogICAgIGluQnJhY2tldHMgPSBmYWxzZTsK
LSAgICBVU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFVDaGFy
IGNoID0gY2hhcmFjdGVyc1tpXTsKICAgICAgICAgaWYgKCFwcmV2aW91c0NoYXJhY3Rlcldhc0Jh
Y2tzbGFzaCkgewpAQCAtMjY0LDcgKzI2Myw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgICAg
ICAgICAgcHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBjaCA9PSAnXFwnOwogICAgIH0K
IAotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9VU3RyaW5nKCkpOworICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgUmVnRXhw
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTI4
OCw3ICsyODcsNyBAQCBNYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTdHJpbmcqIHN0cmluZykKIHsKICAgICBSZWdFeHAqIHJlZ0V4cCA9IHRoaXMtPnJl
Z0V4cCgpOwogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwQ29uc3RydWN0b3IoKTsKLSAgICBVU3RyaW5n
IGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgaW5wdXQgPSBzdHJpbmct
PnZhbHVlKGV4ZWMpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKICAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAgICAgIHJldHVybiByZWdF
eHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKGdsb2JhbERhdGEsIHJlZ0V4cCwgc3RyaW5nLCBp
bnB1dCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAppbmRleCAyNGM3YzgwMjdjMWQ5MzUzMzczZmMyNzBmY2M5NWQyZjE5M2U3NWJk
Li5jMjJlNmQwMzlkMzI5OTFmMjQ3MmVhOTI1NTUzZTBjMWJhMjM2MTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTM0LDcg
KzM0LDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgog
I2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTExMCw3ICsxMDksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJl
Z0V4cCBmcm9tIGFub3RoZXIuIikpOwogICAgICAgICByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChh
cmcwKS0+cmVnRXhwKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgVVN0cmluZyBwYXR0ZXJuID0g
IWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IFVTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA/IFN0cmluZygiIikgOiBhcmcwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTUzLDcgKzE1Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBwb3N0Zml4W2luZGV4KytdID0gJ2knOwogICAgIGlmICh0aGlzT2Jq
ZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLm11bHRpbGluZSkudG9Cb29sZWFu
KGV4ZWMpKQogICAgICAgICBwb3N0Zml4W2luZGV4XSA9ICdtJzsKLSAgICBVU3RyaW5nIHNvdXJj
ZSA9IHRoaXNPYmplY3QtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc291cmNlKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IHRoaXNPYmpl
Y3QtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc291cmNlKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgLy8gSWYgc291cmNlIGlzIGVtcHR5LCB1c2UgIi8oPzopLyIg
dG8gYXZvaWQgY29sbGlkaW5nIHdpdGggY29tbWVudCBzeW50YXgKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIi8iLCBzb3VyY2UsIHBvc3Rm
aXgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxs
U3RyaW5ncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
Y3BwCmluZGV4IGY1MGY3M2QyN2M3YzAzMGZhZTJhM2RmYjY2NmY1YTRmYWFiNWMyMmUuLjU2YTM1
OTI3OWRjY2RmNjVkMWE5Y2M1YWVlYWY4NmU3ODVlNWZhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TbWFsbFN0cmluZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxs
U3RyaW5ncy5oCmluZGV4IGU2MDljNTA5MjIxYzZhYjAwZDZkNTc4YTlmMzM0ZDE2NzRlZDFiMWUu
LjViYzlkMjI1MjM5ZmJkMzg5MDY2Y2ViNmY0YmM5ZjU5OTcxYzc1MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCkBAIC0yNiw4ICsyNiw4IEBACiAj
aWZuZGVmIFNtYWxsU3RyaW5nc19oCiAjZGVmaW5lIFNtYWxsU3RyaW5nc19oCiAKLSNpbmNsdWRl
ICJVU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNkZWZpbmUgSlNDX0NP
TU1PTl9TVFJJTkdTX0VBQ0hfTkFNRShtYWNybykgXApAQCAtNDEsNiArNDEsMTAgQEAKICAgICBt
YWNybyhzdHJpbmcpIFwKICAgICBtYWNybyh0cnVlKQogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZ0ltcGw7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSGVhcFJvb3RW
aXNpdG9yOwpAQCAtNzEsNyArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXTsKICAgICAgICAgfQogCi0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0cmlu
Z1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IFdURjo6U3RyaW5nSW1wbCogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIg
Y2hhcmFjdGVyKTsKIAogICAgICAgICB2b2lkIGZpbmFsaXplU21hbGxTdHJpbmdzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDNj
MDM3YmNkMTdhYzA3YWUzMGJiYTY4ZjczNzJiODFlNTQ5MWFiZWYuLjZjMWYxNmQ2M2ViN2ZiMjli
OGQwNTFkZjE0MGJjZDMwZWZkYTI1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgU3RyaW5nT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVyCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09i
amVjdCo+KG9iamVjdCk7CiAgICAgaW50IHNpemUgPSB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVl
KCktPmxlbmd0aCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmc6Om51bWJlcihpKSkp
OworICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6bnVt
YmVyKGkpKSk7CiAgICAgaWYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykKICAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMDAxZTVlOGIwZDFiYTVjZjZlZjFkY2QwMzk5
NTRiODJjYmNhOWM1NS4uNzk1ZTRlNjhhNmZkOGI1MWQ2ZTZiYmEyYmQyMTAwZTYwMmRiNDYzYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMKIC8vIEhlbHBl
ciBmb3IgcHJvZHVjaW5nIGEgSlNTdHJpbmcgZm9yICdzdHJpbmcnLCB3aGVyZSAnc3RyaW5nJyB3
YXMgYmVlbiBwcm9kdWNlZCBieQogLy8gY2FsbGluZyBUb1N0cmluZyBvbiAnb3JpZ2luYWxWYWx1
ZScuIEluIGNhc2VzIHdoZXJlICdvcmlnaW5hbFZhbHVlJyBhbHJlYWR5IHdhcyBhCiAvLyBzdHJp
bmcgcHJpbWl0aXZlIHdlIGNhbiBqdXN0IHVzZSB0aGlzLCBvdGhlcndpc2Ugd2UgbmVlZCB0byBh
bGxvY2F0ZSBhIG5ldyBKU1N0cmluZy4KLXN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5n
V2l0aFJldXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBV
U3RyaW5nJiBzdHJpbmcpCitzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhSZXVz
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7CiAgICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBB
U1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7CkBA
IC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdHJpbmdXaXRoUmV1
c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotc3RhdGljIE5FVkVSX0lOTElORSBVU3RyaW5nIHN1YnN0aXR1
dGVCYWNrcmVmZXJlbmNlc1Nsb3coY29uc3QgVVN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0IFVT
dHJpbmcmIHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZywgc2l6ZV90IGkp
CitzdGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93
KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBp
bnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnLCBzaXplX3QgaSkKIHsKICAgICBWZWN0b3I8Q2hhclR5
cGU+IHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQ7CiAgICAgaW50IG9mZnNldCA9IDA7CkBAIC0xODQs
NyArMTg0LDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVm
ZXJlbmNlc1Nsb3coY29uc3QgVVN0cmluZyYgcmVwbGFjZW0KICAgICAgICAgaWYgKHJlZiA9PSAn
JCcpIHsKICAgICAgICAgICAgIC8vICIkJCIgLT4gIiQiCiAgICAgICAgICAgICArK2k7Ci0gICAg
ICAgICAgICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50LmFwcGVuZChyZXBsYWNlbWVudC5nZXRDaGFy
YWN0ZXJzPENoYXJUeXBlPigpICsgb2Zmc2V0LCBpIC0gb2Zmc2V0KTsKKyAgICAgICAgICAgIHN1
YnN0aXR1dGVkUmVwbGFjZW1lbnQuYXBwZW5kKHJlcGxhY2VtZW50LmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0PENoYXJUeXBlPigpICsgb2Zmc2V0LCBpIC0gb2Zmc2V0KTsKICAgICAgICAgICAg
IG9mZnNldCA9IGkgKyAxOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTIy
NCwyMSArMjI0LDIxIEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgVVN0cmluZyBzdWJzdGl0dXRlQmFj
a3JlZmVyZW5jZXNTbG93KGNvbnN0IFVTdHJpbmcmIHJlcGxhY2VtCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBpZiAoaSAtIG9mZnNldCkKLSAgICAgICAgICAgIHN1YnN0aXR1dGVk
UmVwbGFjZW1lbnQuYXBwZW5kKHJlcGxhY2VtZW50LmdldENoYXJhY3RlcnM8Q2hhclR5cGU+KCkg
KyBvZmZzZXQsIGkgLSBvZmZzZXQpOworICAgICAgICAgICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVu
dC5hcHBlbmQocmVwbGFjZW1lbnQuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQ8Q2hhclR5cGU+
KCkgKyBvZmZzZXQsIGkgLSBvZmZzZXQpOwogICAgICAgICBpICs9IDEgKyBhZHZhbmNlOwogICAg
ICAgICBvZmZzZXQgPSBpICsgMTsKICAgICAgICAgaWYgKGJhY2tyZWZTdGFydCA+PSAwKQotICAg
ICAgICAgICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5hcHBlbmQoc291cmNlLmdldENoYXJhY3Rl
cnM8Q2hhclR5cGU+KCkgKyBiYWNrcmVmU3RhcnQsIGJhY2tyZWZMZW5ndGgpOworICAgICAgICAg
ICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5hcHBlbmQoc291cmNlLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0PENoYXJUeXBlPigpICsgYmFja3JlZlN0YXJ0LCBiYWNrcmVmTGVuZ3RoKTsKICAg
ICB9IHdoaWxlICgoaSA9IHJlcGxhY2VtZW50LmZpbmQoJyQnLCBpICsgMSkpICE9IG5vdEZvdW5k
KTsKIAogICAgIGlmIChyZXBsYWNlbWVudC5sZW5ndGgoKSAtIG9mZnNldCkKLSAgICAgICAgc3Vi
c3RpdHV0ZWRSZXBsYWNlbWVudC5hcHBlbmQocmVwbGFjZW1lbnQuZ2V0Q2hhcmFjdGVyczxDaGFy
VHlwZT4oKSArIG9mZnNldCwgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSBvZmZzZXQpOworICAgICAg
ICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50LmFwcGVuZChyZXBsYWNlbWVudC5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydDxDaGFyVHlwZT4oKSArIG9mZnNldCwgcmVwbGFjZW1lbnQubGVuZ3RoKCkg
LSBvZmZzZXQpOwogCiAgICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5zaHJpbmtUb0ZpdCgpOwot
ICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChzdWJzdGl0dXRlZFJlcGxhY2VtZW50KTsKKyAgICBy
ZXR1cm4gU3RyaW5nOjphZG9wdChzdWJzdGl0dXRlZFJlcGxhY2VtZW50KTsKIH0KIAotc3RhdGlj
IGlubGluZSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBVU3RyaW5nJiBy
ZXBsYWNlbWVudCwgY29uc3QgVVN0cmluZyYgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJl
Z0V4cCogcmVnKQorc3RhdGljIGlubGluZSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2Vz
KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBp
bnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKQogewogICAgIHNpemVfdCBpID0gcmVwbGFjZW1lbnQu
ZmluZCgnJCcpOwogICAgIGlmIChVTkxJS0VMWShpICE9IG5vdEZvdW5kKSkgewpAQCAtMjQ5LDcg
KzI0OSw3IEBAIHN0YXRpYyBpbmxpbmUgVVN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMo
Y29uc3QgVVN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0CiAgICAgcmV0dXJuIHJlcGxhY2VtZW50
OwogfQogCi1zdGF0aWMgaW5saW5lIGludCBsb2NhbGVDb21wYXJlKGNvbnN0IFVTdHJpbmcmIGEs
IGNvbnN0IFVTdHJpbmcmIGIpCitzdGF0aWMgaW5saW5lIGludCBsb2NhbGVDb21wYXJlKGNvbnN0
IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKQogewogICAgIHJldHVybiBDb2xsYXRvcjo6dXNl
ckRlZmF1bHQoKS0+Y29sbGF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihhLmNo
YXJhY3RlcnMoKSksIGEubGVuZ3RoKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+
KGIuY2hhcmFjdGVycygpKSwgYi5sZW5ndGgoKSk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgcHVi
bGljOgogICAgIGludCBsZW5ndGg7CiB9OwogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyY2VWYWws
IGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1Jhbmdl
cywgaW50IHJhbmdlQ291bnQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyY2VWYWwsIGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmdSYW5nZSogc3Vic3RyaW5nUmFuZ2VzLCBpbnQgcmFu
Z2VDb3VudCkKIHsKICAgICBpZiAocmFuZ2VDb3VudCA9PSAxKSB7CiAgICAgICAgIGludCBzb3Vy
Y2VTaXplID0gc291cmNlLmxlbmd0aCgpOwpAQCAtMjc4LDcgKzI3OCw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNT
dHJpbmcqIHNvdXJjCiAgICAgICAgIGludCBsZW5ndGggPSBzdWJzdHJpbmdSYW5nZXNbMF0ubGVu
Z3RoOwogICAgICAgICBpZiAocG9zaXRpb24gPD0gMCAmJiBsZW5ndGggPj0gc291cmNlU2l6ZSkK
ICAgICAgICAgICAgIHJldHVybiBzb3VyY2VWYWw7Ci0gICAgICAgIC8vIFdlIGNvdWxkIGNhbGwg
VVN0cmluZzo6c3Vic3RyLCBidXQgdGhpcyB3b3VsZCByZXN1bHQgaW4gcmVkdW5kYW50IGNoZWNr
cworICAgICAgICAvLyBXZSBjb3VsZCBjYWxsIFN0cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwo
KSwgYnV0IHRoaXMgd291bGQgcmVzdWx0IGluIHJlZHVuZGFudCBjaGVja3MuCiAgICAgICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmdJbXBsOjpjcmVhdGUoc291cmNlLmltcGwoKSwgbWF4
KDAsIHBvc2l0aW9uKSwgbWluKHNvdXJjZVNpemUsIGxlbmd0aCkpKTsKICAgICB9CiAKQEAgLTMy
NSw3ICszMjUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3Vic3Ry
aW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyYwogICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCBpbXBsLnJlbGVhc2UoKSk7CiB9CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLCBKU1N0
cmluZyogc291cmNlVmFsLCBjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1Jhbmdl
KiBzdWJzdHJpbmdSYW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBVU3RyaW5nKiBzZXBhcmF0
b3JzLCBpbnQgc2VwYXJhdG9yQ291bnQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
U3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcq
IHNvdXJjZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJz
dHJpbmdSYW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBTdHJpbmcqIHNlcGFyYXRvcnMsIGlu
dCBzZXBhcmF0b3JDb3VudCkKIHsKICAgICBpZiAocmFuZ2VDb3VudCA9PSAxICYmIHNlcGFyYXRv
ckNvdW50ID09IDApIHsKICAgICAgICAgaW50IHNvdXJjZVNpemUgPSBzb3VyY2UubGVuZ3RoKCk7
CkBAIC0zMzMsNyArMzMzLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGlj
ZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICAgICAgaW50
IGxlbmd0aCA9IHN1YnN0cmluZ1Jhbmdlc1swXS5sZW5ndGg7CiAgICAgICAgIGlmIChwb3NpdGlv
biA8PSAwICYmIGxlbmd0aCA+PSBzb3VyY2VTaXplKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJj
ZVZhbDsKLSAgICAgICAgLy8gV2UgY291bGQgY2FsbCBVU3RyaW5nOjpzdWJzdHIsIGJ1dCB0aGlz
IHdvdWxkIHJlc3VsdCBpbiByZWR1bmRhbnQgY2hlY2tzCisgICAgICAgIC8vIFdlIGNvdWxkIGNh
bGwgU3RyaW5nOjpzdWJzdHJpbmdTaGFyaW5nSW1wbCgpLCBidXQgdGhpcyB3b3VsZCByZXN1bHQg
aW4gcmVkdW5kYW50IGNoZWNrcy4KICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFN0cmlu
Z0ltcGw6OmNyZWF0ZShzb3VyY2UuaW1wbCgpLCBtYXgoMCwgcG9zaXRpb24pLCBtaW4oc291cmNl
U2l6ZSwgbGVuZ3RoKSkpOwogICAgIH0KIApAQCAtNDAzLDcgKzQwMyw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0
YXRlKiBleGVjLCBKCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGltcGwucmVsZWFzZSgpKTsK
IH0KIAotc3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZW1vdmVVc2luZ1JlZ0V4
cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFVTdHJpbmcm
IHNvdXJjZSwgUmVnRXhwKiByZWdFeHApCitzdGF0aWMgTkVWRVJfSU5MSU5FIEVuY29kZWRKU1Zh
bHVlIHJlbW92ZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0
cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIHNpemVf
dCBsYXN0SW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSAwOwpAQCAtNDQ0
LDEzICs0NDQsMTMgQEAgc3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZW1vdmVV
c2luZ1JlZ0V4cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3QKIHN0YXRpYyBORVZFUl9JTkxJ
TkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIHN0cmluZywgSlNWYWx1ZSBzZWFyY2hWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHJlcGxhY2VWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIFVTdHJpbmcgcmVwbGFjZW1l
bnRTdHJpbmc7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nOwogICAgIENhbGxEYXRhIGNh
bGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEocmVwbGFjZVZhbHVl
LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAg
cmVwbGFjZW1lbnRTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogCi0gICAgY29uc3QgVVN0cmluZyYgc291cmNlID0gc3RyaW5nLT52YWx1ZShleGVjKTsK
KyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CiAgICAgdW5z
aWduZWQgc291cmNlTGVuID0gc291cmNlLmxlbmd0aCgpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwpAQCAt
NDc0LDcgKzQ3NCw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFj
ZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTCiAgICAgdW5zaWduZWQgc3Rh
cnRQb3NpdGlvbiA9IDA7CiAKICAgICBWZWN0b3I8U3RyaW5nUmFuZ2UsIDE2PiBzb3VyY2VSYW5n
ZXM7Ci0gICAgVmVjdG9yPFVTdHJpbmcsIDE2PiByZXBsYWNlbWVudHM7CisgICAgVmVjdG9yPFN0
cmluZywgMTY+IHJlcGxhY2VtZW50czsKIAogICAgIC8vIFRoaXMgaXMgZWl0aGVyIGEgbG9vcCAo
aWYgZ2xvYmFsIGlzIHNldCkgb3IgYSBvbmUtd2F5IChpZiBub3QpLgogICAgIGlmIChnbG9iYWwg
JiYgY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUykgewpAQCAtNjAxLDcgKzYwMSw3IEBAIHN0YXRpYyBO
RVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNT
dGF0ZSogZXhlYywgSlNTCiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXBsTGVuKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChzdWJzdGl0dXRlQmFja3JlZmVy
ZW5jZXMocmVwbGFjZW1lbnRTdHJpbmcsIHNvdXJjZSwgb3ZlY3RvciwgcmVnRXhwKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50
cy5hcHBlbmQoVVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50
cy5hcHBlbmQoU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApA
QCAtNjI4LDggKzYyOCw4IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVw
bGFjZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTCiAKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIGpzU3RyaW5nLCBKU1ZhbHVlIHNlYXJjaFZhbHVlKQogewotICAgIGNvbnN0
IFVTdHJpbmcmIHN0cmluZyA9IGpzU3RyaW5nLT52YWx1ZShleGVjKTsKLSAgICBVU3RyaW5nIHNl
YXJjaFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvVVN0cmluZyhleGVjKTsKKyAgICBjb25zdCBTdHJp
bmcmIHN0cmluZyA9IGpzU3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3Ry
aW5nID0gc2VhcmNoVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIApAQCAtNjUxLDE5ICs2NTEsMTkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSByZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goRXhlY1N0YXRlKiBleGVjLCBKU1N0cmlu
ZyoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQogCi0gICAgVVN0cmluZyByZXBsYWNlU3RyaW5nID0gcmVwbGFjZVZhbHVlLnRvVVN0cmlu
ZyhleGVjKTsKKyAgICBTdHJpbmcgcmVwbGFjZVN0cmluZyA9IHJlcGxhY2VWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgU3RyaW5n
SW1wbCogc3RyaW5nSW1wbCA9IHN0cmluZy5pbXBsKCk7Ci0gICAgVVN0cmluZyBsZWZ0UGFydChT
dHJpbmdJbXBsOjpjcmVhdGUoc3RyaW5nSW1wbCwgMCwgbWF0Y2hTdGFydCkpOworICAgIFN0cmlu
ZyBsZWZ0UGFydChTdHJpbmdJbXBsOjpjcmVhdGUoc3RyaW5nSW1wbCwgMCwgbWF0Y2hTdGFydCkp
OwogCiAgICAgc2l6ZV90IG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIHNlYXJjaFN0cmluZy5pbXBs
KCktPmxlbmd0aCgpOwogICAgIGludCBvdmVjdG9yWzJdID0geyBtYXRjaFN0YXJ0LCAgbWF0Y2hF
bmR9OwotICAgIFVTdHJpbmcgbWlkZGxlUGFydCA9IHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhy
ZXBsYWNlU3RyaW5nLCBzdHJpbmcsIG92ZWN0b3IsIDApOworICAgIFN0cmluZyBtaWRkbGVQYXJ0
ID0gc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2VTdHJpbmcsIHN0cmluZywgb3ZlY3Rv
ciwgMCk7CiAKICAgICBzaXplX3QgbGVmdExlbmd0aCA9IHN0cmluZ0ltcGwtPmxlbmd0aCgpIC0g
bWF0Y2hFbmQ7Ci0gICAgVVN0cmluZyByaWdodFBhcnQoU3RyaW5nSW1wbDo6Y3JlYXRlKHN0cmlu
Z0ltcGwsIG1hdGNoRW5kLCBsZWZ0TGVuZ3RoKSk7CisgICAgU3RyaW5nIHJpZ2h0UGFydChTdHJp
bmdJbXBsOjpjcmVhdGUoc3RyaW5nSW1wbCwgbWF0Y2hFbmQsIGxlZnRMZW5ndGgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNTdHJpbmcoZXhlYywgbGVmdFBhcnQsIG1pZGRs
ZVBhcnQsIHJpZ2h0UGFydCkpOwogfQogCkBAIC02OTksNyArNjk5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKiBleGVjKQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgdW5zaWduZWQgbGVuID0gcy5s
ZW5ndGgoKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEw
LmlzVUludDMyKCkpIHsKQEAgLTcxOSw3ICs3MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgdW5zaWduZWQgbGVuID0gcy5sZW5ndGgo
KTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUlu
dDMyKCkpIHsKQEAgLTc1MywxMSArNzUzLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgw
KTsKICAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgVVN0cmluZyB1MiA9
IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgdTIgPSBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICBzaXplX3QgcmVzdWx0OwogICAgIGlmIChh
MS5pc1VuZGVmaW5lZCgpKQpAQCAtNzg4LDEzICs3ODgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRo
aXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpbnQgbGVuID0gcy5sZW5ndGgo
KTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGEx
ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAKLSAgICBVU3RyaW5nIHUyID0gYTAudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyB1MiA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICBkb3VibGUgZHBvcyA9IGExLnRvSW50ZWdlclByZXNlcnZlTmFOKGV4ZWMp
OwogICAgIGlmIChkcG9zIDwgMCkKICAgICAgICAgZHBvcyA9IDA7CkBAIC04MTMsNyArODEzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNNYXRjaChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBD
aGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKICAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwotICAg
IFVTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBzdHJpbmct
PnZhbHVlKGV4ZWMpOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9i
YWxEYXRhKCk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC04MzYs
NyArODM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNN
YXRjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAqICByZXBsYWNlZCB3aXRoIHRoZSByZXN1
bHQgb2YgdGhlIGV4cHJlc3Npb24gbmV3IFJlZ0V4cChyZWdleHApLgogICAgICAgICAgKiAgUGVy
IEVDTUEgMTUuMTAuNC4xLCBpZiBhMCBpcyB1bmRlZmluZWQgc3Vic3RpdHV0ZSB0aGUgZW1wdHkg
c3RyaW5nLgogICAgICAgICAgKi8KLSAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBhMC5pc1VuZGVmaW5lZCgpID8gVVN0cmluZygiIikgOiBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIE5vRmxhZ3MpOworICAgICAgICByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGEwLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmco
IiIpIDogYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBOb0ZsYWdzKTsKICAgICAgICAg
aWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpOwog
ICAgIH0KQEAgLTg3Miw3ICs4NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1NlYXJjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7
CisgICAgU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwogICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhl
Yy0+YXJndW1lbnQoMCk7CkBAIC04ODcsNyArODg3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTZWFyY2goRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
KiAgcmVwbGFjZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uIG5ldyBSZWdFeHAo
cmVnZXhwKS4KICAgICAgICAgICogIFBlciBFQ01BIDE1LjEwLjQuMSwgaWYgYTAgaXMgdW5kZWZp
bmVkIHN1YnN0aXR1dGUgdGhlIGVtcHR5IHN0cmluZy4KICAgICAgICAgICovCi0gICAgICAgIHJl
ZyA9IFJlZ0V4cDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgYTAuaXNVbmRlZmluZWQoKSA/
IFVTdHJpbmcoIiIpIDogYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBOb0ZsYWdzKTsK
KyAgICAgICAgcmVnID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhMC5pc1Vu
ZGVmaW5lZCgpID8gU3RyaW5nKCIiKSA6IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwg
Tm9GbGFncyk7CiAgICAgICAgIGlmICghcmVnLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZy0+ZXJyb3JN
ZXNzYWdlKCkpKTsKICAgICB9CkBAIC05MDEsNyArOTAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpbnQgbGVuID0gcy5sZW5ndGgoKTsKIAog
ICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTkyNSw3ICs5MjUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0
ZSogZXhlYykKIAogLy8gUmV0dXJuIHRydWUgaW4gY2FzZSBvZiBlYXJseSByZXR1cm4gKHJlc3Vs
dExlbmd0aCBnb3QgdG8gbGltaXRMZW5ndGgpLgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3Rl
ckltcGwoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiByZXN1bHQsIGNvbnN0IFVTdHJpbmcmIGlu
cHV0LCBTdHJpbmdJbXBsKiBzdHJpbmcsIFVDaGFyIHNlcGFyYXRvckNoYXJhY3Rlciwgc2l6ZV90
JiBwb3NpdGlvbiwgdW5zaWduZWQmIHJlc3VsdExlbmd0aCwgdW5zaWduZWQgbGltaXRMZW5ndGgp
CitzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBs
KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogcmVzdWx0LCBjb25zdCBTdHJpbmcmIGlucHV0LCBT
dHJpbmdJbXBsKiBzdHJpbmcsIFVDaGFyIHNlcGFyYXRvckNoYXJhY3Rlciwgc2l6ZV90JiBwb3Np
dGlvbiwgdW5zaWduZWQmIHJlc3VsdExlbmd0aCwgdW5zaWduZWQgbGltaXRMZW5ndGgpCiB7CiAg
ICAgLy8gMTIuIExldCBxID0gcC4KICAgICBzaXplX3QgbWF0Y2hQb3NpdGlvbjsKQEAgLTk2Miw3
ICs5NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Nw
bGl0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIExldCBTIGJlIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyBUb1N0cmluZywgZ2l2aW5nIGl0IHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVu
dC4KICAgICAvLyA2LiBMZXQgcyBiZSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gUy4KLSAg
ICBVU3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogCiAgICAgLy8gMy4gTGV0IEEgYmUgYSBuZXcgYXJyYXkgY3JlYXRlZCBhcyBpZiBieSB0aGUg
ZXhwcmVzc2lvbiBuZXcgQXJyYXkoKQogICAgIC8vICAgIHdoZXJlIEFycmF5IGlzIHRoZSBzdGFu
ZGFyZCBidWlsdC1pbiBjb25zdHJ1Y3RvciB3aXRoIHRoYXQgbmFtZS4KQEAgLTEwNjQsNyArMTA2
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXQo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgVVN0cmluZyBzZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBzZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICAgICAgLy8gOS4gSWYgbGltID09
IDAsIHJldHVybiBBLgogICAgICAgICBpZiAoIWxpbWl0KQpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
OwogICAgIHVuc2lnbmVkIGxlbjsKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSAwOwotICAgIFVT
dHJpbmcgdVN0cmluZzsKKyAgICBTdHJpbmcgdVN0cmluZzsKICAgICBpZiAodGhpc1ZhbHVlLmlz
U3RyaW5nKCkpIHsKICAgICAgICAganNTdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPih0aGlzVmFs
dWUuYXNDZWxsKCkpOwogICAgICAgICBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7CkBAIC0xMjQ3
LDcgKzEyNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpOwotICAgIGNvbnN0IFVTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKKyAg
ICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKIAogICAgIGludCBzU2l6ZSA9
IHMubGVuZ3RoKCk7CiAgICAgaWYgKCFzU2l6ZSkKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0
YXRlKiBleGVjKQogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBsb3dlciA9IG91ckltcGwtPmxvd2Vy
KCk7CiAgICAgaWYgKG91ckltcGwgPT0gbG93ZXIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc1ZhbCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBV
U3RyaW5nKGxvd2VyLnJlbGVhc2UoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKGV4ZWMsIFN0cmluZyhsb3dlci5yZWxlYXNlKCkpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBl
eGVjKQpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKTsKLSAgICBjb25zdCBVU3RyaW5nJiBzID0gc1ZhbC0+dmFs
dWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nJiBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CiAKICAg
ICBpbnQgc1NpemUgPSBzLmxlbmd0aCgpOwogICAgIGlmICghc1NpemUpCkBAIC0xMjc2LDcgKzEy
NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBw
ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIgPSBz
SW1wbC0+dXBwZXIoKTsKICAgICBpZiAoc0ltcGwgPT0gdXBwZXIpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoc1ZhbCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
ZyhleGVjLCBVU3RyaW5nKHVwcGVyLnJlbGVhc2UoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZyh1cHBlci5yZWxlYXNlKCkpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShF
eGVjU3RhdGUqIGV4ZWMpCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhl
Yy0+YXJndW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihsb2Nh
bGVDb21wYXJlKHMsIGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpKTsKQEAgLTEyOTgs
NyArMTI5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
QmlnKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENo
ZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
PGJpZz4iLCBzLCAiPC9iaWc+IikpOwogfQogCkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NtYWxsKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBp
ZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxl
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9
IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0
aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPHNtYWxsPiIsIHMsICI8L3Nt
YWxsPiIpKTsKIH0KIApAQCAtMTMxNiw3ICsxMzE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNCbGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFr
ZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxibGluaz4iLCBzLCAiPC9ibGluaz4iKSk7CiB9CiAK
QEAgLTEzMjUsNyArMTMyNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jQm9sZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIjxiPiIsIHMsICI8L2I+IikpOwogfQogCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZpeGVkKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
ICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29l
cmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJp
bmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPHR0PiIsIHMsICI8
L3R0PiIpKTsKIH0KIApAQCAtMTM0Myw3ICsxMzQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNN
YWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGk+IiwgcywgIjwvaT4iKSk7CiB9CiAKQEAgLTEz
NTIsNyArMTM1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU3RyaWtlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
Pmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhl
eGVjLCAiPHN0cmlrZT4iLCBzLCAiPC9zdHJpa2U+IikpOwogfQogCkBAIC0xMzYxLDcgKzEzNjEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVj
dENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBV
U3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxzdWI+Iiwg
cywgIjwvc3ViPiIpKTsKIH0KIApAQCAtMTM3MCw3ICsxMzcwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdXAoRXhlY1N0YXRlKiBleGVjKQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8c3VwPiIsIHMsICI8L3N1cD4iKSk7CiB9CiAK
QEAgLTEzNzksNyArMTM3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jRm9udGNvbG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250
IGNvbG9yPVwiIiwgYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXCI+IiwgcywgIjwv
Zm9udD4iKSk7CiB9CkBAIC0xMzg5LDcgKzEzODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKIAogICAgIHVpbnQzMl90IHNtYWxsSW50ZWdlcjsKQEAgLTE0MzQsNyArMTQzNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUo
KTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0
Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIEpTVmFs
dWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxhIG5hbWU9XCIiLCBhMC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyksICJcIj4iLCBzLCAiPC9hPiIpKTsKIH0KQEAgLTE0NDQsOSArMTQ0NCw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVj
dENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBV
U3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1Zh
bHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgVVN0cmluZyBsaW5rVGV4dCA9IGEwLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbGlua1RleHQgPSBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICB1bnNpZ25lZCBsaW5rVGV4dFNpemUgPSBs
aW5rVGV4dC5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBzdHJpbmdTaXplID0gcy5sZW5ndGgoKTsK
QEAgLTE0ODksNyArMTQ4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0cmltU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCB0cmltS2luCiB7CiAgICAgaWYg
KHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzdHIgPSB0
aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIgPSB0
aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHVuc2lnbmVkIGxlZnQg
PSAwOwogICAgIGlmICh0cmltS2luZCAmIFRyaW1MZWZ0KSB7CiAgICAgICAgIHdoaWxlIChsZWZ0
IDwgc3RyLmxlbmd0aCgpICYmIGlzVHJpbVdoaXRlc3BhY2Uoc3RyW2xlZnRdKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZTNhMjViYjg3MWM1MzI3ZjFh
NzI1YzI3OGZhZWUwYjY2MmI0OGY3Mi4uNTczNjhiZWU4Y2M1M2IxYzFhNmViYmUwOWIzN2FhOTI2
OGRjNzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAg
LTM2LDEyICszNiwxMiBAQAogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaCIKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCi0jaW5jbHVkZSAi
VVN0cmluZy5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgogCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjU5LDcgKzI1OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QpOwogCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNH
bG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSk7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAog
ICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBt
X2hhc0dldHRlclNldHRlclByb3BlcnRpZXM7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRP
ZmZzZXQ7CiAgICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICBpbmxp
bmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5kZXggMjA2N2E4
OTk1NDZmNzg4YTc5YTQ3N2U3ZDgwZGM3ZjBlMjFkYjI2MC4uN2M5ZDUwODk0ZTNlYzlmMmVhNzI2
NjQ4YmFhYzMyYmUzMGMzYTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTI2LDExICsyNiwxMSBA
QAogI2lmbmRlZiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVfaAogI2RlZmluZSBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGVfaAogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldlYWtH
Q01hcC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCBiM2NmMjAyOWVhYmQ2ODRiYTQ3NGE3NjVlNjFlNmMz
YTkzZWE1OGY3Li4wOGVhOGMxNjMwOGEzMmJlZDc3NTA1MmVhNTNiYTNjNzc0YjMwNDhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTMwLDEwICsz
MCwxMCBAQAogI2RlZmluZSBTeW1ib2xUYWJsZV9oCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgot
I2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8
d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGE1NzM1YzRkZjdjMGFhMTJmZTEwNWRmN2E0ZDRmZjVlOGU0Mzk4NS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2MiArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcg
Q2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQotICogIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKLQotI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCi0jaW5jbHVkZSA8Y3R5cGUuaD4K
LSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL2R0b2EuaD4KLSNpbmNsdWRlIDx3dGYv
dW5pY29kZS9VVEY4Lmg+Ci0KLSNpZiBIQVZFKFNUUklOR1NfSCkKLSNpbmNsdWRlIDxzdHJpbmdz
Lmg+Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLXVzaW5nIG5hbWVzcGFjZSBXVEY6
OlVuaWNvZGU7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgSlNDIHsKLQotQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFVTdHJpbmcpID09IHNpemVvZih2b2lkKiksIFVTdHJpbmdfc2hv
dWxkX3N0YXlfc21hbGwpOwotCi0vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0
YS4KLVVTdHJpbmc6OlVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkKLSAgICA6IG1faW1wbChjaGFyYWN0ZXJzID8gU3RyaW5nSW1wbDo6Y3JlYXRlKGNoYXJh
Y3RlcnMsIGxlbmd0aCkgOiAwKQotewotfQotCi0vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBV
VEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi1VU3RyaW5nOjpVU3Ry
aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKQotewotICAgIGlmICghY2hhcmFjdGVycykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaW50IGxlbmd0aCA9IDA7Ci0gICAgd2hpbGUgKGNoYXJhY3Rl
cnNbbGVuZ3RoXSAhPSBVQ2hhcigwKSkKLSAgICAgICAgKytsZW5ndGg7Ci0KLSAgICBtX2ltcGwg
PSBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycywgbGVuZ3RoKTsKLX0KLQotLy8gQ29uc3Ry
dWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCi1VU3RyaW5nOjpVU3RyaW5nKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBtX2ltcGwoY2hhcmFjdGVy
cyA/IFN0cmluZ0ltcGw6OmNyZWF0ZShjaGFyYWN0ZXJzLCBsZW5ndGgpIDogMCkKLXsKLX0KLQot
VVN0cmluZzo6VVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
Ci0gICAgOiBtX2ltcGwoY2hhcmFjdGVycyA/IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCkgOiAwKQotewotfQotCi0v
LyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWlu
YXRlZCBzb3VyY2UuCi1VU3RyaW5nOjpVU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKQot
ICAgIDogbV9pbXBsKGNoYXJhY3RlcnMgPyBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycykg
OiAwKQotewotfQotCi1VU3RyaW5nOjpVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCi0g
ICAgOiBtX2ltcGwoY2hhcmFjdGVycyA/IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycykpIDogMCkKLXsKLX0KLQotVVN0cmluZyBVU3Ry
aW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlIGQpCi17Ci0gICAgTnVtYmVyVG9T
dHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIHJldHVybiBVU3RyaW5nKG51bWJlclRvU3RyaW5nKGQs
IGJ1ZmZlcikpOwotfQotCi1VU3RyaW5nIFVTdHJpbmc6OnN1YnN0cmluZ1NoYXJpbmdJbXBsKHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBX
ZSB1c2VkIHRvIGNoZWNrIGFnYWluc3QgYSBsaW1pdCBvZiBIZWFwOjptaW5FeHRyYUNvc3QgLyBz
aXplb2YoVUNoYXIpLgotCi0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gdGhpcy0+bGVuZ3Ro
KCk7Ci0gICAgb2Zmc2V0ID0gbWluKG9mZnNldCwgc3RyaW5nTGVuZ3RoKTsKLSAgICBsZW5ndGgg
PSBtaW4obGVuZ3RoLCBzdHJpbmdMZW5ndGggLSBvZmZzZXQpOwotCi0gICAgaWYgKCFvZmZzZXQg
JiYgbGVuZ3RoID09IHN0cmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIHJl
dHVybiBVU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZShtX2ltcGwsIG9mZnNldCwgbGVuZ3RoKSk7
Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgY2hhciAqczIp
Ci17Ci0gICAgaWYgKHMxLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICFzMjsKLQotICAgIHJl
dHVybiBlcXVhbChzMS5pbXBsKCksIHMyKTsKLX0KLQotLy8gVGhpcyBtZXRob2QgYXNzdW1lcyB0
aGF0IGFsbCBzaW1wbGUgY2hlY2tzIGhhdmUgYmVlbiBwZXJmb3JtZWQgYnkKLS8vIHRoZSBpbmxp
bmVkIG9wZXJhdG9yPT0oKSBpbiB0aGUgaGVhZGVyIGZpbGUuCi1ib29sIGVxdWFsU2xvd0Nhc2Uo
Y29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIFN0cmluZ0ltcGwq
IHJlcDEgPSBzMS5pbXBsKCk7Ci0gICAgU3RyaW5nSW1wbCogcmVwMiA9IHMyLmltcGwoKTsKLSAg
ICB1bnNpZ25lZCBzaXplMSA9IHJlcDEtPmxlbmd0aCgpOwotCi0gICAgLy8gQXQgdGhpcyBwb2lu
dCB3ZSBrbm93IAotICAgIC8vICAgKGEpIHRoYXQgdGhlIHN0cmluZ3MgYXJlIHRoZSBzYW1lIGxl
bmd0aCBhbmQKLSAgICAvLyAgIChiKSB0aGF0IHRoZXkgYXJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGxl
bmd0aC4KLSAgICBib29sIHMxSXM4Qml0ID0gcmVwMS0+aXM4Qml0KCk7Ci0gICAgYm9vbCBzMklz
OEJpdCA9IHJlcDItPmlzOEJpdCgpOwotICAgIAotICAgIGlmIChzMUlzOEJpdCkgewotICAgICAg
ICBjb25zdCBMQ2hhciogZDEgPSByZXAxLT5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBpZiAoczJJ
czhCaXQpIHsKLSAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkMiA9IHJlcDItPmNoYXJhY3RlcnM4
KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChkMSA9PSBkMikgLy8gQ2hlY2sgdG8g
c2VlIGlmIHRoZSBkYXRhIHBvaW50ZXJzIGFyZSB0aGUgc2FtZS4KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRG8gcXVpY2sgY2hlY2tz
IGZvciBzaXplcyAxIGFuZCAyLgotICAgICAgICAgICAgc3dpdGNoIChzaXplMSkgewotICAgICAg
ICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgIHJldHVybiBkMVswXSA9PSBkMlswXTsKLSAg
ICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gKGQxWzBdID09IGQyWzBd
KSAmIChkMVsxXSA9PSBkMlsxXSk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIHJldHVybiAoIW1lbWNtcChkMSwgZDIsIHNpemUxICogc2l6ZW9mKExDaGFyKSkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBVQ2hhciogZDIg
PSByZXAyLT5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoZDFbaV0gIT0gZDJbaV0p
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICAKLSAgICBpZiAoczJJczhCaXQpIHsKLSAgICAgICAgY29uc3Qg
VUNoYXIqIGQxID0gcmVwMS0+Y2hhcmFjdGVyczE2KCk7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBk
MiA9IHJlcDItPmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTE7IGkrKykgewotICAgICAgICAgICAgaWYgKGQxW2ldICE9IGQyW2ld
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgCi0gICAgfQotICAgIAotICAgIGNvbnN0IFVDaGFyKiBkMSA9IHJl
cDEtPmNoYXJhY3RlcnMxNigpOwotICAgIGNvbnN0IFVDaGFyKiBkMiA9IHJlcDItPmNoYXJhY3Rl
cnMxNigpOwotICAgIAotICAgIGlmIChkMSA9PSBkMikgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBk
YXRhIHBvaW50ZXJzIGFyZSB0aGUgc2FtZS4KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0g
ICAgLy8gRG8gcXVpY2sgY2hlY2tzIGZvciBzaXplcyAxIGFuZCAyLgotICAgIHN3aXRjaCAoc2l6
ZTEpIHsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVybiBkMVswXSA9PSBkMlswXTsKLSAgICBj
YXNlIDI6Ci0gICAgICAgIHJldHVybiAoZDFbMF0gPT0gZDJbMF0pICYgKGQxWzFdID09IGQyWzFd
KTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gKCFtZW1jbXAoZDEsIGQyLCBzaXplMSAq
IHNpemVvZihVQ2hhcikpKTsKLSAgICB9Ci19Ci0KLWJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJp
bmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBsMSA9IHMx
Lmxlbmd0aCgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGwyID0gczIubGVuZ3RoKCk7Ci0gICAgY29u
c3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIGlmIChzMS5pczhCaXQo
KSAmJiBzMi5pczhCaXQoKSkgewotICAgICAgICBjb25zdCBMQ2hhciogYzEgPSBzMS5jaGFyYWN0
ZXJzOCgpOwotICAgICAgICBjb25zdCBMQ2hhciogYzIgPSBzMi5jaGFyYWN0ZXJzOCgpOwotICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwotICAgICAgICB3aGlsZSAobGVuZ3RoIDwgbG1pbiAm
JiAqYzEgPT0gKmMyKSB7Ci0gICAgICAgICAgICBjMSsrOwotICAgICAgICAgICAgYzIrKzsKLSAg
ICAgICAgICAgIGxlbmd0aCsrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChsZW5ndGggPCBsbWlu
KQotICAgICAgICAgICAgcmV0dXJuIChjMVswXSA8IGMyWzBdKTsKLQotICAgICAgICByZXR1cm4g
KGwxIDwgbDIpOyAgICAgICAgCi0gICAgfQotICAgIGNvbnN0IFVDaGFyKiBjMSA9IHMxLmNoYXJh
Y3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogYzIgPSBzMi5jaGFyYWN0ZXJzKCk7Ci0gICAgdW5z
aWduZWQgbGVuZ3RoID0gMDsKLSAgICB3aGlsZSAobGVuZ3RoIDwgbG1pbiAmJiAqYzEgPT0gKmMy
KSB7Ci0gICAgICAgIGMxKys7Ci0gICAgICAgIGMyKys7Ci0gICAgICAgIGxlbmd0aCsrOwotICAg
IH0KLSAgICBpZiAobGVuZ3RoIDwgbG1pbikKLSAgICAgICAgcmV0dXJuIChjMVswXSA8IGMyWzBd
KTsKLQotICAgIHJldHVybiAobDEgPCBsMik7Ci19Ci0KLWJvb2wgb3BlcmF0b3I+KGNvbnN0IFVT
dHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBsMSA9
IHMxLmxlbmd0aCgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGwyID0gczIubGVuZ3RoKCk7Ci0gICAg
Y29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIGNvbnN0IFVDaGFy
KiBjMSA9IHMxLmNoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogYzIgPSBzMi5jaGFyYWN0
ZXJzKCk7Ci0gICAgdW5zaWduZWQgbCA9IDA7Ci0gICAgd2hpbGUgKGwgPCBsbWluICYmICpjMSA9
PSAqYzIpIHsKLSAgICAgICAgYzErKzsKLSAgICAgICAgYzIrKzsKLSAgICAgICAgbCsrOwotICAg
IH0KLSAgICBpZiAobCA8IGxtaW4pCi0gICAgICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSk7Ci0K
LSAgICByZXR1cm4gKGwxID4gbDIpOwotfQotCi1DU3RyaW5nIFVTdHJpbmc6OmFzY2lpKCkgY29u
c3QKLXsKLSAgICAvLyBCYXNpYyBMYXRpbjEgKElTTykgZW5jb2RpbmcgLSBVbmljb2RlIGNoYXJh
Y3RlcnMgMC4uMjU1IGFyZQotICAgIC8vIHByZXNlcnZlZCwgY2hhcmFjdGVycyBvdXRzaWRlIG9m
IHRoaXMgcmFuZ2UgYXJlIGNvbnZlcnRlZCB0byAnPycuCi0KLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0aGlzLT5sZW5ndGgoKTsKLQotICAgIGlmICh0aGlzLT5pczhCaXQoKSkgewotICAgICAgICBj
b25zdCBMQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIAot
ICAgICAgICBjaGFyKiBjaGFyYWN0ZXJCdWZmZXI7Ci0gICAgICAgIENTdHJpbmcgcmVzdWx0ID0g
Q1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChsZW5ndGgsIGNoYXJhY3RlckJ1ZmZlcik7Ci0gICAg
ICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIExDaGFyIGNoID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIGNoYXJhY3Rl
ckJ1ZmZlcltpXSA9IGNoICYmIChjaCA8IDB4MjAgfHwgY2ggPiAweDdmKSA/ICc/JyA6IGNoOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgCi0gICAg
fQotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsK
LQotICAgIGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKLSAgICBDU3RyaW5nIHJlc3VsdCA9IENTdHJp
bmc6Om5ld1VuaW5pdGlhbGl6ZWQobGVuZ3RoLCBjaGFyYWN0ZXJCdWZmZXIpOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGNoID0g
Y2hhcmFjdGVyc1tpXTsKLSAgICAgICAgY2hhcmFjdGVyQnVmZmVyW2ldID0gY2ggJiYgKGNoIDwg
MHgyMCB8fCBjaCA+PSAweDdmKSA/ICc/JyA6IGNoOwotICAgIH0KLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUNTdHJpbmcgVVN0cmluZzo6bGF0aW4xKCkgY29uc3QKLXsKLSAgICAvLyBCYXNp
YyBMYXRpbjEgKElTTykgZW5jb2RpbmcgLSBVbmljb2RlIGNoYXJhY3RlcnMgMC4uMjU1IGFyZQot
ICAgIC8vIHByZXNlcnZlZCwgY2hhcmFjdGVycyBvdXRzaWRlIG9mIHRoaXMgcmFuZ2UgYXJlIGNv
bnZlcnRlZCB0byAnPycuCi0KLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsK
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMoKTsKLQotICAg
IGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKLSAgICBDU3RyaW5nIHJlc3VsdCA9IENTdHJpbmc6Om5l
d1VuaW5pdGlhbGl6ZWQobGVuZ3RoLCBjaGFyYWN0ZXJCdWZmZXIpOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGNoID0gY2hhcmFj
dGVyc1tpXTsKLSAgICAgICAgY2hhcmFjdGVyQnVmZmVyW2ldID0gY2ggPiAweGZmID8gJz8nIDog
Y2g7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8gSGVscGVyIHRvIHdyaXRl
IGEgdGhyZWUtYnl0ZSBVVEYtOCBjb2RlIHBvaW50IHRvIHRoZSBidWZmZXIsIGNhbGxlciBtdXN0
IGNoZWNrIHJvb20gaXMgYXZhaWxhYmxlLgotc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhUcmlw
bGUoY2hhciomIGJ1ZmZlciwgVUNoYXIgY2gpCi17Ci0gICAgQVNTRVJUKGNoID49IDB4MDgwMCk7
Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+PiAxMikgJiAweDBGKSB8
IDB4RTApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2ggPj4gNikgJiAw
eDNGKSB8IDB4ODApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaCAmIDB4
M0YpIHwgMHg4MCk7Ci19Ci0KLUNTdHJpbmcgVVN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLQotICAgIGlmICgh
bGVuZ3RoKQotICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7Ci0KLSAgICAvLyBBbGxvY2F0
ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzCi0gICAgLy8g
KGFuIGluZGl2aWR1YWwgVVRGLTE2IFVDaGFyIGNhbiBvbmx5IGV4cGFuZCB0byAzIFVURi04IGJ5
dGVzKS4KLSAgICAvLyBPcHRpbWl6YXRpb24gaWRlYXMsIGlmIHdlIGZpbmQgdGhpcyBmdW5jdGlv
biBpcyBob3Q6Ci0gICAgLy8gICogV2UgY291bGQgc3BlY3VsYXRpdmVseSBjcmVhdGUgYSBDU3Ry
aW5nQnVmZmVyIHRvIGNvbnRhaW4gJ2xlbmd0aCcgCi0gICAgLy8gICAgY2hhcmFjdGVycywgYW5k
IHJlc2l6ZSBpZiBuZWNlc3NhcnkgKGkuZS4gaWYgdGhlIGJ1ZmZlciBjb250YWlucwotICAgIC8v
ICAgIG5vbi1hc2NpaSBjaGFyYWN0ZXJzKS4gKEFsdGVybmF0aXZlbHksIHNjYW4gdGhlIGJ1ZmZl
ciBmaXJzdCBmb3IKLSAgICAvLyAgICBhc2NpaSBjaGFyYWN0ZXJzLCBzbyB3ZSBrbm93IHRoaXMg
d2lsbCBiZSBzdWZmaWNpZW50KS4KLSAgICAvLyAgKiBXZSBjb3VsZCBhbGxvY2F0ZSBhIENTdHJp
bmdCdWZmZXIgd2l0aCBhbiBhcHByb3ByaWF0ZSBzaXplIHRvCi0gICAgLy8gICAgaGF2ZSBhIGdv
b2QgY2hhbmNlIG9mIGJlaW5nIGFibGUgdG8gd3JpdGUgdGhlIHN0cmluZyBpbnRvIHRoZQotICAg
IC8vICAgIGJ1ZmZlciB3aXRob3V0IHJlYWxsb2NpbmcgKHNheSwgMS41IHggbGVuZ3RoKS4KLSAg
ICBpZiAobGVuZ3RoID4gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDMpCi0gICAg
ICAgIHJldHVybiBDU3RyaW5nKCk7Ci0KLSAgICBWZWN0b3I8Y2hhciwgMTAyND4gYnVmZmVyVmVj
dG9yKGxlbmd0aCAqIDMpOwotICAgIGNoYXIqIGJ1ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7
Ci0KLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMg
PSB0aGlzLT5jaGFyYWN0ZXJzOCgpOwotCi0gICAgICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0
ID0gY29udmVydExhdGluMVRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwg
JmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMp
IHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lvbgotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVyczE2KCk7Ci0K
LSAgICAgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0VVRGMTZUb1VURjgoJmNo
YXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZl
Y3Rvci5zaXplKCksIHN0cmljdCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gdGFyZ2V0RXho
YXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29u
dmVyc2lvbgotCi0gICAgICAgIC8vIE9ubHkgcHJvZHVjZWQgZnJvbSBzdHJpY3QgY29udmVyc2lv
bi4KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJbGxlZ2FsKQotICAgICAgICAgICAgcmV0
dXJuIENTdHJpbmcoKTsKLQotICAgICAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGln
aCBzdXJyb2dhdGUuCi0gICAgICAgIGlmIChyZXN1bHQgPT0gc291cmNlRXhoYXVzdGVkKSB7Ci0g
ICAgICAgICAgICBpZiAoc3RyaWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7
Ci0gICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dh
dGUuIFRyZWF0IGl0IHRoZSBzYW1lCi0gICAgICAgICAgICAvLyB3YXMgYXMgYW4gdW5wYWlyZWQg
aGlnaCBzdXJyb2dhdGUgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4KLSAgICAgICAgICAgIC8v
IHRoZSBtaWRkbGUgb2YgYSBzdHJpbmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24gLSB3aGlj
aCBpcwotICAgICAgICAgICAgLy8gdG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0IHRvIFVURi04Lgot
ICAgICAgICAgICAgQVNTRVJUKChjaGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMo
KSArIGxlbmd0aCkpOwotICAgICAgICAgICAgQVNTRVJUKCgqY2hhcmFjdGVycyA+PSAweEQ4MDAp
ICYmICgqY2hhcmFjdGVycyA8PSAweERCRkYpKTsKLSAgICAgICAgICAgIC8vIFRoZXJlIHNob3Vs
ZCBiZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCi0g
ICAgICAgICAgICBBU1NFUlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iu
c2l6ZSgpKSk7Ci0gICAgICAgICAgICBwdXRVVEY4VHJpcGxlKGJ1ZmZlciwgKmNoYXJhY3RlcnMp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRh
dGEoKSwgYnVmZmVyIC0gYnVmZmVyVmVjdG9yLmRhdGEoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwNjg1OGY5MzJkOGYyMDRkNjA3YjE4MTc1NjdiYjBiNTk4N2FmNTU1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDI4NiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYg
VVN0cmluZ19oCi0jZGVmaW5lIFVTdHJpbmdfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFVTdHJpbmcgewotcHVibGljOgotICAgIC8vIENv
bnN0cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJp
bmcuCi0gICAgVVN0cmluZygpIHsgfQotCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGgg
VVRGLTE2IGRhdGEuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIENvbnN0cnVjdCBhIHN0cmlu
ZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBK
U19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IFVDaGFyKik7Ci0KLSAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAgICBVU3RyaW5nKGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJp
bmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIENv
bnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVk
IHNvdXJjZS4KLSAgICBVU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwotCi0gICAgLy8g
Q29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCi0g
ICAgVVN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAgICBVU3Ry
aW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAg
VVN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0KLSAg
ICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3IuCi0gICAgQUxXQVlTX0lOTElORSB+VVN0cmluZygp
IHsgfQotCi0gICAgdm9pZCBzd2FwKFVTdHJpbmcmIG8pIHsgbV9pbXBsLnN3YXAoby5tX2ltcGwp
OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgotICAgIHN0YXRpYyBVU3RyaW5nIGFkb3B0KFZlY3RvcjxDaGFyVHlwZSwgaW5saW5lQ2Fw
YWNpdHk+JiB2ZWN0b3IpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHZlY3Rvcik7IH0KLQot
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KLQot
ICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KLQot
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gbV9pbXBsLT5sZW5ndGgoKTsK
LSAgICB9Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4g
bV9pbXBsLT5jaGFyYWN0ZXJzKCk7Ci0gICAgfQotCi0gICAgY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnM4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzOEJpdCgpKTsKLSAgICAgICAgcmV0dXJu
IG1faW1wbC0+Y2hhcmFjdGVyczgoKTsKLSAgICB9Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVyczE2KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVCghbV9pbXBsLT5pczhCaXQoKSk7Ci0gICAgICAgIHJl
dHVybiBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4KLSAgICBpbmxpbmUgY29uc3QgQ2hhclR5cGUqIGdldENoYXJhY3RlcnMo
KSBjb25zdDsKLQotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pczhC
aXQoKTsgfQotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0Owot
ICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmlu
ZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwotCi0gICAgVUNoYXIgb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsIHx8IGlu
ZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVyczgoKVtp
bmRleF07Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMxNigpW2luZGV4XTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIoaW50IGkpIHsgcmV0dXJuIFdURjo6bnVt
YmVyVG9TdHJpbmdJbXBsKGkpOyB9Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKHVuc2lnbmVk
IHUpIHsgcmV0dXJuIFdURjo6bnVtYmVyVG9TdHJpbmdJbXBsKHUpOyB9Ci0gICAgc3RhdGljIFVT
dHJpbmcgbnVtYmVyKGxvbmcgaSkgeyByZXR1cm4gV1RGOjpudW1iZXJUb1N0cmluZ0ltcGwoaSk7
IH0KLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyBsb25nIGkpIHsgcmV0dXJuIFdURjo6
bnVtYmVyVG9TdHJpbmdJbXBsKGkpOyB9Ci0KLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXJUb1N0
cmluZ0VDTUFTY3JpcHQoZG91YmxlKTsKLQotICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVy
IG9yIHN0cmluZywgYWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgotICAg
IHNpemVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKGMsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0K
LSAgICBzaXplX3QgZmluZChjb25zdCBVU3RyaW5nJiBzdHIpIGNvbnN0Ci0gICAgICAgIHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHIuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAg
c2l6ZV90IGZpbmQoY29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKLSAg
ICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9Ci0KLSAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyLCB1bnNpZ25l
ZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Zmlu
ZChzdHIsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0KLSAgICAvLyBGaW5kIHRoZSBsYXN0IGluc3Rh
bmNlIG9mIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcuCi0gICAgc2l6ZV90IHJldmVyc2VG
aW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gVUlOVF9NQVgpIGNvbnN0Ci0gICAgICAgIHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoYywgc3RhcnQpIDogbm90Rm91bmQ7
IH0KLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBz
dGFydCA9IFVJTlRfTUFYKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywg
dW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBtX2ltcGw7Ci19OwotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgY29uc3QgTENoYXIq
IFVTdHJpbmc6OmdldENoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVy
czgoKTsgfQotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgY29uc3QgVUNoYXIqIFVTdHJpbmc6OmdldENo
YXJhY3RlcnM8VUNoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVycygpOyB9Ci0KLU5FVkVS
X0lOTElORSBib29sIGVxdWFsU2xvd0Nhc2UoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJp
bmcmIHMyKTsKLQotQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYg
czEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIFN0cmluZ0ltcGwqIHJlcDEgPSBzMS5pbXBs
KCk7Ci0gICAgU3RyaW5nSW1wbCogcmVwMiA9IHMyLmltcGwoKTsKLQotICAgIGlmIChyZXAxID09
IHJlcDIpIC8vIElmIHRoZXkncmUgdGhlIHNhbWUgcmVwLCB0aGV5J3JlIGVxdWFsLgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIHVuc2lnbmVkIHNpemUxID0gMDsKLSAgICB1bnNpZ25lZCBz
aXplMiA9IDA7Ci0KLSAgICBpZiAocmVwMSkKLSAgICAgICAgc2l6ZTEgPSByZXAxLT5sZW5ndGgo
KTsKLQotICAgIGlmIChyZXAyKQotICAgICAgICBzaXplMiA9IHJlcDItPmxlbmd0aCgpOwotCi0g
ICAgaWYgKHNpemUxICE9IHNpemUyKSAvLyBJZiB0aGUgbGVuZ3RocyBhcmUgbm90IHRoZSBzYW1l
LCB3ZSdyZSBkb25lLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXNpemUxKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChzaXplMSA9PSAxKQotICAgICAgICByZXR1
cm4gKCpyZXAxKVswdV0gPT0gKCpyZXAyKVswdV07Ci0KLSAgICByZXR1cm4gZXF1YWxTbG93Q2Fz
ZShzMSwgczIpOwotfQotCi0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVN0cmluZyYg
czEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIHJldHVybiAhSlNDOjpvcGVyYXRvcj09KHMx
LCBzMik7Ci19Ci0KLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJp
bmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7Ci1KU19FWFBPUlRfUFJJVkFURSBib29sIG9wZXJh
dG9yPihjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpOwotCi1KU19FWFBPUlRf
UFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IGNoYXIqIHMy
KTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgY2hh
ciogczIpCi17Ci0gICAgcmV0dXJuICFKU0M6Om9wZXJhdG9yPT0oczEsIHMyKTsKLX0KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyICpzMSwgY29uc3QgVVN0cmluZyYgczIpCi17
Ci0gICAgcmV0dXJuIG9wZXJhdG9yPT0oczIsIHMxKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBjaGFyICpzMSwgY29uc3QgVVN0cmluZyYgczIpCi17Ci0gICAgcmV0dXJuICFK
U0M6Om9wZXJhdG9yPT0oczEsIHMyKTsKLX0KLQotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJl
KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKLXsKLSAgICByZXR1cm4gY29k
ZVBvaW50Q29tcGFyZShzMS5pbXBsKCksIHMyLmltcGwoKSk7Ci19Ci0KLXN0cnVjdCBVU3RyaW5n
SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5nSW1wbCoga2V5KSB7IHJldHVy
biBrZXktPmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwq
IGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpCi0gICAgewotICAgICAgICBpZiAoYSA9PSBiKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghYSB8fCAhYikKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICB1bnNpZ25lZCBhTGVuZ3RoID0gYS0+bGVuZ3RoKCk7
Ci0gICAgICAgIHVuc2lnbmVkIGJMZW5ndGggPSBiLT5sZW5ndGgoKTsKLSAgICAgICAgaWYgKGFM
ZW5ndGggIT0gYkxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAv
LyBGSVhNRTogcGVyaGFwcyB3ZSBzaG91bGQgaGF2ZSBhIG1vcmUgYWJzdHJhY3QgbWFjcm8gdGhh
dCBpbmRpY2F0ZXMgd2hlbgotICAgICAgICAvLyBnb2luZyA0IGJ5dGVzIGF0IGEgdGltZSBpcyB1
bnNhZmUKLSNpZiBDUFUoQVJNKSB8fCBDUFUoU0g0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNQQVJD
KQotICAgICAgICBjb25zdCBVQ2hhciogYUNoYXJzID0gYS0+Y2hhcmFjdGVycygpOwotICAgICAg
ICBjb25zdCBVQ2hhciogYkNoYXJzID0gYi0+Y2hhcmFjdGVycygpOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpICE9IGFMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCphQ2hh
cnMrKyAhPSAqYkNoYXJzKyspCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICAgICAgLyogRG8gaXQgNC1ieXRl
cy1hdC1hLXRpbWUgb24gYXJjaGl0ZWN0dXJlcyB3aGVyZSBpdCdzIHNhZmUgKi8KLSAgICAgICAg
Y29uc3QgdWludDMyX3QqIGFDaGFycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihhLT5jaGFyYWN0ZXJzKCkpOwotICAgICAgICBjb25zdCB1aW50MzJfdCogYkNoYXJzID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGItPmNoYXJhY3RlcnMoKSk7Ci0KLSAgICAg
ICAgdW5zaWduZWQgaGFsZkxlbmd0aCA9IGFMZW5ndGggPj4gMTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSAhPSBoYWxmTGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBpZiAoKmFDaGFy
cysrICE9ICpiQ2hhcnMrKykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgaWYgKGFMZW5ndGggJiAxICYmICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
YUNoYXJzKSAhPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGJDaGFycykpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWZQdHI8U3RyaW5nSW1w
bD4mIGtleSkgeyByZXR1cm4ga2V5LT5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGEsIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcXVhbChhLmdldCgpLCBiLmdldCgpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVU3RyaW5nJiBrZXkpIHsgcmV0dXJuIGtl
eS5pbXBsKCktPmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmcm
IGEsIGNvbnN0IFVTdHJpbmcmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gZXF1YWwoYS5pbXBs
KCksIGIuaW1wbCgpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LW5hbWVzcGFjZSBXVEYgewotCi0vLyBVU3RyaW5nSGFzaCBpcyB0aGUgZGVmYXVsdCBoYXNoIGZv
ciBVU3RyaW5nCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Ci10ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlVTdHJpbmc+IHsKLSAgICB0eXBlZGVmIEpT
Qzo6VVN0cmluZ0hhc2ggSGFzaDsKLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBWZWN0b3JUcmFp
dHM8SlNDOjpVU3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZ0J1aWxkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjY2Yz
ODJhNWY5NzNlNjI2NTk4Mjk0ZjE1MmFlM2M4OWJiYjY0Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9V
U3RyaW5nQnVpbGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVTdHJpbmdCdWls
ZGVyX2gKLSNkZWZpbmUgVVN0cmluZ0J1aWxkZXJfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgVVN0cmluZ0J1aWxkZXIg
OiBwdWJsaWMgU3RyaW5nQnVpbGRlciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgU3RyaW5nQnVpbGRl
cjo6YXBwZW5kOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVTdHJpbmcmIHN0cikgeyBhcHBlbmQo
U3RyaW5nKHN0ci5pbXBsKCkpKTsgfQotCi0gICAgVVN0cmluZyB0b1VTdHJpbmcoKSB7IHJldHVy
biB0b1N0cmluZygpLmltcGwoKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRp
ZiAvLyBVU3RyaW5nQnVpbGRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
YmQ0ZTYwY2E0YjNhN2FlNTRmY2M3NTI1ZmZhZjIwOTQ2YmVlMmQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBV
U3RyaW5nQ29uY2F0ZW5hdGVfaAotI2RlZmluZSBVU3RyaW5nQ29uY2F0ZW5hdGVfaAotCi0jaW5j
bHVkZSAiVVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBTdHJpbmdUeXBlQWRhcHRl
cjxKU0M6OlVTdHJpbmc+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxKU0M6OlVT
dHJpbmc+KEpTQzo6VVN0cmluZyYgc3RyaW5nKQotICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykK
LSAgICAgICAgLCBtX2xlbmd0aChzdHJpbmcubGVuZ3RoKCkpCi0gICAgewotICAgIH0KLQotICAg
IHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLSAgICBib29sIGlzOEJp
dCgpIHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpIHx8IG1fc3RyaW5nLmlzOEJpdCgpOyB9Ci0K
LSAgICB2b2lkIHdyaXRlVG8oTENoYXIqIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMgPSBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRlc3Rp
bmF0aW9uW2ldID0gY2hhcmFjdGVyc1tpXTsKLSAgICB9Ci0KLSAgICB2b2lkIHdyaXRlVG8oVUNo
YXIqIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IG1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7Ci0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IGNoYXJhY3RlcnNbaV07Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IG1fc3RyaW5nLmNoYXJh
Y3RlcnMxNigpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBjaGFyYWN0ZXJzW2ldOwot
ICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IEpTQzo6VVN0cmluZyYgbV9z
dHJpbmc7Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OwotCi19OyAvLyBuYW1lc3BhY2UgV1RG
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTI+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIpOwotICAgIGlm
ICghcmVzdWx0SW1wbCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gcmVzdWx0SW1wbDsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUy
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMz4KLVVTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMykKLXsKLSAg
ICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmco
c3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMyk7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAg
ICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUz
LCB0eXBlbmFtZSBTdHJpbmdUeXBlND4KLVVTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5n
VHlwZTQgc3RyaW5nNCkKLXsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwg
PSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCk7
Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1
bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTU+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0
IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0
cmluZzMsIHN0cmluZzQsIHN0cmluZzUpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAgICAgICAg
Q1JBU0goKTsKLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywg
dHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJp
bmdUeXBlNj4KLVVTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5n
VHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwg
U3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNikKLXsKLSAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwg
c3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNik7Ci0gICAgaWYgKCFy
ZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5
cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5n
VHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNz4KLVVTdHJp
bmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwg
U3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3Ry
aW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKLXsKLSAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3Ry
aW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwgc3RyaW5n
Nyk7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiBy
ZXN1bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwg
dHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJp
bmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmlu
Z1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMs
IFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0
cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgpCi17Ci0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0
cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYsIHN0cmlu
ZzcsIHN0cmluZzgpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAgICAgICAgQ1JBU0goKTsKLSAg
ICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IDYxYzIxYzMxYjJhNmQzOTM4ZTg4
NmQzM2E2ZTQ1OWYxNTIxOGI0NDEuLmIwYjEyNmYxYzg3MWVkYjBiMjA1ZGE0YjY1NjdkMDA1MDVm
OGZlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTI0LDExICsyNCwx
MSBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgIkluaXRpYWxpemVU
aHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIlVTdHJp
bmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmICFPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHVuaXN0ZC5o
PgpAQCAtNjMsOCArNjMsOCBAQCBzdHJ1Y3QgQ29tbWFuZExpbmUgewogCiAgICAgYm9vbCBpbnRl
cmFjdGl2ZTsKICAgICBib29sIHZlcmJvc2U7Ci0gICAgVmVjdG9yPFVTdHJpbmc+IGFyZ3VtZW50
czsKLSAgICBWZWN0b3I8VVN0cmluZz4gZmlsZXM7CisgICAgVmVjdG9yPFN0cmluZz4gYXJndW1l
bnRzOworICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzOwogfTsKIAogY2xhc3MgU3RvcFdhdGNoIHsK
QEAgLTEwMCw3ICsxMDAsNyBAQCBzdHJ1Y3QgUmVnRXhwVGVzdCB7CiAgICAgewogICAgIH0KIAot
ICAgIFVTdHJpbmcgc3ViamVjdDsKKyAgICBTdHJpbmcgc3ViamVjdDsKICAgICBpbnQgb2Zmc2V0
OwogICAgIGludCByZXN1bHQ7CiAgICAgVmVjdG9yPGludCwgMzI+IGV4cGVjdFZlY3RvcjsKQEAg
LTEwOCwxMiArMTA4LDEyIEBAIHN0cnVjdCBSZWdFeHBUZXN0IHsKIAogY2xhc3MgR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgR2xvYmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1l
bnRzKTsKKyAgICBHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cyk7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTR2xv
YmFsT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVT
dHJpbmc+JiBhcmd1bWVudHMpCisgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBhcmd1bWVudHMpOwogICAgIH0KQEAgLTEyNiw3ICsxMjYs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1l
bnRzKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMp
OwpAQCAtMTM4LDcgKzEzOCw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoR2xvYmFsT2Jq
ZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVjdDo6c19pbmZvID0geyAiZ2xvYmFs
IiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFi
bGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2xvYmFsT2JqZWN0KSB9OwogCi1HbG9iYWxPYmplY3Q6
Okdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKK0dsb2JhbE9iamVjdDo6R2xv
YmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgOiBKU0dsb2JhbE9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAgZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwg
YXJndW1lbnRzKTsKQEAgLTIzOSw3ICsyMzksNyBAQCBzdGF0aWMgYm9vbCB0ZXN0T25lUmVnRXhw
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdleHAsIFJlZ0V4cFRlc3QqCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGludCBzY2FuU3RyaW5nKGNoYXIqIGJ1ZmZl
ciwgaW50IGJ1ZmZlckxlbmd0aCwgVVN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNoYXIgdGVybUNo
YXIpCitzdGF0aWMgaW50IHNjYW5TdHJpbmcoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuZ3Ro
LCBTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjaGFyIHRlcm1DaGFyKQogewogICAgIGJvb2wgZXNj
YXBlID0gZmFsc2U7CiAgICAgCkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGljIGludCBzY2FuU3Ry
aW5nKGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmZlckxlbmd0aCwgVVN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIGMKIAogc3RhdGljIFJlZ0V4cCogcGFyc2VSZWdFeHBMaW5lKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY2hhciogbGluZSwgaW50IGxpbmVMZW5ndGgpCiB7Ci0gICAgVVN0cmluZ0J1aWxk
ZXIgcGF0dGVybjsKKyAgICBTdHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgCiAgICAgaWYgKGxp
bmVbMF0gIT0gJy8nKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMxOSwxMiArMzE5LDEyIEBAIHN0
YXRpYyBSZWdFeHAqIHBhcnNlUmVnRXhwTGluZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNo
YXIqIGxpbmUsIGludCBsaW5lTGVuCiAKICAgICArK2k7CiAKLSAgICByZXR1cm4gUmVnRXhwOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcGF0dGVybi50b1VTdHJpbmcoKSwgcmVnRXhwRmxhZ3MobGluZSAr
IGkpKTsKKyAgICByZXR1cm4gUmVnRXhwOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcGF0dGVybi50b1N0
cmluZygpLCByZWdFeHBGbGFncyhsaW5lICsgaSkpOwogfQogCiBzdGF0aWMgUmVnRXhwVGVzdCog
cGFyc2VUZXN0TGluZShjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0aCkKIHsKLSAgICBVU3RyaW5n
QnVpbGRlciBzdWJqZWN0U3RyaW5nOworICAgIFN0cmluZ0J1aWxkZXIgc3ViamVjdFN0cmluZzsK
ICAgICAKICAgICBpZiAoKGxpbmVbMF0gIT0gJyAnKSB8fCAobGluZVsxXSAhPSAnIicpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgUmVnRXhwVGVzdCogcGFy
c2VUZXN0TGluZShjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0aCkKICAgICAKICAgICBSZWdFeHBU
ZXN0KiByZXN1bHQgPSBuZXcgUmVnRXhwVGVzdCgpOwogICAgIAotICAgIHJlc3VsdC0+c3ViamVj
dCA9IHN1YmplY3RTdHJpbmcudG9VU3RyaW5nKCk7CisgICAgcmVzdWx0LT5zdWJqZWN0ID0gc3Vi
amVjdFN0cmluZy50b1N0cmluZygpOwogICAgIHJlc3VsdC0+b2Zmc2V0ID0gb2Zmc2V0OwogICAg
IHJlc3VsdC0+cmVzdWx0ID0gbWF0Y2hSZXN1bHQ7CiAKQEAgLTM5NCwxMCArMzk0LDEwIEBAIHN0
YXRpYyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3Ro
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBmaWxlcywgYm9v
bCB2ZXJib3NlKQorc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGJvb2wgdmVyYm9zZSkKIHsKLSAg
ICBVU3RyaW5nIHNjcmlwdDsKLSAgICBVU3RyaW5nIGZpbGVOYW1lOworICAgIFN0cmluZyBzY3Jp
cHQ7CisgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHRCdWZmZXI7
CiAgICAgdW5zaWduZWQgdGVzdHMgPSAwOwogICAgIHVuc2lnbmVkIGZhaWx1cmVzID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IGJh
MTAxNzFiZmU4ZWJmMWI5NzBkYmZiOGUxZDI3Y2QwNTVlZGI2MTUuLjVjMmEyODdjOGU1NDBlYzc1
NzU3OWU5MGU3NGIzZDQ4ZTQzZjViYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckludGVycHJldGVyLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiWWFyckludGVycHJldGVyLmgiCiAKLSNpbmNsdWRlICJVU3RyaW5n
LmgiCiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgIllhcnJDYW5vbmljYWxpemVVQ1MyLmgi
CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Rh
dGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAg
LTE5MzQsNyArMTkzNCw3IEBAIFBhc3NPd25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGls
ZShZYXJyUGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0CiAgICAgcmV0dXJuIEJ5
dGVDb21waWxlcihwYXR0ZXJuKS5jb21waWxlKGFsbG9jYXRvcik7CiB9CiAKLXVuc2lnbmVkIGlu
dGVycHJldChCeXRlY29kZVBhdHRlcm4qIGJ5dGVjb2RlLCBjb25zdCBVU3RyaW5nJiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpCit1bnNpZ25lZCBpbnRlcnByZXQoQnl0
ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkKiBvdXRwdXQpCiB7CiAgICAgaWYgKGlucHV0LmlzOEJpdCgpKQogICAgICAg
ICByZXR1cm4gSW50ZXJwcmV0ZXI8TENoYXI+KGJ5dGVjb2RlLCBvdXRwdXQsIGlucHV0LmNoYXJh
Y3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBzdGFydCkuaW50ZXJwcmV0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCmluZGV4IDRlY2Q2OWVjYTcwM2Nk
NmI4ODRjYTYxYTQ0MjQ5MTdjMDNmOTFkYzYuLmZiNjBiZDk3OWQ3NmIxYzYwNDIxZjIxYTUwYjc4
YzQ4YTc3MjkwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJ
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5oCkBAIC0zNzYsNyArMzc2LDcgQEAgcHJpdmF0ZToKIH07CiAKIEpTX0VYUE9SVF9QUklW
QVRFIFBhc3NPd25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYs
IEJ1bXBQb2ludGVyQWxsb2NhdG9yKik7Ci1KU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBpbnRl
cnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgVVN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKK0pTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGludGVy
cHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQqIG91dHB1dCk7CiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJu
KiwgY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCogb3V0cHV0KTsKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBj
b25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkKiBvdXRwdXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4
IGViOTg2MWZlZGQxMjEwOWQ2NWJhOGEyNDhkMTNhNzQxMmQ0MWMyMDguLmVlNmUzOTc1MzczYzQ0
NmEzZDVmNDJkOWU2MTgxMDU4N2JmYzA5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFy
ciB7CiAKIHRlbXBsYXRlPFlhcnJKSVRDb21waWxlTW9kZSBjb21waWxlTW9kZT4KIGNsYXNzIFlh
cnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKLSAgICBmcmllbmQgdm9pZCBq
aXRDb21waWxlKEpTR2xvYmFsRGF0YSosIFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwgY29uc3Qg
VVN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiYg
ZXJyb3IsIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUpOworICAgIGZyaWVuZCB2b2lk
IGppdENvbXBpbGUoSlNHbG9iYWxEYXRhKiwgWWFyckNvZGVCbG9jayYgaml0T2JqZWN0LCBjb25z
dCBTdHJpbmcmIHBhdHRlcm4sIHVuc2lnbmVkJiBudW1TdWJwYXR0ZXJucywgY29uc3QgY2hhciom
IGVycm9yLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5lKTsKIAogI2lmIENQVShBUk0p
CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5wdXQgPSBBUk1SZWdpc3RlcnM6OnIwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmluZGV4IDcxOTI4ZTczY2U3ZGQ0MTU2YzJl
ODM1NTFkNjNkM2ZlYTBhNzczOGUuLmJiNzAzM2ZkZWFhZTA5OTZlMmYxNzRiMWJlNjhmNWQzZmE3
ZDdlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCIKICNpbmNsdWRlICJNYXRjaFJlc3VsdC5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIK
ICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCmluZGV4IDExODJkNzkwNzgxYjcwMDg1MDIwOWYz
NjM1NjAyMTQ5ZGRlYmFiZTYuLjRiYWIxYTA5MDNkOTUzYTEyYTExMTUxNTgwYzRjYTg1ZjVjMTk2
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKQEAgLTI2LDkgKzI2
LDkgQEAKICNpZm5kZWYgWWFyclBhcnNlcl9oCiAjZGVmaW5lIFlhcnJQYXJzZXJfaAogCi0jaW5j
bHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlh
cnIgewpAQCAtNDcsNyArNDcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWxlZ2F0ZSwgdHlwZW5hbWUg
Q2hhclR5cGU+CiBjbGFzcyBQYXJzZXIgewogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBG
cmllbmREZWxlZ2F0ZT4KLSAgICBmcmllbmQgY29uc3QgY2hhciogcGFyc2UoRnJpZW5kRGVsZWdh
dGUmIGRlbGVnYXRlLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25lZCBiYWNrUmVmZXJl
bmNlTGltaXQpOworICAgIGZyaWVuZCBjb25zdCBjaGFyKiBwYXJzZShGcmllbmREZWxlZ2F0ZSYs
IGNvbnN0IFN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KTsKIAog
ICAgIGVudW0gRXJyb3JDb2RlIHsKICAgICAgICAgTm9FcnJvciwKQEAgLTIyOCw3ICsyMjgsNyBA
QCBwcml2YXRlOgogICAgICAgICBVQ2hhciBtX2NoYXJhY3RlcjsKICAgICB9OwogCi0gICAgUGFy
c2VyKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQg
YmFja1JlZmVyZW5jZUxpbWl0KQorICAgIFBhcnNlcihEZWxlZ2F0ZSYgZGVsZWdhdGUsIGNvbnN0
IFN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KQogICAgICAgICA6
IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgICAgICwgbV9iYWNrUmVmZXJlbmNlTGltaXQoYmFj
a1JlZmVyZW5jZUxpbWl0KQogICAgICAgICAsIG1fZXJyKE5vRXJyb3IpCkBAIC04NjgsNyArODY4
LDcgQEAgcHJpdmF0ZToKICAqLwogCiB0ZW1wbGF0ZTxjbGFzcyBEZWxlZ2F0ZT4KLWNvbnN0IGNo
YXIqIHBhcnNlKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgdW5z
aWduZWQgYmFja1JlZmVyZW5jZUxpbWl0ID0gcXVhbnRpZnlJbmZpbml0ZSkKK2NvbnN0IGNoYXIq
IHBhcnNlKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25l
ZCBiYWNrUmVmZXJlbmNlTGltaXQgPSBxdWFudGlmeUluZmluaXRlKQogewogICAgIGlmIChwYXR0
ZXJuLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gUGFyc2VyPERlbGVnYXRlLCBMQ2hhcj4oZGVs
ZWdhdGUsIHBhdHRlcm4sIGJhY2tSZWZlcmVuY2VMaW1pdCkucGFyc2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCBiYmRhOWM1MjY2ZjIzNzk3ZTU2
NjczOTg3ZmZhOTRjZDczN2I5NjI5Li41MDgwOTI5ZjRhNDE5ZGYyMDM0NDgyNjU2ZTdkZTJiOTk1
M2I0NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBA
IC04MjAsNyArODIwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW52ZXJ0UGFyZW50aGV0aWNh
bEFzc2VydGlvbjsKIH07CiAKLWNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0
IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCitjb25zdCBjaGFyKiBZYXJyUGF0dGVybjo6Y29tcGls
ZShjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiB7CiAgICAgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciBjb25zdHJ1Y3RvcigqdGhpcyk7CiAKQEAgLTg1Myw3ICs4NTMsNyBAQCBjb25zdCBjaGFy
KiBZYXJyUGF0dGVybjo6Y29tcGlsZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKQogICAg
IHJldHVybiAwOwogfQogCi1ZYXJyUGF0dGVybjo6WWFyclBhdHRlcm4oY29uc3QgVVN0cmluZyYg
cGF0dGVybiwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVy
cm9yKQorWWFyclBhdHRlcm46OllhcnJQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9v
bCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVycm9yKQogICAgIDog
bV9pZ25vcmVDYXNlKGlnbm9yZUNhc2UpCiAgICAgLCBtX211bHRpbGluZShtdWx0aWxpbmUpCiAg
ICAgLCBtX2NvbnRhaW5zQmFja3JlZmVyZW5jZXMoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCBhMzFkZWVlNjcyOTQ2NDRlNWRjNGFhZDRkN2EwNmIw
NzNiMjBiNzlmLi4xNGU4OWI4ZTA5Mjk2ODgyNmRlYTM5NzU0YzM2ZDEzYjE0MTFmNmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTI3LDEwICsyNywxMCBA
QAogI2lmbmRlZiBZYXJyUGF0dGVybl9oCiAjZGVmaW5lIFlhcnJQYXR0ZXJuX2gKIAotI2luY2x1
ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1Vu
aWNvZGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKQEAgLTMxNiw3ICsz
MTYsNyBAQCBzdHJ1Y3QgVGVybUNoYWluIHsKIH07CiAKIHN0cnVjdCBZYXJyUGF0dGVybiB7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgVVN0cmluZyYgcGF0dGVybiwg
Ym9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVycm9yKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJv
b2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CiAKICAg
ICB+WWFyclBhdHRlcm4oKQogICAgIHsKQEAgLTQwNSw3ICs0MDUsNyBAQCBzdHJ1Y3QgWWFyclBh
dHRlcm4gewogICAgIFZlY3RvcjxDaGFyYWN0ZXJDbGFzcyo+IG1fdXNlckNoYXJhY3RlckNsYXNz
ZXM7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogY29tcGlsZShjb25zdCBVU3RyaW5nJiBw
YXR0ZXJuU3RyaW5nKTsKKyAgICBjb25zdCBjaGFyKiBjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0
dGVyblN0cmluZyk7CiAKICAgICBDaGFyYWN0ZXJDbGFzcyogbmV3bGluZUNhY2hlZDsKICAgICBD
aGFyYWN0ZXJDbGFzcyogZGlnaXRzQ2FjaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwCmluZGV4IDUxZmRhOTRkOGEzZDc2ZmM1YTJkNzZi
NTYzZmI1ZjZiYTkyOWZmMzEuLmFhOThjNGEzNTQ3NTc3ZmE2YzUxYzg4MWZhYjMzNThkYmNkOTky
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tl
ci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzanVuY3Rpb24oKSB7
fQogfTsKIAotY29uc3QgY2hhciogY2hlY2tTeW50YXgoY29uc3QgVVN0cmluZyYgcGF0dGVybikK
K2NvbnN0IGNoYXIqIGNoZWNrU3ludGF4KGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKICAgICBT
eW50YXhDaGVja2VyIHN5bnRheENoZWNrZXI7CiAgICAgcmV0dXJuIHBhcnNlKHN5bnRheENoZWNr
ZXIsIHBhdHRlcm4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clN5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhD
aGVja2VyLmgKaW5kZXggMjAxMzY3MWViNTczZjliNmUwMjNjMzBhM2I1YWQyOGE2YWU5YWVmYy4u
MTA0Y2VkM2FiNGJkNzhjYjJhZTY0MDZiN2Y2MzUxODI2NGNhYmQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oCkBAIC0yNiwxMSArMjYsMTEg
QEAKICNpZm5kZWYgWWFyclN5bnRheENoZWNrZXJfaAogI2RlZmluZSBZYXJyU3ludGF4Q2hlY2tl
cl9oCiAKLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKIAotY29uc3Qg
Y2hhciogY2hlY2tTeW50YXgoY29uc3QgVVN0cmluZyYgcGF0dGVybik7Citjb25zdCBjaGFyKiBj
aGVja1N5bnRheChjb25zdCBTdHJpbmcmIHBhdHRlcm4pOwogCiB9fSAvLyBKU0M6OllBUlIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIveWFyci5wcmkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci95YXJyLnByaQppbmRleCA2MjMwOThmZDNhZjdiMzBlMDBlZTg1
MzE0MjUzMzZjYzgyZDQwMGU5Li43ZTliNGQzZjNiM2NmYmQ0ZTNjOTdiM2M4YjEwYTY4YWJjZGNi
ZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci95YXJyLnByaQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci95YXJyLnByaQpAQCAtMTAsOSArMTAsMyBAQCBT
T1VSQ0VTICs9IFwKICAgICAkJFBXRC9ZYXJyU3ludGF4Q2hlY2tlci5jcHAgXAogICAgICQkUFdE
L1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcAogCi0jIEZvciBVU3RyaW5nLmgKLXY4IHsKLSAgICBJ
TkNMVURFUEFUSCArPSBcCi0gICAgICAgICQkUFdELy4uIFwKLSAgICAgICAgJCRQV0QvLi4vcnVu
dGltZQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZDlhZDVhNWMyYmQ2MTE2NmZkZGU4MDc1YmVhZGMxOWYw
MDM1YjAzZS4uNGE0ZWZlODQ2ZWI1NTgwMWE4ZTU4YmVhZGM3ZmY3YThkZGYyMTY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCkBAIC0xMTY5LDQgKzExNjksMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBXVEZfUGxh
dGZvcm1faCAqLwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBiNTA3YzQ5OGMxMmQ3ZTg0
MjA0MWIwMmQ5ZjFkZDljMWE3OTBlYzg5Li4zYWIwYWRmM2JmOTk1MzNmZTRkZDIxODNmYjI2ZTgy
ZTRhMDIzMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTE5OCw4ICsxOTgsMTMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgaW5saW5lIGNvbnN0IENoYXJU
eXBlKiBnZXRDaGFyYWN0ZXJzKCkgY29uc3Q7CisgICAgLy8gUmV0dXJuIGNoYXJhY3RlcnM4KCkg
b3IgY2hhcmFjdGVyczE2KCkgZGVwZW5kaW5nIG9uIENoYXJhY3RlclR5cGUuCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CisgICAgaW5saW5lIGNvbnN0IENoYXJhY3RlclR5
cGUqIGdldENoYXJhY3RlcnMoKSBjb25zdDsKKworICAgIC8vIExpa2UgZ2V0Q2hhcmFjdGVycygp
IGFuZCB1cGNvbnZlcnQgaWYgQ2hhcmFjdGVyVHlwZSBpcyBVQ2hhciBvbiBhIDhiaXQgc3RyaW5n
LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorICAgIGlubGluZSBjb25z
dCBDaGFyYWN0ZXJUeXBlKiBnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCgpIGNvbnN0OwogCiAg
ICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9CiAKQEAg
LTMxNSw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQg
cmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5U
X01BWCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBv
cywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBs
ZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25z
dCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQogICAgIFN0cmluZyByaWdodCh1bnNpZ25l
ZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQog
CkBAIC01MTgsNiArNTIzLDE5IEBAIGlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpnZXRDaGFy
YWN0ZXJzPFVDaGFyPigpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnMxNigpOwogfQogCit0
ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Z2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQ8TENoYXI+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIHJl
dHVybiBjaGFyYWN0ZXJzOCgpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgVUNoYXIq
IFN0cmluZzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQ8VUNoYXI+KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gY2hhcmFjdGVycygpOworfQorCiBpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5z
T25seUxhdGluMSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVVN0cmluZy5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQ5ODVhYTUyMWM5NTFiMGYyZGIwMWQ4NTVlY2ZjOGViZDU1ZTkz
ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0ICswLDAgQEAKLSNpZm5kZWYgV2ViQ29yZV9GV0RfVVN0cmluZ19oCi0jZGVmaW5l
IFdlYkNvcmVfRldEX1VTdHJpbmdfaAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VTdHJpbmcu
aD4KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9VU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1OTJhNzgzMGYxZjQ3ZDRjOWY2NjkyMTdkODc2MzlhY2E0YjFkNjExLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQg
KzAsMCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9VU3RyaW5nQnVpbGRlcl9oCi0jZGVmaW5lIFdl
YkNvcmVfRldEX1VTdHJpbmdCdWlsZGVyX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VU3Ry
aW5nQnVpbGRlci5oPgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk0MTY3YTRkNmVlZjU5MzNmMmNlZDdmNzQ1NDRkODc5ZTc3YjkzMWMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nSW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX1VTdHJpbmdJbXBsX2gKLSNkZWZpbmUgV2Vi
Q29yZV9GV0RfVVN0cmluZ0ltcGxfaAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VTdHJpbmdJ
bXBsLmg+Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmVhMTRkODcyNzUxZDc0ZDY0
OGE5NmM3YTJjOWVjMmNkNDQ5MzQzNy4uYWI1ZjYyZDQxNTUwNWNlZTk1YWMxYjQyMWJjNjRiNmJj
YWNjYTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE4MzMsNyArMTgzMyw3IEBAIF9fWk43
V2ViQ29yZTE2VGhyZWFkR2xvYmFsRGF0YTI2c2hhcmVkTWFpblRocmVhZFN0YXRpY0RhdGFFCiBf
X1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24yN3NlbGVjdGlvbkZyb21Db250ZW50c09mTm9k
ZUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25DMUV2CiBfX1pON1dl
YkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUks2Q0dSZWN0Ci1fX1pON1dlYkNvcmUxNmpzU3RyaW5n
U2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1w
bEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM18xMFN0cmluZ0hhc2hFTlMzXzEwSGFzaFRy
YWl0c0lTNl9FRU5TQl9JUzlfRUVFRVM2XworX19aTjdXZWJDb3JlMTZqc1N0cmluZ1dpdGhDYWNo
ZVNsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0lt
cGxFTlMwXzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfMTBTdHJpbmdIYXNoRU5TM18xMEhhc2hU
cmFpdHNJUzZfRUVOU0JfSVM5X0VFRUVTNl8KIF9fWk43V2ViQ29yZTE2bmV4dExpbmVQb3NpdGlv
bkVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWlOU18xMkVkaXRhYmxlVHlwZUUKIF9fWk43V2ViQ29y
ZTE2bmV4dFdvcmRQb3NpdGlvbkVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3Jl
MTdDcmVkZW50aWFsU3RvcmFnZTE2Y2xlYXJDcmVkZW50aWFsc0V2CkBAIC0yMzA5LDggKzIzMDks
OCBAQCBfX05QTl9TZXRQcm9wZXJ0eQogX19OUE5fVVRGOEZyb21JZGVudGlmaWVyCiBfX1pON1dl
YkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyMHdpbmRvd1NjcmlwdE5QT2JqZWN0RXYKIF9fWk43V2Vi
Q29yZTE2U2NyaXB0Q29udHJvbGxlcjI5Y2xlYW51cFNjcmlwdE9iamVjdHNGb3JQbHVnaW5FUHYK
LV9fWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjdI
YXNoTWFwSVBOUzNfMTBTdHJpbmdJbXBsRU5TMF80V2Vha0lOUzBfOEpTU3RyaW5nRUVFTlMzXzdQ
dHJIYXNoSVM2X0VFTlMzXzEwSGFzaFRyYWl0c0lTNl9FRU5TQ19JUzlfRUVFRVM2XwogX19aTjdX
ZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDExZ2V0TlBPYmplY3RFdgorX19aTjdXZWJDb3JlMjVq
c1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJ
UE5TM18xMFN0cmluZ0ltcGxFTlMwXzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfN1B0ckhhc2hJ
UzZfRUVOUzNfMTBIYXNoVHJhaXRzSVM2X0VFTlNDX0lTOV9FRUVFUzZfCiBfX1pOSzdXZWJDb3Jl
MTRTZWN1cml0eU9yaWdpbjljYW5BY2Nlc3NFUEtTMF8KIF9fWk5LN1dlYkNvcmU0S1VSTDdoYXNQ
YXRoRXYKICNlbmRpZgpAQCAtMjMzOCw3ICsyMzM4LDcgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjZz
ZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudEVpCiAKICNpZiBVU0UoUExVR0lOX0hPU1RfUFJPQ0VT
UykKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTFnZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNf
OENhbGxEYXRhRQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18x
MkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZp
bmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS04zV1RGNlN0cmluZ0UKIF9fWk4zSlND
MTNSdW50aW1lTWV0aG9kMThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVj
U3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxM1J1
bnRpbWVNZXRob2QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185
RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9f
Wk4zSlNDMTNSdW50aW1lTWV0aG9kNnNfaW5mb0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZmJkOGE1YmE1NjIxZTI3MmY0MzgwYjUzNzdiZGQz
NjNhODVkMmFmMy4uY2FhMjE5MTE1NWFhZWU2ODRhYzc3NmQzYzljYmYyYTVkZjM4MWFhMiAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTczODc3
LDE0ICs3Mzg3Nyw2IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZVxTdHJpbmdPYmplY3QuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcVVN0cmluZy5o
IgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxVU3RyaW5nSW1wbC5oIgotCQkJCQk+Ci0JCQkJPC9G
aWxlPgogCQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0ieWFyciIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRl
ci5oCmluZGV4IDhlZmI0ODE3NTM0MzY2ZGM1NDc5OTg2YjNiMGFkMmY4ODUwNmJjNjEuLjBkZDNj
ZjU3N2YxODZmNGIyMDVjZWEwOGZkYjU4YTExY2VmZmNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKLSNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIgLy8gZm9yIHN0cmluZ1RvVVN0cmluZwogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4K
IApAQCAtNDUsMTQgKzQ0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIG1f
Y2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICB2
aXJ0dWFsIEpTQzo6VVN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0IE9W
RVJSSURFCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldFJhbmdlKGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3QgT1ZFUlJJREUKICAgICAgICAgewogICAgICAgICAgICAgaW50IGxlbmd0aCA9IGVu
ZCAtIHN0YXJ0OwogICAgICAgICAgICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsKICAgICAgICAgICAg
IEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSB0aGlzLT5sZW5ndGgoKSk7CiAKICAgICAgICAgICAg
IFN0cmluZyBzY3JpcHQgPSBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNDOjpVU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZShzY3JpcHQuaW1wbCgpLCBzdGFy
dCwgbGVuZ3RoKSk7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0
ZShzY3JpcHQuaW1wbCgpLCBzdGFydCwgbGVuZ3RoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBj
b25zdCBTdHJpbmdJbXBsKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNj
cmlwdCgpLmltcGwoKTsgfQpAQCAtNjYsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcihDYWNoZWRT
Y3JpcHQqIGNhY2hlZFNjcmlwdCkKLSAgICAgICAgICAgIDogU2NyaXB0U291cmNlUHJvdmlkZXIo
c3RyaW5nVG9VU3RyaW5nKGNhY2hlZFNjcmlwdC0+cmVzcG9uc2UoKS51cmwoKSksIFRleHRQb3Np
dGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGNhY2hlZFNjcmlwdC0+c291cmNlUHJvdmlkZXJDYWNo
ZSgpKQorICAgICAgICAgICAgOiBTY3JpcHRTb3VyY2VQcm92aWRlcihjYWNoZWRTY3JpcHQtPnJl
c3BvbnNlKCkudXJsKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGNhY2hlZFNj
cmlwdC0+c291cmNlUHJvdmlkZXJDYWNoZSgpKQogICAgICAgICAgICAgLCBtX2NhY2hlZFNjcmlw
dChjYWNoZWRTY3JpcHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5h
ZGRDbGllbnQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3Bw
CmluZGV4IGJhOTYwZGM4MjgzYmVhM2EyZDRlMjcwMTBjNDllM2NiNDk0M2Y2ZGYuLjg2MzdkYWNj
YTA3ODJkNGE5YWNiZmY3ZDUwYzU1NGU1YzM3MTRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC02NSwxMyArNjUsMTMgQEAgYm9vbCBEaWN0aW9uYXJ5
OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIG0KICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwogICAg
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3Bl
cnR5TmFtZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IHVzdHJp
bmdUb1N0cmluZyhpdC0+dXN0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0
LT51c3RyaW5nKCk7CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCAq
aXQpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1
ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgaWYgKCFleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIG1hcC5zZXQoc3RyaW5nS2V5LCBzdHJpbmdW
YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcAppbmRleCBjZGMwYzQ4ODQxNWNhMjMzNDJiNDFmNGRlNTUzMTllYTdj
Yzk0NDhjLi5iNTVlNzZiYmRmNmI4MDdkNzUwODJjZjhlNjZjYTE1MjljOTQ2NTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApA
QCAtMzksNyArMzksNyBAQCBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdQogICAgIGlmICh2YWx1ZS5p
c0ludDMyKCkpCiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJlcih2YWx1ZS50b051
bWJlcihleGVjKSk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBJ
REJLZXk6OmNyZWF0ZVN0cmluZyh1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZVN0cmluZyh2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
ZGF0ZXMuCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
bG9iQ3VzdG9tLmNwcAppbmRleCA0OWNhMjk2NGM1NjRmZjg2MWNhY2I4ZjczYWIzZjY2MDNlNDlm
ZGE0Li4zZWU2MTg0MzJmZWU4YTcwNDZmODc2ZjdhMjVmOWJiYjc0MzlkZTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKQEAgLTEyOSw3ICsxMjksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQmxvYkNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU0Jsb2IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoaXRlbS5pbmhlcml0cygmSlNC
bG9iOjpzX2luZm8pKQogICAgICAgICAgICAgYmxvYkJ1aWxkZXItPmFwcGVuZCh0b0Jsb2IoaXRl
bSkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSB1c3RyaW5n
VG9TdHJpbmcoaXRlbS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAg
U3RyaW5nIHN0cmluZyA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBibG9iQnVpbGRlci0+
YXBwZW5kKHN0cmluZywgZW5kaW5ncywgQVNTRVJUX05PX0VYQ0VQVElPTik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcAppbmRleCA0NjRlOGJiNzc1ZDA1MTY0MWVhMzYzNGNhZjMxOWU4OTZlOWRjNDc2Li40
YTE5ODk0ZmJhYTFmY2EyZjk3OTU1ZDc2NjE0YzRiZDEyODBjYTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgZ2V0UHJvcGVy
dHlWYWx1ZUZhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcgogewogICAg
IC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFk
ZGluZyIpLAogICAgIC8vIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5
VmFsdWUuCi0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOwor
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpbmRleCkpKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1By
ZWZpeChFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5z
aWduZWQgcHJvcGVydHlJRCkKQEAgLTM3Nyw3ICszNzcsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYQogCiBKU1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUodXN0
cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSkpOworICAgIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcAppbmRleCAwYzY3NGNiNmY0ZmY0M2IxMTc4Y2RlZTVjMThlMGI1ZDdhMzg2NzViLi4w
MjZiMWFlMWRlZDdmMjAwN2U5Y2YxNmIxMDYxNzQ5MTYyNzA4NWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNTdHls
CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUtPmNhbnZhc0dy
YWRpZW50KCkpOwogICAgIGlmIChzdHlsZS0+Y2FudmFzUGF0dGVybigpKQogICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpOwotICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBzdHlsZS0+Y29sb3IoKSk7CisgICAgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKGV4ZWMsIHN0eWxlLT5jb2xvcigpKTsKIH0KIAogc3RhdGljIFBhc3NSZWZQ
dHI8Q2FudmFzU3R5bGU+IHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFs
dWUpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dFN0cm9rZVN0eWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQqPihpbXBsKCkpOwogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyh2YWx1
ZSktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGFzU3Ry
aW5nKHZhbHVlKS0+dmFsdWUoZXhlYykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNv
bnRleHQtPnNldFN0cm9rZVN0eWxlKHRvSFRNTENhbnZhc1N0eWxlKGV4ZWMsIHZhbHVlKSk7CkBA
IC04NSw3ICs4NSw3IEBAIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxT
dHlsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEKj4oaW1wbCgpKTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IodXN0cmluZ1RvU3RyaW5nKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUo
ZXhlYykpKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGFzU3RyaW5nKHZhbHVlKS0+
dmFsdWUoZXhlYykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNvbnRleHQtPnNldEZp
bGxTdHlsZSh0b0hUTUxDYW52YXNTdHlsZShleGVjLCB2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IDhjZmQ2NWEyOWQ5
YjA3NWQyMzE0MmU2OWViODllODYxNGE5YTM2ZjYuLjNhOTNmODkzM2U1OGIzODM2MTJiNzg3NmI3
MjI5MzFhZmExNDdiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ns
aXBib2FyZEN1c3RvbS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSlNWYWx1ZSBKU0NsaXBib2FyZDo6
dHlwZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxp
c3Q7CiAgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSB0eXBlcy5lbmQo
KTsKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nKGV4
ZWMsIHN0cmluZ1RvVVN0cmluZygqaXQpKSk7CisgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5n
V2l0aENhY2hlKGV4ZWMsICppdCkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBn
bG9iYWxPYmplY3QoKSwgbGlzdCk7CiB9CiAKQEAgLTczLDcgKzczLDcgQEAgSlNWYWx1ZSBKU0Ns
aXBib2FyZDo6Y2xlYXJEYXRhKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKLSAgICAgICAgY2xpcGJvYXJkLT5jbGVhckRhdGEo
dXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworICAgICAgICBjbGlwYm9hcmQtPmNsZWFyRGF0YShleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCA4NDdiY2U0ZDZhZTdjNGMzNzUxYWZiMTJlYWE2
NDQ4YjYyNzhlMDY0Li5kMWRjMGIxY2VlZDMyMTE2YjY3ZjEyNDhiMjgwYTRmZDRkN2MzYmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIFJlZlB0
cjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gc2VsZlByb3RlY3Rvcih0aGlzKTsKIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywg
cHJlZml4KSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcHJlZml4
KSk7CiAKICAgICBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7CiAgICAgSlNWYWx1ZSByZXR2YWwgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwo
ZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9jdXN0b21SZXNvbHZlci5nZXQo
KSwgYXJncyk7CkBAIC05OCw3ICs5OCw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgICAgICByZXBv
cnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIXJldHZh
bC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmVzdWx0ID0gdXN0cmluZ1RvU3Ry
aW5nKHJldHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAgcmVz
dWx0ID0gcmV0dmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICB9CiAKICAgICBE
b2N1bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDY1NTFkNjY4N2RmZjgyOGU5NTRiYzJj
ZjFmNGFhNmM4ZmEyNDY1MjUuLjM0NGE4MDc4Mjg2ZDI1ZWE0OGExNDIyZjEzZGRhYjg3OGNmOTll
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAt
NDgsOSArNDgsOSBAQCBjb25zdCBKU0M6Okhhc2hUYWJsZSogZ2V0SGFzaFRhYmxlRm9yR2xvYmFs
RGF0YShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0CiAgICAgcmV0dXJuIERPTU9iamVj
dEhhc2hUYWJsZU1hcDo6bWFwRm9yKGdsb2JhbERhdGEpLmdldChzdGF0aWNUYWJsZSk7CiB9CiAK
LUpTVmFsdWUganNTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nQ2FjaGUm
IHN0cmluZ0NhY2hlLCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKQorSlNWYWx1ZSBqc1N0cmluZ1dp
dGhDYWNoZVNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2Fj
aGUsIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiB7Ci0gICAgSlNTdHJpbmcqIHdyYXBwZXIgPSBq
c1N0cmluZyhleGVjLCBVU3RyaW5nKHN0cmluZ0ltcGwpKTsKKyAgICBKU1N0cmluZyogd3JhcHBl
ciA9IEpTQzo6anNTdHJpbmcoZXhlYywgU3RyaW5nKHN0cmluZ0ltcGwpKTsKICAgICB3ZWFrQWRk
KHN0cmluZ0NhY2hlLCBzdHJpbmdJbXBsLCBQYXNzV2VhazxKU1N0cmluZz4od3JhcHBlciwgY3Vy
cmVudFdvcmxkKGV4ZWMpLT5zdHJpbmdXcmFwcGVyT3duZXIoKSwgc3RyaW5nSW1wbCkpOwogICAg
IHJldHVybiB3cmFwcGVyOwogfQpAQCAtNTksNDAgKzU5LDQwIEBAIEpTVmFsdWUganNTdHJpbmdP
ck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhl
Yywgcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHMpOwogfQogCiBKU1Zh
bHVlIGpzT3duZWRTdHJpbmdPck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMp
CiB7CiAgICAgaWYgKHMuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICBy
ZXR1cm4ganNPd25lZFN0cmluZyhleGVjLCBzdHJpbmdUb1VTdHJpbmcocykpOworICAgIHJldHVy
biBqc093bmVkU3RyaW5nKGV4ZWMsIHMpOwogfQogCiBKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmlu
ZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBqc1N0cmluZyhl
eGVjLCBzKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcyk7CiB9CiAKIEpT
VmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5n
V2l0aENhY2hlKGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKIEpTVmFsdWUganNTdHJpbmdPck51
bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1cmwu
c3RyaW5nKCkpOwogfQogCiBKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVybC5zdHJp
bmcoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHVybC5zdHJpbmcoKSk7
CiB9CiAKIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNTdHJpbmcoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKQEAgLTEwOCwxNCArMTA4LDE0IEBAIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0
aE51bGxDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHVzdHJp
bmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJldHVy
biB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiB9CiAKIFN0cmluZyB2YWx1ZVRv
U3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiB1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogfQogCiBKU1ZhbHVlIGpzRGF0ZU9yTnVsbChFeGVjU3RhdGUqIGV4ZWMsIGRv
dWJsZSB2YWx1ZSkKQEAgLTEzOSw3ICsxMzksNyBAQCBKU0M6OkpTVmFsdWUganNBcnJheShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzcwog
ICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICBpZiAoc3RyaW5nTGlzdCkg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5nTGlzdC0+bGVuZ3RoKCk7
ICsraSkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHN0cmluZ0xpc3Qt
Pml0ZW0oaSkpKTsKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIHN0cmluZ0xpc3QtPml0ZW0oaSkpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTQzo6Y29uc3Ry
dWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBsaXN0KTsKIH0KQEAgLTE0OSwxNCArMTQ5LDE0
IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBleGNlcHRp
b24pCiAgICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGNlcHRpb24pKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IGV4Y2VwdGlvbi50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGV4
Y2VwdGlvbi50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgSlNPYmplY3QqIGV4Y2Vw
dGlvbk9iamVjdCA9IGV4Y2VwdGlvbi50b09iamVjdChleGVjKTsKICAgICBpbnQgbGluZU51bWJl
ciA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSku
dG9JbnQzMihleGVjKTsKLSAgICBVU3RyaW5nIGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlv
bk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4
Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
IAogICAgIGlmIChFeGNlcHRpb25CYXNlKiBleGNlcHRpb25CYXNlID0gdG9FeGNlcHRpb25CYXNl
KGV4Y2VwdGlvbikpCi0gICAgICAgIGVycm9yTWVzc2FnZSA9IHN0cmluZ1RvVVN0cmluZyhleGNl
cHRpb25CYXNlLT5tZXNzYWdlKCkgKyAiOiAiICArIGV4Y2VwdGlvbkJhc2UtPmRlc2NyaXB0aW9u
KCkpOworICAgICAgICBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb25CYXNlLT5tZXNzYWdlKCkgKyAi
OiAiICArIGV4Y2VwdGlvbkJhc2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHlu
YW1pY0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpKSB7CkBAIC0xNjQsNyArMTY0LDcg
QEAgdm9pZCByZXBvcnRFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2VwdGlv
bikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnJlcG9ydEV4Y2VwdGlvbih1
c3RyaW5nVG9TdHJpbmcoZXJyb3JNZXNzYWdlKSwgbGluZU51bWJlciwgdXN0cmluZ1RvU3RyaW5n
KGV4Y2VwdGlvblNvdXJjZVVSTCksIDApOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnJl
cG9ydEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGV4Y2VwdGlvblNvdXJjZVVS
TCwgMCk7CiB9CiAKIHZvaWQgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDBjM2Q1Mzc0
ODFiZWEyYTk5Yzk4MzUzYzE0ZDZlMTZmMDAyNDQ5N2QuLjAwOWIyN2MzYWNhYWIyOWQxYWU3ZmRk
YjRlYzA1Y2QxYmEwN2QxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCkBAIC0yMzMsMTIgKzIzMywxMiBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kg
ewogICAgIC8vIENvbnZlcnQgYSBET00gaW1wbGVtZW50YXRpb24gZXhjZXB0aW9uIGNvZGUgaW50
byBhIEphdmFTY3JpcHQgZXhjZXB0aW9uIGluIHRoZSBleGVjdXRpb24gc3RhdGUuCiAgICAgdm9p
ZCBzZXRET01FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25Db2RlKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAv
LyBlbXB0eSBpZiB0aGUgc3RyaW5nIGlzIG51bGwKLSAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdT
bG93Q2FzZShKU0M6OkV4ZWNTdGF0ZSosIEpTU3RyaW5nQ2FjaGUmLCBTdHJpbmdJbXBsKik7Cisg
ICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJik7CisgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hlU2xvd0Nhc2UoSlND
OjpFeGVjU3RhdGUqLCBKU1N0cmluZ0NhY2hlJiwgU3RyaW5nSW1wbCopOwogICAgIEpTQzo6SlNW
YWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gZW1wdHkgaWYg
dGhlIFVSTCBpcyBudWxsCi0gICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzKQorICAgIGlubGluZSBKU0M6OkpT
VmFsdWUganNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21p
Y1N0cmluZyYgcykKICAgICB7IAotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcy5zdHJp
bmcoKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBzLnN0cmluZygp
KTsKICAgICB9CiAgICAgICAgIAogICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVsbChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlmIHRoZSBzdHJpbmcgaXMgbnVs
bApAQCAtMjUyLDExICsyNTIsOCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAg
IEpTQzo6SlNWYWx1ZSBqc093bmVkU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJik7IAogCiAgICAgU3RyaW5nIHByb3BlcnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVy
dHlOYW1lKTsKLSAgICBTdHJpbmcgdXN0cmluZ1RvU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYp
OwotICAgIEpTQzo6VVN0cmluZyBzdHJpbmdUb1VTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5h
bWUpOwotICAgIEF0b21pY1N0cmluZyB1c3RyaW5nVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpV
U3RyaW5nJik7CiAgICAgQXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmluZyhKU0M6OlBy
b3BlcnR5TmFtZSk7CiAKICAgICBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2YWx1ZSBpcyBudWxs
CkBAIC0zMTcsNyArMzE0LDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICBz
dHJ1Y3QgSlNWYWx1ZVRyYWl0czxTdHJpbmc+IHsKICAgICAgICAgc3RhdGljIGlubGluZSBKU0M6
OkpTVmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCBzdHJpbmdUb1VTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9Owog
CkBAIC0zNTgsNyArMzU1LDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICBz
dHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8U3RyaW5nPiB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBhcnJheU5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUg
anNWYWx1ZSwgU3RyaW5nJiBpbmRleGVkVmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlu
ZGV4ZWRWYWx1ZSA9IHVzdHJpbmdUb1N0cmluZyhqc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CisgICAgICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgfTsKQEAgLTQwOSwzMCArNDA2LDIyIEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7
CiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICBKU0M6OkpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRl
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCi0g
ICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBzKQorICAgIGlubGluZSBKU0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGUo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKICAgICB7CiAgICAgICAgIFN0
cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzLmltcGwoKTsKICAgICAgICAgaWYgKCFzdHJpbmdJbXBs
IHx8ICFzdHJpbmdJbXBsLT5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBqc0VtcHR5U3Ry
aW5nKGV4ZWMpOwogCisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGRuJ3QgaW52b2tlIFN0cmlu
Z0ltcGw6OmNoYXJhY3RlcnMoKS4KKyAgICAgICAgLy8gRklYTUU6IHdoeSBub3QganVzdCByZXR1
cm4gYSBTbWFsbFN0cmluZ3Mgd2hlbiBwb3NzaWJsZT8KICAgICAgICAgaWYgKHN0cmluZ0ltcGwt
Pmxlbmd0aCgpID09IDEgJiYgc3RyaW5nSW1wbC0+Y2hhcmFjdGVycygpWzBdIDw9IDB4RkYpCi0g
ICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKHMpKTsKKyAg
ICAgICAgICAgIHJldHVybiBKU0M6OmpzU3RyaW5nKGV4ZWMsIHMpOwogCiAgICAgICAgIEpTU3Ry
aW5nQ2FjaGUmIHN0cmluZ0NhY2hlID0gY3VycmVudFdvcmxkKGV4ZWMpLT5tX3N0cmluZ0NhY2hl
OwogICAgICAgICBpZiAoSlNDOjpKU1N0cmluZyogc3RyaW5nID0gc3RyaW5nQ2FjaGUuZ2V0KHN0
cmluZ0ltcGwpKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKIAotICAgICAgICByZXR1cm4g
anNTdHJpbmdTbG93Q2FzZShleGVjLCBzdHJpbmdDYWNoZSwgc3RyaW5nSW1wbCk7Ci0gICAgfQot
Ci0gICAgaW5saW5lIFN0cmluZyB1c3RyaW5nVG9TdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJiB1
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHUuaW1wbCgpOwotICAgIH0KLQotICAgIGlubGluZSBK
U0M6OlVTdHJpbmcgc3RyaW5nVG9VU3RyaW5nKGNvbnN0IFN0cmluZyYgcykKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBKU0M6OlVTdHJpbmcocy5pbXBsKCkpOworICAgICAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGVTbG93Q2FzZShleGVjLCBzdHJpbmdDYWNoZSwgc3RyaW5nSW1wbCk7CiAgICAg
fQogCiAgICAgaW5saW5lIFN0cmluZyBwcm9wZXJ0eU5hbWVUb1N0cmluZyhKU0M6OlByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC00NDAsMTEgKzQyOSw2IEBAIGVudW0gUGFyYW1ldGVyRGVm
YXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwog
ICAgIH0KIAotICAgIGlubGluZSBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5nKGNv
bnN0IEpTQzo6VVN0cmluZyYgdSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmco
dS5pbXBsKCkpOwotICAgIH0KLQogICAgIGlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAK
aW5kZXggN2JlOTMzMjhjMjY1NjY0N2Q3ZjFmMGU2MjNhYmE2ZDI1MDc3M2JiMy4uNGVkNDQ5N2Ex
YmRhNDBiZDQyNDcxNjRjNzk4YTAyYmZhMWJlMTk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTYwLDE1ICs2MCwxNSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NRm9ybURhdGFDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNET01Gb3JtRGF0YShFeAogSlNWYWx1ZSBKU0RPTUZvcm1EYXRhOjphcHBlbmQo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikg
ewotICAgICAgICBTdHJpbmcgbmFtZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBTdHJpbmcgbmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgICAgICBpZiAodmFsdWUuaW5oZXJp
dHMoJkpTQmxvYjo6c19pbmZvKSkgewogICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lOwogICAg
ICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzICYmICFleGVjLT5hcmd1bWVu
dCgyKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gdXN0
cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDIpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBleGVjLT5hcmd1bWVudCgyKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICBpbXBsKCktPmFwcGVuZChuYW1lLCB0
b0Jsb2IodmFsdWUpLCBmaWxlbmFtZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW1w
bCgpLT5hcHBlbmQobmFtZSwgdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgICAgICAgICAgaW1wbCgpLT5hcHBlbmQobmFtZSwgdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xp
c3RDdXN0b20uY3BwCmluZGV4IDdmOGQ1ZWM1M2ZmYzNmMzY5YTljYzZmYTI2M2ZhZDJiNmYzYmJm
MzkuLjY4NjlkY2VhNDlmZTYzMDQ4MDdhOTJkN2U5NTMzZDE5YTQ5YTZkNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcApA
QCAtMzQsNyArMzQsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlz
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgSlNBcnJheSogYXJyYXkgPSBh
c0FycmF5KHZhbHVlKTsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3RyaW5nTGlzdCA9IERP
TVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJh
eS0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgc3RyaW5nTGlzdC0+YXBwZW5kKHVzdHJpbmdUb1N0
cmluZyhhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cisg
ICAgICAgIHN0cmluZ0xpc3QtPmFwcGVuZChhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKIAogICAgIHJldHVybiBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcAppbmRleCA4OTFlYTZhYjQxYjYxODlhZDhkNDQ4MGZlYjc4NGQ0ZmE0YjQ0MDdlLi5kMzk3
OWM0OTQzOTFiN2EzZWE1YmIzMWYwODdkOWRlOTlmNzZhODdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC00Myw3ICs0
Myw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCBET01TdHJpbmdNYXAqIGltcGwsIFByb3BlcnR5CiBKU1ZhbHVlIEpTRE9NU3RyaW5nTWFwOjpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09iaiA9IGpzQ2FzdDxK
U0RPTVN0cmluZ01hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNP
YmotPmltcGwoKS0+aXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KSk7CiB9CiAKIHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wCiAgICAgdGhpc09iamVjdC0+bV9pbXBsLT5nZXROYW1lcyhuYW1lcyk7CiAg
ICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4
ZWMsIHN0cmluZ1RvVVN0cmluZyhuYW1lc1tpXSkpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcihleGVjLCBuYW1lc1tpXSkpOwogCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KQEAgLTcy
LDcgKzcyLDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBib29sIEpTRE9NU3RyaW5nTWFw
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7Ci0gICAgU3RyaW5nIHN0cmluZ1Zh
bHVlID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGExZjBjMWIyMjYwZDVmYjZmMGJjZjkx
N2JlYzZmZTZhNTViN2NkM2MuLjM0MzlhZmI0NTEzYzQ1MmY5YTU5ZTAwM2U3OTNjMGEyMDI4ZDQ3
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKQEAgLTQyMSwxMiArNDIxLDEyIEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICB9CiAjZW5kaWYKIAotICAgIFVT
dHJpbmcgbG9jYXRpb25TdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgU3RyaW5nIGxvY2F0aW9uU3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKExvY2F0aW9uKiBsb2NhdGlvbiA9IGltcGwoKS0+bG9jYXRpb24oKSkKLSAgICAg
ICAgbG9jYXRpb24tPnNldEhyZWYodXN0cmluZ1RvU3RyaW5nKGxvY2F0aW9uU3RyaW5nKSwgYWN0
aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAgICAgIGxvY2F0
aW9uLT5zZXRIcmVmKGxvY2F0aW9uU3RyaW5nLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0
RE9NV2luZG93KGV4ZWMpKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6ZXZlbnQoRXhlY1N0
YXRlKiBleGVjKSBjb25zdApAQCAtNDcyLDcgKzQ3Miw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6
Om9wZW4oRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB2YWx1ZVRvU3Ry
aW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgIEF0b21pY1N0cmluZyBmcmFtZU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVm
aW5lZE9yTnVsbCgpID8gIl9ibGFuayIgOiB1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJn
dW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBBdG9taWNTdHJpbmcg
ZnJhbWVOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSA/ICJfYmxh
bmsiIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgU3RyaW5nIHdpbmRvd0ZlYXR1cmVzU3RyaW5nID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgyKSk7CkBAIC02NDEsNyArNjQx
LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcih1c3RyaW5nVG9BdG9taWNT
dHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwgY3Vy
cmVudFdvcmxkKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAg
ICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5l
ciksIHRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLCBleGVjLT5hcmd1bWVudCgyKS50
b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC02NTUs
NyArNjU1LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih1c3Ry
aW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlz
LCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKS5nZXQoKSwgZXhlYy0+YXJndW1lbnQoMikudG9C
b29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykp
LmdldCgpLCBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuY3BwCmluZGV4IDc1OGU3Mjc4YjE0OGNmMjExMTUxNGY0MTRmYThiYjkwMzhh
YjBiZDUuLjU1ZDk5YmM4MGU1NGFlZDY5N2E2YmZmNTk0MzNmMjNlM2Q0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9N
V2luZG93PiBkb21XaW5kb3cpCiAvLyBKU09iamVjdCBtZXRob2RzCiAvLyAtLS0tCiAKLVVTdHJp
bmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCitT
dHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25z
dCBKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2lu
ZG93KCktPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT53aW5kb3coKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggNWYy
MmQ3YjE4ZDQ5ZGIzNDJmNjA3NTMzOWRjNGNmNjM1MzJmYmUxZi4uODRhYzRmMzM2ZTE1MDJhYzEw
MjZiZTkzMmIzMmJlYjg2OGI4MTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuaApAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBzdGF0aWMg
SlNDOjpVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0Kik7CisgICAgICAgIHN0
YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRD
dXN0b20uY3BwCmluZGV4IDhlOTk0OGYxYWMyMGI5ZGU4ODhlNjgzN2E0NmQzYmFlZTZlZjBmZjMu
LjE5M2E2YzRhMzUyZTMxZjNjZjA1ZTc5MDhkOWM2YjdlYjA1ODY0MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50OjppbnRl
cnZhbChFeGVjU3RhdGUqKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6Omlu
aXREZXZpY2VNb3Rpb25FdmVudChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgY29uc3QgU3RyaW5n
JiB0eXBlID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CisgICAgY29uc3QgU3RyaW5nIHR5cGUgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgYm9vbCBidWJibGVzID0gZXhlYy0+
YXJndW1lbnQoMSkudG9Cb29sZWFuKGV4ZWMpOwogICAgIGJvb2wgY2FuY2VsYWJsZSA9IGV4ZWMt
PmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAK
aW5kZXggZDAzYjc0MGFhNWZmZDNkYmVkZjE1NTI0ZmE3ODY4Y2EyMTg5YjUzNC4uMWYwNzBmZTYw
ZGM0MjU1NGQ4YzBhNWU5NDc3NTk2ZjdkNDE4NmI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20u
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojph
YnNvbHV0ZShFeGVjU3RhdGUqKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25F
dmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoRXhlY1N0YXRlKiBleGVjKQogewotICAg
IGNvbnN0IFN0cmluZyYgdHlwZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGNvbnN0IFN0cmluZyB0eXBlID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGJvb2wgYnVi
YmxlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvQm9vbGVhbihleGVjKTsKICAgICBib29sIGNhbmNl
bGFibGUgPSBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgLy8gSWYgYWxw
aGEsIGJldGEgb3IgZ2FtbWEgYXJlIG51bGwgb3IgdW5kZWZpbmVkLCBtYXJrIHRoZW0gYXMgbm90
IHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0
aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAK
aW5kZXggODViNzU5MTk4YmI0YWYyODBlOGI2YzhhNzM3ZmMyYWZmMTUyN2QxMC4uZDRlMjI2NDcz
OTY0OGNmYmUyNzA1ZDNiMWQ1MTdjZDMyZmU0YmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBKU0RpY3Rp
b25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZh
bHVlLCBEaWN0aW8KIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IHVz
dHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJl
c3VsdCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIH0KIAogdm9pZCBKU0Rp
Y3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBKU0RpY3Rpb25h
cnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxT
dHJpbmc+JgogICAgICAgICBKU1ZhbHVlIGl0ZW1WYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkp
OwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKGl0ZW1WYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICB9CiB9CiAKQEAgLTE4Miw3ICsxODIs
NyBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgSGFzaFNldDxBdG9taWNTdAogICAgICAgICBKU1ZhbHVlIGl0ZW1WYWx1ZSA9
IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJlc3VsdC5hZGQodXN0cmluZ1RvQXRvbWlj
U3RyaW5nKGl0ZW1WYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAg
cmVzdWx0LmFkZChpdGVtVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICB9
CiB9CiAjZW5kaWYKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEpTRGljdGlvbmFyeTo6Z2V0V2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBTdHJpbgog
ICAgIGlmICh0cnlHZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgdmFsdWUp
ICE9IFByb3BlcnR5Rm91bmQgfHwgdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3Ry
aW5nKG1fZXhlYyktPnZhbHVlKG1fZXhlYykpOworICAgIHJlc3VsdCA9IHZhbHVlLnRvV1RGU3Ry
aW5nKG1fZXhlYyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNjQ3YjQ0NjFlYWU0MGFiNDVi
YjYyNWViYzliZjI3ZmU0NWFkNDlmZC4uNTQ4ODQwNGI0OGE0N2M5Nzk1ZmYwM2UwMjJiNmFkZjY5
NWM2NGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHAKQEAgLTY5LDEyICs2OSwxMiBAQCB2b2lkIEpTRG9jdW1lbnQ6OnNldExvY2F0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBVU3RyaW5nIGxvY2F0aW9uU3RyaW5nID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2NhdGlvblN0cmluZyA9IHZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCkpCi0gICAgICAgIGxvY2F0aW9uLT5z
ZXRIcmVmKHVzdHJpbmdUb1N0cmluZyhsb2NhdGlvblN0cmluZyksIGFjdGl2ZURPTVdpbmRvdyhl
eGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgICAgICBsb2NhdGlvbi0+c2V0SHJlZihs
b2NhdGlvblN0cmluZywgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVj
KSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAppbmRleCA1YjRiNTlmOGZlMGI5ODQyYWNjMTZi
NGIyNDdhNjBiMTNjNjRkYWQxLi5iNjU5MjU2MDAxZDA2ZmI3NTNkN2RmZDUzOWUwOGI2ZDI5NGQy
MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3Bw
CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgICAgIGdsb2Jh
bE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KGV2ZW50KTsKIAogICAgICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwotICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBlcnJvckV2
ZW50LT5tZXNzYWdlKCkpKTsKLSAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgZXJy
b3JFdmVudC0+ZmlsZW5hbWUoKSkpOworICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhD
YWNoZShleGVjLCBlcnJvckV2ZW50LT5tZXNzYWdlKCkpKTsKKyAgICAgICAgYXJncy5hcHBlbmQo
anNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgZXJyb3JFdmVudC0+ZmlsZW5hbWUoKSkpOwogICAgICAg
ICBhcmdzLmFwcGVuZChqc051bWJlcihlcnJvckV2ZW50LT5saW5lbm8oKSkpOwogCiAgICAgICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
Nzc5ZThkNzM5ZDUzNjkzM2I2NjdmNjQyMmQ0NWFlNGJiMzM3Nzg1OS4uNWVlYjQxMDE4MWE0YjI4
MzgwZjYwMTM4ZDM2YWRhY2M3ZGVkMGU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBKU0V2ZW50
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQKICAgICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIXJldHZhbC5pc1VuZGVmaW5lZE9yTnVs
bCgpICYmIGV2ZW50LT5zdG9yZXNSZXN1bHRBc1N0cmluZygpKQotICAgICAgICAgICAgICAgIGV2
ZW50LT5zdG9yZVJlc3VsdCh1c3RyaW5nVG9TdHJpbmcocmV0dmFsLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgICAgICAgICAgICAgIGV2ZW50LT5zdG9yZVJlc3VsdChyZXR2YWwu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgICAgIGlmIChtX2lzQXR0cmli
dXRlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJldHZhbC5pc0ZhbHNlKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA4
NTQ2NzI5ZjRkNzUzOTAwMjgxMjQ3OTBhNmY3ZTA4NjdkOWVhNGY2Li41NTYxYmNhZDBiNzM3MGE1
ZDA3Y2NlMjUyYzNjZmYwNzI4OGZkODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNzAsNyArNzAs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxl
Y3Rpb24oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9
PSAxKSB7CiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50LmFsbCg8aW5kZXg+KSBldGMu
Ci0gICAgICAgIFVTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICB1bnNpZ25lZCBpbmRleCA9
IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoc3RyaW5nLmltcGwoKSk7CiAgICAgICAgIGlmIChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVj
dGlvbi0+aXRlbShpbmRleCkpKTsKQEAgLTgwLDEwICs4MCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVj
KQogICAgIH0KIAogICAgIC8vIFRoZSBzZWNvbmQgYXJnLCBpZiBzZXQsIGlzIHRoZSBpbmRleCBv
ZiB0aGUgaXRlbSB3ZSB3YW50Ci0gICAgVVN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSB0b1VJ
bnQzMkZyb21TdHJpbmdJbXBsKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKS5pbXBsKCkpOworICAgIFN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgdW5zaWduZWQgaW5kZXggPSB0b1VJbnQz
MkZyb21TdHJpbmdJbXBsKGV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGV4ZWMpLmltcGwo
KSk7CiAgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkgewotICAgICAg
ICBpZiAoTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPm5hbWVkSXRlbVdpdGhJbmRleCh1c3RyaW5n
VG9BdG9taWNTdHJpbmcoc3RyaW5nKSwgaW5kZXgpKQorICAgICAgICBpZiAoTm9kZSogbm9kZSA9
IGNvbGxlY3Rpb24tPm5hbWVkSXRlbVdpdGhJbmRleChzdHJpbmcsIGluZGV4KSkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBub2RlKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDNmOWEzOWZk
MjU2MTM3MGI4MDkwZjk0MzI3ZjMxZjU1ZjBmNWMyYzguLjgwMjEyYTllZTkxOWYwMWExZDc5N2Yz
YjA4NDQzYjJmYzRlZWE3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IHN0
YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oaW1wbCgpKTsKLSAgICBjb25zdCBVU3RyaW5n
JiBjb250ZXh0SWQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CisgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgUmVmUHRyPENhbnZhc0NvbnRleHRBdHRyaWJ1
dGVzPiBhdHRyczsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKGNvbnRleHRJZCA9PSAiZXhw
ZXJpbWVudGFsLXdlYmdsIiB8fCBjb250ZXh0SWQgPT0gIndlYmtpdC0zZCIpIHsKQEAgLTc0LDcg
Kzc0LDcgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQgPSBjYW52YXMtPmdldENvbnRleHQodXN0cmluZ1RvU3RyaW5nKGNvbnRl
eHRJZCksIGF0dHJzLmdldCgpKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0
ID0gY2FudmFzLT5nZXRDb250ZXh0KGNvbnRleHRJZCwgYXR0cnMuZ2V0KCkpOwogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNvbnRleHQpKTsKQEAgLTEw
NSw3ICsxMDUsNyBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nKGV4ZWMsIGNhbnZhcy0+dG9EYXRhVVJMKHR5cGUsIHF1YWxpdHlQdHIsIGVjKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmpzU3RyaW5nKGV4ZWMsIGNhbnZhcy0+dG9EYXRhVVJM
KHR5cGUsIHF1YWxpdHlQdHIsIGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDVlMmYzNWVmZDM5MzhiYmFhMGI5NTg5
ZjkzMWQzYWNkNzc5NmI3NWEuLjNjNjg5M2IwMDg3OTQ5MDUzZmZmMzNkNWMzNDFmNTE4YTA2MmE4
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkb2N1
bWVudFdyaXRlKEV4ZWNTdGF0ZSogZXhlYywgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgTmV3bGlu
CiAKICAgICBzaXplX3Qgc2l6ZSA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKIAotICAgIFVTdHJp
bmcgZmlyc3RTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7Ci0gICAgU2VnbWVudGVkU3RyaW5nIHNlZ21lbnRlZFN0cmluZyA9IHVzdHJpbmdUb1N0
cmluZyhmaXJzdFN0cmluZyk7CisgICAgU3RyaW5nIGZpcnN0U3RyaW5nID0gZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFNlZ21lbnRlZFN0cmluZyBz
ZWdtZW50ZWRTdHJpbmcgPSBmaXJzdFN0cmluZzsKICAgICBpZiAoc2l6ZSAhPSAxKSB7CiAgICAg
ICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgIHNlZ21lbnRlZFN0cmluZy5jbGVhcigpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgc2l6ZTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgVVN0cmluZyBzdWJzZXF1ZW50U3RyaW5nID0gZXhlYy0+YXJn
dW1lbnQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgICAgICAgICAgICAgIHNl
Z21lbnRlZFN0cmluZy5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKHVzdHJpbmdUb1N0cmluZyhzdWJz
ZXF1ZW50U3RyaW5nKSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBzdWJzZXF1ZW50U3RyaW5n
ID0gZXhlYy0+YXJndW1lbnQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAg
ICAgICAgICAgIHNlZ21lbnRlZFN0cmluZy5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKHN1YnNlcXVl
bnRTdHJpbmcpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
CmluZGV4IDM2ZmQ4Yjc0NmFlZjNlMzczMDZkMmIxOGQ5N2FkYzA2MGRkMDU1MDAuLjUyMGNlNjUw
YjNhMmMyZGNhNDk2OWM1YjdhYWJhNjYyMDAyMWYzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzUs
NyArNzUsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9u
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBpZiAoIWlucHV0LT5jYW5IYXZlU2VsZWN0aW9u
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKIAotICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBpbnB1dC0+c2VsZWN0aW9uRGlyZWN0aW9uKCkpOworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbnB1dC0+c2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQog
CiB2b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBKU0hUTUxJbnB1
dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnB1dC0+c2V0U2VsZWN0aW9u
RGlyZWN0aW9uKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpKTsKKyAgICBpbnB1dC0+c2V0U2VsZWN0aW9uRGlyZWN0aW9uKHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRT
ZWxlY3Rpb25SYW5nZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC05Nyw3ICs5Nyw3IEBAIEpTVmFsdWUg
SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShFeGVjU3RhdGUqIGV4ZWMpCiAK
ICAgICBpbnQgc3RhcnQgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlu
dCBlbmQgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwotICAgIFN0cmluZyBkaXJl
Y3Rpb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMikudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgZGlyZWN0aW9uID0gZXhlYy0+YXJndW1lbnQoMiku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogCiAgICAgaW5wdXQtPnNldFNlbGVjdGlvblJh
bmdlKHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKaW5kZXggM2Y5
MDdhYzc1MGQxYTA0ZDk0NjRkNGM4NDc2NmYxMjcxY2E5ZDQyYy4uNzcxMTNjNzBmMmIwODUwZWY3
N2IzNzg3YWUzZDhkOGQ5ZGI1NWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNjUsNyArNjUsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJREJBbnkqIGlkYkFu
eSkKICAgICBjYXNlIElEQkFueTo6TnVsbFR5cGU6CiAgICAgICAgIHJldHVybiBqc051bGwoKTsK
ICAgICBjYXNlIElEQkFueTo6U3RyaW5nVHlwZToKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIGlkYkFueS0+c3RyaW5nKCkpOworICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgaWRiQW55LT5zdHJpbmcoKSk7CiAgICAgY2FzZSBJREJBbnk6OkRPTVN0cmluZ0xpc3RU
eXBlOgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGlkYkFueS0+ZG9t
U3RyaW5nTGlzdCgpKTsKICAgICBjYXNlIElEQkFueTo6SURCQ3Vyc29yVHlwZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCS2V5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCS2V5Q3VzdG9tLmNwcAppbmRleCBiMmI3OGVjNTc2
Yzc3Njc2YjZhOThmYmVmOWEzODNmYWMwYWJmMWQ1Li40YWZhNTUwYjViNzYxNmI4NWZiMDU0YWE5
N2U3MDExNjEwOTE2MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQktleUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJL
ZXlDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElEQktleSoga2V5KQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUob3V0QXJyYXkpOwogICAgICAgICB9CiAgICAgY2FzZSBJREJL
ZXk6OlN0cmluZ1R5cGU6Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBrZXktPnN0cmlu
ZygpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGtleS0+c3RyaW5n
KCkpOwogICAgIGNhc2UgSURCS2V5OjpEYXRlVHlwZToKICAgICAgICAgcmV0dXJuIGpzRGF0ZU9y
TnVsbChleGVjLCBrZXktPmRhdGUoKSk7CiAgICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAKaW5kZXggMTQxMzc1MDc4YTc5NGJhYzRkMmNhYjNlZGNiZmZmYzBkYTI4
YWUxMS4uOWVmZWQ0NmJmODZmYTY4OTViNGRiM2U2YTBlYjk1NjQ1NTBkNTNkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcApAQCAtMTA5LDggKzEwOSw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvVGhpc09iamVjdChleGVjKTsKLSAgICBVU3RyaW5nIHJlc3VsdCA9IHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KTsKLSAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgcmVzdWx0KTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpOworICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCByZXN1bHQpOwogfQogCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE3MCw3ICsxNzAs
NyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0
YXRlKiBleGVjKQogICAgIGludCBsaW5lTnVtYmVyID0gc291cmNlQ29kZS0+Zmlyc3RMaW5lKCk7
CiAgICAgaWYgKGxpbmVOdW1iZXIpCiAgICAgICAgIGxpbmVOdW1iZXIgLT0gMTsgLy8gSW4gdGhl
IGluc3BlY3RvciBwcm90b2NvbCBhbGwgcG9zaXRpb25zIGFyZSAwLWJhc2VkIHdoaWxlIGluIFNv
dXJjZUNvZGUgdGhleSBhcmUgMS1iYXNlZAotICAgIFVTdHJpbmcgc2NyaXB0SWQgPSBVU3RyaW5n
OjpudW1iZXIoc291cmNlQ29kZS0+cHJvdmlkZXIoKS0+YXNJRCgpKTsKKyAgICBTdHJpbmcgc2Ny
aXB0SWQgPSBTdHJpbmc6Om51bWJlcihzb3VyY2VDb2RlLT5wcm92aWRlcigpLT5hc0lEKCkpOwog
CiAgICAgSlNPYmplY3QqIGxvY2F0aW9uID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAg
ICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJlcikpOwpAQCAtMTc4LDEyICsxNzgs
MTIgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjKTsKICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsKLSAgICBVU3RyaW5nIG5hbWUgPSBm
dW5jdGlvbi0+bmFtZShleGVjKTsKKyAgICBTdHJpbmcgbmFtZSA9IGZ1bmN0aW9uLT5uYW1lKGV4
ZWMpOwogICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAibmFtZSIpLCBqc1N0cmluZyhl
eGVjLCBuYW1lKSk7Ci0gICAgVVN0cmluZyBkaXNwbGF5TmFtZSA9IGZ1bmN0aW9uLT5kaXNwbGF5
TmFtZShleGVjKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIG5hbWUp
KTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSBmdW5jdGlvbi0+ZGlzcGxheU5hbWUoZXhlYyk7
CiAgICAgaWYgKCFkaXNwbGF5TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiZGlzcGxheU5hbWUiKSwg
anNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBqc1N0
cmluZ1dpdGhDYWNoZShleGVjLCBkaXNwbGF5TmFtZSkpOwogICAgIC8vIEZJWE1FOiBwcm92aWRl
IGZ1bmN0aW9uIHNjb3BlIGRhdGEgaW4gInNjb3Blc1JhdyIgcHJvcGVydHkgd2hlbiBKU0Mgc3Vw
cG9ydHMgaXQuCiAgICAgLy8gICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NzE5MgogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yNjAsNyArMjYwLDcgQEAgSlNWYWx1
ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZChFeGVjU3RhdGUqIGV4ZWMpCiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSB0b0RhdGFiYXNl
KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoZGF0YWJhc2UpCi0gICAgICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBpbXBsKCktPmRhdGFiYXNlSWRJbXBsKGRhdGFiYXNlKSk7CisgICAgICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCktPmRhdGFiYXNlSWRJbXBsKGRh
dGFiYXNlKSk7CiAjZW5kaWYKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTI3MSw3
ICsyNzEsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdG9yYWdlSWQoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBTdG9yYWdlKiBz
dG9yYWdlID0gdG9TdG9yYWdlKGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoc3RvcmFnZSkK
LSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGltcGwoKS0+c3RvcmFnZUlkSW1wbChzdG9y
YWdlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCktPnN0
b3JhZ2VJZEltcGwoc3RvcmFnZSkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAKaW5kZXggZTYzZjQ5NzRjZTc3MjA0MDU2YmNlNGI4NzU2OWZmZjIxNDljMTE3ZS4u
Y2RlNzg3NTUwZWI3ODE4MDM0NzdlYmRiODE2ZGQzY2JhNTc0ZTY5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApA
QCAtNTQsNyArNTQsNyBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVh
dGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgUwogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1h
a2VTb3VyY2Uoc3RyaW5nVG9VU3RyaW5nKHNvdXJjZSkpOworICAgIFNvdXJjZUNvZGUgc291cmNl
Q29kZSA9IG1ha2VTb3VyY2Uoc291cmNlKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBzY3JpcHRTdGF0
ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCAyOTc4
ZGVhZjA0ZGM4YjYwZjQ4OGJjMTc4ZDI4NjdjMTdmMzUzMjllLi44OWU3NzJhMjliZjUzNDY0NmI4
YmExNWFiN2ExZDAyNzk5OTAxNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC02OCw3
ICs2OCw3IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtKEV4ZWNT
dGF0ZSogZXhlY1N0YXRlKQogI2Vsc2UKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgcGxhdGZvcm0sIChBU0NJSUxpdGVyYWwoInVua25vd24iKSkpOwogI2VuZGlmCi0gICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWNTdGF0ZSwgcGxhdGZvcm0pOworICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjU3RhdGUsIHBsYXRmb3JtKTsKIH0KIAogSlNWYWx1ZSBKU0luc3BlY3Rv
ckZyb250ZW5kSG9zdDo6cG9ydChFeGVjU3RhdGUqIGV4ZWNTdGF0ZSkKQEAgLTgyLDcgKzgyLDcg
QEAgSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6cG9ydChFeGVjU3RhdGUqIGV4ZWNT
dGF0ZSkKICNlbHNlCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBvcnQs
IChBU0NJSUxpdGVyYWwoInVua25vd24iKSkpOwogI2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWNTdGF0ZSwgcG9ydCk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWNTdGF0
ZSwgcG9ydCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTk5LDcgKzk5LDcg
QEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywg
SlNBcnJheSogYXJyYXksIENvbnRleHRNZW4KICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5nKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHVz
dHJpbmdUb1N0cmluZyh0eXBlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAg
IFN0cmluZyB0eXBlU3RyaW5nID0gdHlwZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgICAgIGlmICh0eXBlU3RyaW5nID09ICJzZXBhcmF0b3IiKSB7CiAgICAgICAgICAgICBDb250
ZXh0TWVudUl0ZW0gaXRlbShTZXBhcmF0b3JUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24sCkBAIC0xMTEsMTIgKzEx
MSwxMiBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMoRXhlY1N0YXRlKiBl
eGVjLCBKU0FycmF5KiBhcnJheSwgQ29udGV4dE1lbgogICAgICAgICAgICAgcG9wdWxhdGVDb250
ZXh0TWVudUl0ZW1zKGV4ZWMsIHN1Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOwogICAgICAgICAgICAg
Q29udGV4dE1lbnVJdGVtIGl0ZW0oU3VibWVudVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzdHJpbmdUb1N0cmluZyhsYWJlbC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnN1Yk1lbnUpOwogICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKGl0ZW0pOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ29udGV4dE1lbnVBY3Rpb24gdHlwZWRJZCA9IHN0
YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFn
ICsgaWQudG9JbnQzMihleGVjKSk7Ci0gICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gbWVudUl0
ZW0oKHR5cGVTdHJpbmcgPT0gImNoZWNrYm94IiA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rp
b25UeXBlKSwgdHlwZWRJZCwgdXN0cmluZ1RvU3RyaW5nKGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIG1lbnVJdGVtKCh0eXBl
U3RyaW5nID09ICJjaGVja2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZSks
IHR5cGVkSWQsIGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgICAg
ICBpZiAoIWVuYWJsZWQuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgICAgICBtZW51SXRlbS5z
ZXRFbmFibGVkKGVuYWJsZWQudG9Cb29sZWFuKGV4ZWMpKTsKICAgICAgICAgICAgIGlmICghY2hl
Y2tlZC5pc1VuZGVmaW5lZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnRlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ludGVudENvbnN0cnVjdG9yLmNwcAppbmRleCA2MGEyMTRhNzM4NzFiYTEwODY0MmMxNjhkMGJi
ZGNhZmQ2NDNlYzk0Li40ZjI5Yzc0MmExNzU4NDNmMTI4YjgxNzkyZmM3ZWMwODIzN2VhZDY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9y
LmNwcApAQCAtNjEsMTEgKzYxLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJ
bnRlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNJbnRlbnQoRXhlY1N0YXRlKiBlCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgaW1wbC5nZXQoKSkpKTsKICAgICB9CiAKLSAgICBjb25zdCBTdHJpbmcm
IGFjdGlvbih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyBhY3Rpb24oTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6
IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9X
VEZTdHJpbmcoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNvbnN0IFN0cmlu
ZyYgdHlwZSh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwg
RGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyB0eXBlKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvV1RG
U3RyaW5nKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3Bw
CmluZGV4IDEyNDk5ZmFjOTBlM2E1MGVmOThmNGY5YzA0ODRlNWE0ODEyNjhiNDMuLjE1OWYxODQx
Njg4NGUwMzM0ZmQwOGIwNTM1MzNjNmYzNGYyZjdkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApA
QCAtNjMsOSArNjMsOSBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6dHlwZShFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChpbXBsKCktPnR5cGUoKSkgewogICAg
ICAgICBjYXNlIERlYnVnZ2VyQ2FsbEZyYW1lOjpGdW5jdGlvblR5cGU6Ci0gICAgICAgICAgICBy
ZXR1cm4ganNTdHJpbmcoZXhlYywgVVN0cmluZygiZnVuY3Rpb24iKSk7CisgICAgICAgICAgICBy
ZXR1cm4ganNTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJmdW5jdGlvbiIpKTsKICAgICAgICAg
Y2FzZSBEZWJ1Z2dlckNhbGxGcmFtZTo6UHJvZ3JhbVR5cGU6Ci0gICAgICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgVVN0cmluZygicHJvZ3JhbSIpKTsKKyAgICAgICAgICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoInByb2dyYW0iKSk7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDg4Nzk3MjdlMjhkZWMzNWMxMjJjNmRhNmMzNWVh
YTE5M2IzMjQ4NWYuLjg3ZGM0OTI1MzdkZTM1N2FiZThkYmU3OGM0YWQ3YmIwODNiMDE3YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIu
Y3BwCkBAIC05NCwxMCArOTQsMTAgQEAgSlNPYmplY3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6Omlu
aXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWMKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5nKGV4
ZWMsIHN0cmluZ1RvVVN0cmluZyhtX2V2ZW50UGFyYW1ldGVyTmFtZSkpKTsKLSAgICBhcmdzLmFw
cGVuZChqc1N0cmluZyhleGVjLCBtX2NvZGUpKTsKKyAgICBhcmdzLmFwcGVuZChqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgbV9ldmVudFBhcmFtZXRlck5hbWUpKTsKKyAgICBhcmdzLmFwcGVuZChq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBtX2NvZGUpKTsKIAotICAgIEpTT2JqZWN0KiBqc0Z1bmN0
aW9uID0gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Rv
VVN0cmluZyhtX2Z1bmN0aW9uTmFtZSkpLCBzdHJpbmdUb1VTdHJpbmcobV9zb3VyY2VVUkwpLCBt
X3Bvc2l0aW9uKTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/CisgICAgSlNPYmplY3QqIGpz
RnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgbV9m
dW5jdGlvbk5hbWUpLCBtX3NvdXJjZVVSTCwgbV9wb3NpdGlvbik7IC8vIEZJWE1FOiBpcyBnbG9i
YWxFeGVjIG9rPwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICByZXBv
cnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCA1Y2IwYzA3M2U0ZTE3YTBjNzRmYzA1OWYwZDI4NWViZjZmNTU0MDY1Li4xNGJkMzU3NDk1
ZDkxNDJkMmIyZmU0ODU5M2JiODQ4MDBjNGY4NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTc5LDc2ICsxNzksNzYgQEAgYm9v
bCBKU0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmEKIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRIcmVmKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGhyZWYgPSB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGhyZWYgPSB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRIcmVmKHVzdHJpbmdUb1N0cmluZyhocmVmKSwg
YWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAgaW1wbCgp
LT5zZXRIcmVmKGhyZWYsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhl
YykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNldFByb3RvY29sKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIHByb3RvY29sID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwcm90b2NvbCA9IHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCktPnNldFBy
b3RvY29sKHVzdHJpbmdUb1N0cmluZyhwcm90b2NvbCksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwg
Zmlyc3RET01XaW5kb3coZXhlYyksIGVjKTsKKyAgICBpbXBsKCktPnNldFByb3RvY29sKHByb3Rv
Y29sLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpLCBlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRI
b3N0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGhvc3Qg
PSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGhvc3QgPSB2
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRIb3N0KHVzdHJpbmdUb1N0
cmluZyhob3N0KSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7
CisgICAgaW1wbCgpLT5zZXRIb3N0KGhvc3QsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RE
T01XaW5kb3coZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNldEhvc3RuYW1lKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGhvc3RuYW1lID0gdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBob3N0bmFtZSA9IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldEhvc3RuYW1lKHVzdHJpbmdU
b1N0cmluZyhob3N0bmFtZSksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3co
ZXhlYykpOworICAgIGltcGwoKS0+c2V0SG9zdG5hbWUoaG9zdG5hbWUsIGFjdGl2ZURPTVdpbmRv
dyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNl
dFBvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJpbmcgcG9y
dCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcG9ydCA9
IHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0UG9ydCh1c3RyaW5nVG9TdHJpbmcocG9y
dCksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGlt
cGwoKS0+c2V0UG9ydChwb3J0LCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93
KGV4ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRQYXRobmFtZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVVN0cmluZyBwYXRobmFtZSA9IHZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcGF0aG5hbWUgPSB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRQYXRobmFtZSh1c3RyaW5nVG9TdHJpbmco
cGF0aG5hbWUpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsK
KyAgICBpbXBsKCktPnNldFBhdGhuYW1lKHBhdGhuYW1lLCBhY3RpdmVET01XaW5kb3coZXhlYyks
IGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRTZWFyY2go
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJpbmcgcGF0aG5hbWUg
PSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHBhdGhuYW1l
ID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0U2VhcmNoKHVzdHJp
bmdUb1N0cmluZyhwYXRobmFtZSksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5k
b3coZXhlYykpOworICAgIGltcGwoKS0+c2V0U2VhcmNoKHBhdGhuYW1lLCBhY3RpdmVET01XaW5k
b3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpz
ZXRIYXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGhh
c2ggPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGhhc2gg
PSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRIYXNoKHVzdHJpbmdU
b1N0cmluZyhoYXNoKSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVj
KSk7CisgICAgaW1wbCgpLT5zZXRIYXNoKGhhc2gsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmly
c3RET01XaW5kb3coZXhlYykpOwogfQogCiBKU1ZhbHVlIEpTTG9jYXRpb246OnJlcGxhY2UoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmcgdXJsU3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBp
bXBsKCktPnJlcGxhY2UodXN0cmluZ1RvU3RyaW5nKHVybFN0cmluZyksIGFjdGl2ZURPTVdpbmRv
dyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+cmVwbGFjZSh1cmxT
dHJpbmcsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0yNjAsMTAgKzI2MCwxMCBAQCBKU1ZhbHVl
IEpTTG9jYXRpb246OnJlbG9hZChFeGVjU3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNMb2NhdGlv
bjo6YXNzaWduKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBVU3RyaW5nIHVybFN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
dXJsU3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0gICAgaW1wbCgpLT5hc3NpZ24odXN0cmluZ1RvU3RyaW5nKHVybFN0cmluZyksIGFj
dGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+
YXNzaWduKHVybFN0cmluZywgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhl
eGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTI3Myw3ICsyNzMsNyBA
QCBKU1ZhbHVlIEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQog
ICAgIGlmICghZnJhbWUgfHwgIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBmcmFtZSkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIGltcGwoKS0+dG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIGltcGwoKS0+dG9TdHJpbmcoKSk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6
cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAppbmRleCA4MzhlM2VkYjM5MjBmNTZhZTVkNmUz
YTgwYjI2NjA0MjM1OWMzNGNmLi45NjBjYmJmNTMwMDkxNjc0NmJjYTVmNWFkNDI0YWE0NjVkYmZj
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyByZXNv
dXJjZU5hbWU7CiAgICAgICAgIGludCBsaW5lTnVtYmVyID0gMTsKICAgICAgICAgaWYgKGNhbGxU
eXBlID09IEpTQzo6Q2FsbFR5cGVKUykgewotICAgICAgICAgICAgcmVzb3VyY2VOYW1lID0gdXN0
cmluZ1RvU3RyaW5nKGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+c291cmNlVVJMKCkp
OworICAgICAgICAgICAgcmVzb3VyY2VOYW1lID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRh
YmxlLT5zb3VyY2VVUkwoKTsKICAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBjYWxsRGF0YS5qcy5m
dW5jdGlvbkV4ZWN1dGFibGUtPmxpbmVObygpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHJlc291cmNlTmFtZSA9ICJ1bmRlZmluZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDY0ZmNlZjg4YTUyMTIyYWE5
OTk0ZmVmZTBkMDA2ZjQ0YWFiMjcxYWUuLmU0NGNkZGRhOTBmMjNiMTQ1YmQ3YTM1ZWFlOTIzMGZj
OTMxNjg0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgSlNWYWx1ZSBKU01lc3NhZ2VFdmVu
dDo6ZGF0YShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlU3RyaW5nOgotICAgICAgICByZXN1bHQgPSBqc1N0cmlu
ZyhleGVjLCBldmVudC0+ZGF0YUFzU3RyaW5nKCkpOworICAgICAgICByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCBldmVudC0+ZGF0YUFzU3RyaW5nKCkpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZUJsb2I6CkBAIC0xMDIsMTEgKzEwMiwx
MSBAQCBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50Ojpwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiAKIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01lc3NhZ2VF
dmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgY29uc3QgVVN0cmlu
ZyYgdHlwZUFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBjb25zdCBTdHJpbmcmIHR5cGVBcmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBleGVjLT5hcmd1
bWVudCgxKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxlQXJnID0gZXhlYy0+
YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpOwotICAgIGNvbnN0IFVTdHJpbmcmIG9yaWdpbkFy
ZyA9IGV4ZWMtPmFyZ3VtZW50KDQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICBj
b25zdCBVU3RyaW5nJiBsYXN0RXZlbnRJZEFyZyA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgb3JpZ2luQXJnID0gZXhlYy0+
YXJndW1lbnQoNCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmlu
ZyBsYXN0RXZlbnRJZEFyZyA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJjZUFyZyA9IHRvRE9NV2luZG93KGV4ZWMtPmFy
Z3VtZW50KDYpKTsKICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzOwog
ICAgIE93blB0cjxBcnJheUJ1ZmZlckFycmF5PiBhcnJheUJ1ZmZlcnM7CkBAIC0xMjIsNyArMTIy
LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2Fn
ZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKICAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50
Kj4oanNFdmVudC0+aW1wbCgpKTsKLSAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVudCh1c3RyaW5n
VG9BdG9taWNTdHJpbmcodHlwZUFyZyksIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0
YUFyZywgdXN0cmluZ1RvU3RyaW5nKG9yaWdpbkFyZyksIHVzdHJpbmdUb1N0cmluZyhsYXN0RXZl
bnRJZEFyZyksIHNvdXJjZUFyZywgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSk7CisgICAgZXZlbnQt
PmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBk
YXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcsIG1lc3NhZ2VQb3J0
cy5yZWxlYXNlKCkpOwogICAgIGpzRXZlbnQtPm1fZGF0YS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBqc0V2ZW50LCBkYXRhQXJnLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01pY3JvRGF0YUl0
ZW1WYWx1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01pY3JvRGF0
YUl0ZW1WYWx1ZUN1c3RvbS5jcHAKaW5kZXggMDlmYzMzZDc0YjJjZjczYmU2MzRiYjZkMmE0OGUw
ODk1YTVmZjNmOC4uYTcwNzA5YTk5ODkyZjA2MTNlNTgyZGNiZDE0NTQ1OTJmYmQzODM0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNaWNyb0RhdGFJdGVtVmFsdWVD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWljcm9EYXRhSXRl
bVZhbHVlQ3VzdG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNaWNyb0RhdGFJdGVtVmFs
dQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgaWYgKGl0ZW1WYWx1ZS0+aXNOb2RlKCkp
CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlLT5nZXRO
b2RlKCkpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBpdGVtVmFsdWUtPmdldFN0cmluZygp
KTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaXRlbVZhbHVlLT5nZXRTdHJp
bmcoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCmluZGV4IDQ4MDAzNTU2NTNmYTgzMTVj
MzI2MTMwMGU0ZGQwZmM1ZWU1MjRjNmMuLjBkMDkzNzVkMTkzZWYxZmNmY2QwY2E2OTFiMWViYTlk
YTc1ZjRjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVz
dWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcApAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVl
IEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAgICAg
c3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6OlN0cmlu
Z1ZhbHVlOgotICAgICAgICAgICAgICBqc1ZhbHVlID0ganNTdHJpbmcoZXhlYywgdmFsdWUuc3Ry
aW5nKCkpOworICAgICAgICAgICAgICBqc1ZhbHVlID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
dmFsdWUuc3RyaW5nKCkpOwogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIFNR
TFZhbHVlOjpOdWxsVmFsdWU6CiAgICAgICAgICAgICAgIGpzVmFsdWUgPSBqc051bGwoKTsKQEAg
LTc1LDcgKzc1LDcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0oRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQogCi0gICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcobV9pbXBsLT5jb2x1bW5OYW1lcygpW2ldKSksIGpz
VmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBtX2ltcGwtPmNvbHVtbk5hbWVz
KClbaV0pLCBqc1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAogICAgIHJl
dHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NR
TFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwCmluZGV4IGEzYzE5OGY4NTcxYTJhNjZkNmEyMmMwNDc0YzBl
Mjc1ZjVjMzg2N2YuLjdhOTBjNDNiZjIyZTk3ODkwMjVjYmYzMDUwNjcyZGYwMWJhZmI0MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25D
dXN0b20uY3BwCkBAIC01MCw3ICs1MCw3IEBAIEpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvbjo6ZXhl
Y3V0ZVNxbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIH0KIAotICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgc3Fs
U3RhdGVtZW50ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVj
dXRlU3FsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5k
KHZhbHVlLmFzTnVtYmVyKCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gQ29udmVydCB0aGUgYXJndW1lbnQgdG8gYSBzdHJpbmcgYW5kIGFwcGVuZCBpdAotICAgICAg
ICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQo
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCmluZGV4IDk2YzE4ODRjYjk1
YmI4MWVkMTc5NTNlMmZlYzhlMzgyMzg5YTI3NmQuLjMzZjg0MzQ0NzNjNGRjODA1NmJlOWUxYzVh
NmE0YzMyNmRmZjIxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNW
YWx1ZSBKU1NRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIFN0cmluZyBzcWxTdGF0
ZW1lbnQgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgc3FsU3RhdGVtZW50ID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTgwLDcgKzgwLDcgQEAg
SlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS5hc051bWJlcigpKTsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFyZ3VtZW50
IHRvIGEgc3RyaW5nIGFuZCBhcHBlbmQgaXQKLSAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBw
ZW5kKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsK
KyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9t
LmNwcAppbmRleCBjNzliNzkzZmEyNjFmZTJkODZiMjgzMzkyNjk0ODNlZThlZGQ5OWRhLi43ZjZl
YjI4ZjAyYmQ2ZTY2ZmU3Y2JhZTZkNWFiNTQ5YzkxYWIxZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC02Miw4ICs2
Miw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNTaGFyZWRXb3JrZXJDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNTaGFyZWRXb3JrZXIoCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgVVN0cmluZyBzY3JpcHRVUkwgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgVVN0cmluZyBu
YW1lOworICAgIFN0cmluZyBzY3JpcHRVUkwgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIG5hbWU7CiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA+IDEpCiAgICAgICAgIG5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKQEAgLTczLDcgKzczLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1NoYXJl
ZFdvcmtlcigKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB1c2UgYm90aCB0aGUgZHluYW1pYyBz
Y29wZSBhbmQgdGhlIGxleGljYWwgc2NvcGUgKGR5bmFtaWMgc2NvcGUgZm9yIHJlc29sdmluZyB0
aGUgd29ya2VyIFVSTCkKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciA9IFNoYXJlZFdvcmtlcjo6Y3Jl
YXRlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgdXN0cmluZ1RvU3RyaW5nKHNjcmlwdFVSTCksIHVzdHJp
bmdUb1N0cmluZyhuYW1lKSwgZWMpOworICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciA9
IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgc2NyaXB0VVJMLCBuYW1l
LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmluZGV4IGE3OTM3YjAxNDc2
YzA5MDIwMWZjMDRkYjk5Njg1Nzk2MTUyMDBkNTUuLjUyZDdlYzRlMTliMjEyNmZiNDZlMjg1MGI3
OTc1NTQ0YWFiMjIzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9y
YWdlQ3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgog
ICAgIEpTU3RvcmFnZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0b3JhZ2UqPihvYmplY3QpOwog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPm1faW1wbC0+bGVuZ3RoKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyh0aGlzT2JqZWN0LT5tX2lt
cGwtPmtleShpKSkpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVj
LCB0aGlzT2JqZWN0LT5tX2ltcGwtPmtleShpKSkpOwogICAgICAgICAKICAgICBCYXNlOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwog
fQpAQCAtOTEsNyArOTEsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgaWYgKHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmhhc1Byb3BlcnR5KGV4ZWMs
IHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBTdHJpbmcg
c3RyaW5nVmFsdWUgPSB1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBhZjAwODA3NGY4M2Yx
NWVkMjFiZmVmZjA5NzExMDM3YjczYjI2N2RkLi5mNGFmNTVkODI2YjZlYWZjZWZmMjU0MjBjMDBi
MWM3YTdmNDYyYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdlYkcKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVO
dWxsOgogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlU3RyaW5nOgotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW5mby5nZXRTdHJpbmco
KSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbmZvLmdldFN0cmlu
ZygpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVVbnNpZ25lZEludDoKICAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKGluZm8uZ2V0VW5zaWduZWRJbnQoKSk7CiAgICAgY2FzZSBXZWJHTEdl
dEluZm86OmtUeXBlV2ViR0xCdWZmZXI6CkBAIC0yNTQsNyArMjU0LDcgQEAgSlNWYWx1ZSBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIG5h
bWUgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKKyAgICBjb25zdCBTdHJpbmcgbmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFdlYkdMRXh0ZW5zaW9uKiBleHRl
bnNpb24gPSBjb250ZXh0LT5nZXRFeHRlbnNpb24obmFtZSk7CkBAIC0zNjMsNyArMzYzLDcgQEAg
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgVmVjdG9yPFN0cmluZz4gdmFsdWUgPSBjb250ZXh0LT5nZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAg
ICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFsdWUuc2l6ZSgpOyArK2lpKQotICAgICAgICBs
aXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCB2YWx1ZVtpaV0pKTsKKyAgICAgICAgbGlzdC5hcHBl
bmQoanNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgdmFsdWVbaWldKSk7CiAgICAgcmV0dXJuIGNvbnN0
cnVjdEFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBsaXN0KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCmluZGV4IGM0MmIzY2Jk
ZmVkYzZkZDlhNDBmMGYxMDQwNTQwYTFiOTc4MDBiMzAuLjNlMzUwY2NjNGI3ZjMxYWZjODJjYmI3
ZjE0ZmE3NDZhMmU2MTk3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldChF
eGVjU3QKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAK
LSAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywgIndyb25nIFVSTCIpKTsKICAgICBSZWZQdHI8V2ViU29ja2V0
PiB3ZWJTb2NrZXQgPSBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0KTsKQEAgLTc0LDE0ICs3NCwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV2ViU29ja2V0Q29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTV2ViU29ja2V0KEV4ZWNTdAogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
cHJvdG9jb2xzOwogICAgICAgICAgICAgSlNBcnJheSogcHJvdG9jb2xzQXJyYXkgPSBhc0FycmF5
KHByb3RvY29sc1ZhbHVlKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
cm90b2NvbHNBcnJheS0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBw
cm90b2NvbCA9IHVzdHJpbmdUb1N0cmluZyhwcm90b2NvbHNBcnJheS0+Z2V0SW5kZXgoaSkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJvdG9j
b2wgPSBwcm90b2NvbHNBcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICAg
ICAgICAgIHByb3RvY29scy5hcHBlbmQocHJvdG9jb2wpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgd2ViU29ja2V0LT5jb25uZWN0KHVybFN0cmluZywgcHJvdG9jb2xzLCBlYyk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTdHJpbmcgcHJvdG9jb2wgPSB1c3RyaW5nVG9TdHJp
bmcocHJvdG9jb2xzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAg
ICAgIFN0cmluZyBwcm90b2NvbCA9IHByb3RvY29sc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB3
ZWJTb2NrZXQtPmNvbm5lY3QodXJsU3RyaW5nLCBwcm90b2NvbCwgZWMpOwpAQCAtMTA2LDcgKzEw
Niw3IEBAIEpTVmFsdWUgSlNXZWJTb2NrZXQ6OnNlbmQoRXhlY1N0YXRlKiBleGVjKQogICAgIGVs
c2UgaWYgKG1lc3NhZ2UuaW5oZXJpdHMoJkpTQmxvYjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0
ID0gaW1wbCgpLT5zZW5kKHRvQmxvYihtZXNzYWdlKSwgZWMpOwogICAgIGVsc2UgewotICAgICAg
ICBTdHJpbmcgc3RyaW5nTWVzc2FnZSA9IHVzdHJpbmdUb1N0cmluZyhtZXNzYWdlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgIFN0cmluZyBzdHJpbmdNZXNzYWdlID0gbWVz
c2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICBy
ZXN1bHQgPSBpbXBsKCktPnNlbmQoc3RyaW5nTWVzc2FnZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggZjNm
NmY1NjIwOGYwODQzNTgxOGI1YmE1Mzk5OTY5Y2YzNDhjMWYxZi4uZWM1NjMzMWUyY2QzZDA2YzRm
ZThhMTc4OGIyNzBkZjQzMmMyZjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgSlNW
YWx1ZSBKU1dvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoRXhlY1N0YXRlKiBleGVjKQogCiAg
ICAgVmVjdG9yPFN0cmluZz4gdXJsczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhl
Yy0+YXJndW1lbnRDb3VudCgpOyBpKyspIHsKLSAgICAgICAgdXJscy5hcHBlbmQodXN0cmluZ1Rv
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwor
ICAgICAgICB1cmxzLmFwcGVuZChleGVjLT5hcmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKaW5kZXggNzE0NWZjZjM0NTkwZDhjZDc3ZmU3OTgwMjNj
NDExMDdjZjE1ZmMxYi4uYjFmMzhhNTg2ZDJiNTNhMmIxN2ExOGI3ZmRjZGI4ZDM5NTM5MGVhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV29ya2VyQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZQogICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIFVTdHJpbmcgc2NyaXB0VVJMID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBzY3JpcHRVUkwgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKQEAgLTY1LDcgKzY1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1dvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dvcmtlcihFeGVj
U3RhdGUqIGUKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgUmVmUHRyPFdvcmtlcj4gd29ya2VyID0gV29ya2VyOjpjcmVhdGUod2luZG93LT5kb2N1
bWVudCgpLCB1c3RyaW5nVG9TdHJpbmcoc2NyaXB0VVJMKSwgZWMpOworICAgIFJlZlB0cjxXb3Jr
ZXI+IHdvcmtlciA9IFdvcmtlcjo6Y3JlYXRlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgc2NyaXB0VVJM
LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5k
ZXggYzA4YzI5NTYwMmJkYzhlZDM1NDNmMmNkMDg2YjNmMWUxNzQwNTg1Zi4uOTBiZDQ4YjdmNTY3
YjI2NTM4OGEwMmNhNWU3ODhhNjg2ZTRlMzQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTg0LDggKzg0LDgg
QEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgY29uc3Qg
S1VSTCYgdXJsID0gaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJM
KHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpKTsKLSAgICBTdHJpbmcgbWV0aG9kID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgY29uc3QgS1VSTCYgdXJs
ID0gaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGV4ZWMtPmFy
Z3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgU3RyaW5nIG1ldGhv
ZCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0g
MykgewpAQCAtMTMwLDE2ICsxMzAsMTYgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5k
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKCZKU0FycmF5
QnVmZmVyVmlldzo6c19pbmZvKSkKICAgICAgICAgICAgIGltcGwoKS0+c2VuZCh0b0FycmF5QnVm
ZmVyVmlldyh2YWwpLCBlYyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGltcGwoKS0+c2Vu
ZCh1c3RyaW5nVG9TdHJpbmcodmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGVjKTsK
KyAgICAgICAgICAgIGltcGwoKS0+c2VuZCh2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
LCBlYyk7CiAgICAgfQogCiAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CiAgICAgaW50cHRyX3Qg
c291cmNlSUQ7Ci0gICAgVVN0cmluZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTDsK
ICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwogICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZl
TGFzdENhbGxlcihleGVjLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgc291cmNlVVJMLCBm
dW5jdGlvbik7CiAgICAgaW1wbCgpLT5zZXRMYXN0U2VuZExpbmVOdW1iZXIoc2lnbmVkTGluZU51
bWJlciA+PSAwID8gc2lnbmVkTGluZU51bWJlciA6IDApOwotICAgIGltcGwoKS0+c2V0TGFzdFNl
bmRVUkwodXN0cmluZ1RvU3RyaW5nKHNvdXJjZVVSTCkpOworICAgIGltcGwoKS0+c2V0TGFzdFNl
bmRVUkwoc291cmNlVVJMKTsKIAogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAppbmRleCA3MGI2OTgwOWQ3ODdmYjRjMTIxMWVl
YjVjN2MwMDAzYjg2YmJiOWEzLi5kODNmZjM4N2JlZmE5NjlhODBlYjhlN2Y4NzFkOGI5MjZhYjA3
NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nl
c3NvckN1c3RvbS5jcHAKQEAgLTg5LDkgKzg5LDkgQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6
OnNldFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgZXhlYy0+YXJndW1lbnQoMikuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IC8vIFRocm93IGV4Y2VwdGlv
bj8KLSAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0gICAgU3RyaW5nIGxvY2FsTmFt
ZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwotICAgIFN0cmluZyB2YWx1ZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1
bWVudCgyKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyBuYW1lc3Bh
Y2VVUkkgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cisg
ICAgU3RyaW5nIGxvY2FsTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgyKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaW1wbCgpLT5zZXRQYXJhbWV0ZXIobmFtZXNwYWNl
VVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAg
LTEwMCw4ICsxMDAsOCBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgU3RyaW5nIG5hbWVz
cGFjZVVSSSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwotICAgIFN0cmluZyBsb2NhbE5hbWUgPSB1c3RyaW5nVG9TdHJpbmco
ZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJp
bmcgbmFtZXNwYWNlVVJJID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgU3RyaW5nIHZhbHVlID0gaW1wbCgpLT5nZXRQYXJh
bWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5k
ZWZpbmVkKGV4ZWMsIHZhbHVlKTsKIH0KQEAgLTExMCw4ICsxMTAsOCBAQCBKU1ZhbHVlIEpTWFNM
VFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHVzdHJpbmdUb1N0cmluZyhl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgIFN0cmlu
ZyBsb2NhbE5hbWUgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2NhbE5h
bWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAg
aW1wbCgpLT5yZW1vdmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCA5ZWE5ZWM4ZjBkMzRmZmEwZGU3ZTY0ZjVk
YjBkOWE4YWI1MjhmZjAzLi5iYjhmOGRlYzViNWY2NTk1OTlmOThmNzU4NDliNzkzYWVlZWFmZjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcApAQCAtNzgsMTAgKzc4LDEwIEBAIFN0cmluZyBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpm
dW5jdGlvbk5hbWUoKSBjb25zdAogICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9p
c1ZhbGlkKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgVVN0cmluZyBmdW5jdGlvbk5h
bWUgPSBtX2RlYnVnZ2VyQ2FsbEZyYW1lLmNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKTsKKyAgICBT
dHJpbmcgZnVuY3Rpb25OYW1lID0gbV9kZWJ1Z2dlckNhbGxGcmFtZS5jYWxjdWxhdGVkRnVuY3Rp
b25OYW1lKCk7CiAgICAgaWYgKGZ1bmN0aW9uTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICByZXR1cm4gdXN0cmluZ1RvU3RyaW5nKGZ1bmN0aW9uTmFtZSk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTsKIH0KIAogRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgSmF2
YVNjcmlwdENhbGxGcmFtZTo6dHlwZSgpIGNvbnN0CkBAIC0xMDksNyArMTA5LDcgQEAgRXhlY1N0
YXRlKiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpleGVjKCkgY29uc3QKIH0KIAogLy8gRXZhbHVhdGUg
c29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCi1KU1ZhbHVl
IEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNW
YWx1ZSYgZXhjZXB0aW9uKSBjb25zdAorSlNWYWx1ZSBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFs
dWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9pc1ZhbGlkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmluZGV4IGU5ODdlY2Y4
OGY4ZGU4NjQ2YzM0ZTkwYzlkNDMwNmRkNjhmNTQyYWUuLmRjMjI5MTM1MmFiODQ4OTI5YjVhOTA3
Yjc2M2JjMjIzNmY1MjM5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0phdmFTY3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
YXZhU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjKCkgY29uc3Q7CiAKICAgICBKU0M6OkpTT2JqZWN0KiB0aGlzT2JqZWN0
KCkgY29uc3Q7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IEpTQzo6VVN0cmluZyYg
c2NyaXB0LCBKU0M6OkpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CisgICAgSlNDOjpKU1ZhbHVl
IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU0M6OkpTVmFsdWUmIGV4Y2VwdGlvbikg
Y29uc3Q7CiAgICAgCiBwcml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUoY29uc3QgSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZSYsIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY2Fs
bGVyLCBpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBjNDY5YmY4Mjky
MmU2YzAyZDI5YTY2ZDFmYTNjMTMxYzM3ZjRjYzhkLi43NjgyMDUxMGQxMjI2YzZkMjNkMTIxODY5
MTJkZTQ2ZGJiOWE1NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKQEAgLTU4LDEwICs1OCwxMCBAQCBQYXNzT3duUHRyPFNjaGVkdWxlZEFj
dGlvbj4gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBET01XcmFwcGVy
VwogICAgICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKGV4ZWMpKTsKICAgICAgICAgaWYgKHBvbGljeSAmJiAhcG9s
aWN5LT5hbGxvd0V2YWwoY2FsbFN0YWNrLnJlbGVhc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgVVN0cmluZyBzdHJpbmcgPSB2LnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHYudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rp
b24odXN0cmluZ1RvU3RyaW5nKHN0cmluZyksIGlzb2xhdGVkV29ybGQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rpb24oc3RyaW5nLCBpc29sYXRlZFdvcmxkKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rpb24oZXhlYywg
diwgaXNvbGF0ZWRXb3JsZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCAzYmI2OWY0MmM4ZjlhMjYzOGRkMmQ4
ODI1NzEyYzNiNmUxZDcwNzUxLi40ZmFlZWVkODk1MmFmOTc1ZmUxMThmODYyYTM0OGZhZWZmMGU4
Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNG
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTgy
LDExICs4MiwxMSBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbQogICAgICAgICBBU1NFUlQoY2Fs
bEZyYW1lKTsKICAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CiAgICAgICAgIGludHB0cl90
IHNvdXJjZUlEOwotICAgICAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICAgICAgU3RyaW5nIHVy
bFN0cmluZzsKICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKIAogICAgICAgICBleGVjLT5pbnRl
cnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoY2FsbEZyYW1lLCBzaWduZWRMaW5lTnVtYmVy
LCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7Ci0gICAgICAgIFVTdHJpbmcgZnVuY3Rp
b25OYW1lOworICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lOwogICAgICAgICBpZiAoZnVuY3Rp
b24pCiAgICAgICAgICAgICBmdW5jdGlvbk5hbWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0
aW9uKS0+bmFtZShleGVjKTsKICAgICAgICAgZWxzZSB7CkBAIC05Niw3ICs5Niw3IEBAIFBhc3NS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIHNpemVfdCBtCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25l
ZExpbmVOdW1iZXIgOiAwOwotICAgICAgICBmcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZSh1
c3RyaW5nVG9TdHJpbmcoZnVuY3Rpb25OYW1lKSwgdXN0cmluZ1RvU3RyaW5nKHVybFN0cmluZyks
IGxpbmVOdW1iZXIpKTsKKyAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoZnVu
Y3Rpb25OYW1lLCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIpKTsKICAgICAgICAgaWYgKCFmdW5jdGlv
biB8fCBmcmFtZXMuc2l6ZSgpID09IG1heFN0YWNrU2l6ZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQxYmJlYThi
MmY4ZGI3NTZhODE1OGFiMzA2ZTMzODZmZDFlNmJjYjAuLmQ2YWU2MWZlYTBjNGEzMjA0ZGRkMWFk
N2NjN2ZiY2I5OWVmOWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgSlNET01XaW5kb3dTaGVsbCog
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCkKIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewog
ICAgIGNvbnN0IFNvdXJjZUNvZGUmIGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VD
b2RlKCk7Ci0gICAgU3RyaW5nIHNvdXJjZVVSTCA9IHVzdHJpbmdUb1N0cmluZyhqc1NvdXJjZUNv
ZGUucHJvdmlkZXIoKS0+dXJsKCkpOworICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNv
ZGUucHJvdmlkZXIoKS0+dXJsKCk7CiAKICAgICAvLyBldmFsdWF0ZSBjb2RlLiBSZXR1cm5zIHRo
ZSBKUyByZXR1cm4gdmFsdWUgb3IgMAogICAgIC8vIGlmIHRoZXJlIHdhcyBub25lLCBhbiBlcnJv
ciBvY2N1cnJlZCBvciB0aGUgdHlwZSBjb3VsZG4ndCBiZSBjb252ZXJ0ZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYmJjZDU0
Mjk5NjU3MGZhMTM3OTlhNGU1YTgyOTUwMzBkZTUwYTBhMS4uNTJmZjhmNjM3OWRhNDE5MGY2YjEx
YjIxNzkyZDA1NWVlZGUwMDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpCiAgICAgU291cmNlUHJvdmlkZXIqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
U291cmNlUHJvdmlkZXIqPihzb3VyY2VJRCk7CiAKICAgICBpZiAobV9jdXJyZW50U291cmNlSUQg
IT0gc291cmNlSUQpIHsKLSAgICAgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSB1c3RyaW5nVG9TdHJp
bmcoSlNDOjpVU3RyaW5nKGNvbnN0X2Nhc3Q8U3RyaW5nSW1wbCo+KHNvdXJjZS0+ZGF0YSgpKSkp
OworICAgICAgICBTdHJpbmcgc291cmNlQ29kZShjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3Vy
Y2UtPmRhdGEoKSkpOwogICAgICAgICBtX2N1cnJlbnRTb3VyY2VDb2RlLmNsZWFyKCk7CiAgICAg
ICAgIHNvdXJjZUNvZGUuc3BsaXQoIlxuIiwgdHJ1ZSwgbV9jdXJyZW50U291cmNlQ29kZSk7CiAg
ICAgICAgIG1fY3VycmVudFNvdXJjZUlEID0gc291cmNlSUQ7CkBAIC0yMDEsNyArMjAxLDcgQEAg
Ym9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBKU1Zh
bHVlIGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+
ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24pLCBl
eGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFs
dWF0ZShicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uLCBleGNlcHRpb24pOwogICAgIGlmIChl
eGNlcHRpb24pIHsKICAgICAgICAgLy8gQW4gZXJyb25lb3VzIGNvbmRpdGlvbiBjb3VudHMgYXMg
ImZhbHNlIi4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE2LDExICszMTYsMTEgQEAgdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZShTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lcikKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJz
ZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBTb3VyY2VQcm92aWRlciogc291
cmNlUHJvdmlkZXIsIGJvb2wgaXNDb250ZW50U2NyaXB0KQogewotICAgIFN0cmluZyBzb3VyY2VJ
RCA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmc6Om51bWJlcihzb3VyY2VQcm92aWRlci0+
YXNJRCgpKSk7CisgICAgU3RyaW5nIHNvdXJjZUlEID0gU3RyaW5nOjpudW1iZXIoc291cmNlUHJv
dmlkZXItPmFzSUQoKSk7CiAKICAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgc2NyaXB0
OwotICAgIHNjcmlwdC51cmwgPSB1c3RyaW5nVG9TdHJpbmcoc291cmNlUHJvdmlkZXItPnVybCgp
KTsKLSAgICBzY3JpcHQuc291cmNlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25z
dF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2VQcm92aWRlci0+ZGF0YSgpKSkpOworICAgIHNjcmlw
dC51cmwgPSBzb3VyY2VQcm92aWRlci0+dXJsKCk7CisgICAgc2NyaXB0LnNvdXJjZSA9IFN0cmlu
Zyhjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2VQcm92aWRlci0+ZGF0YSgpKSk7CiAgICAg
c2NyaXB0LnN0YXJ0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5l
Lnplcm9CYXNlZEludCgpOwogICAgIHNjcmlwdC5zdGFydENvbHVtbiA9IHNvdXJjZVByb3ZpZGVy
LT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CiAgICAgc2NyaXB0Lmlz
Q29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKQEAgLTM1NCw4ICszNTQsOCBAQCB2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVy
U2V0JiBsaXN0ZW5lcnMsIFNvdQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZh
aWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgU291cmNlUHJv
dmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgdXJsID0gdXN0cmluZ1RvU3RyaW5nKHNvdXJjZVByb3Zp
ZGVyLT51cmwoKSk7Ci0gICAgU3RyaW5nIGRhdGEgPSB1c3RyaW5nVG9TdHJpbmcoSlNDOjpVU3Ry
aW5nKGNvbnN0X2Nhc3Q8U3RyaW5nSW1wbCo+KHNvdXJjZVByb3ZpZGVyLT5kYXRhKCkpKSk7Cisg
ICAgU3RyaW5nIHVybCA9IHNvdXJjZVByb3ZpZGVyLT51cmwoKTsKKyAgICBTdHJpbmcgZGF0YSA9
IFN0cmluZyhjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2VQcm92aWRlci0+ZGF0YSgpKSk7
CiAgICAgaW50IGZpcnN0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9s
aW5lLm9uZUJhc2VkSW50KCk7CiAKICAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGNv
cHk7CkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgRGVidWdnZXI6OmRldGFjaChnbG9iYWxP
YmplY3QpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzb3VyY2VQYXJzZWQoRXhlY1N0
YXRlKiBleGVjLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUs
IGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNv
dXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRl
ciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgaWYg
KG1fY2FsbGluZ0xpc3RlbmVycykKICAgICAgICAgcmV0dXJuOwpAQCAtMzk2LDcgKzM5Niw3IEBA
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNv
dXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92CiAKICAgICBib29sIGlzRXJyb3IgPSBlcnJvckxpbmUg
IT0gLTE7CiAgICAgaWYgKGlzRXJyb3IpCi0gICAgICAgIGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNv
dXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQcm92aWRlciwgZXJyb3JMaW5lLCB1c3RyaW5nVG9TdHJp
bmcoZXJyb3JNZXNzYWdlKSk7CisgICAgICAgIGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZSgq
bGlzdGVuZXJzLCBzb3VyY2VQcm92aWRlciwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOwogICAg
IGVsc2UKICAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQ
cm92aWRlciwgaXNDb250ZW50U2NyaXB0KGV4ZWMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggOTM1OTE0YzZiNDE4ZGMzZmEzNjMz
Nzg3NDI2MjU3NWE1YWFkODVkMy4uMjhkOTdjNTljOGI5OGVjOTgxZTRjNjY1NzA4NDA1YjFiYzI4
MTU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oCkBAIC0zOCwxMiArMzgsMTIgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8
ZGVidWdnZXIvRGVidWdnZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0UG9zaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3RyaW5nJiBl
cnJvck1zZyk7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9y
TXNnKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxs
RnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpOwogICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBmaXJzdExpbmUsIGludCBjb2x1bW5OdW1i
ZXIpOwogICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggYTc2NjVlMTZlOWY2MDU1MDRlMTg2ODQ1OGJjYzg5NDdjMDkxNTYzOC4u
YzBlOWMzZTM5NzJlZjI0NDdhNzg5Njc1YjU5MmFlZmIyZjY2MTJhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBTdHJpbmcgZXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KERvY3VtZW50KiBkb2N1
bWVudCwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lcgogICAgIGlmICghanNGdW5jdGlvbikK
ICAgICAgICAgcmV0dXJuICIiOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IHNjcmlw
dFN0YXRlRnJvbU5vZGUoanNMaXN0ZW5lci0+aXNvbGF0ZWRXb3JsZCgpLCBkb2N1bWVudCk7Ci0g
ICAgcmV0dXJuIHVzdHJpbmdUb1N0cmluZyhqc0Z1bmN0aW9uLT50b1N0cmluZyhzY3JpcHRTdGF0
ZSktPnZhbHVlKHNjcmlwdFN0YXRlKSk7CisgICAgcmV0dXJuIGpzRnVuY3Rpb24tPnRvU3RyaW5n
KHNjcmlwdFN0YXRlKS0+dmFsdWUoc2NyaXB0U3RhdGUpOwogfQogCiBib29sIGV2ZW50TGlzdGVu
ZXJIYW5kbGVyTG9jYXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBFdmVudExpc3RlbmVyKiBldmVu
dExpc3RlbmVyLCBTdHJpbmcmIHNvdXJjZU5hbWUsIGludCYgbGluZU51bWJlcikKQEAgLTEyMyw3
ICsxMjMsNyBAQCBib29sIGV2ZW50TGlzdGVuZXJIYW5kbGVyTG9jYXRpb24oRG9jdW1lbnQqIGRv
Y3VtZW50LCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbgogICAgIGlmICghZnVuY0V4ZWN1dGFi
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBsaW5lTnVtYmVyID0gZnVuY0V4ZWN1dGFi
bGUtPmxpbmVObygpOwotICAgIHNvdXJjZU5hbWUgPSB1c3RyaW5nVG9TdHJpbmcoZnVuY0V4ZWN1
dGFibGUtPnNvdXJjZVVSTCgpKTsKKyAgICBzb3VyY2VOYW1lID0gZnVuY0V4ZWN1dGFibGUtPnNv
dXJjZVVSTCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCA1NDc3ODI1OWE4OGY2OGZh
ZjNjNmFmNGUzMDI3OTdhMGU4MzI5ZmJjLi5lNTI4NDJlMGJiYWE1ZTZjZjdjM2Q5YjFiNGZlY2Qw
ZjI3NTY5MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRG
dW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApAQCAtNTksMTkgKzU5LDEzIEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxl
cjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQogdm9pZCBTY3Jp
cHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmIGFyZ3Vt
ZW50KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMu
YXBwZW5kKGpzU3RyaW5nKG1fZXhlYywgYXJndW1lbnQpKTsKLX0KLQotdm9pZCBTY3JpcHRDYWxs
QXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBKU0M6OlVTdHJpbmcmIGFyZ3Vt
ZW50KQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMu
YXBwZW5kKGpzU3RyaW5nKG1fZXhlYywgYXJndW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBl
bmQoanNTdHJpbmdXaXRoQ2FjaGUobV9leGVjLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlw
dENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMuYXBw
ZW5kKGpzU3RyaW5nKG1fZXhlYywgVVN0cmluZyhhcmd1bWVudCkpKTsKKyAgICBtX2FyZ3VtZW50
cy5hcHBlbmQoanNTdHJpbmcobV9leGVjLCBTdHJpbmcoYXJndW1lbnQpKSk7CiB9CiAKIHZvaWQg
U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlIGFy
Z3VtZW50KQpAQCAtMTI3LDcgKzEyMSw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2Fs
bDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9ucykKIAogICAg
IEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhp
c09iamVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIHN0cmluZ1RvVVN0cmluZyht
X25hbWUpKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4ZWMs
IElkZW50aWZpZXIobV9leGVjLCBtX25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRp
b24oKSkgewogICAgICAgICBpZiAocmVwb3J0RXhjZXB0aW9ucykKICAgICAgICAgICAgIHJlcG9y
dEV4Y2VwdGlvbihtX2V4ZWMsIG1fZXhlYy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTY1LDcgKzE1OSw3
IEBAIFNjcmlwdE9iamVjdCBTY3JpcHRGdW5jdGlvbkNhbGw6OmNvbnN0cnVjdChib29sJiBoYWRF
eGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4
ZWMpOwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gYXNPYmplY3QodGhpc09iamVjdC0+
Z2V0KG1fZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIHN0cmluZ1RvVVN0cmluZyhtX25hbWUpKSkp
OworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGFzT2JqZWN0KHRoaXNPYmplY3QtPmdldCht
X2V4ZWMsIElkZW50aWZpZXIobV9leGVjLCBtX25hbWUpKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgaWYgKHJlcG9ydEV4Y2VwdGlvbnMpCiAgICAgICAgICAg
ICByZXBvcnRFeGNlcHRpb24obV9leGVjLCBtX2V4ZWMtPmV4Y2VwdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmgKaW5kZXggNjliNWUy
OGRiZTMzN2RhYjhhYzg5YTgxN2RkYWQ4MjI4YjE2OGYyYi4uNGU5YzIwMmIxM2Q1YmFjMjAxMmY0
MTA5NGQ2YTExNjA2OWM3YzFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RnVuY3Rpb25DYWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAgLTMxLDE0ICszMSwxMyBAQAogI2lmbmRlZiBTY3JpcHRG
dW5jdGlvbkNhbGxfaAogI2RlZmluZSBTY3JpcHRGdW5jdGlvbkNhbGxfaAogCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogCiAjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIFVTdHJp
bmc7CiAgICAgY2xhc3MgSlNWYWx1ZTsKIH0KIApAQCAtNTEsOSArNTAsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRPYmpl
Y3QmKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRWYWx1ZSYpOwot
ICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAgICAgICB2b2lk
IGFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVu
dChjb25zdCBKU0M6OlVTdHJpbmcmKTsKKyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25z
dCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUpOwog
ICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcpOwogICAgICAgICB2b2lkIGFwcGVuZEFy
Z3VtZW50KGxvbmcgbG9uZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwCmluZGV4IDNjMmI2NWZlMDJmNjE0MjgyMzUwYjE5Y2I1MmQwYmQyOGU5OGEzZTgu
LjRjZWY0Y2RkZDU5YzI3ZjIyY2E1ZTE1YTUxMjFlNjUwNjUyODI5OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFNj
cmlwdFByb2ZpbGU6On5TY3JpcHRQcm9maWxlKCkKIAogU3RyaW5nIFNjcmlwdFByb2ZpbGU6OnRp
dGxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdXN0cmluZ1RvU3RyaW5nKG1fcHJvZmlsZS0+dGl0
bGUoKSk7CisgICAgcmV0dXJuIG1fcHJvZmlsZS0+dGl0bGUoKTsKIH0KIAogdW5zaWduZWQgaW50
IFNjcmlwdFByb2ZpbGU6OnVpZCgpIGNvbnN0CkBAIC04MCw4ICs4MCw4IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IoY29uc3QgSlND
OjpQcm9maWxlTm9kCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKIAotICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJmdW5jdGlv
bk5hbWUiLCB1c3RyaW5nVG9TdHJpbmcobm9kZS0+ZnVuY3Rpb25OYW1lKCkpKTsKLSAgICByZXN1
bHQtPnNldFN0cmluZygidXJsIiwgdXN0cmluZ1RvU3RyaW5nKG5vZGUtPnVybCgpKSk7CisgICAg
cmVzdWx0LT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIG5vZGUtPmZ1bmN0aW9uTmFtZSgpKTsK
KyAgICByZXN1bHQtPnNldFN0cmluZygidXJsIiwgbm9kZS0+dXJsKCkpOwogICAgIHJlc3VsdC0+
c2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgbm9kZS0+bGluZU51bWJlcigpKTsKICAgICByZXN1bHQt
PnNldE51bWJlcigidG90YWxUaW1lIiwgbm9kZS0+dG90YWxUaW1lKCkpOwogICAgIHJlc3VsdC0+
c2V0TnVtYmVyKCJzZWxmVGltZSIsIG5vZGUtPnNlbGZUaW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCmluZGV4IGQ2YWZkODk2NmRhYjgxNGQ5
MTExMmNiYTFlMTY4MGE3NDNjOTQyMzIuLjVjN2ViZDdkNTZiNjEzMWJiNjg5OWVhYjFlMThiNTcw
MWMwNmFhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxl
ci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdW5zaWduZWQgU2NyaXB0UHJvZmlsZXI6OmdldEhlYXBP
YmplY3RJZChjb25zdCBTY3JpcHRWYWx1ZSYpCiAKIHZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0
KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBKU0M6OlBy
b2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhzdGF0ZSwgc3RyaW5nVG9VU3RyaW5n
KHRpdGxlKSk7CisgICAgSlNDOjpQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmco
c3RhdGUsIHRpdGxlKTsKIH0KIAogdm9pZCBTY3JpcHRQcm9maWxlcjo6c3RhcnRGb3JQYWdlKFBh
Z2UqIGluc3BlY3RlZFBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0Rm9yV29ya2VyQ29udGV4dChXb3JrZXJDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmCiAKIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gU2Ny
aXB0UHJvZmlsZXI6OnN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogewotICAgIFJlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUgPSBKU0M6OlByb2ZpbGVyOjpw
cm9maWxlcigpLT5zdG9wUHJvZmlsaW5nKHN0YXRlLCBzdHJpbmdUb1VTdHJpbmcodGl0bGUpKTsK
KyAgICBSZWZQdHI8SlNDOjpQcm9maWxlPiBwcm9maWxlID0gSlNDOjpQcm9maWxlcjo6cHJvZmls
ZXIoKS0+c3RvcFByb2ZpbGluZyhzdGF0ZSwgdGl0bGUpOwogICAgIHJldHVybiBTY3JpcHRQcm9m
aWxlOjpjcmVhdGUocHJvZmlsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTb3VyY2VQcm92aWRlci5oCmluZGV4IDg3NjAxODUwYWJiNDMwMGNiOTljMzA4
Y2RiMjk2NDA4ZjQwOWJjZDkuLjgzOTYwODJmYTFjNzYyODU5YTI1NDhlNTNlZmJhZDJhZDc3NGIw
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZVBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlUHJv
dmlkZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBTY3JpcHRTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBKU0M6OlNvdXJjZVByb3ZpZGVyIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IEpTQzo6VVN0cmlu
ZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJv
dmlkZXJDYWNoZSogY2FjaGUgPSAwKQorICAgICAgICBTY3JpcHRTb3VyY2VQcm92aWRlcihjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBKU0M6OlNv
dXJjZVByb3ZpZGVyQ2FjaGUqIGNhY2hlID0gMCkKICAgICAgICAgICAgIDogU291cmNlUHJvdmlk
ZXIodXJsLCBzdGFydFBvc2l0aW9uLCBjYWNoZSkKICAgICAgICAgewogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggODNkZmQ1ZmI4MzI2
NzE4YjZlZWJmMTM0MzIzYWYyNDQxM2VjMzUyYy4uNDMxMGZmY2Q3ZGY1ZDBkNjIyYWIzMDYyNmY2
ZmMzMGI5ZjY0NzNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVl
LmNwcApAQCAtMzksNyArMzksNiBAQAogCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC01MCwxNiArNDksMTQgQEAgYm9vbCBTY3JpcHRWYWx1
ZTo6Z2V0U3RyaW5nKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNv
bnN0CiAgICAgaWYgKCFtX3ZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIFVTdHJpbmcgdXN0cmluZzsKLSAgICBpZiAo
IW1fdmFsdWUuZ2V0KCkuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlLCB1c3RyaW5nKSkKKyAgICBpZiAo
IW1fdmFsdWUuZ2V0KCkuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlLCByZXN1bHQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gdXN0cmluZ1RvU3RyaW5nKHVzdHJpbmcpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBTdHJpbmcgU2NyaXB0VmFsdWU6OnRvU3RyaW5nKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKLSAgICBTdHJpbmcgcmVzdWx0ID0gdXN0cmluZ1Rv
U3RyaW5nKG1fdmFsdWUuZ2V0KCkudG9TdHJpbmcoc2NyaXB0U3RhdGUpLT52YWx1ZShzY3JpcHRT
dGF0ZSkpOworICAgIFN0cmluZyByZXN1bHQgPSBtX3ZhbHVlLmdldCgpLnRvU3RyaW5nKHNjcmlw
dFN0YXRlKS0+dmFsdWUoc2NyaXB0U3RhdGUpOwogICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVy
ZSBhbiBleGNlcHRpb24gaXMgdGhyb3duIGFzIHBhcnQgb2YgaW52b2tpbmcgdG9TdHJpbmcgb24g
dGhlIG9iamVjdC4KICAgICBpZiAoc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICBzY3JpcHRTdGF0ZS0+Y2xlYXJFeGNlcHRpb24oKTsKQEAgLTEzOCw3ICsxMzUsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgSgogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKQogICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFzTnVtYmVyKCkpOwogICAg
IGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIFVTdHJpbmcgcyA9IHZhbHVlLmdldFN0
cmluZyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIFN0cmluZyBzID0gdmFsdWUuZ2V0U3RyaW5nKHNj
cmlwdFN0YXRlKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmlu
ZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOwogICAgIH0KICAgICBpZiAodmFsdWUuaXNP
YmplY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZWE3MDIyOTViN2U2NTM2ZWQ0NDYxOTgzMzNkMDg3MmRk
MTI0MDUzYy4uZjI5YTEzYTVmZTQwZGFkNjcxNjc3NzE0YWZiYzVlZTRhYzYwMGEwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCkBAIC0zODYsNyArMzg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBDbG9uZUJhc2UoZXhl
YykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwgbV9ibG9iVVJMcyhibG9iVVJM
cykKLSAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBVU3RyaW5nKCIiLCAwKSkKKyAg
ICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBlbXB0eVN0cmluZygpKQogICAgIHsKICAg
ICAgICAgd3JpdGUoQ3VycmVudFZlcnNpb24pOwogICAgICAgICBmaWxsVHJhbnNmZXJNYXAobWVz
c2FnZVBvcnRzLCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzKTsKQEAgLTUyMyw3ICs1MjMsNyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBkdW1wU3RyaW5nKFVTdHJp
bmcgc3RyKQorICAgIHZvaWQgZHVtcFN0cmluZyhTdHJpbmcgc3RyKQogICAgIHsKICAgICAgICAg
aWYgKHN0ci5pc0VtcHR5KCkpCiAgICAgICAgICAgICB3cml0ZShFbXB0eVN0cmluZ1RhZyk7CkBA
IC01MzMsNyArNTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQg
ZHVtcFN0cmluZ09iamVjdChVU3RyaW5nIHN0cikKKyAgICB2b2lkIGR1bXBTdHJpbmdPYmplY3Qo
U3RyaW5nIHN0cikKICAgICB7CiAgICAgICAgIGlmIChzdHIuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgd3JpdGUoRW1wdHlTdHJpbmdPYmplY3RUYWcpOwpAQCAtNTg5LDcgKzU4OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAg
ICAgICAgVVN0cmluZyBzdHIgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKG1fZXhlYyk7CisgICAg
ICAgICAgICBTdHJpbmcgc3RyID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShtX2V4ZWMpOwogICAg
ICAgICAgICAgZHVtcFN0cmluZyhzdHIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KQEAgLTYyMCw3ICs2MjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG9iai0+
aW5oZXJpdHMoJlN0cmluZ09iamVjdDo6c19pbmZvKSkgewogICAgICAgICAgICAgICAgIGlmICgh
c3RhcnRPYmplY3RJbnRlcm5hbChvYmopKSAvLyBoYW5kbGUgZHVwbGljYXRlcwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHN0ciA9IGFz
U3RyaW5nKGFzU3RyaW5nT2JqZWN0KHZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKS0+dmFsdWUobV9l
eGVjKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyID0gYXNTdHJpbmcoYXNTdHJpbmdPYmpl
Y3QodmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkpLT52YWx1ZShtX2V4ZWMpOwogICAgICAgICAgICAg
ICAgIGR1bXBTdHJpbmdPYmplY3Qoc3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgIH0KQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBmbGFnc1tmbGFnQ291bnQrK10gPSAnbSc7CiAgICAgICAgICAgICAgICAgd3JpdGUo
UmVnRXhwVGFnKTsKICAgICAgICAgICAgICAgICB3cml0ZShyZWdFeHAtPnJlZ0V4cCgpLT5wYXR0
ZXJuKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKFVTdHJpbmcoZmxhZ3MsIGZsYWdDb3VudCkp
OworICAgICAgICAgICAgICAgIHdyaXRlKFN0cmluZyhmbGFncywgZmxhZ0NvdW50KSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
b2JqLT5pbmhlcml0cygmSlNNZXNzYWdlUG9ydDo6c19pbmZvKSkgewpAQCAtNzkyLDcgKzc5Miw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdyaXRlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
ICAgIHsKLSAgICAgICAgVVN0cmluZyBzdHIgPSBpZGVudC51c3RyaW5nKCk7CisgICAgICAgIGNv
bnN0IFN0cmluZyYgc3RyID0gaWRlbnQudXN0cmluZygpOwogICAgICAgICBTdHJpbmdDb25zdGFu
dFBvb2w6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2NvbnN0YW50UG9vbC5hZGQoc3RyLmltcGwo
KSwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkgewogICAgICAgICAgICAgd3JpdGUoU3RyaW5nUG9vbFRhZyk7CkBAIC04MTgsNyArODE4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZhaWwoKTsKICAgICB9CiAKLSAgICB2b2lkIHdy
aXRlKGNvbnN0IFVTdHJpbmcmIHN0cikKKyAgICB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgc3Ry
KQogICAgIHsKICAgICAgICAgaWYgKHN0ci5pc051bGwoKSkKICAgICAgICAgICAgIHdyaXRlKG1f
ZW1wdHlJZGVudGlmaWVyKTsKQEAgLTgyNiwxNCArODI2LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHdyaXRlKElkZW50aWZpZXIobV9leGVjLCBzdHIpKTsKICAgICB9CiAKLSAgICB2b2lkIHdy
aXRlKGNvbnN0IFN0cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAgaWYgKHN0ci5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICB3cml0ZShtX2VtcHR5SWRlbnRpZmllcik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHdyaXRlKElkZW50aWZpZXIobV9leGVjLCBzdHIuaW1wbCgpKSk7Ci0gICAgfQot
CiAgICAgdm9pZCB3cml0ZShjb25zdCBGaWxlKiBmaWxlKQogICAgIHsKICAgICAgICAgbV9ibG9i
VVJMcy5hcHBlbmQoZmlsZS0+dXJsKCkpOwpAQCAtMTAzNyw3ICsxMDI5LDcgQEAgcHVibGljOgog
ICAgICAgICBjb25zdCB1aW50OF90KiBzdGFydCA9IHZhbHVlLmJlZ2luKCk7CiAgICAgICAgIGNv
bnN0IHVpbnQ4X3QqIGVuZCA9IHZhbHVlLmVuZCgpOwogICAgICAgICBjb25zdCB1aW50MzJfdCBs
ZW5ndGggPSB2YWx1ZS5zaXplKCkgLyBzaXplb2YoVUNoYXIpOwotICAgICAgICBVU3RyaW5nIHN0
cjsKKyAgICAgICAgU3RyaW5nIHN0cjsKICAgICAgICAgaWYgKCFDbG9uZURlc2VyaWFsaXplcjo6
cmVhZFN0cmluZyhzdGFydCwgZW5kLCBzdHIsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKQEAgLTEwNTcsNyArMTA0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgdWludDMy
X3QgbGVuZ3RoOwogICAgICAgICBpZiAoIXJlYWRMaXR0bGVFbmRpYW4ocHRyLCBlbmQsIGxlbmd0
aCkgfHwgbGVuZ3RoID49IFN0cmluZ1Bvb2xUYWcpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgICAgIFVTdHJpbmcgc3RyOworICAgICAgICBTdHJpbmcgc3RyOwogICAgICAgICBp
ZiAoIXJlYWRTdHJpbmcocHRyLCBlbmQsIHN0ciwgbGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIFN0cmluZyhzdHIuaW1wbCgpKTsKQEAgLTEwNzcs
NyArMTA2OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2FjaGVkU3RyaW5n
IHsKLSAgICAgICAgQ2FjaGVkU3RyaW5nKGNvbnN0IFVTdHJpbmcmIHN0cmluZykKKyAgICAgICAg
Q2FjaGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMTA4OCwxMCArMTA4MCwxMSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG1fanNTdHJpbmcgPSBKU0M6OmpzU3RyaW5nKGV4ZWMs
IG1fc3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiBtX2pzU3RyaW5nOwogICAgICAgICB9Ci0g
ICAgICAgIGNvbnN0IFVTdHJpbmcmIHVzdHJpbmcoKSB7IHJldHVybiBtX3N0cmluZzsgfQorICAg
ICAgICAvLyBGSVhNRTogcmVuYW1lIHRvIHN0cmluZygpLgorICAgICAgICBjb25zdCBTdHJpbmcm
IHVzdHJpbmcoKSB7IHJldHVybiBtX3N0cmluZzsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
VVN0cmluZyBtX3N0cmluZzsKKyAgICAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgICAgICBKU1Zh
bHVlIG1fanNTdHJpbmc7CiAgICAgfTsKIApAQCAtMTI0MCw3ICsxMjMzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIHJlYWQoaSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgcmVhZFN0
cmluZyhjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aW50OF90KiBlbmQsIFVTdHJpbmcmIHN0
ciwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHN0YXRpYyBib29sIHJlYWRTdHJpbmcoY29uc3QgdWlu
dDhfdComIHB0ciwgY29uc3QgdWludDhfdCogZW5kLCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIHsKICAgICAgICAgaWYgKGxlbmd0aCA+PSBudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkgLyBzaXplb2YoVUNoYXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTI1MCw3ICsxMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
I2lmIEFTU1VNRV9MSVRUTEVfRU5ESUFOCi0gICAgICAgIHN0ciA9IFVTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVQ2hhcio+KHB0ciksIGxlbmd0aCk7CisgICAgICAgIHN0ciA9IFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocHRyKSwgbGVuZ3RoKTsKICAgICAgICAg
cHRyICs9IGxlbmd0aCAqIHNpemVvZihVQ2hhcik7CiAjZWxzZQogICAgICAgICBWZWN0b3I8VUNo
YXI+IGJ1ZmZlcjsKQEAgLTEyNjAsNyArMTI1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZWFkTGl0dGxlRW5kaWFuKHB0ciwgZW5kLCBjaCk7CiAgICAgICAgICAgICBidWZmZXIuYXBwZW5k
KGNoKTsKICAgICAgICAgfQotICAgICAgICBzdHIgPSBVU3RyaW5nOjphZG9wdChidWZmZXIpOwor
ICAgICAgICBzdHIgPSBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiAjZW5kaWYKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTI5NSw3ICsxMjg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGNhY2hlZFN0cmluZyA9IENhY2hlZFN0cmluZ1JlZigmbV9jb25zdGFudFBvb2wsIGluZGV4
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIFVTdHJpbmcg
c3RyOworICAgICAgICBTdHJpbmcgc3RyOwogICAgICAgICBpZiAoIXJlYWRTdHJpbmcobV9wdHIs
IG1fZW5kLCBzdHIsIGxlbmd0aCkpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cmluZ1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdT
b3VyY2VQcm92aWRlci5oCmluZGV4IDhiNjcxODg5MTJiNzdlNjQ4OTg3Njc4MDI3ODM2NTcxZTEx
YzNhM2UuLjZiNmJiNGU5YWIxNjE2YjJjZmVlNGU3YzYyZTdkYjdlNDY4NDM4NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RyaW5nU291cmNlUHJvdmlkZXIuaApAQCAt
NDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRp
b24pKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgSlNDOjpVU3RyaW5nIGdldFJhbmdl
KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QgT1ZFUlJJREUKKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdCBPVkVSUklERQogICAgICAgICB7
CiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gZW5kIC0gc3RhcnQ7CiAgICAgICAgICAgICBBU1NF
UlQobGVuZ3RoID49IDApOwogICAgICAgICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IHRo
aXMtPmxlbmd0aCgpKTsKIAotICAgICAgICAgICAgcmV0dXJuIEpTQzo6VVN0cmluZyhTdHJpbmdJ
bXBsOjpjcmVhdGUobV9zb3VyY2UuaW1wbCgpLCBzdGFydCwgbGVuZ3RoKSk7CisgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZShtX3NvdXJjZS5pbXBsKCksIHN0YXJ0
LCBsZW5ndGgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5pbXBsKCk7IH0KQEAgLTU3LDcgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nU291cmNlUHJv
dmlkZXIoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0
UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pCi0gICAgICAgICAgICA6IFNjcmlwdFNvdXJjZVByb3Zp
ZGVyKHN0cmluZ1RvVVN0cmluZyh1cmwpLCBzdGFydFBvc2l0aW9uKQorICAgICAgICAgICAgOiBT
Y3JpcHRTb3VyY2VQcm92aWRlcih1cmwsIHN0YXJ0UG9zaXRpb24pCiAgICAgICAgICAgICAsIG1f
c291cmNlKHNvdXJjZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC02NSwxMSArNjUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICB9OwogCi0g
ICAgaW5saW5lIEpTQzo6U291cmNlQ29kZSBtYWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
LCBjb25zdCBTdHJpbmcmIHVybCA9IFN0cmluZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0
UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIEpTQzo6U291cmNlQ29kZShTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNv
dXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJ
bnQoKSk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTdHJp
bmdTb3VyY2VQcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCmluZGV4IGMxYzE5OGQ2NWJiNDQzYWEwYjFhYzU1MzI5YmRkYjI1YmU4
ZGE4ZTQuLmU3NzAyMTlmZWFmMzE0MzRjMDNkNDQwMGRiYWQzMjVkZjg4YWM2ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0zMTcs
NyArMzE3LDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZXhl
YywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIEpTVmFs
dWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgc3Ry
aW5nVG9VU3RyaW5nKFN0cmluZyhuYW1lKSkpKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gW3Nl
bGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhuYW1lKSkpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
ZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpA
QCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3Rh
dGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5LCBSb290T2JqZWN0KiByb290CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBbc2VsZiBf
aW1wXS0+bWV0aG9kVGFibGUoKS0+cHV0KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyKGV4
ZWMsIHN0cmluZ1RvVVN0cmluZyhTdHJpbmcoa2V5KSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1
ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBzbG90
KTsKKyAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+cHV0KFtzZWxmIF9pbXBdLCBleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUo
ZXhlYywgJnZhbHVlLCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7
CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9u
VG9Db25zb2xlKGV4ZWMpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyB2b2lkIGdldExpc3RG
cm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5LCBSb290T2JqZWN0KiBy
b290CiAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGxvY2sgcGVybWFuZW50bHkgaGVsZAogICAgICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgcmVz
dWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0
cmluZyhTdHJpbmcoa2V5KSkpKTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1w
XS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWRkRXhjZXB0
aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIHN0YXRpYyB2b2lkIGdldExp
c3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5LCBSb290T2JqZWN0
KiByb290CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKLSAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHkoW3NlbGYgX2ltcF0sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgc3RyaW5nVG9VU3Ry
aW5nKFN0cmluZyhrZXkpKSkpOworICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSgpLT5kZWxl
dGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcoa2V5
KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFkZEV4Y2Vw
dGlvblRvQ29uc29sZShleGVjKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgdm9pZCBnZXRM
aXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVj
dCogcm9vdAogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgQk9PTCByZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJv
cGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nKGtleSkp
KSk7CisgICAgQk9PTCByZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRl
bnRpZmllcihleGVjLCBTdHJpbmcoa2V5KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsKQEAgLTU2OSw3ICs1
NjksNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBO
U0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogCiAgICAgaWYgKHZhbHVlLmlzU3RyaW5n
KCkpIHsKICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgY29uc3QgVVN0cmluZyYgdSA9IGFzU3RyaW5nKHZh
bHVlKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdSA9IGFzU3RyaW5nKHZh
bHVlKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6dS5jaGFyYWN0ZXJzKCkgbGVuZ3RoOnUubGVuZ3RoKCldOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCA0YmVlZjljMmQxNjYwYWYwNzA4N2IwNmM3MzhmYTE3YWVjYTJiZDViLi42ODk4MTQ0Y2E2
OGYzZGM1MTJkMDIxYmM3OGY3NzA1MzZkYTJhYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTY1LDcgKzE2NSw3IEBA
IEVORAogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBpZiAo
IWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgaW1wbC0+JHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcih1c3Ry
aW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCAkd3Jh
cHBlck9iamVjdCwgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSkkcGFzc1JlZlB0ckhhbmRsaW5n
LCBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwtPiR7ZnVuY3Rp
b25OYW1lfUV2ZW50TGlzdGVuZXIoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksICR3
cmFwcGVyT2JqZWN0LCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKSRwYXNzUmVmUHRySGFuZGxp
bmcsIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIEVORAogICAgIHJldHVybiBAR2VuZXJhdGVFdmVu
dExpc3RlbmVySW1wbDsKQEAgLTI4NDUsNyArMjg0NSw3IEBAIEVORAogICAgICAgICAgICAgZm9y
ZWFjaCBteSAkcGFyYW0gKEBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1l
ID0gJHBhcmFtLT5uYW1lOwogICAgICAgICAgICAgICAgIGlmICgkcGFyYW0tPnR5cGUgZXEgIkRP
TVN0cmluZyIpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgJHtwYXJhbU5hbWV9KSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXJncy5hcHBlbmQoanNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgJHtwYXJhbU5hbWV9KSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVs
c2lmICgkcGFyYW0tPnR5cGUgZXEgImJvb2xlYW4iKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKGpzQm9vbGVhbigke3BhcmFtTmFtZX0p
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRwYXJhbS0+dHlwZSBlcSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlIikgewpAQCAtMzA1MSw3ICszMDUxLDcgQEAgc3ViIEpTVmFsdWVUb05h
dGl2ZQogICAgICAgICAgICAgcmV0dXJuICJ2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVj
LCAkdmFsdWUpIgogICAgICAgICB9CiAgICAgICAgICMgRklYTUU6IEFkZCB0aGUgY2FzZSBmb3Ig
J2lmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXRVbmRlZmluZWRBcyJ9
IGFuZCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXRVbmRlZmluZWRBcyJ9
IGVxICJOdWxsU3RyaW5nIikpJy4KLSAgICAgICAgcmV0dXJuICJ1c3RyaW5nVG9TdHJpbmcoJHZh
bHVlLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6ICR2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpIjsKKyAgICAgICAgcmV0dXJuICIkdmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiAk
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIjsKICAgICB9CiAKICAgICBpZiAoJHR5
cGUgZXEgIkRPTU9iamVjdCIpIHsKQEAgLTMxNDQsNyArMzE0NCw3IEBAIHN1YiBOYXRpdmVUb0pT
VmFsdWUKICAgICAgICAgICAgIGRpZSAiVW5rbm93biB2YWx1ZSBmb3IgVHJlYXRSZXR1cm5lZE51
bGxTdHJpbmdBcyBleHRlbmRlZCBhdHRyaWJ1dGUiOwogICAgICAgICB9CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCI8cnVudGltZS9KU1N0cmluZy5oPiIsICRjb25kaXRpb25hbCk7Ci0gICAg
ICAgIHJldHVybiAianNTdHJpbmcoZXhlYywgJHZhbHVlKSI7CisgICAgICAgIHJldHVybiAianNT
dHJpbmdXaXRoQ2FjaGUoZXhlYywgJHZhbHVlKSI7CiAgICAgfQogCiAgICAgbXkgJGdsb2JhbE9i
amVjdDsKQEAgLTM2ODEsNyArMzY4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjCiAgICAg
aWYgKCFleGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJDb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1
dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpOwogCi0gICAgQXRvbWljU3RyaW5nIGV2ZW50
VHlwZSA9IHVzdHJpbmdUb0F0b21pY1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOworICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IGY3MTBiZTE2OTBi
MjQ3MzYxMTA5NzlhNzliMjQ5NGM1ZmIxOTE4YmEuLjg3Yjk2MTgzMzI4YmJhOTFjODFhMWYwMDQ0
NjkwMzFhYTY0NDcxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0y
MDUsNyArMjA1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVE
T01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEUKICAgICBUZXN0QWN0aXZlRE9N
T2JqZWN0KiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdEFjdGl2ZURPTU9iamVjdCo+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOwotICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSh1c3RyaW5nVG9TdHJpbmcoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkg
PyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2suY3BwCmluZGV4IGY4NGY5MTVmZGVkM2ZlMWFjYjhlMTEzYTQ4MGY4MTk4OTlm
NmVlOWEuLjc2MjM0ZDZhMWQ0NTRlMjQ2MzJiYTkzMmQzYzIxMDgzMjJiN2I1NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aENsYXNzMlBhcmFtKENsYXNzMiogY2xhc3MyUGFyYW0sIGNvbnN0IFN0cmluZyYK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZCh0b0pT
KGV4ZWMsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGNsYXNzMlBhcmFtKSk7Ci0gICAgYXJncy5h
cHBlbmQoanNTdHJpbmcoZXhlYywgc3RyQXJnKSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgc3RyQXJnKSk7CiAKICAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZh
bHNlOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgJnJhaXNlZEV4Y2VwdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA5NmY4N2FiMDQ4NTE1
YTczZmNiYmM3MGU4YzE0MmVlMGE5Y2U3ZDYyLi5iMTFhNjM3YmNiZTgxNGE4YmM1NTU4ZTQzZGNk
ZTQ2NTY0Yzg0OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuYwogICAgIFRlc3RDdXN0b21O
YW1lZEdldHRlciogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RDdXN0b21OYW1lZEdldHRlcio+KGNh
c3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyKHVzdHJpbmdUb1N0cmluZyhNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHko
KSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3Ry
aW5nJiBzdHIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC0+YW5vdGhlckZ1bmN0aW9uKHN0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDhkYTM1ODY4ZDg3YWZlMTQzZTU5
MWU4MWMxMTRkNmEwOWMxYWU3NC4uZGVmMzg0ZDRlNWEyNDg3NmYyODRiYjVjODBjMDgwYmU4MWUw
ODg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtODUsNyArODUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0RQogICAgIGlmICghZXhlY3V0aW9uQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihl
eGVjLCAiQ29uc3RydWN0b3IgYXNzb2NpYXRlZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWls
YWJsZSIpKTsKIAotICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSB1c3RyaW5nVG9BdG9taWNT
dHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAg
ICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTg1LDcgKzE4NSw3
IEBAIEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOCiAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvciog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEV2ZW50Q29uc3RydWN0
b3IqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBpbXBsLT5hdHRy
MSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwt
PmF0dHIxKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBK
U1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TgogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBp
bXBsID0gc3RhdGljX2Nhc3Q8VGVzdEV2ZW50Q29uc3RydWN0b3IqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+YXR0cjIoKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5hdHRy
MigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApp
bmRleCA0Y2Y5NWM5Y2Y1MzdhY2Y1MmY0ZWY4ZjgzMzcwZDM4OTVkOTUyYWEwLi4xYzY0ODUxMzIx
NTdiZDIwNTA4MTVmMzdjZjkyZjkzMTFiZjY5YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKAogICAgIEpTVmFs
dWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIWxpc3RlbmVyLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgaW1wbC0+YWRkRXZlbnRMaXN0ZW5lcih1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpj
cmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRUaGlzLCBmYWxzZSwgY3VycmVudFdvcmxk
KGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsLT5h
ZGRFdmVudExpc3RlbmVyKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRU
aGlzLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMikudG9Cb29s
ZWFuKGV4ZWMpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC0yNjgsNyArMjY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW4KICAgICBKU1Zh
bHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGltcGwtPnJlbW92ZUV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRX
b3JsZChleGVjKSkuZ2V0KCksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7Cisg
ICAgaW1wbC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3Rl
bmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSkuZ2V0KCksIGV4ZWMt
PmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA0NTgyYWNh
MWZhNGMwZjdiNDM1ODE0N2NlN2EyMDJmN2FmMDA4ZDM5Li5lNjlkNmEwNTZiYjc1YjQwNjhkZDQ1
NGVlZDc3MjliNTljNDUxMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTM3LDcgKzEz
Nyw3IEBAIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKICAgICBKU1Rlc3RFeGNlcHRpb24qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEV4Y2VwdGlvbiogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RFeGNlcHRpb24qPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+bmFtZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPm5hbWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAwZTM5YzQxZWU4ZDcxODJiOWE4ZmMwYWUy
NDAyNzAwYTU1ZTM5M2YwLi5kNDZkNDdjN2FiYzNlZGQ0OTQ2ODUyOTJiMmQ3YjNiNDI3YjJjMGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTMyLDEwICsxMzIsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNUZXN0SW50ZXJmYWMKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29uc3QgU3RyaW5nJiBz
dHIxKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHIxKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0
cmluZyYgc3RyMih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MSwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyMihNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygp
IDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpz
dXBwbGVtZW50YWxTdGF0aWNBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0cigp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNjksNyArMjY5LDcgQEAgSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGUKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZh
Y2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmco
ZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMShpbXBsKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpz
dXBwbGVtZW50YWxTdHIxKGltcGwpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yODEs
NyArMjgxLDcgQEAgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGUKICAgICBKU1Rlc3RJbnRlcmZhY2Uq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFs
U3RyMihpbXBsKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIyKGltcGwpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2U6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmEK
IHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKLSAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdGF0
aWNBdHRyKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpz
ZXRTdXBwbGVtZW50YWxTdGF0aWNBdHRyKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKIH0KIAogI2VuZGlmCkBAIC0zMzgsNyAr
MzM4LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEoKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KHRoaXNPYmplY3QpOwogICAgIFRlc3RJbnRlcmZhY2UqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBUZXN0U3VwcGxlbWVudGFs
OjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcGwsIHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5
KCkgPyBVU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAg
ICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcGwsIHZhbHVlLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKIH0K
IAogI2VuZGlmCkBAIC0zOTgsNyArMzk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3Ry
aW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkp
OworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFy
Zyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGVlZWY2
NmE0NGVhYWMzOTM1ZjNiODgwYjlmZTYyMGExNDRjNWE4MDkuLjE2YzM0NTdiOWUwODhhYWQwOTUz
YmFjYTg5YjNmODdkZDIzYjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTkzLDEzICs5MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKUwogICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBjb25zdCBTdHJpbmcmIHN0cjEodXN0cmluZ1RvU3RyaW5nKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgp
ID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJp
bmcmIHN0cjEoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHIyKHVzdHJpbmdUb1N0cmlu
ZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlz
RW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERl
ZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29u
c3QgU3RyaW5nJiBzdHIyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJ
c1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyMyh1c3RyaW5n
VG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMiwgRGVmYXVsdElzTnVsbFN0
cmluZykuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7
CisgICAgY29uc3QgU3RyaW5nJiBzdHIzKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIs
IERlZmF1bHRJc051bGxTdHJpbmcpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgUmVmUHRyPFRlc3ROYW1l
ZENvbnN0cnVjdG9yPiBvYmplY3QgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9ySlND
b25zdHJ1Y3RvcihjYXN0ZWRUaGlzLT5kb2N1bWVudCgpLCBzdHIxLCBzdHIyLCBzdHIzLCBlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IGMxNzYxNDM2ODExNjFhNDllNTAzOWMxNzc0YWIyMzVjZjlkMDQ0NDQu
LmZhZTg2ZDA4ZjllNzc5YTE1ZWIzMzY5MDdiMTgwYmI2NjdiMWZlOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU4KICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmcoZXhlYywgaW1wbC0+cmVhZE9ubHlTdHJpbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+cmVhZE9ubHlTdHJpbmdBdHRyKCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQyOSw3ICs0MjksNyBAQCBKU1ZhbHVlIGpzVGVz
dE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFS
QU0oZXhlYyk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBUZXN0T2JqOjpz
dGF0aWNTdHJpbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoZXhlYywgVGVzdE9iajo6c3RhdGljU3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC00OTYsNyArNDk2LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZyhleGVjLCBpbXBsLT5zdHJpbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+c3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC01MzYsNyArNTM2LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHkK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiogaW1wbCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+Z2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtNTc2LDcgKzU3Niw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtCiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nKGV4ZWMsIGltcGwtPmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVybGF0dHJBdHRyKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShleGVjLCBpbXBsLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWR1cmxhdHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU4Niw3ICs1ODYs
NyBAQCBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBpbXBs
LT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0
ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGlt
cGwtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdB
dHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTYxNiw3ICs2MTYsNyBAQCBK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBpbXBsLT5nZXRV
UkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmdl
dFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0
cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBKU1ZhbHVl
IGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+c3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkBAIC02NjgsNyArNjY4LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5z
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC05MzYsNyArOTM2LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVj
LCBpbXBsLT5oYXNoKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgaW1wbC0+aGFzaCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC05NjcsNyAr
OTY3LDcgQEAgdm9pZCBKU1Rlc3RPYmo6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlMKIHZvaWQgc2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICBUZXN0T2JqOjpzZXRTdGF0
aWNTdHJpbmdBdHRyKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBUZXN0T2JqOjpzZXRT
dGF0aWNTdHJpbmdBdHRyKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKIH0KIAogCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwot
ICAgIGltcGwtPnNldFN0cmluZ0F0dHIodXN0cmluZ1RvU3RyaW5nKHZhbHVlLmlzRW1wdHkoKSA/
IFVTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGlt
cGwtPnNldFN0cmluZ0F0dHIodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogfQogCiAKQEAgLTExNzAsNyArMTE3MCw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpbXBsLT5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih1c3RyaW5nVG9T
dHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSwgZWMpOworICAgIGltcGwtPnNldFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIH0KIApA
QCAtMTE4MSw3ICsxMTgxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2IKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwtPnNldFN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBlYyk7CisgICAgaW1wbC0+c2V0
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24odmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwogfQogCkBAIC0xNDMzLDcgKzE0MzMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhB
cmdzKEV4ZWNTdAogICAgIGxvbmcgbG9uZyBBcmcoc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvSW50ZWdl
cihleGVjKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFy
Zyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVs
dElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoq
IG9iakFyZyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMiwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOwpAQCAtMTQ2OSw3ICsxNDY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdzKEV4ZWNT
dGF0ZSoKICAgICBsb25nIGxvbmcgQXJnKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0ludGVnZXIoZXhl
YykpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0
cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
ZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
KTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpB
cmcodG9UZXN0T2JqKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKTsKQEAgLTE1MDYsNyArMTUwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3Rh
CiAgICAgbG9uZyBsb25nIEFyZyhzdGF0aWNfY2FzdDxsb25nIGxvbmc+KE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9JbnRlZ2VyKGV4ZWMpKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdU
b1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cisg
ICAgY29uc3QgU3RyaW5nJiBzdHJBcmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwg
RGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnKHRv
VGVzdE9iaihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAyLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSk7CkBAIC0xNTYzLDcgKzE1NjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncwogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJp
bmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5p
c0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNv
bnN0IFN0cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RP
YmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
OwpAQCAtMTY4MSw3ICsxNjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXQKICAgICBKU1Zh
bHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGltcGwtPmFkZEV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3Js
ZChleGVjKSksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wbC0+
YWRkRXZlbnRMaXN0ZW5lcihleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVk
VGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9v
bGVhbihleGVjKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtMTY5Niw3ICsxNjk2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKICAgICBK
U1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIGltcGwtPnJlbW92ZUV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJl
bnRXb3JsZChleGVjKSkuZ2V0KCksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7
CisgICAgaW1wbC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxp
c3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSkuZ2V0KCksIGV4
ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTkzOSw3ICsxOTM5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZygKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJpbmcoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5
KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0
cmluZyYgc3RyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhz
dHIpOwpAQCAtMTk1NCw3ICsxOTU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0
T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJp
bmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5p
c0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNv
bnN0IFN0cmluZyYgc3RyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0lzVW5kZWZpbmVkKHN0cik7CkBAIC0xOTY5LDcgKzE5NjksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIGNvbnN0IFN0cmluZyYg
c3RyKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNOdWxsU3RyaW5nKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNOdWxsU3RyaW5nKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cihNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNOdWxsU3RyaW5nKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc051bGxTdHJpbmcpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwt
Pm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyhzdHIpOwpAQCAtMjA0Nyw3ICsy
MDQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMShFeGVjU3QKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1w
bCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogCi0gICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcGwtPmNvbmRpdGlvbmFsTWV0aG9k
MSgpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
aW1wbC0+Y29uZGl0aW9uYWxNZXRob2QxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIApAQCAtMjA5Niw3ICsyMDk2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
MSgKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygp
IDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVs
dElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgc3RyQXJnKTsKQEAg
LTIxNDAsNyArMjE0MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoCiAgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBjb25zdCBT
dHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3Ry
aW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2Qoc3RyQXJnKTsKQEAgLTIzNDgsNyArMjM0OCw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIGNvbnN0IFN0cmluZyYgdHlwZSh1c3RyaW5nVG9T
dHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAg
IGNvbnN0IFN0cmluZyYgdHlwZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqOjpvdmVybG9hZGVkTWV0
aG9kMSh0eXBlKTsKQEAgLTI1NzEsNyArMjU3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUq
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGNvbnN0IFN0cmluZyYgc3RyKHVzdHJpbmdUb1N0
cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
LmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAg
Y29uc3QgU3RyaW5nJiBzdHIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgZmxvYXQgYShNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvRmxvYXQoZXhlYykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAppbmRleCBkN2Y5YTM3Yzg3M2FlNjk0ZDE4M2Q5OWJhMjBlNDZiNDM3NzYxZDdjLi5hOGMwZjZi
Yjc5MjJlNTI1MDRhMmVlNjQ2MDJkM2MxZTI0ZGFjYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtOTIsNyArOTIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjbwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBj
b25zdCBTdHJpbmcmIGhlbGxvKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBoZWxsbyhNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERl
ZmF1bHRJc1VuZGVmaW5lZCksIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9JZGVudGlmaWVyUmVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVy
UmVwLmNwcAppbmRleCAyYWNmMTQxNTNkMWRiOWUxMmI3MjU1OGE1Mzg4ZDk4NmZmOGE1ZTg1Li4x
ZjE3NmZjOGMyMDczZjc4YzA5MGEwZjY2MjAxMDgxYmIwN2NkODg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHJ1
bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCkBAIC05Miw3ICs5Miw3IEBAIElkZW50aWZpZXJSZXAqIElkZW50
aWZpZXJSZXA6OmdldChjb25zdCBjaGFyKiBuYW1lKQogICAgIGlmICghbmFtZSkKICAgICAgICAg
cmV0dXJuIDA7CiAgIAotICAgIFVTdHJpbmcgc3RyaW5nID0gc3RyaW5nVG9VU3RyaW5nKFN0cmlu
Zzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgc3RybGVuKG5hbWUpKSk7CisgICAg
U3RyaW5nIHN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwg
c3RybGVuKG5hbWUpKTsKICAgICBTdHJpbmdJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gc3RyaW5nSWRlbnRpZmllck1hcCgpLmFkZChzdHJpbmcuaW1wbCgpLCAwKTsKICAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCA2MWUzNjc5NTYx
YTYzZTRlM2NmNWJlNGQwODk2NzIzMTM3ZjYzMmM3Li5mYmY1NDE5NGJjMTc1NWFhY2E3NWQ2ZjRh
YzlmZTdiZDUwNDllNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNv
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAg
LTQzMyw3ICs0MzMsNyBAQCBib29sIF9OUE5fSGFzTWV0aG9kKE5QUCwgTlBPYmplY3QqIG8sIE5Q
SWRlbnRpZmllciBtZXRob2ROYW1lKQogdm9pZCBfTlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCos
IGNvbnN0IE5QVVRGOCogbWVzc2FnZSkKIHsKICAgICAvLyBJZ25vcmluZyB0aGUgTlBPYmplY3Qg
cGFyYW0gaXMgY29uc2lzdGVudCB3aXRoIHRoZSBNb3ppbGxhIGltcGxlbWVudGF0aW9uLgotICAg
IFVTdHJpbmcgZXhjZXB0aW9uKG1lc3NhZ2UpOworICAgIFN0cmluZyBleGNlcHRpb24obWVzc2Fn
ZSk7CiAgICAgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oZXhjZXB0aW9uKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAppbmRleCBjZmMwMjZiMjhjYjlmZWI2NTMzNTc2
ZWJlODIzNjU4ZjM5NWM3YmI3Li5jZTVmZDU0ODlkYzU2ZDczZTA3ZjAzNDllYWJiZDMzZTRiOWNl
OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcApAQCAtNzMsNyArNzMsNyBAQCBD
Q2xhc3MqIENDbGFzczo6Y2xhc3NGb3JJc0EoTlBDbGFzcyogaXNhKQogCiBNZXRob2RMaXN0IEND
bGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBp
bnN0YW5jZSkgY29uc3QKIHsKLSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAg
CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogCkBAIC05Nyw3ICs5Nyw3IEBAIE1ldGhvZExp
c3QgQ0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFu
Y2UqIGluc3RhbmNlKSBjCiAKIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewotICAgIFVTdHJpbmcg
bmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTdHJpbmcgbmFtZShwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKICAgICAKICAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5n
ZXQobmFtZS5pbXBsKCkpOwogICAgIGlmIChhRmllbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
aW5zdGFuY2UuY3BwCmluZGV4IDViOThmNmVlMTk0ZDE1Y2ZmZjI3ZTIyZDRmNzdiYTkwMmFlYTRk
OTAuLjIwMWM2MWU4NjExZTMzOTNkNGZmOTgxZjhlNTdlMjAxOWNkY2MzOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCkBAIC01NCwxNSArNTQsMTMgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAK
LXVzaW5nIEpTQzo6VVN0cmluZzsKLQotc3RhdGljIEpTQzo6VVN0cmluZyYgZ2xvYmFsRXhjZXB0
aW9uU3RyaW5nKCkKK3N0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU0M6OlVTdHJpbmcsIGV4Y2VwdGlvblN0ciwgKCkpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBleGNlcHRpb25TdHIsICgpKTsKICAgICBy
ZXR1cm4gZXhjZXB0aW9uU3RyOwogfQogCi12b2lkIENJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0
aW9uKFVTdHJpbmcgZXhjZXB0aW9uKQordm9pZCBDSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlv
bihTdHJpbmcgZXhjZXB0aW9uKQogewogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gZXhj
ZXB0aW9uOwogfQpAQCAtNzcsNyArNzUsNyBAQCB2b2lkIENJbnN0YW5jZTo6bW92ZUdsb2JhbEV4
Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0K
IAotICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gVVN0cmluZygpOworICAgIGdsb2JhbEV4
Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CiB9CiAKIENJbnN0YW5jZTo6Q0luc3RhbmNlKE5Q
T2JqZWN0KiBvLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QpCkBAIC0xMTMsNyAr
MTExLDcgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBSdW50aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgQ1J1
bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0
KQorICAgIHN0YXRpYyBDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6
TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBv
YmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2Jq
ZWN0IGZvciAiaSIuCkBAIC0xMzYsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5o
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCmluZGV4IDYxZTM0OTExYjgx
NTQzNzIyNjhiMTdmNTM1Mzg4ZmU5M2NmMDEwM2MuLmRkYWMwYzI2YzY3MGVhZDhlOWIyNjY2ZDU3
ZTdlMWY1MGNmNjhmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5z
dGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgKQEAgLTMx
LDEzICszMSwxMiBAQAogI2luY2x1ZGUgIkJyaWRnZUpTQy5oIgogI2luY2x1ZGUgInJ1bnRpbWVf
cm9vdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIHR5cGVkZWYgc3RydWN0IE5QT2JqZWN0IE5QT2JqZWN0OwogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgVVN0cmluZzsKLQogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAog
Y2xhc3MgQ0NsYXNzOwpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ0luc3RhbmNlKG9iamVjdCwgcm9vdE9iamVjdCkpOwogICAgIH0KIAotICAg
IHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihKU0M6OlVTdHJpbmcgZXhjZXB0aW9uKTsK
KyAgICBzdGF0aWMgdm9pZCBzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW5nKTsKICAgICBzdGF0aWMg
dm9pZCBtb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0YXRlKik7CiAKICAgICB+
Q0luc3RhbmNlICgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGls
aXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggMzA4
YWY1YWZkYzVkZDVmMDExZDY4NDJhODkwMWQwMzdiMTNkNTExMy4uNWZlY2M1YzI1MGVjOGViZWMy
MTY0NWY1MDJhMmVjYjI1MmYzYzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHku
Y3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBOUFZhcmlhbnQqIHJlc3VsdCkKICAgICBWT0lEX1RP
X05QVkFSSUFOVCgqcmVzdWx0KTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgIFVTdHJpbmcgdXN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICAgICAgU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgICAgIENTdHJpbmcgY3N0cmluZyA9IHVzdHJpbmcudXRmOCgpOwogICAgICAgICBO
UFN0cmluZyBzdHJpbmcgPSB7IChjb25zdCBOUFVURjgqKWNzdHJpbmcuZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oY3N0cmluZy5sZW5ndGgoKSkgfTsKICAgICAgICAgTlBOX0luaXRpYWxp
emVWYXJpYW50V2l0aFN0cmluZ0NvcHkocmVzdWx0LCAmc3RyaW5nKTsKQEAgLTEyMiw3ICsxMjIs
NyBAQCBKU1ZhbHVlIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgTlBWYXJpYW50KiB2YXJpYW50LCBSb290TwogICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5
cGVfRG91YmxlKQogICAgICAgICByZXR1cm4ganNOdW1iZXIoTlBWQVJJQU5UX1RPX0RPVUJMRSgq
dmFyaWFudCkpOwogICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfU3RyaW5nKQotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6anNTdHJpbmcoZXhlYywgY29udmVydE5QU3RyaW5nVG9VVEYxNigm
dmFyaWFudC0+dmFsdWUuc3RyaW5nVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ompz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoJnZhcmlhbnQtPnZh
bHVlLnN0cmluZ1ZhbHVlKSk7CiAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmplY3Qp
IHsKICAgICAgICAgTlBPYmplY3QqIG9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVlOwog
ICAgICAgICAKQEAgLTE0NCw3ICsxNDQsNyBAQCBTdHJpbmcgY29udmVydE5QU3RyaW5nVG9VVEYx
Nihjb25zdCBOUFN0cmluZyogc3RyaW5nKQogCiBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tTlBJ
ZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTlBVVEY4KiBuYW1lKQogewotICAgIHJl
dHVybiBJZGVudGlmaWVyKGV4ZWMsIFdlYkNvcmU6OnN0cmluZ1RvVVN0cmluZyhjb252ZXJ0VVRG
OFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEpKSk7CisgICAgcmV0dXJuIElkZW50
aWZpZXIoZXhlYywgY29udmVydFVURjhUb1VURjE2V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIC0x
KSk7CiB9CiAKIH0gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlf
anNvYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQpp
bmRleCBiNWE3ZDIyMGIzYTEzZmIzM2FjNTJkNjNmMWZlNGVkYTVjNjk4OWNiLi5hMTlkMzQzNDli
NTQzNzk3YjQyOTVkY2NmMzAxYTNmOTBmOTY0ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL2puaV9qc29iamVjdC5tbQpAQCAtNDg4LDcgKzQ4OCw3IEBAIGpvYmplY3QgSmF2YUpTT2Jq
ZWN0Ojpjb252ZXJ0VmFsdWVUb0pPYmplY3QoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICAgICAg
ICAgIHJlc3VsdCA9IGVudi0+TmV3T2JqZWN0IChKU09iamVjdENsYXNzLCBjb25zdHJ1Y3RvcklE
LCAoamRvdWJsZSl2YWx1ZS50b051bWJlcihleGVjKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgVVN0cmluZyBzdHJpbmdWYWx1ZSA9IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZ1Zh
bHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBKTklFbnYg
KmVudiA9IGdldEpOSUVudigpOwogICAgICAgICByZXN1bHQgPSBlbnYtPk5ld1N0cmluZyAoKGNv
bnN0IGpjaGFyICopc3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5ndGgo
KSk7CiAgICAgfSBlbHNlIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JVXRpbGl0eVByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JVXRpbGl0eVByaXZhdGUuY3BwCmluZGV4IGEzYjJj
MmU3ZGZlMjEwMTBkYTM1NmE5ZDYwY2E0ZGUxMzVlYmYwNzkuLjM3NmIwMmE0NGY4N2U2NzU5MmI5
NWNhNmMwZmQ3ODEyYjhkNzYxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvanNjL0pOSVV0aWxpdHlQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL2pzYy9KTklVdGlsaXR5UHJpdmF0ZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGpv
YmplY3QgY29udmVydEFycmF5SW5zdGFuY2VUb0phdmFBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpT
QXJyYXkqIGpzQXJyYXkKICAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoIiIp
KTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMs
IGkpOwotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRlbS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHJp
bmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICAgICAg
ICAgICAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChqYXJyYXksIGksCiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFy
ICopc3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5ndGgoKSkpOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIGpvYmplY3QgY29udmVydEFy
cmF5SW5zdGFuY2VUb0phdmFBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGpzQXJyYXkK
ICAgICAgICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdDaGFyQXJyYXkobGVu
Z3RoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewogICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsK
LSAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRlbS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRl
bS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgamNoYXIgdmFs
dWUgPSAwOwogICAgICAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZS5sZW5ndGgoKSA+IDApCiAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKChjb25zdCBqY2hhciopc3RyaW5nVmFsdWUuY2hh
cmFjdGVycygpKVswXTsKQEAgLTIxOSw3ICsyMTksNyBAQCBqdmFsdWUgY29udmVydFZhbHVlVG9K
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBSb290T2JqZWN0KiByb290T2JqZWN0LCBKU1ZhbHVlIHZh
bAogICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFwcHJvcHJpYXRlIEphdmEgb2JqZWN0IGlmIHRh
cmdldCB0eXBlIGlzIGphdmEubGFuZy5PYmplY3QuCiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5s
ICYmICFzdHJjbXAoamF2YUNsYXNzTmFtZSwgImphdmEubGFuZy5PYmplY3QiKSkgewogICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFVT
dHJpbmcgc3RyaW5nVmFsdWUgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMpOworICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVl
KGV4ZWMpOwogICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGVudiA9IGdldEpOSUVudigpOwog
ICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBlbnYtPmZ1bmN0aW9ucy0+
TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFyKilzdHJpbmdWYWx1ZS5jaGFyYWN0ZXJzKCksIHN0
cmluZ1ZhbHVlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBqYXZh
U3RyaW5nOwpAQCAtMjM4LDcgKzIzOCw3IEBAIGp2YWx1ZSBjb252ZXJ0VmFsdWVUb0pWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFJvb3RPYmplY3QqIHJvb3RPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAg
ICAgICAgICAgICAgICAgIGpvYmplY3QgamF2YUJvb2xlYW4gPSBlbnYtPmZ1bmN0aW9ucy0+TmV3
T2JqZWN0KGVudiwgY2xhenosIGNvbnN0cnVjdG9yLCBib29sVmFsdWUpOwogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQubCA9IGphdmFCb29sZWFuOwogICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0
cmluZ1ZhbHVlID0gInVuZGVmaW5lZCI7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHJp
bmdWYWx1ZSA9ICJ1bmRlZmluZWQiOwogICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGVudiA9
IGdldEpOSUVudigpOwogICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBl
bnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFyKilzdHJpbmdWYWx1ZS5j
aGFyYWN0ZXJzKCksIHN0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmwgPSBqYXZhU3RyaW5nOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIGp2YWx1ZSBjb252ZXJ0
VmFsdWVUb0pWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFJvb3RPYmplY3QqIHJvb3RPYmplY3QsIEpT
VmFsdWUgdmFsCiAgICAgICAgICAgICAvLyBjb252ZXJ0aW5nIGZyb20gYSBudWxsLgogICAgICAg
ICAgICAgaWYgKCFyZXN1bHQubCAmJiAhc3RyY21wKGphdmFDbGFzc05hbWUsICJqYXZhLmxhbmcu
U3RyaW5nIikpIHsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICAgICAg
Sk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKICAgICAgICAgICAgICAgICAgICAgam9iamVjdCBq
YXZhU3RyaW5nID0gZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIChjb25zdCBqY2hhciop
c3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5ndGgoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFGaWVsZEpTQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvam5pL2pzYy9KYXZhRmllbGRKU0MuY3BwCmluZGV4IDFlYmYxZTYxNzUzMDk2ZTA5OTI4
MWVlNGYwMGM3ODJhMThkYjYwZmIuLmM4NzE3NTUzMTllZTEwY2Q3ODQ2OTk5NjYzMWFiNTVmMGM2
M2RmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFGaWVs
ZEpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUZpZWxkSlND
LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEpTVmFsdWUgSmF2YUZpZWxkOjp2YWx1ZUZyb21JbnN0
YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpKSBjb25zdAogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhRmllbGQ6OnZhbHVlRnJv
bUluc3RhbmNlIGdldHRpbmcgJXMgPSAlcyIsIFVTdHJpbmcobmFtZSgpLmltcGwoKSkudXRmOCgp
LmRhdGEoKSwganNyZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNl
IGdldHRpbmcgJXMgPSAlcyIsIFN0cmluZyhuYW1lKCkuaW1wbCgpKS51dGY4KCkuZGF0YSgpLCBq
c3Jlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKS5kYXRhKCkpOwogCiAg
ICAgcmV0dXJuIGpzcmVzdWx0OwogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSmF2YUZpZWxk
OjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaSwg
SlNWYWx1ZSBhCiAgICAgY29uc3QgSmF2YUluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0
PGNvbnN0IEphdmFJbnN0YW5jZSo+KGkpOwogICAgIGp2YWx1ZSBqYXZhVmFsdWUgPSBjb252ZXJ0
VmFsdWVUb0pWYWx1ZShleGVjLCBpLT5yb290T2JqZWN0KCksIGFWYWx1ZSwgbV90eXBlLCB0eXBl
Q2xhc3NOYW1lKCkpOwogCi0gICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUZpZWxkOjpzZXRWYWx1
ZVRvSW5zdGFuY2Ugc2V0dGluZyB2YWx1ZSAlcyB0byAlcyIsIFVTdHJpbmcobmFtZSgpLmltcGwo
KSkudXRmOCgpLmRhdGEoKSwgYVZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5hc2Np
aSgpLmRhdGEoKSk7CisgICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUZpZWxkOjpzZXRWYWx1ZVRv
SW5zdGFuY2Ugc2V0dGluZyB2YWx1ZSAlcyB0byAlcyIsIFN0cmluZyhuYW1lKCkuaW1wbCgpKS51
dGY4KCkuZGF0YSgpLCBhVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmFzY2lpKCku
ZGF0YSgpKTsKIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBKYXZhVHlwZUFycmF5
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNl
SlNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5j
cHAKaW5kZXggMTVkZmZhNWFkNTY0MjQ5NjEwNjA3Y2VjMDhjMzE4ZTU1OGQwODNmNS4uYjJkYmUw
ZTgzN2M5NWU4M2U2MmY2YWJlOTk5OTE5ZTVlZjk0OGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCkBAIC05MywxMSArOTMsMTEg
QEAgSlNWYWx1ZSBKYXZhSW5zdGFuY2U6OnN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIAogICAgIC8vIFNob3VsZCB0aHJvdyBhIEpTIGV4Y2VwdGlvbiwgcmF0aGVyIHRoYW4gcmV0
dXJuaW5nICIiPyAtIGJ1dCBiZXR0ZXIgdGhhbiBhIG51bGwgZGVyZWZlcmVuY2UuCiAgICAgaWYg
KCFzdHJpbmdWYWx1ZSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmcoKSk7
CisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmcoKSk7IC8vIEZJWE1FOiB3aHkg
bm90IGpzRW1wdHlTdHJpbmcoZXhlYyk/CiAKICAgICBKTklFbnYqIGVudiA9IGdldEpOSUVudigp
OwogICAgIGNvbnN0IGpjaGFyKiBjID0gZ2V0VUNoYXJhY3RlcnNGcm9tSlN0cmluZ0luRW52KGVu
diwgc3RyaW5nVmFsdWUpOwotICAgIFVTdHJpbmcgdSgoY29uc3QgVUNoYXIqKWMsIChpbnQpZW52
LT5HZXRTdHJpbmdMZW5ndGgoc3RyaW5nVmFsdWUpKTsKKyAgICBTdHJpbmcgdSgoY29uc3QgVUNo
YXIqKWMsIChpbnQpZW52LT5HZXRTdHJpbmdMZW5ndGgoc3RyaW5nVmFsdWUpKTsKICAgICByZWxl
YXNlVUNoYXJhY3RlcnNGb3JKU3RyaW5nSW5FbnYoZW52LCBzdHJpbmdWYWx1ZSwgYyk7CiAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHUpOwogfQpAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIEph
dmFSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHR5
cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIEphdmFSdW50aW1lTWV0aG9k
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0
aWMgSmF2YVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExp
c3QmIGxpc3QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3Ig
ImkiLgpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
QEAgLTE4Nyw3ICsxODcsNyBAQCBKU1ZhbHVlIEphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZAogICAgIH0KIAogICAg
IGNvbnN0IEphdmFNZXRob2QqIGpNZXRob2QgPSBzdGF0aWNfY2FzdDxjb25zdCBKYXZhTWV0aG9k
Kj4obWV0aG9kKTsKLSAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhSW5zdGFuY2U6Omludm9rZU1l
dGhvZCBjYWxsICVzICVzIG9uICVwIiwgVVN0cmluZyhqTWV0aG9kLT5uYW1lKCkuaW1wbCgpKS51
dGY4KCkuZGF0YSgpLCBqTWV0aG9kLT5zaWduYXR1cmUoKSwgbV9pbnN0YW5jZS0+aW5zdGFuY2Uo
KSk7CisgICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUluc3RhbmNlOjppbnZva2VNZXRob2QgY2Fs
bCAlcyAlcyBvbiAlcCIsIFN0cmluZyhqTWV0aG9kLT5uYW1lKCkuaW1wbCgpKS51dGY4KCkuZGF0
YSgpLCBqTWV0aG9kLT5zaWduYXR1cmUoKSwgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKSk7CiAKICAg
ICBWZWN0b3I8anZhbHVlPiBqQXJncyhjb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaAppbmRleCAxZTE4MDNhYTE0NGEwMDRiYTk2Y2UyYmM5
ZGQ3NzQxOWZjYjQzM2Y5Li4xY2M1NDc0YTNkY2U2MmM2OTcxZmJlMTgwMGUxOTBmZjJlYzMxYzBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhU3RyaW5nSlND
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pTQy5oCkBA
IC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAgICBKYXZhU3RyaW5nKCkKICAgICB7CiAgICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9i
YWxEYXRhKCkpOwotICAgICAgICBtX2ltcGwgPSBVU3RyaW5nKCkuaW1wbCgpOwogICAgIH0KIAog
ICAgIH5KYXZhU3RyaW5nKCkKQEAgLTY3LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKCFtX3V0ZjhTdHJpbmcuZGF0YSgpKSB7CiAgICAgICAgICAgICBKU0xvY2tIb2xkZXIg
bG9jayhXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLSAg
ICAgICAgICAgIG1fdXRmOFN0cmluZyA9IFVTdHJpbmcobV9pbXBsKS51dGY4KCk7CisgICAgICAg
ICAgICBtX3V0ZjhTdHJpbmcgPSBTdHJpbmcobV9pbXBsKS51dGY4KCk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG1fdXRmOFN0cmluZy5kYXRhKCk7CiAgICAgfQpAQCAtODEsNyArODAsNyBA
QCBwcml2YXRlOgogICAgICAgICBjb25zdCBqY2hhciogdWMgPSBnZXRVQ2hhcmFjdGVyc0Zyb21K
U3RyaW5nSW5FbnYoZSwgcyk7CiAgICAgICAgIHsKICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOwotICAg
ICAgICAgICAgbV9pbXBsID0gVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
dWMpLCBzaXplKS5pbXBsKCk7CisgICAgICAgICAgICBtX2ltcGwgPSBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVQ2hhcio+KHVjKSwgc2l6ZSkuaW1wbCgpOwogICAgICAgICB9CiAgICAg
ICAgIHJlbGVhc2VVQ2hhcmFjdGVyc0ZvckpTdHJpbmdJbkVudihlLCBzLCB1Yyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KaW5kZXggMmQwODcwNDU4MWU3
YmFmNDkyZWNlNzkwOWJjNzM0Y2MyZTA3YjY0YS4uYmNiZDdlN2JjN2ZjY2E4MzM4YWMzMjRlMGU2
ZWYyN2M1MDc0Y2RmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1t
CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb252ZXJ0SlNNZXRob2ROYW1l
VG9PYmpjKGNvbnN0IENTdHJpbmcmIGpzTmFtZSwgSlNOYW1lQ29udmVyCiAKIE1ldGhvZExpc3Qg
T2JqY0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFu
Y2UqKSBjb25zdAogewotICAgIFVTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICBTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAo
bmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKIApAQCAtMTQ5LDcg
KzE0OSw3IEBAIE1ldGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogCiBGaWVsZCogT2JqY0NsYXNzOjpmaWVs
ZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29u
c3QKIHsKLSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
U3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5tbQppbmRleCA4YTk3YjdkZThiZDEwYWMzMzIyMDBjYjY1OWEyZDEzNTM0
ZDc0NGQxLi40ZjViZWNhYWRiY2ExNzUxOGNjNjgwNGVhZGE1YjkxNTU4MzQ4NDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAgLTE4MSw3ICsxODEs
NyBAQCBib29sIE9iamNJbnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29u
c3QKIAogY2xhc3MgT2JqQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBC
aW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRob2Qq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewogICAg
ICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5
cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8g
cGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgpAQCAtMjA2LDcgKzIwNiw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsK
ICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTQwMyw3ICs0MDMsNyBAQCBK
U1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMp
CiAKIGJvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGFWYWx1ZSkKIHsKLSAg
ICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIG5h
bWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgT2JqY0luc3Rh
bmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVyCiAKIEpTVmFsdWUgT2JqY0luc3RhbmNlOjpnZXRWYWx1ZU9mVW5kZWZpbmVkRmll
bGQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewot
ICAgIFVTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTdHJpbmcg
bmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmgKaW5kZXggMWQxNjA0MGM3NGEzMjM3ZjI4NGJhMzI1MjgwYjRhMTk2
NDZmZDM2Ny4uMGRjMmI4MzQ4Y2IwOWViZjg2YTUwZDNhNTIyMjNkYmNjYWNiNWI3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTk0LDcgKzk0LDcgQEAg
Y2xhc3MgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGlj
IE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29uc3QgVVN0cmlu
ZyYgcHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iamNJbnN0
YW5jZSogaW5zdGFuY2UsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBl
IG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0
cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqY0ZhbGxiYWNr
T2JqZWN0SW1wPihleGVjKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIF9pdGVtOyB9CisgICAgY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2l0ZW07IH0KIAogICAgIHN0YXRpYyBPYmplY3RQcm90
b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIHsKQEAgLTEyMSw3ICsxMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgotICAgIE9iamNGYWxs
YmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSos
IGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSk7CisgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0b0Jvb2xl
YW4oRXhlY1N0YXRlKikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9rZW4g
YmVjYXVzZSBub25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBXZSBu
ZWVkIHRvIHNvbHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgogCiAgICAgUmVmUHRyPE9iamNJ
bnN0YW5jZT4gX2luc3RhbmNlOwotICAgIFVTdHJpbmcgX2l0ZW07CisgICAgU3RyaW5nIG1faXRl
bTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMzM1NjY4ZWM2MzVhZjE3NTc2MzkxYzE1YjEzYmY2
M2VmYTQ5MzgxYS4uZGIzZjk4ZTY1YjFlMzM3MjdiODYzZmEzOWQzZDVjNjJlNTNiOTQ4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMTkwLDEwICsx
OTAsMTAgQEAgdW5zaWduZWQgaW50IE9iamNBcnJheTo6Z2V0TGVuZ3RoKCkgY29uc3QKIAogY29u
c3QgQ2xhc3NJbmZvIE9iamNGYWxsYmFja09iamVjdEltcDo6c19pbmZvID0geyAiT2JqY0ZhbGxi
YWNrT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShPYmpjRmFsbGJhY2tPYmplY3RJbXApIH07CiAKLU9iamNGYWxsYmFja09iamVjdElt
cDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBPYmpjSW5zdGFuY2UqIGksIGNvbnN0IFVTdHJpbmcmIHByb3Bl
cnR5TmFtZSkKK09iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmpjSW5z
dGFuY2UqIGksIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIDogSlNOb25GaW5hbE9i
amVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgX2luc3Rh
bmNlKGkpCi0gICAgLCBfaXRlbShwcm9wZXJ0eU5hbWUpCisgICAgLCBtX2l0ZW0ocHJvcGVydHlO
YW1lKQogewogfQogCkBAIC0yNDcsOCArMjQ3LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
aWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRl
ZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpj
Q2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+
Z2V0Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChh
ZG9wdFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tl
VW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7Ci0gICAgICAg
IGNvbnN0IFVTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgbmFtZUlkZW50aWZpZXIuY2hhcmFjdGVycygpLCBuYW1lSWRlbnRpZmllci5sZW5n
dGgoKSkpOworICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nh
c3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUo
KTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0Q0YsIG5hbWVJZGVu
dGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2
YVNjcmlwdE5hbWUobmFtZS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+
aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CiAgICAgfQpAQCAt
Mjc2LDcgKzI3Niw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiBKU1ZhbHVlIE9iamNGYWxsYmFj
a09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBjb25zdCBPYmpjRmFsbGJh
Y2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1
ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5faXRl
bSkpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHRoaXNPYmplY3QtPm1faXRlbSkpOwogfQog
CiBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1t
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCmluZGV4IGI2MmUz
ZGY2MDgwZmFjZTY3ZmYxNWY5MTIwOGU1Mzk5NzA4ZTgyMGEuLmU4NjAyNDc3YWU2MTQzNWM4ZDMy
NjNmMWJlYThhNTk2ZDMwYTY2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfdXRpbGl0eS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3V0aWxpdHkubW0KQEAgLTE0NywxNCArMTQ3LDcgQEAgT2JqY1ZhbHVlIGNvbnZlcnRWYWx1ZVRv
T2JqY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgT2JqY1ZhbHVlVHlwZQog
SlNWYWx1ZSBjb252ZXJ0TlNTdHJpbmdUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIE5TU3RyaW5n
ICpuc3N0cmluZykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAKLSAgICB1
bmljaGFyICpjaGFyczsKLSAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoID0gW25zc3RyaW5nIGxlbmd0
aF07Ci0gICAgY2hhcnMgPSAodW5pY2hhciAqKW1hbGxvYyhzaXplb2YodW5pY2hhcikqbGVuZ3Ro
KTsKLSAgICBbbnNzdHJpbmcgZ2V0Q2hhcmFjdGVyczpjaGFyc107Ci0gICAgVVN0cmluZyB1KChj
b25zdCBVQ2hhciopY2hhcnMsIGxlbmd0aCk7Ci0gICAgSlNWYWx1ZSBhVmFsdWUgPSBqc1N0cmlu
ZyhleGVjLCB1KTsKLSAgICBmcmVlKCh2b2lkICopY2hhcnMpOworICAgIEpTVmFsdWUgYVZhbHVl
ID0ganNTdHJpbmcoZXhlYywgU3RyaW5nKG5zc3RyaW5nKSk7CiAgICAgcmV0dXJuIGFWYWx1ZTsK
IH0KIApAQCAtMzExLDExICszMDQsNyBAQCBPYmpjVmFsdWVUeXBlIG9iamNWYWx1ZVR5cGVGb3JU
eXBlKGNvbnN0IGNoYXIgKnR5cGUpCiBKU09iamVjdCAqdGhyb3dFcnJvcihFeGVjU3RhdGUgKmV4
ZWMsIE5TU3RyaW5nICptZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKLSAgICBzaXpl
X3QgbGVuZ3RoID0gW21lc3NhZ2UgbGVuZ3RoXTsKLSAgICB1bmljaGFyICpidWZmZXIgPSBuZXcg
dW5pY2hhcltsZW5ndGhdOwotICAgIFttZXNzYWdlIGdldENoYXJhY3RlcnM6YnVmZmVyXTsKLSAg
ICBKU09iamVjdCAqZXJyb3IgPSBKU0M6OnRocm93RXJyb3IoZXhlYywgSlNDOjpjcmVhdGVFcnJv
cihleGVjLCBVU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSkpOwotICAgIGRlbGV0ZSBbXSBidWZmZXI7
CisgICAgSlNPYmplY3QgKmVycm9yID0gSlNDOjp0aHJvd0Vycm9yKGV4ZWMsIEpTQzo6Y3JlYXRl
RXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAppbmRleCBlMjQ2NzZhMjlkNjdjNDQ4NzUy
YjQ2OGE5NzEzMmM2YjA3ZGI2ODZmLi43NjE3ODcxZjNmM2UwZWUzYzFhODdkOTg1MmMwMzk4NjQ1
MDk5Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgSlNWYWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIElu
c3RhbmNlKiBpbnN0LCBQcm9wZXJ0eU5hbWUgaWQKICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9
IHRvUmVmKGV4ZWMpOwogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKIAotICAgIFVTdHJp
bmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIHVzdHJpbmco
aWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOwogICAgIGNvbnN0IFFCeXRlQXJyYXkgbmFtZSA9IFFT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHVzdHJpbmcuY2hhcmFjdGVycygp
KSwgdXN0cmluZy5sZW5ndGgoKSkudG9MYXRpbjEoKTsKIAogICAgIC8vIEZpcnN0IHNlZSBpZiB3
ZSBoYXZlIGEgY2FjaGUgaGl0CkBAIC0xMzYsNyArMTM2LDcgQEAgRmllbGQqIFF0Q2xhc3M6OmZp
ZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29u
c3QKICAgICBRdEluc3RhbmNlKiBxdGluc3QgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5z
dGFuY2UpOwogCiAgICAgUU9iamVjdCogb2JqID0gcXRpbnN0LT5nZXRPYmplY3QoKTsKLSAgICBV
U3RyaW5nIHVzdHJpbmcoaWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyB1c3Ry
aW5nKGlkZW50aWZpZXIucHVibGljTmFtZSgpKTsKICAgICBjb25zdCBRU3RyaW5nIG5hbWUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHVzdHJpbmcuY2hhcmFjdGVycygpKSwgdXN0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgY29uc3QgUUJ5dGVBcnJheSBhc2NpaSA9IG5hbWUudG9MYXRpbjEo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKaW5kZXggMDQxMjUz
MmE4NWNkNjIwM2VlNGE3OTM0ZmE1ZjA3OGE2MTE2ZDY1Ny4uM2YwNjkxNDJhZTQxZjUwNDFiYjI3
MWZhNTA2MDFmNTRhOWNhMmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFu
Y2UuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBRdEluc3RhbmNlOjpnZXRQcm9wZXJ0eU5h
bWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5KQogICAgICAgICAg
ICAgUU1ldGFNZXRob2QgbWV0aG9kID0gbWV0YS0+bWV0aG9kKGkpOwogICAgICAgICAgICAgaWYg
KG1ldGhvZC5hY2Nlc3MoKSAhPSBRTWV0YU1ldGhvZDo6UHJpdmF0ZSkgewogICAgICAgICAgICAg
ICAgIFFCeXRlQXJyYXkgc2lnID0gbWV0aG9kLm1ldGhvZFNpZ25hdHVyZSgpOwotICAgICAgICAg
ICAgICAgIGFycmF5LmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoc2lnLmNvbnN0RGF0YSgp
LCBzaWcubGVuZ3RoKCkpKSk7CisgICAgICAgICAgICAgICAgYXJyYXkuYWRkKElkZW50aWZpZXIo
ZXhlYywgU3RyaW5nKHNpZy5jb25zdERhdGEoKSwgc2lnLmxlbmd0aCgpKSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3Bp
eG1hcHJ1bnRpbWUuY3BwCmluZGV4IGEyZGFhZGE4MzFlMGJjNGU3ZDg3NWQzMDAxMDllOTQ5ODAz
ZWIyMjcuLjYyMGNjNDNlM2FmZmU5ODg1MWQyZjU0MzcyZGFiNmM1Njc4NGVjODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKQEAgLTE3MSw4ICsx
NzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFFCdWZmZXIgYnVmZmVyKCZieXRlQXJyYXkpOwogICAg
ICAgICBpbnN0YW5jZS0+dG9JbWFnZSgpLnNhdmUoJmJ1ZmZlciwgIlBORyIpOwogICAgICAgICBj
b25zdCBRU3RyaW5nIGVuY29kZWRTdHJpbmcgPSBRTGF0aW4xU3RyaW5nKCJkYXRhOmltYWdlL3Bu
ZztiYXNlNjQsIikgKyBRTGF0aW4xU3RyaW5nKGJ5dGVBcnJheS50b0Jhc2U2NCgpKTsKLSAgICAg
ICAgY29uc3QgVVN0cmluZyB1c3RyaW5nKChVQ2hhciopZW5jb2RlZFN0cmluZy51dGYxNigpLCBl
bmNvZGVkU3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVz
dHJpbmcpOworICAgICAgICBjb25zdCBTdHJpbmcgdXN0cmluZygoVUNoYXIqKWVuY29kZWRTdHJp
bmcudXRmMTYoKSwgZW5jb2RlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBKU0M6
OmpzU3RyaW5nKGV4ZWMsIHVzdHJpbmcpOwogICAgIH0KIH07CiAKQEAgLTI1OSw3ICsyNTksNyBA
QCBKU1ZhbHVlIFF0UGl4bWFwSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMs
IFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZQogTWV0aG9kTGlzdCBRdFBpeG1hcENsYXNzOjptZXRo
b2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKIHsKICAg
ICBNZXRob2RMaXN0IG1ldGhvZHM7Ci0gICAgVVN0cmluZyB1c3RyaW5nKGlkZW50aWZpZXIucHVi
bGljTmFtZSgpKTsKKyAgICBTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7
CiAgICAgaWYgKHVzdHJpbmcgPT0gUXRQaXhtYXBUb0RhdGFVcmxNZXRob2Q6Om5hbWUoKSkKICAg
ICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRhRGF0YS50b0RhdGFVcmxNZXRob2Qp
OwogICAgIGVsc2UgaWYgKHVzdHJpbmcgPT0gUXRQaXhtYXBUb0ltYWdlRGF0YU1ldGhvZDo6bmFt
ZSgpKQpAQCAtMjczLDcgKzI3Myw3IEBAIE1ldGhvZExpc3QgUXRQaXhtYXBDbGFzczo6bWV0aG9k
c05hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiAKIEZpZWxk
KiBRdFBpeG1hcENsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0
YW5jZSopIGNvbnN0CiB7Ci0gICAgVVN0cmluZyB1c3RyaW5nKGlkZW50aWZpZXIucHVibGljTmFt
ZSgpKTsKKyAgICBTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7CiAgICAg
aWYgKHVzdHJpbmcgPT0gUXRQaXhtYXBXaWR0aEZpZWxkOjpuYW1lKCkpCiAgICAgICAgIHJldHVy
biAmcXRfcGl4bWFwX21ldGFEYXRhLndpZHRoRmllbGQ7CiAgICAgaWYgKHVzdHJpbmcgPT0gUXRQ
aXhtYXBIZWlnaHRGaWVsZDo6bmFtZSgpKQpAQCAtMjgzLDEyICsyODMsMTIgQEAgRmllbGQqIFF0
UGl4bWFwQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNl
KikgY29uc3QKIAogdm9pZCBRdFBpeG1hcEluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNT
dGF0ZSpleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyKQogewotICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwVG9EYXRhVXJsTWV0aG9kOjpuYW1lKCkpKSk7Ci0g
ICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoUXRQaXhtYXBUb0ltYWdlRGF0YU1l
dGhvZDo6bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0
UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpuYW1lKCkpKSk7Ci0gICAgYXJyLmFkZChJZGVu
dGlmaWVyKGV4ZWMsIFVTdHJpbmcoUXRQaXhtYXBUb1N0cmluZ01ldGhvZDo6bmFtZSgpKSkpOwot
ICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwV2lkdGhGaWVsZDo6
bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFw
SGVpZ2h0RmllbGQ6Om5hbWUoKSkpKTsKKyAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgU3Ry
aW5nKFF0UGl4bWFwVG9EYXRhVXJsTWV0aG9kOjpuYW1lKCkpKSk7CisgICAgYXJyLmFkZChJZGVu
dGlmaWVyKGV4ZWMsIFN0cmluZyhRdFBpeG1hcFRvSW1hZ2VEYXRhTWV0aG9kOjpuYW1lKCkpKSk7
CisgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhRdFBpeG1hcEFzc2lnblRvRWxl
bWVudE1ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBTdHJp
bmcoUXRQaXhtYXBUb1N0cmluZ01ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBTdHJpbmcoUXRQaXhtYXBXaWR0aEZpZWxkOjpuYW1lKCkpKSk7CisgICAgYXJy
LmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhRdFBpeG1hcEhlaWdodEZpZWxkOjpuYW1lKCkp
KSk7CiB9CiAKIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwdHlwZSkgY29uc3QKQEAgLTMwOCw4ICsz
MDgsOCBAQCBKU1ZhbHVlIFF0UGl4bWFwSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcAogSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNl
Ojp2YWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBjb25zdCBRU3RyaW5nIHN0
cmluZ1ZhbHVlID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiW1F0IE5hdGl2ZSBQaXhtYXAgJTEsJTJd
IikuYXJnKHdpZHRoKCkpLmFyZyhoZWlnaHQoKSk7Ci0gICAgVVN0cmluZyB1c3RyaW5nKChVQ2hh
ciopc3RyaW5nVmFsdWUudXRmMTYoKSwgc3RyaW5nVmFsdWUubGVuZ3RoKCkpOwotICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCB1c3RyaW5nKTsKKyAgICBTdHJpbmcgdXN0cmluZygoVUNoYXIqKXN0
cmluZ1ZhbHVlLnV0ZjE2KCksIHN0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gSlND
Ojpqc1N0cmluZyhleGVjLCB1c3RyaW5nKTsKIH0KIAogUXRQaXhtYXBJbnN0YW5jZTo6UXRQaXht
YXBJbnN0YW5jZShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmosIGNvbnN0IFFWYXJpYW50
JiBkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDBkYjVhODcz
YzFmMTJkZWZjMTgwNWU4ZDRhMDMzOGY1ZTUwOTUzZWIuLjk4OTIxMzU0Yzc1MjBlMGM3ZDY2Yjg1
YWMwNTcxMTIwOTIyMmU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5j
cHAKQEAgLTk3LDcgKzk3LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBWYXJpYW50ID0gMCwKICAg
ICBOdW1iZXIsCiAgICAgQm9vbGVhbiwKLSAgICBTdHJpbmcsCisgICAgUlRTdHJpbmcsCiAgICAg
RGF0ZSwKICAgICBBcnJheSwKICAgICBRT2JqLApAQCAtMTEwLDcgKzExMCw3IEBAIHR5cGVkZWYg
ZW51bSB7CiAjaWYgZGVmaW5lZChRVFdLX1JVTlRJTUVfQ09OVkVSU0lPTl9ERUJVRykgfHwgZGVm
aW5lZChRVFdLX1JVTlRJTUVfTUFUQ0hfREVCVUcpCiBRRGVidWcgb3BlcmF0b3I8PChRRGVidWcg
ZGJnLCBjb25zdCBKU1JlYWxUeXBlICZjKQogewotICAgICBjb25zdCBjaGFyICptYXBbXSA9IHsg
IlZhcmlhbnQiLCAiTnVtYmVyIiwgIkJvb2xlYW4iLCAiU3RyaW5nIiwgIkRhdGUiLAorICAgICBj
b25zdCBjaGFyICptYXBbXSA9IHsgIlZhcmlhbnQiLCAiTnVtYmVyIiwgIkJvb2xlYW4iLCAiUlRT
dHJpbmciLCAiRGF0ZSIsCiAgICAgICAgICAiQXJyYXkiLCAiUlRPYmplY3QiLCAiT2JqZWN0Iiwg
Ik51bGwiLCAiUlRBcnJheSJ9OwogCiAgICAgIGRiZy5ub3NwYWNlKCkgPDwgIkpTVHlwZSgiIDw8
ICgoaW50KWMpIDw8ICIsICIgPDwgIG1hcFtjXSA8PCAiKSI7CkBAIC0xNTYsNyArMTU2LDcgQEAg
c3RhdGljIEpTUmVhbFR5cGUgdmFsdWVSZWFsVHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsKQogICAgIGlmICh2YWwuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIE51bWJlcjsKICAg
ICBlbHNlIGlmICh2YWwuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzsKKyAgICAg
ICAgcmV0dXJuIFJUU3RyaW5nOwogICAgIGVsc2UgaWYgKHZhbC5pc0Jvb2xlYW4oKSkKICAgICAg
ICAgcmV0dXJuIEJvb2xlYW47CiAgICAgZWxzZSBpZiAodmFsLmlzTnVsbCgpKQpAQCAtMTc2LDcg
KzE3Niw3IEBAIHN0YXRpYyBKU1JlYWxUeXBlIHZhbHVlUmVhbFR5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbCkKICAgICAgICAgcmV0dXJuIE9iamVjdDsKICAgICB9CiAKLSAgICByZXR1
cm4gU3RyaW5nOyAvLyBJIGRvbid0IGtub3cuCisgICAgcmV0dXJuIFJUU3RyaW5nOyAvLyBJIGRv
bid0IGtub3cuCiB9CiAKIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUU1ldGFUeXBlOjpUeXBlLCBpbnQqLCBIYXNoU2V0PEpTT2JqZWN0Kj4qLCBp
bnQpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBRVmFyaWFudE1hcCBjb252ZXJ0VmFsdWVU
b1FWYXJpYW50TWFwKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFFWYXJpYW50IHYgPSBjb252ZXJ0VmFsdWVUb1FW
YXJpYW50KGV4ZWMsIHZhbCwgUU1ldGFUeXBlOjpWb2lkLCAmb2JqZGlzdCwgdmlzaXRlZE9iamVj
dHMsIHJlY3Vyc2lvbkxpbWl0KTsKICAgICAgICAgICAgICAgICBpZiAob2JqZGlzdCA+PSAwKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9ICgqaXQpLnVzdHJpbmcoKTsK
KyAgICAgICAgICAgICAgICAgICAgV1RGOjpTdHJpbmcgdXN0cmluZyA9ICgqaXQpLnVzdHJpbmco
KTsKICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBpZCA9IFFTdHJpbmcoKGNvbnN0IFFDaGFy
Kil1c3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVycygpLCB1c3RyaW5nLmxlbmd0aCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0Lmluc2VydChpZCwgdik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMjQ2LDcgKzI0Niw3IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgIGNh
c2UgQm9vbGVhbjoKICAgICAgICAgICAgICAgICBoaW50ID0gUU1ldGFUeXBlOjpCb29sOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdHJpbmc6CisgICAgICAgICAg
ICBjYXNlIFJUU3RyaW5nOgogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBo
aW50ID0gUU1ldGFUeXBlOjpRU3RyaW5nOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzU0
LDkgKzM1NCw5IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSA2OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBVU3RyaW5nIHN0ciA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICAgICAgICAgICAgICBXVEY6OlN0cmluZyBzdHIgPSB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQoUUNoYXIo
c3RyLmxlbmd0aCgpID8gKihjb25zdCB1c2hvcnQqKXN0ci5pbXBsKCktPmNoYXJhY3RlcnMoKSA6
IDApKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBTdHJpbmcpCisgICAgICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gUlRTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSAzOwog
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDEwOwpAQCAt
MzY5LDkgKzM2OSw5IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICAg
ICAgKmRpc3RhbmNlID0gMTsKICAgICAgICAgICAgICAgICByZXR1cm4gUVN0cmluZygpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgV1RGOjpTdHJp
bmcgdXN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
ICAgICAgICByZXQgPSBRVmFyaWFudChRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBs
KCktPmNoYXJhY3RlcnMoKSwgdXN0cmluZy5sZW5ndGgoKSkpOwotICAgICAgICAgICAgICAgIGlm
ICh0eXBlID09IFN0cmluZykKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBSVFN0cmluZykK
ICAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDA7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICBkaXN0ID0gMTA7CkBAIC00NTAsNyArNDUwLDcgQEAgUVZhcmlhbnQg
Y29udmVydFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFFN
ZXRhVHlwZTo6VHlwZQogICAgICAgICAgICAgICAgIGludCBsZW4gPSBydGFycmF5LT5nZXRMZW5n
dGgoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsID0gcnRhcnJheS0+Z2V0Q29uY3JldGVBcnJh
eSgpLT52YWx1ZUF0KGV4ZWMsIGkpOwotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJp
bmcgPSB2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgICAgICAg
ICBXVEY6OlN0cmluZyB1c3RyaW5nID0gdmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
ICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBxc3RyaW5nID0gUVN0cmluZygoY29uc3QgUUNo
YXIqKXVzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCksIHVzdHJpbmcubGVuZ3RoKCkpOwogCiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXN0cmluZyk7CkBAIC00NjQsNyArNDY0
LDcgQEAgUVZhcmlhbnQgY29udmVydFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIFFNZXRhVHlwZTo6VHlwZQogICAgICAgICAgICAgICAgIGludCBsZW4gPSBh
cnJheS0+bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47
ICsraSkgewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbCA9IGFycmF5LT5nZXQoZXhl
YywgaSk7Ci0gICAgICAgICAgICAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9IHZhbC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIFdURjo6U3RyaW5nIHVz
dHJpbmcgPSB2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICAgICAgICAg
ICAgICBRU3RyaW5nIHFzdHJpbmcgPSBRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBs
KCktPmNoYXJhY3RlcnMoKSwgdXN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChxc3RyaW5nKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBRVmFyaWFudCBj
b252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUU1l
dGFUeXBlOjpUeXBlCiAgICAgICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQocmVzdWx0KTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gTWFrZSBhIHNpbmdsZSBsZW5n
dGggYXJyYXkKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgV1RGOjpTdHJpbmcgdXN0cmlu
ZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICBR
U3RyaW5nIHFzdHJpbmcgPSBRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBsKCktPmNo
YXJhY3RlcnMoKSwgdXN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgUVN0cmluZ0xp
c3QgcmVzdWx0OwogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXN0cmluZyk7CkBAIC00
ODksOSArNDg5LDkgQEAgUVZhcmlhbnQgY29udmVydFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFFNZXRhVHlwZTo6VHlwZQogICAgICAgICAgICAgICAgIHJl
dCA9IFFWYXJpYW50KFFCeXRlQXJyYXkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYXJy
LT5kYXRhKCkpLCBhcnItPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICAgICAgZGlzdCA9IDA7CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgICAgICBXVEY6OlN0
cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAg
ICAgICAgICAgIHJldCA9IFFWYXJpYW50KFFTdHJpbmcoKGNvbnN0IFFDaGFyKil1c3RyaW5nLmlt
cGwoKS0+Y2hhcmFjdGVycygpLCB1c3RyaW5nLmxlbmd0aCgpKS50b0xhdGluMSgpKTsKLSAgICAg
ICAgICAgICAgICBpZiAodHlwZSA9PSBTdHJpbmcpCisgICAgICAgICAgICAgICAgaWYgKHR5cGUg
PT0gUlRTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSA1OwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDEwOwpAQCAtNTMxLDggKzUzMSw4
IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDEw
OwogICAgICAgICAgICAgICAgIH0KICNpZm5kZWYgUVRfTk9fREFURVNUUklORwotICAgICAgICAg
ICAgfSBlbHNlIGlmICh0eXBlID09IFN0cmluZykgewotICAgICAgICAgICAgICAgIFVTdHJpbmcg
dXN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAodHlwZSA9PSBSVFN0cmluZykgeworICAgICAgICAgICAgICAgIFdURjo6U3Ry
aW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAg
ICAgICAgICAgUVN0cmluZyBxc3RyaW5nID0gUVN0cmluZygoY29uc3QgUUNoYXIqKXVzdHJpbmcu
aW1wbCgpLT5jaGFyYWN0ZXJzKCksIHVzdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgICAgICAg
ICAgaWYgKGhpbnQgPT0gUU1ldGFUeXBlOjpRRGF0ZVRpbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwCmluZGV4IDRkYzRlNmQ3ZTc0M2QwMmFjNmM3YzAyNTdhMTk2
ODU3Njc0M2E0YTcuLjlmZGI2NGRmNzNjZTBjOGVhNzQ0Y2M3OTQ4MTY1YzM2NTVhYmI1NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcApAQCAtNTUsNyArNTUsNyBA
QCB2b2lkIFJ1bnRpbWVNZXRob2Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19j
YXN0PFJ1bnRpbWVNZXRob2QqPihjZWxsKS0+UnVudGltZU1ldGhvZDo6flJ1bnRpbWVNZXRob2Qo
KTsKIH0KIAotdm9pZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIGlkZW50KQordm9pZCBSdW50aW1lTWV0aG9kOjpm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgaWRl
bnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgaWRlbnQpOwogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21l
dGhvZC5oCmluZGV4IGY2Mjk1NzhlZmYxZWM3Yzk2ODM5ZWNhMGQ0ZmIzOTcyNTFjNTNmZGYuLjc0
ODE2MDVkNDQxNThjOTgwOTIwMzIxZDMxMTBhNDk0NGZiYTVlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBzdGF0aWMgUnVudGltZU1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RM
aXN0JiBtZXRob2RMaXN0KQorICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlz
dCkKICAgICB7CiAgICAgICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0aG9k
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2RMaXN0KTsKICAgICAgICAgbWV0aG9kLT5m
aW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZExpc3QmKTsKLSAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IElu
dGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0Ymlu
ZGluZ3MuY3BwCmluZGV4IGZlOWZjMWIwNGFkYTEyMDNhNzhhOWJjOGU1MGE0MjEzNjcyZTkwOTAu
LmI0M2I3NWQ1NmZjYzEzMzc3MDVjYjdlZjk4MDlhZDZmMjQwYzc2OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzo6QmluZGluZ3M7CiAKIGNsYXNzIEdsb2JhbEltcCA6IHB1YmxpYyBPYmplY3RJbXAg
ewogcHVibGljOgotICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4g
Imdsb2JhbCI7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVy
biAiZ2xvYmFsIjsgfQogfTsKIAogI2RlZmluZSBCdWZmZXJTaXplIDIwMDAwMApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MubW0KaW5kZXggZWYzYmM0ZTFlMmQxYThlOTlkMGQwYzIwNDg3
MTU5MDA4YmFkZWExYi4uZTUwZjE2YWI3YjhlNGM0NDFhOWMwMDk2M2JiOGVjMjJhNTEwNzUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7CiAKIGNsYXNzIEdsb2JhbEltcCA6IHB1Ymxp
YyBPYmplY3RJbXAgewogcHVibGljOgotICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29u
c3QgeyByZXR1cm4gImdsb2JhbCI7IH0KKyAgdmlydHVhbCBTdHJpbmcgY2xhc3NOYW1lKCkgY29u
c3QgeyByZXR1cm4gImdsb2JhbCI7IH0KIH07CiAKICNkZWZpbmUgQnVmZmVyU2l6ZSAyMDAwMDAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0cXRiaW5kaW5ncy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCmluZGV4IGE0ZjRkNWExNGMx
MDViZmQyMzk4MTQxNmZjYzQ1YzExNTVmZGY1MTkuLjdkM2Q0MTZhNWY1YjFlYWRhOTZjODgxYjM1
ZmMzNGYzZWMyMDM1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0cXRi
aW5kaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RxdGJpbmRpbmdzLmNw
cApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBHbG9iYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICBz
dGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKSB7IHJldHVybiAiZ2xvYmFs
IjsgfQorICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KikgeyByZXR1
cm4gImdsb2JhbCI7IH0KIH07CiAKIHN0YXRpYyBjaGFyIGNvZGVbXSA9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwCmluZGV4IDA1NGRhMzQ4ZmU2
M2FlOTY2MWQzMDZmOGIyMTY0MzRjMGY2OWI2NmIuLmEzZjgzYzJkNjg0YjQ4NTg5ODBkMzEwZDM0
NWQzMzYyMWY3MDM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbHMuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kTWFn
aWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIFN0cmluZyBwYXR0ZXJuU3RyaW5nID0gIi8vQFtcMDQwXHRdIiArIG5hbWUgKyAiPVtcMDQw
XHRdKihbXlxcc1wnXCJdKilbXDA0MFx0XSokIjsKICAgICBjb25zdCBjaGFyKiBlcnJvciA9IDA7
Ci0gICAgSlNDOjpZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKEpTQzo6VVN0cmluZyhwYXR0ZXJu
U3RyaW5nLmltcGwoKSksIGZhbHNlLCB0cnVlLCAmZXJyb3IpOworICAgIEpTQzo6WWFycjo6WWFy
clBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5nLCBmYWxzZSwgdHJ1ZSwgJmVycm9yKTsKICAg
ICBBU1NFUlQoIWVycm9yKTsKICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciByZWdleEFsbG9jYXRv
cjsKICAgICBPd25QdHI8SlNDOjpZYXJyOjpCeXRlY29kZVBhdHRlcm4+IGJ5dGVjb2RlUGF0dGVy
biA9IEpTQzo6WWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnJlZ2V4QWxsb2NhdG9yKTsKQEAg
LTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRNYWdpY0NvbW1lbnQoY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgQVNTRVJUKHBhdHRlcm4ubV9u
dW1TdWJwYXR0ZXJucyA9PSAxKTsKICAgICBWZWN0b3I8aW50LCA0PiBtYXRjaGVzOwogICAgIG1h
dGNoZXMucmVzaXplKDQpOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IEpTQzo6WWFycjo6aW50ZXJw
cmV0KGJ5dGVjb2RlUGF0dGVybi5nZXQoKSwgSlNDOjpVU3RyaW5nKGNvbnRlbnQuaW1wbCgpKSwg
MCwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1hdGNoZXMuZGF0YSgpKSk7CisgICAgdW5z
aWduZWQgcmVzdWx0ID0gSlNDOjpZYXJyOjppbnRlcnByZXQoYnl0ZWNvZGVQYXR0ZXJuLmdldCgp
LCBjb250ZW50LCAwLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obWF0Y2hlcy5kYXRhKCkp
KTsKICAgICBpZiAocmVzdWx0ID09IEpTQzo6WWFycjo6b2Zmc2V0Tm9NYXRjaCkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIEFTU0VSVChtYXRjaGVzWzJdID4gMCAmJiBtYXRjaGVzWzNd
ID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKaW5kZXggZmJmOWY4MjM3ZmFhMTYwZWIwZGE2OWI2
NDZhM2Q4M2E5YzJmNGQwNC4uYTM4MGVkZjg4MjM5NzRkODZlMDc3YTUzMGJjMWY0MDY0NmMwNGI0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaApAQCAtNDgsMTAgKzQ4LDYgQEAgUVRfRU5EX05BTUVT
UEFDRQogI2luY2x1ZGUgIktVUkxHb29nbGVQcml2YXRlLmgiCiAjZW5kaWYKIAotI2lmIFVTRShK
U0MpCi0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBUZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwCmluZGV4IGY3NGY5NTdkY2QzOTM0NmJl
MmE1YjVjMzZiOTVjODQ0ZjIzYTQ5NjQuLjIzNjk1OTA4NTU2ZTk1MjE3ZTVlNjk2OWQzNDkzOGU4
YWRiOWMyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxh
ckV4cHJlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxh
ckV4cHJlc3Npb24uY3BwCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICBQYXNzT3du
UHRyPEpTQzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0
dGVyblN0cmluZywgVGV4dENhc2VTZW5zaXRpdml0eSBjYXNlU2Vuc2l0aXZpdHkpCiAgICAgewot
ICAgICAgICBKU0M6OllhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4oSlNDOjpVU3RyaW5nKHBhdHRl
cm5TdHJpbmcuaW1wbCgpKSwgKGNhc2VTZW5zaXRpdml0eSA9PSBUZXh0Q2FzZUluc2Vuc2l0aXZl
KSwgZmFsc2UsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKKyAgICAgICAgSlNDOjpZYXJyOjpZYXJy
UGF0dGVybiBwYXR0ZXJuKHBhdHRlcm5TdHJpbmcsIChjYXNlU2Vuc2l0aXZpdHkgPT0gVGV4dENh
c2VJbnNlbnNpdGl2ZSksIGZhbHNlLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgICAgIGlm
IChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlJlZ3VsYXJF
eHByZXNzaW9uOiBZQVJSIGNvbXBpbGUgZmFpbGVkIHdpdGggJyVzJyIsIG1fY29uc3RydWN0aW9u
RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTIsNyArMTEyLDcgQEAg
aW50IFJlZ3VsYXJFeHByZXNzaW9uOjptYXRjaChjb25zdCBTdHJpbmcmIHN0ciwgaW50IHN0YXJ0
RnJvbSwgaW50KiBtYXRjaExlbmd0aCkKIAogICAgIHVuc2lnbmVkIHJlc3VsdDsKICAgICBpZiAo
c3RyLmxlbmd0aCgpIDw9IElOVF9NQVgpCi0gICAgICAgIHJlc3VsdCA9IEpTQzo6WWFycjo6aW50
ZXJwcmV0KGQtPm1fcmVnRXhwQnl0ZUNvZGUuZ2V0KCksIEpTQzo6VVN0cmluZyhzdHIuaW1wbCgp
KSwgc3RhcnRGcm9tLCBvZmZzZXRWZWN0b3IpOworICAgICAgICByZXN1bHQgPSBKU0M6OllhcnI6
OmludGVycHJldChkLT5tX3JlZ0V4cEJ5dGVDb2RlLmdldCgpLCBzdHIsIHN0YXJ0RnJvbSwgb2Zm
c2V0VmVjdG9yKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gVGhpcyBjb2RlIGNhbid0IGhhbmRs
ZSB1bnNpZ25lZCBvZmZzZXRzLiBMaW1pdCBvdXIgcHJvY2Vzc2luZyB0byBzdHJpbmdzIHdpdGgg
b2Zmc2V0cyB0aGF0IAogICAgICAgICAvLyBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgaW50cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcAppbmRleCA4NzJhYjdlYWMwMjNjMDBh
MzIwMzk4ODk0ZjNkOTg5ZTQ3NjJjZjBiLi5hNTc3ZWY1NDU1MGFhMTdiMjMwNWU3MjYzNDlmZjVj
OTIwNGE2Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCkBAIC04
NCwxNCArODQsNiBAQCBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgcykKICAg
ICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4ocy5jaGFyYWN0ZXJzKCksIHMubGVuZ3Ro
KCkpOwogfQogCi1CU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFVTdHJpbmcmIHMpCi17Ci0gICAgaWYg
KHMuaXNOdWxsKCkpCi0gICAgICAgIG1fYnN0ciA9IDA7Ci0gICAgZWxzZQotICAgICAgICBtX2Jz
dHIgPSBTeXNBbGxvY1N0cmluZ0xlbihzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSk7Ci19Ci0K
ICNpZiBVU0UoQ0YpCiBCU3RyaW5nOjpCU3RyaW5nKENGU3RyaW5nUmVmIGNmc3RyKQogICAgIDog
bV9ic3RyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCA5MjJkM2Uy
ZmI0NjA0MWFhN2M0MjZkNTkwZDcxNzUxN2M5NDE2ZGNiLi43MzczZWVkYWRmZjY5MTZlOTIwZjY5
MGQ5OWUyYzcyMzE3NzIzZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQlN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgK
QEAgLTM0LDEwICszNCw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0
cmluZ1JlZjsKIAogdHlwZWRlZiB3Y2hhcl90KiBCU1RSOwogCi1uYW1lc3BhY2UgSlNDIHsKLSAg
ICBjbGFzcyBVU3RyaW5nOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBL
VVJMOwpAQCAtNTAsNyArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEJTdHJp
bmcoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIEJTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJik7
CiAgICAgICAgIEJTdHJpbmcoY29uc3QgS1VSTCYpOwotICAgICAgICBCU3RyaW5nKGNvbnN0IEpT
Qzo6VVN0cmluZyYpOwogI2lmIFVTRShDRikKICAgICAgICAgQlN0cmluZyhDRlN0cmluZ1JlZik7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDBkNjg1N2Yy
NWM0Yzk4ODY0NmFiMTA4NTBiNDM1NzA3ZThiOTJhYWMuLmRkMjIwZDg3ODhiNWJjNWFjM2JiMGU2
NGM4NWMxY2RkNzdjMmFhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAibnBydW50
aW1lX2ltcGwuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoV0lORE9XUykgJiYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAjaW5jbHVkZSAiUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oIgpAQCAtODEs
NyArODIsNiBAQCB1c2luZyBKU0M6OkV4ZWNTdGF0ZTsKIHVzaW5nIEpTQzo6SlNMb2NrOwogdXNp
bmcgSlNDOjpKU09iamVjdDsKIHVzaW5nIEpTQzo6SlNWYWx1ZTsKLXVzaW5nIEpTQzo6VVN0cmlu
ZzsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0Jl
cnJ5LmNwcAppbmRleCAyY2M5NmQ1ZTIyMzJhNzQyZDM4MzJmZWEzN2RlMTMyNmU2MmM2MTg0Li5m
NTQ3OGYwOGM2NThkNzNkOWM4MzMxNDA0YTI2MGU3ZTJiOGMzZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJy
eS5jcHAKQEAgLTkwLDcgKzkwLDYgQEAgdXNpbmcgSlNDOjpFeGVjU3RhdGU7CiB1c2luZyBKU0M6
OkludGVycHJldGVyOwogdXNpbmcgSlNDOjpKU0xvY2s7CiB1c2luZyBKU0M6OkpTT2JqZWN0Owot
dXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNw
YWNlIFdURjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZp
ZXdHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAK
aW5kZXggNjg0NGVlY2M1OTZjNDNkNDc5MTUzYzc5ZTUzMmIyYTQ4NDBhNmYwOS4uNjJmOWY4ZDg0
MzkxN2Y2YWNiMTM5NDcwODJjMjY5M2VkMWI4MWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKQEAgLTgzLDcgKzgzLDYgQEAgdXNpbmcgSlNDOjpF
eGVjU3RhdGU7CiB1c2luZyBKU0M6OkludGVycHJldGVyOwogdXNpbmcgSlNDOjpKU0xvY2s7CiB1
c2luZyBKU0M6OkpTT2JqZWN0OwotdXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBzdGQ6Om1p
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KaW5kZXgg
Nzg1YTc0ZGYwZTRlM2ZkMDdlMDZkY2U2MjlmNTU3ZTNiMWFkYmFjMy4uNDJiYTZhNjQ1YWNhYmIw
ZWE5YWMxY2QzNGExNTFlODM1NmEyZmE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21h
Yy9QbHVnaW5WaWV3TWFjLm1tCkBAIC03MCw3ICs3MCw2IEBAIHVzaW5nIEpTQzo6SW50ZXJwcmV0
ZXI7CiB1c2luZyBKU0M6OkpTTG9jazsKIHVzaW5nIEpTQzo6SlNPYmplY3Q7CiB1c2luZyBKU0M6
OkpTVmFsdWU7Ci11c2luZyBKU0M6OlVTdHJpbmc7CiAKICNpZiBQTEFURk9STShRVCkKICNpbmNs
dWRlIDxRV2lkZ2V0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVn
aW5WaWV3UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3Bw
CmluZGV4IDA0ZDcxMGVhMjhlNWQ3ODQ1MzAwODFiNTJlZDdiYzc4ZDgwYzc5MDUuLjliYzAyMjc1
YWE4ZDJhMzE0ZmUzYjE4NTFjOGQ4MDg3OGE5MWNmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKQEAgLTkwLDcgKzkwLDYgQEAgdXNpbmcgSlNDOjpJbnRl
cnByZXRlcjsKICNlbmRpZgogdXNpbmcgSlNDOjpKU0xvY2s7CiB1c2luZyBKU0M6OkpTT2JqZWN0
OwotdXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBzdGQ6Om1pbjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAxNDJmYTgzMDU4MGQwM2Fm
ZTExMjQ3MTIzYmNhMDkxYjYwNDVjNTU0Li4wNWZmMzBiYTQ0NjE1Y2Y3NzkzNTc1YWM4MGEzZWFh
MGU5NzYwNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5W
aWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2lu
LmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmICFQTEFURk9STShXWCkKICNpbmNs
dWRlICJCaXRtYXBJbmZvLmgiCkBAIC0xMjcsNyArMTI4LDYgQEAgc3RhdGljIGlubGluZSBIV05E
IHdpbmRvd0hhbmRsZUZvclBhZ2VDbGllbnQoUGxhdGZvcm1QYWdlQ2xpZW50IGNsaWVudCkKIHVz
aW5nIEpTQzo6RXhlY1N0YXRlOwogdXNpbmcgSlNDOjpKU0xvY2s7CiB1c2luZyBKU0M6OkpTT2Jq
ZWN0OwotdXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBzdGQ6Om1pbjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0
ZW5zaW9uLmNwcAppbmRleCAzOTIwOTcxODlmYTAyYmQ4MjhhNzQwOWY4ZTQyYzI4ZDg1OGViNTlh
Li41NGM0NTZhNzFiYzJjOTk2M2YwZjUzYTA4YjlkMmQzZDE1NjczODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0
ZW5zaW9uLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgYXR0YWNoRXh0ZW5zaW9uT2JqZWN0
VG9GcmFtZShGcmFtZSogZnJhbWUsIFdlYlBhZ2VDbGllbnQqIGNsaWVudCkKICAgICBKU09iamVj
dFJlZiBjbGllbnRDbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShzY3JpcHRDdHgsIGNsaWVudENs
YXNzLCAwKTsKICAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmplY3QsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNsaWVudCkpOwogCi0gICAgSlNDOjpVU3RyaW5nIG5hbWUoInFu
eCIpOworICAgIFN0cmluZyBuYW1lKCJxbngiKTsKIAogICAgIEpTQzo6UHV0UHJvcGVydHlTbG90
IHNsb3Q7CiAgICAgd2luZG93LT5wdXQod2luZG93LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhl
YywgbmFtZSksIHRvSlMoY2xpZW50Q2xhc3NPYmplY3QpLCBzbG90KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBC
bGFja0JlcnJ5LmNwcAppbmRleCA0MDJiNTIzMzMzYWQ5YjVkOWNjZjI0ZTQ4Yjg1ZGI0ZTU3MmZh
Y2Y3Li5lMmVkMzQ5MGJmZTg3YjQ0MzhjZjc2NGE2YTQ4Y2VhZWQ2MWZkOWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tC
ZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1Bh
Z2VQb3B1cEJsYWNrQmVycnkuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBQYWdlUG9wdXBC
bGFja0JlcnJ5OjppbnN0YWxsRG9tRnVuY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIEpTT2JqZWN0
UmVmIGNsaWVudENsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNsaWVudENsYXNz
LCAwKTsKICAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmplY3QsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KG1fY2xpZW50LmdldCgpKSk7CiAKLSAgICBKU0M6OlVTdHJpbmcgbmFt
ZSgicG9wVXAiKTsKKyAgICBTdHJpbmcgbmFtZSgicG9wVXAiKTsKIAogICAgIEpTQzo6UHV0UHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgd2luZG93LT5wdXQod2luZG93LCBleGVjLCBKU0M6OklkZW50
aWZpZXIoZXhlYywgbmFtZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRleCA5NmE1Nzkx
ZWUyYTlmMDY1NDExZDI5ODRhYjBhNGY4MmExZmE4ZGJhLi44YTllZjliZTBmNWJjYmZmZjVmNGU4
NTg4MDFlMzY2NjQ1NTViMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2VyaWFsaXplSFRU
UExvYWRzKGJvb2wgZW5hYmxlZCkKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZW5k
V2ViSW50ZW50UmVzcG9uc2UoRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0LCBKU1N0cmluZ1Jl
ZiByZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgSlNDOjpVU3RyaW5n
IHJlc3BvbnNlU3RyaW5nID0gcmVzcG9uc2UtPnVzdHJpbmcoKTsKKyAgICBTdHJpbmcgcmVzcG9u
c2VTdHJpbmcgPSByZXNwb25zZS0+dXN0cmluZygpOwogICAgIGlmIChyZXNwb25zZVN0cmluZy5p
c051bGwoKSkKICAgICAgICAgZXdrX2ludGVudF9yZXF1ZXN0X2ZhaWx1cmVfcG9zdChyZXF1ZXN0
LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4
KCJFUlJPUiIpKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCA3MjMxYjU0OWRkOTVmZDIzNDAyMWMyYjNjOWM2OGM4NWNlMzFjMDhhLi40YjMzYzYyODBmM2Nk
MmY0YzE0NmRhYjk4YzhlM2NjN2RmZjIxYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcApAQCAtNDU4LDcgKzQ1OCw3IEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9zY3JpcHRfZXhl
Y3V0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHNjcmlwdCkKIAogICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gc21hcnREYXRhLT5mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9i
amVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIHJlc3VsdFN0cmluZyA9IFdlYkNv
cmU6OnVzdHJpbmdUb1N0cmluZyhyZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
KyAgICByZXN1bHRTdHJpbmcgPSByZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChyZXN1bHRTdHJpbmcudXRmOCgpLmRhdGEo
KSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsv
Z2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaAppbmRleCBhZmJlZDQ5NjFmYWZjMGI1Y2ExMzAy
NzlmYWQ0Mjk3ZjZjOGEwZjg3Li5iZTAyZmZiODJhMjk4ZjAxYjM1OTUzZDAxMGViOWZlMDY4ZDg4
ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0NoYXJQcml2YXRl
LmgKQEAgLTM1LDcgKzM1LDcgQEAgaW5saW5lIGdjaGFyKiBjb3B5QXNHY2hhcihXZWJDb3JlOjpL
VVJMIGNvbnN0JiBzKQogICAgIHJldHVybiBjb3B5QXNHY2hhcihzLnN0cmluZygpKTsKIH0KIAot
aW5saW5lIGdjaGFyKiBjb3B5QXNHY2hhcihjb25zdCBKU0M6OlVTdHJpbmcmIHMpCitpbmxpbmUg
Z2NoYXIqIGNvcHlBc0djaGFyKGNvbnN0IFN0cmluZyYgcykKIHsKICAgICByZXR1cm4gZ19zdHJk
dXAocy5VVEY4U3RyaW5nKCkuY19zdHIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4
IGFmNmYyYmU5OTY5Y2IxMWNiMzNhNTYzMTdmZGRhOGMyY2Y2MWNmNWUuLjBmOWYwN2RkYjQ0MDcy
M2RiYWY1YTcxMmI4YTQwYTA5ODk0NzQ4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC02
MDcsNyArNjA3LDcgQEAgc3RhdGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVy
UmVwKElkZW50aWZpZXJSZXAqIGlkZW50aWZpZXIpCiAgICAgQVNTRVJUKGlkZW50aWZpZXItPmlz
U3RyaW5nKCkpOwogICAKICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmco
KTsgICAgCi0gICAgcmV0dXJuIElkZW50aWZpZXIoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFs
RGF0YSgpLCBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhzdHIsIHN0cmxlbihzdHIpKSkpOworICAgIHJldHVybiBJZGVudGlmaWVyKEpTRE9NV2luZG93
Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhzdHIsIHN0cmxlbihzdHIpKSk7CiB9CiAKIGtlcm5fcmV0dXJuX3QgV0tQQ0ludm9rZShtYWNo
X3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwgdWludDMyX3QgcmVxdWVzdElE
LCB1aW50MzJfdCBvYmplY3RJRCwgdWludDY0X3Qgc2VydmVySWRlbnRpZmllciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA5MTA0NDMwNWZiYTZiMjNhYjI1NTUwNmMxMTdhMTI0
YWM0OTMxY2I1Li4xNzRhM2E0ODE0Yjg5YzgwNTVlM2VkYWNiYTE1NWRmOGM0MjlkMzA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5
ICphcnJheSwgRXhlY1N0YQogCiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpTdHJpbmdWYWx1ZVR5cGVd
XTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDp1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6dmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyldOwogICAgIH0gZWxzZSBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewog
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OkRvdWJsZVZh
bHVlVHlwZV1dOwogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnZhbHVlLnRvTnVtYmVyKGV4ZWMpXV07CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0
YXRlKEV4ZWNTdGF0ZSogZXhlYwogCiAgICAgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBzdHJpbmdU
b1VTdHJpbmcoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKSk7CisgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKICAgICB9
CiAKICAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggODk4YzVl
MjE0MDY5ZmM5YmJmZDM0OWM1YjRjNmJhOGY3MzU1ZTI3MC4uNDllOThmZTZlMjE0N2QwN2VmZTA4
MDliMzIzZjVkMWI2MmRmMWM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0xODEsNyArMTgxLDcgQEAgY2xhc3MgUHJveHlS
dW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHR5cGVk
ZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIFByb3h5UnVudGltZU1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGlj
IFByb3h5UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlz
dCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0
dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAg
ICAgICAgLy8gZXhlYy1nbG9iYWxEYXRhKCkgaXMgYWxzbyBsaWtlbHkgd3JvbmcuCkBAIC0yMDQs
NyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEs
IG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMzQwLDcgKzM0
MCw3IEBAIHZvaWQgUHJveHlJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBuYW1lQXJyCiAKICAgICAgICAgaWYgKGlkZW50aWZpZXIt
PmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0ciA9IGlkZW50aWZpZXIt
PnN0cmluZygpOwotICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVyKEpTRE9NV2lu
ZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgc3RyaW5nVG9VU3RyaW5nKFN0cmluZzo6ZnJvbVVU
RjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKSk7CisgICAgICAgICAgICBu
YW1lQXJyYXkuYWRkKElkZW50aWZpZXIoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
LCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIGlkZW50aWZpZXItPm51bWJlcigpKSk7CiAgICAgfQpAQCAtMzQ4LDcgKzM0OCw3
IEBAIHZvaWQgUHJveHlJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZUFycmF5JiBuYW1lQXJyCiAKIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6
bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVVN0cmluZyBu
YW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyBuYW1lKHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gTWV0aG9kTGlzdCgpOwogCkBAIC0zOTIsNyArMzkyLDcgQEAgTWV0aG9kTGlzdCBQcm94eUlu
c3RhbmNlOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIAogRmllbGQq
IFByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
LSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5n
IG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpp
bmRleCA5MmY5ZTBiYjYxNjZlY2Q3MmMwNDlmM2VkMzcyMjEwY2VlMjA4OGVmLi5mOTFmZmQ4ZTUx
YmQ0ZGFjYjdhZjBhMWNjNGYyNjUxM2MzZWRhODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3Vy
Y2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwotICAgIHJldHVybiB1c3RyaW5nVG9TdHJpbmcocmVzdWx0LnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIHJlc3VsdC50b1dURlN0cmluZyhl
eGVjKTsKIH0KIAogLSAoTlNSZWN0KV9jYXJldFJlY3RBdFBvc2l0aW9uOihjb25zdCBQb3NpdGlv
biYpcG9zIGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KWFmZmluaXR5CkBAIC0xMTI0LDcg
KzExMjQsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gYW55V29ybGRH
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwotICAgIHJldHVybiB1c3RyaW5nVG9TdHJpbmcocmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIHJlc3VsdC50b1dURlN0cmluZyhleGVjKTsKIH0KIAog
LSAoSlNHbG9iYWxDb250ZXh0UmVmKV9nbG9iYWxDb250ZXh0Rm9yU2NyaXB0V29ybGQ6KFdlYlNj
cmlwdFdvcmxkICopd29ybGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQppbmRleCA5MWQ0NzM1OTZhZTM0OTI2ZTZmOGUwMjA4NTM0
MmRiNjc1NjU4OTI0Li4wZmNmYzhiYzUzMmFjYTBkOWRkOTFkZTc3NWEyNDAyMDMyMDhkY2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVn
YXRlLm1tCkBAIC0yMDMsOCArMjAzLDggQEAgTlNTdHJpbmcgKiBjb25zdCBXZWJTY3JpcHRFcnJv
ckxpbmVOdW1iZXJLZXkgPSBAIldlYlNjcmlwdEVycm9yTGluZU51bWJlciI7CiAgICAgaWYgKCFf
cHJpdmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBj
b25zdCBVU3RyaW5nKiBmdW5jdGlvbk5hbWUgPSBfcHJpdmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUt
PmZ1bmN0aW9uTmFtZSgpOwotICAgIHJldHVybiBmdW5jdGlvbk5hbWUgPyB0b05TU3RyaW5nKCpm
dW5jdGlvbk5hbWUpIDogbmlsOworICAgIGNvbnN0IFN0cmluZyogZnVuY3Rpb25OYW1lID0gX3By
aXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5mdW5jdGlvbk5hbWUoKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb25OYW1lID8gbnNTdHJpbmdOaWxJZkVtcHR5KCpmdW5jdGlvbk5hbWUpIDogbmlsOwogfQog
CiAvLyBSZXR1cm5zIHRoZSBwZW5kaW5nIGV4Y2VwdGlvbiBmb3IgdGhpcyBmcmFtZSAobmlsIGlm
IG5vbmUpLgpAQCAtMjQyLDE0ICsyNDIsMTQgQEAgTlNTdHJpbmcgKiBjb25zdCBXZWJTY3JpcHRF
cnJvckxpbmVOdW1iZXJLZXkgPSBAIldlYlNjcmlwdEVycm9yTGluZU51bWJlciI7CiAgICAgICAg
IER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlv
bjsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKHN0
cmluZ1RvVVN0cmluZyhzY3JpcHQpLCBleGNlcHRpb24sIGdsb2JhbE9iamVjdCk7CisgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShzY3JpcHQsIGV4Y2Vw
dGlvbiwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAg
IHJldHVybiBbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6ZXhjZXB0aW9uXTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdCA/IFtzZWxmIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTpyZXN1bHRd
IDogbmlsOyAgICAgICAgCiAgICAgfQogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmlu
Z1RvVVN0cmluZyhzY3JpcHQpLCBleGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gX3By
aXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZShzY3JpcHQsIGV4Y2VwdGlvbik7CiAg
ICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VmFsdWVUb09i
amNWYWx1ZTpleGNlcHRpb25dOwogICAgIHJldHVybiByZXN1bHQgPyBbc2VsZiBfY29udmVydFZh
bHVlVG9PYmpjVmFsdWU6cmVzdWx0XSA6IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIuaAppbmRleCBiNTUxZjdkYzg3NTg4ZGU5YjQ1YzlmZDA0YzUy
MDNjNjlhY2JmNDNhLi5jN2RhOGZlMWZiMGVjYzg2NDhkMDc0Njc3MzA0NmUyYWEwMTA1MDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCkBAIC0z
NCwyNiArMzQsMjcgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorbmFtZXNwYWNl
IFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERl
YnVnZ2VyQ2FsbEZyYW1lOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBBcmdMaXN0OwotICAgIGNs
YXNzIFVTdHJpbmc7CiB9CiAKIEBjbGFzcyBXZWJTY3JpcHRDYWxsRnJhbWU7CiAKLU5TU3RyaW5n
ICp0b05TU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYpOwotCiBjbGFzcyBXZWJTY3JpcHREZWJ1
Z2dlciA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKIHB1YmxpYzoKICAgICBXZWJTY3JpcHREZWJ1
Z2dlcihKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICB2b2lkIGluaXRHbG9iYWxDYWxsRnJh
bWUoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNv
dXJjZVBhcnNlZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJy
b3JMaW5lLCBjb25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTXNnKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGludCBl
cnJvckxpbmUsIGNvbnN0IFdURjo6U3RyaW5nJiBlcnJvck1zZyk7CiAgICAgdmlydHVhbCB2b2lk
IGNhbGxFdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICB2aXJ0dWFsIHZvaWQg
YXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdmlydHVhbCB2b2lk
IHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KaW5kZXggNGZmZTcyNWI4YWZhMzI5
NjBmNGFjODU4NDlmNDcxNTA5NWNiOTQ4OC4uMTNjNGY3Y2VjNDUzMjRkMjQzM2UzYWRlOTY5ODky
ZjEwZmYyNzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tCkBAIC01MSwxMyArNTEsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0g
KHZvaWQpX2NsZWFyRGVidWdnZXJDYWxsRnJhbWU7CiBAZW5kCiAKLU5TU3RyaW5nICp0b05TU3Ry
aW5nKGNvbnN0IFVTdHJpbmcmIHMpCi17Ci0gICAgaWYgKHMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6cmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bmljaGFyKj4ocy5jaGFyYWN0ZXJzKCkpIGxlbmd0aDpzLmxl
bmd0aCgpXTsKLX0KLQogc3RhdGljIE5TU3RyaW5nICp0b05TU3RyaW5nKFNvdXJjZVByb3ZpZGVy
KiBzKQogewogICAgIGlmICghcy0+bGVuZ3RoKCkpCkBAIC02NSwxMiArNTgsMTIgQEAgc3RhdGlj
IE5TU3RyaW5nICp0b05TU3RyaW5nKFNvdXJjZVByb3ZpZGVyKiBzKQogICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6cy0+ZGF0YSgpLT5jaGFyYWN0ZXJzKCkgbGVuZ3Ro
OnMtPmxlbmd0aCgpXTsKIH0KIAotLy8gY29udmVydCBVU3RyaW5nIHRvIE5TVVJMCi1zdGF0aWMg
TlNVUkwgKnRvTlNVUkwoY29uc3QgVVN0cmluZyYgcykKKy8vIENvbnZlcnQgU3RyaW5nIHRvIE5T
VVJMLgorc3RhdGljIE5TVVJMICp0b05TVVJMKGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBpZiAo
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1c3RyaW5nVG9TdHJpbmcocykpOworICAgIHJldHVybiBLVVJMKFBhcnNlZFVS
TFN0cmluZywgcyk7CiB9CiAKIHN0YXRpYyBXZWJGcmFtZSAqdG9XZWJGcmFtZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtMTA1LDcgKzk4LDcgQEAgdm9pZCBXZWJTY3JpcHREZWJ1
Z2dlcjo6aW5pdEdsb2JhbENhbGxGcmFtZShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWwKIH0KIAogLy8gY2FsbGJhY2tzIC0gcmVsYXkgdG8gZGVsZWdhdGUKLXZvaWQgV2ViU2Ny
aXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVy
KiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgVVN0cmluZyYgZXJyb3JNc2cp
Cit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiBleGVjLCBT
b3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNc2cpCiB7CiAgICAgaWYgKG1fY2FsbGluZ0RlbGVnYXRlKQogICAgICAgICByZXR1
cm47CkBAIC0xMjgsNyArMTIxLDcgQEAgdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFy
c2VkKEV4ZWNTdGF0ZSogZXhlYywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3YKICAgICAgICAg
ICAgICAgICBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFBhcnNl
U291cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUGFyc2VTb3VyY2U6ZnJv
bVVSTDpzb3VyY2VJZDpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwgW25zVVJMIGFic29sdXRlU3Ry
aW5nXSwgc291cmNlUHJvdmlkZXItPmFzSUQoKSwgd2ViRnJhbWUpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgTlNTdHJpbmcqIG5zRXJyb3JNZXNzYWdlID0gdG9OU1N0cmluZyhl
cnJvck1zZyk7CisgICAgICAgIE5TU3RyaW5nKiBuc0Vycm9yTWVzc2FnZSA9IG5zU3RyaW5nTmls
SWZFbXB0eShlcnJvck1zZyk7CiAgICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9IFtbTlNEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOm5zRXJyb3JNZXNzYWdlLCBXZWJT
Y3JpcHRFcnJvckRlc2NyaXB0aW9uS2V5LCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50
OmVycm9yTGluZV0sIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleSwgbmlsXTsKICAgICAgICAg
TlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldlYlNjcmlw
dEVycm9yRG9tYWluIGNvZGU6V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5mbzppbmZv
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDYwYjM1M2YyZDQ2ZjBl
ODcyMGFiZGI1MjVlYTE3ZjkzNDBkYjZhOTcuLjM3OTlmOTIzZmFlYTk5ZWNhMzU0MTU5OTlhZjg4
Zjk5OWExYTVlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTQ3ODgs
NyArNDc4OCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNW
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1CiAgICAgaWYgKGpzVmFsdWUuaXNC
b29sZWFuKCkpCiAgICAgICAgIHJldHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlw
dG9yV2l0aEJvb2xlYW46anNWYWx1ZS5hc0Jvb2xlYW4oKV07CiAgICAgaWYgKGpzVmFsdWUuaXNT
dHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0
b3JXaXRoU3RyaW5nOnVzdHJpbmdUb1N0cmluZyhqc1ZhbHVlLmdldFN0cmluZyhleGVjKSldOwor
ICAgICAgICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhTdHJp
bmc6anNWYWx1ZS5nZXRTdHJpbmcoZXhlYyldOwogICAgIGlmIChqc1ZhbHVlLmlzTnVtYmVyKCkp
IHsKICAgICAgICAgZG91YmxlIHZhbHVlID0ganNWYWx1ZS5hc051bWJlcigpOwogICAgICAgICBp
bnQgaW50VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAppbmRl
eCBhMjA4Y2JjNGVhNWI0N2YxODE3M2U5MjI0Yjk3OWViYzM5YjkxZjQ1Li4wNjJjZGQyN2Q0ZjE5
ZTk3YmNlNzIwZGU5MmQyNGE0N2RlNjhjZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwCkBAIC03NTEsNyArNzUxLDcgQEAgUVZhcmlhbnQgUVdlYkVsZW1lbnQ6OmV2YWx1YXRl
SmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHRTb3VyY2UpCiAgICAgaWYgKCFzZXR1cFNj
cmlwdENvbnRleHQobV9lbGVtZW50LCB0aGlzVmFsdWUsIHN0YXRlLCBzY3JpcHRDb250cm9sbGVy
KSkKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CiAgICAgSlNDOjpTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbiA9IHN0YXRlLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hh
aW4oKTsKLSAgICBKU0M6OlVTdHJpbmcgc2NyaXB0KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0
IFVDaGFyKj4oc2NyaXB0U291cmNlLmRhdGEoKSksIHNjcmlwdFNvdXJjZS5sZW5ndGgoKSk7Cisg
ICAgU3RyaW5nIHNjcmlwdChyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBVQ2hhcio+KHNjcmlw
dFNvdXJjZS5kYXRhKCkpLCBzY3JpcHRTb3VyY2UubGVuZ3RoKCkpOwogCiAgICAgSlNDOjpKU1Zh
bHVlIGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRpb25SZXN1
bHQgPSBKU0M6OmV2YWx1YXRlKHN0YXRlLCBzY29wZUNoYWluLCBKU0M6Om1ha2VTb3VyY2Uoc2Ny
aXB0KSwgdGhpc1ZhbHVlLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHAKaW5kZXggZDE4ODBjZjNmYzZiYjk1ZDFhNTk1NTc0Nzk0MzAxNGQ5N2I5MDBiMy4uMDYyY2Yx
NDE2NDViNTNjZDUzOTI3NWY0YmRkNWUwYWYwNTk3NjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cApAQCAtMjUzOSw3ICsyNTM5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KIAogICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gYW55V29ybGRHbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFN0cmluZyByZXN1bHRTdHJp
bmcgPSB1c3RyaW5nVG9TdHJpbmcocmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CisgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1dURlN0cmluZyhleGVjKTsKICAg
ICAqZXZhbHVhdGlvblJlc3VsdCA9IEJTdHJpbmcocmVzdWx0U3RyaW5nKS5yZWxlYXNlKCk7CiAK
ICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggNzBkNDkxZWRiMTRjYTNm
YmM3ZTZiYWI0NjUxNzhmODA5ODRhNjg4NS4uYzNmZGVkNmIxNDIwNDYxNDA0YzFkMjBiNTk4MTQ0
NmQwYWQ2YWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTMxOTgsNyArMzE5OCw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdEZyb21TdHJpbmcoCiAgICAgZWxzZSBpZiAoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LmlzU3Ry
aW5nKCkpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBjb3JlRnJhbWUtPnNjcmlw
dCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCk7
CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgICpyZXN1bHQg
PSBCU3RyaW5nKHVzdHJpbmdUb1N0cmluZyhzY3JpcHRFeGVjdXRpb25SZXN1bHQuZ2V0U3RyaW5n
KGV4ZWMpKSk7CisgICAgICAgICpyZXN1bHQgPSBCU3RyaW5nKHNjcmlwdEV4ZWN1dGlvblJlc3Vs
dC5nZXRTdHJpbmcoZXhlYykpOwogICAgIH0KIAogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZy
YW1lLmNwcAppbmRleCA5NDJjNGJlYWFhYjFiYjNiZjQwNGIzYjgyMjdmNTc0MmRhY2M1YTE5Li5h
YWE3NjE0ZWZhM2I2NDEzYjcxMGUwZTg1YWFkOTUxZDZmZTkyZjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1l
LmNwcApAQCAtNTQsOCArNTQsOCBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50V3guaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudFd4LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAppbmRleCBhY2I2MGY2NDMxZTY0ZWJhYWZlZGY1
OTM3ZDgxYTBlZTdjNzJhY2U2Li40Zjg0YTFiM2Q0OTQzOTIzMTA3MzI3NzQ1OGIxOWExOTkzNzJl
NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAKQEAgLTcyLDkgKzcyLDkgQEAKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCiAjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCmlu
ZGV4IGVkZjQyZTRkNWU4M2YyZmIzMTcyMmRhMjAzODFlMzM0ZGI0NmM0ZTUuLjQ2ZWZmMDlkNmMx
OWEwZDlmYmU4YzkxZDQ3YmY3ZTA4ODNiODBhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgSlNOUE1ldGhvZDo6SlNOUE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTlBJZGUKIHsKIH0KIAotdm9pZCBKU05QTWV0
aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJp
bmcmIG5hbWUpCit2b2lkIEpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE1ldGhvZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBNZXRob2QuaAppbmRleCAzY2IzM2ZjNDE2YTg0MGE5MGJmZTZiZGViMjFjODg0NjFhOGMxNTdl
Li45MzYxNGQ1MmQzZGM2OWMwMzZjZWEyYmJhMzllZGVhMDJkZjQ4MTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9k
LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSlNOUE1ldGhvZCA6IHB1YmxpYyBKU0M6OkludGVy
bmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CiAKLSAgICBzdGF0aWMgSlNOUE1ldGhvZCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6VVN0cmlu
ZyYgbmFtZSwgTlBJZGVudGlmaWVyIG5wSWRlbnQpCisgICAgc3RhdGljIEpTTlBNZXRob2QqIGNy
ZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5QSWRlbnRpZmllciBucElkZW50KQogICAgIHsKICAg
ICAgICAgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlw
ZSgpKTsKICAgICAgICAgSlNOUE1ldGhvZCogbWV0aG9kID0gbmV3IChKU0M6OmFsbG9jYXRlQ2Vs
bDxKU05QTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSlNOUE1ldGhvZChnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgbnBJZGVudCk7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBOUElkZW50
aWZpZXIgbnBJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9ucElkZW50aWZpZXI7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBj
b25zdCBKU0M6OlVTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpK
U0dsb2JhbERhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiBwcml2YXRlOiAgICAKICAgICBK
U05QTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QSWRlbnRp
Zmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggNTRmZWMwYzFhMjczOGEzMGM4N2MzNzkxMzI2
MzY4Y2UxYWVlMmI4Mi4uOWFhOTAxNjlmOWZmODljYjYxMTM1NzVjMWQzMDczNzM0MTcwYmIwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RhdGljIE5QSWRlbnRpZmllciBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFVTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
ICAgICBpZiAobmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE5QSWRlbnRpZmllcj4oSWRlbnRpZmllclJlcDo6Z2V0KG5hbWUudXRmOCgpLmRh
dGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAppbmRleCAzNTg1MzNmZWJm
Yzg2MjdiOWMzYWNhZjY2MDY4MTRlYjhkZDI3MWFhLi5hNTI1ZmI5YjhmZDZiYTZjZTRmZDVjZTdm
ZDlhMTc4MWY5M2EzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcApAQCAt
MTc4LDcgKzE3OCw3IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRv
TlBWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLWJvb2wgTlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamVj
dCogbnBPYmplY3QsIGNvbnN0IFN0cmluZyZzY3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0
KQorYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0KQogewogICAgIFN0
cm9uZzxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0KHRoaXMtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxEYXRhKCksIHRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoIWdsb2JhbE9iamVj
dCkKQEAgLTE5MCw3ICsxOTAsNyBAQCBib29sIE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUo
TlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZ2V0T3JDcmVhdGVKU09iamVjdChnbG9iYWxPYmplY3QuZ2V0KCksIG5w
T2JqZWN0KTsKIAogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2Vy
LnN0YXJ0KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IEpTQzo6ZXZhbHVhdGUoZXhlYywg
Z2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2UoVVN0cmluZyhzY3Jp
cHRTdHJpbmcuaW1wbCgpKSksIHRoaXNWYWx1ZSk7CisgICAgSlNWYWx1ZSByZXN1bHRWYWx1ZSA9
IEpTQzo6ZXZhbHVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIG1h
a2VTb3VyY2Uoc2NyaXB0U3RyaW5nKSwgdGhpc1ZhbHVlKTsKICAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBjb252ZXJ0SlNWYWx1ZVRv
TlBWYXJpYW50KGV4ZWMsIHJlc3VsdFZhbHVlLCAqcmVzdWx0KTsKQEAgLTI2Nyw3ICsyNjcsNyBA
QCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRl
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7Ci0gICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgc3RyaW5nVG9V
U3RyaW5nKGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSkpOworICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQog
ICAgIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYKaW5kZXggMWJmMDc4ZjViN2UwYTYyODgyZjA0NTUzZDYzMjU0NmQ4Y2JlOTcyNi4u
ZjUxMDJlNjY3Y2Q2YmE5MDNmOTdhM2VkZjQxNjEyNDc5ODA3NDM2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZgpAQCAtMjc2LDcgKzI3Niw3IEBAIEVYUE9SVFMKICAgICAgICAgP3NldEFsbG93c1Jv
dW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCiAgICAgICAgID9wcm9maWxlckVu
YWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVfTlhaCiAgICAgICAgID9zZXRQ
cm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWgotICAg
ICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVj
U3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpTU3RyaW5n
QEpTQ0BAQEpTQ0BAVT8kUHRySGFzaEBQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0
c0BQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BK
U0NAQEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWiAgICAgICAgCisgICAgICAgID9q
c1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4
ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJp
bmdASlNDQEBASlNDQEBVPyRQdHJIYXNoQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJh
aXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5n
QEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaICAgICAgICAKICAgICAgICAg
P3JlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3lAU2NoZW1l
UmVnaXN0cnlAV2ViQ29yZUBAU0FYQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3JlbW92ZVVS
TFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeUBTY2hlbWVS
ZWdpc3RyeUBXZWJDb3JlQEBTQVhBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/aWNvblVSTHNA
RG9jdW1lbnRAV2ViQ29yZUBAUUFFQUJWPyRWZWN0b3JAVUljb25VUkxAV2ViQ29yZUBAJDBBQEBX
VEZAQFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYg
Yi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggNTYxZGIyMjIwZjA0
OTU3OTliZDM0YjZkNzNhODQyOTMxZTc5N2RiMy4uYmIxYTBkMjM4MzJlMGY4NDlhZDU4YjQwNGYz
YWIyMGQ5OTZhYWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxp
dGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMjY3
LDYgKzI2Nyw2IEBAIEVYUE9SVFMKICAgICAgICAgP3Byb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JD
b250cm9sbGVyQFdlYkNvcmVAQFFBRV9OWFoKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJ
bnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAJPz8xQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFFQFhaCi0gICAgICAgID9qc1N0cmluZ1Nsb3dDYXNlQFdl
YkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZT
dHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVPyRQdHJIYXNoQFBB
VlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBV
PyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3Ry
aW5nSW1wbEA2QEBaCisgICAgICAgID9qc1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlQFdlYkNvcmVA
QFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJ
bXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVPyRQdHJIYXNoQFBBVlN0cmlu
Z0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNo
VHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1w
bEA2QEBaCiAgICAgICAgID9yZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3Vy
aXR5UG9saWN5QFNjaGVtZVJlZ2lzdHJ5QFdlYkNvcmVAQFNBWEFCVlN0cmluZ0BXVEZAQEBaCiAg
ICAgICAgID9yZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJp
dHlQb2xpY3lAU2NoZW1lUmVnaXN0cnlAV2ViQ29yZUBAU0FYQUJWU3RyaW5nQFdURkBAQFoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGFmNGJmZjZhOWI5NTEyYmFiYWNhOGUxZDk0ZTI0NmI3
NzRjYWU5NzguLmM2ZjBiNGRiODZlMzFjYmU0ZTQ0NWYxMDkxZWMzZjIwMWU4NDA2ZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjksNyArNjksNiBAQCBfWk43V2ViQ29yZTE1c2V0RE9N
RXhjZXB0aW9uRVBOM0pTQzlFeGVjU3RhdGVFaTsKIF9aTjdXZWJDb3JlMTV0b0RPTVN0cmluZ0xp
c3RFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFOwogX1pON1dlYkNvcmUxNkhUTUxJbnB1
dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3Jl
MTZIVE1MSW5wdXRFbGVtZW50MTVzZXRFZGl0aW5nVmFsdWVFUktOM1dURjZTdHJpbmdFOwotX1pO
N1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1h
cElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFz
aElTNl9FRU5TM18xMEhhc2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl87CiBfWk43V2ViQ29y
ZTE2c2NyaXB0TmFtZVRvQ29kZUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTE3Y2FjaGVE
T01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05T
Ml85Q2xhc3NJbmZvRTsKIF9aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2c2F2ZURvY3Vt
ZW50QW5kU2Nyb2xsU3RhdGVFdjsKQEAgLTkyLDYgKzkxLDcgQEAgX1pON1dlYkNvcmUyNENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjlsYXN0Q2hpbGRFdjsKIF9aTjdXZWJDb3JlMjREb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIxMG1hcmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIx
MU1hcmtlclR5cGVzRTsKIF9aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxOGFk
ZFRleHRNYXRjaE1hcmtlckVQS05TXzVSYW5nZUViOwogX1pON1dlYkNvcmUyNWNvbXB1dGVWaWV3
cG9ydEF0dHJpYnV0ZXNFTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0VpaWlmTlNfN0ludFNpemVFOwor
X1pON1dlYkNvcmUyNWpzU3RyaW5nV2l0aENhY2hlU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVS
TjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VF
RU5TM183UHRySGFzaElTNl9FRU5TM18xMEhhc2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl8K
IF9aTjdXZWJDb3JlMzBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFUktOM1dURjZWZWN0
b3JJTlMwXzZTdHJpbmdFTGowRUVFOwogX1pON1dlYkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJl
ZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0cmluZ0VMbTBFRUU7CiBfWk43V2ViQ29y
ZTQwcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZUVSTlNfMThWaWV3cG9y
dEF0dHJpYnV0ZXNFTlNfN0ludFNpemVFOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgzODE1ZDI3NDEyMDM4ZjI0ODhjNzhmYjVjMjE1NDJjMGRm
ZTNkNTQuLmRlM2ZiY2Q3MTYxOGY0NGUyYjJjZTM3ZGQ0ZWJiOWM4NjU3YjFiZjQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBHZXQgcmlkIG9mIFVTdHJpbmcuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHA6CisgICAg
ICAgICogZ2RiL3dlYmtpdC5weToKKyAgICAgICAgKFdURlN0cmluZ1ByaW50ZXIudG9fc3RyaW5n
KToKKyAgICAgICAgKEpTQ0lkZW50aWZpZXJQcmludGVyLnRvX3N0cmluZyk6CisgICAgICAgIChK
U0NKU1N0cmluZ1ByaW50ZXIudG9fc3RyaW5nKToKKyAgICAgICAgKGFkZF9wcmV0dHlfcHJpbnRl
cnMpOgorCiAyMDEyLTA4LTI5ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+
CiAKICAgICAgICAgUmFuZG9tIHRlc3Qtd2Via2l0cHkgZmFpbHVyZXMgb24gdGhlIGJ1aWxkYm90
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHAKaW5kZXgg
NjFmZjdiYWE0ZmRiNTYxMjU1ZTdlYTA2OWM5ZDA4Njc0MzJmZjZmYS4uMWI2YzBiMDk4MjJmZjcx
MmU3MDAyM2VkZWI5ZjQ0MTcxN2RjM2E2NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9Xb3JrUXVldWVJdGVtRWZsLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgPEVXZWJL
aXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBib29sIExvYWRJdGVtOjppbnZva2UoKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvVG9vbHMvZ2RiL3dlYmtpdC5weSBiL1Rvb2xzL2dkYi93ZWJr
aXQucHkKaW5kZXggMWIyYWU1NzUxNmI0ZWU0MTdmOTQ5YWYxNGFkYjMzYzUwYjMwM2NiMS4uYmRm
M2QwODkwMjExYjYyZmMyYjc0MGNkMDRlMzQ4NzgwZjdjMWVmZSAxMDA2NDQKLS0tIGEvVG9vbHMv
Z2RiL3dlYmtpdC5weQorKysgYi9Ub29scy9nZGIvd2Via2l0LnB5CkBAIC0xNTEsMTMgKzE1MSwx
MSBAQCBjbGFzcyBXVEZTdHJpbmdQcmludGVyKFN0cmluZ1ByaW50ZXIpOgogICAgICAgICByZXR1
cm4gc2VsZi5zdHJpbmdpbXBsX3B0cigpLmRlcmVmZXJlbmNlKCkKIAogCi1KU0NVU3RyaW5nUHJp
bnRlciA9IFdURlN0cmluZ0ltcGxQcmludGVyCi0KIAogY2xhc3MgSlNDSWRlbnRpZmllclByaW50
ZXIoU3RyaW5nUHJpbnRlcik6CiAgICAgIlByaW50IGEgSlNDOjpJZGVudGlmaWVyIgogICAgIGRl
ZiB0b19zdHJpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiBKU0NVU3RyaW5nUHJpbnRlcihzZWxm
LnZhbFsnbV9zdHJpbmcnXSkudG9fc3RyaW5nKCkKKyAgICAgICAgcmV0dXJuIFdURlN0cmluZ0lt
cGxQcmludGVyKHNlbGYudmFsWydtX3N0cmluZyddKS50b19zdHJpbmcoKQogCiAKIGNsYXNzIEpT
Q0pTU3RyaW5nUHJpbnRlcihTdHJpbmdQcmludGVyKToKQEAgLTE2Niw3ICsxNjQsNyBAQCBjbGFz
cyBKU0NKU1N0cmluZ1ByaW50ZXIoU3RyaW5nUHJpbnRlcik6CiAgICAgICAgIGlmIHNlbGYudmFs
WydtX2xlbmd0aCddID09IDA6CiAgICAgICAgICAgICByZXR1cm4gJycKIAotICAgICAgICByZXR1
cm4gSlNDVVN0cmluZ1ByaW50ZXIoc2VsZi52YWxbJ21fdmFsdWUnXSkudG9fc3RyaW5nKCkKKyAg
ICAgICAgcmV0dXJuIFdURlN0cmluZ0ltcGxQcmludGVyKHNlbGYudmFsWydtX3ZhbHVlJ10pLnRv
X3N0cmluZygpCiAKIAogY2xhc3MgV2ViQ29yZUtVUkxHb29nbGVQcml2YXRlUHJpbnRlcihTdHJp
bmdQcmludGVyKToKQEAgLTI4Miw3ICsyODAsNiBAQCBkZWYgYWRkX3ByZXR0eV9wcmludGVycygp
OgogICAgICAgICAocmUuY29tcGlsZSgiXldURjo6U3RyaW5nSW1wbCQiKSwgV1RGU3RyaW5nSW1w
bFByaW50ZXIpLAogICAgICAgICAocmUuY29tcGlsZSgiXldlYkNvcmU6OktVUkxHb29nbGVQcml2
YXRlJCIpLCBXZWJDb3JlS1VSTEdvb2dsZVByaXZhdGVQcmludGVyKSwKICAgICAgICAgKHJlLmNv
bXBpbGUoIl5XZWJDb3JlOjpRdWFsaWZpZWROYW1lJCIpLCBXZWJDb3JlUXVhbGlmaWVkTmFtZVBy
aW50ZXIpLAotICAgICAgICAocmUuY29tcGlsZSgiXkpTQzo6VVN0cmluZyQiKSwgSlNDVVN0cmlu
Z1ByaW50ZXIpLAogICAgICAgICAocmUuY29tcGlsZSgiXkpTQzo6SWRlbnRpZmllciQiKSwgSlND
SWRlbnRpZmllclByaW50ZXIpLAogICAgICAgICAocmUuY29tcGlsZSgiXkpTQzo6SlNTdHJpbmck
IiksIEpTQ0pTU3RyaW5nUHJpbnRlciksCiAgICAgKQpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Vi
a2l0Lm9yZy9DaGFuZ2VMb2cgYi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwppbmRleCA3
MTQ5ZTE5NmM4OGNlNzRiMjgwNjkwZjUzYzU5OTQwMzk5Zjg1YjUzLi4zYTI4OTIxZjhmZDI0ZWUx
MWQ5ZTM4ZTczYjM2ZDU5MjhlZDNhYTVkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3Jn
L0NoYW5nZUxvZworKysgYi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFVwZGF0ZSB0aGUgY29kaW5n
IHN0eWxlIHRvIGF2b2lkIG1lbnRpb25pbmcgYSBjbGFzcyB0aGF0IG5vIGxvbmdlciBleGlzdC4K
KworICAgICAgICAqIGNvZGluZy9jb2Rpbmctc3R5bGUuaHRtbDoKKwogMjAxMi0wOC0wOSAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGRyZXNzIG9uZSBtb3Jl
IHJldmlldyBjb21tZW50LgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2Rpbmcv
Y29kaW5nLXN0eWxlLmh0bWwgYi9XZWJzaXRlcy93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5
bGUuaHRtbAppbmRleCAyYTVkNmQ2YzhhYzA2ODZiYThiM2I0MDdlMDNmNDMzMzY0OWU0OTQ4Li43
MzVhYjM4MTc5ZjdkZWM0NWFiNzcxMjk1NjMwYTFjNTliMzc2OTM2IDEwMDY0NAotLS0gYS9XZWJz
aXRlcy93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5bGUuaHRtbAorKysgYi9XZWJzaXRlcy93
ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5bGUuaHRtbApAQCAtOTQxLDcgKzk0MSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiA8L3ByZT4KIDxoNCBjbGFzcz0id3JvbmciPldyb25nOjwvaDQ+
CiA8cHJlIGNsYXNzPSJjb2RlIj4KLS8vIHJ1bnRpbWUvVVN0cmluZy5oCisvLyBydW50aW1lL0pT
T2JqZWN0LmgKIAogbmFtZXNwYWNlIFdURiB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161492</attachid>
            <date>2012-08-30 09:29:43 -0700</date>
            <delta_ts>2012-08-30 12:47:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95271-20120830092926.patch</filename>
            <type>text/plain</type>
            <size>554641</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDAxY2E4ZjgxNDY4ZmZkMmI3MmFmMmQ1ZTg2NGJhNGIzMmQ1YmI1Li5kOGZhNjY0ZTY0MzY3NTk2
ZDQ1N2E1ODA5NjBiNzkxOWMzZmZlNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBIYXZpbmcgSlNDOjpV
U3RyaW5nIGFuZCBXVEY6OlN0cmluZyBpbmNyZWFzZSB0aGUgY29tcGxleGl0eSBvZiB3b3JraW5n
IG9uIFdlYktpdCwgYW5kCisgICAgICAgIGFkZCB1c2VsZXNzIGNvbnZlcnNpb25zIGluIHRoZSBi
aW5kaW5ncy4gSXQgYWxzbyBjYXVzZSBzb21lIGNvZGUgYmxvYXQuCisKKyAgICAgICAgVGhlIHBl
cmZvcm1hbmNlIGFkdmFudGFnZXMgb2YgVVN0cmluZyBoYXZlIGJlZW4gcG9ydGVkIG92ZXIgaW4g
cHJldmlvdXMgcGF0Y2hlcy4gVGhpcyBwYXRjaAorICAgICAgICBpcyB0aGUgbGFzdCBzdGVwOiBn
ZXR0aW5nIHJpZCBvZiBVU3RyaW5nLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzaW1w
bGlmaWVkIGNvZGUsIHRoaXMgYWxzbyByZWR1Y2UgdGhlIGJpbmFyeSBzaXplIGJ5IDE1a2Igb24g
eDg2XzY0LgorCisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmNwcDoKKyAgICAgICAgKE9w
YXF1ZUpTU3RyaW5nOjp1c3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
KyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6dXN0cmluZyk6CisgICAgICAgIFRvIGF2b2lkIGNo
YW5naW5nIGV2ZXJ5dGhpbmcgYXQgb25jZSwgdGhlIGZ1bmN0aW9uIG5hbWVkIHVzdHJpbmcoKSB3
ZXJlIGtlcHQgYXMgaXMuIFRoZXkKKyAgICAgICAgd2lsbCBiZSByZW5hbWVkIGluIGEgZm9sbG93
IHVwIHBhdGNoLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6c3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmcp
OgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgIFNpbmNlIEpTVmFs
dWU6OnRvU3RyaW5nKCkgYWxyZWFkeSBleGlzdCAoYW5kIHJldHVybiB0aGUgSlNTdHJpbmcpLCB0
aGUgZGlyZWN0IGFjY2Vzc29yIGlzIHJlbmFtZWQKKyAgICAgICAgdG8gOjp0b1dURlN0cmluZygp
LiBXZSBtYXkgY2hhbmdlIDo6c3RyaW5nKCkgdG8gOjpqc1N0cmluZygpIGFuZCA6OnRvV1RGU3Ry
aW5nKCkgdG8gOjp0b1N0cmluZygpCisgICAgICAgIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVC
YWNrcmVmZXJlbmNlc1Nsb3cpOiBSZXBsYWNlIHRoZSB1c2Ugb2YgVVN0cmluZzo6Z2V0Q2hhcmFj
dGVyczw+KCkgYnkgU3RyaW5nOjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydDw+KCkuCisKIDIw
MTItMDgtMjkgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgdXNlIG9mIENsYXNzSW5mbyBmcm9tIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1l
bnRzIGFuZCBjb21waWxlR2V0QXJndW1lbnRzTGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZjY2VlMzdmZWMyOTk1Zjhj
NDVkMmIwZTFlZWZkODgxM2YzOTNlMGIuLjZhMGNiOThjNjUwZmE0OGYyOWQ5NTQ1ZDVhYWY3ZmQy
NjM0MmM5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxh
aW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcg
YnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDogVXNlbGVzcyBlZGl0IHRvIGZvcmNlIGEgZnVsbCBidWls
ZC4gVGhpcyBpcyBuZWVkZWQgZm9yIHNvbWUgYm90cyBmb3Igc29tZSByZWFzb24uCisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6IEV4cG9ydCBhIHN5bWJvbCB0aGF0IHdhcyBleHBvcnRl
ZCBvbiBVU3RyaW5nIGFuZCBuZWVkZWQgaW4gV2ViQ29yZS4KKworICAgICAgICBBZGQgU3RyaW5n
OjpnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydDw+KCksIHdoaWNoIGlzIHNpbWlsYXIgdG8gU3Ry
aW5nOjpnZXRDaGFyYWN0ZXJzPD4oKSBidXQgd2l0aCB0aGUgc2FtZQorICAgICAgICBiZWhhdmlv
cnMgYXMgVVN0cmluZzo6Z2V0Q2hhcmFjdGVyczw+KCkuCisKKyAgICAgICAgU3RyaW5nOjpnZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydDw+KCkgaXMgdXNlZnVsIHdoZW4gbWFuaXB1bGF0aW5nIG11
bHRpcGxlIHN0cmluZ3MsIGl0IGFsbG93IHdyaXR0aW5nIGNvZGUKKyAgICAgICAgdXNpbmcgMTZi
aXRzIGNoYXJhY3RlcnMgaWYgYW55IG9mIHRoZSBpbnB1dCBTdHJpbmcgaXMgbm90IDhiaXQuCisK
IDIwMTItMDgtMjkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMTI2NzgwKTogQ3Jhc2ggdXNpbmcgU3RyaW5nSW1wbDo6aXM4Qml0
IGJlZm9yZSBjaGVja2luZyBpZiB0aGVyZSBpcyBhbiBpbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q4MjY2
YjQ0OGM4ZmQ2YjNlY2Q5NmNhYmRkNTBkOTYxODdmZjlhYy4uNjk5N2NmMGEyOWY1YTJkNDQ3NGUy
YTUyODU5YTY5NzA5NDJiNGIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA4
LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
cGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFVwZGF0ZSB0aGUgY29kZSB0byB1c2UgU3RyaW5nIGlu
c3RlYWQgb2YgVVN0cmluZy4KKworICAgICAgICBPbiB4ODZfNjQsIHRoaXMgcmVkdWNlcyB0aGUg
YmluYXJ5IHNpemUgYnkgMjJrYi4KKworICAgICAgICBTaW5jZSBpdCBpcyBubyBsb25nZXIgcG9z
c2libGUgdG8gZGlmZmVyZW5jaWF0ZSBKU0M6OmpzU3RyaW5nKCkgYW5kIFdlYkNvcmU6OmpzU3Ry
aW5nKCkgYnkgdGhlIGlucHV0CisgICAgICAgIHR5cGVzLCBXZWJDb3JlOjpqc1N0cmluZygpIGlz
IHJlbmF0ZWQgdG8gV2ViQ29yZTo6anNTdHJpbmdXaXRoQ2FjaGUoKS4KKworICAgICAgICBTaW5j
ZSB0aGUgY2FjaGUgaXMgdXNpbmcgYSBQdHJIYXNoLCBKU0M6OmpzU3RyaW5nKCkgaXMgdXNlZCBp
biBwbGFjZSBvZiB0aGUgb2xkIFdlYkNvcmU6OmpzU3RyaW5nKCkgd2hlbgorICAgICAgICB0aGUg
c3RyaW5nIGlzIGdlbmVyYXRlZCBsb2NhbGx5LiBUaGlzIGlzIGJlY2F1c2UgdGhlIGNhY2hlIGNh
biBuZXZlciBtYXRjaCBpbiB0aG9zZSBjYXNlcy4KKwogMjAxMi0wOC0zMCAgU2hpbnlhIEthd2Fu
YWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXV0aG9yU2hhZG93RE9NIHN1
cHBvcnQgZm9yIHRleHRhcmVhIGVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwNjY4NDgyMzViZTgzNjllNjVkMjdmN2RjZjlhYmE0MWZiZjVkYmFjLi44Y2U1MzZkMjli
NWM3ZDdjYTIyNGQyMjE3MGQyNjZkZDdlNTBmMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6
OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBS
ZXBsYWNlIFVTdHJpbmcgYnkgU3RyaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2xp
ZW50RXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFj
a0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6Omluc3Rh
bGxEb21GdW5jdGlvbik6CisKIDIwMTItMDgtMjkgIE5pbWEgR2hhbmF2YXRpYW4gIDxuZ2hhbmF2
YXRpYW5AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRG8gbm90IHVzZSB0aGUgc2hh
ZG93IHRyZWUgd2hlbiByZXRyaWV2aW5nIHRoZSB1bmRlcmx5aW5nIGVsZW1lbnQgZm9yIEZhdEZp
bmdlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAxNmE4OTFlYTBjMGRmMDM5N2ZlZGRmZDQ3ODNjY2Nh
YWJhYjBiYzg5Li44NTNkMGEwNzM1ZGY1NTA4MjQ4YWNlNmEwMDY0OGEzOTU3N2E3ZDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxh
aW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcg
YnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgUmVwbGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRSZXNwb25zZSk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUpOgorCiAyMDEyLTA4
LTI5ICBLYW1pbCBCbGFuayAgPGsuYmxhbmtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0g
QWRkIHNldHRpbmcgQVBJIGZvciBhbGxvdyB1bml2ZXJzYWwvZmlsZSBhY2Nlc3MgZnJvbSBmaWxl
IFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZGIwOWU4ODdhZTcxN2Q2ODE2ZGZlYzI0NTI5ZDI2
OWUwNTQzYmQ2Ny4uZWIyOWFmMzc3ZmFjOTg5Y2EwZGM0N2E1N2ZhOTUyOWFmNzViZDliYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5n
IGJ5IFdURjo6U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisg
ICAgICAgIFJlcGxhY2UgVVN0cmluZyBieSBTdHJpbmcuCisKKyAgICAgICAgKiBnZG9tL0NvbnZl
cnRUb0dDaGFyUHJpdmF0ZS5oOgorICAgICAgICAoY29weUFzR2NoYXIpOgorCiAyMDEyLTA4LTI5
ICBKb3PDqSBEYXBlbmEgUGF6ICA8amRhcGVuYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHdGtd
IFByb2Nlc3MgR3RrIDMuNCBzbW9vdGggc2Nyb2xsIGV2ZW50cyBwcm9wZXJseS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCAxMWYwMzU4ZGI0OTc0NTNhZTIxY2IzMzczYWRjMmYzMGQxMjNkOTFkLi44YzU2
NTg5YTg4ZDA1OGJlMjA4ZmFhNWQzOGFlYWU2ZGE0ZDY3ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgR2V0IHJpZCBv
ZiBVU3RyaW5nLCByZXBsYWNlIGl0IGJ5IFN0cmluZywgYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHdo
ZW4gcG9zc2libGUuCisKKyAgICAgICAgT24geDg2XzY0LCB0aGlzIHJlZHVjZXMgdGhlIGJpbmFy
eSBzaXplIGJ5IDdrYi4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdFByb3h5Lm1tOgorICAgICAgICAoaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKToKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0Fy
cmF5KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojptb3Zl
R2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1By
b3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5UnVudGltZU1ldGhvZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2RzTmFtZWQpOgorICAgICAgICAo
V2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdEZyb21TdHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOndpdGhHbG9iYWxPYmplY3Q6
aW5TY3JpcHRXb3JsZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdh
dGUubW06CisgICAgICAgICgtW1dlYlNjcmlwdENhbGxGcmFtZSBmdW5jdGlvbk5hbWVdKToKKyAg
ICAgICAgKC1bV2ViU2NyaXB0Q2FsbEZyYW1lIGV2YWx1YXRlV2ViU2NyaXB0Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaDoKKyAgICAgICAgKFdURik6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXIpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW06CisgICAgICAgICh0b05TVVJMKToKKyAgICAgICAgKFdlYlNj
cmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVlKToKKwogMjAxMi0wOC0yOSAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQWRkIGljb25VUkwgdG8gV2ViTm90
aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDdkNjk1OWQ3MDY2NDVlM2VjYjk0YmZmMmRjYWQ2
YzgwM2U0ZmM3MjMuLjExODFhYTg2ZjQ1YmU3ZjI3ZWEzNGVkYTNjMjBiMjE2MzkwOTJjYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxh
aW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcg
YnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgUmVwbGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAgICAqIEFwaS9xd2ViZWxl
bWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKwog
MjAxMi0wOC0yOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBGaXggZG9jIGdlbmVyYXRpb24gd2l0aCBtYWtlIGRvY3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCBmNjAxOWEyYjU5ZjM5MTg2ODBjZjg0NmU3NTA2NTUzZDQ1Yzc0OTEzLi4wN2U0
YTZlYjdlNTNiY2FkZDRmNDUzMjFiOTZmNDVlOGNkOTMwN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgUmVwbGFjZSBV
U3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZCk6CisgICAg
ICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZyk6CisKIDIwMTItMDgtMjkgIERvbWluaWMgTWF6em9uaSAgPGRt
YXp6b25pQGdvb2dsZS5jb20+CiAKICAgICAgICAgQVg6IENhbnZhcyBzaG91bGQgaGF2ZSBhIGRp
c3RpbmN0IHJvbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMTk1MmJiYmYwMTM5YmU0ZGJlZWUyMmFjMmRj
ZmVjZWU1NDA4ODk2OC4uMzcxODNjZjQ2ZDE3OTgyNjQ4ZDA4YWNiZTllMGFjNzQ2ZTI3NTI1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91
bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmlu
ZyBieSBXVEY6OlN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICBVcGRhdGUgdGhlICNpbmNsdWRlcyB0byB1c2UgdGhlIGNvcnJlY3QgdHlwZXMuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisKIDIwMTIt
MDgtMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSByZWxlYXNlIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6bV9wbHVnaW5XaWRnZXQgcmVmcHRy
IHVwb24gUGx1Z2luIERvY3VtZW50IGRldGFjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MjBhN2JlNDg4MTkw
YTcwZTVmZTNjZmM2NWU2ZTAxNjRhNzQ2M2NjLi42ZDVjOTIxY2U4NDFlNWExYjU3ZjVjZjc4MDIy
YmEwZTdmZGE4YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDgtMzAgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBK
U0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisKKyAgICAgICAgVXBkYXRlIHRvIGNvZGUgdG8gc3dpdGNoIGZyb20gVVN0cmluZyB0
byBTdHJpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1l
dGhvZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oOgorICAg
ICAgICAoV2ViS2l0OjpKU05QTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAoSlNOUE1ldGhvZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6
CisKIDIwMTItMDgtMjkgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gUmVwbGFjZSBQYWdlQ2xpZW50SW1wbCB3aXRoIGV3ayB2aWV3IGlu
IGNvbnN0cnVjdG9yIG9mIEVmbFZpZXdwb3J0SGFuZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAppbmRleCA1OWRlMTg2YjBhYmE3ZDEx
NTJlYWViMTkxNDNjMjkwZTk5NWViMGU3Li4wZjYzZDNjMTY2OWNmMmZkMDk0YWUyOTIwYzRkYmNl
ZWU5ZWZjYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
RnVuY3Rpb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIEpTQ2FsbGJhY2tGdW5jdGlvbjo6SlNDYWxs
YmFja0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsCiB7
CiB9CiAKLXZvaWQgSlNDYWxsYmFja0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCit2b2lkIEpTQ2FsbGJhY2tGdW5j
dGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbmFtZSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4IDQwYmVmOGM0ODcyNGM5NDJjNGIzMzlh
Y2JlZWM0MzIxYzVhZGQ4NDEuLjUwNjMwYjU1MDNlNWU0ZTIyNmI0Y2M1ZGUwMDk0ODI4NTA4OWJl
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24u
aApAQCAtMzQsMTIgKzM0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNDYWxsYmFja0Z1
bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHJvdGVjdGVkOgogICAgIEpTQ2Fs
bGJhY2tGdW5jdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxs
YmFjayk7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3Ry
aW5nJiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKIAotICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgSlND
YWxsYmFja0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVu
Y3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpl
eGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7
CiAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRl
eCAyYzNlMGU4NTlmMTZlODk1ODFhMmZhMzU2Yjg0OTJmMjAzNzkyMDdkLi4zNmQ3ZmE5YzI1NjBk
ZTA3NTcwOWY2MTkyNGJiZTZiMjU5OGJjMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMTcxLDcgKzE3MSw3IEBAIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBQcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmcgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgfCBPdmVycmlkZXNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgUGFyZW50OjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKKyAg
ICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogCiAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCAxNjBmNDg4ODdiODcyYzI5
YmMzZTJhZGJlZGM5MWVmYWZjZDRkOTM5Li44MzI2YzA1NzlhYTA3MWMzNzU3MzdlZjY0MjdjZTMx
ZDdhYzYwMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMTExLDEwICsxMTEsMTAgQEAgdm9pZCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmluaXQoRXhlY1N0YXRlKiBleGVjKQogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyZW50PgotVVN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmFt
ZShjb25zdCBKU09iamVjdCogb2JqZWN0KQorU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgY29uc3QgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU0NhbGxiYWNrT2JqZWN0Kj4o
b2JqZWN0KTsKLSAgICBVU3RyaW5nIHRoaXNDbGFzc05hbWUgPSB0aGlzT2JqZWN0LT5jbGFzc1Jl
ZigpLT5jbGFzc05hbWUoKTsKKyAgICBTdHJpbmcgdGhpc0NsYXNzTmFtZSA9IHRoaXNPYmplY3Qt
PmNsYXNzUmVmKCktPmNsYXNzTmFtZSgpOwogICAgIGlmICghdGhpc0NsYXNzTmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB0aGlzQ2xhc3NOYW1lOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggMTM0NDMxNjU0Nzg5MTVmOGExM2E0ZGJkMzgw
NDQxZWQyNGJjNGQyZC4uYTk1ZDQyZTM5ZWQxMzM5MjcyOTY5MWUxOTAzMDI4NjE3NjYwZTM0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCkBAIC00MiwyMCArNDIs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCiBjb25zdCBKU0NsYXNzRGVmaW5p
dGlvbiBrSlNDbGFzc0RlZmluaXRpb25FbXB0eSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwogCi1zdGF0aWMgaW5saW5lIFVTdHJpbmcgdHJ5
Q3JlYXRlU3RyaW5nRnJvbVVURjgoY29uc3QgY2hhciogc3RyaW5nKQotewotICAgIGlmICghc3Ry
aW5nKQotICAgICAgICByZXR1cm4gVVN0cmluZygpOwotCi0gICAgc2l6ZV90IGxlbmd0aCA9IHN0
cmxlbihzdHJpbmcpOwotICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gYnVmZmVyKGxlbmd0aCk7Ci0g
ICAgVUNoYXIqIHAgPSBidWZmZXIuZGF0YSgpOwotICAgIGlmIChjb252ZXJzaW9uT0sgIT0gY29u
dmVydFVURjhUb1VURjE2KCZzdHJpbmcsIHN0cmluZyArIGxlbmd0aCwgJnAsIHAgKyBsZW5ndGgp
KQotICAgICAgICByZXR1cm4gVVN0cmluZygpOwotCi0gICAgcmV0dXJuIFVTdHJpbmcoYnVmZmVy
LmRhdGEoKSwgcCAtIGJ1ZmZlci5kYXRhKCkpOwotfQotCiBPcGFxdWVKU0NsYXNzOjpPcGFxdWVK
U0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBPcGFxdWVKU0NsYXNz
KiBwcm90b0NsYXNzKSAKICAgICA6IHBhcmVudENsYXNzKGRlZmluaXRpb24tPnBhcmVudENsYXNz
KQogICAgICwgcHJvdG90eXBlQ2xhc3MoMCkKQEAgLTcwLDE0ICs1NiwxNCBAQCBPcGFxdWVKU0Ns
YXNzOjpPcGFxdWVKU0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBP
cGFxdWVKU0NsYXNzKgogICAgICwgY2FsbEFzQ29uc3RydWN0b3IoZGVmaW5pdGlvbi0+Y2FsbEFz
Q29uc3RydWN0b3IpCiAgICAgLCBoYXNJbnN0YW5jZShkZWZpbml0aW9uLT5oYXNJbnN0YW5jZSkK
ICAgICAsIGNvbnZlcnRUb1R5cGUoZGVmaW5pdGlvbi0+Y29udmVydFRvVHlwZSkKLSAgICAsIG1f
Y2xhc3NOYW1lKHRyeUNyZWF0ZVN0cmluZ0Zyb21VVEY4KGRlZmluaXRpb24tPmNsYXNzTmFtZSkp
CisgICAgLCBtX2NsYXNzTmFtZShTdHJpbmc6OmZyb21VVEY4KGRlZmluaXRpb24tPmNsYXNzTmFt
ZSkpCiB7CiAgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3Rh
dGljVmFsdWUqIHN0YXRpY1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7CiAgICAg
ICAgIG1fc3RhdGljVmFsdWVzID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1
ZXNUYWJsZSk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+bmFtZSkgewotICAgICAgICAg
ICAgVVN0cmluZyB2YWx1ZU5hbWUgPSB0cnlDcmVhdGVTdHJpbmdGcm9tVVRGOChzdGF0aWNWYWx1
ZS0+bmFtZSk7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gU3RyaW5nOjpmcm9tVVRG
OChzdGF0aWNWYWx1ZS0+bmFtZSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlTmFtZS5pc051bGwo
KSkKICAgICAgICAgICAgICAgICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCks
IGFkb3B0UHRyKG5ldyBTdGF0aWNWYWx1ZUVudHJ5KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwg
c3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcykpKTsKICAg
ICAgICAgICAgICsrc3RhdGljVmFsdWU7CkBAIC04Nyw3ICs3Myw3IEBAIE9wYXF1ZUpTQ2xhc3M6
Ok9wYXF1ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1
ZUpTQ2xhc3MqCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9u
ID0gZGVmaW5pdGlvbi0+c3RhdGljRnVuY3Rpb25zKSB7CiAgICAgICAgIG1fc3RhdGljRnVuY3Rp
b25zID0gYWRvcHRQdHIobmV3IE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZSk7CiAg
ICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkgewotICAgICAgICAgICAgVVN0cmlu
ZyBmdW5jdGlvbk5hbWUgPSB0cnlDcmVhdGVTdHJpbmdGcm9tVVRGOChzdGF0aWNGdW5jdGlvbi0+
bmFtZSk7CisgICAgICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gU3RyaW5nOjpmcm9tVVRG
OChzdGF0aWNGdW5jdGlvbi0+bmFtZSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5p
c051bGwoKSkKICAgICAgICAgICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9u
TmFtZS5pbXBsKCksIGFkb3B0UHRyKG5ldyBTdGF0aWNGdW5jdGlvbkVudHJ5KHN0YXRpY0Z1bmN0
aW9uLT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKSk7CiAgICAg
ICAgICAgICArK3N0YXRpY0Z1bmN0aW9uOwpAQCAtMTcwLDEwICsxNTYsMTAgQEAgT3BhcXVlSlND
bGFzc0NvbnRleHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuICpjb250ZXh0RGF0YTsKIH0KIAotVVN0cmluZyBPcGFxdWVKU0NsYXNz
OjpjbGFzc05hbWUoKQorU3RyaW5nIE9wYXF1ZUpTQ2xhc3M6OmNsYXNzTmFtZSgpCiB7CiAgICAg
Ly8gTWFrZSBhIGRlZXAgY29weSwgc28gdGhhdCB0aGUgY2FsbGVyIGhhcyBubyBjaGFuY2UgdG8g
cHV0IHRoZSBvcmlnaW5hbCBpbnRvIElkZW50aWZpZXJUYWJsZS4KLSAgICByZXR1cm4gVVN0cmlu
ZyhtX2NsYXNzTmFtZS5jaGFyYWN0ZXJzKCksIG1fY2xhc3NOYW1lLmxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gbV9jbGFzc05hbWUuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIE9wYXF1ZUpTQ2xhc3NTdGF0
aWNWYWx1ZXNUYWJsZSogT3BhcXVlSlNDbGFzczo6c3RhdGljVmFsdWVzKEpTQzo6RXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuaAppbmRleCA4MmM3YWIz
Zjk3MjllM2RmZGNmYTlkYjlkYzdiMWI4YjgwODE4NWFkLi40NGQ1ZDExYjk1MjVlZGU3YjI0ZGEz
NGYxMGRjZWUyZDBmZjNiZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2xhc3NSZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYu
aApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIldlYWsuaCIKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3Ry
dWN0IFN0YXRpY1ZhbHVlRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
ODksNyArODksNyBAQCBzdHJ1Y3QgT3BhcXVlSlNDbGFzcyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxPcGFxdWVKU0NsYXNzPiB7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlND
bGFzcz4gY3JlYXRlTm9BdXRvbWF0aWNQcm90b3R5cGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24q
KTsKICAgICB+T3BhcXVlSlNDbGFzcygpOwogICAgIAotICAgIEpTQzo6VVN0cmluZyBjbGFzc05h
bWUoKTsKKyAgICBTdHJpbmcgY2xhc3NOYW1lKCk7CiAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1Zh
bHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBPcGFxdWVKU0Ns
YXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyhKU0M6OkV4ZWNTdGF0ZSop
OwogICAgIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTE4
LDggKzExOCw4IEBAIHByaXZhdGU6CiAKICAgICBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIGNv
bnRleHREYXRhKEpTQzo6RXhlY1N0YXRlKik7CiAKLSAgICAvLyBVU3RyaW5ncyBpbiB0aGVzZSBk
YXRhIG1lbWJlcnMgc2hvdWxkIG5vdCBiZSBwdXQgaW50byBhbnkgSWRlbnRpZmllclRhYmxlLgot
ICAgIEpTQzo6VVN0cmluZyBtX2NsYXNzTmFtZTsKKyAgICAvLyBTdHJpbmdzIGluIHRoZXNlIGRh
dGEgbWVtYmVycyBzaG91bGQgbm90IGJlIHB1dCBpbnRvIGFueSBJZGVudGlmaWVyVGFibGUuCisg
ICAgU3RyaW5nIG1fY2xhc3NOYW1lOwogICAgIE93blB0cjxPcGFxdWVKU0NsYXNzU3RhdGljVmFs
dWVzVGFibGU+IG1fc3RhdGljVmFsdWVzOwogICAgIE93blB0cjxPcGFxdWVKU0NsYXNzU3RhdGlj
RnVuY3Rpb25zVGFibGU+IG1fc3RhdGljRnVuY3Rpb25zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCA3YTU3Mjg3ZGVkNGUwMmQ0YjBkY2M0OTk3
ZGRhOTA0MzFiNmRhMWFiLi5iYWUzMTAxMDViMjRiNmEyZDFmYjQ2ZWRmMzI2NGVhZjllZDEzYzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiSlNDbGFzc1JlZi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xNjcsOSArMTY3LDkgQEAgSlNT
dHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29udGV4dFJlZiBjdHgsIHVuc2ln
bmVkIG1heFN0YWNrU2l6ZSkKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKIAogICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKLSAgICBVU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGV4ZWM7Ci0gICAg
VVN0cmluZyBmdW5jdGlvbk5hbWU7CisgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKICAgICBpZiAo
ZXhlYy0+Y2FsbGVlKCkpIHsKICAgICAgICAgaWYgKGFzT2JqZWN0KGV4ZWMtPmNhbGxlZSgpKS0+
aW5oZXJpdHMoJkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpIHsKICAgICAgICAgICAgIGZ1bmN0
aW9uTmFtZSA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPm5hbWUoZXhlYyk7
CkBAIC0xODMsMTAgKzE4MywxMCBAQCBKU1N0cmluZ1JlZiBKU0NvbnRleHRDcmVhdGVCYWNrdHJh
Y2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tTaXplKQogICAgICAgICBBU1NF
UlQoY2FsbEZyYW1lKTsKICAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CiAgICAgICAgIGlu
dHB0cl90IHNvdXJjZUlEOwotICAgICAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICAgICAgU3Ry
aW5nIHVybFN0cmluZzsKICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKICAgICAgICAgCi0gICAg
ICAgIFVTdHJpbmcgbGV2ZWxTdHIgPSBVU3RyaW5nOjpudW1iZXIoY291bnQpOworICAgICAgICBT
dHJpbmcgbGV2ZWxTdHIgPSBTdHJpbmc6Om51bWJlcihjb3VudCk7CiAgICAgICAgIAogICAgICAg
ICBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoY2FsbEZyYW1lLCBzaWdu
ZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7CiAKQEAgLTIwOCwx
MiArMjA4LDEyIEBAIEpTU3RyaW5nUmVmIEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZShKU0NvbnRl
eHRSZWYgY3R4LCB1bnNpZ25lZCBtYXhTdGFja1NpemUpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIoKSBhdCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQodXJsU3RyaW5nKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjoiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVVN0cmluZzo6bnVt
YmVyKGxpbmVOdW1iZXIpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIo
bGluZU51bWJlcikpOwogICAgICAgICBpZiAoIWZ1bmN0aW9uIHx8ICsrY291bnQgPT0gbWF4U3Rh
Y2tTaXplKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKTsKICAgICB9Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVh
dGUoYnVpbGRlci50b1VTdHJpbmcoKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0
cmluZzo6Y3JlYXRlKGJ1aWxkZXIudG9TdHJpbmcoKSkubGVha1JlZigpOwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4IDA4NzdhMTNlNjBi
Mjc4NjY4MGI2ZDljZDg1MzdjNTkxZTBiMmVmNTguLmU4N2ZkODM4ZGU1YjY2OWZmYmYxMWVkMTcx
YWIzNGUyYmVmZDgyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
dHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1Jl
ZkNGLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcu
aCIKICNpbmNsdWRlICJKU1N0cmluZ1JlZi5oIgogI2luY2x1ZGUgIk9wYXF1ZUpTU3RyaW5nLmgi
Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuY3BwCmluZGV4IDliNzI2OGEyZGE2MzAwOWVmMjU1ZDAwYjMwY2IxN2Jl
OThjZWRkYjYuLjBhMTEzMzkzNjQ0OGRlNzMzMWU4NTAyZWZhY2NjODRiYzY4YmNkMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApAQCAtMzYsMTEgKzM2LDExIEBA
CiAjaW5jbHVkZSA8cnVudGltZS9MaXRlcmFsUGFyc2VyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9P
cGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGFsZ29yaXRobT4gLy8g
Zm9yIHN0ZDo6bWluCiAKQEAgLTIzNCw3ICsyMzQsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtl
RnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5nKQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOwotICAgIFVTdHJpbmcgc3RyID0gc3RyaW5nLT51c3RyaW5nKCk7CisgICAgU3Ry
aW5nIHN0ciA9IHN0cmluZy0+dXN0cmluZygpOwogICAgIGlmIChzdHIuaXM4Qml0KCkpIHsKICAg
ICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4gcGFyc2VyKGV4ZWMsIHN0ci5jaGFyYWN0ZXJzOCgp
LCBzdHIubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICByZXR1cm4gdG9SZWYoZXhlYywg
cGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBKU1N0cmluZ1Jl
ZiBKU1ZhbHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIGFw
aVZhbHVlLCB1bnNpZwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElF
bnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMs
IGFwaVZhbHVlKTsKLSAgICBVU3RyaW5nIHJlc3VsdCA9IEpTT05TdHJpbmdpZnkoZXhlYywgdmFs
dWUsIGluZGVudCk7CisgICAgU3RyaW5nIHJlc3VsdCA9IEpTT05TdHJpbmdpZnkoZXhlYywgdmFs
dWUsIGluZGVudCk7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCmluZGV4IDlhMTE2ZTZiMmY2MzkzN2QwZDAyZDA4OGM2
MWE1NTRjOWZjMjNiODYuLmNkZTU3YWNkYWUzZjIwMGIyODc4YWM2MjQ1Mjc1N2ZkZmQzOGI2Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCkBAIC0z
MiwxOCArMzIsMTggQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUGFzc1JlZlB0cjxPcGFx
dWVKU1N0cmluZz4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShjb25zdCBVU3RyaW5nJiB1c3RyaW5n
KQorUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIXVzdHJpbmcuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgT3BhcXVlSlNTdHJpbmcodXN0cmluZy5jaGFyYWN0ZXJzKCks
IHVzdHJpbmcubGVuZ3RoKCkpKTsKKyAgICBpZiAoIXN0cmluZy5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBPcGFxdWVKU1N0cmluZyhzdHJpbmcuY2hhcmFjdGVycygpLCBz
dHJpbmcubGVuZ3RoKCkpKTsKICAgICByZXR1cm4gMDsKIH0KIAotVVN0cmluZyBPcGFxdWVKU1N0
cmluZzo6dXN0cmluZygpIGNvbnN0CitTdHJpbmcgT3BhcXVlSlNTdHJpbmc6OnVzdHJpbmcoKSBj
b25zdAogewogICAgIGlmICh0aGlzICYmIG1fY2hhcmFjdGVycykKLSAgICAgICAgcmV0dXJuIFVT
dHJpbmcobV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCk7Ci0gICAgcmV0dXJuIFVTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZyhtX2NoYXJhY3RlcnMsIG1fbGVuZ3RoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKIElkZW50aWZpZXIgT3BhcXVlSlNTdHJpbmc6OmlkZW50aWZpZXIoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9P
cGFxdWVKU1N0cmluZy5oCmluZGV4IDFjNjMxNTBjZjE1NGU3MWM4ZTNhOTZmNDdlYmViZDg2Zjg4
Mjc5NzcuLjdlMjIyYzVlZTg0NmQ3NTU4N2EwMjU5NGY4ODY4MGRmNjRiM2U2MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKQEAgLTI3LDcgKzI3LDcgQEAK
ICNkZWZpbmUgT3BhcXVlSlNTdHJpbmdfaAogCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIElkZW50aWZpZXI7
CkBAIC00NiwxMiArNDYsMTMgQEAgc3RydWN0IE9wYXF1ZUpTU3RyaW5nIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3RyaW5nPiB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgT3BhcXVlSlNTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0
ZShjb25zdCBKU0M6OlVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFz
c1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgVUNo
YXIqIGNoYXJhY3RlcnMoKSB7IHJldHVybiB0aGlzID8gbV9jaGFyYWN0ZXJzIDogMDsgfQogICAg
IHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIHRoaXMgPyBtX2xlbmd0aCA6IDA7IH0KIAotICAg
IEpTQzo6VVN0cmluZyB1c3RyaW5nKCkgY29uc3Q7CisgICAgLy8gRklYTUU6IHJlbmFtZSB0byBz
dHJpbmcoKS4KKyAgICBTdHJpbmcgdXN0cmluZygpIGNvbnN0OwogICAgIEpTQzo6SWRlbnRpZmll
ciBpZGVudGlmaWVyKEpTQzo6SlNHbG9iYWxEYXRhKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzJmNDIxMzZmNjA0YWViNmViMmJlZmU3
Y2RiMmQyNjc0NmUzYTcyYy4uMjcyYjczZjVkZWY2NzAxZjMzYTBmMDkwZDVmN2E4ZDM4ZTgzNTE0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjU1LDcgKzI1NSw2IEBA
IFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5j
cHAKICAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvVGltZW91dENoZWNr
ZXIuY3BwCi0gICAgcnVudGltZS9VU3RyaW5nLmNwcAogCiAgICAgdG9vbHMvQ29kZVByb2ZpbGUu
Y3BwCiAgICAgdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDM2M2ZkNjYwODc5NjMxODVjYmExZDgzZDE0ZGUxZTBh
OGEwZmRlMi4uOTc5NjQ1ZWRmZjBiNjRlYzFlYWNkNDdmMzg1OTg1OGY3YTE3ZDQ4NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTY1OCwxMCArNjU4LDYg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGltZW91dENoZWNrZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHJhY2luZy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJh
Y3Rpb24uaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAgXAot
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBcCi0JU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaCBcCi0JU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVVN0cmluZ0NvbmNhdGVuYXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtHQ01hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrUmFuZG9tLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmll
ci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5kZWYKaW5kZXggOWQ4ZDAxNWM3MDEwYTU0ZTQ2YTFiZTJjMTI0ZDg2N2ZiN2MzMTZiNC4uODU2
ZjcxYmYwNDZjNWEzNWQwMjVlMDNmYzBjYTZjZDNjZWYwYTM4MyAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTI0LDEyICsyNCw4
IEBAIEVYUE9SVFMKICAgICA/PzBTdHJpbmdPYmplY3RASlNDQEBJQUVAQUFWSlNHbG9iYWxEYXRh
QDFAUEFWU3RydWN0dXJlQDFAQFoKICAgICA/PzBTdHJ1Y3R1cmVASlNDQEBBQUVAQUFWSlNHbG9i
YWxEYXRhQDFAUEFWSlNHbG9iYWxPYmplY3RAMUBWSlNWYWx1ZUAxQEFCVlR5cGVJbmZvQDFAUEJV
Q2xhc3NJbmZvQDFAQFoKICAgICA/PzBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoKLSAgICA/
PzBVU3RyaW5nQEpTQ0BAUUFFQFBCREBaCi0gICAgPz8wVVN0cmluZ0BKU0NAQFFBRUBQQkRJQFoK
LSAgICA/PzBVU3RyaW5nQEpTQ0BAUUFFQFBCX1dAWgotICAgID8/MFVTdHJpbmdASlNDQEBRQUVA
UEJfV0lAWgogICAgID8/MFdURlRocmVhZERhdGFAV1RGQEBRQUVAWFoKLSAgICA/PzBZYXJyUGF0
dGVybkBZYXJyQEpTQ0BAUUFFQEFCVlVTdHJpbmdAMkBfTjFQQVBCREBaCisgICAgPz8wWWFyclBh
dHRlcm5AWWFyckBKU0NAQFFBRUBBQlZTdHJpbmdAV1RGQEBfTjFQQVBCREBaCiAgICAgPz8xQXJy
YXlCdWZmZXJWaWV3QFdURkBAVUFFQFhaCiAgICAgPz8xQ2xpZW50RGF0YUBKU0dsb2JhbERhdGFA
SlNDQEBVQUVAWFoKICAgICA/PzFDb2xsYXRvckBXVEZAQFFBRUBYWgpAQCAtNDQsNyArNDAsNiBA
QCBFWFBPUlRTCiAgICAgPz8xVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFQFhaCiAgICAgPz8xV1RG
VGhyZWFkRGF0YUBXVEZAQFFBRUBYWgogICAgID8/MVdlYWtIYW5kbGVPd25lckBKU0NAQFVBRUBY
WgotICAgID8/OEpTQ0BAWUFfTkFCVlVTdHJpbmdAMEAwQFoKICAgICA/PzhXVEZAQFlBX05BQlZD
U3RyaW5nQDBAMEBaCiAgICAgP0VjbWFTY3JpcHRDb252ZXJ0ZXJARG91YmxlVG9TdHJpbmdDb252
ZXJ0ZXJAZG91YmxlX2NvbnZlcnNpb25AV1RGQEBTQUFCVjEyM0BYWgogICAgID9TdHJpbmdUb0Rv
dWJsZUBTdHJpbmdUb0RvdWJsZUNvbnZlcnRlckBkb3VibGVfY29udmVyc2lvbkBXVEZAQFNBTlBC
RElQQUlAWgpAQCAtNzEsNyArNjYsNiBAQCBFWFBPUlRTCiAgICAgP2FsbG9jYXRlU2xvd0Nhc2VA
TWFya2VkQWxsb2NhdG9yQEpTQ0BAQUFFUEFYWFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJA
V1RGQEBRQUVYUEJFSUBaCiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCX1dJ
QFoKLSAgICA/YXNjaWlAVVN0cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdAV1RGQEBYWgogICAgID9h
dHRhY2hARGVidWdnZXJASlNDQEBRQUVYUEFWSlNHbG9iYWxPYmplY3RAMkBAWgogICAgID9iYXNl
NjREZWNvZGVAV1RGQEBZQV9OQUJWU3RyaW5nQDFAQUFWPyRWZWN0b3JARCQwQUBAMUBXNEJhc2U2
NERlY29kZVBvbGljeUAxQEBaCiAgICAgP2Jhc2U2NEVuY29kZUBXVEZAQFlBP0FWU3RyaW5nQDFA
UEJESVc0QmFzZTY0RW5jb2RlUG9saWN5QDFAQFoKQEAgLTg0LDcgKzc4LDcgQEAgRVhQT1JUUwog
ICAgID9jYWxjdWxhdGVEU1RPZmZzZXRAV1RGQEBZQU5OTkBaCiAgICAgP2NhbGN1bGF0ZVN0cmlu
Z0hhc2hBbmRMZW5ndGhGcm9tVVRGOE1hc2tpbmdUb3A4Qml0c0BVbmljb2RlQFdURkBAWUFJUEJE
MEFBSTFAWgogICAgID9jYWxjdWxhdGVVVENPZmZzZXRAV1RGQEBZQUhYWgotICAgID9jYWxjdWxh
dGVkRnVuY3Rpb25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFP0FWVVN0cmluZ0AyQFha
CisgICAgP2NhbGN1bGF0ZWRGdW5jdGlvbk5hbWVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkU/
QVZTdHJpbmdAV1RGQEBYWgogICAgID9jYWxsQEpTQ0BAWUE/QVZKU1ZhbHVlQDFAUEFWRXhlY1N0
YXRlQDFAVjIxQFc0Q2FsbFR5cGVAMUBBQlRDYWxsRGF0YUAxQDFBQlZBcmdMaXN0QDFAQFoKICAg
ICA/Y2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3JASlNDQEBZSV9KUEFWRXhlY1N0YXRlQDFA
QFoKICAgICA/Y2FsbE9uTWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgpAQCAtOTcsNyAr
OTEsNyBAQCBFWFBPUlRTCiAgICAgP2NoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZUBJZGVudGlm
aWVyQEpTQ0BAQ0FYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/Y2hlY2tTeW50YXhASlNDQEBZ
QV9OUEFWRXhlY1N0YXRlQDFAQUJWU291cmNlQ29kZUAxQFBBVkpTVmFsdWVAMUBAWgogICAgID9j
aGVja3N1bUBNRDVAV1RGQEBRQUVYQUFWPyRWZWN0b3JARSQwQkFAQDJAQFoKLSAgICA/Y2xhc3NO
YW1lQEpTT2JqZWN0QEpTQ0BAU0E/QVZVU3RyaW5nQDJAUEJWMTJAQFoKKyAgICA/Y2xhc3NOYW1l
QEpTT2JqZWN0QEpTQ0BAU0E/QVZTdHJpbmdAV1RGQEBQQlYxMkBAWgogICAgID9jbGVhckBTb3Vy
Y2VQcm92aWRlckNhY2hlQEpTQ0BAUUFFWFhaCiAgICAgP2NsZWFyUmFyZURhdGFASlNHbG9iYWxP
YmplY3RASlNDQEBDQVhQQVZKU0NlbGxAMkBAWgogICAgID9jb2xsYXRlQENvbGxhdG9yQFdURkBA
UUJFP0FXNFJlc3VsdEAxMkBQQl9XSTBJQFoKQEAgLTEwNywzMSArMTAxLDMwIEBAIEVYUE9SVFMK
ICAgICA/Y29uc3RydWN0QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFZKU1Zh
bHVlQDFAVzRDb25zdHJ1Y3RUeXBlQDFAQUJUQ29uc3RydWN0RGF0YUAxQEFCVkFyZ0xpc3RAMUBA
WgogICAgID9jb25zdHJ1Y3RBcnJheUBKU0NAQFlBUEFWSlNBcnJheUAxQFBBVkV4ZWNTdGF0ZUAx
QEFCVkFyZ0xpc3RAMUBAWgogICAgID9jb25zdHJ1Y3RFbXB0eU9iamVjdEBKU0NAQFlBUEFWSlNP
YmplY3RAMUBQQVZFeGVjU3RhdGVAMUBAWgotICAgID9jb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5n
RXZhbEVuYWJsZWRDaGVja0BKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBQQVZK
U0dsb2JhbE9iamVjdEAxQEFCVkFyZ0xpc3RAMUBBQlZJZGVudGlmaWVyQDFAQUJWVVN0cmluZ0Ax
QEFCVlRleHRQb3NpdGlvbkBXVEZAQEBaCisgICAgP2NvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFBBVkpT
R2xvYmFsT2JqZWN0QDFAQUJWQXJnTGlzdEAxQEFCVklkZW50aWZpZXJAMUBBQlZTdHJpbmdAV1RG
QEBBQlZUZXh0UG9zaXRpb25AOEBAWgogICAgID9jb25zdHJ1Y3ROdW1iZXJASlNDQEBZQVBBVk51
bWJlck9iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVkpTVmFsdWVA
MUBAWgogICAgID9jb25zdHJ1Y3RTdHJpbmdASlNDQEBZQVBBVlN0cmluZ09iamVjdEAxQFBBVkV4
ZWNTdGF0ZUAxQFBBVkpTR2xvYmFsT2JqZWN0QDFAVkpTVmFsdWVAMUBAWgogICAgID9jb252ZXJ0
TGF0aW4xVG9VVEY4QFVuaWNvZGVAV1RGQEBZQT9BVzRDb252ZXJzaW9uUmVzdWx0QDEyQFBBUEJF
UEJFUEFQQURQQURAWgogICAgID9jb252ZXJ0VVRGMTZUb1VURjhAVW5pY29kZUBXVEZAQFlBP0FX
NENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQl9XUEJfV1BBUEFEUEFEX05AWgogICAgID9jb252ZXJ0
VVRGOFRvVVRGMTZAVW5pY29kZUBXVEZAQFlBP0FXNENvbnZlcnNpb25SZXN1bHRAMTJAUEFQQkRQ
QkRQQVBBX1dQQV9XX05AWgotICAgID9jcmVhdGVASlNGdW5jdGlvbkBKU0NAQFNBUEFWMTJAUEFW
RXhlY1N0YXRlQDJAUEFWSlNHbG9iYWxPYmplY3RAMkBIQUJWVVN0cmluZ0AyQFA2SV9KMEBaVzRJ
bnRyaW5zaWNAMkAzQFoKKyAgICA/Y3JlYXRlQEpTRnVuY3Rpb25ASlNDQEBTQVBBVjEyQFBBVkV4
ZWNTdGF0ZUAyQFBBVkpTR2xvYmFsT2JqZWN0QDJASEFCVlN0cmluZ0BXVEZAQFA2SV9KMEBaVzRJ
bnRyaW5zaWNAMkAzQFoKICAgICA/Y3JlYXRlQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQYXNz
UmVmUHRyQFZKU0dsb2JhbERhdGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQFc0SGVh
cFR5cGVAMkBAWgotICAgID9jcmVhdGVAT3BhcXVlSlNTdHJpbmdAQFNBP0FWPyRQYXNzUmVmUHRy
QFVPcGFxdWVKU1N0cmluZ0BAQFdURkBAQUJWVVN0cmluZ0BKU0NAQEBaCi0gICAgP2NyZWF0ZUBS
ZWdFeHBASlNDQEBTQVBBVjEyQEFBVkpTR2xvYmFsRGF0YUAyQEFCVlVTdHJpbmdAMkBXNFJlZ0V4
cEZsYWdzQDJAQFoKKyAgICA/Y3JlYXRlQFJlZ0V4cEBKU0NAQFNBUEFWMTJAQUFWSlNHbG9iYWxE
YXRhQDJAQUJWU3RyaW5nQFdURkBAVzRSZWdFeHBGbGFnc0AyQEBaCiAgICAgP2NyZWF0ZUVtcHR5
U3RyaW5nQFNtYWxsU3RyaW5nc0BKU0NAQEFBRVhQQVZKU0dsb2JhbERhdGFAMkBAWgotICAgID9j
cmVhdGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5n
QDFAQFoKKyAgICA/Y3JlYXRlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRl
QDFAQUJWU3RyaW5nQFdURkBAQFoKICAgICA/Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNl
cHRpb25ASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWSlNHbG9iYWxEYXRhQDFAQFoKICAgICA/Y3Jl
YXRlTGVha2VkQEpTR2xvYmFsRGF0YUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZKU0dsb2JhbERh
dGFASlNDQEBAV1RGQEBXNFRocmVhZFN0YWNrVHlwZUAyQFc0SGVhcFR5cGVAMkBAWgogICAgID9j
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVj
U3RhdGVAMUBAWgotICAgID9jcmVhdGVSYW5nZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAxQFBB
VkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgotICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBK
U0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKKyAgICA/
Y3JlYXRlUmFuZ2VFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZT
dHJpbmdAV1RGQEBAWgorICAgID9jcmVhdGVSZWZlcmVuY2VFcnJvckBKU0NAQFlBUEFWSlNPYmpl
Y3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZTdHJpbmdAV1RGQEBAWgogICAgID9jcmVhdGVTaW5nbGVD
aGFyYWN0ZXJTdHJpbmdAU21hbGxTdHJpbmdzQEpTQ0BAQUFFWFBBVkpTR2xvYmFsRGF0YUAyQEVA
WgogICAgID9jcmVhdGVTdGFja092ZXJmbG93RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFW
RXhlY1N0YXRlQDFAQFoKLSAgICA/Y3JlYXRlU3ludGF4RXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0
QDFAUEFWRXhlY1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBaCisgICAgP2NyZWF0ZVN5bnRheEVycm9y
QEpTQ0BAWUFQQVZKU09iamVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlN0cmluZ0BXVEZAQEBaCiAg
ICAgP2NyZWF0ZVRhYmxlQEhhc2hUYWJsZUBKU0NAQEFCRVhQQVZKU0dsb2JhbERhdGFAMkBAWgog
ICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBAWgogICAgID9jcmVhdGVUaHJl
YWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBQQkRAWgogICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQ
NkFYUEFYQFowUEJEQFoKLSAgICA/Y3JlYXRlVHlwZUVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAx
QFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID9jcmVhdGVUeXBlRXJyb3JASlND
QEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhlY1N0YXRlQDFAQUJWU3RyaW5nQFdURkBAQFoKICAgICA/
Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXJAV1RGQEBZQUlYWgogICAgID9jcnlwdG9ncmFw
aGljYWxseVJhbmRvbVZhbHVlc0BXVEZAQFlBWFBBWElAWgogICAgID9jdXJyZW50VGhyZWFkQFdU
RkBAWUFJWFoKQEAgLTE2NCw3ICsxNTcsNyBAQCBFWFBPUlRTCiAgICAgP2RldGFjaFRocmVhZEBX
VEZAQFlBWElAWgogICAgID9kaWRUaW1lT3V0QFRpbWVvdXRDaGVja2VyQEpTQ0BAUUFFX05QQVZF
eGVjU3RhdGVAMkBAWgogICAgID9kZWxldGVBbGxDb21waWxlZENvZGVASGVhcEBKU0NAQFFBRVhY
WgotICAgID9kaXNwbGF5TmFtZUBKU0Z1bmN0aW9uQEpTQ0BAUUFFP0JWVVN0cmluZ0AyQFBBVkV4
ZWNTdGF0ZUAyQEBaCisgICAgP2Rpc3BsYXlOYW1lQEpTRnVuY3Rpb25ASlNDQEBRQUU/QlZTdHJp
bmdAV1RGQEBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9kdG9hQFdURkBAWUFYUUFETkFBX05BQUhB
QUlAWgogICAgID9kdW1wQWxsT3B0aW9uc0BPcHRpb25zQEpTQ0BAU0FYUEFVX2lvYnVmQEBAWgog
ICAgID9kdW1wQ2FsbEZyYW1lQEludGVycHJldGVyQEpTQ0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEBa
CkBAIC0xNzIsNyArMTY1LDcgQEAgRVhQT1JUUwogICAgID9lbXB0eUBTdHJpbmdJbXBsQFdURkBA
U0FQQVYxMkBYWgogICAgID9lbnVtZXJhYmxlQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFCRV9O
WFoKICAgICA/ZXF1YWxVVEYxNldpdGhVVEY4QFVuaWNvZGVAV1RGQEBZQV9OUEJfVzBQQkQxQFoK
LSAgICA/ZXZhbHVhdGVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkU/QVZKU1ZhbHVlQDJAQUJW
VVN0cmluZ0AyQEFBVjMyQEBaCisgICAgP2V2YWx1YXRlQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BA
UUJFP0FWSlNWYWx1ZUAyQEFCVlN0cmluZ0BXVEZAQEFBVjMyQEBaCiAgICAgP2V2YWx1YXRlQEpT
Q0BAWUE/QVZKU1ZhbHVlQDFAUEFWRXhlY1N0YXRlQDFAUEFWU2NvcGVDaGFpbk5vZGVAMUBBQlZT
b3VyY2VDb2RlQDFAVjIxQFBBVjIxQEBaCiAgICAgP2V4Y2x1ZGVAUHJvZmlsZUBKU0NAQFFBRVhQ
QlZQcm9maWxlTm9kZUAyQEBaCiAgICAgP2V4ZWN1dGVAUGFyYWxsZWxFbnZpcm9ubWVudEBXVEZA
QFFBRVhQQVhAWgpAQCAtMTkxLDcgKzE4NCw3IEBAIEVYUE9SVFMKICAgICA/ZmluZEFsbG9jYXRv
ckBXZWFrU2V0QEpTQ0BAQUFFUEFVRnJlZUNlbGxAV2Vha0Jsb2NrQDJAWFoKICAgICA/ZmluaXNo
Q3JlYXRpb25AQm9vbGVhbk9iamVjdEBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBAWgogICAg
ID9maW5pc2hDcmVhdGlvbkBEYXRlSW5zdGFuY2VASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJA
TkBaCi0gICAgP2ZpbmlzaENyZWF0aW9uQEludGVybmFsRnVuY3Rpb25ASlNDQEBJQUVYQUFWSlNH
bG9iYWxEYXRhQDJAQUJWVVN0cmluZ0AyQEBaCisgICAgP2ZpbmlzaENyZWF0aW9uQEludGVybmFs
RnVuY3Rpb25ASlNDQEBJQUVYQUFWSlNHbG9iYWxEYXRhQDJAQUJWU3RyaW5nQFdURkBAQFoKICAg
ICA/ZmluaXNoQ3JlYXRpb25ASlNBcnJheUBKU0NAQElBRVhBQVZKU0dsb2JhbERhdGFAMkBJQFoK
ICAgICA/ZmluaXNoQ3JlYXRpb25AUmVnRXhwT2JqZWN0QEpTQ0BASUFFWFBBVkpTR2xvYmFsT2Jq
ZWN0QDJAQFoKICAgICA/ZmluaXNoQ3JlYXRpb25AU3RyaW5nT2JqZWN0QEpTQ0BASUFFWEFBVkpT
R2xvYmFsRGF0YUAyQFBBVkpTU3RyaW5nQDJAQFoKQEAgLTIwMCw4ICsxOTMsNyBAQCBFWFBPUlRT
CiAgICAgP2Zyb21ASWRlbnRpZmllckBKU0NAQFNBP0FWMTJAUEFWRXhlY1N0YXRlQDJASEBaCiAg
ICAgP2Zyb21ASWRlbnRpZmllckBKU0NAQFNBP0FWMTJAUEFWRXhlY1N0YXRlQDJASUBaCiAgICAg
P2Z1bmN0aW9uR2V0dGVyQFByb3BlcnR5U2xvdEBKU0NAQEFCRT9BVkpTVmFsdWVAMkBQQVZFeGVj
U3RhdGVAMkBAWgotICAgID9mdW5jdGlvbk5hbWVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQ
QlZVU3RyaW5nQDJAWFoKLSAgICA/Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lQEpTQ0BAWUE/QVZV
U3RyaW5nQDFAUEFWRXhlY1N0YXRlQDFAUEFWSlNPYmplY3RAMUBAWgorICAgID9nZXRDYWxjdWxh
dGVkRGlzcGxheU5hbWVASlNDQEBZQT9BVlN0cmluZ0BXVEZAQFBBVkV4ZWNTdGF0ZUAxQFBBVkpT
T2JqZWN0QDFAQFoKICAgICA/Z2V0Q2FsbERhdGFASlNDZWxsQEpTQ0BAU0E/QVc0Q2FsbFR5cGVA
MkBQQVYxMkBBQVRDYWxsRGF0YUAyQEBaCiAgICAgP2dldENhbGxhYmxlT2JqZWN0U2xvd0BKU0NA
QFlBUEFWSlNDZWxsQDFAUEFWMjFAQFoKICAgICA/Z2V0Q29uc3RydWN0RGF0YUBKU0NlbGxASlND
QEBTQT9BVzRDb25zdHJ1Y3RUeXBlQDJAUEFWMTJAQUFUQ29uc3RydWN0RGF0YUAyQEBaCkBAIC0y
MTYsOCArMjA4LDggQEAgRVhQT1JUUwogICAgID9nZXRQcm9wZXJ0eU5hbWVzQEpTT2JqZWN0QEpT
Q0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRlQDJAQUFWUHJvcGVydHlOYW1lQXJyYXlAMkBXNEVudW1l
cmF0aW9uTW9kZUAyQEBaCiAgICAgP2dldFNsaWNlQEFyZ0xpc3RASlNDQEBRQkVYSEFBVjEyQEBa
CiAgICAgP2dldFN0YWNrVHJhY2VASW50ZXJwcmV0ZXJASlNDQEBTQVhQQVZKU0dsb2JhbERhdGFA
MkBBQVY/JFZlY3RvckBVU3RhY2tGcmFtZUBKU0NAQCQwQUBAV1RGQEBAWgotICAgID9nZXRTdHJp
bmdASlNDZWxsQEpTQ0BAUUJFP0FWVVN0cmluZ0AyQFBBVkV4ZWNTdGF0ZUAyQEBaCi0gICAgP2dl
dFN0cmluZ0BKU0NlbGxASlNDQEBRQkVfTlBBVkV4ZWNTdGF0ZUAyQEFBVlVTdHJpbmdAMkBAWgor
ICAgID9nZXRTdHJpbmdASlNDZWxsQEpTQ0BAUUJFP0FWU3RyaW5nQFdURkBAUEFWRXhlY1N0YXRl
QDJAQFoKKyAgICA/Z2V0U3RyaW5nQEpTQ2VsbEBKU0NAQFFCRV9OUEFWRXhlY1N0YXRlQDJAQUFW
U3RyaW5nQFdURkBAQFoKICAgICA/Z2V0QFN0cnVjdHVyZUBKU0NAQFFBRUhBQVZKU0dsb2JhbERh
dGFAMkBWUHJvcGVydHlOYW1lQDJAQUFJQUFQQVZKU0NlbGxAMkBAWgogICAgID9nZXR0ZXJAUHJv
cGVydHlEZXNjcmlwdG9yQEpTQ0BAUUJFP0FWSlNWYWx1ZUAyQFhaCiAgICAgP2dsb2JhbEV4ZWNA
SlNHbG9iYWxPYmplY3RASlNDQEBRQUVQQVZFeGVjU3RhdGVAMkBYWgpAQCAtMjM2LDcgKzIyOCw3
IEBAIEVYUE9SVFMKICAgICA/aW5pdGlhbGl6ZU1haW5UaHJlYWRAV1RGQEBZQVhYWgogICAgID9p
bml0aWFsaXplVGhyZWFkaW5nQEpTQ0BAWUFYWFoKICAgICA/aW5pdGlhbGl6ZVRocmVhZGluZ0BX
VEZAQFlBWFhaCi0gICAgP2ludGVycHJldEBZYXJyQEpTQ0BAWUFJUEFVQnl0ZWNvZGVQYXR0ZXJu
QDEyQEFCVlVTdHJpbmdAMkBJUEFJQFoKKyAgICA/aW50ZXJwcmV0QFlhcnJASlNDQEBZQUlQQVVC
eXRlY29kZVBhdHRlcm5AMTJAQUJWU3RyaW5nQFdURkBASVBBSUBaCiAgICAgP2lzQWNjZXNzb3JE
ZXNjcmlwdG9yQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFCRV9OWFoKICAgICA/aXNCdXN5QEhl
YXBASlNDQEBRQUVfTlhaCiAgICAgP2lzRGF0YURlc2NyaXB0b3JAUHJvcGVydHlEZXNjcmlwdG9y
QEpTQ0BAUUJFX05YWgpAQCAtMjQ2LDE5ICsyMzgsMTYgQEAgRVhQT1JUUwogICAgID9pc1Rlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQV9OVkpTVmFsdWVAMUBAWgogICAgID9pc1Zh
bGlkQWxsb2NhdGlvbkBIZWFwQEpTQ0BAQUFFX05JQFoKICAgICA/aXNWYWxpZENhbGxlZUBKU1Zh
bHVlQEpTQ0BAUUFFX05YWgotICAgID9qc093bmVkU3RyaW5nQEpTQ0BAWUFQQVZKU1N0cmluZ0Ax
QFBBVkpTR2xvYmFsRGF0YUAxQEFCVlVTdHJpbmdAMUBAWgotICAgID9qc1N0cmluZ0BKU0NAQFlB
UEFWSlNTdHJpbmdAMUBQQVZKU0dsb2JhbERhdGFAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/bGVu
Z3RoQENTdHJpbmdAV1RGQEBRQkVJWFoKICAgICA/bG9ja0BKU0xvY2tASlNDQEBRQUVYWFoKICAg
ICA/bG9ja0BNdXRleEBXVEZAQFFBRVhYWgogICAgID9sb2NrQXRvbWljYWxseUluaXRpYWxpemVk
U3RhdGljTXV0ZXhAV1RGQEBZQVhYWgotICAgID9tYXRjaEBSZWdFeHBASlNDQEBRQUVIQUFWSlNH
bG9iYWxEYXRhQDJAQUJWVVN0cmluZ0AyQElBQVY/JFZlY3RvckBIJDBDQUBAV1RGQEBAWgorICAg
ID9tYXRjaEBSZWdFeHBASlNDQEBRQUVIQUFWSlNHbG9iYWxEYXRhQDJAQUJWU3RyaW5nQFdURkBA
SUFBVj8kVmVjdG9yQEgkMENBQEA1QEBaCiAgICAgP21hdGVyaWFsaXplUHJvcGVydHlNYXBAU3Ry
dWN0dXJlQEpTQ0BAQUFFWEFBVkpTR2xvYmFsRGF0YUAyQEBaCiAgICAgP21vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZUBXVEZAQFlBTlhaCiAgICAgP21vbnRoRnJvbURheUluWWVhckBXVEZAQFlB
SEhfTkBaCiAgICAgP21zVG9ZZWFyQFdURkBAWUFITkBaCi0gICAgP25hbWVASW50ZXJuYWxGdW5j
dGlvbkBKU0NAQFFBRUFCVlVTdHJpbmdAMkBQQVZFeGVjU3RhdGVAMkBAWgotICAgID9uYW1lQEpT
RnVuY3Rpb25ASlNDQEBRQUVBQlZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKKyAgICA/bmFt
ZUBKU0Z1bmN0aW9uQEpTQ0BAUUFFQUJWU3RyaW5nQFdURkBAUEFWRXhlY1N0YXRlQDJAQFoKICAg
ICA/bmV1dGVyQEFycmF5QnVmZmVyVmlld0BXVEZAQE1BRVhYWgogICAgID9uZXdVbmluaXRpYWxp
emVkQENTdHJpbmdAV1RGQEBTQT9BVjEyQElBQVBBREBaCiAgICAgP25vdGlmeVdyaXRlU2xvd0BT
eW1ib2xUYWJsZUVudHJ5QEpTQ0BAQUFFWFhaCkBAIC0yOTMsNyArMjgyLDcgQEAgRVhQT1JUUwog
ICAgID9wdXREaXJlY3RWaXJ0dWFsQEpTT2JqZWN0QEpTQ0BAU0FYUEFWMTJAUEFWRXhlY1N0YXRl
QDJAVlByb3BlcnR5TmFtZUAyQFZKU1ZhbHVlQDJASUBaCiAgICAgP3JhbmRvbU51bWJlckBXVEZA
QFlBTlhaCiAgICAgP3JlY29tcGlsZUFsbEpTRnVuY3Rpb25zQERlYnVnZ2VyQEpTQ0BAUUFFWFBB
VkpTR2xvYmFsRGF0YUAyQEBaCi0gICAgP3JlZ0V4cEZsYWdzQEpTQ0BAWUE/QVc0UmVnRXhwRmxh
Z3NAMUBBQlZVU3RyaW5nQDFAQFoKKyAgICA/cmVnRXhwRmxhZ3NASlNDQEBZQT9BVzRSZWdFeHBG
bGFnc0AxQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgP3JlaWZ5U3RyaW5nQFN0cmluZ0J1aWxkZXJA
V1RGQEBBQkVYWFoKICAgICA/cmVsZWFzZURlY29tbWl0dGVkQE9TQWxsb2NhdG9yQFdURkBAU0FY
UEFYSUBaCiAgICAgP3JlbGVhc2VFeGVjdXRhYmxlTWVtb3J5QEpTR2xvYmFsRGF0YUBKU0NAQFFB
RVhYWgpAQCAtMzEwLDcgKzI5OSw3IEBAIEVYUE9SVFMKICAgICA/cmVzb2x2ZVJvcGVASlNSb3Bl
U3RyaW5nQEpTQ0BAQUJFWFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3Jlc3RvcmVBbGxAUHJvZmls
ZUBKU0NAQFFBRVhYWgogICAgID9yZXRyaWV2ZUNhbGxlckZyb21WTUNvZGVASW50ZXJwcmV0ZXJA
SlNDQEBRQkU/QVZKU1ZhbHVlQDJAUEFWRXhlY1N0YXRlQDJAUEFWSlNGdW5jdGlvbkAyQEBaCi0g
ICAgP3JldHJpZXZlTGFzdENhbGxlckBJbnRlcnByZXRlckBKU0NAQFFCRVhQQVZFeGVjU3RhdGVA
MkBBQUgxQUFWVVN0cmluZ0AyQEFBVkpTVmFsdWVAMkBAWgorICAgID9yZXRyaWV2ZUxhc3RDYWxs
ZXJASW50ZXJwcmV0ZXJASlNDQEBRQkVYUEFWRXhlY1N0YXRlQDJAQUFIMUFBVlN0cmluZ0BXVEZA
QEFBVkpTVmFsdWVAMkBAWgogICAgID9zZXRDb25maWd1cmFibGVAUHJvcGVydHlEZXNjcmlwdG9y
QEpTQ0BAUUFFWF9OQFoKICAgICA/c2V0RGVzY3JpcHRvckBQcm9wZXJ0eURlc2NyaXB0b3JASlND
QEBRQUVYVkpTVmFsdWVAMkBJQFoKICAgICA/c2V0RHVtcHNHZW5lcmF0ZWRDb2RlQEJ5dGVjb2Rl
R2VuZXJhdG9yQEpTQ0BAU0FYX05AWgpAQCAtMzM3LDExICszMjYsMTAgQEAgRVhQT1JUUwogICAg
ID9zbG93VmFsaWRhdGVDZWxsQEpTQ0BAWUFYUEFWSlNDZWxsQDFAQFoKICAgICA/c2xvd1ZhbGlk
YXRlQ2VsbEBKU0NAQFlBWFBBVkpTR2xvYmFsT2JqZWN0QDFAQFoKICAgICA/c291cmNlQ29kZUBK
U0Z1bmN0aW9uQEpTQ0BAUUJFUEJWU291cmNlQ29kZUAyQFhaCi0gICAgP3N0YXJ0UHJvZmlsaW5n
QFByb2ZpbGVyQEpTQ0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQEFCVlVTdHJpbmdAMkBAWgorICAgID9z
dGFydFByb2ZpbGluZ0BQcm9maWxlckBKU0NAQFFBRVhQQVZFeGVjU3RhdGVAMkBBQlZTdHJpbmdA
V1RGQEBAWgogICAgID9zdGFydFNhbXBsaW5nQEpTR2xvYmFsRGF0YUBKU0NAQFFBRVhYWgotICAg
ID9zdG9wUHJvZmlsaW5nQFByb2ZpbGVyQEpTQ0BAUUFFP0FWPyRQYXNzUmVmUHRyQFZQcm9maWxl
QEpTQ0BAQFdURkBAUEFWRXhlY1N0YXRlQDJAQUJWVVN0cmluZ0AyQEBaCisgICAgP3N0b3BQcm9m
aWxpbmdAUHJvZmlsZXJASlNDQEBRQUU/QVY/JFBhc3NSZWZQdHJAVlByb2ZpbGVASlNDQEBAV1RG
QEBQQVZFeGVjU3RhdGVAMkBBQlZTdHJpbmdANEBAWgogICAgID9zdG9wU2FtcGxpbmdASlNHbG9i
YWxEYXRhQEpTQ0BAUUFFWFhaCi0gICAgP3N1YnN0cmluZ1NoYXJpbmdJbXBsQFVTdHJpbmdASlND
QEBRQkU/QVYxMkBJSUBaCiAgICAgP3N1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0
eUBTdHJ1Y3R1cmVASlNDQEBRQUVJWFoKICAgICA/c3dlZXBlckBIZWFwQEpTQ0BAUUFFUEFWSW5j
cmVtZW50YWxTd2VlcGVyQDJAWFoKICAgICA/c3ludGhlc2l6ZVByb3RvdHlwZUBKU1ZhbHVlQEpT
Q0BAUUJFUEFWSlNPYmplY3RAMkBQQVZFeGVjU3RhdGVAMkBAWgpAQCAtMzUwLDcgKzMzOCw3IEBA
IEVYUE9SVFMKICAgICA/dGhyb3dFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3Rh
dGVAMUBQQVYyMUBAWgogICAgID90aHJvd1N5bnRheEVycm9yQEpTQ0BAWUFQQVZKU09iamVjdEAx
QFBBVkV4ZWNTdGF0ZUAxQEBaCiAgICAgP3Rocm93VHlwZUVycm9yQEpTQ0BAWUFQQVZKU09iamVj
dEAxQFBBVkV4ZWNTdGF0ZUAxQEBaCi0gICAgP3Rocm93VHlwZUVycm9yQEpTQ0BAWUFQQVZKU09i
amVjdEAxQFBBVkV4ZWNTdGF0ZUAxQEFCVlVTdHJpbmdAMUBAWgorICAgID90aHJvd1R5cGVFcnJv
ckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZTdHJpbmdAV1RGQEBAWgog
ICAgID90aW1lZFdhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFX05BQVZNdXRleEAyQE5AWgog
ICAgID90bHNLZXlDb3VudEBXVEZAQFlBQUFKWFoKICAgICA/dGxzS2V5c0BXVEZAQFlBUEFLWFoK
QEAgLTM2Niw2ICszNTQsNyBAQCBFWFBPUlRTCiAgICAgP3RvU3RyaW5nU2xvd0Nhc2VASlNWYWx1
ZUBKU0NAQEFCRVBBVkpTU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9UaGlzT2Jq
ZWN0QEpTT2JqZWN0QEpTQ0BAU0FQQVYxMkBQQVZKU0NlbGxAMkBQQVZFeGVjU3RhdGVAMkBAWgog
ICAgID90b1RoaXNPYmplY3RTbG93Q2FzZUBKU1ZhbHVlQEpTQ0BAQUJFUEFWSlNPYmplY3RAMkBQ
QVZFeGVjU3RhdGVAMkBAWgorICAgID90b1dURlN0cmluZ1Nsb3dDYXNlQEpTVmFsdWVASlNDQEBB
QkU/QVZTdHJpbmdAV1RGQEBQQVZFeGVjU3RhdGVAMkBAWgogICAgID90cmFuc2ZlckBBcnJheUJ1
ZmZlckBXVEZAQFFBRV9OQUFWQXJyYXlCdWZmZXJDb250ZW50c0AyQEFBVj8kVmVjdG9yQFY/JFJl
ZlB0ckBWQXJyYXlCdWZmZXJWaWV3QFdURkBAQFdURkBAJDBBQEAyQEBaCiAgICAgP3RyeUZhc3RD
YWxsb2NAV1RGQEBZQT9BVVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUlAWgogICAgID90cnlGYXN0
TWFsbG9jQFdURkBAWUE/QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElAWgpAQCAtMzc3LDcgKzM2
Niw2IEBAIEVYUE9SVFMKICAgICA/dW5sb2NrQE11dGV4QFdURkBAUUFFWFhaCiAgICAgP3VubG9j
a0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4QFdURkBAWUFYWFoKICAgICA/dW5wcm90
ZWN0QEhlYXBASlNDQEBRQUVfTlZKU1ZhbHVlQDJAQFoKLSAgICA/dXRmOEBVU3RyaW5nQEpTQ0BA
UUJFP0FWQ1N0cmluZ0BXVEZAQF9OQFoKICAgICA/dmFsaWRhdGVATWFya1N0YWNrQEpTQ0BAS0FY
UEFWSlNDZWxsQDJAQFoKICAgICA/dmlzaXRDaGlsZHJlbkBKU0dsb2JhbE9iamVjdEBKU0NAQFNB
WFBBVkpTQ2VsbEAyQEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/dmlzaXRDaGlsZHJlbkBKU0ds
b2JhbFRoaXNASlNDQEBLQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmlu
ZGV4IDMyYjE3YTg3YmE5NGZlOWNhYzFiZTUzYjk0ZDlkZGJhN2JmNDBkNjguLmNlYzY1OGJiOTVm
NDI5YTI4MjQxNGRjMzlhN2Q5OGIxMDlmNGQxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCkBAIC0xMjk0LDI2ICsxMjk0
LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccnVudGltZVxVU3RyaW5nLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nLmgiCi0JCQkJPgotCQkJPC9GaWxl
PgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcVVN0cmluZ0J1aWxk
ZXIuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccnVudGltZVxVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8
RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nSW1wbC5oIgotCQkJ
CT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1l
XFdlYWtHQ01hcC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMDA4NTliODYyMzFkYjRlMGNkYTQ1ZTk2ZDBjNjBjNjNiMGQxNzIyMy4uZDNkYjYx
OGNkMzEzYjIyMGE0YjEwMTlkNWNhNDlhZDJlYWY4Y2Y3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU4LDcgKzU4LDYgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkwOEREQTVDMTEy
NjQ2MzE3MDA3NTE3MzIgLyogVVN0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RERBNUJCMTI2NDVGMUQwMDc1MTczMiAvKiBVU3Ry
aW5nQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMDc3NkJGMTRGRjAwMkIwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwNzc2QkQx
NEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzOUExNEJDRjQ1RDAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwICovOyB9OwogCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzMxLDcgKzMzMCw2IEBA
CiAJCTE0NDY5REVCMTA3RUM3RTcwMDY1MDQ0NiAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzNDMDBFMTZF
RTMzMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQkxNDQ2OURFQzEw
N0VDN0U3MDA2NTA0NDYgLyogU3RyaW5nT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0MyMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJp
bmdPYmplY3QuY3BwICovOyB9OwogCQkxNDQ2OURFRDEwN0VDN0U3MDA2NTA0NDYgLyogU3RyaW5n
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMThDM0M1MEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuY3BwICovOyB9
OwotCQkxNDQ2OURFRTEwN0VDN0U3MDA2NTA0NDYgLyogVVN0cmluZy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjkyQTg4NTAyNTU1OTdEMDFGRjYw
RjcgLyogVVN0cmluZy5jcHAgKi87IH07CiAJCTE0NDgzNkU3MTMyREE3QkUwMDVCRTc4NSAvKiBD
b25zZXJ2YXRpdmVSb290cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJCIC8qIENvbnNlcnZhdGl2ZVJvb3RzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ1NzIy
ODYxNDM3RTE0MDAwNUZERTI2IC8qIFN0cm9uZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NTcyMjg1MTQzN0UxNDAwMDVGREUyNiAvKiBT
dHJvbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQ2QUFCMzgwQjY2QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2QUFCMzcwQjY2
QTk0NDAwRTU1RjE2IC8qIEpTU3RyaW5nUmVmQ0YuY3BwICovOyB9OwpAQCAtNjYzLDcgKzY2MSw2
IEBACiAJCUJDMThDNDY4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMThDM0MzMEUxNkVFMzMw
MEIzNDQ2MCAvKiBTdHJpbmdPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQzE4QzQ2QTBFMTZGNUNEMDBCMzQ0NjAgLyogU3RyaW5nUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzE4QzNDNjBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxOEM0NkIwRTE2RjVDRDAw
QjM0NDYwIC8qIFN5bWJvbFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNEEzOTZBNjBDRDI5MzMxMDBCNUI0RkYgLyogU3ltYm9sVGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQzE4QzQ3
NjBFMTZGNUNEMDBCMzQ0NjAgLyogVVN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzE4
QzQ3QTBFMTZGNUNEMDBCMzQ0NjAgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REUzRDBGNDBERDhEREZCMDA0Njg3
MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwogCQlCQzE4QzUyNDBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi87IH07
CiAJCUJDMThDNTI2MEUxNkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE4QzUyNTBFMTZG
Q0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oICovOyB9OwpAQCAtODE3LDggKzgx
NCw2IEBACiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkwODk2QzI5QjEyNjVBQUY2MDBCMUNE
RDMgLyogVVN0cmluZ0NvbmNhdGVuYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVTdHJpbmdDb25jYXRlbmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
OEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVVN0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZm
b3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvbXBpbGF0aW9uRWZm
b3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4Mzk2MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTgsOCArMTUxMyw2IEBACiAJCUY2
OTJBODdDMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4N0QwMjU1NTk3RDAx
RkY2MEY3IC8qIFJlZ0V4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODdFMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKLQkJRjY5MkE4ODUw
MjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKLQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8q
IFVTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07
CiAJCUY2OTJBODg3MDI1NTU5N0QwMUZGNjBGNyAvKiBKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUZFNEEzMzFEMTVCRDJF
MDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWTUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWTUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjIzNSwxMCArMjIyOCw2IEBACiAJCQkJNUQ1MzcyNkQwRTFDNTQ2QjAwMjFFNTQ5
IC8qIFRyYWNpbmcuZCAqLywKIAkJCQk1RDUzNzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2lu
Zy5oICovLAogCQkJCTg2NjczOUQxMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rp
b24uaCAqLywKLQkJCQlGNjkyQTg4NTAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5jcHAgKi8s
Ci0JCQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcuaCAqLywKLQkJCQkwOERE
QTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLywKLQkJCQkwODk2QzI5
QjEyNjVBQUY2MDBCMUNERDMgLyogVVN0cmluZ0NvbmNhdGVuYXRlLmggKi8sCiAJCQkJMTRCRkNF
NjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oICovLAogCQkJCTE0MjBCRTdBMTBBQTZE
REIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTEx
OTQwIC8qIFdyaXRlQmFycmllci5oICovLApAQCAtMjc4Niw4ICsyNzc1LDYgQEAKIAkJCQk1RDUz
NzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY2
NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDMThDNDc2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVU3Ry
aW5nLmggaW4gSGVhZGVycyAqLywKLQkJCQkwOEREQTVDMTEyNjQ2MzE3MDA3NTE3MzIgLyogVVN0
cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlC
MiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ4MTQ2MENCQjMw
MDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0OTE0
NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM0
MzMsNyArMzQyMCw2IEBACiAJCQkJQkNDRjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVy
ZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3
OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRBNDJFM0YwRjRG
NjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0
NDY5REVFMTA3RUM3RTcwMDY1MDQ0NiAvKiBVU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQzgxNTE2MTQwNTExQjUwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9y
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyogWWFy
ckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpp
bmRleCBlNWFmMWY3NzcyZTYwODEzOTZlOGQwNjUxYWUzNmZmMDRkNjIwOTYwLi41NDUzYThlNjYy
YmM1ZjgwNGIyMDljYWFiYjYyMjlhYzlkMzdlNjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnBy
aQpAQCAtMjU1LDcgKzI1NSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvU3RydWN0dXJl
LmNwcCBcCiAgICAgcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgXAogICAgIHJ1bnRpbWUvVGltZW91
dENoZWNrZXIuY3BwIFwKLSAgICBydW50aW1lL1VTdHJpbmcuY3BwIFwKICAgICB0b29scy9Db2Rl
UHJvZmlsZS5jcHAgXAogICAgIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwIFwKICAgICB5YXJyL1lh
cnJKSVQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggMDZiZTc3MDgwNTNiN2MyOTg1MzdiN2IwZWE4MzcwMTkxMzFiOTg2MS4uNWJmZTlk
MGFjNzk0ODQ4ZTkwZWZkZjU1Y2NiNzFiMjY1OTBlZjc5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTWV0aG9kQ2FsbExpbmtTdGF0dXMu
aCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVu
YXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC02MiwzNiArNjEsMzYgQEAgbmFtZXNw
YWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLXN0YXRpYyBVU3RyaW5n
IGVzY2FwZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIpCitzdGF0aWMgU3RyaW5nIGVzY2FwZVF1
b3Rlcyhjb25zdCBTdHJpbmcmIHN0cikKIHsKLSAgICBVU3RyaW5nIHJlc3VsdCA9IHN0cjsKKyAg
ICBTdHJpbmcgcmVzdWx0ID0gc3RyOwogICAgIHNpemVfdCBwb3MgPSAwOwogICAgIHdoaWxlICgo
cG9zID0gcmVzdWx0LmZpbmQoJ1wiJywgcG9zKSkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgcmVz
dWx0ID0gbWFrZVVTdHJpbmcocmVzdWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIHBvcyksICJc
IlxcXCJcIiIsIHJlc3VsdC5zdWJzdHJpbmdTaGFyaW5nSW1wbChwb3MgKyAxKSk7CisgICAgICAg
IHJlc3VsdCA9IG1ha2VTdHJpbmcocmVzdWx0LnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIHBvcyks
ICJcIlxcXCJcIiIsIHJlc3VsdC5zdWJzdHJpbmdTaGFyaW5nSW1wbChwb3MgKyAxKSk7CiAgICAg
ICAgIHBvcyArPSA0OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgVVN0
cmluZyB2YWx1ZVRvU291cmNlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWwpCitz
dGF0aWMgU3RyaW5nIHZhbHVlVG9Tb3VyY2VTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbCkKIHsKICAgICBpZiAoIXZhbCkKICAgICAgICAgcmV0dXJuICIwIjsKIAogICAgIGlmICh2
YWwuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVU3RyaW5nKCJcIiIsIGVzY2FwZVF1
b3Rlcyh2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgIlwiIik7CisgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJcIiIsIGVzY2FwZVF1b3Rlcyh2YWwudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKSwgIlwiIik7CiAKICAgICByZXR1cm4gdmFsLmRlc2NyaXB0aW9uKCk7CiB9CiAK
IHN0YXRpYyBDU3RyaW5nIGNvbnN0YW50TmFtZShFeGVjU3RhdGUqIGV4ZWMsIGludCBrLCBKU1Zh
bHVlIHZhbHVlKQogewotICAgIHJldHVybiBtYWtlVVN0cmluZyh2YWx1ZVRvU291cmNlU3RyaW5n
KGV4ZWMsIHZhbHVlKSwgIihAayIsIFVTdHJpbmc6Om51bWJlcihrIC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgpLCAiKSIpLnV0ZjgoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyh2YWx1ZVRv
U291cmNlU3RyaW5nKGV4ZWMsIHZhbHVlKSwgIihAayIsIFN0cmluZzo6bnVtYmVyKGsgLSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCksICIpIikudXRmOCgpOwogfQogCiBzdGF0aWMgQ1N0cmlu
ZyBpZE5hbWUoaW50IGlkMCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAgcmV0dXJu
IG1ha2VVU3RyaW5nKGlkZW50LnVzdHJpbmcoKSwgIihAaWQiLCBVU3RyaW5nOjpudW1iZXIoaWQw
KSwgIikiKS51dGY4KCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoaWRlbnQudXN0cmluZygpLCAi
KEBpZCIsIFN0cmluZzo6bnVtYmVyKGlkMCksICIpIikudXRmOCgpOwogfQogCiB2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUoaW50IGxvY2F0aW9uKQpAQCAtMTE0
LDEwICsxMTMsMTAgQEAgQ1N0cmluZyBDb2RlQmxvY2s6OnJlZ2lzdGVyTmFtZShFeGVjU3RhdGUq
IGV4ZWMsIGludCByKSBjb25zdAogICAgIGlmIChpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChyKSkK
ICAgICAgICAgcmV0dXJuIGNvbnN0YW50TmFtZShleGVjLCByLCBnZXRDb25zdGFudChyKSk7CiAK
LSAgICByZXR1cm4gbWFrZVVTdHJpbmcoInIiLCBVU3RyaW5nOjpudW1iZXIocikpLnV0ZjgoKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygiciIsIFN0cmluZzo6bnVtYmVyKHIpKS51dGY4KCk7CiB9
CiAKLXN0YXRpYyBVU3RyaW5nIHJlZ2V4cFRvU291cmNlU3RyaW5nKFJlZ0V4cCogcmVnRXhwKQor
c3RhdGljIFN0cmluZyByZWdleHBUb1NvdXJjZVN0cmluZyhSZWdFeHAqIHJlZ0V4cCkKIHsKICAg
ICBjaGFyIHBvc3RmaXhbNV0gPSB7ICcvJywgMCwgMCwgMCwgMCB9OwogICAgIGludCBpbmRleCA9
IDE7CkBAIC0xMjgsMTUgKzEyNywxNSBAQCBzdGF0aWMgVVN0cmluZyByZWdleHBUb1NvdXJjZVN0
cmluZyhSZWdFeHAqIHJlZ0V4cCkKICAgICBpZiAocmVnRXhwLT5tdWx0aWxpbmUoKSkKICAgICAg
ICAgcG9zdGZpeFtpbmRleF0gPSAnbSc7CiAKLSAgICByZXR1cm4gbWFrZVVTdHJpbmcoIi8iLCBy
ZWdFeHAtPnBhdHRlcm4oKSwgcG9zdGZpeCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIi8iLCBy
ZWdFeHAtPnBhdHRlcm4oKSwgcG9zdGZpeCk7CiB9CiAKIHN0YXRpYyBDU3RyaW5nIHJlZ2V4cE5h
bWUoaW50IHJlLCBSZWdFeHAqIHJlZ2V4cCkKIHsKLSAgICByZXR1cm4gbWFrZVVTdHJpbmcocmVn
ZXhwVG9Tb3VyY2VTdHJpbmcocmVnZXhwKSwgIihAcmUiLCBVU3RyaW5nOjpudW1iZXIocmUpLCAi
KSIpLnV0ZjgoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhyZWdleHBUb1NvdXJjZVN0cmluZyhy
ZWdleHApLCAiKEByZSIsIFN0cmluZzo6bnVtYmVyKHJlKSwgIikiKS51dGY4KCk7CiB9CiAKLXN0
YXRpYyBVU3RyaW5nIHBvaW50ZXJUb1NvdXJjZVN0cmluZyh2b2lkKiBwKQorc3RhdGljIFN0cmlu
ZyBwb2ludGVyVG9Tb3VyY2VTdHJpbmcodm9pZCogcCkKIHsKICAgICBjaGFyIGJ1ZmZlclsyICsg
MiAqIHNpemVvZih2b2lkKikgKyAxXTsgLy8gMHggW3R3byBjaGFyYWN0ZXJzIHBlciBieXRlXSBc
MAogICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlcCIsIHApOwpAQCAtNjQy
LDcgKzY0MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCEoKGkgKyBt
X3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXNbaV0ubWluKSAmIH4weEZGRkYp
KTsKICAgICAgICAgICAgICAgICBVQ2hhciBjaCA9IHN0YXRpY19jYXN0PFVDaGFyPihlbnRyeSAr
IG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5taW4pOwotICAgICAg
ICAgICAgICAgIGRhdGFMb2coIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmluZygmY2gsIDEp
LnV0ZjgoKS5kYXRhKCksICppdGVyKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJcdFx0XCIl
c1wiID0+ICUwNGRcbiIsIFN0cmluZygmY2gsIDEpLnV0ZjgoKS5kYXRhKCksICppdGVyKTsKICAg
ICAgICAgfQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgfVxuIik7CiAgICAgICAgICAgICAr
K2k7CkBAIC02NTYsNyArNjU1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgZGF0YUxvZygiICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAg
IFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5lbmQo
KTsKICAgICAgICAgICAgIGZvciAoU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
c1tpXS5vZmZzZXRUYWJsZS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICAg
ICAgICAgIGRhdGFMb2coIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgVVN0cmluZyhpdGVyLT5maXJz
dCkudXRmOCgpLmRhdGEoKSwgaXRlci0+c2Vjb25kLmJyYW5jaE9mZnNldCk7CisgICAgICAgICAg
ICAgICAgZGF0YUxvZygiXHRcdFwiJXNcIiA9PiAlMDRkXG4iLCBTdHJpbmcoaXRlci0+Zmlyc3Qp
LnV0ZjgoKS5kYXRhKCksIGl0ZXItPnNlY29uZC5icmFuY2hPZmZzZXQpOwogICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgfVxuIik7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUg
KGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKQEAgLTMw
MDIsMTIgKzMwMDEsMTIgQEAgYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bj
b2RlSUQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1VU3RyaW5nIENvZGVCbG9jazo6bmFtZUZv
clJlZ2lzdGVyKGludCByZWdpc3Rlck51bWJlcikKK1N0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JS
ZWdpc3RlcihpbnQgcmVnaXN0ZXJOdW1iZXIpCiB7CiAgICAgU3ltYm9sVGFibGU6Oml0ZXJhdG9y
IGVuZCA9IG1fc3ltYm9sVGFibGUtPmVuZCgpOwogICAgIGZvciAoU3ltYm9sVGFibGU6Oml0ZXJh
dG9yIHB0ciA9IG1fc3ltYm9sVGFibGUtPmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAg
ICAgICAgIGlmIChwdHItPnNlY29uZC5nZXRJbmRleCgpID09IHJlZ2lzdGVyTnVtYmVyKQotICAg
ICAgICAgICAgcmV0dXJuIFVTdHJpbmcocHRyLT5maXJzdCk7CisgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKHB0ci0+Zmlyc3QpOwogICAgIH0KICAgICBpZiAobmVlZHNBY3RpdmF0aW9uKCkgJiYg
cmVnaXN0ZXJOdW1iZXIgPT0gYWN0aXZhdGlvblJlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiAi
YWN0aXZhdGlvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggNGE1MDgwYjIwMjRmZDI1YjY5ZDA0NzZiMWM4OGU0OTU4NTI3M2UwNy4uYTY0ZmQ2ZGNj
NDc5OTdmYTI4OTI4N2IxNTk0ZTQxY2Y5NjZmNmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNjQsNyArNjQsNiBAQAogI2luY2x1ZGUgIk5vZGVz
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1Yklu
Zm8uaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFs
aXplci5oIgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQu
aCIKQEAgLTc1LDYgKzc0LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogLy8gU2V0IEVOQUJMRV9CWVRFQ09ERV9DT01NRU5U
UyB0byAxIHRvIGVuYWJsZSByZWNvcmRpbmcgYnl0ZWNvZGUgZ2VuZXJhdG9yCiAvLyBjb21tZW50
cyBmb3IgdGhlIGJ5dGVjb2RlcyB0aGF0IGl0IGdlbmVyYXRlcy4gVGhpcyB3aWxsIGFsbG93CkBA
IC01ODMsNyArNTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2
YWxDYWNoZSgpOwogICAgICAgICAKLSAgICAgICAgVVN0cmluZyBuYW1lRm9yUmVnaXN0ZXIoaW50
IHJlZ2lzdGVyTnVtYmVyKTsKKyAgICAgICAgU3RyaW5nIG5hbWVGb3JSZWdpc3RlcihpbnQgcmVn
aXN0ZXJOdW1iZXIpOwogICAgICAgICAKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4
IDZjMWJiOTdkMzAyZGI3NTY5MjgzMDY5YWZmZWFiYTI2ZjQxNjdiMzguLjg4ZTllNWMyNGYzMjYw
ZGM0ZGZhN2U3MmM5MDE1MjYyYTExYmQ5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIk5v
ZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NSwxNCAr
NDQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsQ29kZUNhY2hlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiB0cnlHZXQoYm9vbCBpblN0cmljdENv
bnRleHQsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogdHJ5R2V0KGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIWluU3RyaWN0Q29udGV4dCAmJiBldmFsU291cmNl
Lmxlbmd0aCgpIDwgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmIHNjb3BlQ2hhaW4tPmJlZ2lu
KCktPmlzVmFyaWFibGVPYmplY3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbV9jYWNoZU1h
cC5nZXQoZXZhbFNvdXJjZS5pbXBsKCkpLmdldCgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNT
dGF0ZSogZXhlYywgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0
LCBjb25zdCBVU3RyaW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwg
SlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93
KEV4ZWNTdGF0ZSogZXhlYywgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIsIGJvb2wgaW5TdHJpY3RD
b250ZXh0LCBjb25zdCBTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgRXZh
bEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVj
LCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0cmljdENvbnRleHQpOwogICAgICAgICAgICAg
ZXhjZXB0aW9uVmFsdWUgPSBldmFsRXhlY3V0YWJsZS0+Y29tcGlsZShleGVjLCBzY29wZUNoYWlu
KTsKQEAgLTY1LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
ZXZhbEV4ZWN1dGFibGU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRh
YmxlKiBnZXQoRXhlY1N0YXRlKiBleGVjLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lciwgYm9vbCBp
blN0cmljdENvbnRleHQsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSkKKyAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGdldChFeGVjU3RhdGUqIGV4ZWMsIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyLCBib29s
IGluU3RyaWN0Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbiwgSlNWYWx1ZSYgZXhjZXB0aW9uVmFsdWUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IHRyeUdldChpblN0cmljdENv
bnRleHQsIGV2YWxTb3VyY2UsIHNjb3BlQ2hhaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSnVtcFRhYmxlLmgKaW5kZXggNWJiZTA0NzEwN2Y1YjAxYzAyODliZWEzMzE4NmUx
Zjg0YTNhYWZjNy4uY2IwZGVmNTZlYzcwZGZjYWVmNWZiMDY3NTM5Y2MyN2E2ZWI1OTFjOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaApAQCAtMzEsNyArMzEs
NiBAQAogI2RlZmluZSBKdW1wVGFibGVfaAogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
LSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggOWQyZGQ3YmFiNTQwMDUyNWU4
YjE1N2MwMTRiMjRlMTc2ZDYzNTQ0OS4uYThhYWNmNDczMzgwNTgxNWY5MjI4ODJkMTJlZWFkMTdj
ZDUyZGVkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUg
IlN0cm9uZ0lubGluZXMuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTExNTgsNyArMTE1
OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcChPcGNv
ZGVJRCBvcGNvZGVJRCwgUmVnaXN0ZXJJRCogZHN0CiAgICAgICAgICAgICAmJiBzcmMxLT5pc1Rl
bXBvcmFyeSgpCiAgICAgICAgICAgICAmJiBtX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVy
SW5kZXgoc3JjMi0+aW5kZXgoKSkKICAgICAgICAgICAgICYmIG1fY29kZUJsb2NrLT5jb25zdGFu
dFJlZ2lzdGVyKHNyYzItPmluZGV4KCkpLmdldCgpLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAg
IGNvbnN0IFVTdHJpbmcmIHZhbHVlID0gYXNTdHJpbmcobV9jb2RlQmxvY2stPmNvbnN0YW50UmVn
aXN0ZXIoc3JjMi0+aW5kZXgoKSkuZ2V0KCkpLT50cnlHZXRWYWx1ZSgpOworICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiB2YWx1ZSA9IGFzU3RyaW5nKG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lz
dGVyKHNyYzItPmluZGV4KCkpLmdldCgpKS0+dHJ5R2V0VmFsdWUoKTsKICAgICAgICAgICAgIGlm
ICh2YWx1ZSA9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICAgICAgIHJld2luZFVuYXJ5T3Ao
KTsKICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2lzX3VuZGVmaW5lZCk7CkBAIC0yNDQ2
LDcgKzI0NDYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6cG9wVHJ5QW5kRW1p
dENhdGNoKFRyeURhdGEqIHRyeURhdGEsIFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIHRhcmdldFJl
Z2lzdGVyOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhyb3dSZWZlcmVuY2VF
cnJvcihjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGVtaXRP
cGNvZGUob3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnRWYWx1ZShqc1N0cmluZyhnbG9iYWxEYXRhKCksIG1lc3NhZ2UpKS0+aW5k
ZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYmMwZjZkYjI4NGI1NTc5MTUzYzhjY2U5ODk4Y2Y0ODE4
ZDllY2U4OC4uNzlhM2YzNjgyN2M1YTYwYWY3NjhmYWFmN2NjYWRhYTA0NzM0MzNkOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtNTIwLDcgKzUyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
ZW1pdFVuYXJ5Tm9Ec3RPcChvcF90aHJvdywgZXhjKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CisgICAg
ICAgIHZvaWQgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
IAogICAgICAgICB2b2lkIGVtaXRQdXNoTmV3U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMGQ2
MzgwODNhNjNiZmE0ODcxYTE5ZWMxNDNlMWU5NmI1MjQ5ZDJjNC4uYWMzNzU0NTE3NzI2MDk1ZmNm
MDRmMmQ0YWQ1NjQwNjMyN2EyZDI3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1
ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2FtcGxpbmdUb29sLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNzcsNyArNzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVy
SUQqIFRocm93YWJsZUV4cHJlc3Npb25EYXRhOjplbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorUmVnaXN0
ZXJJRCogVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGE6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFRocm93UmVmZXJlbmNlRXJyb3IobWVzc2Fn
ZSk7CkBAIC0xODA4LDcgKzE4MDcsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ2xhdXNlTGlzdChD
bGF1c2VMaXN0Tm9kZSogbGlzdCwgVmVjdG9yPEV4cHJlc3Npb25Ob2RlKiwgOD4mCiAgICAgICAg
ICAgICAgICAgdHlwZUZvclRhYmxlID0gU3dpdGNoTmVpdGhlcjsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlID0g
c3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KGNsYXVzZUV4cHJlc3Npb24pLT52YWx1ZSgpLnVzdHJp
bmcoKTsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBzdGF0aWNfY2FzdDxTdHJp
bmdOb2RlKj4oY2xhdXNlRXhwcmVzc2lvbiktPnZhbHVlKCkudXN0cmluZygpOwogICAgICAgICAg
ICAgaWYgKHNpbmdsZUNoYXJhY3RlclN3aXRjaCAmPSB2YWx1ZS5sZW5ndGgoKSA9PSAxKSB7CiAg
ICAgICAgICAgICAgICAgaW50MzJfdCBpbnRWYWwgPSB2YWx1ZVswXTsKICAgICAgICAgICAgICAg
ICBpZiAoaW50VmFsIDwgbWluX251bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCmluZGV4IDBhNjZkNmYzNGU2ZjRiYzljYzZkMDQ3YmY5ODZkZmI0MWI3MGVi
ZDAuLmVkNTZhNTNjZDY4NTFkOTE1NzhlZDYzZWFiMTJmNTljZDZhMWY1ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBp
bmxpbmUgUmVjb21waWxlcjo6flJlY29tcGlsZXIoKQogICAgIC8vIEphdmFTY3JpcHQgaW4gdGhl
IGluc3BlY3Rvci4KICAgICBTb3VyY2VQcm92aWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9zb3VyY2VQcm92aWRlcnMuZW5kKCk7CiAgICAgZm9yIChTb3VyY2VQcm92aWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IG1fc291cmNlUHJvdmlkZXJzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCi0gICAgICAgIG1fZGVidWdnZXItPnNvdXJjZVBhcnNlZChpdGVyLT5zZWNvbmQs
IGl0ZXItPmZpcnN0LCAtMSwgVVN0cmluZygpKTsKKyAgICAgICAgbV9kZWJ1Z2dlci0+c291cmNl
UGFyc2VkKGl0ZXItPnNlY29uZCwgaXRlci0+Zmlyc3QsIC0xLCBTdHJpbmcoKSk7CiB9CiAKIGlu
bGluZSB2b2lkIFJlY29tcGlsZXI6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQpAQCAtMTIxLDcg
KzEyMSw3IEBAIHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKICAgICBnbG9iYWxEYXRhLT5oZWFwLm9iamVjdFNwYWNlKCkuZm9y
RWFjaENlbGwocmVjb21waWxlcik7CiB9CiAKLUpTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxG
cmFtZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbiwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShj
b25zdCBTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9uLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewogICAgIENhbGxGcmFtZSogZ2xvYmFsQ2FsbEZyYW1lID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5oCmluZGV4IGJjNzQzNjc3ZTIyNzQzNzZmOWRkMGQ4NWFhNWQ2ZDg3NTFiNTAxMDku
LjNjNGE0ZWQ3NjIxOWNjMjFmNGE5NjYzNGM0YjI2MTcxOWRlOGVjNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC0zMiw3ICszMiw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7CiAg
ICAgY2xhc3MgU291cmNlUHJvdmlkZXI7Ci0gICAgY2xhc3MgVVN0cmluZzsKIAogICAgIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyIHsKICAgICBwdWJsaWM6CkBAIC00MSw3ICs0MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGF0dGFjaChKU0dsb2JhbE9iamVjdCop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBTb3VyY2VQcm92aWRlcios
IGludCBlcnJvckxpbmVOdW1iZXIsIGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3Zp
ZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgV1RGOjpTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQsIGJvb2wpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGlu
dCwgaW50KSA9IDA7CkBAIC02MCw3ICs1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJp
bGl0eSB3aXRoIGV4aXN0aW5nIFdlYlNjcmlwdERlYnVnZ2VyIGNsaWVudHMuCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJp
bmcmLCBKU1ZhbHVlJiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uLCBKU0dsb2JhbE9iamVjdCopOwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcAppbmRleCA0YzI1NTRmMWEyY2E0MjljMjI5NWJiZTBkMjk2MTRj
ZjAxOTNiODRjLi5lMjM0NjgwMzUxNDU0MWQxMGM1MzI4NjI4NDQzMGMyMDBiOTc0OTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0
aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FjdGl2YXRpb24pOwogfQogCi1VU3RyaW5nIERlYnVnZ2Vy
QWN0aXZhdGlvbjo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCitTdHJpbmcgRGVi
dWdnZXJBY3RpdmF0aW9uOjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBjb25zdCBEZWJ1Z2dlckFjdGl2YXRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgRGVi
dWdnZXJBY3RpdmF0aW9uKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+bV9hY3Rp
dmF0aW9uLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09iamVjdC0+bV9hY3RpdmF0aW9u
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckFjdGl2YXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckFjdGl2YXRpb24uaAppbmRleCAwN2QyMDE0MWY0OTljNzY4OTQ0MGJkMGUxODIzZjdlODllY2Rj
NGI4Li5jOTM0NDA3ZmMyMjkzYjYyMDg1YzQzMmE1MGU3MTMyMDRiNTRmZjhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotICAgICAgICBz
dGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKKyAgICAgICAgc3RhdGlj
IFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0
aWMgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGE0OGU3ZDE1
NjEyY2NiN2MyOWQwZGVmOWQwM2U2N2QwYmU4MzFkNzQuLjNmOGM5Y2ExNWQ4MWVlZDc4ZjRiMDRk
OThkNWJmODkyOGQxYWVhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotY29uc3QgVVN0cmluZyogRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aW9uTmFt
ZSgpIGNvbnN0Citjb25zdCBTdHJpbmcqIERlYnVnZ2VyQ2FsbEZyYW1lOjpmdW5jdGlvbk5hbWUo
KSBjb25zdAogewogICAgIGlmICghbV9jYWxsRnJhbWUtPmNvZGVCbG9jaygpKQogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTUwLDE1ICs1MCwxNSBAQCBjb25zdCBVU3RyaW5nKiBEZWJ1Z2dlckNhbGxG
cmFtZTo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICByZXR1cm4gJmpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oZnVuY3Rpb24pLT5uYW1lKG1fY2FsbEZyYW1lKTsKIH0KICAgICAKLVVTdHJpbmcgRGVidWdn
ZXJDYWxsRnJhbWU6OmNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBjb25zdAorU3RyaW5nIERlYnVn
Z2VyQ2FsbEZyYW1lOjpjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY2FsbEZyYW1lLT5jb2RlQmxvY2soKSkKLSAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0gbV9jYWxs
RnJhbWUtPmNhbGxlZSgpOwogCiAgICAgaWYgKCFmdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIFVT
dHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJuIGdldENhbGN1
bGF0ZWREaXNwbGF5TmFtZShtX2NhbGxGcmFtZSwgZnVuY3Rpb24pOwogfQpAQCAtODQsNyArODQs
NyBAQCBKU09iamVjdCogRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNPYmplY3QoKSBjb25zdAogICAg
IHJldHVybiBhc09iamVjdCh0aGlzVmFsdWUpOwogfQogCi1KU1ZhbHVlIERlYnVnZ2VyQ2FsbEZy
YW1lOjpldmFsdWF0ZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbikg
Y29uc3QKK0pTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbGxGcmFt
ZS0+Y29kZUJsb2NrKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCmluZGV4IGRjYTc0
ODdjMDdiNDA4Y2FlZTljZWM4Y2JkN2I4YTA2MGZmNTJjNzIuLmM0NTc3NzVjZmNjNzFhOGU3M2Nj
OTEwOTljNDMxOGI0NTk0Nzg5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC01MSwxMSArNTEsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsRnJhbWU7IH0KICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOyB9CiAg
ICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
RnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBV
U3RyaW5nKiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
VVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGNvbnN0IFN0cmluZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBl
eGNlcHRpb24pIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1
YXRlKGNvbnN0IFN0cmluZyYsIEpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CiAgICAgICAgIEpT
VmFsdWUgZXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9leGNlcHRpb247IH0KIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCmluZGV4IDYyZjI2N2UxMmMyZmU0
YTMwM2Q4ZDk0ODRmNjAyM2I2MThiMGVlODkuLjNiNjJlMjA1NDQ4MmM1YmEzMDViYTc5ODg2YjEx
ZWY4MjRjMWRhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCkBAIC0xMDIsNyAr
MTAyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IHN0cnVjdCBIYW5kbGVDb252ZXJ0ZXI8
QmFzZSwgVW5rbm93bj4gewogICAgIEhhbmRsZTxKU09iamVjdD4gYXNPYmplY3QoKSBjb25zdDsK
ICAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4ganNWYWx1ZSgpLmlzT2JqZWN0KCk7
IH0KICAgICBib29sIGdldE51bWJlcihkb3VibGUgbnVtYmVyKSBjb25zdCB7IHJldHVybiBqc1Zh
bHVlKCkuZ2V0TnVtYmVyKG51bWJlcik7IH0KLSAgICBVU3RyaW5nIGdldFN0cmluZyhFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGpzVmFsdWUoKS5p
c1VuZGVmaW5lZE9yTnVsbCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKaW5kZXggNmYxM2FmYjcyNWE5OTk5ZTczZWNmMDM4NDc0MzZlNWMzYTMzZjIxNC4uZTM0OTNh
YzY0Njg3Mjg2MjliODQzYjNmZDZmYjgzZjk1NGYyYTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaApAQCAtNTksMTEgKzU5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAg
ICBjbGFzcyBSZWdpc3RlckZpbGU7Ci0gICAgY2xhc3MgVVN0cmluZzsKICAgICBjbGFzcyBXZWFr
R0NIYW5kbGVQb29sOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogCi0gICAgdHlwZWRlZiBzdGQ6
OnBhaXI8SlNWYWx1ZSwgVVN0cmluZz4gVmFsdWVTdHJpbmdQYWlyOworICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPEpTVmFsdWUsIFdURjo6U3RyaW5nPiBWYWx1ZVN0cmluZ1BhaXI7CiAgICAgdHlwZWRl
ZiBIYXNoQ291bnRlZFNldDxKU0NlbGwqPiBQcm90ZWN0Q291bnRTZXQ7CiAgICAgdHlwZWRlZiBI
YXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj4gVHlwZUNvdW50U2V0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCBiMzEzNjY0M2I0ZWRiNzhmMWFmMTE1M2M3
OTVlYzIzMTAxNGM5NThlLi42ZWY5ZjllMDQ5ZTAyNDk1N2I4ZGVjYTk3N2NjZWY2MDE2MWIzMzM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTM4LDcgKzM4
LDYgQEAKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxp
bmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5o
IgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAKaW5kZXggY2ZiZmIzZTNhZDAzOGY3ODU0OGFjMGZmYTJhMWM5
NzJmYWE1NzBjMy4uZjgyMTJlYWZlNmE4MDAyNjM5NGExMzgxOTkzMWQ0YTJjMTMwZDhlOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAgdm9pZCBDYWxsRnJhbWU6OmR1bXBDYWxsZXIoKQogewogICAgIGludCBz
aWduZWRMaW5lTnVtYmVyOwogICAgIGludHB0cl90IHNvdXJjZUlEOwotICAgIFVTdHJpbmcgdXJs
U3RyaW5nOworICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKICAg
ICAKICAgICBpbnRlcnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIodGhpcywgc2lnbmVkTGlu
ZU51bWJlciwgc291cmNlSUQsIHVybFN0cmluZywgZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggN2E5ZmM5NGUz
ZTdkMmExNGY5YTM1Y2E0ODhiZDc2Njk4MDk3N2Q3MC4uZmM1YWY1NGM2MDFhYWFkM2U5YTczNzM4
YzBjMmI4MmJlOTQ2ZjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MSw3ICs2MSw2IEBACiAjaW5jbHVkZSAiU2FtcGxp
bmdUb29sLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJT
dHJvbmdJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVk
ZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CkBAIC0xNTAsNyArMTQ5LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgICAgICByZXR1cm4gcHJvZ3JhbTsKICAgICAKICAgICBUb3BDYWxsRnJhbWVTZXR0ZXIg
dG9wQ2FsbEZyYW1lKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUpOwotICAgIFVT
dHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxsRnJhbWUp
OworICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gYXNTdHJpbmcocHJvZ3JhbSktPnZhbHVlKGNh
bGxGcmFtZSk7CiAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CiAgICAgCkBAIC0zNjEsNyArMzYwLDcgQEAgdm9pZCBJbnRlcnByZXRl
cjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB3aGlsZSAoaXQgPCBl
bmQpIHsKICAgICAgICAgSlNWYWx1ZSB2ID0gaXQtPmpzVmFsdWUoKTsKICAgICAgICAgaW50IHJl
Z2lzdGVyTnVtYmVyID0gaXQgLSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwotICAgICAgICBVU3Ry
aW5nIG5hbWUgPSBjb2RlQmxvY2stPm5hbWVGb3JSZWdpc3RlcihyZWdpc3Rlck51bWJlcik7Cisg
ICAgICAgIFN0cmluZyBuYW1lID0gY29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJO
dW1iZXIpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGRhdGFMb2coIltyJSAzZCAl
MTRzXSAgICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIHJlZ2lzdGVyTnVtYmVyLCBuYW1l
LmFzY2lpKCkuZGF0YSgpLCBpdCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikp
OwogI2Vsc2UKQEAgLTQwMCw3ICszOTksNyBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0
ZXJzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICBkbyB7CiAgICAgICAgICAgICBKU1Zh
bHVlIHYgPSBpdC0+anNWYWx1ZSgpOwogICAgICAgICAgICAgaW50IHJlZ2lzdGVyTnVtYmVyID0g
aXQgLSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwotICAgICAgICAgICAgVVN0cmluZyBuYW1lID0g
Y29kZUJsb2NrLT5uYW1lRm9yUmVnaXN0ZXIocmVnaXN0ZXJOdW1iZXIpOworICAgICAgICAgICAg
U3RyaW5nIG5hbWUgPSBjb2RlQmxvY2stPm5hbWVGb3JSZWdpc3RlcihyZWdpc3Rlck51bWJlcik7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgICAgIGRhdGFMb2coIltyJSAzZCAlMTRz
XSAgICAgIHwgJTEwcCB8ICUtMTZzIDB4JWxseCBcbiIsIHJlZ2lzdGVyTnVtYmVyLCBuYW1lLmFz
Y2lpKCkuZGF0YSgpLCBpdCwgdi5kZXNjcmlwdGlvbigpLCBKU1ZhbHVlOjplbmNvZGUodikpOwog
I2Vsc2UKQEAgLTUzMSwxMCArNTMwLDEwIEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJy
b3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICBp
ZiAoIWpzTWVzc2FnZSB8fCAhanNNZXNzYWdlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFVTdHJpbmcgbWVzc2FnZSA9IGFzU3RyaW5nKGpzTWVzc2FnZSktPnZhbHVlKGNhbGxG
cmFtZSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBhc1N0cmluZyhqc01lc3NhZ2UpLT52YWx1ZShj
YWxsRnJhbWUpOwogCiAgICAgaWYgKGV4cHJlc3Npb25TdGFydCA8IGV4cHJlc3Npb25TdG9wKQot
ICAgICAgICBtZXNzYWdlID0gIG1ha2VVU3RyaW5nKG1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIs
IGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lv
blN0b3ApLCAiJykiKTsKKyAgICAgICAgbWVzc2FnZSA9ICBtYWtlU3RyaW5nKG1lc3NhZ2UsICIg
KGV2YWx1YXRpbmcgJyIsIGNvZGVCbG9jay0+c291cmNlKCktPmdldFJhbmdlKGV4cHJlc3Npb25T
dGFydCwgZXhwcmVzc2lvblN0b3ApLCAiJykiKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gTm8g
cmFuZ2UgaW5mb3JtYXRpb24sIHNvIGdpdmUgYSBmZXcgY2hhcmFjdGVycyBvZiBjb250ZXh0CiAg
ICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGRhdGEgPSBjb2RlQmxvY2stPnNvdXJjZSgpLT5kYXRh
KCk7CkBAIC01NTEsNyArNTUwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogICAgICAgICAg
ICAgc3RvcCsrOwogICAgICAgICB3aGlsZSAoc3RvcCA+IGV4cHJlc3Npb25TdGFydCAmJiBpc1N0
cldoaXRlU3BhY2UoKCpkYXRhKVtzdG9wIC0gMV0pKQogICAgICAgICAgICAgc3RvcC0tOwotICAg
ICAgICBtZXNzYWdlID0gbWFrZVVTdHJpbmcobWVzc2FnZSwgIiAobmVhciAnLi4uIiwgY29kZUJs
b2NrLT5zb3VyY2UoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0b3ApLCAiLi4uJykiKTsKKyAgICAgICAg
bWVzc2FnZSA9IG1ha2VTdHJpbmcobWVzc2FnZSwgIiAobmVhciAnLi4uIiwgY29kZUJsb2NrLT5z
b3VyY2UoKS0+Z2V0UmFuZ2Uoc3RhcnQsIHN0b3ApLCAiLi4uJykiKTsKICAgICB9CiAKICAgICBl
eGNlcHRpb24tPnB1dERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+bWVzc2FnZSwganNTdHJpbmcoZ2xvYmFsRGF0YSwgbWVzc2FnZSkpOwpAQCAtNjY0LDcgKzY2
Myw3IEBAIHN0YXRpYyBDYWxsRnJhbWUqIGdldENhbGxlckluZm8oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwKICAgICByZXR1cm4gY2FsbGVyRnJhbWU7CiB9
CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGNvbnN0IFVTdHJpbmcgZ2V0U291cmNlVVJMRnJvbUNh
bGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgCitzdGF0aWMgQUxXQVlTX0lOTElORSBjb25z
dCBTdHJpbmcgZ2V0U291cmNlVVJMRnJvbUNhbGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFzSG9zdENhbGxGcmFtZUZsYWcoKSk7CiAjaWYg
RU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCkBAIC03MDUsMTMgKzcwNCwxMyBAQCB2b2lkIElu
dGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgVmVjdG9y
PFN0YWNrRnJhbWU+JiByZQogICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+dHJ1ZUNhbGxGcmFt
ZUZyb21WTUNvZGUoKTsKIAogICAgIHdoaWxlIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lICE9IENh
bGxGcmFtZTo6bm9DYWxsZXIoKSkgewotICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTDsKKyAgICAg
ICAgU3RyaW5nIHNvdXJjZVVSTDsKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkp
IHsKICAgICAgICAgICAgIHNvdXJjZVVSTCA9IGdldFNvdXJjZVVSTEZyb21DYWxsRnJhbWUoY2Fs
bEZyYW1lKTsKICAgICAgICAgICAgIFN0YWNrRnJhbWUgcyA9IHsgU3Ryb25nPEpTT2JqZWN0Pigq
Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLT5jYWxsZWUoKSksIGdldFN0YWNrRnJhbWVDb2RlVHlwZShj
YWxsRnJhbWUpLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+KCpnbG9iYWxEYXRhLCBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSksIGxpbmUsIHNvdXJjZVVSTH07CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IFN0YWNrRnJhbWUgcyA9IHsgU3Ryb25nPEpTT2JqZWN0PigqZ2xvYmFsRGF0YSwgY2FsbEZyYW1l
LT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVDb2RlLCBTdHJvbmc8RXhlY3V0YWJsZUJhc2U+
KCksIC0xLCBVU3RyaW5nKCl9OworICAgICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBTdHJvbmc8
SlNPYmplY3Q+KCpnbG9iYWxEYXRhLCBjYWxsRnJhbWUtPmNhbGxlZSgpKSwgU3RhY2tGcmFtZU5h
dGl2ZUNvZGUsIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4oKSwgLTEsIFN0cmluZygpfTsKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKHMpOwogICAgICAgICB9CiAgICAgICAgIHVuc2lnbmVkIHVu
dXNlZEJ5dGVjb2RlT2Zmc2V0ID0gMDsKQEAgLTc0NCw3ICs3NDMsNyBAQCB2b2lkIEludGVycHJl
dGVyOjphZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2Jq
ZWN0KiBlcnJvcgogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CiAgICAgfQogICAg
IAotICAgIGVycm9yLT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPnN0YWNrLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBVU3RyaW5nKGJ1aWxkZXIudG9TdHJp
bmcoKS5pbXBsKCkpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBlcnJvci0+cHV0RGly
ZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5zdGFjaywganNTdHJp
bmcoZ2xvYmFsRGF0YSwgYnVpbGRlci50b1N0cmluZygpKSwgUmVhZE9ubHkgfCBEb250RGVsZXRl
KTsKIH0KIAogTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dGhyb3dFeGNl
cHRpb24oQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC04NDcsNyArODQ2LDcgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIFMKICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUo
KnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIHNjb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC5nZXQoKSk7
CiAgICAgVmVjdG9yPEpTT05QRGF0YT4gSlNPTlBEYXRhOwogICAgIGJvb2wgcGFyc2VSZXN1bHQ7
Ci0gICAgY29uc3QgVVN0cmluZyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbS0+c291cmNlKCkudG9T
dHJpbmcoKTsKKyAgICBjb25zdCBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJj
ZSgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHByb2dyYW1Tb3VyY2UuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7
CkBAIC00OTU1LDcgKzQ5NTQsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICBv
cmlnaW5hbCBjb25zdHJ1Y3RvciwgdXNpbmcgY29uc3RhbnQgbWVzc2FnZSBhcyB0aGUKICAgICAg
ICAgICAgbWVzc2FnZSBzdHJpbmcuIFRoZSByZXN1bHQgaXMgdGhyb3duLgogICAgICAgICAqLwot
ICAgICAgICBVU3RyaW5nIG1lc3NhZ2UgPSBjYWxsRnJhbWUtPnIodlBDWzFdLnUub3BlcmFuZCku
anNWYWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZhbHVlKGNhbGxGcmFtZSk7CisgICAgICAg
IFN0cmluZyBtZXNzYWdlID0gY2FsbEZyYW1lLT5yKHZQQ1sxXS51Lm9wZXJhbmQpLmpzVmFsdWUo
KS50b1N0cmluZyhjYWxsRnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpOwogICAgICAgICBleGNlcHRp
b25WYWx1ZSA9IEpTVmFsdWUoY3JlYXRlUmVmZXJlbmNlRXJyb3IoY2FsbEZyYW1lLCBtZXNzYWdl
KSk7CiAgICAgICAgIGdvdG8gdm1fdGhyb3c7CiAgICAgfQpAQCAtNTEzOSwxMSArNTEzOCwxMSBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpyZXRyaWV2ZUNhbGxlckZyb21WTUNvZGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qCiAgICAgcmV0dXJuIGNhbGxlcjsKIH0KIAotdm9pZCBJ
bnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQm
IGxpbmVOdW1iZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1Zh
bHVlJiBmdW5jdGlvbikgY29uc3QKK3ZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxl
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgaW50JiBsaW5lTnVtYmVyLCBpbnRwdHJfdCYgc291cmNl
SUQsIFN0cmluZyYgc291cmNlVVJMLCBKU1ZhbHVlJiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBm
dW5jdGlvbiA9IEpTVmFsdWUoKTsKICAgICBsaW5lTnVtYmVyID0gLTE7Ci0gICAgc291cmNlVVJM
ID0gVVN0cmluZygpOworICAgIHNvdXJjZVVSTCA9IFN0cmluZygpOwogCiAgICAgQ2FsbEZyYW1l
KiBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBpZiAoY2FsbGVy
RnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDgzNGY3ZGU5NTVlMjQ3NDU0OGNiN2Jm
NTk4MDMyZTNiYTU1NzA0Y2EuLmFhMGQ0MDMwNTFmNTZjOGM1MDgyYWJkNmUwN2YxYWIyNDFhM2Zm
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCkBAIC03OSw4ICs3OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGFja0ZyYW1l
Q29kZVR5cGUgY29kZVR5cGU7CiAgICAgICAgIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4gZXhlY3V0
YWJsZTsKICAgICAgICAgaW50IGxpbmU7Ci0gICAgICAgIFVTdHJpbmcgc291cmNlVVJMOwotICAg
ICAgICBVU3RyaW5nIHRvU3RyaW5nKENhbGxGcmFtZSogY2FsbEZyYW1lKSBjb25zdAorICAgICAg
ICBTdHJpbmcgc291cmNlVVJMOworICAgICAgICBTdHJpbmcgdG9TdHJpbmcoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgdHJh
Y2VCdWlsZDsKICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBmcmllbmRseUZ1bmN0
aW9uTmFtZShjYWxsRnJhbWUpOwpAQCAtMjMzLDcgKzIzMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVudHNGcm9tVk1Db2RlKENhbGxGcmFtZSos
IEpTRnVuY3Rpb24qKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlckZyb21W
TUNvZGUoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiopIGNvbnN0OwotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHJldHJpZXZlTGFzdENhbGxlcihDYWxsRnJhbWUqLCBpbnQmIGxpbmVOdW1i
ZXIsIGludHB0cl90JiBzb3VyY2VJRCwgVVN0cmluZyYgc291cmNlVVJMLCBKU1ZhbHVlJiBmdW5j
dGlvbikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmV0cmlldmVMYXN0
Q2FsbGVyKENhbGxGcmFtZSosIGludCYgbGluZU51bWJlciwgaW50cHRyX3QmIHNvdXJjZUlELCBT
dHJpbmcmIHNvdXJjZVVSTCwgSlNWYWx1ZSYgZnVuY3Rpb24pIGNvbnN0OwogICAgICAgICAKICAg
ICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24qJiwgcHRy
ZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYgYXJnYyk7
CiAgICAgICAgIApAQCAtMjQxLDcgKzI0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpT
VmFsdWUmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIE5FVkVSX0lOTElORSB2
b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUsIGludCBjb2x1bW4pOwotICAgICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFj
ZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tGcmFtZUNvZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwg
U3RhY2tGcmFtZUNvZGVUeXBlLCBjb25zdCBTdHJpbmcmLCBpbnQpOwogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSosIFZlY3Rv
cjxTdGFja0ZyYW1lPiYgcmVzdWx0cyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZFN0YWNrVHJh
Y2VJZk5lY2Vzc2FyeShDYWxsRnJhbWUqLCBKU09iamVjdCogZXJyb3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGQ1MWE3NDAwMjA5ODgzZWQyYzY3OTg0MzU2
NmI4YjQ4MjAzMTNmMmMuLjdjMDM1NjJmOTY1NjYzYzY0YTE5MWE5YjMzYTYzMjE0Y2I2Yzk4ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zNDEwLDcgKzM0MTAs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF90aHJvd19yZWZlcmVuY2VfZXJyb3Ip
CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBVU3RyaW5nIG1lc3NhZ2Ug
PSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZhbHVl
KGNhbGxGcmFtZSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpLnRvU3RyaW5nKGNhbGxGcmFtZSktPnZhbHVlKGNhbGxGcmFtZSk7CiAgICAgc3RhY2tG
cmFtZS5nbG9iYWxEYXRhLT5leGNlcHRpb24gPSBjcmVhdGVSZWZlcmVuY2VFcnJvcihjYWxsRnJh
bWUsIG1lc3NhZ2UpOwogICAgIFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKaW5kZXggMTdhYjUxNTg4M2MyYWQ1ZGE5ZmJkMmZmZDg4ZWUwZmMyY2Y2OWMz
YS4uZjNkOWIyZTEwNTY5YTg0MDNiMDIwNTBmMTRhNzNkYzhjMjBmNmIwYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCi1zdGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFVTdHJpbmcmIGZpbGVOYW1lLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcik7CitzdGF0aWMg
Ym9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IFZlY3RvcjxjaGFyPiYgYnVmZmVyKTsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25QcmludChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVidWcoRXhlY1N0YXRlKik7CkBAIC0xMjksNyArMTI5LDcg
QEAgcHVibGljOgogICAgIGJvb2wgbV9kdW1wOwogICAgIGJvb2wgbV9leGl0Q29kZTsKICAgICBW
ZWN0b3I8U2NyaXB0PiBtX3NjcmlwdHM7Ci0gICAgVmVjdG9yPFVTdHJpbmc+IG1fYXJndW1lbnRz
OworICAgIFZlY3RvcjxTdHJpbmc+IG1fYXJndW1lbnRzOwogCiAgICAgdm9pZCBwYXJzZUFyZ3Vt
ZW50cyhpbnQsIGNoYXIqKik7CiB9OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBKU0dsb2JhbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEdsb2Jh
bE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQorICAgIHN0YXRpYyBHbG9i
YWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAg
R2xvYmFsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxHbG9iYWxP
YmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGFyZ3VtZW50
cyk7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNHbG9iYWxPYmplY3QqKSB7IHJldHVybiB0cnVl
OyB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9i
YWxEYXRhKTsKICAgICAgICAgCkBAIC0yNTIsNyArMjUyLDcgQEAgR2xvYmFsT2JqZWN0OjpHbG9i
YWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKIH0KIAotc3RhdGljIGlubGluZSBTb3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBjaGFyKiB1
dGY4LCBjb25zdCBVU3RyaW5nJiBmaWxlbmFtZSkKK3N0YXRpYyBpbmxpbmUgU291cmNlQ29kZSBq
c2NTb3VyY2UoY29uc3QgY2hhciogdXRmOCwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKICAg
ICAvLyBGaW5kIHRoZSB0aGUgZmlyc3Qgbm9uLWFzY2lpIGNoYXJhY3Rlciwgb3IgbnVsLgogICAg
IGNvbnN0IGNoYXIqIHBvcyA9IHV0Zjg7CkBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIGlubGlu
ZSBTb3VyY2VDb2RlIGpzY1NvdXJjZShjb25zdCBjaGFyKiB1dGY4LCBjb25zdCBVU3RyaW5nJiBm
aWxlbmFtZSkKIAogICAgIC8vIEZhc3QgY2FzZSAtIHN0cmluZyBpcyBhbGwgYXNjaWkuCiAgICAg
aWYgKCEqcG9zKQotICAgICAgICByZXR1cm4gbWFrZVNvdXJjZShVU3RyaW5nKHV0ZjgsIGFzY2lp
TGVuZ3RoKSwgZmlsZW5hbWUpOworICAgICAgICByZXR1cm4gbWFrZVNvdXJjZShTdHJpbmcodXRm
OCwgYXNjaWlMZW5ndGgpLCBmaWxlbmFtZSk7CiAKICAgICAvLyBTbG93IGNhc2UgLSBjb250YWlu
cyBub24tYXNjaWkgY2hhcmFjdGVycywgdXNlIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrLgog
ICAgIEFTU0VSVCgqcG9zIDwgMCk7CkBAIC0zNDcsMTIgKzM0NywxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyc2lvbihFeGVjU3RhdGUqKQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBV
U3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICgh
ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSk7CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgR2xvYmFsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSksIFZlY3Rv
cjxVU3RyaW5nPigpKTsKKyAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9i
amVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwog
CiAgICAgSlNWYWx1ZSBleGNlcHRpb247CiAgICAgU3RvcFdhdGNoIHN0b3BXYXRjaDsKQEAgLTM3
MCw3ICszNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuKEV4
ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxv
YWQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGZpbGVOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFZl
Y3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxl
KGZpbGVOYW1lLCBzY3JpcHQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKTsK
QEAgLTM4Niw3ICszODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
TG9hZChFeGVjU3RhdGUqIGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgVVN0cmluZyBmaWxlTmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBT
dHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRo
Q29udGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQ291bGQgbm90IG9w
ZW4gZmlsZS4iKSkpOwpAQCAtNTIzLDcgKzUyMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQogewogICAg
IGNvbnN0IGNoYXIqIHNjcmlwdDsKLSAgICBVU3RyaW5nIGZpbGVOYW1lOworICAgIFN0cmluZyBm
aWxlTmFtZTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0QnVmZmVyOwogCiAgICAgaWYgKGR1bXAp
CkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKIAogc3RhdGljIHZv
aWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgVVN0
cmluZyBpbnRlcnByZXRlck5hbWUoIkludGVycHJldGVyIik7CisgICAgU3RyaW5nIGludGVycHJl
dGVyTmFtZSgiSW50ZXJwcmV0ZXIiKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CiAjaWYgSEFWRShS
RUFETElORSkgJiYgIVJVTk5JTkdfRlJPTV9YQ09ERQpAQCAtNzUwLDcgKzc1MCw3IEBAIGludCBq
c2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1z
dGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFVTdHJpbmcmIGZp
bGVOYW1lLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKK3N0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgVmVjdG9yPGNoYXI+JiBidWZm
ZXIpCiB7CiAgICAgRklMRSogZiA9IGZvcGVuKGZpbGVOYW1lLnV0ZjgoKS5kYXRhKCksICJyIik7
CiAgICAgaWYgKCFmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4
IDJhOGE4ZGM5ZTM2M2FkM2EyMjcxNTk2ZTc1ZTE5ZjVkY2MyYjMxMzEuLjA2MzE2OGJlMTNjMTZj
NGJmZGUwM2ZjNDliYTkwMDAwM2Y1ODBkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCkBAIC0zNjgsNyArMzY4LDcgQEAgTGV4ZXI8VD46On5MZXhlcigpCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotVVN0cmluZyBMZXhlcjxUPjo6aW52YWxpZENoYXJhY3Rlck1l
c3NhZ2UoKSBjb25zdAorU3RyaW5nIExleGVyPFQ+OjppbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgp
IGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2N1cnJlbnQpIHsKICAgICBjYXNlIDA6CkBAIC00MTgs
NyArNDE4LDcgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV9hdExp
bmVTdGFydCA9IHRydWU7CiAgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwotICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gVVN0cmluZygpOworICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nKCk7CiAg
ICAgCiAgICAgbV9idWZmZXI4LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbFJlYWRCdWZm
ZXJDYXBhY2l0eSk7CiAgICAgbV9idWZmZXIxNi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KChtX2Nv
ZGVFbmQgLSBtX2NvZGUpIC8gMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5k
ZXggMWFjODMyYTJjN2I1ZjM4MmIzM2I3OGE1YzgzMDRiMTc1NTQwZjQ3Mi4uZDc1ZjIwMjBkN2Mw
NWVkZGQzNjJiZmFmYzI2Y2E5ODdhYjYxNGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuaApAQCAtMTAwLDEyICsxMDAsMTIgQEAgcHVibGljOgogCiAgICAgLy8gRnVuY3Rpb25z
IGZvciB1c2UgYWZ0ZXIgcGFyc2luZy4KICAgICBib29sIHNhd0Vycm9yKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvcjsgfQotICAgIFVTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9sZXhFcnJvck1lc3NhZ2U7IH0KKyAgICBTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7IH0KICAgICB2b2lkIGNsZWFyKCk7CiAgICAg
dm9pZCBzZXRPZmZzZXQoaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIG1fZXJyb3IgPSAwOwot
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFVTdHJpbmcoKTsKKyAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSBTdHJpbmcoKTsKICAgICAgICAgbV9jb2RlID0gbV9jb2RlU3RhcnQgKyBvZmZz
ZXQ7CiAgICAgICAgIG1fYnVmZmVyOC5yZXNpemUoMCk7CiAgICAgICAgIG1fYnVmZmVyMTYucmVz
aXplKDApOwpAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgaW50IHBhcnNlRm91ckRp
Z2l0VW5pY29kZUhleCgpOwogICAgIHZvaWQgc2hpZnRMaW5lVGVybWluYXRvcigpOwogCi0gICAg
VVN0cmluZyBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0OworICAgIFN0cmluZyBpbnZh
bGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0OwogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVCog
Y3VycmVudENoYXJhY3RlcigpIGNvbnN0OwogICAgIEFMV0FZU19JTkxJTkUgaW50IGN1cnJlbnRP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2NvZGUgLSBtX2NvZGVTdGFydDsgfQogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRPZmZzZXRGcm9tQ2hhck9mZnNldChjb25zdCBUKiBjaGFyT2Zmc2V0
KSB7IHNldE9mZnNldChjaGFyT2Zmc2V0IC0gbV9jb2RlU3RhcnQpOyB9CkBAIC0xODEsNyArMTgx
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNSZXBhcnNpbmc7CiAgICAgYm9vbCBtX2F0TGlu
ZVN0YXJ0OwogICAgIGJvb2wgbV9lcnJvcjsKLSAgICBVU3RyaW5nIG1fbGV4RXJyb3JNZXNzYWdl
OworICAgIFN0cmluZyBtX2xleEVycm9yTWVzc2FnZTsKIAogICAgIFQgbV9jdXJyZW50OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZWQxYTg1YWFmYmM4OWNlMThmNDUx
MjAwOTg0ZGNiYTEyZWQ3OWFmOS4uZGM2OTRjYzhiYzFlNmIyNzhiZWM3YTFlZWJlYTJhMDRmMjYy
YWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMjc5LDcgKzI3OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1aW50MTZfdCBlbmRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2VuZE9mZnNldDsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihCeXRlY29kZUdlbmVyYXRvciYsIGNvbnN0IFVT
dHJpbmcmIG1lc3NhZ2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGhyb3dSZWZlcmVuY2VF
cnJvcihCeXRlY29kZUdlbmVyYXRvciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB1aW50MzJfdCBtX2Rpdm90OwpAQCAtMTM4OSw3ICsxMzg5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQotICAgICAgICBjb25zdCBVU3RyaW5n
JiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwoKTsg
fQorICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9CiAgICAgICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJRCgpOyB9CiAKICAgICAgICAgdm9pZCBzZXRG
ZWF0dXJlcyhDb2RlRmVhdHVyZXMgZmVhdHVyZXMpIHsgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNGZkNjcxZmI3MzVm
MWRkMjE1MTExMjkzMzAzMjE4NGYzOGJjNzQwNS4uZmRkYTczYzYxYWM1YjZiZGMxZWM3Y2RlNmVi
NGFhNzQ1ZDMzMzcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtODEsOSArODEsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1VU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKCkKK1N0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiB7Ci0gICAg
VVN0cmluZyBwYXJzZUVycm9yID0gVVN0cmluZygpOworICAgIFN0cmluZyBwYXJzZUVycm9yID0g
U3RyaW5nKCk7CiAgICAgCiAgICAgdW5zaWduZWQgb2xkRnVuY3Rpb25DYWNoZVNpemUgPSBtX2Z1
bmN0aW9uQ2FjaGUgPyBtX2Z1bmN0aW9uQ2FjaGUtPmJ5dGVTaXplKCkgOiAwOwogICAgIEFTVEJ1
aWxkZXIgY29udGV4dChjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIGNv
bnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAppbmRleCA3OWE5NWI2OTYzYjQxMjkwYmNhM2I0ZmE5Yzg1ODBmY2I2MjM1NTc2
Li4yODMxN2Q1NGVlMmQ5NTliY2FkMzFkOTNiNzE1MDFkZTU4NWI1YmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTU2LDcgKzU2LDYgQEAgY2xhc3MgSWRlbnRpZmll
cjsKIGNsYXNzIEpTR2xvYmFsRGF0YTsKIGNsYXNzIFByb2dyYW1Ob2RlOwogY2xhc3MgU291cmNl
Q29kZTsKLWNsYXNzIFVTdHJpbmc7CiAKICNkZWZpbmUgZmFpbCgpIGRvIHsgaWYgKCFtX2Vycm9y
KSB1cGRhdGVFcnJvck1lc3NhZ2UoKTsgcmV0dXJuIDA7IH0gd2hpbGUgKDApCiAjZGVmaW5lIGZh
aWxXaXRoVG9rZW4odG9rKSBkbyB7IGlmICghbV9lcnJvcikgdXBkYXRlRXJyb3JNZXNzYWdlKHRv
ayk7IHJldHVybiAwOyB9IHdoaWxlICgwKQpAQCAtNDg5LDcgKzQ4OCw3IEBAIHByaXZhdGU6CiAg
ICAgfQogCiAgICAgUGFyc2VyKCk7Ci0gICAgVVN0cmluZyBwYXJzZUlubmVyKCk7CisgICAgU3Ry
aW5nIHBhcnNlSW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVt
ZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNr
czo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsCkBAIC01MjksOSArNTI4LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lO
TElORSBVU3RyaW5nIGdldFRva2VuKCkgeworICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGdldFRv
a2VuKCkgewogICAgICAgICBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIgPSBtX3NvdXJj
ZS0+cHJvdmlkZXIoKTsKLSAgICAgICAgcmV0dXJuIFVTdHJpbmcoc291cmNlUHJvdmlkZXItPmdl
dFJhbmdlKHRva2VuU3RhcnQoKSwgdG9rZW5FbmQoKSkuaW1wbCgpKTsKKyAgICAgICAgcmV0dXJu
IHNvdXJjZVByb3ZpZGVyLT5nZXRSYW5nZSh0b2tlblN0YXJ0KCksIHRva2VuRW5kKCkpOwogICAg
IH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2goSlNUb2tlblR5cGUgZXhwZWN0
ZWQpCkBAIC03OTMsNyArNzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFuYW1lKSAKICAg
ICAgICAgICAgIHVwZGF0ZUVycm9yTWVzc2FnZVNwZWNpYWxDYXNlKG1fdG9rZW4ubV90eXBlKTsK
ICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gVVN0cmluZyhTdHJp
bmc6OmZvcm1hdCgiVW5leHBlY3RlZCB0b2tlbiAnJXMnIiwgbmFtZSkuaW1wbCgpKTsKKyAgICAg
ICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgdG9rZW4g
JyVzJyIsIG5hbWUpOwogICAgIH0KICAgICAKICAgICBORVZFUl9JTkxJTkUgdm9pZCB1cGRhdGVF
cnJvck1lc3NhZ2UoSlNUb2tlblR5cGUgZXhwZWN0ZWRUb2tlbikgCkBAIC04MDEsNyArODAwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgbV9lcnJvciA9IHRydWU7CiAgICAgICAgIGNvbnN0IGNoYXIq
IG5hbWUgPSBnZXRUb2tlbk5hbWUoZXhwZWN0ZWRUb2tlbik7CiAgICAgICAgIGlmIChuYW1lKQot
ICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBVU3RyaW5nKFN0cmluZzo6Zm9ybWF0KCJFeHBl
Y3RlZCB0b2tlbiAnJXMnIiwgbmFtZSkuaW1wbCgpKTsKKyAgICAgICAgICAgIG1fZXJyb3JNZXNz
YWdlID0gU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIHRva2VuICclcyciLCBuYW1lKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWdldFRva2VuTmFtZShtX3Rva2VuLm1fdHlwZSkp
CiAgICAgICAgICAgICAgICAgdXBkYXRlRXJyb3JNZXNzYWdlU3BlY2lhbENhc2UobV90b2tlbi5t
X3R5cGUpOwpAQCAtODEwLDcgKzgwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0gCiAgICAgfQog
ICAgIAotICAgIE5FVkVSX0lOTElORSB2b2lkIHVwZGF0ZUVycm9yV2l0aE5hbWVBbmRNZXNzYWdl
KGNvbnN0IGNoYXIqIGJlZm9yZU1zZywgVVN0cmluZyBuYW1lLCBjb25zdCBjaGFyKiBhZnRlck1z
ZykgCisgICAgTkVWRVJfSU5MSU5FIHZvaWQgdXBkYXRlRXJyb3JXaXRoTmFtZUFuZE1lc3NhZ2Uo
Y29uc3QgY2hhciogYmVmb3JlTXNnLCBTdHJpbmcgbmFtZSwgY29uc3QgY2hhciogYWZ0ZXJNc2cp
CiAgICAgewogICAgICAgICBtX2Vycm9yID0gdHJ1ZTsKICAgICAgICAgU3RyaW5nIHByZWZpeChi
ZWZvcmVNc2cpOwpAQCAtODI1LDcgKzgyNCw3IEBAIHByaXZhdGU6CiAgICAgTkVWRVJfSU5MSU5F
IHZvaWQgdXBkYXRlRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIG1zZykgCiAgICAgeyAgIAogICAg
ICAgICBtX2Vycm9yID0gdHJ1ZTsKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBVU3RyaW5nKG1z
Zyk7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nKG1zZyk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgc3RhcnRMb29wKCkgeyBjdXJyZW50U2NvcGUoKS0+c3RhcnRMb29wKCk7IH0KQEAg
LTkzOCw3ICs5MzcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFN0YWNrQm91bmRzIG1fc3RhY2s7
CiAgICAgYm9vbCBtX2Vycm9yOwotICAgIFVTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CisgICAgU3Ry
aW5nIG1fZXJyb3JNZXNzYWdlOwogICAgIEpTVG9rZW4gbV90b2tlbjsKICAgICBib29sIG1fYWxs
b3dzSW47CiAgICAgaW50IG1fbGFzdExpbmU7CkBAIC05ODIsNyArOTgxLDcgQEAgUGFzc1JlZlB0
cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmoKICAgICBBU1NFUlQobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgQVNT
RVJUKGV4Y2VwdGlvbiAmJiAhKmV4Y2VwdGlvbik7CiAgICAgaW50IGVyckxpbmU7Ci0gICAgVVN0
cmluZyBlcnJNc2c7CisgICAgU3RyaW5nIGVyck1zZzsKIAogICAgIGlmIChQYXJzZWROb2RlOjpz
Y29wZUlzRnVuY3Rpb24pCiAgICAgICAgIG1fbGV4ZXItPnNldElzUmVwYXJzaW5nKCk7CkBAIC05
OTAsMTMgKzk4OSwxMyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgIG1fc291cmNlRWxl
bWVudHMgPSAwOwogCiAgICAgZXJyTGluZSA9IC0xOwotICAgIGVyck1zZyA9IFVTdHJpbmcoKTsK
KyAgICBlcnJNc2cgPSBTdHJpbmcoKTsKIAotICAgIFVTdHJpbmcgcGFyc2VFcnJvciA9IHBhcnNl
SW5uZXIoKTsKKyAgICBTdHJpbmcgcGFyc2VFcnJvciA9IHBhcnNlSW5uZXIoKTsKIAogICAgIGlu
dCBsaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3Ig
PSBtX2xleGVyLT5zYXdFcnJvcigpOwotICAgIFVTdHJpbmcgbGV4RXJyb3JNZXNzYWdlID0gbGV4
RXJyb3IgPyBtX2xleGVyLT5nZXRFcnJvck1lc3NhZ2UoKSA6IFVTdHJpbmcoKTsKKyAgICBTdHJp
bmcgbGV4RXJyb3JNZXNzYWdlID0gbGV4RXJyb3IgPyBtX2xleGVyLT5nZXRFcnJvck1lc3NhZ2Uo
KSA6IFN0cmluZygpOwogICAgIEFTU0VSVChsZXhFcnJvck1lc3NhZ2UuaXNOdWxsKCkgIT0gbGV4
RXJyb3IpOwogICAgIG1fbGV4ZXItPmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCAyZmZmZDI3ZDEzYWIyYmU2MmNkYjNmYTJlMGU1ZDk3
NmE5M2RjNTMxLi4yZjViNDQ3YjE2OWIwMzQ1YWU4ZWQ0ZWMwYjMwMjUyMDAwYzkxYjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xMTMsNyArMTEz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgaW5saW5lIGNvbnN0IElkZW50aWZpZXIm
IElkZW50aWZpZXJBcmVuYTo6bWFrZU51bWVyaWNJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgZG91YmxlIG51bWJlcikKICAgICB7Ci0gICAgICAgIG1faWRlbnRpZmllcnMuYXBw
ZW5kKElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgVVN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KG51bWJlcikpKTsKKyAgICAgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcihn
bG9iYWxEYXRhLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChudW1iZXIpKSk7CiAg
ICAgICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKaW5kZXggMTFhMDAzMzdkYTg1M2NiMDliZGQ1
ZDYxZTVlZDIzOTIzNDVmNDQ4Zi4uYmRhOTFiM2M4YTZmM2I2MGYxZjIzZmM2OWZhYmYyYWUxMGMw
MzA0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKQEAgLTYw
LDEwICs2MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgVVN0cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAgICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9wcm92aWRlcikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gVVN0cmluZygpOworICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICAgICAgICAgIHJldHVybiBtX3Byb3ZpZGVyLT5nZXRSYW5nZShtX3N0YXJ0Q2hhciwg
bV9lbmRDaGFyKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTkwLDkgKzkwLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGludCBtX2ZpcnN0TGluZTsKICAgICB9OwogCi0gICAgaW5saW5l
IFNvdXJjZUNvZGUgbWFrZVNvdXJjZShjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVTdHJp
bmcmIHVybCA9IFVTdHJpbmcoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0g
VGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKKyAgICBpbmxpbmUgU291cmNlQ29kZSBt
YWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9IFN0cmlu
ZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoVVN0cmlu
Z1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pLCBzdGFy
dFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKTsKKyAgICAgICAgcmV0dXJuIFNvdXJjZUNv
ZGUoU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlv
biksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpOwogICAgIH0KIAogICAgIGlu
bGluZSBTb3VyY2VDb2RlIFNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJy
YWNlLCB1bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IDJlN2Y3MTc4NTQ2OTVmN2Y0
NGY5YjZjZTY4M2ViN2Q3NTJmNzI0YWYuLjdmMmU4ZDk5NWY1YjU3ZWZmM2M1MDkwMjg5MmZiNTUz
MzQxNDYzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3Zp
ZGVyLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNkZWZpbmUgU291cmNlUHJvdmlkZXJfaAogCiAjaW5j
bHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC00Miw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IG51bGxJRCA9IDE7
CiAgICAgICAgIAotICAgICAgICBTb3VyY2VQcm92aWRlcihjb25zdCBVU3RyaW5nJiB1cmwsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgU291cmNlUHJvdmlkZXJDYWNoZSogY2Fj
aGUgPSAwKQorICAgICAgICBTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBTb3VyY2VQcm92aWRlckNhY2hlKiBjYWNoZSA9
IDApCiAgICAgICAgICAgICA6IG1fdXJsKHVybCkKICAgICAgICAgICAgICwgbV9zdGFydFBvc2l0
aW9uKHN0YXJ0UG9zaXRpb24pCiAgICAgICAgICAgICAsIG1fdmFsaWRhdGVkKGZhbHNlKQpAQCAt
NTcsMTEgKzU2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGRlbGV0ZSBt
X2NhY2hlOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBVU3RyaW5nIGdldFJhbmdlKGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRS
YW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBjb25z
dCBTdHJpbmdJbXBsKiBkYXRhKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIGludCBsZW5n
dGgoKSBjb25zdCA9IDA7CiAgICAgICAgIAotICAgICAgICBjb25zdCBVU3RyaW5nJiB1cmwoKSB7
IHJldHVybiBtX3VybDsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCgpIHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgICAgIFRleHRQb3NpdGlvbiBzdGFydFBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydFBvc2l0aW9uOyB9CiAgICAgICAgIGludHB0cl90IGFzSUQoKQogICAgICAgICB7
CkBAIC04MCwyMSArNzksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhY2hlU2l6ZUNoYW5nZWQoaW50IGRlbHRhKSB7IFVOVVNFRF9QQVJB
TShkZWx0YSk7IH0KIAotICAgICAgICBVU3RyaW5nIG1fdXJsOworICAgICAgICBTdHJpbmcgbV91
cmw7CiAgICAgICAgIFRleHRQb3NpdGlvbiBtX3N0YXJ0UG9zaXRpb247CiAgICAgICAgIGJvb2wg
bV92YWxpZGF0ZWQ7CiAgICAgICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGUqIG1fY2FjaGU7CiAgICAg
ICAgIGJvb2wgbV9jYWNoZU93bmVkOwogICAgIH07CiAKLSAgICBjbGFzcyBVU3RyaW5nU291cmNl
UHJvdmlkZXIgOiBwdWJsaWMgU291cmNlUHJvdmlkZXIgeworICAgIGNsYXNzIFN0cmluZ1NvdXJj
ZVByb3ZpZGVyIDogcHVibGljIFNvdXJjZVByb3ZpZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFVT
dHJpbmcmIHNvdXJjZSwgY29uc3QgVVN0cmluZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0
YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBv
c2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNl
LCB1cmwsIHN0YXJ0UG9zaXRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZpcnR1YWwgVVN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0IE9WRVJSSURFCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldFJhbmdlKGludCBz
dGFydCwgaW50IGVuZCkgY29uc3QgT1ZFUlJJREUKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIG1fc291cmNlLnN1YnN0cmluZ1NoYXJpbmdJbXBsKHN0YXJ0LCBlbmQgLSBzdGFydCk7CiAg
ICAgICAgIH0KQEAgLTEwMiwxMyArMTAxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBp
bnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UubGVuZ3RoKCk7IH0KIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFVTdHJpbmdTb3VyY2VQcm92aWRlcihjb25zdCBVU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFVTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9u
KQorICAgICAgICBTdHJpbmdTb3VyY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbikKICAgICAg
ICAgICAgIDogU291cmNlUHJvdmlkZXIodXJsLCBzdGFydFBvc2l0aW9uKQogICAgICAgICAgICAg
LCBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFVTdHJp
bmcgbV9zb3VyY2U7CisgICAgICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvQ2FsbElkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9DYWxs
SWRlbnRpZmllci5oCmluZGV4IDJkYThhMmZmMTA0Zjk4OTNmNWY4N2Q5MDdmMzIxYzBkMmNhZGJm
ZWQuLmJmOWY5MDRiMGI5Y2VjNDFkYTBkM2Y2MDFlNzQ3ODFjMDFjZmM2YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9DYWxsSWRlbnRpZmllci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9DYWxsSWRlbnRpZmllci5oCkBAIC0yNywxNyAr
MjcsMTcgQEAKICNpZm5kZWYgQ2FsbElkZW50aWZpZXJfaAogI2RlZmluZSBDYWxsSWRlbnRpZmll
cl9oCiAKLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBDYWxs
SWRlbnRpZmllciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKLSAgICAgICAgVVN0cmluZyBtX25hbWU7Ci0gICAgICAgIFVTdHJpbmcgbV91cmw7CisgICAg
ICAgIFN0cmluZyBtX25hbWU7CisgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgdW5zaWdu
ZWQgbV9saW5lTnVtYmVyOwogCiAgICAgICAgIENhbGxJZGVudGlmaWVyKCkKQEAgLTQ1LDcgKzQ1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIENh
bGxJZGVudGlmaWVyKGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNvbnN0IFVTdHJpbmcmIHVybCwgaW50
IGxpbmVOdW1iZXIpCisgICAgICAgIENhbGxJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQogICAgICAgICAgICAgOiBtX25hbWUo
bmFtZSkKICAgICAgICAgICAgICwgbV91cmwoIXVybC5pc051bGwoKSA/IHVybCA6ICIiKQogICAg
ICAgICAgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKQEAgLTg3LDcgKzg3LDcgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkNhbGxJ
ZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEpTQzo6Q2FsbElkZW50aWZpZXI+IHsKICAg
ICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEpTQzo6Q2FsbElkZW50aWZp
ZXImIHNsb3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJnNsb3QpIEpT
Qzo6Q2FsbElkZW50aWZpZXIoSlNDOjpVU3RyaW5nKCksIEpTQzo6VVN0cmluZygpLCBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCAmc2xvdCkgSlNDOjpDYWxsSWRlbnRpZmllcihTdHJpbmcoKSwgU3RyaW5nKCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgSlNDOjpDYWxsSWRlbnRpZmllciYgdmFsdWUpCiAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAppbmRl
eCA5MmUzMmM0YmE2NjRhNDFmNDFhODhlOTI5Y2EzZjBjZThiZjcwNzZmLi41MWY4NzE4OTgzOGM0
OWI3NDBlMjFiMDZkZGYxYjg3NGY2NDVmMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGUuY3BwCkBAIC0zMiwxOCArMzIsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLVBhc3NSZWZQdHI8UHJvZmlsZT4gUHJvZmlsZTo6Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHRp
dGxlLCB1bnNpZ25lZCB1aWQpCitQYXNzUmVmUHRyPFByb2ZpbGU+IFByb2ZpbGU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBQcm9maWxlKHRpdGxlLCB1aWQpKTsKIH0KIAotUHJvZmlsZTo6UHJvZmlsZShjb25zdCBV
U3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQorUHJvZmlsZTo6UHJvZmlsZShjb25zdCBTdHJp
bmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCiAgICAgOiBtX3RpdGxlKHRpdGxlKQogICAgICwgbV91
aWQodWlkKQogewogICAgIC8vIEZJWE1FOiBXaGVuIG11bHRpLXRocmVhZGluZyBpcyBzdXBwb3J0
ZWQgdGhpcyB3aWxsIGJlIGEgdmVjdG9yIGFuZCBjYWxscwogICAgIC8vIGludG8gdGhlIHByb2Zp
bGVyIHdpbGwgbmVlZCB0byBrbm93IHdoaWNoIHRocmVhZCBpdCBpcyBleGVjdXRpbmcgb24uCi0g
ICAgbV9oZWFkID0gUHJvZmlsZU5vZGU6OmNyZWF0ZSgwLCBDYWxsSWRlbnRpZmllcigiVGhyZWFk
XzEiLCBVU3RyaW5nKCksIDApLCAwLCAwKTsKKyAgICBtX2hlYWQgPSBQcm9maWxlTm9kZTo6Y3Jl
YXRlKDAsIENhbGxJZGVudGlmaWVyKCJUaHJlYWRfMSIsIFN0cmluZygpLCAwKSwgMCwgMCk7CiB9
CiAKIFByb2ZpbGU6On5Qcm9maWxlKCkKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFByb2ZpbGU6
OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoKSBjb25zdAogCiAgICAgc3RkOjpzb3J0KHNvcnRl
ZEZ1bmN0aW9ucy5iZWdpbigpLCBzb3J0ZWRGdW5jdGlvbnMuZW5kKCksIGZ1bmN0aW9uTmFtZUNv
dW50UGFpckNvbXBhcmF0b3IpOwogICAgIGZvciAoTmFtZUNvdW50UGFpclZlY3Rvcjo6aXRlcmF0
b3IgaXQgPSBzb3J0ZWRGdW5jdGlvbnMuYmVnaW4oKTsgaXQgIT0gc29ydGVkRnVuY3Rpb25zLmVu
ZCgpOyArK2l0KQotICAgICAgICBkYXRhTG9nKCIgICAgICAgICUtMTJkJXNcbiIsICgqaXQpLnNl
Y29uZCwgVVN0cmluZygoKml0KS5maXJzdCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRhdGFM
b2coIiAgICAgICAgJS0xMmQlc1xuIiwgKCppdCkuc2Vjb25kLCBTdHJpbmcoKCppdCkuZmlyc3Qp
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZGF0YUxvZygiXG5Tb3J0IGJ5IHRvcCBvZiBzdGFjaywg
c2FtZSBjb2xsYXBzZWQgKHdoZW4gPj0gNSk6XG4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZS5oCmluZGV4IDk0NTVlMzU5NTAzMmYyYzNkOWM1MmEwODA5NWQ1NGFj
OTk4NmVhMGUuLmMxYzY5MTkzY2MyYmMxMTgzNDk5MDk1NzJjZTMyYjEzNTRmYzA1OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaApAQCAtMjcsMTggKzI3LDE4IEBA
CiAjZGVmaW5lIFByb2ZpbGVfaAogCiAjaW5jbHVkZSAiUHJvZmlsZU5vZGUuaCIKLSNpbmNsdWRl
IDxydW50aW1lL1VTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9maWxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJv
ZmlsZT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZT4g
Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQcm9maWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgdW5zaWdu
ZWQgdWlkKTsKICAgICAgICAgdmlydHVhbCB+UHJvZmlsZSgpOwogCi0gICAgICAgIGNvbnN0IFVT
dHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgICAgICBjb25zdCBT
dHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogICAgICAgICBQcm9maWxl
Tm9kZSogaGVhZCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZC5nZXQoKTsgfQogICAgICAgICB2b2lk
IHNldEhlYWQoUGFzc1JlZlB0cjxQcm9maWxlTm9kZT4gaGVhZCkgeyBtX2hlYWQgPSBoZWFkOyB9
CiAgICAgICAgIGRvdWJsZSB0b3RhbFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2hlYWQtPnRvdGFs
VGltZSgpOyB9CkBAIC01NiwxMyArNTYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAog
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgUHJvZmlsZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5z
aWduZWQgdWlkKTsKKyAgICAgICAgUHJvZmlsZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCB1aWQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCByZW1vdmVQcm9maWxlU3RhcnQo
KTsKICAgICAgICAgdm9pZCByZW1vdmVQcm9maWxlRW5kKCk7CiAgCi0gICAgICAgIFVTdHJpbmcg
bV90aXRsZTsKKyAgICAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgICAgIFJlZlB0cjxQcm9maWxl
Tm9kZT4gbV9oZWFkOwogICAgICAgICB1bnNpZ25lZCBpbnQgbV91aWQ7CiAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcApp
bmRleCA1ZGIzOGJjYThkNTZhNWVmMDFkMjhhNWY5NDJiMGZkOTMwMjdmYmUyLi4wOTg3N2QzYzhj
N2Y0ODdhMjA3ZjkxYTc5ZmIzYjFiOGMxODk1N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3BwCkBAIC00MCwxMiArNDAsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBOb25KU0V4ZWN1dGlvbiA9
ICIoaWRsZSkiOwogCi1QYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IFByb2ZpbGVHZW5lcmF0
b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25l
ZCB1aWQpCitQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IFByb2ZpbGVHZW5lcmF0b3I6OmNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2ZpbGVHZW5lcmF0b3IoZXhlYywgdGl0bGUs
IHVpZCkpOwogfQogCi1Qcm9maWxlR2VuZXJhdG9yOjpQcm9maWxlR2VuZXJhdG9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKK1Byb2ZpbGVHZW5l
cmF0b3I6OlByb2ZpbGVHZW5lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCB1bnNpZ25lZCB1aWQpCiAgICAgOiBtX29yaWdpbihleGVjID8gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpIDogMCkKICAgICAsIG1fcHJvZmlsZUdyb3VwKGV4ZWMgPyBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpIDogMCkKIHsKQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBQcm9maWxlR2VuZXJhdG9yOjphZGRQYXJlbnRGb3JDb25zb2xlU3RhcnQoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIGludCBsaW5lTnVtYmVyOwogICAgIGludHB0cl90IHNvdXJjZUlE
OwotICAgIFVTdHJpbmcgc291cmNlVVJMOworICAgIFN0cmluZyBzb3VyY2VVUkw7CiAgICAgSlNW
YWx1ZSBmdW5jdGlvbjsKIAogICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENh
bGxlcihleGVjLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCwgc291cmNlVVJMLCBmdW5jdGlvbik7CkBA
IC02Nyw3ICs2Nyw3IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6YWRkUGFyZW50Rm9yQ29uc29s
ZVN0YXJ0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBtX2hlYWQtPmluc2VydE5vZGUobV9jdXJyZW50
Tm9kZS5nZXQoKSk7CiB9CiAKLWNvbnN0IFVTdHJpbmcmIFByb2ZpbGVHZW5lcmF0b3I6OnRpdGxl
KCkgY29uc3QKK2NvbnN0IFN0cmluZyYgUHJvZmlsZUdlbmVyYXRvcjo6dGl0bGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3Byb2ZpbGUtPnRpdGxlKCk7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBQcm9maWxlR2VuZXJhdG9yOjpzdG9wUHJvZmlsaW5nKCkKICAgICBtX2N1cnJlbnROb2Rl
ID0gbV9jdXJyZW50Tm9kZS0+cGFyZW50KCk7CiAKICAgIGlmIChkb3VibGUgaGVhZFNlbGZUaW1l
ID0gbV9oZWFkLT5zZWxmVGltZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gaWRs
ZU5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKDAsIENhbGxJZGVudGlmaWVyKE5vbkpTRXhlY3V0
aW9uLCBVU3RyaW5nKCksIDApLCBtX2hlYWQuZ2V0KCksIG1faGVhZC5nZXQoKSk7CisgICAgICAg
IFJlZlB0cjxQcm9maWxlTm9kZT4gaWRsZU5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKDAsIENh
bGxJZGVudGlmaWVyKE5vbkpTRXhlY3V0aW9uLCBTdHJpbmcoKSwgMCksIG1faGVhZC5nZXQoKSwg
bV9oZWFkLmdldCgpKTsKIAogICAgICAgICBpZGxlTm9kZS0+c2V0VG90YWxUaW1lKGhlYWRTZWxm
VGltZSk7CiAgICAgICAgIGlkbGVOb2RlLT5zZXRTZWxmVGltZShoZWFkU2VsZlRpbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmgKaW5k
ZXggOGM4YjgxNzMxNTM1NjE5ZDE0MjMzZGZmMGZkYjdkMWIyMjg4MGFkZi4uNDBjYzhkZTAxZDU0
YmZlOTczOTcxN2Q4NTkxODgzNzVlOWM3ZGM1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCkBAIC0zNywxNSArMzcsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgUHJvZmls
ZTsKICAgICBjbGFzcyBQcm9maWxlTm9kZTsKLSAgICBjbGFzcyBVU3RyaW5nOwogICAgIHN0cnVj
dCBDYWxsSWRlbnRpZmllcjsgICAgCiAKICAgICBjbGFzcyBQcm9maWxlR2VuZXJhdG9yIDogcHVi
bGljIFJlZkNvdW50ZWQ8UHJvZmlsZUdlbmVyYXRvcj4gIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+IGNyZWF0ZShFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3Ry
aW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKIAogICAgICAgICAvLyBNZW1iZXJzCi0gICAgICAg
IGNvbnN0IFVTdHJpbmcmIHRpdGxlKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFdURjo6U3RyaW5n
JiB0aXRsZSgpIGNvbnN0OwogICAgICAgICBQYXNzUmVmUHRyPFByb2ZpbGU+IHByb2ZpbGUoKSBj
b25zdCB7IHJldHVybiBtX3Byb2ZpbGU7IH0KICAgICAgICAgSlNHbG9iYWxPYmplY3QqIG9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgICAgIHVuc2lnbmVkIHByb2ZpbGVH
cm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZmlsZUdyb3VwOyB9CkBAIC02Miw3ICs2MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIHZvaWQgKFByb2ZpbGVHZW5lcmF0b3I6
OipQcm9maWxlRnVuY3Rpb24pKEV4ZWNTdGF0ZSogY2FsbGVyT3JIYW5kbGVyQ2FsbEZyYW1lLCBj
b25zdCBDYWxsSWRlbnRpZmllciYgY2FsbElkZW50aWZpZXIpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgUHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiB0aXRsZSwg
dW5zaWduZWQgdWlkKTsKKyAgICAgICAgUHJvZmlsZUdlbmVyYXRvcihFeGVjU3RhdGUqLCBjb25z
dCBXVEY6OlN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7CiAgICAgICAgIHZvaWQgYWRkUGFy
ZW50Rm9yQ29uc29sZVN0YXJ0KEV4ZWNTdGF0ZSopOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlUHJv
ZmlsZVN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZU5vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9k
ZS5oCmluZGV4IGZmZTdiNmY5ZDBlMzRjYWYzZDNjZjI4MjQyMmYzNDJiNWM3ZDFlOTEuLjI2MDAw
YTgyNzEzMzcyZTFlYTZhNmM2MTczYzA0NWZjMzQ3MmIzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCkBAIC02NCw4ICs2NCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAvLyBDYWxsSWRlbnRpZmllciBtZW1iZXJzCiAgICAgICAgIEV4ZWNT
dGF0ZSogY2FsbGVyQ2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZXJDYWxsRnJhbWU7
IH0KICAgICAgICAgY29uc3QgQ2FsbElkZW50aWZpZXImIGNhbGxJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWxsSWRlbnRpZmllcjsgfQotICAgICAgICBjb25zdCBVU3RyaW5nJiBmdW5j
dGlvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVyLm1fbmFtZTsgfQotICAg
ICAgICBjb25zdCBVU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVy
Lm1fdXJsOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsSWRlbnRpZmllci5tX25hbWU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVyLm1fdXJsOyB9CiAgICAgICAgIHVu
c2lnbmVkIGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVyLm1fbGlu
ZU51bWJlcjsgfQogCiAgICAgICAgIC8vIFJlbGF0aW9uc2hpcHMKQEAgLTE0Niw4ICsxNDYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGlubGluZSBib29sIHNlbGZUaW1lQXNj
ZW5kaW5nQ29tcGFyYXRvcihjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBhLCBjb25zdCBSZWZQ
dHI8UHJvZmlsZU5vZGU+JiBiKSB7IHJldHVybiBhLT5zZWxmVGltZSgpIDwgYi0+c2VsZlRpbWUo
KTsgfQogICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY2FsbHNEZXNjZW5kaW5nQ29tcGFyYXRv
cihjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBhLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+
JiBiKSB7IHJldHVybiBhLT5udW1iZXJPZkNhbGxzKCkgPiBiLT5udW1iZXJPZkNhbGxzKCk7IH0K
ICAgICAgICAgc3RhdGljIGlubGluZSBib29sIGNhbGxzQXNjZW5kaW5nQ29tcGFyYXRvcihjb25z
dCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBhLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiBiKSB7
IHJldHVybiBhLT5udW1iZXJPZkNhbGxzKCkgPCBiLT5udW1iZXJPZkNhbGxzKCk7IH0KLSAgICAg
ICAgc3RhdGljIGlubGluZSBib29sIGZ1bmN0aW9uTmFtZURlc2NlbmRpbmdDb21wYXJhdG9yKGNv
bnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGEsIGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mIGIp
IHsgcmV0dXJuIGEtPmZ1bmN0aW9uTmFtZSgpID4gYi0+ZnVuY3Rpb25OYW1lKCk7IH0KLSAgICAg
ICAgc3RhdGljIGlubGluZSBib29sIGZ1bmN0aW9uTmFtZUFzY2VuZGluZ0NvbXBhcmF0b3IoY29u
c3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYSwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYikg
eyByZXR1cm4gYS0+ZnVuY3Rpb25OYW1lKCkgPCBiLT5mdW5jdGlvbk5hbWUoKTsgfQorICAgICAg
ICBzdGF0aWMgaW5saW5lIGJvb2wgZnVuY3Rpb25OYW1lRGVzY2VuZGluZ0NvbXBhcmF0b3IoY29u
c3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYSwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYikg
eyByZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGItPmZ1bmN0aW9uTmFtZSgpLCBhLT5m
dW5jdGlvbk5hbWUoKSk7IH0KKyAgICAgICAgc3RhdGljIGlubGluZSBib29sIGZ1bmN0aW9uTmFt
ZUFzY2VuZGluZ0NvbXBhcmF0b3IoY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgYSwgY29uc3Qg
UmVmUHRyPFByb2ZpbGVOb2RlPiYgYikgeyByZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFu
KGEtPmZ1bmN0aW9uTmFtZSgpLCBiLT5mdW5jdGlvbk5hbWUoKSk7IH0KIAogICAgICAgICBFeGVj
U3RhdGUqIG1fY2FsbGVyQ2FsbEZyYW1lOwogICAgICAgICBDYWxsSWRlbnRpZmllciBtX2NhbGxJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5jcHAK
aW5kZXggNzIzMzkzYjVjNjhiYTZiM2I0MzUzN2NkY2VlNmU1MjJkZGJjNTlmNS4uOTY0MmEwNjg0
Nzc3YjNiNGEzMzFiMGQyYmQyMjNkZDNjZDc2NzcwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiUHJv
ZmlsZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJQcm9maWxl
Tm9kZS5oIgotI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDgsNyArNDcsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogR2xvYmFsQ29kZUV4ZWN1dGlvbiA9ICIocHJvZ3JhbSkiOwogc3RhdGljIGNvbnN0IGNoYXIq
IEFub255bW91c0Z1bmN0aW9uID0gIihhbm9ueW1vdXMgZnVuY3Rpb24pIjsKIHN0YXRpYyB1bnNp
Z25lZCBQcm9maWxlc1VJRCA9IDA7CiAKLXN0YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxs
SWRlbnRpZmllckZyb21GdW5jdGlvbkltcChFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IFVT
dHJpbmcmIGRlZmF1bHRTb3VyY2VVUkwsIGludCBkZWZhdWx0TGluZU51bWJlcik7CitzdGF0aWMg
Q2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXJGcm9tRnVuY3Rpb25JbXAoRXhlY1N0
YXRlKiwgSlNPYmplY3QqLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRTb3VyY2VVUkwsIGludCBkZWZh
dWx0TGluZU51bWJlcik7CiAKIFByb2ZpbGVyKiBQcm9maWxlcjo6c19zaGFyZWRQcm9maWxlciA9
IDA7CiAKQEAgLTU5LDcgKzU4LDcgQEAgUHJvZmlsZXIqIFByb2ZpbGVyOjpwcm9maWxlcigpCiAg
ICAgcmV0dXJuIHNfc2hhcmVkUHJvZmlsZXI7CiB9ICAgCiAKLXZvaWQgUHJvZmlsZXI6OnN0YXJ0
UHJvZmlsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgdGl0bGUpCit2b2lkIFBy
b2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiB7CiAgICAgQVNTRVJUX0FSRyh0aXRsZSwgIXRpdGxlLmlzTnVsbCgpKTsKIApAQCAtNzgs
NyArNzcsNyBAQCB2b2lkIFByb2ZpbGVyOjpzdGFydFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVTdHJpbmcmIHRpdGxlKQogICAgIG1fY3VycmVudFByb2ZpbGVzLmFwcGVuZChwcm9m
aWxlR2VuZXJhdG9yKTsKIH0KIAotUGFzc1JlZlB0cjxQcm9maWxlPiBQcm9maWxlcjo6c3RvcFBy
b2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHRpdGxlKQorUGFzc1JlZlB0
cjxQcm9maWxlPiBQcm9maWxlcjo6c3RvcFByb2ZpbGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIG9yaWdpbiA9IGV4ZWMgPyBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkgOiAwOwogICAgIGZvciAocHRyZGlmZl90IGkgPSBt
X2N1cnJlbnRQcm9maWxlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewpAQCAtMTI2LDcgKzEy
NSw3IEBAIHZvaWQgUHJvZmlsZXI6OndpbGxFeGVjdXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZy
YW1lLCBKU1ZhbHVlIGZ1bmN0aW9uKQogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub1Byb2ZpbGVzKGNh
bGxlckNhbGxGcmFtZSwgbV9jdXJyZW50UHJvZmlsZXMsICZQcm9maWxlR2VuZXJhdG9yOjp3aWxs
RXhlY3V0ZSwgY3JlYXRlQ2FsbElkZW50aWZpZXIoY2FsbGVyQ2FsbEZyYW1lLCBmdW5jdGlvbiwg
IiIsIDApLCBjYWxsZXJDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdy
b3VwKCkpOwogfQogCi12b2lkIFByb2ZpbGVyOjp3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxl
ckNhbGxGcmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVt
YmVyKQordm9pZCBQcm9maWxlcjo6d2lsbEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJh
bWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyKQogewog
ICAgIEFTU0VSVCghbV9jdXJyZW50UHJvZmlsZXMuaXNFbXB0eSgpKTsKIApAQCAtMTQyLDcgKzE0
MSw3IEBAIHZvaWQgUHJvZmlsZXI6OmRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJh
bWUsIEpTVmFsdWUgZnVuY3Rpb24pCiAgICAgZGlzcGF0Y2hGdW5jdGlvblRvUHJvZmlsZXMoY2Fs
bGVyQ2FsbEZyYW1lLCBtX2N1cnJlbnRQcm9maWxlcywgJlByb2ZpbGVHZW5lcmF0b3I6OmRpZEV4
ZWN1dGUsIGNyZWF0ZUNhbGxJZGVudGlmaWVyKGNhbGxlckNhbGxGcmFtZSwgZnVuY3Rpb24sICIi
LCAwKSwgY2FsbGVyQ2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91
cCgpKTsKIH0KIAotdm9pZCBQcm9maWxlcjo6ZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNh
bGxGcmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVy
KQordm9pZCBQcm9maWxlcjo6ZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpCiB7CiAgICAg
QVNTRVJUKCFtX2N1cnJlbnRQcm9maWxlcy5pc0VtcHR5KCkpOwogCkBAIC0xNTYsNyArMTU1LDcg
QEAgdm9pZCBQcm9maWxlcjo6ZXhjZXB0aW9uVW53aW5kKEV4ZWNTdGF0ZSogaGFuZGxlckNhbGxG
cmFtZSkKICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9Qcm9maWxlcyhoYW5kbGVyQ2FsbEZyYW1lLCBt
X2N1cnJlbnRQcm9maWxlcywgJlByb2ZpbGVHZW5lcmF0b3I6OmV4Y2VwdGlvblVud2luZCwgY3Jl
YXRlQ2FsbElkZW50aWZpZXIoaGFuZGxlckNhbGxGcmFtZSwgSlNWYWx1ZSgpLCAiIiwgMCksIGhh
bmRsZXJDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkpOwog
fQogCi1DYWxsSWRlbnRpZmllciBQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUsIGNvbnN0IFVTdHJpbmcmIGRlZmF1bHRT
b3VyY2VVUkwsIGludCBkZWZhdWx0TGluZU51bWJlcikKK0NhbGxJZGVudGlmaWVyIFByb2ZpbGVy
OjpjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZnVuY3Rpb25W
YWx1ZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCBpbnQgZGVmYXVsdExpbmVOdW1i
ZXIpCiB7CiAgICAgaWYgKCFmdW5jdGlvblZhbHVlKQogICAgICAgICByZXR1cm4gQ2FsbElkZW50
aWZpZXIoR2xvYmFsQ29kZUV4ZWN1dGlvbiwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVO
dW1iZXIpOwpAQCAtMTY0LDEyICsxNjMsMTIgQEAgQ2FsbElkZW50aWZpZXIgUHJvZmlsZXI6OmNy
ZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvblYKICAg
ICAgICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKCIodW5rbm93bikiLCBkZWZhdWx0U291cmNlVVJM
LCBkZWZhdWx0TGluZU51bWJlcik7CiAgICAgaWYgKGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpLT5p
bmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSB8fCBhc09iamVjdChmdW5jdGlvblZhbHVlKS0+
aW5oZXJpdHMoJkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBjcmVh
dGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlvbkltcChleGVjLCBhc09iamVjdChmdW5jdGlvblZh
bHVlKSwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVOdW1iZXIpOwotICAgIHJldHVybiBD
YWxsSWRlbnRpZmllcihtYWtlVVN0cmluZygiKCIsIGFzT2JqZWN0KGZ1bmN0aW9uVmFsdWUpLT5t
ZXRob2RUYWJsZSgpLT5jbGFzc05hbWUoYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSkpLCAiIG9iamVj
dCkiKSwgZGVmYXVsdFNvdXJjZVVSTCwgZGVmYXVsdExpbmVOdW1iZXIpOworICAgIHJldHVybiBD
YWxsSWRlbnRpZmllcihtYWtlU3RyaW5nKCIoIiwgYXNPYmplY3QoZnVuY3Rpb25WYWx1ZSktPm1l
dGhvZFRhYmxlKCktPmNsYXNzTmFtZShhc09iamVjdChmdW5jdGlvblZhbHVlKSksICIgb2JqZWN0
KSIpLCBkZWZhdWx0U291cmNlVVJMLCBkZWZhdWx0TGluZU51bWJlcik7CiB9CiAKLUNhbGxJZGVu
dGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGZ1bmN0aW9uLCBjb25zdCBVU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCBp
bnQgZGVmYXVsdExpbmVOdW1iZXIpCitDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmll
ckZyb21GdW5jdGlvbkltcChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29u
c3QgU3RyaW5nJiBkZWZhdWx0U291cmNlVVJMLCBpbnQgZGVmYXVsdExpbmVOdW1iZXIpCiB7Ci0g
ICAgY29uc3QgVVN0cmluZyYgbmFtZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShleGVjLCBm
dW5jdGlvbik7CisgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlO
YW1lKGV4ZWMsIGZ1bmN0aW9uKTsKICAgICBKU0Z1bmN0aW9uKiBqc0Z1bmN0aW9uID0ganNEeW5h
bWljQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pOwogICAgIGlmIChqc0Z1bmN0aW9uICYmICFq
c0Z1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQ2FsbElkZW50aWZp
ZXIobmFtZS5pc0VtcHR5KCkgPyBBbm9ueW1vdXNGdW5jdGlvbiA6IG5hbWUsIGpzRnVuY3Rpb24t
PmpzRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKSwganNGdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkt
PmxpbmVObygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKaW5k
ZXggODc3MDY1ZWNhZWJjYTBjZTVmNzdhNWU0M2E4YzFlYzlhNjcwYWJjYi4uNjg1MjQ1N2M3ZGM4
ZjA3ZDNjYWMzMzNjODU3N2M3YTJhZTc1MTkzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyLmgKQEAgLTQyLDIzICs0MiwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIFByb2ZpbGVH
ZW5lcmF0b3I7Ci0gICAgY2xhc3MgVVN0cmluZzsKLSAgICBzdHJ1Y3QgQ2FsbElkZW50aWZpZXI7
ICAgIAorICAgIHN0cnVjdCBDYWxsSWRlbnRpZmllcjsKIAogICAgIGNsYXNzIFByb2ZpbGVyIHsK
ICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUHJvZmlsZXIqIHByb2ZpbGVyKCk7IAotICAgICAgICBz
dGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKTsKKyAg
ICAgICAgc3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVy
KTsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0UHJvZmlsaW5nKEV4ZWNT
dGF0ZSosIGNvbnN0IFVTdHJpbmcmIHRpdGxlKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmIHRpdGxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFByb2ZpbGlu
ZyhFeGVjU3RhdGUqLCBjb25zdCBXVEY6OlN0cmluZyYgdGl0bGUpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBQYXNzUmVmUHRyPFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoRXhlY1N0YXRlKiwg
Y29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlKTsKICAgICAgICAgdm9pZCBzdG9wUHJvZmlsaW5nKEpT
R2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAgdm9pZCB3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGNh
bGxlckNhbGxGcmFtZSwgSlNWYWx1ZSBmdW5jdGlvbik7Ci0gICAgICAgIHZvaWQgd2lsbEV4ZWN1
dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwg
aW50IHN0YXJ0aW5nTGluZU51bWJlcik7CisgICAgICAgIHZvaWQgd2lsbEV4ZWN1dGUoRXhlY1N0
YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwsIGludCBz
dGFydGluZ0xpbmVOdW1iZXIpOwogICAgICAgICB2b2lkIGRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBj
YWxsZXJDYWxsRnJhbWUsIEpTVmFsdWUgZnVuY3Rpb24pOwotICAgICAgICB2b2lkIGRpZEV4ZWN1
dGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwg
aW50IHN0YXJ0aW5nTGluZU51bWJlcik7CisgICAgICAgIHZvaWQgZGlkRXhlY3V0ZShFeGVjU3Rh
dGUqIGNhbGxlckNhbGxGcmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0
YXJ0aW5nTGluZU51bWJlcik7CiAKICAgICAgICAgdm9pZCBleGNlcHRpb25VbndpbmQoRXhlY1N0
YXRlKiBoYW5kbGVyQ2FsbEZyYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5jcHAKaW5kZXggMjU3OTM3NjViYjAxNDc5ZTY4ODVhZGQ2ZWFlNjViZWJkNTgz
YzRhZS4uZmU3OWY3NDBlMmMwMGZiYWVlYWI4ZjBjZTI2YWRkMDQ3NzU2ZDM0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC05OCw3ICs5OCw3IEBA
IGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSwgc2xvdCk7CisgICAgcmV0dXJu
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmll
cihleGVjLCBTdHJpbmc6Om51bWJlcihpKSksIHNsb3QpOwogfQogICAgIAogdm9pZCBBcmd1bWVu
dHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZk5lY2Vzc2FyeShFeGVjU3RhdGUqIGV4ZWMpCkBA
IC0xODYsNyArMTg2LDcgQEAgdm9pZCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAgICBBcmd1bWVudHMq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8QXJndW1lbnRzKj4ob2JqZWN0KTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+ZC0+bnVtQXJndW1lbnRzOyArK2kpIHsKICAgICAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5k
LT5kZWxldGVkQXJndW1lbnRzW2ldKQotICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRl
bnRpZmllcihleGVjLCBVU3RyaW5nOjpudW1iZXIoaSkpKTsKKyAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgU3RyaW5nOjpudW1iZXIoaSkpKTsKICAgICB9CiAg
ICAgaWYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykgewogICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlKTsKQEAgLTIwNCw3ICsy
MDQsNyBAQCB2b2lkIEFyZ3VtZW50czo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YQogICAgIH0KIAogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KHNob3VsZFRocm93KTsKLSAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0cmluZzo6bnVtYmVyKGkpKSwgdmFsdWUsIHNsb3QpOwor
ICAgIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJp
bmc6Om51bWJlcihpKSksIHZhbHVlLCBzbG90KTsKIH0KIAogdm9pZCBBcmd1bWVudHM6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjU1LDcgKzI1NSw3IEBA
IGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgVVN0cmluZzo6bnVtYmVyKGkpKSk7CisgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6bnVtYmVyKGkp
KSk7CiB9CiAKIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggYTk3Y2Y4MmRl
OWY5NmQ1MWNlZTFiMDFiOGZmYjUyYWYxZjU4ODFlMi4uZTQ3YzNmNDc2ODE1ZjQyMGM4ODhlMTZk
NGE3MWY1MWQ5NGEzMzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIGlmIChlbGVtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgCi0gICAgICAgIFVTdHJpbmcgc3RyID0gZWxlbWVudC50b1VTdHJpbmcoZXhl
Yyk7CisgICAgICAgIFN0cmluZyBzdHIgPSBlbGVtZW50LnRvV1RGU3RyaW5nKGV4ZWMpOwogICAg
ICAgICBzdHJCdWZmZXJba10gPSBzdHIuaW1wbCgpOwogICAgICAgICB0b3RhbFNpemUgKz0gc3Ry
Lmxlbmd0aCgpOwogICAgICAgICBhbGxTdHJpbmdzOEJpdCA9IGFsbFN0cmluZ3M4Qml0ICYmIHN0
ci5pczhCaXQoKTsKQEAgLTMyOCw3ICszMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAg
ICAgIGJ1ZmZlci5hcHBlbmQocmVwLT5jaGFyYWN0ZXJzOCgpLCByZXAtPmxlbmd0aCgpKTsKICAg
ICAgICAgfQogICAgICAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSA9PSB0b3RhbFNpemUpOwotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6OmFkb3B0
KGJ1ZmZlcikpKTsgICAgICAgIAorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKGV4ZWMsIFN0cmluZzo6YWRvcHQoYnVmZmVyKSkpOwogICAgIH0KIAogICAgIFZlY3RvcjxV
Q2hhcj4gYnVmZmVyOwpAQCAtMzQzLDcgKzM0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAg
ICBidWZmZXIuYXBwZW5kKHJlcC0+Y2hhcmFjdGVycygpLCByZXAtPmxlbmd0aCgpKTsKICAgICB9
CiAgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkgPT0gdG90YWxTaXplKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6OmFkb3B0KGJ1ZmZlcikpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6YWRvcHQoYnVm
ZmVyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQpAQCAtMzYyLDcgKzM2Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIu
ZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5
UmV0dXJuVmFsdWUpOwogCi0gICAgVVN0cmluZyBzZXBhcmF0b3IoIiwiKTsKKyAgICBTdHJpbmcg
c2VwYXJhdG9yKCIsIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAgSlNTdHJp
bmdKb2luZXIgc3RyaW5nSm9pbmVyKHNlcGFyYXRvciwgbGVuZ3RoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKICAgICAgICAgSlNWYWx1ZSBlbGVtZW50ID0g
dGhpc09iai0+Z2V0KGV4ZWMsIGspOwpAQCAtMzczLDEzICszNzMsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIEpTVmFsdWUgY29udmVyc2lvbkZ1bmN0aW9uID0gby0+Z2V0KGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0xvY2FsZVN0cmluZyk7CiAgICAgICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIFVTdHJpbmcgc3RyOworICAgICAg
ICAgICAgU3RyaW5nIHN0cjsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAg
ICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjb252ZXJzaW9uRnVuY3Rpb24s
IGNhbGxEYXRhKTsKICAgICAgICAgICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpCi0g
ICAgICAgICAgICAgICAgc3RyID0gY2FsbChleGVjLCBjb252ZXJzaW9uRnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgZWxlbWVudCwgZXhlYy0+ZW1wdHlMaXN0KCkpLnRvVVN0cmluZyhleGVj
KTsKKyAgICAgICAgICAgICAgICBzdHIgPSBjYWxsKGV4ZWMsIGNvbnZlcnNpb25GdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBlbGVtZW50LCBleGVjLT5lbXB0eUxpc3QoKSkudG9XVEZTdHJp
bmcoZXhlYyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RyID0gZWxlbWVu
dC50b1VTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICAgICAgc3RyID0gZWxlbWVudC50b1dURlN0
cmluZyhleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAg
ICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChzdHIpOwpAQCAtNDAwLDExICs0MDAsMTEgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBl
eGVjKQogICAgIGlmIChKU1ZhbHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0
dXJuVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZh
bHVlKTsKIAotICAgIFVTdHJpbmcgc2VwYXJhdG9yOworICAgIFN0cmluZyBzZXBhcmF0b3I7CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBzZXBhcmF0
b3IgPSBleGVjLT5hcmd1bWVudCgwKS50b1VTdHJpbmcoZXhlYyk7CisgICAgICAgIHNlcGFyYXRv
ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChzZXBhcmF0
b3IuaXNOdWxsKCkpCi0gICAgICAgIHNlcGFyYXRvciA9IFVTdHJpbmcoIiwiKTsKKyAgICAgICAg
c2VwYXJhdG9yID0gU3RyaW5nKCIsIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBKU1N0cmluZ0pvaW5lciBzdHJpbmdKb2luZXIoc2VwYXJhdG9yLCBsZW5ndGgpOwogCkBA
IC00MTgsMTggKzQxOCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAgICAgICAgIEpTVmFsdWUgZWxlbWVu
dCA9IGFycmF5LT5nZXRJbmRleChrKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudC5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoZWxlbWVu
dC50b1VTdHJpbmdJbmxpbmUoZXhlYykpOworICAgICAgICAgICAgICAgIHN0cmluZ0pvaW5lci5h
cHBlbmQoZWxlbWVudC50b1dURlN0cmluZ0lubGluZShleGVjKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChVU3RyaW5nKCkpOworICAgICAg
ICAgICAgICAgIHN0cmluZ0pvaW5lci5hcHBlbmQoU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgZm9yICg7IGsgPCBsZW5ndGg7IGsrKykgewogICAgICAgICBKU1ZhbHVlIGVsZW1l
bnQgPSB0aGlzT2JqLT5nZXQoZXhlYywgayk7CiAgICAgICAgIGlmICghZWxlbWVudC5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgc3RyaW5nSm9pbmVyLmFwcGVuZChlbGVtZW50LnRv
VVN0cmluZ0lubGluZShleGVjKSk7CisgICAgICAgICAgICBzdHJpbmdKb2luZXIuYXBwZW5kKGVs
ZW1lbnQudG9XVEZTdHJpbmdJbmxpbmUoZXhlYykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBzdHJpbmdKb2luZXIuYXBwZW5kKFVTdHJpbmcoKSk7CisgICAgICAgICAgICBzdHJpbmdKb2lu
ZXIuYXBwZW5kKFN0cmluZygpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHN0cmluZ0pvaW5lci5idWlsZChleGVjKSk7CkBAIC01MjAsNyArNTIwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBsZW5ndGggKyBuLCBleGVjLT5hcmd1bWVudChuKSwgdHJ1ZSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICBJZGVudGlm
aWVyIHByb3BlcnR5TmFtZShleGVjLCBKU1ZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0
aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9VU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50
NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhleGVj
KSk7CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iaiwgZXhl
YywgcHJvcGVydHlOYW1lLCBleGVjLT5hcmd1bWVudChuKSwgc2xvdCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNjYxLDcgKzY2MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgICAgICBsLmFwcGVuZChtaW5PYmopOwogICAgICAgICAgICAgICAgIGNv
bXBhcmVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpz
VW5kZWZpbmVkKCksIGwpLnRvTnVtYmVyKGV4ZWMpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgY29tcGFyZVJlc3VsdCA9IChqT2JqLnRvVVN0cmluZ0lubGluZShleGVjKSA8
IG1pbk9iai50b1VTdHJpbmdJbmxpbmUoZXhlYykpID8gLTEgOiAxOworICAgICAgICAgICAgICAg
IGNvbXBhcmVSZXN1bHQgPSBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oak9iai50b1dURlN0cmlu
Z0lubGluZShleGVjKSwgbWluT2JqLnRvV1RGU3RyaW5nSW5saW5lKGV4ZWMpKSA/IC0xIDogMTsK
IAogICAgICAgICAgICAgaWYgKGNvbXBhcmVSZXN1bHQgPCAwKSB7CiAgICAgICAgICAgICAgICAg
dGhlbWluID0gajsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5k
ZXggYjBhZGFiMzJjZmY0YzRiODliOGE5NjAwZDk2OGRhZWVlM2NjZjVmYS4uNGM3MmYzZWQxMGUw
ZTUzMjFiNzIzY2I3Mjk1MjlmZTcyNDEzNjA5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHR5cGVkZWYgdm9pZCAoKkdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0cikoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAg
ICAgIEdldFByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBnZXRQcm9wZXJ0eU5hbWVzOwogCi0gICAg
ICAgIHR5cGVkZWYgVVN0cmluZyAoKkNsYXNzTmFtZUZ1bmN0aW9uUHRyKShjb25zdCBKU09iamVj
dCopOworICAgICAgICB0eXBlZGVmIFN0cmluZyAoKkNsYXNzTmFtZUZ1bmN0aW9uUHRyKShjb25z
dCBKU09iamVjdCopOwogICAgICAgICBDbGFzc05hbWVGdW5jdGlvblB0ciBjbGFzc05hbWU7CiAK
ICAgICAgICAgdHlwZWRlZiBib29sICgqSGFzSW5zdGFuY2VGdW5jdGlvblB0cikoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA0NzgzOTgxN2ZmOWVkMWFhZWEy
MDE4MzQyNmQ4YjJhZjI5NGQ1OTRkLi45MzMxNTQxYTg0ODZiNTM0ZWE0ZTU2Y2JjZWRjYzA3NTM2
ZjI0NWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29u
dmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZl
cnNpb24uY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJEYXRlQ29udmVyc2lvbi5oIgogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC02Miw3ICs2Miw3
IEBAIHZvaWQgYXBwZW5kTnVtYmVyPDI+KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCB2YWx1
ZSkKICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPignMCcgKyB2YWx1ZSAlIDEw
KSk7CiB9CiAKLVVTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUm
IHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQpCitTdHJpbmcgZm9y
bWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIHQsIERhdGVUaW1lRm9ybWF0IGZv
cm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQpCiB7CiAgICAgYm9vbCBhcHBlbmREYXRlID0gZm9ybWF0
ICYgRGF0ZVRpbWVGb3JtYXREYXRlOwogICAgIGJvb2wgYXBwZW5kVGltZSA9IGZvcm1hdCAmIERh
dGVUaW1lRm9ybWF0VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb252ZXJzaW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
Q29udmVyc2lvbi5oCmluZGV4IGZkMWE3ZWIzNTg5YmUzYjQzNmZiMzE2MzU3NWQ3OWQ0NWYyYjhi
MjIuLjhlYTRjMTdhZGJkMmFiYTM0Mzg2NDVjMjAwYjE3Y2YyYzk1Y2JmZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaApAQCAtMjcsOSArMjcs
MTEgQEAKIAogI2luY2x1ZGUgPHd0Zi9HcmVnb3JpYW5EYXRlVGltZS5oPgogCi1uYW1lc3BhY2Ug
SlNDIHsKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfSAvLyBuYW1lc3BhY2UgV1RG
CiAKLWNsYXNzIFVTdHJpbmc7CituYW1lc3BhY2UgSlNDIHsKIAogZW51bSBEYXRlVGltZUZvcm1h
dCB7CiAgICAgRGF0ZVRpbWVGb3JtYXREYXRlID0gMSwKQEAgLTM3LDcgKzM5LDcgQEAgZW51bSBE
YXRlVGltZUZvcm1hdCB7CiAgICAgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSA9IERhdGVUaW1l
Rm9ybWF0RGF0ZSB8IERhdGVUaW1lRm9ybWF0VGltZQogfTsKIAotVVN0cmluZyBmb3JtYXREYXRl
VGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYsIERhdGVUaW1lRm9ybWF0LCBib29sIGFzVVRD
VmFyaWFudCk7CitXVEY6OlN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRl
VGltZSYsIERhdGVUaW1lRm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCk7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCmluZGV4IDM2M2VlYzAzYTlmMTI5N2I3ODVhMTU3ZTA1MDRiYjA3N2UxNTBmNzMuLjhj
ZmQ0NGVlZjg3MTQ0MTI5Yjc2MGYwNmRiOTcyODI0ODhlODM2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgZW51bSBMb2NhbGVEYXRlVGltZUZvcm1hdCB7IExvY2FsZURhdGVBbmRUaW1lLCBMb2NhbGVE
YXRlLCBMb2NhbGVUaW1lIH07CiAvLyBGSVhNRTogU2luY2UgdGhpcyBpcyBzdXBlcmlvciB0byB0
aGUgc3RyZnRpbWUtYmFzZWQgdmVyc2lvbiwgd2h5IGxpbWl0IHRoaXMgdG8gUExBVEZPUk0oTUFD
KT8KIC8vIEluc3RlYWQgd2Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoaXMgd2hlbmV2ZXIgVVNF
KENGKSBpcyB0cnVlLgogCi1zdGF0aWMgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgc3R5bGVGcm9tQXJn
U3RyaW5nKGNvbnN0IFVTdHJpbmcmIHN0cmluZywgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgZGVmYXVs
dFN0eWxlKQorc3RhdGljIENGRGF0ZUZvcm1hdHRlclN0eWxlIHN0eWxlRnJvbUFyZ1N0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZywgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgZGVmYXVsdFN0eWxlKQog
ewogICAgIGlmIChzdHJpbmcgPT0gInNob3J0IikKICAgICAgICAgcmV0dXJuIGtDRkRhdGVGb3Jt
YXR0ZXJTaG9ydFN0eWxlOwpAQCAtMTUwLDkgKzE1MCw5IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1h
dExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBEYXRlSW5zdGFuY2UqLCBkb3VibGUgdGltZUlu
TWlsCiAgICAgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlID0gKGZvcm1hdCAhPSBMb2Nh
bGVEYXRlID8ga0NGRGF0ZUZvcm1hdHRlckxvbmdTdHlsZSA6IGtDRkRhdGVGb3JtYXR0ZXJOb1N0
eWxlKTsKIAogICAgIGJvb2wgdXNlQ3VzdG9tRm9ybWF0ID0gZmFsc2U7Ci0gICAgVVN0cmluZyBj
dXN0b21Gb3JtYXRTdHJpbmc7CisgICAgU3RyaW5nIGN1c3RvbUZvcm1hdFN0cmluZzsKIAotICAg
IFVTdHJpbmcgYXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgYXJnMFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoYXJnMFN0cmluZyA9PSAiY3VzdG9t
IiAmJiAhZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkgewogICAgICAgICB1c2VDdXN0
b21Gb3JtYXQgPSB0cnVlOwogICAgICAgICBjdXN0b21Gb3JtYXRTdHJpbmcgPSBleGVjLT5hcmd1
bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBAIC0xOTAsNyArMTkwLDcgQEAg
c3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0
YW5jZSosIGRvdWJsZSB0aW1lSW5NaWwKIAogICAgIENGUmVsZWFzZShzdHJpbmcpOwogCi0gICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBVU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7
CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoYnVmZmVyLCBsZW5n
dGgpKTsKIH0KIAogI2VsaWYgVVNFKElDVV9VTklDT0RFKSAmJiAhVUNPTkZJR19OT19GT1JNQVRU
SU5HCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShF
eGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5jZSogZGF0ZU9iamVjdCwgZG91YmwKICAgICBpZiAo
c3RhdHVzICE9IFVfWkVST19FUlJPUikKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhl
Yyk7CiAKLSAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFVTdHJpbmcoYnVmZmVy
LCBsZW5ndGgpKTsKKyAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyhi
dWZmZXIsIGxlbmd0aCkpOwogfQogCiAjZWxzZQpAQCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRpYyBK
U0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBHcmVnb3JpYW5E
YXRlVGltZSYgZ2R0LCBMCiAgICAgaWYgKGxlbmd0aCkKICAgICAgICAgbGVuZ3RoLS07CiAKLSAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFVTdHJpbmcoYnVmZmVyLmRhdGEoKSwg
bGVuZ3RoKSk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmcoYnVm
ZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CiAKICNlbHNlIC8vIE9TKFdJTkRPV1MpCiAKQEAgLTMyMiw3
ICszMjIsNyBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmIGdkdCwgTAogICAgIGlmIChsZW5ndGggIT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PigtMSkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKICAgICAgICAgICAgIGJ1ZmZlcltpXSA9IHN0YXRpY19jYXN0PFVDaGFyPih0
ZW1wYnVmZmVyW2ldKTsKLSAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBV
U3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCBhM2E5OTBkNTk2ZTIzZDdmYTYx
ZjZmOWMyNDBjNWVlZjc5MDczNjI5Li4wYTUyMmM0ZmQwMDNkYWQwNjY0OGE4ZDEzOWFjYWZjMDRm
ZTViN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC00Mywz
NyArNDMsMzcgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29uc3QgY2hhciogbGluZVByb3Bl
cnR5TmFtZSA9ICJsaW5lIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBzb3VyY2VVUkxQcm9wZXJ0eU5h
bWUgPSAic291cmNlVVJMIjsKIAotSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRl
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBFcnJvcklu
c3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+
ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVFdmFsRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
K0pTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkp
OwogICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdC0+ZXZhbEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1
cmUoKSwgbWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCog
Y3JlYXRlUmFuZ2VFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgcmV0
dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xv
YmFsT2JqZWN0LT5yYW5nZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVz
c2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0
ZVJlZmVyZW5jZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1
cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QtPnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwg
bWVzc2FnZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0
ZVN5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICByZXR1cm4g
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QtPnN5bnRheEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2Fn
ZSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVUeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIHJldHVybiBFcnJvckluc3Rh
bmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+dHlw
ZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CkBAIC04NCwz
OCArODQsMzggQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOwogfQogCi1KU09iamVjdCogY3JlYXRl
VVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVz
c2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1w
dHkoKSk7CiAgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5VUklFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3Ry
dWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBjcmVh
dGVFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQogCi1KU09i
amVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVz
c2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUV2YWxFcnJvcihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlUmFuZ2VF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCog
Y3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAg
IHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IG1lc3NhZ2UpOwogfQogCi1KU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQorSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBj
cmVhdGVTeW50YXhFcnJvcihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwog
fQogCi1KU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0
cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1lc3NhZ2UpOwogfQpAQCAtMTI1LDcgKzEyNSw3
IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSk7CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogY3JlYXRlVVJJRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZVVSSUVycm9yKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbWVzc2FnZSk7CiB9
CkBAIC0xMzMsNyArMTMzLDcgQEAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKIHsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZy
YW1lLT5nbG9iYWxEYXRhKCk7Ci0gICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJMID0gc291cmNl
LnByb3ZpZGVyKCktPnVybCgpOworICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMID0gc291cmNl
LnByb3ZpZGVyKCktPnVybCgpOwogCiAgICAgaWYgKGxpbmUgIT0gLTEpCiAgICAgICAgIGVycm9y
LT5wdXREaXJlY3QoKmdsb2JhbERhdGEsIElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgbGluZVByb3Bl
cnR5TmFtZSksIGpzTnVtYmVyKGxpbmUpLCBSZWFkT25seSB8IERvbnREZWxldGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggNjVhZWEzZWRjYzEzZDQwZjU0MDg2MzJh
NmU4NzM3YTdiYWVlN2VmYy4uYmM3MWY3MGIxOTA1ZTRhM2Y4ODRmNzllNTQ3NmVmMjA1ZmZmNmM1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBAIC0zNiwyNiArMzYsMjUg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgU291cmNl
Q29kZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7Ci0gICAgY2xhc3MgVVN0cmluZzsKIAogICAgIC8v
IE1ldGhvZHMgdG8gY3JlYXRlIGEgcmFuZ2Ugb2YgaW50ZXJuYWwgZXJyb3JzLgotICAgIEpTT2Jq
ZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBK
U09iamVjdCogY3JlYXRlRXZhbEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYp
OwotICAgIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
VVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVR5
cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU09iamVjdCog
Y3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU09iamVj
dCogY3JlYXRlRXZhbEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CisgICAg
SlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmKTsKKyAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgSlNPYmplY3QqIGNyZWF0
ZVVSSUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTT2JqZWN0
KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOwogICAgIC8v
IEV4ZWNTdGF0ZSB3cmFwcGVycy4KLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3Jl
YXRlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVh
dGVFdmFsRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0
ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIEpTT2JqZWN0KiBjcmVhdGVF
dmFsRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihFeGVjU3RhdGUqKTsKLSAgICBKU09iamVjdCogY3JlYXRlVVJJRXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTT2JqZWN0KiBjcmVhdGVVUklF
cnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRk
IAogICAgIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvcik7CkBA
IC03Niw3ICs3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaWN0TW9kZVR5
cGVFcnJvckZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHByaXZhdGU6
Ci0gICAgICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
KyAgICAgICAgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAg
ICAgICAgICAgICA6IEludGVybmFsRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAg
ICAgICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogICAgICAgICB7CkBAIC04Nyw3ICs4Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBJbnRlcm5h
bEZ1bmN0aW9uIEJhc2U7CiAKLSAgICAgICAgc3RhdGljIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCisgICAgICAg
IHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmljdE1vZGVU
eXBlRXJyb3JGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxT
dHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2RlVHlw
ZUVycm9yRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOwogICAgICAg
ICAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgIiIpOwpA
QCAtMTI2LDcgKzEyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBVU3RyaW5nIG1fbWVzc2FnZTsKKyAgICAgICAgU3RyaW5nIG1fbWVzc2Fn
ZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAppbmRleCBkNmZhMzJmOTljZjNiM2RjNGIwZjEyNDkz
OTdmNWQ2MDc1NTY1MjdkLi44OTQ2NzYzNjEyYWQ5ZmM2OGMzMzMwNDE5ZDlhYWRhYjY2M2YzOTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhFcnJvckluc3RhbmNlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkK
KyAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2UqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEVycm9ySW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0
YW5jZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEsIG1lc3NhZ2UpOwpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgRXJyb3JJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgbWVzc2FnZSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVy
ZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gVVN0cmluZygpIDogbWVzc2FnZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIHN0cnVjdHVyZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBt
ZXNzYWdlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBib29sIGFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpIHsgcmV0dXJuIG1fYXBwZW5kU291cmNlVG9N
ZXNzYWdlOyB9CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqKTsKIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAg
ICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAg
ICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDVkZDNlODVlMmYzZjM0MTU5
ZjliM2Q3ZGM3ZGViNzA1ZWEzMzNjYTIuLjM1NGEzMTIxYTRiODdhMzY0MDRiOWQ3YzlmZWMyYzQ0
MTRjMjcwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIu
aCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNp
b25DaGVja2VyLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtOTcsNyArOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQsIHRo
ZW4gbGV0IG5hbWUgYmUgIkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1lKS4K
LSAgICBVU3RyaW5nIG5hbWVTdHJpbmc7CisgICAgU3RyaW5nIG5hbWVTdHJpbmc7CiAgICAgaWYg
KG5hbWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgbmFtZVN0cmluZyA9ICJFcnJvciI7CiAgICAg
ZWxzZSB7CkBAIC0xMTQsNyArMTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
cnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAvLyAoc2ljKQogICAg
IC8vIDYuIElmIG1zZyBpcyB1bmRlZmluZWQsIHRoZW4gbGV0IG1zZyBiZSB0aGUgZW1wdHkgU3Ry
aW5nOyBlbHNlIGxldCBtc2cgYmUgVG9TdHJpbmcobXNnKS4KICAgICAvLyA3LiBJZiBtc2cgaXMg
dW5kZWZpbmVkLCB0aGVuIGxldCBtc2cgYmUgdGhlIGVtcHR5IFN0cmluZzsgZWxzZSBsZXQgbXNn
IGJlIFRvU3RyaW5nKG1zZykuCi0gICAgVVN0cmluZyBtZXNzYWdlU3RyaW5nOworICAgIFN0cmlu
ZyBtZXNzYWdlU3RyaW5nOwogICAgIGlmIChtZXNzYWdlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IG1lc3NhZ2VTdHJpbmcgPSAiIjsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggY2U2M2FlOWFmNGVmNDY0
N2M1YzE3NjYzN2NjNDNjZmRkODdmOGI5NC4uODNhNGUwM2MzYjNiNzA0MzUzNDk5YzRjYzczZjIx
YmE0YmZhY2E5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU05vdEFuT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTA3
LDEzICsxMDYsMTMgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewotICAg
IFVTdHJpbmcgbWVzc2FnZShtYWtlVVN0cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRl
bnQudXN0cmluZygpKSk7CisgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogIiwgaWRlbnQudXN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogfQogICAgIAogSlNPYmplY3QqIGNyZWF0ZUludmFs
aWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogb3AsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlVVN0cmluZygiJyIsIHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIicgaXMgbm90IGEgdmFsaWQgYXJndW1lbnQg
Zm9yICciLCBvcCwgIiciKTsKKyAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygi
JyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIicgaXMgbm90IGEgdmFsaWQg
YXJndW1lbnQgZm9yICciLCBvcCwgIiciKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbi0+
aXNFcnJvckluc3RhbmNlKCkpOwogICAgIHN0YXRpY19jYXN0PEVycm9ySW5zdGFuY2UqPihleGNl
cHRpb24pLT5zZXRBcHBlbmRTb3VyY2VUb01lc3NhZ2UoKTsKQEAgLTEyMiw3ICsxMjEsNyBAQCBK
U09iamVjdCogY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBj
aGFyKiBvcCwgSlNWYWx1ZSB2YWx1ZQogCiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9y
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJpbmcgZXJy
b3JNZXNzYWdlID0gbWFrZVVTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksICInIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CisgICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICIn
IGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IGNyZWF0
ZVR5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOwogICAgIEFTU0VSVChleGNlcHRpb24tPmlz
RXJyb3JJbnN0YW5jZSgpKTsKICAgICBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0
aW9uKS0+c2V0QXBwZW5kU291cmNlVG9NZXNzYWdlKCk7CkBAIC0xMzEsNyArMTMwLDcgQEAgSlNP
YmplY3QqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKIAogSlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VV
U3RyaW5nKCInIiwgdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiJyBpcyBub3Qg
YSBmdW5jdGlvbiIpOworICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCInIiwg
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiJyBpcyBub3QgYSBmdW5jdGlvbiIp
OwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uLT5pc0Vycm9ySW5zdGFuY2UoKSk7CiAgICAg
c3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiktPnNldEFwcGVuZFNvdXJjZVRv
TWVzc2FnZSgpOwpAQCAtMTQwLDE2ICsxMzksMTYgQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5j
dGlvbkVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIAogSlNPYmplY3QqIGNy
ZWF0ZU5vdEFuT2JqZWN0RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewot
ICAgIFVTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVVTdHJpbmcoIiciLCB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyksICInIGlzIG5vdCBhbiBvYmplY3QiKTsKKyAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiJyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSwgIicgaXMgbm90IGFuIG9iamVjdCIpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24g
PSBjcmVhdGVUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKTsKICAgICBBU1NFUlQoZXhjZXB0
aW9uLT5pc0Vycm9ySW5zdGFuY2UoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+
KGV4Y2VwdGlvbiktPnNldEFwcGVuZFNvdXJjZVRvTWVzc2FnZSgpOwogICAgIHJldHVybiBleGNl
cHRpb247CiB9CiAKLUpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25t
ZW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcHJvcGVydHlOYW1lKQorSlNPYmpl
Y3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVmZXJl
bmNlRXJyb3IoZXhlYywgbWFrZVVTdHJpbmcoIlN0cmljdCBtb2RlIGZvcmJpZHMgaW1wbGljaXQg
Y3JlYXRpb24gb2YgZ2xvYmFsIHByb3BlcnR5ICciLCBwcm9wZXJ0eU5hbWUsICInIikpOworICAg
IHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJTdHJpY3QgbW9k
ZSBmb3JiaWRzIGltcGxpY2l0IGNyZWF0aW9uIG9mIGdsb2JhbCBwcm9wZXJ0eSAnIiwgcHJvcGVy
dHlOYW1lLCAiJyIpKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCA3YmZmZDI5NGIzNTY4NzRmYWMxNGJkOTQ0
Y2M0YzkyYmIyYzdiNzI4Li5kMmRhYWEwNDRhYWQ1MDkzOTdhNzNmOTRkYWNiYzNkM2Y0MDlkNGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oCkBAIC00OSw3ICs0OSw3IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RBbk9iamVjdEVycm9yKEV4
ZWNTdGF0ZSosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RB
Q29uc3RydWN0b3JFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVO
b3RBRnVuY3Rpb25FcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLUpTT2JqZWN0KiBjcmVhdGVF
cnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKK0pTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYpOwogCiBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9y
KEV4ZWNTdGF0ZSopOwogSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRl
eCA5NmI4YjkzM2E1NzVjMzNjMjI4YTQ5OTM5Y2MwODlhYjkwMmVlM2M5Li40YWM1Zjg4MTM4MDlk
ZjgwODE3YmQ1MDA1ZmQzMzhmODkwMzc3MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgotI2luY2x1ZGUg
IlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTY2OSwxNiAr
NjY5LDE2IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xv
YmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvCiAgICAgcmV0dXJuIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb25OYW1lLCBmdW5jdGlv
bk5hbWUsIGJvZHktPnNvdXJjZSgpLCBib2R5LT51c2VzQXJndW1lbnRzKCksIGJvZHktPnBhcmFt
ZXRlcnMoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGJvZHktPmxpbmVObygpLCBib2R5LT5sYXN0
TGluZSgpKTsKIH0KIAotVVN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkg
Y29uc3QKK1N0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKIHsK
ICAgICBGdW5jdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMgPSAqbV9wYXJhbWV0ZXJzOwotICAg
IFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAg
IGZvciAoc2l6ZV90IHBvcyA9IDA7IHBvcyA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK3Bvcykgewog
ICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiwgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRlcnNbcG9zXS51c3RyaW5n
KCkpOwogICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1VTdHJpbmcoKTsKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKaW5kZXggMzhjMzlmOTE0ZDQ2NmFhMGVmM2YyMmU4NTFjN2JmYjBiZjll
NDgyZS4uZTEzZDI4ZTVkODRkNjQ5ZDNkZDhhYjYxMDIxMzkyYTIzMTBiZDljYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMzIwLDcgKzMyMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIHsg
cmV0dXJuIG1fc291cmNlOyB9CiAgICAgICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2UucHJvdmlkZXJJRCgpOyB9Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHNv
dXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2Uu
cHJvdmlkZXIoKS0+dXJsKCk7IH0KICAgICAgICAgaW50IGxpbmVObygpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3RMaW5lOyB9CiAgICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdExpbmU7IH0KIApAQCAtNjYxLDcgKzY2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lVmFsdWUuZ2V0KCk7
IH0KICAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLT5zaXplKCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKICAgICAgICAgdW5zaWduZWQg
Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9udW1DYXB0dXJlZFZhcmlh
YmxlczsgfQotICAgICAgICBVU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3Q7CisgICAgICAgIFN0
cmluZyBwYXJhbVN0cmluZygpIGNvbnN0OwogICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUoKSBjb25zdCB7IHJldHVybiBtX3N5bWJvbFRhYmxlLmdldCgpOyB9CiAKICAgICAg
ICAgdm9pZCBjbGVhckNvZGVJZk5vdENvbXBpbGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCA3ZjgyYTc0
Y2UwMGUwYzAyODk1ZjNiYjg0YzRmZjk4MmZjNDgzOWFmLi4wYjk1M2ZkOTZlNTI4ZjQ0Y2EzZGNm
ZDYxYmJkNmQ3ZTA0MDMxZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMzAsOCArMzAsNyBAQAogI2luY2x1
ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKLSNp
bmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTgwLDI1ICs3OSwyNSBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCiB9CiAKIC8vIEVDTUEgMTUuMy4y
IFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlz
dCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBz
b3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pCitKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQogewog
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgIkZ1bmN0aW9uIGNvbnN0cnVjdG9y
IGlzIGRpc2FibGVkIikpOwogICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291
cmNlVVJMLCBwb3NpdGlvbik7CiB9CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBw
aW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9u
TmFtZSwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0
aW9uKQorSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJn
TGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICAvLyBGdW5j
dGlvbnMgbmVlZCB0byBoYXZlIGEgc3BhY2UgZm9sbG93aW5nIHRoZSBvcGVuaW5nIHsgZHVlIHRv
IGZvciB3ZWIgY29tcGF0aWJpbGl0eQogICAgIC8vIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAKICAgICAvLyBXZSBhbHNvIG5lZWQgXG4gYmVmb3JlIHRo
ZSBjbG9zaW5nIH0gdG8gaGFuZGxlIC8vIGNvbW1lbnRzIGF0IHRoZSBlbmQgb2YgdGhlIGxhc3Qg
bGluZQotICAgIFVTdHJpbmcgcHJvZ3JhbTsKKyAgICBTdHJpbmcgcHJvZ3JhbTsKICAgICBpZiAo
YXJncy5pc0VtcHR5KCkpCiAgICAgICAgIHByb2dyYW0gPSAiKGZ1bmN0aW9uKCkgeyBcbn0pIjsK
ICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFtID0gbWFrZVVT
dHJpbmcoIihmdW5jdGlvbigpIHsgIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksICJcbn0pIik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24o
KSB7ICIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59KSIpOwog
ICAgIGVsc2UgewotICAgICAgICBVU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBhcmdzLnNpemUoKSAtIDE7
IGkrKykgewpAQCAtMTA4LDcgKzEwNyw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqCiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIpIHsgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3Mu
YXQoYXJncy5zaXplKCkgLSAxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiXG59KSIpOwotICAgICAgICBwcm9ncmFtID0gYnVpbGRlci50b1VT
dHJpbmcoKTsKKyAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAK
ICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KTsKQEAgLTEyNyw3ICsxMjYsNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGlu
Z0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iagogLy8gRUNNQSAx
NS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBB
cmdMaXN0JiBhcmdzKQogewotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgImFub255bW91cyIpLCBVU3RyaW5nKCks
IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpOworICAgIHJldHVybiBjb25zdHJ1Y3RG
dW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgImFub255
bW91cyIpLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDMxOTg2YjcwYTczYzY1M2QxODhkYjI2ZjRi
MTdlZTEwNGQwNTIxMjcuLjk5ZWFmZWU4MGYyYTVlOTA1MmZmYzY4ZDg1NGQxYTkyNmJiMzc0YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmgKQEAgLTU2LDEwICs1NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAgICAgfTsKIAot
ICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKKyAgICBKU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKICAgICBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0
Jik7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFVTdHJpbmcmLCBjb25zdCBXVEY6
OlRleHRQb3NpdGlvbiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApp
bmRleCA0MjA2Y2YyYjBmMmNmOTYyODU2ZGY2OTQxN2RhYzBjMDg4OWM5OWNiLi5hMjAwZGNhYzgx
OGQ5OWY0YzNlYjVmY2QyOTNlNWUxMGQzMTcxMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IEZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0CiB7CiB9CiAKLXZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKK3Zv
aWQgRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwpAQCAtODMsNyArODMsNyBAQCBDYWxsVHlw
ZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxE
YXRhKQogLy8gRnVuY3Rpb25zCiAKIC8vIENvbXBhdGliaWxpdHkgaGFjayBmb3IgdGhlIE9wdGlt
b3N0IEphdmFTY3JpcHQgbGlicmFyeS4gKFNlZSA8cmRhcjovL3Byb2JsZW0vNjU5NTA0MD4uKQot
c3RhdGljIGlubGluZSB2b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFVTdHJpbmcmIGZ1bmN0
aW9uQm9keSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChTdHJp
bmcmIGZ1bmN0aW9uQm9keSkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25Cb2R5WzBdID09ICd7Jyk7
CiAgICAgQVNTRVJUKGZ1bmN0aW9uQm9keVtmdW5jdGlvbkJvZHkubGVuZ3RoKCkgLSAxXSA9PSAn
fScpOwpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW5zZXJ0U2VtaWNvbG9u
SWZOZWVkZWQoVVN0cmluZyYgZnVuY3Rpb25Cb2R5KQogICAgICAgICBVQ2hhciBjaCA9IGZ1bmN0
aW9uQm9keVtpXTsKICAgICAgICAgaWYgKCFMZXhlcjxVQ2hhcj46OmlzV2hpdGVTcGFjZShjaCkg
JiYgIUxleGVyPFVDaGFyPjo6aXNMaW5lVGVybWluYXRvcihjaCkpIHsKICAgICAgICAgICAgIGlm
IChjaCAhPSAnOycgJiYgY2ggIT0gJ30nKQotICAgICAgICAgICAgICAgIGZ1bmN0aW9uQm9keSA9
IG1ha2VVU3RyaW5nKGZ1bmN0aW9uQm9keS5zdWJzdHJpbmdTaGFyaW5nSW1wbCgwLCBpICsgMSks
ICI7IiwgZnVuY3Rpb25Cb2R5LnN1YnN0cmluZ1NoYXJpbmdJbXBsKGkgKyAxLCBmdW5jdGlvbkJv
ZHkubGVuZ3RoKCkgLSAoaSArIDEpKSk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb25Cb2R5ID0g
bWFrZVN0cmluZyhmdW5jdGlvbkJvZHkuc3Vic3RyaW5nU2hhcmluZ0ltcGwoMCwgaSArIDEpLCAi
OyIsIGZ1bmN0aW9uQm9keS5zdWJzdHJpbmdTaGFyaW5nSW1wbChpICsgMSwgZnVuY3Rpb25Cb2R5
Lmxlbmd0aCgpIC0gKGkgKyAxKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTA2LDcgKzEwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5h
bWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwotICAg
ICAgICBVU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5n
KCk7CisgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50
b1N0cmluZygpOwogICAgICAgICBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChzb3VyY2VTdHJpbmcp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
ZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCIsIGV4ZWN1dGFibGUt
PnBhcmFtU3RyaW5nKCksICIpICIsIHNvdXJjZVN0cmluZykpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCmluZGV4IDU5NDI3
OTEyYjYzN2IyOGYxOGY4YTA3Yjg3YTljNWE1MmU1NTQ3OTAuLjlmZmViZjdhOWVkZDUwN2Q2MjNj
ZWUzNmEwZTM1NjkzM2E4NTI1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3QgVVN0cmlu
ZyYgbmFtZSk7CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUHJvdG90eXBl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVyLmgKaW5kZXggMTk2ZmRjYTIzZjU5YjhiYjM5YWRjYjM3MWE1MDBiN2Y0
NGE3MDAxMC4uZTUyYjVhOWRhNmI0NmFhZmMwNTQ1OGJhYzg4OTIzYmY1MjViNmUwMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMjMsOSArMjMsOSBA
QAogCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNp
ZmljLmg+Ci0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRh
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUsMTQgKzQ1LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pIDogbV9zdHJpbmcoYWRk
KGdsb2JhbERhdGEsIGNoYXJhY3RlcnMpKSB7IH0KIAogICAgICAgICBJZGVudGlmaWVyKEV4ZWNT
dGF0ZSogZXhlYywgU3RyaW5nSW1wbCogcmVwKSA6IG1fc3RyaW5nKGFkZChleGVjLCByZXApKSB7
IH0KLSAgICAgICAgSWRlbnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMp
IDogbV9zdHJpbmcoYWRkKGV4ZWMsIHMuaW1wbCgpKSkgeyB9CisgICAgICAgIElkZW50aWZpZXIo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKGV4ZWMsIHMu
aW1wbCgpKSkgeyB9CiAKICAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChnbG9iYWxEYXRh
LCBzLCBsZW5ndGgpKSB7IH0KICAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5nKGFkZChnbG9iYWxE
YXRhLCBzLCBsZW5ndGgpKSB7IH0KICAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIFN0cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcmVw
KSkgeyB9IAotICAgICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKSB7IH0K
KyAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmlu
ZyYgcykgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKSB7IH0KIAotICAgICAg
ICBjb25zdCBVU3RyaW5nJiB1c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAg
ICAgICAgLy8gRklYTUU6IGZpeCB0aGlzIG5hbWUuCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgICAgIFN0cmluZ0ltcGwqIGlt
cGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pbXBsKCk7IH0KICAgICAgICAgCiAgICAgICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY2hhcmFj
dGVycygpOyB9CkBAIC05MSw3ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRl
KiwgY29uc3QgY2hhciopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVVN0cmluZyBtX3N0cmlu
ZzsKKyAgICAgICAgU3RyaW5nIG1fc3RyaW5nOwogCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KICAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDMyX3QgdG9VSW50
MzJGcm9tQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoLCBib29sJiBvayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmluZGV4IDZkZTI5MmE1MzJmNDdhYzI4NWU0ZTYzMzU4
ZTY4MTQxYzc0YTlkMGYuLjZlN2VkZGJmMTFmMjQwMzVkZjhhZjQ3OTBmZmE1MTI0M2E2NGRmYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCi0jaW5j
bHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0
Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRleCA5ODVhYjczYjA0
N2UwYzY2ZjRjNTc2NGYwNzE5NDBkNDk0NGRhNzNlLi4yMTZkY2UzNzk1NWZkNDc3OWU1YTVkNDk3
YTQwNTJmMTc3ZTM1NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBJbnRlcm5hbEZ1bmN0aW9u
OjpJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydQogewogfQogCi12b2lkIEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKK3ZvaWQgSW50ZXJu
YWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTQ3LDE5ICs0NywxOSBAQCB2b2lk
IEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgbgogICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBnbG9iYWxEYXRh
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLmlzTnVsbCgp
ID8gIiIgOiBuYW1lKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCi1j
b25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKK2Nv
bnN0IFN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgcmV0dXJuIGFzU3RyaW5nKGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CiB9CiAKLWNv
bnN0IFVTdHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVj
KQorY29uc3QgU3RyaW5nIEludGVybmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsK
ICAgICAKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZyhkaXNwbGF5TmFtZSkpCiAg
ICAgICAgIHJldHVybiBhc1N0cmluZyhkaXNwbGF5TmFtZSktPnRyeUdldFZhbHVlKCk7CiAgICAg
Ci0gICAgcmV0dXJuIFVTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIENhbGxU
eXBlIEludGVybmFsRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJikKQEAg
LTY4LDkgKzY4LDkgQEAgQ2FsbFR5cGUgSW50ZXJuYWxGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlND
ZWxsKiwgQ2FsbERhdGEmKQogICAgIHJldHVybiBDYWxsVHlwZU5vbmU7CiB9CiAKLWNvbnN0IFVT
dHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSog
ZXhlYykKK2NvbnN0IFN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5h
bWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGNvbnN0IFVTdHJpbmcgZXhwbGljaXROYW1lID0g
ZGlzcGxheU5hbWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIGV4cGxpY2l0TmFtZSA9IGRpc3Bs
YXlOYW1lKGV4ZWMpOwogICAgIAogICAgIGlmICghZXhwbGljaXROYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAppbmRleCAxNTBmYjc1OWVkMDlkNGMzMDA3ZDk3YTVi
OGEwMjIwN2IwYmUzMDkxLi5lMjZiOWY5NTNmZThhNGQ3NzJlZmU0OTIzOTIyNGQ3MmM3ZGM1ZDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKLSAgICAgICAgY29uc3Qg
VVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKLSAgICAgICAgY29uc3QgVVN0cmluZyBj
YWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IFN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgY29uc3QgU3RyaW5n
IGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOworICAgICAgICBjb25zdCBTdHJpbmcgY2FsY3VsYXRl
ZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pIAogICAgICAgICB7IApAQCAtNTEsNyArNTEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5n
JiBuYW1lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgICAgIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAKaW5kZXgg
ODUxNzA4NWRmZWUyNjhmM2Y0Zjc5NmI4MTY0MjBkNzI3YTI0YzlmMi4uY2QxZDgzMGZlMjRhM2Ix
MzI2MDJmODczZDhmNWFmMTBhOGJhZjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2lu
Y2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIK
LSNpbmNsdWRlICJVU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDcyMTg2MDRkMTEyYzc4YjU3MTJiNDU0
NDM4ZjI5YjEwYjUyMDg0MzguLmYyNGRjNzUxZGJjODkxZmY2YmY0MWNhOWE4ODZlZmJmMWJhZDgy
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xNDc5
LDcgKzE0NzksNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQogICAgIC8v
IGEgdG9TdHJpbmcgY2FsbCByYWlzZXMgYW4gZXhjZXB0aW9uLgogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7IGkrKykKLSAgICAgICAgdmFs
dWVzW2ldLnNlY29uZCA9IHZhbHVlc1tpXS5maXJzdC50b1VTdHJpbmdJbmxpbmUoZXhlYyk7Cisg
ICAgICAgIHZhbHVlc1tpXS5zZWNvbmQgPSB2YWx1ZXNbaV0uZmlyc3QudG9XVEZTdHJpbmdJbmxp
bmUoZXhlYyk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgSGVh
cDo6aGVhcCh0aGlzKS0+cG9wVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCAzZjY0MzA4
NzFkMmNhNjliZmE4MGVkYmNlY2UyZjlhODcwNjQxOWMzLi43NTQwZDQzOTQ4MWFkZDIwNDZjZjdl
YjEzYmE4MTM4ZGUwNDgyMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXRGdW5jdGlvbiwg
Y29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncykpOwogfQogCi1KU0JvdW5kRnVuY3Rp
b24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5k
VGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUp
CitKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9u
LCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAg
Q29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gSlNDOjpnZXRDb25zdHJ1Y3REYXRhKHRhcmdl
dEZ1bmN0aW9uLCBjb25zdHJ1Y3REYXRhKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBKU0JvdW5kRnVu
Y3Rpb246OkpTQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiB7CiB9CiAKLXZvaWQgSlNCb3VuZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5n
dGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCit2b2lkIEpTQm91bmRGdW5jdGlvbjo6ZmluaXNoQ3Jl
YXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYywgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uaAppbmRleCBkZDEyMjkyNzJiZjYwNDg2NzQ3MTE4MjgyYjg3OWM1ODA5NWQxMDBmLi41MDY3
ZDE5NGNlOWM0OTQyNjg2NzkwNzk3ZDEzZGNjOWQ4YTFmNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaApAQCAtMzcsNyArMzcsNyBAQCBj
bGFzcyBKU0JvdW5kRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CiAKLSAgICBzdGF0aWMgSlNCb3VuZEZ1bmN0aW9uKiBj
cmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGFyZ2V0RnVuY3Rp
b24sIEpTVmFsdWUgYm91bmRUaGlzLCBKU1ZhbHVlIGJvdW5kQXJncywgaW50LCBjb25zdCBVU3Ry
aW5nJik7CisgICAgc3RhdGljIEpTQm91bmRGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhp
cywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMg
Ym9vbCBoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUg
cHJvdG8pOwogCkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgSlNC
b3VuZEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNP
YmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFy
Z3MpOwogICAgIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgTmF0aXZlRXhl
Y3V0YWJsZSosIGludCwgY29uc3QgVVN0cmluZyYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCwgY29uc3QgU3RyaW5nJik7CiAKICAg
ICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0RnVuY3Rpb247CiAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+IG1fYm91bmRUaGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKaW5kZXggNjFlODU0OWVlOTMwODM3NWViNmI4MjhkMGQ0ZjM5Nzc1MmZjMmZiMS4u
ZmZiNzZmZjk1NzYzYjY2YzAyODRhZmU2NzVkY2M3NGYxNjZiZTZlNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgSlNDZWxs
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBjZWxsLT5KU0NlbGw6On5KU0NlbGwoKTsKIH0K
IAotYm9vbCBKU0NlbGw6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmc3RyaW5n
VmFsdWUpIGNvbnN0Citib29sIEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
aW5nJiBzdHJpbmdWYWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIWlzU3RyaW5nKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTQ2LDkgKzQ2LDkgQEAgYm9vbCBKU0NlbGw6OmdldFN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmc3RyaW5nVmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVVTdHJpbmcgSlNDZWxsOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAorU3RyaW5nIEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAg
ICByZXR1cm4gaXNTdHJpbmcoKSA/IHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcykt
PnZhbHVlKGV4ZWMpIDogVVN0cmluZygpOworICAgIHJldHVybiBpc1N0cmluZygpID8gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dmFsdWUoZXhlYykgOiBTdHJpbmcoKTsKIH0K
IAogSlNPYmplY3QqIEpTQ2VsbDo6Z2V0T2JqZWN0KCkKQEAgLTE3OCwxMCArMTc4LDEwIEBAIHZv
aWQgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVVT
dHJpbmcgSlNDZWxsOjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKQorU3RyaW5nIEpTQ2VsbDo6
Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVVN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogY29uc3Qg
Y2hhciogSlNDZWxsOjpjbGFzc05hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAppbmRleCAxMzBmOTcwNmQ1ZTZlZDliMmQwMTJlOWRmOGE5MTE4Y2U5NzU4MGQ4Li5lZjA2
YjFlY2ZiZDcxMmE3MzQwMjU1OTRiYzNlOGJhODRhZjBhNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaApAQCAtODksOCArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgY29uc3QgY2hhciogY2xhc3NOYW1lKCk7CiAKICAgICAgICAgLy8gRXh0cmFjdGluZyB0
aGUgdmFsdWUuCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBV
U3RyaW5nIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBp
ZiBub3QgYSBzdHJpbmcKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRTdHJpbmco
RXhlY1N0YXRlKiwgU3RyaW5nJikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBh
IHN0cmluZwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogZ2V0T2JqZWN0KCk7
IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICBjb25zdCBKU09iamVjdCogZ2V0T2Jq
ZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICAKQEAgLTEyNiw3
ICsxMjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gY2FsbCB0aGlzIGZ1bmN0aW9u
LCBub3QgaXRzIHNsb3dlciB2aXJ0dWFsIGNvdW50ZXJwYXJ0LiAoRm9yIGludGVnZXIKICAgICAg
ICAgLy8gcHJvcGVydHkgbmFtZXMsIHdlIHdhbnQgYSBzaW1pbGFyIGludGVyZmFjZSB3aXRoIGFw
cHJvcHJpYXRlIG9wdGltaXphdGlvbnMuKQogICAgICAgICBib29sIGZhc3RHZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAg
SlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwor
ICAgICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmKTsKIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCiAgICAg
ICAgIHsKQEAgLTE2MSw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSk7CiAgICAgICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VS
VCB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHN0YXRpYyBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0YXRpYyBV
U3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOworICAgICAgICBzdGF0aWMgU3RyaW5n
IGNsYXNzTmFtZShjb25zdCBKU09iamVjdCopOwogICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbnN0
YW5jZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJv
cGVydHkpOwogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBwdXRE
aXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpAQCAtMjIzLDE3ICsyMjMsMTcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNPYmplY3QoKTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBVU3RyaW5nJiBzKSBjb25zdAorICAgIGlubGluZSBib29sIEpTVmFsdWU6OmdldFN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyYgcykgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+Z2V0U3RyaW5nKGV4ZWMsIHMpOwogICAgIH0KIAotICAg
IGlubGluZSBVU3RyaW5nIEpTVmFsdWU6OmdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CisgICAgaW5saW5lIFN0cmluZyBKU1ZhbHVlOjpnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldFN0cmlu
ZyhleGVjKSA6IFVTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCkt
PmdldFN0cmluZyhleGVjKSA6IFN0cmluZygpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBCYXNlPiBVU3RyaW5nIEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6Z2V0U3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZT4g
U3RyaW5nIEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6Z2V0U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBqc1ZhbHVlKCkuZ2V0U3RyaW5n
KGV4ZWMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0ZU1hdGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0
aC5jcHAKaW5kZXggZmNmMWM0MzQ1ZDFiODk2N2IyODVkODg1YjdhNmY2NWZkNTU5YjQ3Yy4uZjkz
NDM5MTYwOGZkZTVlMWY4MWU3ZGY0YmFiNDkwZDljNDQzZWZiMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCBkb3Vi
bGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IGNoYXIqIGRhdGVTdAogICAgIHJldHVybiBtcyAtIChvZmZzZXQgKiBXVEY6Om1zUGVy
TWludXRlKTsKIH0KIAotZG91YmxlIHBhcnNlRGF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVT
dHJpbmcmIGRhdGUpCitkb3VibGUgcGFyc2VEYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBkYXRlKQogewogICAgIGlmIChkYXRlID09IGV4ZWMtPmdsb2JhbERhdGEoKS5jYWNoZWRE
YXRlU3RyaW5nKQogICAgICAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhY2hlZERhdGVT
dHJpbmdWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0ZU1hdGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguaApp
bmRleCBjN2ZiNWE5NzVkMTcyYjAxNzI5MDQxMGY5ZmFjNGY3OTlhYmE1MTllLi5hNmRkOTZmOTll
OWIwM2NhMzAzNTRjNTAwMTVlMTgxN2UyYzZiN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRlTWF0aC5oCkBAIC00OSwxMyArNDksMTIgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBFeGVjU3RhdGU7Ci1jbGFzcyBVU3RyaW5nOwogCiB2b2lkIG1zVG9HcmVnb3Jp
YW5EYXRlVGltZShFeGVjU3RhdGUqLCBkb3VibGUsIGJvb2wgb3V0cHV0SXNVVEMsIEdyZWdvcmlh
bkRhdGVUaW1lJik7CiBkb3VibGUgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKEV4ZWNTdGF0ZSosIGNv
bnN0IEdyZWdvcmlhbkRhdGVUaW1lJiwgZG91YmxlLCBib29sIGlucHV0SXNVVEMpOwogZG91Ymxl
IGdldFVUQ09mZnNldChFeGVjU3RhdGUqKTsKIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1p
bmF0ZWRDaGFyYWN0ZXJzKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwotZG91
YmxlIHBhcnNlRGF0ZShFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Citkb3VibGUgcGFyc2VE
YXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFdURjo6U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4
IDY5NGQ4MzhlZWRiODgwOGI4M2MxYTAzMjVhNmFjMDUzMDMzNzRlZjUuLjgwODJmNGQ0ZjcyMDQw
NTgyYWZjM2I5YzdmNDk3YzAxNmQ4ZWRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6
aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdAogICAgIHJldHVybiBpc0hvc3RGdW5jdGlv
bigpOwogfQogCi1KU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBVU3RyaW5n
JiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCitKU0Z1bmN0aW9uKiBKU0Z1bmN0
aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1
Y3RvcikKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlOwogI2lmICFFTkFCTEUo
SklUKQpAQCAtOTIsNyArOTIsNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYQogewogfQogCi12
b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSkKK3Zv
aWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBOYXRpdmVFeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICBBU1NFUlQo
aW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMTI1LDI5ICsxMjUsMjkgQEAgU3RydWN0dXJlKiBKU0Z1
bmN0aW9uOjpjYWNoZUluaGVyaXRvcklEKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gbV9j
YWNoZWRJbmhlcml0b3JJRC5nZXQoKTsKIH0KIAotY29uc3QgVVN0cmluZyYgSlNGdW5jdGlvbjo6
bmFtZShFeGVjU3RhdGUqIGV4ZWMpCitjb25zdCBTdHJpbmcmIEpTRnVuY3Rpb246Om5hbWUoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiBhc1N0cmluZyhnZXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSkpLT50cnlH
ZXRWYWx1ZSgpOwogfQogCi1jb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSogZXhlYykKK2NvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpkaXNwbGF5TmFtZShFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5
TmFtZSk7CiAgICAgCiAgICAgaWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmcoZGlzcGxheU5h
bWUpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlHZXRWYWx1ZSgp
OwogICAgIAotICAgIHJldHVybiBVU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwogfQog
Ci1jb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCitjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1l
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBjb25zdCBVU3RyaW5nIGV4cGxpY2l0TmFtZSA9IGRp
c3BsYXlOYW1lKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBleHBsaWNpdE5hbWUgPSBkaXNwbGF5
TmFtZShleGVjKTsKICAgICAKICAgICBpZiAoIWV4cGxpY2l0TmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCi0gICAgY29uc3QgVVN0cmluZyBhY3R1YWxO
YW1lID0gbmFtZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhl
Yyk7CiAgICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gYWN0dWFsTmFtZTsKICAgICAKQEAgLTQ1NSw3ICs0NTUsNyBAQCBDb25z
dHJ1Y3RUeXBlIEpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsLCBDb25z
dHJ1Y3REYXRhJiBjb25zdHJ1YwogfQogICAgIAogCi1VU3RyaW5nIGdldENhbGN1bGF0ZWREaXNw
bGF5TmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmplY3QqIG9iamVjdCkKK1N0cmluZyBn
ZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBv
YmplY3QpCiB7CiAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4ob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uLT5jYWxjdWxhdGVk
RGlzcGxheU5hbWUoY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAppbmRleCA1NmZhZjAwZGU1ZWI4YjA0Y2QxMTg1MzE0MWE1MmYxMjlkNWE5Yjdh
Li5jZGUwYzBiNGQ1MTE1MTJkNmRiNmFjZmE3MmIyYzRlOTg4NWY2ODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKENhbGxG
cmFtZSosIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldENhbGN1
bGF0ZWREaXNwbGF5TmFtZShDYWxsRnJhbWUqLCBKU09iamVjdCopOwogICAgIAogICAgIGNsYXNz
IEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9u
LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0
b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBj
YWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CiAKICAgICAgICAgc3RhdGljIEpTRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCiAgICAgICAgIHsKQEAgLTY1LDkgKzY1LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcmIG5h
bWUoRXhlY1N0YXRlKik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcg
ZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRl
ZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25z
dCBTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNv
bnN0IFN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgY29uc3QgU3RyaW5n
IGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKIAogICAgICAgICBTY29wZUNoYWlu
Tm9kZSogc2NvcGUoKQogICAgICAgICB7CkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUq
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICAKLSAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50
IGxlbmd0aCwgY29uc3QgVVN0cmluZyYgbmFtZSk7CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIAogICAgICAgICBTdHJ1Y3R1cmUqIGNh
Y2hlSW5oZXJpdG9ySUQoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCA4OTNkYmJhZTU5OThmZWE3NTg4ODlkMzA1ODU4
Zjg0YTZiNzNhM2Q0Li4zZThkNDQ5MWQ2OWQ3NDgxZTMzMzQ5NTRhM2Y1M2I1Mjk1MTZjYjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAg
LTM5MCw3ICszOTAsNyBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6cmVzZXREYXRlQ2FjaGUoKQogewog
ICAgIGNhY2hlZFVUQ09mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRf
TmFOKCk7CiAgICAgZHN0T2Zmc2V0Q2FjaGUucmVzZXQoKTsKLSAgICBjYWNoZWREYXRlU3RyaW5n
ID0gVVN0cmluZygpOworICAgIGNhY2hlZERhdGVTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBjYWNo
ZWREYXRlU3RyaW5nVmFsdWUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpOwogICAgIGRhdGVJbnN0YW5jZUNhY2hlLnJlc2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IGIxYjdhZDg3MDYyYzgxYzM4ZmNl
ZGVhYTY4OWViNGE1MGQyNTU2NTMuLjBkZGMyNGQ4Y2M1NjliMGQ2MWZlYWUxMjEzOWNiYmY5ZTk5
MTI1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
CkBAIC03Niw3ICs3Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFJlZ0V4cENhY2hl
OwogICAgIGNsYXNzIFN0cmluZ2lmaWVyOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKLSAgICBjbGFz
cyBVU3RyaW5nOwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBjbGFzcyBSZWdFeHA7
CiAjZW5kaWYKQEAgLTM2Niw3ICszNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZG91
YmxlIGNhY2hlZFVUQ09mZnNldDsKICAgICAgICAgRFNUT2Zmc2V0Q2FjaGUgZHN0T2Zmc2V0Q2Fj
aGU7CiAgICAgICAgIAotICAgICAgICBVU3RyaW5nIGNhY2hlZERhdGVTdHJpbmc7CisgICAgICAg
IFN0cmluZyBjYWNoZWREYXRlU3RyaW5nOwogICAgICAgICBkb3VibGUgY2FjaGVkRGF0ZVN0cmlu
Z1ZhbHVlOwogCiAgICAgICAgIGludCBtYXhSZWVudHJ5RGVwdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
aW5kZXggZTgwMTdiOTA0M2JlZmM3MzMxNjI0MzdjNjM2YWRiYWUzYzFkMTQ2Ny4uNzQxZjBhYmY0
NDFjNmFmMjI3YTZlYThkZDY5MDczZTM2ZTE4MDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAt
MzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIuaCIKICNpbmNsdWRlICJOb2Rl
cy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgotI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAj
aW5jbHVkZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L1VURjguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0
aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDaGFyVHlwZSogY2hhcmFj
dGVycywgaW50IGxlbmd0aCwgYwogc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciogZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJpY3QpCiB7CiAgICAgSlNTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAKICAgICBpZiAoc3RyLmlz
OEJpdCgpKQogICAgICAgICByZXR1cm4gZGVjb2RlKGV4ZWMsIHN0ci5jaGFyYWN0ZXJzOCgpLCBz
dHIubGVuZ3RoKCksIGRvTm90VW5lc2NhcGUsIHN0cmljdCk7CkBAIC0yMzIsNyArMjMyLDcgQEAg
ZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgsIGludCBy
YWRpeCkKIC8vIEVTNS4xIDE1LjEuMi4yCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBB
TFdBWVNfSU5MSU5FCi1zdGF0aWMgZG91YmxlIHBhcnNlSW50KGNvbnN0IFVTdHJpbmcmIHMsIGNv
bnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgcmFkaXgpCitzdGF0aWMgZG91YmxlIHBhcnNlSW50KGNv
bnN0IFN0cmluZyYgcywgY29uc3QgQ2hhclR5cGUqIGRhdGEsIGludCByYWRpeCkKIHsKICAgICAv
LyAxLiBMZXQgaW5wdXRTdHJpbmcgYmUgVG9TdHJpbmcoc3RyaW5nKS4KICAgICAvLyAyLiBMZXQg
UyBiZSBhIG5ld2x5IGNyZWF0ZWQgc3Vic3RyaW5nIG9mIGlucHV0U3RyaW5nIGNvbnNpc3Rpbmcg
b2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzIG5vdCBhCkBAIC0zMTMsNyArMzEzLDcgQEAg
c3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBjb25zdCBDaGFyVHlwZSog
ZGF0YSwgaW50IHJhZGl4KQogICAgIHJldHVybiBzaWduICogbnVtYmVyOwogfQogCi1zdGF0aWMg
ZG91YmxlIHBhcnNlSW50KGNvbnN0IFVTdHJpbmcmIHMsIGludCByYWRpeCkKK3N0YXRpYyBkb3Vi
bGUgcGFyc2VJbnQoY29uc3QgU3RyaW5nJiBzLCBpbnQgcmFkaXgpCiB7CiAgICAgaWYgKHMuaXM4
Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUludChzLCBzLmNoYXJhY3RlcnM4KCksIHJhZGl4
KTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgZG91YmxlIHRvRG91YmxlKGNvbnN0IENoYXJU
eXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzaXplKQogfQogCiAvLyBTZWUgZWNtYS0yNjIgOS4z
LjEKLWRvdWJsZSBqc1RvTnVtYmVyKGNvbnN0IFVTdHJpbmcmIHMpCitkb3VibGUganNUb051bWJl
cihjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHMubGVuZ3RoKCk7CiAK
QEAgLTQ1MCw3ICs0NTAsNyBAQCBkb3VibGUganNUb051bWJlcihjb25zdCBVU3RyaW5nJiBzKQog
ICAgIHJldHVybiB0b0RvdWJsZShzLmNoYXJhY3RlcnMxNigpLCBzaXplKTsKIH0KIAotc3RhdGlj
IGRvdWJsZSBwYXJzZUZsb2F0KGNvbnN0IFVTdHJpbmcmIHMpCitzdGF0aWMgZG91YmxlIHBhcnNl
RmxvYXQoY29uc3QgU3RyaW5nJiBzKQogewogICAgIHVuc2lnbmVkIHNpemUgPSBzLmxlbmd0aCgp
OwogCkBAIC01MDUsNyArNTA1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCF4LmlzU3RyaW5nKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoeCk7CiAKLSAgICBVU3RyaW5nIHMgPSB4LnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHgudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogCiAgICAgaWYgKHMuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0ZXJhbFBh
cnNlcjxMQ2hhcj4gcHJlcGFyc2VyKGV4ZWMsIHMuY2hhcmFjdGVyczgoKSwgcy5sZW5ndGgoKSwg
Tm9uU3RyaWN0SlNPTik7CkBAIC01NDgsNyArNTQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAg
IC8vIElmIFRvU3RyaW5nIHRocm93cywgd2Ugc2hvdWxkbid0IGNhbGwgVG9JbnQzMi4KLSAgICBV
U3RyaW5nIHMgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IHMgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCkBAIC02MTUsNyArNjE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgIiorLS4vQF8iOwogCiAg
ICAgSlNTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHN0ciA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoc3Ry
LmlzOEJpdCgpKSB7CiAgICAgICAgIGNvbnN0IExDaGFyKiBjID0gc3RyLmNoYXJhY3RlcnM4KCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBzdHIubGVuZ3RoKCk7IGsrKywgYysr
KSB7CkBAIC02NTMsOCArNjUzLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IFN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaW50IGsgPSAwOwogICAgIGludCBsZW4gPSBzdHIubGVuZ3RoKCk7CiAgICAgCkBA
IC02OTksNyArNjk5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
VW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBidWlsZGVyLnRvVVN0cmluZygpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBidWlsZGVyLnRvU3RyaW5n
KCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggODgzM2JmNmQwY2Yw
MzM2YzQxZWU0MmI2NWI0YmVlZjc2ZjdkNmNkYS4uNzU3YzlkY2FjNjZkNDEwYTc2NGI2ODUwMWIz
YTBjYzAwZTdhMTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIEFMV0FZU19JTkxJTkUgZG91YmxlIHBhcnNlSW50T3ZlcmZsb3coY29uc3Qg
Y2hhciogcywgaW50IGxlbmd0aCwgaW50IHJhZGl4KSB7IHJldHVybiBwYXJzZUludE92ZXJmbG93
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoLCByYWRpeCk7IH0KICAg
ICBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCBy
YWRpeCk7CiAgICAgYm9vbCBpc1N0cldoaXRlU3BhY2UoVUNoYXIpOwotICAgIGRvdWJsZSBqc1Rv
TnVtYmVyKGNvbnN0IFVTdHJpbmcmIHMpOworICAgIGRvdWJsZSBqc1RvTnVtYmVyKGNvbnN0IFdU
Rjo6U3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGJhODg3ZjNiNGJhNmZhZTA2MGRiYWM4
NzRlYmY1MjVjZjNjZDQxNzQuLjljMDE4OTU3NWUwMzlmYjYwNjFjMzk1NmI5ZDE1MGQ5NWMwMGQ2
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBA
IC0zNiw5ICszNiw4IEBACiAjaW5jbHVkZSAiTG9jYWxTY29wZS5oIgogI2luY2x1ZGUgIkxvb2t1
cC5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCi0jaW5jbHVkZSAiVVN0cmluZ0J1
aWxkZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTk0LDcgKzkzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBKU09i
amVjdCogb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3QuZ2V0KCk7IH0KIAotICAgICAg
ICBib29sIGFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYsIFVTdHJpbmdCdWlsZGVyJik7
CisgICAgICAgIGJvb2wgYXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiwgU3RyaW5nQnVp
bGRlciYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTG9jYWw8SlNPYmplY3Q+IG1fb2JqZWN0
OwpAQCAtMTA3LDE3ICsxMDYsMTcgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBIb2xk
ZXI7CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRRdW90ZWRTdHJpbmcoVVN0cmluZ0J1aWxkZXIm
LCBjb25zdCBVU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgYXBwZW5kUXVvdGVkU3RyaW5nKFN0
cmluZ0J1aWxkZXImLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIEpTVmFsdWUgdG9KU09OKEpTVmFs
dWUsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOwogCiAgICAgZW51bSBTdHJp
bmdpZnlSZXN1bHQgeyBTdHJpbmdpZnlGYWlsZWQsIFN0cmluZ2lmeVN1Y2NlZWRlZCwgU3RyaW5n
aWZ5RmFpbGVkRHVlVG9VbmRlZmluZWRWYWx1ZSB9OwotICAgIFN0cmluZ2lmeVJlc3VsdCBhcHBl
bmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJiwgSlNWYWx1ZSwgSlNPYmplY3QqIGhv
bGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJik7CisgICAgU3RyaW5naWZ5
UmVzdWx0IGFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYsIEpTVmFsdWUsIEpT
T2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOwogCiAg
ICAgYm9vbCB3aWxsSW5kZW50KCkgY29uc3Q7CiAgICAgdm9pZCBpbmRlbnQoKTsKICAgICB2b2lk
IHVuaW5kZW50KCk7Ci0gICAgdm9pZCBzdGFydE5ld0xpbmUoVVN0cmluZ0J1aWxkZXImKSBjb25z
dDsKKyAgICB2b2lkIHN0YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJikgY29uc3Q7CiAKICAgICBF
eGVjU3RhdGUqIGNvbnN0IG1fZXhlYzsKICAgICBjb25zdCBMb2NhbDxVbmtub3duPiBtX3JlcGxh
Y2VyOwpAQCAtMTI1LDExICsxMjQsMTEgQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzOwogICAgIENhbGxUeXBlIG1fcmVwbGFjZXJD
YWxsVHlwZTsKICAgICBDYWxsRGF0YSBtX3JlcGxhY2VyQ2FsbERhdGE7Ci0gICAgY29uc3QgVVN0
cmluZyBtX2dhcDsKKyAgICBjb25zdCBTdHJpbmcgbV9nYXA7CiAKICAgICBWZWN0b3I8SG9sZGVy
LCAxNj4gbV9ob2xkZXJTdGFjazsKLSAgICBVU3RyaW5nIG1fcmVwZWF0ZWRHYXA7Ci0gICAgVVN0
cmluZyBtX2luZGVudDsKKyAgICBTdHJpbmcgbV9yZXBlYXRlZEdhcDsKKyAgICBTdHJpbmcgbV9p
bmRlbnQ7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaGVscGVyIGZ1
bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ4LDcgKzE0Nyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB1bndyYXBCb3hlZFByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgaW5s
aW5lIFVTdHJpbmcgZ2FwKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzcGFjZSkKK3N0YXRpYyBp
bmxpbmUgU3RyaW5nIGdhcChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc3BhY2UpCiB7CiAgICAg
Y29uc3QgdW5zaWduZWQgbWF4R2FwTGVuZ3RoID0gMTA7CiAgICAgc3BhY2UgPSB1bndyYXBCb3hl
ZFByaW1pdGl2ZShleGVjLCBzcGFjZSk7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBzdGF0aWMgaW5s
aW5lIFVTdHJpbmcgZ2FwKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzcGFjZSkKICAgICAgICAg
VUNoYXIgc3BhY2VzW21heEdhcExlbmd0aF07CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkKICAgICAgICAgICAgIHNwYWNlc1tpXSA9ICcgJzsKLSAgICAgICAgcmV0dXJu
IFVTdHJpbmcoc3BhY2VzLCBjb3VudCk7CisgICAgICAgIHJldHVybiBTdHJpbmcoc3BhY2VzLCBj
b3VudCk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHNwYWNlIHZhbHVlIGlzIGEgc3RyaW5nLCB1
c2UgaXQgYXMgdGhlIGdhcCBzdHJpbmcsIG90aGVyd2lzZSB1c2Ugbm8gZ2FwIHN0cmluZy4KLSAg
ICBVU3RyaW5nIHNwYWNlcyA9IHNwYWNlLmdldFN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3Bh
Y2VzID0gc3BhY2UuZ2V0U3RyaW5nKGV4ZWMpOwogICAgIGlmIChzcGFjZXMubGVuZ3RoKCkgPiBt
YXhHYXBMZW5ndGgpIHsKICAgICAgICAgc3BhY2VzID0gc3BhY2VzLnN1YnN0cmluZ1NoYXJpbmdJ
bXBsKDAsIG1heEdhcExlbmd0aCk7CiAgICAgfQpAQCAtMjQ1LDE3ICsyNDQsMTcgQEAgTG9jYWw8
VW5rbm93bj4gU3RyaW5naWZpZXI6OnN0cmluZ2lmeShIYW5kbGU8VW5rbm93bj4gdmFsdWUpCiAg
ICAgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsIGVtcHR5UHJvcGVydHlOYW1lKG1fZXhlYy0+
Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllcik7CiAgICAgb2JqZWN0
LT5wdXREaXJlY3QobV9leGVjLT5nbG9iYWxEYXRhKCksIG1fZXhlYy0+Z2xvYmFsRGF0YSgpLnBy
b3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllciwgdmFsdWUuZ2V0KCkpOwogCi0gICAgVVN0cmlu
Z0J1aWxkZXIgcmVzdWx0OworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGlmIChhcHBl
bmRTdHJpbmdpZmllZFZhbHVlKHJlc3VsdCwgdmFsdWUuZ2V0KCksIG9iamVjdCwgZW1wdHlQcm9w
ZXJ0eU5hbWUpICE9IFN0cmluZ2lmeVN1Y2NlZWRlZCkKICAgICAgICAgcmV0dXJuIExvY2FsPFVu
a25vd24+KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAobV9l
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIExvY2FsPFVua25vd24+KG1fZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSk7CiAKLSAgICByZXR1cm4gTG9jYWw8VW5rbm93bj4o
bV9leGVjLT5nbG9iYWxEYXRhKCksIGpzU3RyaW5nKG1fZXhlYywgcmVzdWx0LnRvVVN0cmluZygp
KSk7CisgICAgcmV0dXJuIExvY2FsPFVua25vd24+KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc1N0
cmluZyhtX2V4ZWMsIHJlc3VsdC50b1N0cmluZygpKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyVHlwZT4KLXN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvVVN0cmluZ0J1aWxkZXIoVVN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoKQor
c3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGNvbnN0IENoYXJUeXBlKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gaTsKQEAgLTMw
MywxNiArMzAyLDE2IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvVVN0cmluZ0J1aWxkZXIo
VVN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENoYXJUeXBlCiAgICAgfQogfQogICAgIAot
dm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU3RyaW5naWZpZXI6OmFwcGVuZFF1b3Rl
ZFN0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIGludCBsZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKIAogICAgIGJ1aWxkZXIuYXBwZW5kKCci
Jyk7CiAKICAgICBpZiAodmFsdWUuaXM4Qml0KCkpCi0gICAgICAgIGFwcGVuZFN0cmluZ1RvVVN0
cmluZ0J1aWxkZXI8TENoYXI+KGJ1aWxkZXIsIHZhbHVlLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7
CisgICAgICAgIGFwcGVuZFN0cmluZ1RvU3RyaW5nQnVpbGRlcjxMQ2hhcj4oYnVpbGRlciwgdmFs
dWUuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKICAgICBlbHNlCi0gICAgICAgIGFwcGVuZFN0cmlu
Z1RvVVN0cmluZ0J1aWxkZXI8VUNoYXI+KGJ1aWxkZXIsIHZhbHVlLmNoYXJhY3RlcnMxNigpLCBs
ZW5ndGgpOworICAgICAgICBhcHBlbmRTdHJpbmdUb1N0cmluZ0J1aWxkZXI8VUNoYXI+KGJ1aWxk
ZXIsIHZhbHVlLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogCiAgICAgYnVpbGRlci5hcHBlbmQo
JyInKTsKIH0KQEAgLTM0MSw3ICszNDAsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6
dG9KU09OKEpTVmFsdWUgdmFsdWUsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQwogICAg
IHJldHVybiBjYWxsKG1fZXhlYywgb2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHZhbHVlLCBh
cmdzKTsKIH0KIAotU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBw
ZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgSlNWYWx1ZSB2YWx1
ZSwgSlNPYmplY3QqIGhvbGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJiBw
cm9wZXJ0eU5hbWUpCitTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjph
cHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIEpTVmFsdWUgdmFs
dWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCYg
cHJvcGVydHlOYW1lKQogewogICAgIC8vIENhbGwgdGhlIHRvSlNPTiBmdW5jdGlvbi4KICAgICB2
YWx1ZSA9IHRvSlNPTih2YWx1ZSwgcHJvcGVydHlOYW1lKTsKQEAgLTM3Niw3ICszNzUsNyBAQCBT
dHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmll
ZFZhbHVlKFVTdHJpbmdCdWlsZGVyJgogICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVk
OwogICAgIH0KIAotICAgIFVTdHJpbmcgc3RyaW5nVmFsdWU7CisgICAgU3RyaW5nIHN0cmluZ1Zh
bHVlOwogICAgIGlmICh2YWx1ZS5nZXRTdHJpbmcobV9leGVjLCBzdHJpbmdWYWx1ZSkpIHsKICAg
ICAgICAgYXBwZW5kUXVvdGVkU3RyaW5nKGJ1aWxkZXIsIHN0cmluZ1ZhbHVlKTsKICAgICAgICAg
cmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKQEAgLTM4Nyw3ICszODYsNyBAQCBTdHJpbmdpZmll
cjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVT
dHJpbmdCdWlsZGVyJgogICAgICAgICBpZiAoIWlzZmluaXRlKG51bWJlcikpCiAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgibnVsbCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChVU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQobnVtYmVyKSk7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlw
dChudW1iZXIpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRlZDsKICAgICB9CiAK
QEAgLTQ0OCw3ICs0NDcsNyBAQCBpbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6aW5kZW50KCkKICAg
ICAvLyBVc2UgYSBzaW5nbGUgc2hhcmVkIHN0cmluZywgbV9yZXBlYXRlZEdhcCwgc28gd2UgZG9u
J3Qga2VlcCBhbGxvY2F0aW5nIG5ldyBvbmVzIGFzIHdlIGluZGVudCBhbmQgdW5pbmRlbnQuCiAg
ICAgdW5zaWduZWQgbmV3U2l6ZSA9IG1faW5kZW50Lmxlbmd0aCgpICsgbV9nYXAubGVuZ3RoKCk7
CiAgICAgaWYgKG5ld1NpemUgPiBtX3JlcGVhdGVkR2FwLmxlbmd0aCgpKQotICAgICAgICBtX3Jl
cGVhdGVkR2FwID0gbWFrZVVTdHJpbmcobV9yZXBlYXRlZEdhcCwgbV9nYXApOworICAgICAgICBt
X3JlcGVhdGVkR2FwID0gbWFrZVN0cmluZyhtX3JlcGVhdGVkR2FwLCBtX2dhcCk7CiAgICAgQVNT
RVJUKG5ld1NpemUgPD0gbV9yZXBlYXRlZEdhcC5sZW5ndGgoKSk7CiAgICAgbV9pbmRlbnQgPSBt
X3JlcGVhdGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG5ld1NpemUpOwogfQpAQCAtNDU5
LDcgKzQ1OCw3IEBAIGlubGluZSB2b2lkIFN0cmluZ2lmaWVyOjp1bmluZGVudCgpCiAgICAgbV9p
bmRlbnQgPSBtX3JlcGVhdGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG1faW5kZW50Lmxl
bmd0aCgpIC0gbV9nYXAubGVuZ3RoKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6
c3RhcnROZXdMaW5lKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAoraW5saW5lIHZvaWQg
U3RyaW5naWZpZXI6OnN0YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAog
ewogICAgIGlmIChtX2dhcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3Nyw3ICs0
NzYsNyBAQCBpbmxpbmUgU3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVjdCkKIHsKIH0KIAotYm9vbCBTdHJpbmdpZmllcjo6
SG9sZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBVU3Ry
aW5nQnVpbGRlciYgYnVpbGRlcikKK2Jvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4
dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpbGRlciYgYnVpbGRl
cikKIHsKICAgICBBU1NFUlQobV9pbmRleCA8PSBtX3NpemUpOwogCkBAIC03MDQsNyArNzAzLDcg
QEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQXJyYXlFbmRWaXNpdE1lbWJlcjogewog
ICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXJyYXlTdGFjay5wZWVrKCk7Ci0gICAg
ICAgICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIoYXJyYXksIGpz
U3RyaW5nKG1fZXhlYywgVVN0cmluZzo6bnVtYmVyKGluZGV4U3RhY2subGFzdCgpKSksIG91dFZh
bHVlKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZl
cihhcnJheSwganNTdHJpbmcobV9leGVjLCBTdHJpbmc6Om51bWJlcihpbmRleFN0YWNrLmxhc3Qo
KSkpLCBvdXRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRl
ZmluZWQoKSkKICAgICAgICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmRlbGV0
ZVByb3BlcnR5QnlJbmRleChhcnJheSwgbV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQpAQCAtODExLDcgKzgxMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCAiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFy
YW1ldGVyIikpOwotICAgIFVTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIApAQCAt
ODUyLDEyICs4NTEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9G
dW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFN0cmluZ2lmaWVyKGV4ZWMsIHJlcGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQo
KSk7CiB9CiAKLVVTdHJpbmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGluZGVudCkKK1N0cmluZyBKU09OU3RyaW5naWZ5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgaW5kZW50KQogewogICAgIExvY2FsU2NvcGUg
c2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICBMb2NhbDxVbmtub3duPiByZXN1bHQgPSBT
dHJpbmdpZmllcihleGVjLCBMb2NhbDxVbmtub3duPihleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVs
bCgpKSwgTG9jYWw8VW5rbm93bj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcihpbmRlbnQp
KSkuc3RyaW5naWZ5KExvY2FsPFVua25vd24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUpKTsK
ICAgICBpZiAocmVzdWx0LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBVU3Ry
aW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gcmVzdWx0LmdldFN0
cmluZyhleGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVj
dC5oCmluZGV4IDNiODY0NzcxNGU5YmY0MzFmYjdiOGQxYjdlMDUwYzQwNmI0NmZkNjUuLmI1Mzdi
OTE0NDAyMGE5NDBjOGU5N2Y1OTE3Njg5ZTIzYjBhNDdmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICB9OwogCi0gICAgVVN0cmluZyBKU09OU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgaW5kZW50KTsKKyAgICBTdHJpbmcgSlNPTlN0cmlu
Z2lmeShFeGVjU3RhdGUqLCBKU1ZhbHVlLCB1bnNpZ25lZCBpbmRlbnQpOwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmlu
ZGV4IGM0MGM2MjVlMTY5M2FiNzZkNmEzY2FhY2JjMDliMGRkMGVhOGQ1ZDkuLjMyNzViMjIyYjVj
ZWZmYjgwMDNhMDhjMjdlNzk5MmQwYWYyNTMwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEpTRmluYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICNl
bmRpZgogfQogCi1VU3RyaW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqIG9i
amVjdCkKK1N0cmluZyBKU09iamVjdDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBpbmZvID0gb2JqZWN0LT5jbGFzc0luZm8oKTsKICAg
ICBBU1NFUlQoaW5mbyk7CkBAIC04MTgsNyArODE4LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggOWUxNDQ1ZTY5Y2Q0
ZTFhZjVlNzU0ODRkM2M0NjUwZDFlMDIyYzIwYi4uZmYzZmIyYTYyYThmNjk1ZTE0OWIyMTcyNzNm
NzU0MDczMTE2NmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0cnVjdHVyZTsK
ICAgICBzdHJ1Y3QgSGFzaFRhYmxlOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJik7CiAgICAgZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogCiAgICAgLy8gRUNNQSAyNjItMyA4LjYuMQpAQCAt
OTksNyArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpT
T2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgY2xhc3NO
YW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUoKSBjb25z
dDsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmZh
c3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIC8vIGlk
ZW50aWZpZXIuIFRoZSBmaXJzdCB0aW1lIHdlIHBlcmZvcm0gYSBwcm9wZXJ0eSBhY2Nlc3Mgd2l0
aCBhIGdpdmVuIHN0cmluZywgdHJ5CiAvLyBwZXJmb3JtaW5nIHRoZSBwcm9wZXJ0eSBtYXAgbG9v
a3VwIHdpdGhvdXQgZm9ybWluZyBhbiBpZGVudGlmaWVyLiBXZSBkZXRlY3QgdGhpcwogLy8gY2Fz
ZSBieSBjaGVja2luZyB3aGV0aGVyIHRoZSBoYXNoIGhhcyB5ZXQgYmVlbiBzZXQgZm9yIHRoaXMg
c3RyaW5nLgotQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbmFtZSkKK0FMV0FZU19JTkxJTkUgSlNW
YWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcygpKSB7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgp
LT5oYXNIYXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApp
bmRleCA0ZWIyYTUyOTc2MmMwZWU2NDZjY2E4YmQyY2Q0YWUxYjgxOTEzODI2Li45NzdmMGQxMDAz
Yzg1YTk4NjEzYzJiODhmNGQzZTUwY2Q4ZWJmYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBKU1JvcGVTdHJp
bmc6OnJlc29sdmVSb3BlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIH0KIAogLy8gT3ZlcnZpZXc6
IFRoZXNlIGZ1bmN0aW9ucyBjb252ZXJ0IGEgSlNTdHJpbmcgZnJvbSBob2xkaW5nIGEgc3RyaW5n
IGluIHJvcGUgZm9ybQotLy8gZG93biB0byBhIHNpbXBsZSBVU3RyaW5nIHJlcHJlc2VudGF0aW9u
LiAgSXQgZG9lcyBzbyBieSBidWlsZGluZyB1cCB0aGUgc3RyaW5nCisvLyBkb3duIHRvIGEgc2lt
cGxlIFN0cmluZyByZXByZXNlbnRhdGlvbi4gSXQgZG9lcyBzbyBieSBidWlsZGluZyB1cCB0aGUg
c3RyaW5nCiAvLyBiYWNrd2FyZHMsIHNpbmNlIHdlIHdhbnQgdG8gYXZvaWQgcmVjdXJzaW9uLCB3
ZSBleHBlY3QgdGhhdCB0aGUgdHJlZSBzdHJ1Y3R1cmUKIC8vIHJlcHJlc2VudGluZyB0aGUgcm9w
ZSBpcyBsaWtlbHkgaW1iYWxhbmNlZCB3aXRoIG1vcmUgbm9kZXMgZG93biB0aGUgbGVmdCBzaWRl
CiAvLyAoc2luY2UgYXBwZW5kaW5nIHRvIHRoZSBzdHJpbmcgaXMgbGlrZWx5IG1vcmUgY29tbW9u
KSAtIGFuZCBhcyBzdWNoIHJlc29sdmluZwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSlNSb3Bl
U3RyaW5nOjpvdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzX21heEludGVybmFsUm9wZUxlbmd0aCAmJiBtX2ZpYmVyc1tpXTsgKytp
KQogICAgICAgICBtX2ZpYmVyc1tpXS5jbGVhcigpOwogICAgIEFTU0VSVChpc1JvcGUoKSk7Ci0g
ICAgQVNTRVJUKG1fdmFsdWUgPT0gVVN0cmluZygpKTsKKyAgICBBU1NFUlQobV92YWx1ZS5pc051
bGwoKSk7CiAgICAgaWYgKGV4ZWMpCiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGU5MTU1
M2FlYjI0OTYwZjhlNzY1OGU2ODA2YTFlOTQ2NTNkZDc1NDIuLmUwMDllY2I4YjFjNWYyNTdjNmMx
ZGIzZDUxZTE2MDI0MmJjNDQzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaApAQCAtMzcsMjcgKzM3LDI3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgSlNTdHJp
bmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlT
dHJpbmcoRXhlY1N0YXRlKik7Ci0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSos
IGNvbnN0IFVTdHJpbmcmKTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwg
c3RyaW5nCi0gICAgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsgLy8gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgcGFzc2VkIG51bGwgc3RyaW5nCisgICAgSlNT
dHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSosIGNvbnN0IFN0cmluZyYpOyAvLyByZXR1cm5z
IGVtcHR5IHN0cmluZyBpZiBwYXNzZWQgbnVsbCBzdHJpbmcKKyAgICBKU1N0cmluZyoganNTdHJp
bmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7IC8vIHJldHVybnMgZW1wdHkgc3RyaW5nIGlm
IHBhc3NlZCBudWxsIHN0cmluZwogCiAgICAgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKEpTR2xvYmFsRGF0YSosIFVDaGFyKTsKICAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoRXhlY1N0YXRlKiwgVUNoYXIpOwotICAgIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJh
Y3RlclN1YnN0cmluZyhFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0
KTsKLSAgICBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgVVN0cmlu
ZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBKU1N0cmluZyoganNT
dWJzdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKKyAgICBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmco
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0KTsKKyAgICBKU1N0cmlu
ZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAK
ICAgICAvLyBOb24tdHJpdmlhbCBzdHJpbmdzIGFyZSB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGxv
bmcuCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBmYXN0ZXIgdGhhbiBqdXN0IGNhbGxpbmcg
anNTdHJpbmcuCi0gICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEq
LCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmlu
ZyhKU0dsb2JhbERhdGEqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBKU1N0cmluZyoganNOb250cml2
aWFsU3RyaW5nKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogICAgIEpTU3RyaW5nKiBqc05v
bnRyaXZpYWxTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOwogICAgIEpTU3RyaW5n
KiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOwogCiAgICAgLy8g
U2hvdWxkIGJlIHVzZWQgZm9yIHN0cmluZ3MgdGhhdCBhcmUgb3duZWQgYnkgYW4gb2JqZWN0IHRo
YXQgd2lsbAogICAgIC8vIGxpa2VseSBvdXRsaXZlIHRoZSBKU1ZhbHVlIHRoaXMgbWFrZXMsIHN1
Y2ggYXMgdGhlIHBhcnNlIHRyZWUgb3IgYQotICAgIC8vIERPTSBvYmplY3QgdGhhdCBjb250YWlu
cyBhIFVTdHJpbmcKLSAgICBKU1N0cmluZyoganNPd25lZFN0cmluZyhKU0dsb2JhbERhdGEqLCBj
b25zdCBVU3RyaW5nJik7IAotICAgIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSos
IGNvbnN0IFVTdHJpbmcmKTsgCisgICAgLy8gRE9NIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgU3Ry
aW5nCisgICAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiwgY29uc3QgU3Ry
aW5nJik7CisgICAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJik7CiAKICAgICBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihKU0dsb2JhbERhdGEq
KTsKIApAQCAtMTM2LDggKzEzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVl
KEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBjb25zdCBVU3RyaW5nJiB0cnlHZXRWYWx1ZSgp
IGNvbnN0OworICAgICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0Owor
ICAgICAgICBjb25zdCBTdHJpbmcmIHRyeUdldFZhbHVlKCkgY29uc3Q7CiAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAgICAgSlNWYWx1ZSB0b1By
aW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKQEAgLTE5
MCw5ICsxOTAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIElzOEJpdCA9IDF1CiAg
ICAgICAgIH07CiAKLSAgICAgICAgLy8gQSBzdHJpbmcgaXMgcmVwcmVzZW50ZWQgZWl0aGVyIGJ5
IGEgVVN0cmluZyBvciBhIHJvcGUgb2YgZmliZXJzLgorICAgICAgICAvLyBBIHN0cmluZyBpcyBy
ZXByZXNlbnRlZCBlaXRoZXIgYnkgYSBTdHJpbmcgb3IgYSByb3BlIG9mIGZpYmVycy4KICAgICAg
ICAgdW5zaWduZWQgbV9sZW5ndGg7Ci0gICAgICAgIG11dGFibGUgVVN0cmluZyBtX3ZhbHVlOwor
ICAgICAgICBtdXRhYmxlIFN0cmluZyBtX3ZhbHVlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTIwMyw3ICsyMDMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBVU3Ry
aW5nJiBzdHJpbmcoKSB7IEFTU0VSVCghaXNSb3BlKCkpOyByZXR1cm4gbV92YWx1ZTsgfQorICAg
ICAgICBTdHJpbmcmIHN0cmluZygpIHsgQVNTRVJUKCFpc1JvcGUoKSk7IHJldHVybiBtX3ZhbHVl
OyB9CiAKICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiwgSlNTdHJp
bmcqLCBKU1N0cmluZyopOwogICAgICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4
ZWNTdGF0ZSosIEpTU3RyaW5nKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwpA
QCAtMzQwLDEwICszNDAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBpZiAo
YyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFs
RGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCBjKTsK
LSAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIFVTdHJpbmcoJmMs
IDEpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpnbG9iYWxEYXRh
LCBTdHJpbmcoJmMsIDEpLmltcGwoKSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBKU1N0
cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBV
U3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZzZXQpCisgICAgQUxXQVlTX0lOTElORSBKU1N0cmluZyog
anNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHMsIHVuc2lnbmVkIG9mZnNldCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwpAQCAtMzU4LDIzICszNTgsMjMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVChzKTsKICAgICAgICAgQVNTRVJUKHNbMF0pOwog
ICAgICAgICBBU1NFUlQoc1sxXSk7Ci0gICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKCpn
bG9iYWxEYXRhLCBVU3RyaW5nKHMpLmltcGwoKSk7CisgICAgICAgIHJldHVybiBKU1N0cmluZzo6
Y3JlYXRlKCpnbG9iYWxEYXRhLCBTdHJpbmcocykuaW1wbCgpKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IFVTdHJpbmcmIHMpCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJp
bmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgewogICAg
ICAgICBBU1NFUlQocy5sZW5ndGgoKSA+IDEpOwogICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNy
ZWF0ZSgqZ2xvYmFsRGF0YSwgcy5pbXBsKCkpOwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBV
U3RyaW5nJiBKU1N0cmluZzo6dmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAgIGlubGlu
ZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp2YWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUoZXhlYyk7CiAgICAgICAgIHJldHVy
biBtX3ZhbHVlOwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBVU3RyaW5nJiBKU1N0cmluZzo6
dHJ5R2V0VmFsdWUoKSBjb25zdAorICAgIGlubGluZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp0
cnlHZXRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUo
MCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBq
c1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyhleGVjLCBtX3ZhbHVlLCBpKTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgcykKKyAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBzKQogICAgIHsKICAgICAgICAgaW50IHNpemUg
PSBzLmxlbmd0aCgpOwogICAgICAgICBpZiAoIXNpemUpCkBAIC00MTQsNyArNDE0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhnbG9iYWxEYXRhLCBzLT52
YWx1ZShleGVjKSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgIH0KIAotICAgIGlubGluZSBKU1N0cmlu
ZyoganNTdWJzdHJpbmc4KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgaW5saW5lIEpTU3RyaW5n
KiBqc1N1YnN0cmluZzgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG9mZnNldCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwogICAgICAgICBB
U1NFUlQobGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CkBAIC00
MjksNyArNDI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBKU1N0cmluZzo6
Y3JlYXRlSGFzT3RoZXJPd25lcigqZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbDo6Y3JlYXRlOChzLmlt
cGwoKSwgb2Zmc2V0LCBsZW5ndGgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1
YnN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcywgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBBU1NFUlQob2Zmc2V0
IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CiAgICAgICAgIEFTU0VSVChs
ZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpKTsKQEAgLTQ0NCw3ICs0
NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVI
YXNPdGhlck93bmVyKCpnbG9iYWxEYXRhLCBTdHJpbmdJbXBsOjpjcmVhdGUocy5pbXBsKCksIG9m
ZnNldCwgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3Ry
aW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcykKKyAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBTdHJpbmcmIHMpCiAgICAgewogICAgICAgICBpbnQgc2l6ZSA9IHMubGVuZ3RoKCk7CiAgICAg
ICAgIGlmICghc2l6ZSkKQEAgLTQ2MywxMyArNDYzLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
IHsgcmV0dXJuIGpzRW1wdHlTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSk7IH0KLSAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgcykg
eyByZXR1cm4ganNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KKyAgICBpbmxpbmUg
SlNTdHJpbmcqIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJl
dHVybiBqc1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVQ2hhciBjKSB7
IHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBjKTsg
fQotICAgIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmc4KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJu
IGpzU3Vic3RyaW5nOCgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzLCBvZmZzZXQsIGxlbmd0aCk7IH0K
LSAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
VVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGpz
U3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQotICAg
IGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT5nbG9iYWxE
YXRhKCksIHMpOyB9CisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZzgoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KSB7IHJldHVybiBqc1N1YnN0cmluZzgoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcywgb2Zmc2V0LCBs
ZW5ndGgpOyB9CisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIHsg
cmV0dXJuIGpzU3Vic3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3Ro
KTsgfQorICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgcyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzKTsgfQotICAgIGlubGluZSBKU1N0cmluZyog
anNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMpIHsgcmV0dXJu
IGpzT3duZWRTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0gCisgICAgaW5saW5lIEpT
U3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7
IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
ICAgICB7CkBAIC01MjcsMTQgKzUyNywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIHRvU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgaW5saW5lIFVTdHJpbmcg
SlNWYWx1ZTo6dG9VU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICBpbmxpbmUgU3Ry
aW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
U3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLSAgICAgICAgcmV0dXJuIHRvVVN0cmlu
Z1Nsb3dDYXNlKGV4ZWMpOworICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVj
KTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0
cmluZ3RvVVN0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQorICAg
IEFMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25z
dCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQogICAgIHsKICAgICAgICAgSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgICAgICBpZiAodmFs
dWUuaXNJbnQzMigpKQpAQCAtNTUyLDEyICs1NTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSBVU3RyaW5nIEpTVmFsdWU6OnRvVVN0cmluZ0lubGluZShFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZT
dHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlz
U3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0Nl
bGwoKSktPnZhbHVlKGV4ZWMpOwogCi0gICAgICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3Ry
aW5ndG9VU3RyaW5nKCp0aGlzLCBleGVjKTsKKyAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVO
b3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVp
bGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgK
aW5kZXggMWEyYjgxMmYwZjJhZDIwODU3NmMwYzk4Y2FhNzJjNmEyN2E1YjJhNC4uZTc3NzhlNGZi
OTU5YzIxMzE5ZTkxZjA4OTc4YjczMzYyMTM3NDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1
ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC05Miw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9va2F5ICY9
IGJ1ZmZlcjE2LnRyeUFwcGVuZChzdHIsIGxlbik7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgVVN0cmluZyYgc3RyKQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyLmxlbmd0aCgpOwogCkBAIC0xMjks
MTIgKzEyOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBidWZmZXI4LnNocmlua1RvRml0KCk7
CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcjguZGF0YSgpKQogICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm4ganNTdHJp
bmcoZXhlYywgVVN0cmluZzo6YWRvcHQoYnVmZmVyOCkpOworICAgICAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIFN0cmluZzo6YWRvcHQoYnVmZmVyOCkpOwogICAgICAgICB9CiAgICAgICAg
IGJ1ZmZlcjE2LnNocmlua1RvRml0KCk7CiAgICAgICAgIGlmICghYnVmZmVyMTYuZGF0YSgpKQog
ICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKLSAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6OmFkb3B0KGJ1ZmZlcjE2KSk7CisgICAgICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZlcjE2KSk7CiAgICAgfQog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZ0pvaW5lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0pvaW5lci5jcHAKaW5kZXggZWEyNjAyNDNiN2M0NDM3ZjExZjk5NDJlOGE4NjE0MWY2MDBjYTYx
Ny4uMDE3OGNkOGM4ODRjNDM3MzhkMzEyODM2NWI3NzZjODdjMDVjYTQyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcApAQCAtMzUsNyAr
MzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFRoZSBkZXN0aW5hdGlvbiBpcyAxNmJpdHMs
IGF0IGxlYXN0IG9uZSBzdHJpbmcgaXMgMTYgYml0cy4KLXN0YXRpYyBpbmxpbmUgdm9pZCBhcHBl
bmRTdHJpbmdUb0RhdGEoVUNoYXIqJiBkYXRhLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCitzdGF0
aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRhKFVDaGFyKiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRh
KFVDaGFyKiYgZGF0YSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQogfQogCiAvLyBJZiB0aGUgZGVz
dGluYXRpb24gaXMgOGJpdHMsIHdlIGtub3cgZXZlcnkgc3RyaW5nIGhhcyB0byBiZSA4Yml0Lgot
c3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFN0cmluZ1RvRGF0YShMQ2hhciomIGRhdGEsIGNvbnN0
IFVTdHJpbmcmIHN0cmluZykKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTdHJpbmdUb0RhdGEo
TENoYXIqJiBkYXRhLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBlbmRTdHJpbmdUb0RhdGEoTENoYXIqJiBkYXRhLCBjb25zdCBVU3RyaW5nJiBzdHJp
bmcpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5l
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gam9pblN0cmluZ3MoY29uc3QgVmVjdG9yPFVTdHJpbmc+
JiBzdHJpbmdzLCBjb25zdCBVU3RyaW5nJiBzZXBhcmF0b3IsIHVuc2lnbmVkIG91dHB1dExlbmd0
aCkKK3N0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBqb2luU3RyaW5ncyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncywgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIHVuc2ln
bmVkIG91dHB1dExlbmd0aCkKIHsKICAgICBBU1NFUlQob3V0cHV0TGVuZ3RoKTsKIApAQCAtODIs
NyArODIsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gam9pblN0cmlu
Z3MoY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBzdHJpbmdzLAogICAgIGlmICghb3V0cHV0U3RyaW5n
SW1wbCkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4oKTsKIAotICAgIGNv
bnN0IFVTdHJpbmcgZmlyc3RTdHJpbmcgPSBzdHJpbmdzLmZpcnN0KCk7CisgICAgY29uc3QgU3Ry
aW5nIGZpcnN0U3RyaW5nID0gc3RyaW5ncy5maXJzdCgpOwogICAgIGFwcGVuZFN0cmluZ1RvRGF0
YShkYXRhLCBmaXJzdFN0cmluZyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHN0cmlu
Z3Muc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nSm9pbmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZ0pvaW5lci5oCmluZGV4IDQ5Zjg0NmMxZjAyMWJmMDNmZDY5MGZlM2RhYmI1ZTlkNjQ4ZjIw
MmEuLjVjYjg0MWE4MDI2OWRkNTc4ODBiNjM2OTU4ZDg1MDZiZjY1MjJlYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaApAQCAtMjcsOCArMjcs
OCBAQAogI2RlZmluZSBKU1N0cmluZ0pvaW5lcl9oCiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCi0j
aW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDIxICszNywy
MSBAQCBjbGFzcyBFeGVjU3RhdGU7CiAKIGNsYXNzIEpTU3RyaW5nSm9pbmVyIHsKIHB1YmxpYzoK
LSAgICBKU1N0cmluZ0pvaW5lcihjb25zdCBVU3RyaW5nJiBzZXBhcmF0b3IsIHNpemVfdCBzdHJp
bmdDb3VudCk7CisgICAgSlNTdHJpbmdKb2luZXIoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIHNp
emVfdCBzdHJpbmdDb3VudCk7CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJik7Cisg
ICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAgSlNWYWx1ZSBidWlsZChFeGVjU3Rh
dGUqKTsKIAogcHJpdmF0ZToKLSAgICBVU3RyaW5nIG1fc2VwYXJhdG9yOwotICAgIFZlY3RvcjxV
U3RyaW5nPiBtX3N0cmluZ3M7CisgICAgU3RyaW5nIG1fc2VwYXJhdG9yOworICAgIFZlY3RvcjxT
dHJpbmc+IG1fc3RyaW5nczsKIAogICAgIHVuc2lnbmVkIG1fY3VtdWxhdGVkU3RyaW5nc0xlbmd0
aDsKICAgICBib29sIG1faXNWYWxpZDsKICAgICBib29sIG1faXM4Qml0czsKIH07CiAKLWlubGlu
ZSBKU1N0cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoY29uc3QgVVN0cmluZyYgc2VwYXJhdG9y
LCBzaXplX3Qgc3RyaW5nQ291bnQpCitpbmxpbmUgSlNTdHJpbmdKb2luZXI6OkpTU3RyaW5nSm9p
bmVyKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBzaXplX3Qgc3RyaW5nQ291bnQpCiAgICAgOiBt
X3NlcGFyYXRvcihzZXBhcmF0b3IpCiAgICAgLCBtX2N1bXVsYXRlZFN0cmluZ3NMZW5ndGgoMCkK
ICAgICAsIG1faXNWYWxpZCh0cnVlKQpAQCAtNjEsNyArNjEsNyBAQCBpbmxpbmUgSlNTdHJpbmdK
b2luZXI6OkpTU3RyaW5nSm9pbmVyKGNvbnN0IFVTdHJpbmcmIHNlcGFyYXRvciwgc2l6ZV90IHN0
cmluZ0NvdQogICAgIG1faXNWYWxpZCA9IG1fc3RyaW5ncy50cnlSZXNlcnZlQ2FwYWNpdHkoc3Ry
aW5nQ291bnQpOwogfQogCi1pbmxpbmUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kKGNvbnN0
IFVTdHJpbmcmIHN0cikKK2lubGluZSB2b2lkIEpTU3RyaW5nSm9pbmVyOjphcHBlbmQoY29uc3Qg
U3RyaW5nJiBzdHIpCiB7CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKaW5kZXggYzM0NDMxMTc4OWNi
NjY2NmJiYzUzYmRlMGM5ZjFkOWVhMDhmZGJlOC4uMGJlZGFhMzNmMjYyMzAyNzJjMDczOWI3M2Mz
NWZjMDJmZTBmN2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5j
cHAKQEAgLTI4Myw5ICsyODMsOSBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2Fz
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMp
OwogfQogCi1VU3RyaW5nIEpTVmFsdWU6OnRvVVN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKK1N0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvVVN0cmlu
ZygqdGhpcywgZXhlYyk7CisgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmlu
ZygqdGhpcywgZXhlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5oCmluZGV4IDFkODIyMzMyNWI1ZWY2MmRiOWNlNDBhZmU5ODI1
ZDAxMzY5MzFlZTMuLmE4YTQzOGYxMGRmYTI3MmQwYTc1YWI5NGVkOGM4YTE0NWMxZGJlNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKQEAgLTQ0LDcgKzQ0LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lOwogICAgIGNsYXNzIFByb3Bl
cnR5U2xvdDsKICAgICBjbGFzcyBQdXRQcm9wZXJ0eVNsb3Q7Ci0gICAgY2xhc3MgVVN0cmluZzsK
ICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBuYW1lc3BhY2UgREZHIHsKICAgICAgICAgY2xhc3Mg
QXNzZW1ibHlIZWxwZXJzOwpAQCAtMTk3LDggKzE5Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgICAgICAKICAg
ICAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCi0gICAgICAgIGJvb2wgZ2V0U3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGdldFN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJpbmcK
KyAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiwgV1RGOjpTdHJpbmcmKSBjb25zdDsK
KyAgICAgICAgV1RGOjpTdHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBudWxs
IHN0cmluZyBpZiBub3QgYSBzdHJpbmcKICAgICAgICAgSlNPYmplY3QqIGdldE9iamVjdCgpIGNv
bnN0OyAvLyAwIGlmIG5vdCBhbiBvYmplY3QKIAogICAgICAgICAvLyBFeHRyYWN0aW5nIGludGVn
ZXIgdmFsdWVzLgpAQCAtMjE0LDggKzIxMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAv
LyBiZWVuIHNldCBpbiB0aGUgRXhlY1N0YXRlIGFscmVhZHkuCiAgICAgICAgIGRvdWJsZSB0b051
bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNTdHJpbmcqIHRvU3RyaW5nKEV4ZWNT
dGF0ZSopIGNvbnN0OwotICAgICAgICBVU3RyaW5nIHRvVVN0cmluZyhFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgVVN0cmluZyB0b1VTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKikgY29uc3Q7Cisg
ICAgICAgIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAg
ICBXVEY6OlN0cmluZyB0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAg
ICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU09iamVj
dCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIApAQCAtMjY2
LDcgKzI2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgY29uc3QgSlNWYWx1
ZSBhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSop
IGNvbnN0OwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIHRvVVN0cmluZ1Nsb3dD
YXNlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0
cmluZyB0b1dURlN0cmluZ1Nsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggZTFmODVjZWZlNmVh
NGU0NGU0MGM4M2VmNmZmN2M3NjUwZWZlNjA0YS4uYWE2NTQxYjZhZWQ1YmYwY2VjZDhlNWY2Mzk5
NDc5Yzg2YzIyMDllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUg
IlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRl
IDx3dGYvZHRvYS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTM0NCw3ICszNDQsNyBAQCB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBt
b2RlLCBjaGFyIHRlcm1pbmF0b3I+IEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJz
ZQogewogICAgICsrbV9wdHI7CiAgICAgY29uc3QgQ2hhclR5cGUqIHJ1blN0YXJ0ID0gbV9wdHI7
Ci0gICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CiAgICAgZG8gewogICAgICAgICBydW5TdGFydCA9IG1fcHRyOwogICAgICAgICB3aGlsZSAobV9w
dHIgPCBtX2VuZCAmJiBpc1NhZmVTdHJpbmdDaGFyYWN0ZXI8bW9kZSwgQ2hhclR5cGUsIHRlcm1p
bmF0b3I+KCptX3B0cikpCkBAIC00MDAsNyArNDAwLDcgQEAgdGVtcGxhdGUgPFBhcnNlck1vZGUg
bW9kZSwgY2hhciB0ZXJtaW5hdG9yPiBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFy
c2UKICAgICAgICAgICAgICAgICAgICAgfSAvLyB1Tk5OTiA9PSA1IGNoYXJhY3RlcnMKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KG1fcHRyW2ldKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlwi
XFwlc1wiIGlzIG5vdCBhIHZhbGlkIHVuaWNvZGUgZXNjYXBlIiwgVVN0cmluZyhtX3B0ciwgNSku
YXNjaWkoKS5kYXRhKCkpLmltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJcIlxcJXNcIiBpcyBub3QgYSB2YWxpZCB1
bmljb2RlIGVzY2FwZSIsIFN0cmluZyhtX3B0ciwgNSkuYXNjaWkoKS5kYXRhKCkpLmltcGwoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQyNiwxMSArNDI2LDEx
IEBAIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVybWluYXRvcj4gQUxXQVlTX0lO
TElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlCiAgICAgfQogCiAgICAgaWYgKGJ1aWxkZXIuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIHRva2VuLnN0cmluZ0J1ZmZlciA9IFVTdHJpbmcoKTsKKyAgICAg
ICAgdG9rZW4uc3RyaW5nQnVmZmVyID0gU3RyaW5nKCk7CiAgICAgICAgIHNldFBhcnNlclRva2Vu
U3RyaW5nPENoYXJUeXBlPih0b2tlbiwgcnVuU3RhcnQpOwogICAgICAgICB0b2tlbi5zdHJpbmdM
ZW5ndGggPSBtX3B0ciAtIHJ1blN0YXJ0OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRva2VuLnN0
cmluZ0J1ZmZlciA9IGJ1aWxkZXIudG9VU3RyaW5nKCk7CisgICAgICAgIHRva2VuLnN0cmluZ0J1
ZmZlciA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHRva2VuLnN0cmluZ0J1ZmZl
ci5pczhCaXQoKSkgewogICAgICAgICAgICAgdG9rZW4uc3RyaW5nSXM4Qml0ID0gMTsKICAgICAg
ICAgICAgIHRva2VuLnN0cmluZ1Rva2VuOCA9IHRva2VuLnN0cmluZ0J1ZmZlci5jaGFyYWN0ZXJz
OCgpOwpAQCAtNjk4LDkgKzY5OCw5IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46
OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBUb2tJZGVudGlmaWVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXRlcmFs
UGFyc2VyVG9rZW48Q2hhclR5cGU+JiB0b2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4uc3RyaW5nSXM4Qml0KQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgi
VW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFVTdHJpbmcobV9sZXhlci5jdXJyZW50VG9r
ZW4oKS5zdHJpbmdUb2tlbjgsIG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5h
c2NpaSgpLmRhdGEoKSkuaW1wbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwi
JXNcIiIsIFN0cmluZyhtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuOCwgbV9sZXhl
ci5jdXJyZW50VG9rZW4oKS5zdHJpbmdMZW5ndGgpLmFzY2lpKCkuZGF0YSgpKS5pbXBsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIGlkZW50aWZp
ZXIgXCIlc1wiIiwgVVN0cmluZyhtX2xleGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuMTYs
IG1fbGV4ZXIuY3VycmVudFRva2VuKCkuc3RyaW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSkuaW1w
bCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSBT
dHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCBpZGVudGlmaWVyIFwiJXNcIiIsIFN0cmluZyhtX2xl
eGVyLmN1cnJlbnRUb2tlbigpLnN0cmluZ1Rva2VuMTYsIG1fbGV4ZXIuY3VycmVudFRva2VuKCku
c3RyaW5nTGVuZ3RoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRva0NvbG9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IGFiZTNmOTViNzk4Y2MzNWIyZTQ2NDI5MTE3Yjg3ZDEx
YWRkZmZmODkuLjYxYThlZjM0ZGM2MjAxNmMxZGRjNjY5ZDUzN2I5MjljZjBlN2RlZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTI5LDcg
KzI5LDcgQEAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiVVN0cmluZy5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtNjcsNyArNjcsNyBAQCBzdHJ1Y3QgTGl0ZXJhbFBhcnNlclRva2VuIHsKICAgICBUb2tlblR5
cGUgdHlwZTsKICAgICBjb25zdCBDaGFyVHlwZSogc3RhcnQ7CiAgICAgY29uc3QgQ2hhclR5cGUq
IGVuZDsKLSAgICBVU3RyaW5nIHN0cmluZ0J1ZmZlcjsKKyAgICBTdHJpbmcgc3RyaW5nQnVmZmVy
OwogICAgIHVuaW9uIHsKICAgICAgICAgZG91YmxlIG51bWJlclRva2VuOwogICAgICAgICBzdHJ1
Y3QgewpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBV
U3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIAorICAgIFN0cmluZyBnZXRFcnJvck1lc3NhZ2UoKQog
ICAgIHsgCiAgICAgICAgIGlmICghbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkpTT04gUGFyc2UgZXJyb3I6ICVz
IiwgbV9sZXhlci5nZXRFcnJvck1lc3NhZ2UoKS5hc2NpaSgpLmRhdGEoKSkuaW1wbCgpOwpAQCAt
MTMzLDEwICsxMzMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnRU
b2tlbjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgVVN0cmluZyBnZXRFcnJvck1lc3Nh
Z2UoKSB7IHJldHVybiBtX2xleEVycm9yTWVzc2FnZTsgfQorICAgICAgICBTdHJpbmcgZ2V0RXJy
b3JNZXNzYWdlKCkgeyByZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7IH0KICAgICAgICAgCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgVVN0cmluZyBtX2xleEVycm9yTWVzc2FnZTsKKyAgICAgICAgU3Ry
aW5nIG1fbGV4RXJyb3JNZXNzYWdlOwogICAgICAgICB0ZW1wbGF0ZSA8UGFyc2VyTW9kZSBtb2Rl
PiBUb2tlblR5cGUgbGV4KExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4mKTsKICAgICAgICAg
QUxXQVlTX0lOTElORSBUb2tlblR5cGUgbGV4SWRlbnRpZmllcihMaXRlcmFsUGFyc2VyVG9rZW48
Q2hhclR5cGU+Jik7CiAgICAgICAgIHRlbXBsYXRlIDxQYXJzZXJNb2RlIG1vZGUsIGNoYXIgdGVy
bWluYXRvcj4gQUxXQVlTX0lOTElORSBUb2tlblR5cGUgbGV4U3RyaW5nKExpdGVyYWxQYXJzZXJU
b2tlbjxDaGFyVHlwZT4mKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIEV4ZWNT
dGF0ZSogbV9leGVjOwogICAgIHR5cGVuYW1lIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhl
ciBtX2xleGVyOwogICAgIFBhcnNlck1vZGUgbV9tb2RlOwotICAgIFVTdHJpbmcgbV9wYXJzZUVy
cm9yTWVzc2FnZTsKKyAgICBTdHJpbmcgbV9wYXJzZUVycm9yTWVzc2FnZTsKICAgICBzdGF0aWMg
dW5zaWduZWQgY29uc3QgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwogICAgIEZpeGVk
QXJyYXk8SWRlbnRpZmllciwgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyPiBtX3Nob3J0SWRlbnRp
ZmllcnM7CiAgICAgRml4ZWRBcnJheTxJZGVudGlmaWVyLCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0
ZXI+IG1fcmVjZW50SWRlbnRpZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggNzZhZWE5ZGE4YmYwZGJh
ZDA2NjgxOGViMTZmODY4NDllZmFjZmQ3Yi4uOGRiMjM3MDI4Yzg4NWRkMDVlNDU0NjJhMTgxN2Q0
Y2VjNTY5YWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwog
Ci0gICAgICAgIHN0YXRpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisg
ICAgICAgIHN0YXRpYyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAg
ICAgewogICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUpOwpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
ZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lKQor
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cygm
c19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvclByb3RvdHlwZS5jcHAKaW5kZXggZGZkZDg3Zjg1MzIxYjkxOTc5NzdiZjVkN2Y1OWJj
MDM3YjA4NzY0Yi4uN2ZlZTIxM2ZhNTM1NDdhNWQ3OWIyMmNiYWE4M2IyMTFmYzc3NDc2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJv
dG90eXBlLmNwcApAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzUsNyAr
MzQsNyBAQCBOYXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogewogfQogCi12b2lkIE5hdGl2ZUVycm9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3ZvaWQgTmF0aXZlRXJyb3JQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWVBbmRNZXNzYWdlLCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvcikKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLCBnbG9i
YWxPYmplY3QpOwogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVjLCBuYW1lQW5kTWVzc2FnZSksIERvbnRFbnVt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclBy
b3RvdHlwZS5oCmluZGV4IDRiY2ViODgzYTgyMGIxZTE2YzdjNTdhNWExNzdlZGQxZDY0MGYxNzAu
LmM5NGYyYjc1YWRiZDc5NDliMjYxOWIzYTc4YzVjNTY2M2I4NjM1MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgRXJyb3JQcm90b3R5cGUgQmFzZTsKIAotICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JQcm90
b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKKyAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yUHJv
dG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAgICAgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5h
dGl2ZUVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUo
ZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
ZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBjb25zdHJ1Y3Rvcik7CkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBVU3Ry
aW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOworICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJiBuYW1lQW5kTWVzc2FnZSwgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggNjkyYTU4NGZhNGEwOWQwZGFlYTIzOWNjOWQ2OWU0
ZjU3NWM2NzIxYi4uMWQ3OTM5MjI1MjQ2YjJkYmVjZTgyMWEzZTQzMWMwYjdkYmZmZTViYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3Bw
CkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIGNoYXIqIHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4
QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBudW1iZXIsIHVuc2lnbmVkIHJhZGkKICAgICByZXR1cm4g
c3RhcnRPZlJlc3VsdFN0cmluZzsKIH0KIAotc3RhdGljIFVTdHJpbmcgdG9VU3RyaW5nV2l0aFJh
ZGl4KGludDMyX3QgbnVtYmVyLCB1bnNpZ25lZCByYWRpeCkKK3N0YXRpYyBTdHJpbmcgdG9TdHJp
bmdXaXRoUmFkaXgoaW50MzJfdCBudW1iZXIsIHVuc2lnbmVkIHJhZGl4KQogewogICAgIExDaGFy
IGJ1ZlsxICsgMzJdOyAvLyBXb3JzdCBjYXNlIGlzIHJhZGl4ID09IDIsIHdoaWNoIGdpdmVzIHVz
IDMyIGRpZ2l0cyArIHNpZ24uCiAgICAgTENoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5H
VEgoYnVmKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgVVN0cmluZyB0b1VTdHJpbmdXaXRo
UmFkaXgoaW50MzJfdCBudW1iZXIsIHVuc2lnbmVkIHJhZGl4KQogICAgIGlmIChuZWdhdGl2ZSkK
ICAgICAgICAgKi0tcCA9ICctJzsKIAotICAgIHJldHVybiBVU3RyaW5nKHAsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihlbmQgLSBwKSk7CisgICAgcmV0dXJuIFN0cmluZyhwLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZW5kIC0gcCkpOwogfQogCiAvLyB0b0V4cG9uZW50aWFsIGNvbnZlcnRzIGEgbnVt
YmVyIHRvIGEgc3RyaW5nLCBhbHdheXMgZm9ybWF0dGluZyBhcyBhbiBleHBvZW50aWFsLgpAQCAt
MzgyLDcgKzM4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9G
dW5jVG9FeHBvbmVudGlhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAvLyBIYW5kbGUgTmFOIGFu
ZCBJbmZpbml0eS4KICAgICBpZiAoIWlzZmluaXRlKHgpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlw
dCh4KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0
cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KHgpKSk7CiAKICAgICAvLyBSb3VuZCBpZiB0
aGUgYXJndW1lbnQgaXMgbm90IHVuZGVmaW5lZCwgYWx3YXlzIGZvcm1hdCBhcyBleHBvbmVudGlh
bC4KICAgICBjaGFyIGJ1ZmZlcltXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKQEAg
LTM5Miw3ICszOTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvRXhwb25lbnRpYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIGlzVW5kZWZpbmVkCiAgICAg
ICAgID8gY29udmVydGVyLlRvRXhwb25lbnRpYWwoeCwgLTEsICZidWlsZGVyKQogICAgICAgICA6
IGNvbnZlcnRlci5Ub0V4cG9uZW50aWFsKHgsIGRlY2ltYWxQbGFjZXNJbkV4cG9uZW50LCAmYnVp
bGRlcik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5n
KGJ1aWxkZXIuRmluYWxpemUoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKGV4ZWMsIFN0cmluZyhidWlsZGVyLkZpbmFsaXplKCkpKSk7CiB9CiAKIC8vIHRvRml4ZWQg
Y29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIGFsd2F5cyBmb3JtYXR0aW5nIGFzIGFuIGEg
ZGVjaW1hbCBmcmFjdGlvbi4KQEAgLTQxNSwxNCArNDE1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
Ly8gVGhpcyBhbHNvIGNvdmVycyBJbmluaXR5LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0
aGF0IE5hTgogICAgIC8vIHZhbHVlcyBhcmUgYWxzbyBoYW5kbGVkIGJ5IG51bWJlclRvU3RyaW5n
CiAgICAgaWYgKCEoZmFicyh4KSA8IDFlKzIxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoeCkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBTdHJpbmc6
Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOwogCiAgICAgLy8gVGhlIGNoZWNrIGFib3Zl
IHdpbGwgcmV0dXJuIGZhbHNlIGZvciBOYU4gb3IgSW5maW5pdHksIHRoZXNlIHdpbGwgYmUKICAg
ICAvLyBoYW5kbGVkIGJ5IG51bWJlclRvU3RyaW5nLgogICAgIEFTU0VSVChpc2Zpbml0ZSh4KSk7
CiAKICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyh4
LCBkZWNpbWFsUGxhY2VzLCBidWZmZXIpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcoZXhlYywgU3RyaW5nKG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyh4LCBkZWNpbWFs
UGxhY2VzLCBidWZmZXIpKSkpOwogfQogCiAvLyB0b1ByZWNpc2lvbiBjb252ZXJ0cyBhIG51bWJl
ciB0byBhIHN0cmluZywgdGFrZWluZyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEKQEAgLTQ0Niwx
NCArNDQ2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5j
VG9QcmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgLy8gVG8gcHJlY2lzaW9uIGNhbGxl
ZCB3aXRoIG5vIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAgaWYgKGlzVW5k
ZWZpbmVkKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVT
dHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2Ny
aXB0KHgpKSk7CiAKICAgICAvLyBIYW5kbGUgTmFOIGFuZCBJbmZpbml0eS4KICAgICBpZiAoIWlz
ZmluaXRlKHgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMs
IFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdCh4KSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01B
U2NyaXB0KHgpKSk7CiAKICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nKG51bWJlclRvRml4ZWRQ
cmVjaXNpb25TdHJpbmcoeCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBidWZmZXIpKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgU3RyaW5nKG51bWJlclRvRml4ZWRQ
cmVjaXNpb25TdHJpbmcoeCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBidWZmZXIpKSkpOwogfQogCiBz
dGF0aWMgaW5saW5lIGludDMyX3QgZXh0cmFjdFJhZGl4RnJvbUFyZ3MoRXhlY1N0YXRlKiBleGVj
KQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgaW50ZWdl
clZhbHVlVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IHJhZGl4CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+bnVt
ZXJpY1N0cmluZ3MuYWRkKHZhbHVlKSkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoZXhlYywgdG9VU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCByYWRpeCkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5nV2l0aFJh
ZGl4KHZhbHVlLCByYWRpeCkpKTsKIAogfQogCkBAIC01MDksNyArNTA5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgfQogCiAgICAgaWYgKCFpc2Zpbml0ZShkb3VibGVWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZzo6bnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KGRvdWJsZVZhbHVlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRvdWJs
ZVZhbHVlKSkpOwogCiAgICAgUmFkaXhCdWZmZXIgczsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5nV2l0aFJhZGl4KHMsIGRvdWJsZVZhbHVlLCByYWRp
eCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWVyaWNT
dHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1lcmljU3RyaW5ncy5o
CmluZGV4IDA3ZTg0OTQ5MTE1NTBkODNhMWYzYjQ4MzdkNzkwNWZmMzc1MDgyYmIuLjRjZDkyZmMx
ZjJmNjdkNmM1MTM2ZmVmM2IyNzNkNDFjZmVmYTI3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWVyaWNTdHJpbmdzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtZXJpY1N0cmluZ3MuaApAQCAtMjYsMjUgKzI2LDI1IEBACiAjaWZu
ZGVmIE51bWVyaWNTdHJpbmdzX2gKICNkZWZpbmUgTnVtZXJpY1N0cmluZ3NfaAogCi0jaW5jbHVk
ZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1lcmljU3RyaW5ncyB7CiAgICAgcHVibGljOgot
ICAgICAgICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgYWRkKGRvdWJsZSBkKQorICAgICAgICBBTFdB
WVNfSU5MSU5FIFN0cmluZyBhZGQoZG91YmxlIGQpCiAgICAgICAgIHsKICAgICAgICAgICAgIENh
Y2hlRW50cnk8ZG91YmxlPiYgZW50cnkgPSBsb29rdXAoZCk7CiAgICAgICAgICAgICBpZiAoZCA9
PSBlbnRyeS5rZXkgJiYgIWVudHJ5LnZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgICAgIGVudHJ5LmtleSA9IGQ7Ci0gICAgICAgICAg
ICBlbnRyeS52YWx1ZSA9IFVTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkKTsKKyAg
ICAgICAgICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQo
ZCk7CiAgICAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgYWRkKGludCBpKQorICAgICAgICBBTFdBWVNfSU5MSU5F
IFN0cmluZyBhZGQoaW50IGkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaSkgPCBjYWNoZVNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxvb2t1
cFNtYWxsU3RyaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSk7CkBAIC01MiwxMSArNTIsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoaSA9PSBlbnRyeS5rZXkgJiYgIWVu
dHJ5LnZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsK
ICAgICAgICAgICAgIGVudHJ5LmtleSA9IGk7Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFVT
dHJpbmc6Om51bWJlcihpKTsKKyAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1i
ZXIoaSk7CiAgICAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBBTFdBWVNfSU5MSU5FIFVTdHJpbmcgYWRkKHVuc2lnbmVkIGkpCisgICAgICAgIEFMV0FZ
U19JTkxJTkUgU3RyaW5nIGFkZCh1bnNpZ25lZCBpKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoaSA8IGNhY2hlU2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbG9va3VwU21hbGxTdHJp
bmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpKTsKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBpZiAoaSA9PSBlbnRyeS5rZXkgJiYgIWVudHJ5LnZhbHVlLmlz
TnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTsKICAgICAgICAgICAg
IGVudHJ5LmtleSA9IGk7Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZSA9IFVTdHJpbmc6Om51bWJl
cihpKTsKKyAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gU3RyaW5nOjpudW1iZXIoaSk7CiAgICAg
ICAgICAgICByZXR1cm4gZW50cnkudmFsdWU7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgpAQCAt
NzMsMjQgKzczLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgICAgICBzdHJ1Y3QgQ2FjaGVFbnRyeSB7CiAgICAgICAgICAgICBUIGtleTsKLSAg
ICAgICAgICAgIFVTdHJpbmcgdmFsdWU7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWU7CiAgICAg
ICAgIH07CiAKICAgICAgICAgQ2FjaGVFbnRyeTxkb3VibGU+JiBsb29rdXAoZG91YmxlIGQpIHsg
cmV0dXJuIGRvdWJsZUNhY2hlW1dURjo6RmxvYXRIYXNoPGRvdWJsZT46Omhhc2goZCkgJiAoY2Fj
aGVTaXplIC0gMSldOyB9CiAgICAgICAgIENhY2hlRW50cnk8aW50PiYgbG9va3VwKGludCBpKSB7
IHJldHVybiBpbnRDYWNoZVtXVEY6OkludEhhc2g8aW50Pjo6aGFzaChpKSAmIChjYWNoZVNpemUg
LSAxKV07IH0KICAgICAgICAgQ2FjaGVFbnRyeTx1bnNpZ25lZD4mIGxvb2t1cCh1bnNpZ25lZCBp
KSB7IHJldHVybiB1bnNpZ25lZENhY2hlW1dURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2goaSkg
JiAoY2FjaGVTaXplIC0gMSldOyB9Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVVN0cmlu
ZyYgbG9va3VwU21hbGxTdHJpbmcodW5zaWduZWQgaSkKKyAgICAgICAgQUxXQVlTX0lOTElORSBj
b25zdCBTdHJpbmcmIGxvb2t1cFNtYWxsU3RyaW5nKHVuc2lnbmVkIGkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVChpIDwgY2FjaGVTaXplKTsKICAgICAgICAgICAgIGlmIChzbWFsbElu
dENhY2hlW2ldLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIHNtYWxsSW50Q2FjaGVbaV0gPSBV
U3RyaW5nOjpudW1iZXIoaSk7CisgICAgICAgICAgICAgICAgc21hbGxJbnRDYWNoZVtpXSA9IFN0
cmluZzo6bnVtYmVyKGkpOwogICAgICAgICAgICAgcmV0dXJuIHNtYWxsSW50Q2FjaGVbaV07CiAg
ICAgICAgIH0KIAogICAgICAgICBGaXhlZEFycmF5PENhY2hlRW50cnk8ZG91YmxlPiwgY2FjaGVT
aXplPiBkb3VibGVDYWNoZTsKICAgICAgICAgRml4ZWRBcnJheTxDYWNoZUVudHJ5PGludD4sIGNh
Y2hlU2l6ZT4gaW50Q2FjaGU7CiAgICAgICAgIEZpeGVkQXJyYXk8Q2FjaGVFbnRyeTx1bnNpZ25l
ZD4sIGNhY2hlU2l6ZT4gdW5zaWduZWRDYWNoZTsKLSAgICAgICAgRml4ZWRBcnJheTxVU3RyaW5n
LCBjYWNoZVNpemU+IHNtYWxsSW50Q2FjaGU7CisgICAgICAgIEZpeGVkQXJyYXk8U3RyaW5nLCBj
YWNoZVNpemU+IHNtYWxsSW50Q2FjaGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNWE2ZmNkZGYwMzk1NWEzZjA3YTNkOTZlOTQyYzI4MDM3YTM4MDlkNS4uMjFlY2Nk
MzBlOTliYmMwY2VlYjJmOWU5ZTFhNWM3ZjhiODI2YmVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlCiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiUmVxdWVzdGVkIHByb3BlcnR5IGRlc2NyaXB0b3Igb2YgYSB2YWx1
ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpOwotICAgIFVTdHJpbmcgcHJvcGVydHlOYW1lID0g
ZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUHJvcGVydGllcyBj
YW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOwogICAgIEpTT2JqZWN0KiBPID0gYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIFVTdHJpbmcgcHJvcGVydHlOYW1lID0gZXhl
Yy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBw
cm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCAyNDA1M2M1
MmFhYmZmYzViZDllMzQzMzZiY2NkYmFhMzM5MTcxZDMxLi4zMGJhMGIyN2Q3YWUyYmRmNDg2Zjdi
OWY0MWU3ODU0MWFjOTllYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1
cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUoZ2xvYmFsRGF0YSwgczEsIHMyKTsKICAgICB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBV
U3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIsIGNvbnN0IFVTdHJpbmcmIHUzKQorICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgdTEsIGNvbnN0IFN0cmluZyYgdTIsIGNvbnN0IFN0cmluZyYgdTMpCiAgICAgewogICAgICAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCkBAIC0y
MjEsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gdjEuYXNO
dW1iZXIoKSA8IHYyLmFzTnVtYmVyKCk7CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcodjEpICYm
IGlzSlNTdHJpbmcodjIpKQotICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHYxKS0+dmFsdWUo
Y2FsbEZyYW1lKSA8IGFzU3RyaW5nKHYyKS0+dmFsdWUoY2FsbEZyYW1lKTsKKyAgICAgICAgICAg
IHJldHVybiBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oYXNTdHJpbmcodjEpLT52YWx1ZShjYWxs
RnJhbWUpLCBhc1N0cmluZyh2MiktPnZhbHVlKGNhbGxGcmFtZSkpOwogCiAgICAgICAgIGRvdWJs
ZSBuMTsKICAgICAgICAgZG91YmxlIG4yOwpAQCAtMjM5LDcgKzIzOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIGlmICh3YXNOb3RTdHJpbmcxIHwgd2FzTm90U3RyaW5nMikKICAgICAg
ICAgICAgIHJldHVybiBuMSA8IG4yOwotICAgICAgICByZXR1cm4gYXNTdHJpbmcocDEpLT52YWx1
ZShjYWxsRnJhbWUpIDwgYXNTdHJpbmcocDIpLT52YWx1ZShjYWxsRnJhbWUpOworICAgICAgICBy
ZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKHAxKS0+dmFsdWUoY2FsbEZy
YW1lKSwgYXNTdHJpbmcocDIpLT52YWx1ZShjYWxsRnJhbWUpKTsKICAgICB9CiAKICAgICAvLyBT
ZWUgRVM1IDExLjguMy8xMS44LjQvMTEuOC41IGZvciBkZWZpbml0aW9uIG9mIGxlZnRGaXJzdCwg
dGhpcyB2YWx1ZSBlbnN1cmVzIGNvcnJlY3QKQEAgLTI1NSw3ICsyNTUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiB2MS5hc051bWJlcigpIDw9IHYyLmFzTnVtYmVyKCk7
CiAKICAgICAgICAgaWYgKGlzSlNTdHJpbmcodjEpICYmIGlzSlNTdHJpbmcodjIpKQotICAgICAg
ICAgICAgcmV0dXJuICEoYXNTdHJpbmcodjIpLT52YWx1ZShjYWxsRnJhbWUpIDwgYXNTdHJpbmco
djEpLT52YWx1ZShjYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIHJldHVybiAhY29kZVBvaW50Q29t
cGFyZUxlc3NUaGFuKGFzU3RyaW5nKHYyKS0+dmFsdWUoY2FsbEZyYW1lKSwgYXNTdHJpbmcodjEp
LT52YWx1ZShjYWxsRnJhbWUpKTsKIAogICAgICAgICBkb3VibGUgbjE7CiAgICAgICAgIGRvdWJs
ZSBuMjsKQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpZiAo
d2FzTm90U3RyaW5nMSB8IHdhc05vdFN0cmluZzIpCiAgICAgICAgICAgICByZXR1cm4gbjEgPD0g
bjI7Ci0gICAgICAgIHJldHVybiAhKGFzU3RyaW5nKHAyKS0+dmFsdWUoY2FsbEZyYW1lKSA8IGFz
U3RyaW5nKHAxKS0+dmFsdWUoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiAhY29kZVBvaW50
Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKHAyKS0+dmFsdWUoY2FsbEZyYW1lKSwgYXNTdHJpbmco
cDEpLT52YWx1ZShjYWxsRnJhbWUpKTsKICAgICB9CiAKICAgICAvLyBGYXN0LXBhdGggY2hvaWNl
cyBoZXJlIGFyZSBiYXNlZCBvbiBmcmVxdWVuY3kgZGF0YSBmcm9tIFN1blNwaWRlcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CmluZGV4IDU5NTNmNWU4NzZjNzVjMjA2YTU0YTI1ZjlmNTg3ZTEwOTAxNThkMjcuLjJkMGYyN2Ez
ZTNjZjRkMTFkYTk1ZjhjZWRlMTgzMmVhMDYwMmE0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaApAQCAtMjIsMTEgKzIy
LDExIEBACiAjZGVmaW5lIFByb3BlcnR5TWFwSGFzaFRhYmxlX2gKIAogI2luY2x1ZGUgIlByb3Bl
cnR5T2Zmc2V0LmgiCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmll
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJ
bXBsLmg+CiAKIAogI2lmbmRlZiBOREVCVUcKQEAgLTQ0LDcgKzQ0LDcgQEAgZXh0ZXJuIGludCBu
dW1SZW1vdmVzOwogCiAjZW5kaWYKIAotI2RlZmluZSBQUk9QRVJUWV9NQVBfREVMRVRFRF9FTlRS
WV9LRVkgKChTdHJpbmdJbXBsKikxKSAKKyNkZWZpbmUgUFJPUEVSVFlfTUFQX0RFTEVURURfRU5U
UllfS0VZICgoU3RyaW5nSW1wbCopMSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDY0ZTU1M2JlMWM5NGM2MTI4ZTA0ZTE1
ZDI3NTFhN2Y0NDk2MzhlNzEuLjc3NTcyNzRmMWYzOTEzYjQzZDc0ODdkN2Y2NDI0ZTM0MmEwZGVh
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtNDAsNyAr
NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cDo6c19pbmZv
ID0geyAiUmVnRXhwIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShSZWdFeHApIH07CiAK
LVJlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFVTdHJpbmcmIHN0cmluZykKK1JlZ0V4cEZs
YWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIFJlZ0V4cEZsYWdz
IGZsYWdzID0gTm9GbGFnczsKIApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB+UmVn
RXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3IoKTsKIAotICAgIHZvaWQgb3V0cHV0T25lVGVzdChS
ZWdFeHAqLCBVU3RyaW5nLCBpbnQsIGludCosIGludCk7CisgICAgdm9pZCBvdXRwdXRPbmVUZXN0
KFJlZ0V4cCosIFN0cmluZywgaW50LCBpbnQqLCBpbnQpOwogICAgIHZvaWQgY2xlYXJSZWdFeHAo
UmVnRXhwKiByZWdFeHApCiAgICAgewogICAgICAgICBpZiAocmVnRXhwID09IG1fbGFzdFJlZ0V4
cCkKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWdFeHBGdW5jdGlv
bmFsVGVzdENvbGxlY3RvcigpOwogCi0gICAgdm9pZCBvdXRwdXRFc2NhcGVkVVN0cmluZyhjb25z
dCBVU3RyaW5nJiwgYm9vbCBlc2NhcGVTbGFzaCA9IGZhbHNlKTsKKyAgICB2b2lkIG91dHB1dEVz
Y2FwZWRTdHJpbmcoY29uc3QgU3RyaW5nJiwgYm9vbCBlc2NhcGVTbGFzaCA9IGZhbHNlKTsKIAog
ICAgIHN0YXRpYyBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3Rvciogc19pbnN0YW5jZTsKICAg
ICBGSUxFKiBtX2ZpbGU7CkBAIC0xMTEsMTIgKzExMSwxMiBAQCBSZWdFeHBGdW5jdGlvbmFsVGVz
dENvbGxlY3RvciogUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6OmdldCgpCiAgICAgcmV0
dXJuIHNfaW5zdGFuY2U7CiB9CiAKLXZvaWQgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6
Om91dHB1dE9uZVRlc3QoUmVnRXhwKiByZWdFeHAsIFVTdHJpbmcgcywgaW50IHN0YXJ0T2Zmc2V0
LCBpbnQqIG92ZWN0b3IsIGludCByZXN1bHQpCit2b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29s
bGVjdG9yOjpvdXRwdXRPbmVUZXN0KFJlZ0V4cCogcmVnRXhwLCBTdHJpbmcgcywgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQqIG92ZWN0b3IsIGludCByZXN1bHQpCiB7CiAgICAgaWYgKCghbV9sYXN0UmVn
RXhwKSB8fCAobV9sYXN0UmVnRXhwICE9IHJlZ0V4cCkpIHsKICAgICAgICAgbV9sYXN0UmVnRXhw
ID0gcmVnRXhwOwogICAgICAgICBmcHV0YygnLycsIG1fZmlsZSk7Ci0gICAgICAgIG91dHB1dEVz
Y2FwZWRVU3RyaW5nKHJlZ0V4cC0+cGF0dGVybigpLCB0cnVlKTsKKyAgICAgICAgb3V0cHV0RXNj
YXBlZFN0cmluZyhyZWdFeHAtPnBhdHRlcm4oKSwgdHJ1ZSk7CiAgICAgICAgIGZwdXRjKCcvJywg
bV9maWxlKTsKICAgICAgICAgaWYgKHJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAgICAgICAgICBmcHV0
YygnZycsIG1fZmlsZSk7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBSZWdFeHBGdW5jdGlvbmFs
VGVzdENvbGxlY3Rvcjo6b3V0cHV0T25lVGVzdChSZWdFeHAqIHJlZ0V4cCwgVVN0cmluZyBzLCBp
bnQKICAgICB9CiAKICAgICBmcHJpbnRmKG1fZmlsZSwgIiBcIiIpOwotICAgIG91dHB1dEVzY2Fw
ZWRVU3RyaW5nKHMpOworICAgIG91dHB1dEVzY2FwZWRTdHJpbmcocyk7CiAgICAgZnByaW50Ziht
X2ZpbGUsICJcIiwgJWQsICVkLCAoIiwgc3RhcnRPZmZzZXQsIHJlc3VsdCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8PSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCk7IGkrKykgewogICAg
ICAgICBpbnQgc3VicGF0dGVybkJlZ2luID0gb3ZlY3RvcltpICogMl07CkBAIC0xNTksNyArMTU5
LDcgQEAgUmVnRXhwRnVuY3Rpb25hbFRlc3RDb2xsZWN0b3I6On5SZWdFeHBGdW5jdGlvbmFsVGVz
dENvbGxlY3RvcigpCiAgICAgc19pbnN0YW5jZSA9IDA7CiB9CiAKLXZvaWQgUmVnRXhwRnVuY3Rp
b25hbFRlc3RDb2xsZWN0b3I6Om91dHB1dEVzY2FwZWRVU3RyaW5nKGNvbnN0IFVTdHJpbmcmIHMs
IGJvb2wgZXNjYXBlU2xhc2gpCit2b2lkIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpv
dXRwdXRFc2NhcGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgcywgYm9vbCBlc2NhcGVTbGFzaCkKIHsK
ICAgICBpbnQgbGVuID0gcy5sZW5ndGgoKTsKICAgICAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lk
IFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpvdXRwdXRFc2NhcGVkVVN0cmluZyhjb25z
dCBVU3RyaW5nJiBzLCBib29sCiB9CiAjZW5kaWYKIAotUmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFn
cyBmbGFncykKK1JlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKICAgICA6IEpTQ2VsbChn
bG9iYWxEYXRhLCBnbG9iYWxEYXRhLnJlZ0V4cFN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fc3Rh
dGUoTm90Q29tcGlsZWQpCiAgICAgLCBtX3BhdHRlcm5TdHJpbmcocGF0dGVyblN0cmluZykKQEAg
LTI1MCwxNCArMjUwLDE0IEBAIHZvaWQgUmVnRXhwOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAg
ICB0aGlzT2JqZWN0LT5SZWdFeHA6On5SZWdFeHAoKTsKIH0KIAotUmVnRXhwKiBSZWdFeHA6OmNy
ZWF0ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmlu
ZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCitSZWdFeHAqIFJlZ0V4cDo6Y3Jl
YXRlV2l0aG91dENhY2hpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcm
IHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQogewogICAgIFJlZ0V4cCogcmVnRXhw
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwPihnbG9iYWxEYXRhLmhlYXApKSBS
ZWdFeHAoZ2xvYmFsRGF0YSwgcGF0dGVyblN0cmluZywgZmxhZ3MpOwogICAgIHJlZ0V4cC0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgcmV0dXJuIHJlZ0V4cDsKIH0KIAotUmVnRXhw
KiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZsYWdzKQorUmVnRXhwKiBSZWdFeHA6OmNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZywg
UmVnRXhwRmxhZ3MgZmxhZ3MpCiB7CiAgICAgcmV0dXJuIGdsb2JhbERhdGEucmVnRXhwQ2FjaGUo
KS0+bG9va3VwT3JDcmVhdGUocGF0dGVyblN0cmluZywgZmxhZ3MpOwogfQpAQCAtMzE4LDcgKzMx
OCw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhCiAgICAgY29tcGlsZSgmZ2xvYmFsRGF0YSwg
Y2hhclNpemUpOwogfQogCi1pbnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAz
Mj4mIG92ZWN0b3IpCitpbnQgUmVnRXhwOjptYXRjaChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYg
b3ZlY3RvcikKIHsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgbV9ydE1hdGNoQ2Fs
bENvdW50Kys7CkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vz
c2FyeU1hdGNoT25seShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFlhcnI6OllhcnJDaGEKICAg
ICBjb21waWxlTWF0Y2hPbmx5KCZnbG9iYWxEYXRhLCBjaGFyU2l6ZSk7CiB9CiAKLU1hdGNoUmVz
dWx0IFJlZ0V4cDo6bWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKK01hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0KQogewogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBtX3J0TWF0Y2hDYWxsQ291
bnQrKzsKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIFJlZ0V4cDo6aW52YWxpZGF0ZUNvZGUoKQog
fQogCiAjaWYgRU5BQkxFKFlBUlJfSklUX0RFQlVHKQotdm9pZCBSZWdFeHA6Om1hdGNoQ29tcGFy
ZVdpdGhJbnRlcnByZXRlcihjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIGludCog
b2Zmc2V0VmVjdG9yLCBpbnQgaml0UmVzdWx0KQordm9pZCBSZWdFeHA6Om1hdGNoQ29tcGFyZVdp
dGhJbnRlcnByZXRlcihjb25zdCBTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZz
ZXRWZWN0b3IsIGludCBqaXRSZXN1bHQpCiB7CiAgICAgaW50IG9mZnNldFZlY3RvclNpemUgPSAo
bV9udW1TdWJwYXR0ZXJucyArIDEpICogMjsKICAgICBWZWN0b3I8aW50LCAzMj4gaW50ZXJwcmV0
ZXJPdmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCBhZDEw
MjAzNzZjYjEyYjdlZWEwZTlkNjJkYTMyYTY2OWQyNWJhYThiLi4yODc0NDRiOTUyNDEwMDEwNDUx
ZTcxNGZiMWUzOGM0MGRjOTY2YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiTWF0Y2hSZXN1bHQuaCIKICNpbmNs
dWRlICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKLSNpbmNsdWRlICJVU3Ry
aW5nLmgiCiAjaW5jbHVkZSAieWFyci9ZYXJyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogI2luY2x1ZGUgInlhcnIvWWFyckpJVC5oIgpA
QCAtNDAsMjYgKzQwLDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBSZWdFeHBSZXBy
ZXNlbnRhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBSZWdFeHBGbGFncyByZWdFeHBGbGFncyhjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgUmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
Z0V4cCogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIFJlZ0V4
cEZsYWdzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZ0V4cCogY3JlYXRl
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIGJvb2wgZ2xvYmFs
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdHbG9iYWw7IH0KICAgICAgICAgYm9vbCBp
Z25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdJZ25vcmVDYXNlOyB9CiAg
ICAgICAgIGJvb2wgbXVsdGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdNdWx0
aWxpbmU7IH0KIAotICAgICAgICBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1
cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0dGVybigpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQogCiAgICAgICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuICFtX2NvbnN0cnVjdGlvbkVycm9yICYmIG1fZmxhZ3MgIT0gSW52YWxp
ZEZsYWdzOyB9CiAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0KIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBp
bnQgbWF0Y2goSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCBWZWN0b3I8aW50LCAzMj4mIG92ZWN0b3IpOwotICAgICAgICBNYXRjaFJlc3VsdCBtYXRj
aChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBpbnQgbWF0Y2goSlNHbG9iYWxEYXRhJiwgY29uc3Qg
U3RyaW5nJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiYgb3ZlY3Rvcik7
CisgICAgICAgIE1hdGNoUmVzdWx0IG1hdGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KTsKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMo
KSBjb25zdCB7IHJldHVybiBtX251bVN1YnBhdHRlcm5zOyB9CiAKICAgICAgICAgYm9vbCBoYXND
b2RlKCkKQEAgLTg3LDkgKzg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgUmVnRXhwQ2FjaGU7Ci0gICAgICAgIFJlZ0V4cChKU0dsb2Jh
bERhdGEmLCBjb25zdCBVU3RyaW5nJiwgUmVnRXhwRmxhZ3MpOworICAgICAgICBSZWdFeHAoSlNH
bG9iYWxEYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVnRXhwRmxhZ3MpOwogCi0gICAgICAgIHN0YXRp
YyBSZWdFeHAqIGNyZWF0ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJp
bmcmLCBSZWdFeHBGbGFncyk7CisgICAgICAgIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZVdpdGhvdXRD
YWNoaW5nKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYsIFJlZ0V4cEZsYWdzKTsKIAogICAg
ICAgICBlbnVtIFJlZ0V4cFN0YXRlIHsKICAgICAgICAgICAgIFBhcnNlRXJyb3IsCkBAIC0xMDUs
MTAgKzEwNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb21waWxlSWZOZWNl
c3NhcnlNYXRjaE9ubHkoSlNHbG9iYWxEYXRhJiwgWWFycjo6WWFyckNoYXJTaXplKTsKIAogI2lm
IEVOQUJMRShZQVJSX0pJVF9ERUJVRykKLSAgICAgICAgdm9pZCBtYXRjaENvbXBhcmVXaXRoSW50
ZXJwcmV0ZXIoY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZzZXRWZWN0
b3IsIGludCBqaXRSZXN1bHQpOworICAgICAgICB2b2lkIG1hdGNoQ29tcGFyZVdpdGhJbnRlcnBy
ZXRlcihjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCogb2Zmc2V0VmVjdG9yLCBp
bnQgaml0UmVzdWx0KTsKICNlbmRpZgogCi0gICAgICAgIFVTdHJpbmcgbV9wYXR0ZXJuU3RyaW5n
OworICAgICAgICBTdHJpbmcgbV9wYXR0ZXJuU3RyaW5nOwogICAgICAgICBSZWdFeHBGbGFncyBt
X2ZsYWdzOwogICAgICAgICBjb25zdCBjaGFyKiBtX2NvbnN0cnVjdGlvbkVycm9yOwogICAgICAg
ICB1bnNpZ25lZCBtX251bVN1YnBhdHRlcm5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCmluZGV4IDUzYTEzYTRiNTliNzdlNzZhNGI4ODBjZmU3NWIz
NjA2Yzg3ZTFmYWQuLmM2N2RhYjhlNjFlZTAyYTE2OTFhZjQ3OTY3YjBkYmQzOGU5ZTY0NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVJlZ0V4cCogUmVnRXhwQ2FjaGU6Omxv
b2t1cE9yQ3JlYXRlKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdzIGZs
YWdzKQorUmVnRXhwKiBSZWdFeHBDYWNoZTo6bG9va3VwT3JDcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyBmbGFncykKIHsKICAgICBSZWdFeHBLZXkga2V5KGZs
YWdzLCBwYXR0ZXJuU3RyaW5nKTsKICAgICBpZiAoUmVnRXhwKiByZWdFeHAgPSBtX3dlYWtDYWNo
ZS5nZXQoa2V5KSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBSZWdFeHBDYWNoZTo6ZmluYWxpemUo
SGFuZGxlPFVua25vd24+IGhhbmRsZSwgdm9pZCopCiAKIHZvaWQgUmVnRXhwQ2FjaGU6OmFkZFRv
U3Ryb25nQ2FjaGUoUmVnRXhwKiByZWdFeHApCiB7Ci0gICAgVVN0cmluZyBwYXR0ZXJuID0gcmVn
RXhwLT5wYXR0ZXJuKCk7CisgICAgU3RyaW5nIHBhdHRlcm4gPSByZWdFeHAtPnBhdHRlcm4oKTsK
ICAgICBpZiAocGF0dGVybi5sZW5ndGgoKSA+IG1heFN0cm9uZ0NhY2hlYWJsZVBhdHRlcm5MZW5n
dGgpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0cm9uZ0NhY2hlW21fbmV4dEVudHJ5SW5TdHJv
bmdDYWNoZV0uc2V0KCptX2dsb2JhbERhdGEsIHJlZ0V4cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAppbmRleCA0ZjNlYTE1MzZhNGVhZTEwZDlkY2JlYjc5
NGVjZDc1MTBjMmE2MWY2Li5jNmE0YTBhYTJhZDBhZGQzNjMwNjFmOWMxZWI0ZWJkYWY5MjVmYTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgKQEAgLTI4
LDcgKzI4LDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIK
ICNpbmNsdWRlICJTdHJvbmcuaCIKLSNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2Vh
ay5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KQEAgLTU0LDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6
ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogCi0gICAgUmVnRXhwKiBsb29rdXBP
ckNyZWF0ZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyk7CisgICAg
UmVnRXhwKiBsb29rdXBPckNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcGF0dGVyblN0cmluZywg
UmVnRXhwRmxhZ3MpOwogICAgIHZvaWQgYWRkVG9TdHJvbmdDYWNoZShSZWdFeHAqKTsKICAgICBS
ZWdFeHBDYWNoZU1hcCBtX3dlYWtDYWNoZTsgLy8gSG9sZHMgYWxsIHJlZ3VsYXIgZXhwcmVzc2lv
bnMgY3VycmVudGx5IGxpdmUuCiAgICAgaW50IG1fbmV4dEVudHJ5SW5TdHJvbmdDYWNoZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cAppbmRleCAwYjQ2MzQ3NGYyZjVmOWM4NzY4NDQ3ZDg1YTA2MzgzMWYyMTZhMDA4Li41N2VlN2Rm
MTRiNDk3NGJkZDQxMmQ0YzYyMGVlOTRjMDFjMGM4YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yNzEsNyArMjcx
LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KGFy
ZzApOwogICAgIH0KIAotICAgIFVTdHJpbmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/
IFVTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3Ry
aW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoIiIpIDogYXJnMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmgKaW5kZXggZDcxNGYyMTY3OTUzNTZiZDc5Y2EwNTE0YjU4MzFl
ZmQ4NDkwM2JhMS4uMmNiMWMxMjA0NGY1MDIzMTU5ODQ0NmJiZmYxMjE4NmRkZWI1YTE3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
CkBAIC01NSw4ICs1NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCi0gICAgICAgIE1hdGNoUmVzdWx0IHBlcmZvcm1NYXRjaChK
U0dsb2JhbERhdGEmLCBSZWdFeHAqLCBKU1N0cmluZyosIGNvbnN0IFVTdHJpbmcmLCBpbnQgc3Rh
cnRPZmZzZXQsIGludCoqIG92ZWN0b3IpOwotICAgICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0
Y2goSlNHbG9iYWxEYXRhJiwgUmVnRXhwKiwgSlNTdHJpbmcqLCBjb25zdCBVU3RyaW5nJiwgaW50
IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xvYmFs
RGF0YSYsIFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0
LCBpbnQqKiBvdmVjdG9yKTsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKEpTR2xv
YmFsRGF0YSYsIFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zm
c2V0KTsKIAogICAgICAgICB2b2lkIHNldE11bHRpbGluZShib29sIG11bHRpbGluZSkgeyBtX211
bHRpbGluZSA9IG11bHRpbGluZTsgfQogICAgICAgICBib29sIG11bHRpbGluZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbXVsdGlsaW5lOyB9CkBAIC0xMDEsNyArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICBleHByZXNzaW9uIG1hdGNoaW5nIHRocm91Z2ggdGhlIHBlcmZvcm1NYXRjaCBmdW5j
dGlvbi4gV2UgdXNlIGNhY2hlZCByZXN1bHRzIHRvIGNhbGN1bGF0ZSwgCiAgICAgICBlLmcuLCBS
ZWdFeHAubGFzdE1hdGNoIGFuZCBSZWdFeHAubGVmdFBhcmVuLgogICAgICovCi0gICAgQUxXQVlT
X0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNoKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcsIGNv
bnN0IFVTdHJpbmcmIGlucHV0LCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IpCisgICAg
QUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cGVyZm9ybU1hdGNo
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJp
bmcsIGNvbnN0IFN0cmluZyYgaW5wdXQsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3RvcikK
ICAgICB7CiAgICAgICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2goZ2xvYmFsRGF0YSwg
aW5wdXQsIHN0YXJ0T2Zmc2V0LCBtX292ZWN0b3IpOwogCkBAIC0xMjAsNyArMTIwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHBvc2l0aW9uLCBlbmQp
OwogICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cENvbnN0cnVjdG9y
OjpwZXJmb3JtTWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHJlZ0V4cCwg
SlNTdHJpbmcqIHN0cmluZywgY29uc3QgVVN0cmluZyYgaW5wdXQsIGludCBzdGFydE9mZnNldCkK
KyAgICBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cENvbnN0cnVjdG9yOjpwZXJmb3Jt
TWF0Y2goSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHJlZ0V4cCwgSlNTdHJpbmcq
IHN0cmluZywgY29uc3QgU3RyaW5nJiBpbnB1dCwgaW50IHN0YXJ0T2Zmc2V0KQogICAgIHsKICAg
ICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwLT5tYXRjaChnbG9iYWxEYXRhLCBpbnB1
dCwgc3RhcnRPZmZzZXQpOwogICAgICAgICBpZiAocmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBLZXkuaAppbmRleCBjZGFmZjI3ZjU5YjA2OTNiZmJiNWM4ZGFiNjlm
NmM4YzVhYTNhYzlmLi5mOTNmYmJjMWQ5MGQxNDYzMTQ4ZjE4NDgxYWZlMWFkMDlkYTRiMWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBLZXkuaApAQCAtMjgsOCArMjgs
OCBAQAogI2lmbmRlZiBSZWdFeHBLZXlfaAogI2RlZmluZSBSZWdFeHBLZXlfaAogCi0jaW5jbHVk
ZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU2LDcgKzU2
LDcgQEAgc3RydWN0IFJlZ0V4cEtleSB7CiAgICAgewogICAgIH0KIAotICAgIFJlZ0V4cEtleShS
ZWdFeHBGbGFncyBmbGFncywgY29uc3QgVVN0cmluZyYgcGF0dGVybikKKyAgICBSZWdFeHBLZXko
UmVnRXhwRmxhZ3MgZmxhZ3MsIGNvbnN0IFN0cmluZyYgcGF0dGVybikKICAgICAgICAgOiBmbGFn
c1ZhbHVlKGZsYWdzKQogICAgICAgICAsIHBhdHRlcm4ocGF0dGVybi5pbXBsKCkpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKaW5kZXgg
YWVmYTFiNDRhMGI3NWNjNjc2ZDI0NmRiMzFiMTBiNjM0NzU5YWMwYS4uNmZkOWRiMjljMDRhYTM2
YjkzZWJmY2M4YjE1NGZjZGZkZTAzYmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0zMSw5ICszMSw4IEBACiAjaW5jbHVkZSAiUmVn
RXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNs
dWRlICJSZWdFeHBQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgotI2lu
Y2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTc5LDcgKzE3OCw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0TXVsdGlsaW5lKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIAogSlNWYWx1ZSByZWdFeHBP
YmplY3RTb3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVVN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5y
ZWdFeHAoKS0+cGF0dGVybigpOworICAgIFN0cmluZyBwYXR0ZXJuID0gYXNSZWdFeHBPYmplY3Qo
c2xvdEJhc2UpLT5yZWdFeHAoKS0+cGF0dGVybigpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHBh
dHRlcm4ubGVuZ3RoKCk7CiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwYXR0ZXJuLmNo
YXJhY3RlcnMoKTsKICAgICBib29sIHByZXZpb3VzQ2hhcmFjdGVyV2FzQmFja3NsYXNoID0gZmFs
c2U7CkBAIC0yMjcsNyArMjI2LDcgQEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiAKICAgICBwcmV2aW91
c0NoYXJhY3Rlcldhc0JhY2tzbGFzaCA9IGZhbHNlOwogICAgIGluQnJhY2tldHMgPSBmYWxzZTsK
LSAgICBVU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFVDaGFy
IGNoID0gY2hhcmFjdGVyc1tpXTsKICAgICAgICAgaWYgKCFwcmV2aW91c0NoYXJhY3Rlcldhc0Jh
Y2tzbGFzaCkgewpAQCAtMjY0LDcgKzI2Myw3IEBAIEpTVmFsdWUgcmVnRXhwT2JqZWN0U291cmNl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgICAg
ICAgICAgcHJldmlvdXNDaGFyYWN0ZXJXYXNCYWNrc2xhc2ggPSBjaCA9PSAnXFwnOwogICAgIH0K
IAotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9VU3RyaW5nKCkpOworICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCByZXN1bHQudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgUmVnRXhw
T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTI4
OCw3ICsyODcsNyBAQCBNYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTdHJpbmcqIHN0cmluZykKIHsKICAgICBSZWdFeHAqIHJlZ0V4cCA9IHRoaXMtPnJl
Z0V4cCgpOwogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwQ29uc3RydWN0b3IoKTsKLSAgICBVU3RyaW5n
IGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgaW5wdXQgPSBzdHJpbmct
PnZhbHVlKGV4ZWMpOwogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKICAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAgICAgIHJldHVybiByZWdF
eHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKGdsb2JhbERhdGEsIHJlZ0V4cCwgc3RyaW5nLCBp
bnB1dCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAppbmRleCAyNGM3YzgwMjdjMWQ5MzUzMzczZmMyNzBmY2M5NWQyZjE5M2U3NWJk
Li5jMjJlNmQwMzlkMzI5OTFmMjQ3MmVhOTI1NTUzZTBjMWJhMjM2MTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTM0LDcg
KzM0LDYgQEAKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgog
I2luY2x1ZGUgIlN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIKLSNpbmNsdWRlICJVU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTExMCw3ICsxMDksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJl
Z0V4cCBmcm9tIGFub3RoZXIuIikpOwogICAgICAgICByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChh
cmcwKS0+cmVnRXhwKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgVVN0cmluZyBwYXR0ZXJuID0g
IWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IFVTdHJpbmcoIiIpIDogYXJnMC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA/IFN0cmluZygiIikgOiBhcmcwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTUzLDcgKzE1Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBwb3N0Zml4W2luZGV4KytdID0gJ2knOwogICAgIGlmICh0aGlzT2Jq
ZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLm11bHRpbGluZSkudG9Cb29sZWFu
KGV4ZWMpKQogICAgICAgICBwb3N0Zml4W2luZGV4XSA9ICdtJzsKLSAgICBVU3RyaW5nIHNvdXJj
ZSA9IHRoaXNPYmplY3QtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc291cmNlKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNvdXJjZSA9IHRoaXNPYmpl
Y3QtPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuc291cmNlKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgLy8gSWYgc291cmNlIGlzIGVtcHR5LCB1c2UgIi8oPzopLyIg
dG8gYXZvaWQgY29sbGlkaW5nIHdpdGggY29tbWVudCBzeW50YXgKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIi8iLCBzb3VyY2UsIHBvc3Rm
aXgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxs
U3RyaW5ncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
Y3BwCmluZGV4IGY1MGY3M2QyN2M3YzAzMGZhZTJhM2RmYjY2NmY1YTRmYWFiNWMyMmUuLjU2YTM1
OTI3OWRjY2RmNjVkMWE5Y2M1YWVlYWY4NmU3ODVlNWZhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TbWFsbFN0cmluZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxs
U3RyaW5ncy5oCmluZGV4IGU2MDljNTA5MjIxYzZhYjAwZDZkNTc4YTlmMzM0ZDE2NzRlZDFiMWUu
LjViYzlkMjI1MjM5ZmJkMzg5MDY2Y2ViNmY0YmM5ZjU5OTcxYzc1MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCkBAIC0yNiw4ICsyNiw4IEBACiAj
aWZuZGVmIFNtYWxsU3RyaW5nc19oCiAjZGVmaW5lIFNtYWxsU3RyaW5nc19oCiAKLSNpbmNsdWRl
ICJVU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNkZWZpbmUgSlNDX0NP
TU1PTl9TVFJJTkdTX0VBQ0hfTkFNRShtYWNybykgXApAQCAtNDEsNiArNDEsMTAgQEAKICAgICBt
YWNybyhzdHJpbmcpIFwKICAgICBtYWNybyh0cnVlKQogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IFN0cmluZ0ltcGw7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSGVhcFJvb3RW
aXNpdG9yOwpAQCAtNzEsNyArNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXTsKICAgICAgICAgfQogCi0g
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0cmlu
Z1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IFdURjo6U3RyaW5nSW1wbCogc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKHVuc2lnbmVkIGNoYXIg
Y2hhcmFjdGVyKTsKIAogICAgICAgICB2b2lkIGZpbmFsaXplU21hbGxTdHJpbmdzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDNj
MDM3YmNkMTdhYzA3YWUzMGJiYTY4ZjczNzJiODFlNTQ5MWFiZWYuLjZjMWYxNmQ2M2ViN2ZiMjli
OGQwNTFkZjE0MGJjZDMwZWZkYTI1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgU3RyaW5nT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVyCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09i
amVjdCo+KG9iamVjdCk7CiAgICAgaW50IHNpemUgPSB0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVl
KCktPmxlbmd0aCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmc6Om51bWJlcihpKSkp
OworICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZzo6bnVt
YmVyKGkpKSk7CiAgICAgaWYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykKICAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7CiAg
ICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMDAxZTVlOGIwZDFiYTVjZjZlZjFkY2QwMzk5
NTRiODJjYmNhOWM1NS4uNzk1ZTRlNjhhNmZkOGI1MWQ2ZTZiYmEyYmQyMTAwZTYwMmRiNDYzYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMKIC8vIEhlbHBl
ciBmb3IgcHJvZHVjaW5nIGEgSlNTdHJpbmcgZm9yICdzdHJpbmcnLCB3aGVyZSAnc3RyaW5nJyB3
YXMgYmVlbiBwcm9kdWNlZCBieQogLy8gY2FsbGluZyBUb1N0cmluZyBvbiAnb3JpZ2luYWxWYWx1
ZScuIEluIGNhc2VzIHdoZXJlICdvcmlnaW5hbFZhbHVlJyBhbHJlYWR5IHdhcyBhCiAvLyBzdHJp
bmcgcHJpbWl0aXZlIHdlIGNhbiBqdXN0IHVzZSB0aGlzLCBvdGhlcndpc2Ugd2UgbmVlZCB0byBh
bGxvY2F0ZSBhIG5ldyBKU1N0cmluZy4KLXN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5n
V2l0aFJldXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBV
U3RyaW5nJiBzdHJpbmcpCitzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhSZXVz
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7CiAgICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewogICAgICAgICBB
U1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7CkBA
IC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdHJpbmdXaXRoUmV1
c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotc3RhdGljIE5FVkVSX0lOTElORSBVU3RyaW5nIHN1YnN0aXR1
dGVCYWNrcmVmZXJlbmNlc1Nsb3coY29uc3QgVVN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0IFVT
dHJpbmcmIHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZywgc2l6ZV90IGkp
CitzdGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93
KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBp
bnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnLCBzaXplX3QgaSkKIHsKICAgICBWZWN0b3I8Q2hhclR5
cGU+IHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQ7CiAgICAgaW50IG9mZnNldCA9IDA7CkBAIC0xODQs
NyArMTg0LDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVm
ZXJlbmNlc1Nsb3coY29uc3QgVVN0cmluZyYgcmVwbGFjZW0KICAgICAgICAgaWYgKHJlZiA9PSAn
JCcpIHsKICAgICAgICAgICAgIC8vICIkJCIgLT4gIiQiCiAgICAgICAgICAgICArK2k7Ci0gICAg
ICAgICAgICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50LmFwcGVuZChyZXBsYWNlbWVudC5nZXRDaGFy
YWN0ZXJzPENoYXJUeXBlPigpICsgb2Zmc2V0LCBpIC0gb2Zmc2V0KTsKKyAgICAgICAgICAgIHN1
YnN0aXR1dGVkUmVwbGFjZW1lbnQuYXBwZW5kKHJlcGxhY2VtZW50LmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0PENoYXJUeXBlPigpICsgb2Zmc2V0LCBpIC0gb2Zmc2V0KTsKICAgICAgICAgICAg
IG9mZnNldCA9IGkgKyAxOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTIy
NCwyMSArMjI0LDIxIEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgVVN0cmluZyBzdWJzdGl0dXRlQmFj
a3JlZmVyZW5jZXNTbG93KGNvbnN0IFVTdHJpbmcmIHJlcGxhY2VtCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBpZiAoaSAtIG9mZnNldCkKLSAgICAgICAgICAgIHN1YnN0aXR1dGVk
UmVwbGFjZW1lbnQuYXBwZW5kKHJlcGxhY2VtZW50LmdldENoYXJhY3RlcnM8Q2hhclR5cGU+KCkg
KyBvZmZzZXQsIGkgLSBvZmZzZXQpOworICAgICAgICAgICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVu
dC5hcHBlbmQocmVwbGFjZW1lbnQuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQ8Q2hhclR5cGU+
KCkgKyBvZmZzZXQsIGkgLSBvZmZzZXQpOwogICAgICAgICBpICs9IDEgKyBhZHZhbmNlOwogICAg
ICAgICBvZmZzZXQgPSBpICsgMTsKICAgICAgICAgaWYgKGJhY2tyZWZTdGFydCA+PSAwKQotICAg
ICAgICAgICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5hcHBlbmQoc291cmNlLmdldENoYXJhY3Rl
cnM8Q2hhclR5cGU+KCkgKyBiYWNrcmVmU3RhcnQsIGJhY2tyZWZMZW5ndGgpOworICAgICAgICAg
ICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5hcHBlbmQoc291cmNlLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0PENoYXJUeXBlPigpICsgYmFja3JlZlN0YXJ0LCBiYWNrcmVmTGVuZ3RoKTsKICAg
ICB9IHdoaWxlICgoaSA9IHJlcGxhY2VtZW50LmZpbmQoJyQnLCBpICsgMSkpICE9IG5vdEZvdW5k
KTsKIAogICAgIGlmIChyZXBsYWNlbWVudC5sZW5ndGgoKSAtIG9mZnNldCkKLSAgICAgICAgc3Vi
c3RpdHV0ZWRSZXBsYWNlbWVudC5hcHBlbmQocmVwbGFjZW1lbnQuZ2V0Q2hhcmFjdGVyczxDaGFy
VHlwZT4oKSArIG9mZnNldCwgcmVwbGFjZW1lbnQubGVuZ3RoKCkgLSBvZmZzZXQpOworICAgICAg
ICBzdWJzdGl0dXRlZFJlcGxhY2VtZW50LmFwcGVuZChyZXBsYWNlbWVudC5nZXRDaGFyYWN0ZXJz
V2l0aFVwY29udmVydDxDaGFyVHlwZT4oKSArIG9mZnNldCwgcmVwbGFjZW1lbnQubGVuZ3RoKCkg
LSBvZmZzZXQpOwogCiAgICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5zaHJpbmtUb0ZpdCgpOwot
ICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChzdWJzdGl0dXRlZFJlcGxhY2VtZW50KTsKKyAgICBy
ZXR1cm4gU3RyaW5nOjphZG9wdChzdWJzdGl0dXRlZFJlcGxhY2VtZW50KTsKIH0KIAotc3RhdGlj
IGlubGluZSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBVU3RyaW5nJiBy
ZXBsYWNlbWVudCwgY29uc3QgVVN0cmluZyYgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJl
Z0V4cCogcmVnKQorc3RhdGljIGlubGluZSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2Vz
KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBp
bnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKQogewogICAgIHNpemVfdCBpID0gcmVwbGFjZW1lbnQu
ZmluZCgnJCcpOwogICAgIGlmIChVTkxJS0VMWShpICE9IG5vdEZvdW5kKSkgewpAQCAtMjQ5LDcg
KzI0OSw3IEBAIHN0YXRpYyBpbmxpbmUgVVN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMo
Y29uc3QgVVN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0CiAgICAgcmV0dXJuIHJlcGxhY2VtZW50
OwogfQogCi1zdGF0aWMgaW5saW5lIGludCBsb2NhbGVDb21wYXJlKGNvbnN0IFVTdHJpbmcmIGEs
IGNvbnN0IFVTdHJpbmcmIGIpCitzdGF0aWMgaW5saW5lIGludCBsb2NhbGVDb21wYXJlKGNvbnN0
IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKQogewogICAgIHJldHVybiBDb2xsYXRvcjo6dXNl
ckRlZmF1bHQoKS0+Y29sbGF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihhLmNo
YXJhY3RlcnMoKSksIGEubGVuZ3RoKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+
KGIuY2hhcmFjdGVycygpKSwgYi5sZW5ndGgoKSk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgcHVi
bGljOgogICAgIGludCBsZW5ndGg7CiB9OwogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyY2VWYWws
IGNvbnN0IFVTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1Jhbmdl
cywgaW50IHJhbmdlQ291bnQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyY2VWYWwsIGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmdSYW5nZSogc3Vic3RyaW5nUmFuZ2VzLCBpbnQgcmFu
Z2VDb3VudCkKIHsKICAgICBpZiAocmFuZ2VDb3VudCA9PSAxKSB7CiAgICAgICAgIGludCBzb3Vy
Y2VTaXplID0gc291cmNlLmxlbmd0aCgpOwpAQCAtMjc4LDcgKzI3OCw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNT
dHJpbmcqIHNvdXJjCiAgICAgICAgIGludCBsZW5ndGggPSBzdWJzdHJpbmdSYW5nZXNbMF0ubGVu
Z3RoOwogICAgICAgICBpZiAocG9zaXRpb24gPD0gMCAmJiBsZW5ndGggPj0gc291cmNlU2l6ZSkK
ICAgICAgICAgICAgIHJldHVybiBzb3VyY2VWYWw7Ci0gICAgICAgIC8vIFdlIGNvdWxkIGNhbGwg
VVN0cmluZzo6c3Vic3RyLCBidXQgdGhpcyB3b3VsZCByZXN1bHQgaW4gcmVkdW5kYW50IGNoZWNr
cworICAgICAgICAvLyBXZSBjb3VsZCBjYWxsIFN0cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwo
KSwgYnV0IHRoaXMgd291bGQgcmVzdWx0IGluIHJlZHVuZGFudCBjaGVja3MuCiAgICAgICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmdJbXBsOjpjcmVhdGUoc291cmNlLmltcGwoKSwgbWF4
KDAsIHBvc2l0aW9uKSwgbWluKHNvdXJjZVNpemUsIGxlbmd0aCkpKTsKICAgICB9CiAKQEAgLTMy
NSw3ICszMjUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3Vic3Ry
aW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3VyYwogICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCBpbXBsLnJlbGVhc2UoKSk7CiB9CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLCBKU1N0
cmluZyogc291cmNlVmFsLCBjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1Jhbmdl
KiBzdWJzdHJpbmdSYW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBVU3RyaW5nKiBzZXBhcmF0
b3JzLCBpbnQgc2VwYXJhdG9yQ291bnQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpz
U3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcq
IHNvdXJjZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJz
dHJpbmdSYW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBTdHJpbmcqIHNlcGFyYXRvcnMsIGlu
dCBzZXBhcmF0b3JDb3VudCkKIHsKICAgICBpZiAocmFuZ2VDb3VudCA9PSAxICYmIHNlcGFyYXRv
ckNvdW50ID09IDApIHsKICAgICAgICAgaW50IHNvdXJjZVNpemUgPSBzb3VyY2UubGVuZ3RoKCk7
CkBAIC0zMzMsNyArMzMzLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGlj
ZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICAgICAgaW50
IGxlbmd0aCA9IHN1YnN0cmluZ1Jhbmdlc1swXS5sZW5ndGg7CiAgICAgICAgIGlmIChwb3NpdGlv
biA8PSAwICYmIGxlbmd0aCA+PSBzb3VyY2VTaXplKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJj
ZVZhbDsKLSAgICAgICAgLy8gV2UgY291bGQgY2FsbCBVU3RyaW5nOjpzdWJzdHIsIGJ1dCB0aGlz
IHdvdWxkIHJlc3VsdCBpbiByZWR1bmRhbnQgY2hlY2tzCisgICAgICAgIC8vIFdlIGNvdWxkIGNh
bGwgU3RyaW5nOjpzdWJzdHJpbmdTaGFyaW5nSW1wbCgpLCBidXQgdGhpcyB3b3VsZCByZXN1bHQg
aW4gcmVkdW5kYW50IGNoZWNrcy4KICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFN0cmlu
Z0ltcGw6OmNyZWF0ZShzb3VyY2UuaW1wbCgpLCBtYXgoMCwgcG9zaXRpb24pLCBtaW4oc291cmNl
U2l6ZSwgbGVuZ3RoKSkpOwogICAgIH0KIApAQCAtNDAzLDcgKzQwMyw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0
YXRlKiBleGVjLCBKCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGltcGwucmVsZWFzZSgpKTsK
IH0KIAotc3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZW1vdmVVc2luZ1JlZ0V4
cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IFVTdHJpbmcm
IHNvdXJjZSwgUmVnRXhwKiByZWdFeHApCitzdGF0aWMgTkVWRVJfSU5MSU5FIEVuY29kZWRKU1Zh
bHVlIHJlbW92ZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0
cmluZywgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFJlZ0V4cCogcmVnRXhwKQogewogICAgIHNpemVf
dCBsYXN0SW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSAwOwpAQCAtNDQ0
LDEzICs0NDQsMTMgQEAgc3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZW1vdmVV
c2luZ1JlZ0V4cFNlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3QKIHN0YXRpYyBORVZFUl9JTkxJ
TkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIHN0cmluZywgSlNWYWx1ZSBzZWFyY2hWYWx1ZSkKIHsKICAgICBKU1ZhbHVl
IHJlcGxhY2VWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIFVTdHJpbmcgcmVwbGFjZW1l
bnRTdHJpbmc7CisgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nOwogICAgIENhbGxEYXRhIGNh
bGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEocmVwbGFjZVZhbHVl
LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAg
cmVwbGFjZW1lbnRTdHJpbmcgPSByZXBsYWNlVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogCi0gICAgY29uc3QgVVN0cmluZyYgc291cmNlID0gc3RyaW5nLT52YWx1ZShleGVjKTsK
KyAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CiAgICAgdW5z
aWduZWQgc291cmNlTGVuID0gc291cmNlLmxlbmd0aCgpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwpAQCAt
NDc0LDcgKzQ3NCw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFj
ZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTCiAgICAgdW5zaWduZWQgc3Rh
cnRQb3NpdGlvbiA9IDA7CiAKICAgICBWZWN0b3I8U3RyaW5nUmFuZ2UsIDE2PiBzb3VyY2VSYW5n
ZXM7Ci0gICAgVmVjdG9yPFVTdHJpbmcsIDE2PiByZXBsYWNlbWVudHM7CisgICAgVmVjdG9yPFN0
cmluZywgMTY+IHJlcGxhY2VtZW50czsKIAogICAgIC8vIFRoaXMgaXMgZWl0aGVyIGEgbG9vcCAo
aWYgZ2xvYmFsIGlzIHNldCkgb3IgYSBvbmUtd2F5IChpZiBub3QpLgogICAgIGlmIChnbG9iYWwg
JiYgY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUykgewpAQCAtNjAxLDcgKzYwMSw3IEBAIHN0YXRpYyBO
RVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNT
dGF0ZSogZXhlYywgSlNTCiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXBsTGVuKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChzdWJzdGl0dXRlQmFja3JlZmVy
ZW5jZXMocmVwbGFjZW1lbnRTdHJpbmcsIHNvdXJjZSwgb3ZlY3RvciwgcmVnRXhwKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50
cy5hcHBlbmQoVVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50
cy5hcHBlbmQoU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApA
QCAtNjI4LDggKzYyOCw4IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVw
bGFjZVVzaW5nUmVnRXhwU2VhcmNoKEV4ZWNTdGF0ZSogZXhlYywgSlNTCiAKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIGpzU3RyaW5nLCBKU1ZhbHVlIHNlYXJjaFZhbHVlKQogewotICAgIGNvbnN0
IFVTdHJpbmcmIHN0cmluZyA9IGpzU3RyaW5nLT52YWx1ZShleGVjKTsKLSAgICBVU3RyaW5nIHNl
YXJjaFN0cmluZyA9IHNlYXJjaFZhbHVlLnRvVVN0cmluZyhleGVjKTsKKyAgICBjb25zdCBTdHJp
bmcmIHN0cmluZyA9IGpzU3RyaW5nLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgc2VhcmNoU3Ry
aW5nID0gc2VhcmNoVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIApAQCAtNjUxLDE5ICs2NTEsMTkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSByZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goRXhlY1N0YXRlKiBleGVjLCBKU1N0cmlu
ZyoKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQogCi0gICAgVVN0cmluZyByZXBsYWNlU3RyaW5nID0gcmVwbGFjZVZhbHVlLnRvVVN0cmlu
ZyhleGVjKTsKKyAgICBTdHJpbmcgcmVwbGFjZVN0cmluZyA9IHJlcGxhY2VWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgU3RyaW5n
SW1wbCogc3RyaW5nSW1wbCA9IHN0cmluZy5pbXBsKCk7Ci0gICAgVVN0cmluZyBsZWZ0UGFydChT
dHJpbmdJbXBsOjpjcmVhdGUoc3RyaW5nSW1wbCwgMCwgbWF0Y2hTdGFydCkpOworICAgIFN0cmlu
ZyBsZWZ0UGFydChTdHJpbmdJbXBsOjpjcmVhdGUoc3RyaW5nSW1wbCwgMCwgbWF0Y2hTdGFydCkp
OwogCiAgICAgc2l6ZV90IG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIHNlYXJjaFN0cmluZy5pbXBs
KCktPmxlbmd0aCgpOwogICAgIGludCBvdmVjdG9yWzJdID0geyBtYXRjaFN0YXJ0LCAgbWF0Y2hF
bmR9OwotICAgIFVTdHJpbmcgbWlkZGxlUGFydCA9IHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhy
ZXBsYWNlU3RyaW5nLCBzdHJpbmcsIG92ZWN0b3IsIDApOworICAgIFN0cmluZyBtaWRkbGVQYXJ0
ID0gc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKHJlcGxhY2VTdHJpbmcsIHN0cmluZywgb3ZlY3Rv
ciwgMCk7CiAKICAgICBzaXplX3QgbGVmdExlbmd0aCA9IHN0cmluZ0ltcGwtPmxlbmd0aCgpIC0g
bWF0Y2hFbmQ7Ci0gICAgVVN0cmluZyByaWdodFBhcnQoU3RyaW5nSW1wbDo6Y3JlYXRlKHN0cmlu
Z0ltcGwsIG1hdGNoRW5kLCBsZWZ0TGVuZ3RoKSk7CisgICAgU3RyaW5nIHJpZ2h0UGFydChTdHJp
bmdJbXBsOjpjcmVhdGUoc3RyaW5nSW1wbCwgbWF0Y2hFbmQsIGxlZnRMZW5ndGgpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNTdHJpbmcoZXhlYywgbGVmdFBhcnQsIG1pZGRs
ZVBhcnQsIHJpZ2h0UGFydCkpOwogfQogCkBAIC02OTksNyArNjk5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKiBleGVjKQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgdW5zaWduZWQgbGVuID0gcy5s
ZW5ndGgoKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEw
LmlzVUludDMyKCkpIHsKQEAgLTcxOSw3ICs3MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgdW5zaWduZWQgbGVuID0gcy5sZW5ndGgo
KTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUlu
dDMyKCkpIHsKQEAgLTc1MywxMSArNzUzLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgw
KTsKICAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgVVN0cmluZyB1MiA9
IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgdTIgPSBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICBzaXplX3QgcmVzdWx0OwogICAgIGlmIChh
MS5pc1VuZGVmaW5lZCgpKQpAQCAtNzg4LDEzICs3ODgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRo
aXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlz
VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpbnQgbGVuID0gcy5sZW5ndGgo
KTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGEx
ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAKLSAgICBVU3RyaW5nIHUyID0gYTAudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyB1MiA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICBkb3VibGUgZHBvcyA9IGExLnRvSW50ZWdlclByZXNlcnZlTmFOKGV4ZWMp
OwogICAgIGlmIChkcG9zIDwgMCkKICAgICAgICAgZHBvcyA9IDA7CkBAIC04MTMsNyArODEzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNNYXRjaChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBD
aGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKICAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwotICAg
IFVTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBzdHJpbmct
PnZhbHVlKGV4ZWMpOwogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9i
YWxEYXRhKCk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC04MzYs
NyArODM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNN
YXRjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAqICByZXBsYWNlZCB3aXRoIHRoZSByZXN1
bHQgb2YgdGhlIGV4cHJlc3Npb24gbmV3IFJlZ0V4cChyZWdleHApLgogICAgICAgICAgKiAgUGVy
IEVDTUEgMTUuMTAuNC4xLCBpZiBhMCBpcyB1bmRlZmluZWQgc3Vic3RpdHV0ZSB0aGUgZW1wdHkg
c3RyaW5nLgogICAgICAgICAgKi8KLSAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBhMC5pc1VuZGVmaW5lZCgpID8gVVN0cmluZygiIikgOiBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIE5vRmxhZ3MpOworICAgICAgICByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGEwLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmco
IiIpIDogYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBOb0ZsYWdzKTsKICAgICAgICAg
aWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpOwog
ICAgIH0KQEAgLTg3Miw3ICs4NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1NlYXJjaChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7
CisgICAgU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwogICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhl
Yy0+YXJndW1lbnQoMCk7CkBAIC04ODcsNyArODg3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTZWFyY2goRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
KiAgcmVwbGFjZWQgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uIG5ldyBSZWdFeHAo
cmVnZXhwKS4KICAgICAgICAgICogIFBlciBFQ01BIDE1LjEwLjQuMSwgaWYgYTAgaXMgdW5kZWZp
bmVkIHN1YnN0aXR1dGUgdGhlIGVtcHR5IHN0cmluZy4KICAgICAgICAgICovCi0gICAgICAgIHJl
ZyA9IFJlZ0V4cDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgYTAuaXNVbmRlZmluZWQoKSA/
IFVTdHJpbmcoIiIpIDogYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBOb0ZsYWdzKTsK
KyAgICAgICAgcmVnID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhMC5pc1Vu
ZGVmaW5lZCgpID8gU3RyaW5nKCIiKSA6IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwg
Tm9GbGFncyk7CiAgICAgICAgIGlmICghcmVnLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZy0+ZXJyb3JN
ZXNzYWdlKCkpKTsKICAgICB9CkBAIC05MDEsNyArOTAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpbnQgbGVuID0gcy5sZW5ndGgoKTsKIAog
ICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTkyNSw3ICs5MjUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0
ZSogZXhlYykKIAogLy8gUmV0dXJuIHRydWUgaW4gY2FzZSBvZiBlYXJseSByZXR1cm4gKHJlc3Vs
dExlbmd0aCBnb3QgdG8gbGltaXRMZW5ndGgpLgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3Rl
ckltcGwoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiByZXN1bHQsIGNvbnN0IFVTdHJpbmcmIGlu
cHV0LCBTdHJpbmdJbXBsKiBzdHJpbmcsIFVDaGFyIHNlcGFyYXRvckNoYXJhY3Rlciwgc2l6ZV90
JiBwb3NpdGlvbiwgdW5zaWduZWQmIHJlc3VsdExlbmd0aCwgdW5zaWduZWQgbGltaXRMZW5ndGgp
CitzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBs
KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogcmVzdWx0LCBjb25zdCBTdHJpbmcmIGlucHV0LCBT
dHJpbmdJbXBsKiBzdHJpbmcsIFVDaGFyIHNlcGFyYXRvckNoYXJhY3Rlciwgc2l6ZV90JiBwb3Np
dGlvbiwgdW5zaWduZWQmIHJlc3VsdExlbmd0aCwgdW5zaWduZWQgbGltaXRMZW5ndGgpCiB7CiAg
ICAgLy8gMTIuIExldCBxID0gcC4KICAgICBzaXplX3QgbWF0Y2hQb3NpdGlvbjsKQEAgLTk2Miw3
ICs5NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Nw
bGl0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIC8vIDIuIExldCBTIGJlIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyBUb1N0cmluZywgZ2l2aW5nIGl0IHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVu
dC4KICAgICAvLyA2LiBMZXQgcyBiZSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gUy4KLSAg
ICBVU3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogCiAgICAgLy8gMy4gTGV0IEEgYmUgYSBuZXcgYXJyYXkgY3JlYXRlZCBhcyBpZiBieSB0aGUg
ZXhwcmVzc2lvbiBuZXcgQXJyYXkoKQogICAgIC8vICAgIHdoZXJlIEFycmF5IGlzIHRoZSBzdGFu
ZGFyZCBidWlsdC1pbiBjb25zdHJ1Y3RvciB3aXRoIHRoYXQgbmFtZS4KQEAgLTEwNjQsNyArMTA2
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXQo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgVVN0cmluZyBzZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgIFN0cmluZyBzZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICAgICAgLy8gOS4gSWYgbGltID09
IDAsIHJldHVybiBBLgogICAgICAgICBpZiAoIWxpbWl0KQpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
OwogICAgIHVuc2lnbmVkIGxlbjsKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSAwOwotICAgIFVT
dHJpbmcgdVN0cmluZzsKKyAgICBTdHJpbmcgdVN0cmluZzsKICAgICBpZiAodGhpc1ZhbHVlLmlz
U3RyaW5nKCkpIHsKICAgICAgICAganNTdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPih0aGlzVmFs
dWUuYXNDZWxsKCkpOwogICAgICAgICBsZW4gPSBqc1N0cmluZy0+bGVuZ3RoKCk7CkBAIC0xMjQ3
LDcgKzEyNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpOwotICAgIGNvbnN0IFVTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKKyAg
ICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKIAogICAgIGludCBzU2l6ZSA9
IHMubGVuZ3RoKCk7CiAgICAgaWYgKCFzU2l6ZSkKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0
YXRlKiBleGVjKQogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBsb3dlciA9IG91ckltcGwtPmxvd2Vy
KCk7CiAgICAgaWYgKG91ckltcGwgPT0gbG93ZXIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc1ZhbCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBV
U3RyaW5nKGxvd2VyLnJlbGVhc2UoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKGV4ZWMsIFN0cmluZyhsb3dlci5yZWxlYXNlKCkpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBl
eGVjKQpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHRoaXNW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKTsKLSAgICBjb25zdCBVU3RyaW5nJiBzID0gc1ZhbC0+dmFs
dWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nJiBzID0gc1ZhbC0+dmFsdWUoZXhlYyk7CiAKICAg
ICBpbnQgc1NpemUgPSBzLmxlbmd0aCgpOwogICAgIGlmICghc1NpemUpCkBAIC0xMjc2LDcgKzEy
NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBw
ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIgPSBz
SW1wbC0+dXBwZXIoKTsKICAgICBpZiAoc0ltcGwgPT0gdXBwZXIpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoc1ZhbCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
ZyhleGVjLCBVU3RyaW5nKHVwcGVyLnJlbGVhc2UoKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFN0cmluZyh1cHBlci5yZWxlYXNlKCkpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShF
eGVjU3RhdGUqIGV4ZWMpCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhl
Yy0+YXJndW1lbnQoMCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihsb2Nh
bGVDb21wYXJlKHMsIGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpKTsKQEAgLTEyOTgs
NyArMTI5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
QmlnKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENo
ZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
PGJpZz4iLCBzLCAiPC9iaWc+IikpOwogfQogCkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NtYWxsKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBp
ZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxl
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9
IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0
aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPHNtYWxsPiIsIHMsICI8L3Nt
YWxsPiIpKTsKIH0KIApAQCAtMTMxNiw3ICsxMzE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNCbGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFr
ZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxibGluaz4iLCBzLCAiPC9ibGluaz4iKSk7CiB9CiAK
QEAgLTEzMjUsNyArMTMyNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jQm9sZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLSAgICBVU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIjxiPiIsIHMsICI8L2I+IikpOwogfQogCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZpeGVkKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
ICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29l
cmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJp
bmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPHR0PiIsIHMsICI8
L3R0PiIpKTsKIH0KIApAQCAtMTM0Myw3ICsxMzQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNN
YWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGk+IiwgcywgIjwvaT4iKSk7CiB9CiAKQEAgLTEz
NTIsNyArMTM1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU3RyaWtlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
Pmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhl
eGVjLCAiPHN0cmlrZT4iLCBzLCAiPC9zdHJpa2U+IikpOwogfQogCkBAIC0xMzYxLDcgKzEzNjEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVj
dENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBV
U3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxzdWI+Iiwg
cywgIjwvc3ViPiIpKTsKIH0KIApAQCAtMTM3MCw3ICsxMzcwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdXAoRXhlY1N0YXRlKiBleGVjKQogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkgLy8gQ2hlY2tPYmplY3RDb2VyY2libGUKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8c3VwPiIsIHMsICI8L3N1cD4iKSk7CiB9CiAK
QEAgLTEzNzksNyArMTM3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jRm9udGNvbG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250
IGNvbG9yPVwiIiwgYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXCI+IiwgcywgIjwv
Zm9udD4iKSk7CiB9CkBAIC0xMzg5LDcgKzEzODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKIAogICAgIHVpbnQzMl90IHNtYWxsSW50ZWdlcjsKQEAgLTE0MzQsNyArMTQzNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUo
KTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIC8vIENoZWNrT2JqZWN0
Q29lcmNpYmxlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFVT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIEpTVmFs
dWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxhIG5hbWU9XCIiLCBhMC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyksICJcIj4iLCBzLCAiPC9hPiIpKTsKIH0KQEAgLTE0NDQsOSArMTQ0NCw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVj
dENvZXJjaWJsZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBV
U3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1Zh
bHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgVVN0cmluZyBsaW5rVGV4dCA9IGEwLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbGlua1RleHQgPSBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKICAgICB1bnNpZ25lZCBsaW5rVGV4dFNpemUgPSBs
aW5rVGV4dC5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBzdHJpbmdTaXplID0gcy5sZW5ndGgoKTsK
QEAgLTE0ODksNyArMTQ4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0cmltU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUsIGludCB0cmltS2luCiB7CiAgICAgaWYg
KHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAvLyBDaGVja09iamVjdENvZXJjaWJsZQog
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7Ci0gICAgVVN0cmluZyBzdHIgPSB0
aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzdHIgPSB0
aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIHVuc2lnbmVkIGxlZnQg
PSAwOwogICAgIGlmICh0cmltS2luZCAmIFRyaW1MZWZ0KSB7CiAgICAgICAgIHdoaWxlIChsZWZ0
IDwgc3RyLmxlbmd0aCgpICYmIGlzVHJpbVdoaXRlc3BhY2Uoc3RyW2xlZnRdKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZTNhMjViYjg3MWM1MzI3ZjFh
NzI1YzI3OGZhZWUwYjY2MmI0OGY3Mi4uNTczNjhiZWU4Y2M1M2IxYzFhNmViYmUwOWIzN2FhOTI2
OGRjNzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAg
LTM2LDEyICszNiwxMiBAQAogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaCIKICNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCi0jaW5jbHVkZSAi
VVN0cmluZy5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlICJXZWFrLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgogCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjU5LDcgKzI1OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QpOwogCiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNH
bG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgbmFtZSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSk7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAog
ICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBt
X2hhc0dldHRlclNldHRlclByb3BlcnRpZXM7IH0KQEAgLTUwMSw3ICs1MDEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRP
ZmZzZXQ7CiAgICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgbmFtZSkKKyAgICBpbmxp
bmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CiAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5kZXggMjA2N2E4
OTk1NDZmNzg4YTc5YTQ3N2U3ZDgwZGM3ZjBlMjFkYjI2MC4uN2M5ZDUwODk0ZTNlYzlmMmVhNzI2
NjQ4YmFhYzMyYmUzMGMzYTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTI2LDExICsyNiwxMSBA
QAogI2lmbmRlZiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVfaAogI2RlZmluZSBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGVfaAogCi0jaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIldlYWtH
Q01hcC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCBiM2NmMjAyOWVhYmQ2ODRiYTQ3NGE3NjVlNjFlNmMz
YTkzZWE1OGY3Li4wOGVhOGMxNjMwOGEzMmJlZDc3NTA1MmVhNTNiYTNjNzc0YjMwNDhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTMwLDEwICsz
MCwxMCBAQAogI2RlZmluZSBTeW1ib2xUYWJsZV9oCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgot
I2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8
d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGE1NzM1YzRkZjdjMGFhMTJmZTEwNWRmN2E0ZDRmZjVlOGU0Mzk4NS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2MiArMCwwIEBACi0v
KgotICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcg
Q2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQotICogIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIKLQotI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCi0jaW5jbHVkZSA8Y3R5cGUuaD4K
LSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL2R0b2EuaD4KLSNpbmNsdWRlIDx3dGYv
dW5pY29kZS9VVEY4Lmg+Ci0KLSNpZiBIQVZFKFNUUklOR1NfSCkKLSNpbmNsdWRlIDxzdHJpbmdz
Lmg+Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLXVzaW5nIG5hbWVzcGFjZSBXVEY6
OlVuaWNvZGU7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgSlNDIHsKLQotQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFVTdHJpbmcpID09IHNpemVvZih2b2lkKiksIFVTdHJpbmdfc2hv
dWxkX3N0YXlfc21hbGwpOwotCi0vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0
YS4KLVVTdHJpbmc6OlVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCkKLSAgICA6IG1faW1wbChjaGFyYWN0ZXJzID8gU3RyaW5nSW1wbDo6Y3JlYXRlKGNoYXJh
Y3RlcnMsIGxlbmd0aCkgOiAwKQotewotfQotCi0vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBV
VEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi1VU3RyaW5nOjpVU3Ry
aW5nKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKQotewotICAgIGlmICghY2hhcmFjdGVycykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaW50IGxlbmd0aCA9IDA7Ci0gICAgd2hpbGUgKGNoYXJhY3Rl
cnNbbGVuZ3RoXSAhPSBVQ2hhcigwKSkKLSAgICAgICAgKytsZW5ndGg7Ci0KLSAgICBtX2ltcGwg
PSBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycywgbGVuZ3RoKTsKLX0KLQotLy8gQ29uc3Ry
dWN0IGEgc3RyaW5nIHdpdGggbGF0aW4xIGRhdGEuCi1VU3RyaW5nOjpVU3RyaW5nKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBtX2ltcGwoY2hhcmFjdGVy
cyA/IFN0cmluZ0ltcGw6OmNyZWF0ZShjaGFyYWN0ZXJzLCBsZW5ndGgpIDogMCkKLXsKLX0KLQot
VVN0cmluZzo6VVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgp
Ci0gICAgOiBtX2ltcGwoY2hhcmFjdGVycyA/IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCkgOiAwKQotewotfQotCi0v
LyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWlu
YXRlZCBzb3VyY2UuCi1VU3RyaW5nOjpVU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKQot
ICAgIDogbV9pbXBsKGNoYXJhY3RlcnMgPyBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVycykg
OiAwKQotewotfQotCi1VU3RyaW5nOjpVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCi0g
ICAgOiBtX2ltcGwoY2hhcmFjdGVycyA/IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycykpIDogMCkKLXsKLX0KLQotVVN0cmluZyBVU3Ry
aW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlIGQpCi17Ci0gICAgTnVtYmVyVG9T
dHJpbmdCdWZmZXIgYnVmZmVyOwotICAgIHJldHVybiBVU3RyaW5nKG51bWJlclRvU3RyaW5nKGQs
IGJ1ZmZlcikpOwotfQotCi1VU3RyaW5nIFVTdHJpbmc6OnN1YnN0cmluZ1NoYXJpbmdJbXBsKHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBX
ZSB1c2VkIHRvIGNoZWNrIGFnYWluc3QgYSBsaW1pdCBvZiBIZWFwOjptaW5FeHRyYUNvc3QgLyBz
aXplb2YoVUNoYXIpLgotCi0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gdGhpcy0+bGVuZ3Ro
KCk7Ci0gICAgb2Zmc2V0ID0gbWluKG9mZnNldCwgc3RyaW5nTGVuZ3RoKTsKLSAgICBsZW5ndGgg
PSBtaW4obGVuZ3RoLCBzdHJpbmdMZW5ndGggLSBvZmZzZXQpOwotCi0gICAgaWYgKCFvZmZzZXQg
JiYgbGVuZ3RoID09IHN0cmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIHJl
dHVybiBVU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZShtX2ltcGwsIG9mZnNldCwgbGVuZ3RoKSk7
Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgY2hhciAqczIp
Ci17Ci0gICAgaWYgKHMxLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICFzMjsKLQotICAgIHJl
dHVybiBlcXVhbChzMS5pbXBsKCksIHMyKTsKLX0KLQotLy8gVGhpcyBtZXRob2QgYXNzdW1lcyB0
aGF0IGFsbCBzaW1wbGUgY2hlY2tzIGhhdmUgYmVlbiBwZXJmb3JtZWQgYnkKLS8vIHRoZSBpbmxp
bmVkIG9wZXJhdG9yPT0oKSBpbiB0aGUgaGVhZGVyIGZpbGUuCi1ib29sIGVxdWFsU2xvd0Nhc2Uo
Y29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIFN0cmluZ0ltcGwq
IHJlcDEgPSBzMS5pbXBsKCk7Ci0gICAgU3RyaW5nSW1wbCogcmVwMiA9IHMyLmltcGwoKTsKLSAg
ICB1bnNpZ25lZCBzaXplMSA9IHJlcDEtPmxlbmd0aCgpOwotCi0gICAgLy8gQXQgdGhpcyBwb2lu
dCB3ZSBrbm93IAotICAgIC8vICAgKGEpIHRoYXQgdGhlIHN0cmluZ3MgYXJlIHRoZSBzYW1lIGxl
bmd0aCBhbmQKLSAgICAvLyAgIChiKSB0aGF0IHRoZXkgYXJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGxl
bmd0aC4KLSAgICBib29sIHMxSXM4Qml0ID0gcmVwMS0+aXM4Qml0KCk7Ci0gICAgYm9vbCBzMklz
OEJpdCA9IHJlcDItPmlzOEJpdCgpOwotICAgIAotICAgIGlmIChzMUlzOEJpdCkgewotICAgICAg
ICBjb25zdCBMQ2hhciogZDEgPSByZXAxLT5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBpZiAoczJJ
czhCaXQpIHsKLSAgICAgICAgICAgIGNvbnN0IExDaGFyKiBkMiA9IHJlcDItPmNoYXJhY3RlcnM4
KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChkMSA9PSBkMikgLy8gQ2hlY2sgdG8g
c2VlIGlmIHRoZSBkYXRhIHBvaW50ZXJzIGFyZSB0aGUgc2FtZS4KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRG8gcXVpY2sgY2hlY2tz
IGZvciBzaXplcyAxIGFuZCAyLgotICAgICAgICAgICAgc3dpdGNoIChzaXplMSkgewotICAgICAg
ICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgIHJldHVybiBkMVswXSA9PSBkMlswXTsKLSAg
ICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gKGQxWzBdID09IGQyWzBd
KSAmIChkMVsxXSA9PSBkMlsxXSk7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIHJldHVybiAoIW1lbWNtcChkMSwgZDIsIHNpemUxICogc2l6ZW9mKExDaGFyKSkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBVQ2hhciogZDIg
PSByZXAyLT5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplMTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoZDFbaV0gIT0gZDJbaV0p
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICAKLSAgICBpZiAoczJJczhCaXQpIHsKLSAgICAgICAgY29uc3Qg
VUNoYXIqIGQxID0gcmVwMS0+Y2hhcmFjdGVyczE2KCk7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBk
MiA9IHJlcDItPmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTE7IGkrKykgewotICAgICAgICAgICAgaWYgKGQxW2ldICE9IGQyW2ld
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgCi0gICAgfQotICAgIAotICAgIGNvbnN0IFVDaGFyKiBkMSA9IHJl
cDEtPmNoYXJhY3RlcnMxNigpOwotICAgIGNvbnN0IFVDaGFyKiBkMiA9IHJlcDItPmNoYXJhY3Rl
cnMxNigpOwotICAgIAotICAgIGlmIChkMSA9PSBkMikgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBk
YXRhIHBvaW50ZXJzIGFyZSB0aGUgc2FtZS4KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0g
ICAgLy8gRG8gcXVpY2sgY2hlY2tzIGZvciBzaXplcyAxIGFuZCAyLgotICAgIHN3aXRjaCAoc2l6
ZTEpIHsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVybiBkMVswXSA9PSBkMlswXTsKLSAgICBj
YXNlIDI6Ci0gICAgICAgIHJldHVybiAoZDFbMF0gPT0gZDJbMF0pICYgKGQxWzFdID09IGQyWzFd
KTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gKCFtZW1jbXAoZDEsIGQyLCBzaXplMSAq
IHNpemVvZihVQ2hhcikpKTsKLSAgICB9Ci19Ci0KLWJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJp
bmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBsMSA9IHMx
Lmxlbmd0aCgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGwyID0gczIubGVuZ3RoKCk7Ci0gICAgY29u
c3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIGlmIChzMS5pczhCaXQo
KSAmJiBzMi5pczhCaXQoKSkgewotICAgICAgICBjb25zdCBMQ2hhciogYzEgPSBzMS5jaGFyYWN0
ZXJzOCgpOwotICAgICAgICBjb25zdCBMQ2hhciogYzIgPSBzMi5jaGFyYWN0ZXJzOCgpOwotICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwotICAgICAgICB3aGlsZSAobGVuZ3RoIDwgbG1pbiAm
JiAqYzEgPT0gKmMyKSB7Ci0gICAgICAgICAgICBjMSsrOwotICAgICAgICAgICAgYzIrKzsKLSAg
ICAgICAgICAgIGxlbmd0aCsrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChsZW5ndGggPCBsbWlu
KQotICAgICAgICAgICAgcmV0dXJuIChjMVswXSA8IGMyWzBdKTsKLQotICAgICAgICByZXR1cm4g
KGwxIDwgbDIpOyAgICAgICAgCi0gICAgfQotICAgIGNvbnN0IFVDaGFyKiBjMSA9IHMxLmNoYXJh
Y3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogYzIgPSBzMi5jaGFyYWN0ZXJzKCk7Ci0gICAgdW5z
aWduZWQgbGVuZ3RoID0gMDsKLSAgICB3aGlsZSAobGVuZ3RoIDwgbG1pbiAmJiAqYzEgPT0gKmMy
KSB7Ci0gICAgICAgIGMxKys7Ci0gICAgICAgIGMyKys7Ci0gICAgICAgIGxlbmd0aCsrOwotICAg
IH0KLSAgICBpZiAobGVuZ3RoIDwgbG1pbikKLSAgICAgICAgcmV0dXJuIChjMVswXSA8IGMyWzBd
KTsKLQotICAgIHJldHVybiAobDEgPCBsMik7Ci19Ci0KLWJvb2wgb3BlcmF0b3I+KGNvbnN0IFVT
dHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBsMSA9
IHMxLmxlbmd0aCgpOwotICAgIGNvbnN0IHVuc2lnbmVkIGwyID0gczIubGVuZ3RoKCk7Ci0gICAg
Y29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIGNvbnN0IFVDaGFy
KiBjMSA9IHMxLmNoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogYzIgPSBzMi5jaGFyYWN0
ZXJzKCk7Ci0gICAgdW5zaWduZWQgbCA9IDA7Ci0gICAgd2hpbGUgKGwgPCBsbWluICYmICpjMSA9
PSAqYzIpIHsKLSAgICAgICAgYzErKzsKLSAgICAgICAgYzIrKzsKLSAgICAgICAgbCsrOwotICAg
IH0KLSAgICBpZiAobCA8IGxtaW4pCi0gICAgICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSk7Ci0K
LSAgICByZXR1cm4gKGwxID4gbDIpOwotfQotCi1DU3RyaW5nIFVTdHJpbmc6OmFzY2lpKCkgY29u
c3QKLXsKLSAgICAvLyBCYXNpYyBMYXRpbjEgKElTTykgZW5jb2RpbmcgLSBVbmljb2RlIGNoYXJh
Y3RlcnMgMC4uMjU1IGFyZQotICAgIC8vIHByZXNlcnZlZCwgY2hhcmFjdGVycyBvdXRzaWRlIG9m
IHRoaXMgcmFuZ2UgYXJlIGNvbnZlcnRlZCB0byAnPycuCi0KLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSB0aGlzLT5sZW5ndGgoKTsKLQotICAgIGlmICh0aGlzLT5pczhCaXQoKSkgewotICAgICAgICBj
b25zdCBMQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIAot
ICAgICAgICBjaGFyKiBjaGFyYWN0ZXJCdWZmZXI7Ci0gICAgICAgIENTdHJpbmcgcmVzdWx0ID0g
Q1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChsZW5ndGgsIGNoYXJhY3RlckJ1ZmZlcik7Ci0gICAg
ICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIExDaGFyIGNoID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgICAgIGNoYXJhY3Rl
ckJ1ZmZlcltpXSA9IGNoICYmIChjaCA8IDB4MjAgfHwgY2ggPiAweDdmKSA/ICc/JyA6IGNoOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgCi0gICAg
fQotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsK
LQotICAgIGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKLSAgICBDU3RyaW5nIHJlc3VsdCA9IENTdHJp
bmc6Om5ld1VuaW5pdGlhbGl6ZWQobGVuZ3RoLCBjaGFyYWN0ZXJCdWZmZXIpOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGNoID0g
Y2hhcmFjdGVyc1tpXTsKLSAgICAgICAgY2hhcmFjdGVyQnVmZmVyW2ldID0gY2ggJiYgKGNoIDwg
MHgyMCB8fCBjaCA+PSAweDdmKSA/ICc/JyA6IGNoOwotICAgIH0KLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUNTdHJpbmcgVVN0cmluZzo6bGF0aW4xKCkgY29uc3QKLXsKLSAgICAvLyBCYXNp
YyBMYXRpbjEgKElTTykgZW5jb2RpbmcgLSBVbmljb2RlIGNoYXJhY3RlcnMgMC4uMjU1IGFyZQot
ICAgIC8vIHByZXNlcnZlZCwgY2hhcmFjdGVycyBvdXRzaWRlIG9mIHRoaXMgcmFuZ2UgYXJlIGNv
bnZlcnRlZCB0byAnPycuCi0KLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsK
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMoKTsKLQotICAg
IGNoYXIqIGNoYXJhY3RlckJ1ZmZlcjsKLSAgICBDU3RyaW5nIHJlc3VsdCA9IENTdHJpbmc6Om5l
d1VuaW5pdGlhbGl6ZWQobGVuZ3RoLCBjaGFyYWN0ZXJCdWZmZXIpOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGNoID0gY2hhcmFj
dGVyc1tpXTsKLSAgICAgICAgY2hhcmFjdGVyQnVmZmVyW2ldID0gY2ggPiAweGZmID8gJz8nIDog
Y2g7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8gSGVscGVyIHRvIHdyaXRl
IGEgdGhyZWUtYnl0ZSBVVEYtOCBjb2RlIHBvaW50IHRvIHRoZSBidWZmZXIsIGNhbGxlciBtdXN0
IGNoZWNrIHJvb20gaXMgYXZhaWxhYmxlLgotc3RhdGljIGlubGluZSB2b2lkIHB1dFVURjhUcmlw
bGUoY2hhciomIGJ1ZmZlciwgVUNoYXIgY2gpCi17Ci0gICAgQVNTRVJUKGNoID49IDB4MDgwMCk7
Ci0gICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oKChjaCA+PiAxMikgJiAweDBGKSB8
IDB4RTApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCgoY2ggPj4gNikgJiAw
eDNGKSB8IDB4ODApOwotICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KChjaCAmIDB4
M0YpIHwgMHg4MCk7Ci19Ci0KLUNTdHJpbmcgVVN0cmluZzo6dXRmOChib29sIHN0cmljdCkgY29u
c3QKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLQotICAgIGlmICgh
bGVuZ3RoKQotICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7Ci0KLSAgICAvLyBBbGxvY2F0
ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzCi0gICAgLy8g
KGFuIGluZGl2aWR1YWwgVVRGLTE2IFVDaGFyIGNhbiBvbmx5IGV4cGFuZCB0byAzIFVURi04IGJ5
dGVzKS4KLSAgICAvLyBPcHRpbWl6YXRpb24gaWRlYXMsIGlmIHdlIGZpbmQgdGhpcyBmdW5jdGlv
biBpcyBob3Q6Ci0gICAgLy8gICogV2UgY291bGQgc3BlY3VsYXRpdmVseSBjcmVhdGUgYSBDU3Ry
aW5nQnVmZmVyIHRvIGNvbnRhaW4gJ2xlbmd0aCcgCi0gICAgLy8gICAgY2hhcmFjdGVycywgYW5k
IHJlc2l6ZSBpZiBuZWNlc3NhcnkgKGkuZS4gaWYgdGhlIGJ1ZmZlciBjb250YWlucwotICAgIC8v
ICAgIG5vbi1hc2NpaSBjaGFyYWN0ZXJzKS4gKEFsdGVybmF0aXZlbHksIHNjYW4gdGhlIGJ1ZmZl
ciBmaXJzdCBmb3IKLSAgICAvLyAgICBhc2NpaSBjaGFyYWN0ZXJzLCBzbyB3ZSBrbm93IHRoaXMg
d2lsbCBiZSBzdWZmaWNpZW50KS4KLSAgICAvLyAgKiBXZSBjb3VsZCBhbGxvY2F0ZSBhIENTdHJp
bmdCdWZmZXIgd2l0aCBhbiBhcHByb3ByaWF0ZSBzaXplIHRvCi0gICAgLy8gICAgaGF2ZSBhIGdv
b2QgY2hhbmNlIG9mIGJlaW5nIGFibGUgdG8gd3JpdGUgdGhlIHN0cmluZyBpbnRvIHRoZQotICAg
IC8vICAgIGJ1ZmZlciB3aXRob3V0IHJlYWxsb2NpbmcgKHNheSwgMS41IHggbGVuZ3RoKS4KLSAg
ICBpZiAobGVuZ3RoID4gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDMpCi0gICAg
ICAgIHJldHVybiBDU3RyaW5nKCk7Ci0KLSAgICBWZWN0b3I8Y2hhciwgMTAyND4gYnVmZmVyVmVj
dG9yKGxlbmd0aCAqIDMpOwotICAgIGNoYXIqIGJ1ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7
Ci0KLSAgICBpZiAoaXM4Qml0KCkpIHsKLSAgICAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMg
PSB0aGlzLT5jaGFyYWN0ZXJzOCgpOwotCi0gICAgICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0
ID0gY29udmVydExhdGluMVRvVVRGOCgmY2hhcmFjdGVycywgY2hhcmFjdGVycyArIGxlbmd0aCwg
JmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMp
IHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lvbgotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGhpcy0+Y2hhcmFjdGVyczE2KCk7Ci0K
LSAgICAgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0VVRGMTZUb1VURjgoJmNo
YXJhY3RlcnMsIGNoYXJhY3RlcnMgKyBsZW5ndGgsICZidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZl
Y3Rvci5zaXplKCksIHN0cmljdCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQgIT0gdGFyZ2V0RXho
YXVzdGVkKTsgLy8gKGxlbmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29u
dmVyc2lvbgotCi0gICAgICAgIC8vIE9ubHkgcHJvZHVjZWQgZnJvbSBzdHJpY3QgY29udmVyc2lv
bi4KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBzb3VyY2VJbGxlZ2FsKQotICAgICAgICAgICAgcmV0
dXJuIENTdHJpbmcoKTsKLQotICAgICAgICAvLyBDaGVjayBmb3IgYW4gdW5jb252ZXJ0ZWQgaGln
aCBzdXJyb2dhdGUuCi0gICAgICAgIGlmIChyZXN1bHQgPT0gc291cmNlRXhoYXVzdGVkKSB7Ci0g
ICAgICAgICAgICBpZiAoc3RyaWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7
Ci0gICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBvbmUgdW5wYWlyZWQgaGlnaCBzdXJyb2dh
dGUuIFRyZWF0IGl0IHRoZSBzYW1lCi0gICAgICAgICAgICAvLyB3YXMgYXMgYW4gdW5wYWlyZWQg
aGlnaCBzdXJyb2dhdGUgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQgaW4KLSAgICAgICAgICAgIC8v
IHRoZSBtaWRkbGUgb2YgYSBzdHJpbmcgd2l0aCBub24tc3RyaWN0IGNvbnZlcnNpb24gLSB3aGlj
aCBpcwotICAgICAgICAgICAgLy8gdG8gc2F5LCBzaW1wbHkgZW5jb2RlIGl0IHRvIFVURi04Lgot
ICAgICAgICAgICAgQVNTRVJUKChjaGFyYWN0ZXJzICsgMSkgPT0gKHRoaXMtPmNoYXJhY3RlcnMo
KSArIGxlbmd0aCkpOwotICAgICAgICAgICAgQVNTRVJUKCgqY2hhcmFjdGVycyA+PSAweEQ4MDAp
ICYmICgqY2hhcmFjdGVycyA8PSAweERCRkYpKTsKLSAgICAgICAgICAgIC8vIFRoZXJlIHNob3Vs
ZCBiZSByb29tIGxlZnQsIHNpbmNlIG9uZSBVQ2hhciBoYXNuJ3QgYmVlbiBjb252ZXJ0ZWQuCi0g
ICAgICAgICAgICBBU1NFUlQoKGJ1ZmZlciArIDMpIDw9IChidWZmZXIgKyBidWZmZXJWZWN0b3Iu
c2l6ZSgpKSk7Ci0gICAgICAgICAgICBwdXRVVEY4VHJpcGxlKGJ1ZmZlciwgKmNoYXJhY3RlcnMp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9yLmRh
dGEoKSwgYnVmZmVyIC0gYnVmZmVyVmVjdG9yLmRhdGEoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwNjg1OGY5MzJkOGYyMDRkNjA3YjE4MTc1NjdiYjBiNTk4N2FmNTU1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDI4NiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYg
VVN0cmluZ19oCi0jZGVmaW5lIFVTdHJpbmdfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFVTdHJpbmcgewotcHVibGljOgotICAgIC8vIENv
bnN0cnVjdCBhIG51bGwgc3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJp
bmcuCi0gICAgVVN0cmluZygpIHsgfQotCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGgg
VVRGLTE2IGRhdGEuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIENvbnN0cnVjdCBhIHN0cmlu
ZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBK
U19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IFVDaGFyKik7Ci0KLSAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YS4KLSAgICBVU3RyaW5nKGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJp
bmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKLQotICAgIC8vIENv
bnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVk
IHNvdXJjZS4KLSAgICBVU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwotCi0gICAgLy8g
Q29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCi0g
ICAgVVN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7IH0KLSAgICBVU3Ry
aW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0gICAg
VVN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBtX2ltcGwoaW1wbCkgeyB9Ci0KLSAg
ICAvLyBJbmxpbmUgdGhlIGRlc3RydWN0b3IuCi0gICAgQUxXQVlTX0lOTElORSB+VVN0cmluZygp
IHsgfQotCi0gICAgdm9pZCBzd2FwKFVTdHJpbmcmIG8pIHsgbV9pbXBsLnN3YXAoby5tX2ltcGwp
OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PgotICAgIHN0YXRpYyBVU3RyaW5nIGFkb3B0KFZlY3RvcjxDaGFyVHlwZSwgaW5saW5lQ2Fw
YWNpdHk+JiB2ZWN0b3IpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmFkb3B0KHZlY3Rvcik7IH0KLQot
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+bGVuZ3RoKCk7IH0KLQot
ICAgIFN0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KLQot
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faW1wbCkK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gbV9pbXBsLT5sZW5ndGgoKTsK
LSAgICB9Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAoIW1faW1wbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4g
bV9pbXBsLT5jaGFyYWN0ZXJzKCk7Ci0gICAgfQotCi0gICAgY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnM4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIEFTU0VSVChtX2ltcGwtPmlzOEJpdCgpKTsKLSAgICAgICAgcmV0dXJu
IG1faW1wbC0+Y2hhcmFjdGVyczgoKTsKLSAgICB9Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVyczE2KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIEFTU0VSVCghbV9pbXBsLT5pczhCaXQoKSk7Ci0gICAgICAgIHJl
dHVybiBtX2ltcGwtPmNoYXJhY3RlcnMxNigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4KLSAgICBpbmxpbmUgY29uc3QgQ2hhclR5cGUqIGdldENoYXJhY3RlcnMo
KSBjb25zdDsKLQotICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pczhC
aXQoKTsgfQotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0Owot
ICAgIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmlu
ZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwotCi0gICAgVUNoYXIgb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsIHx8IGlu
ZGV4ID49IG1faW1wbC0+bGVuZ3RoKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIG1faW1wbC0+Y2hhcmFjdGVyczgoKVtp
bmRleF07Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMxNigpW2luZGV4XTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIoaW50IGkpIHsgcmV0dXJuIFdURjo6bnVt
YmVyVG9TdHJpbmdJbXBsKGkpOyB9Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKHVuc2lnbmVk
IHUpIHsgcmV0dXJuIFdURjo6bnVtYmVyVG9TdHJpbmdJbXBsKHUpOyB9Ci0gICAgc3RhdGljIFVT
dHJpbmcgbnVtYmVyKGxvbmcgaSkgeyByZXR1cm4gV1RGOjpudW1iZXJUb1N0cmluZ0ltcGwoaSk7
IH0KLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyBsb25nIGkpIHsgcmV0dXJuIFdURjo6
bnVtYmVyVG9TdHJpbmdJbXBsKGkpOyB9Ci0KLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXJUb1N0
cmluZ0VDTUFTY3JpcHQoZG91YmxlKTsKLQotICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVy
IG9yIHN0cmluZywgYWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgotICAg
IHNpemVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKLSAgICAgICAg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKGMsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0K
LSAgICBzaXplX3QgZmluZChjb25zdCBVU3RyaW5nJiBzdHIpIGNvbnN0Ci0gICAgICAgIHsgcmV0
dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHIuaW1wbCgpKSA6IG5vdEZvdW5kOyB9Ci0gICAg
c2l6ZV90IGZpbmQoY29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKLSAg
ICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6
IG5vdEZvdW5kOyB9Ci0KLSAgICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyLCB1bnNpZ25l
ZCBzdGFydCA9IDApIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+Zmlu
ZChzdHIsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0KLSAgICAvLyBGaW5kIHRoZSBsYXN0IGluc3Rh
bmNlIG9mIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcuCi0gICAgc2l6ZV90IHJldmVyc2VG
aW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0ID0gVUlOVF9NQVgpIGNvbnN0Ci0gICAgICAgIHsg
cmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoYywgc3RhcnQpIDogbm90Rm91bmQ7
IH0KLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBz
dGFydCA9IFVJTlRfTUFYKSBjb25zdAotICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBvcywg
dW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBtX2ltcGw7Ci19OwotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgY29uc3QgTENoYXIq
IFVTdHJpbmc6OmdldENoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVy
czgoKTsgfQotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgY29uc3QgVUNoYXIqIFVTdHJpbmc6OmdldENo
YXJhY3RlcnM8VUNoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVycygpOyB9Ci0KLU5FVkVS
X0lOTElORSBib29sIGVxdWFsU2xvd0Nhc2UoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJp
bmcmIHMyKTsKLQotQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYg
czEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIFN0cmluZ0ltcGwqIHJlcDEgPSBzMS5pbXBs
KCk7Ci0gICAgU3RyaW5nSW1wbCogcmVwMiA9IHMyLmltcGwoKTsKLQotICAgIGlmIChyZXAxID09
IHJlcDIpIC8vIElmIHRoZXkncmUgdGhlIHNhbWUgcmVwLCB0aGV5J3JlIGVxdWFsLgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIHVuc2lnbmVkIHNpemUxID0gMDsKLSAgICB1bnNpZ25lZCBz
aXplMiA9IDA7Ci0KLSAgICBpZiAocmVwMSkKLSAgICAgICAgc2l6ZTEgPSByZXAxLT5sZW5ndGgo
KTsKLQotICAgIGlmIChyZXAyKQotICAgICAgICBzaXplMiA9IHJlcDItPmxlbmd0aCgpOwotCi0g
ICAgaWYgKHNpemUxICE9IHNpemUyKSAvLyBJZiB0aGUgbGVuZ3RocyBhcmUgbm90IHRoZSBzYW1l
LCB3ZSdyZSBkb25lLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXNpemUxKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChzaXplMSA9PSAxKQotICAgICAgICByZXR1
cm4gKCpyZXAxKVswdV0gPT0gKCpyZXAyKVswdV07Ci0KLSAgICByZXR1cm4gZXF1YWxTbG93Q2Fz
ZShzMSwgczIpOwotfQotCi0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVN0cmluZyYg
czEsIGNvbnN0IFVTdHJpbmcmIHMyKQotewotICAgIHJldHVybiAhSlNDOjpvcGVyYXRvcj09KHMx
LCBzMik7Ci19Ci0KLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJp
bmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7Ci1KU19FWFBPUlRfUFJJVkFURSBib29sIG9wZXJh
dG9yPihjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpOwotCi1KU19FWFBPUlRf
UFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IGNoYXIqIHMy
KTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgY2hh
ciogczIpCi17Ci0gICAgcmV0dXJuICFKU0M6Om9wZXJhdG9yPT0oczEsIHMyKTsKLX0KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyICpzMSwgY29uc3QgVVN0cmluZyYgczIpCi17
Ci0gICAgcmV0dXJuIG9wZXJhdG9yPT0oczIsIHMxKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBjaGFyICpzMSwgY29uc3QgVVN0cmluZyYgczIpCi17Ci0gICAgcmV0dXJuICFK
U0M6Om9wZXJhdG9yPT0oczEsIHMyKTsKLX0KLQotaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJl
KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKLXsKLSAgICByZXR1cm4gY29k
ZVBvaW50Q29tcGFyZShzMS5pbXBsKCksIHMyLmltcGwoKSk7Ci19Ci0KLXN0cnVjdCBVU3RyaW5n
SGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5nSW1wbCoga2V5KSB7IHJldHVy
biBrZXktPmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwq
IGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpCi0gICAgewotICAgICAgICBpZiAoYSA9PSBiKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghYSB8fCAhYikKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICB1bnNpZ25lZCBhTGVuZ3RoID0gYS0+bGVuZ3RoKCk7
Ci0gICAgICAgIHVuc2lnbmVkIGJMZW5ndGggPSBiLT5sZW5ndGgoKTsKLSAgICAgICAgaWYgKGFM
ZW5ndGggIT0gYkxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAv
LyBGSVhNRTogcGVyaGFwcyB3ZSBzaG91bGQgaGF2ZSBhIG1vcmUgYWJzdHJhY3QgbWFjcm8gdGhh
dCBpbmRpY2F0ZXMgd2hlbgotICAgICAgICAvLyBnb2luZyA0IGJ5dGVzIGF0IGEgdGltZSBpcyB1
bnNhZmUKLSNpZiBDUFUoQVJNKSB8fCBDUFUoU0g0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNQQVJD
KQotICAgICAgICBjb25zdCBVQ2hhciogYUNoYXJzID0gYS0+Y2hhcmFjdGVycygpOwotICAgICAg
ICBjb25zdCBVQ2hhciogYkNoYXJzID0gYi0+Y2hhcmFjdGVycygpOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpICE9IGFMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCphQ2hh
cnMrKyAhPSAqYkNoYXJzKyspCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICAgICAgLyogRG8gaXQgNC1ieXRl
cy1hdC1hLXRpbWUgb24gYXJjaGl0ZWN0dXJlcyB3aGVyZSBpdCdzIHNhZmUgKi8KLSAgICAgICAg
Y29uc3QgdWludDMyX3QqIGFDaGFycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihhLT5jaGFyYWN0ZXJzKCkpOwotICAgICAgICBjb25zdCB1aW50MzJfdCogYkNoYXJzID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGItPmNoYXJhY3RlcnMoKSk7Ci0KLSAgICAg
ICAgdW5zaWduZWQgaGFsZkxlbmd0aCA9IGFMZW5ndGggPj4gMTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSAhPSBoYWxmTGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBpZiAoKmFDaGFy
cysrICE9ICpiQ2hhcnMrKykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgaWYgKGFMZW5ndGggJiAxICYmICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
YUNoYXJzKSAhPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGJDaGFycykpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWZQdHI8U3RyaW5nSW1w
bD4mIGtleSkgeyByZXR1cm4ga2V5LT5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGEsIGNvbnN0IFJlZlB0cjxTdHJpbmdJbXBsPiYgYikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcXVhbChhLmdldCgpLCBiLmdldCgpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVU3RyaW5nJiBrZXkpIHsgcmV0dXJuIGtl
eS5pbXBsKCktPmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmcm
IGEsIGNvbnN0IFVTdHJpbmcmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gZXF1YWwoYS5pbXBs
KCksIGIuaW1wbCgpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LW5hbWVzcGFjZSBXVEYgewotCi0vLyBVU3RyaW5nSGFzaCBpcyB0aGUgZGVmYXVsdCBoYXNoIGZv
ciBVU3RyaW5nCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Ci10ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlVTdHJpbmc+IHsKLSAgICB0eXBlZGVmIEpT
Qzo6VVN0cmluZ0hhc2ggSGFzaDsKLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBWZWN0b3JUcmFp
dHM8SlNDOjpVU3RyaW5nPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZ0J1aWxkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjY2Yz
ODJhNWY5NzNlNjI2NTk4Mjk0ZjE1MmFlM2M4OWJiYjY0Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9V
U3RyaW5nQnVpbGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFVTdHJpbmdCdWls
ZGVyX2gKLSNkZWZpbmUgVVN0cmluZ0J1aWxkZXJfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgVVN0cmluZ0J1aWxkZXIg
OiBwdWJsaWMgU3RyaW5nQnVpbGRlciB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgU3RyaW5nQnVpbGRl
cjo6YXBwZW5kOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVTdHJpbmcmIHN0cikgeyBhcHBlbmQo
U3RyaW5nKHN0ci5pbXBsKCkpKTsgfQotCi0gICAgVVN0cmluZyB0b1VTdHJpbmcoKSB7IHJldHVy
biB0b1N0cmluZygpLmltcGwoKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRp
ZiAvLyBVU3RyaW5nQnVpbGRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
YmQ0ZTYwY2E0YjNhN2FlNTRmY2M3NTI1ZmZhZjIwOTQ2YmVlMmQyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1VTdHJpbmdDb25jYXRlbmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBV
U3RyaW5nQ29uY2F0ZW5hdGVfaAotI2RlZmluZSBVU3RyaW5nQ29uY2F0ZW5hdGVfaAotCi0jaW5j
bHVkZSAiVVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBTdHJpbmdUeXBlQWRhcHRl
cjxKU0M6OlVTdHJpbmc+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdUeXBlQWRhcHRlcjxKU0M6OlVT
dHJpbmc+KEpTQzo6VVN0cmluZyYgc3RyaW5nKQotICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykK
LSAgICAgICAgLCBtX2xlbmd0aChzdHJpbmcubGVuZ3RoKCkpCi0gICAgewotICAgIH0KLQotICAg
IHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9Ci0KLSAgICBib29sIGlzOEJp
dCgpIHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpIHx8IG1fc3RyaW5nLmlzOEJpdCgpOyB9Ci0K
LSAgICB2b2lkIHdyaXRlVG8oTENoYXIqIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMgPSBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRlc3Rp
bmF0aW9uW2ldID0gY2hhcmFjdGVyc1tpXTsKLSAgICB9Ci0KLSAgICB2b2lkIHdyaXRlVG8oVUNo
YXIqIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IG1fc3RyaW5nLmNoYXJhY3RlcnM4KCk7Ci0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IGNoYXJhY3RlcnNbaV07Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IG1fc3RyaW5nLmNoYXJh
Y3RlcnMxNigpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBjaGFyYWN0ZXJzW2ldOwot
ICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IEpTQzo6VVN0cmluZyYgbV9z
dHJpbmc7Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OwotCi19OyAvLyBuYW1lc3BhY2UgV1RG
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTI+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIpOwotICAgIGlm
ICghcmVzdWx0SW1wbCkKLSAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gcmVzdWx0SW1wbDsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUy
LCB0eXBlbmFtZSBTdHJpbmdUeXBlMz4KLVVTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMykKLXsKLSAg
ICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmco
c3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMyk7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAg
ICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUz
LCB0eXBlbmFtZSBTdHJpbmdUeXBlND4KLVVTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEg
c3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5n
VHlwZTQgc3RyaW5nNCkKLXsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwg
PSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCk7
Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1
bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3Ry
aW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlw
ZW5hbWUgU3RyaW5nVHlwZTU+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMsIFN0cmluZ1R5cGU0
IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUpCi17Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0cmluZzEsIHN0cmluZzIsIHN0
cmluZzMsIHN0cmluZzQsIHN0cmluZzUpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAgICAgICAg
Q1JBU0goKTsKLSAgICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
U3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywg
dHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJp
bmdUeXBlNj4KLVVTdHJpbmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5n
VHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwg
U3RyaW5nVHlwZTUgc3RyaW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNikKLXsKLSAgICBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nMSwg
c3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNik7Ci0gICAgaWYgKCFy
ZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiByZXN1bHRJbXBsOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5
cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5n
VHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNz4KLVVTdHJp
bmcgbWFrZVVTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwg
U3RyaW5nVHlwZTMgc3RyaW5nMywgU3RyaW5nVHlwZTQgc3RyaW5nNCwgU3RyaW5nVHlwZTUgc3Ry
aW5nNSwgU3RyaW5nVHlwZTYgc3RyaW5nNiwgU3RyaW5nVHlwZTcgc3RyaW5nNykKLXsKLSAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlc3VsdEltcGwgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3Ry
aW5nMSwgc3RyaW5nMiwgc3RyaW5nMywgc3RyaW5nNCwgc3RyaW5nNSwgc3RyaW5nNiwgc3RyaW5n
Nyk7Ci0gICAgaWYgKCFyZXN1bHRJbXBsKQotICAgICAgICBDUkFTSCgpOwotICAgIHJldHVybiBy
ZXN1bHRJbXBsOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwg
dHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJp
bmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+Ci1VU3RyaW5nIG1ha2VVU3RyaW5nKFN0cmlu
Z1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluZzMs
IFN0cmluZ1R5cGU0IHN0cmluZzQsIFN0cmluZ1R5cGU1IHN0cmluZzUsIFN0cmluZ1R5cGU2IHN0
cmluZzYsIFN0cmluZ1R5cGU3IHN0cmluZzcsIFN0cmluZ1R5cGU4IHN0cmluZzgpCi17Ci0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXN1bHRJbXBsID0gV1RGOjp0cnlNYWtlU3RyaW5nKHN0
cmluZzEsIHN0cmluZzIsIHN0cmluZzMsIHN0cmluZzQsIHN0cmluZzUsIHN0cmluZzYsIHN0cmlu
ZzcsIHN0cmluZzgpOwotICAgIGlmICghcmVzdWx0SW1wbCkKLSAgICAgICAgQ1JBU0goKTsKLSAg
ICByZXR1cm4gcmVzdWx0SW1wbDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IDYxYzIxYzMxYjJhNmQzOTM4ZTg4
NmQzM2E2ZTQ1OWYxNTIxOGI0NDEuLmIwYjEyNmYxYzg3MWVkYjBiMjA1ZGE0YjY1NjdkMDA1MDVm
OGZlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTI0LDExICsyNCwx
MSBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgIkluaXRpYWxpemVU
aHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIlVTdHJp
bmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmICFPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHVuaXN0ZC5o
PgpAQCAtNjMsOCArNjMsOCBAQCBzdHJ1Y3QgQ29tbWFuZExpbmUgewogCiAgICAgYm9vbCBpbnRl
cmFjdGl2ZTsKICAgICBib29sIHZlcmJvc2U7Ci0gICAgVmVjdG9yPFVTdHJpbmc+IGFyZ3VtZW50
czsKLSAgICBWZWN0b3I8VVN0cmluZz4gZmlsZXM7CisgICAgVmVjdG9yPFN0cmluZz4gYXJndW1l
bnRzOworICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzOwogfTsKIAogY2xhc3MgU3RvcFdhdGNoIHsK
QEAgLTEwMCw3ICsxMDAsNyBAQCBzdHJ1Y3QgUmVnRXhwVGVzdCB7CiAgICAgewogICAgIH0KIAot
ICAgIFVTdHJpbmcgc3ViamVjdDsKKyAgICBTdHJpbmcgc3ViamVjdDsKICAgICBpbnQgb2Zmc2V0
OwogICAgIGludCByZXN1bHQ7CiAgICAgVmVjdG9yPGludCwgMzI+IGV4cGVjdFZlY3RvcjsKQEAg
LTEwOCwxMiArMTA4LDEyIEBAIHN0cnVjdCBSZWdFeHBUZXN0IHsKIAogY2xhc3MgR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgR2xvYmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1l
bnRzKTsKKyAgICBHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cyk7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTR2xv
YmFsT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgR2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVT
dHJpbmc+JiBhcmd1bWVudHMpCisgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBhcmd1bWVudHMpOwogICAgIH0KQEAgLTEyNiw3ICsxMjYs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1l
bnRzKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShhcmd1bWVudHMp
OwpAQCAtMTM4LDcgKzEzOCw3IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoR2xvYmFsT2Jq
ZWN0KTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVjdDo6c19pbmZvID0geyAiZ2xvYmFs
IiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFi
bGUsIENSRUFURV9NRVRIT0RfVEFCTEUoR2xvYmFsT2JqZWN0KSB9OwogCi1HbG9iYWxPYmplY3Q6
Okdsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKK0dsb2JhbE9iamVjdDo6R2xv
YmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgOiBKU0dsb2JhbE9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiB7CiAgICAgZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwg
YXJndW1lbnRzKTsKQEAgLTIzOSw3ICsyMzksNyBAQCBzdGF0aWMgYm9vbCB0ZXN0T25lUmVnRXhw
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnRXhwKiByZWdleHAsIFJlZ0V4cFRlc3QqCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGludCBzY2FuU3RyaW5nKGNoYXIqIGJ1ZmZl
ciwgaW50IGJ1ZmZlckxlbmd0aCwgVVN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNoYXIgdGVybUNo
YXIpCitzdGF0aWMgaW50IHNjYW5TdHJpbmcoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuZ3Ro
LCBTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjaGFyIHRlcm1DaGFyKQogewogICAgIGJvb2wgZXNj
YXBlID0gZmFsc2U7CiAgICAgCkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGljIGludCBzY2FuU3Ry
aW5nKGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmZlckxlbmd0aCwgVVN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIGMKIAogc3RhdGljIFJlZ0V4cCogcGFyc2VSZWdFeHBMaW5lKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY2hhciogbGluZSwgaW50IGxpbmVMZW5ndGgpCiB7Ci0gICAgVVN0cmluZ0J1aWxk
ZXIgcGF0dGVybjsKKyAgICBTdHJpbmdCdWlsZGVyIHBhdHRlcm47CiAgICAgCiAgICAgaWYgKGxp
bmVbMF0gIT0gJy8nKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMxOSwxMiArMzE5LDEyIEBAIHN0
YXRpYyBSZWdFeHAqIHBhcnNlUmVnRXhwTGluZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNo
YXIqIGxpbmUsIGludCBsaW5lTGVuCiAKICAgICArK2k7CiAKLSAgICByZXR1cm4gUmVnRXhwOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgcGF0dGVybi50b1VTdHJpbmcoKSwgcmVnRXhwRmxhZ3MobGluZSAr
IGkpKTsKKyAgICByZXR1cm4gUmVnRXhwOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcGF0dGVybi50b1N0
cmluZygpLCByZWdFeHBGbGFncyhsaW5lICsgaSkpOwogfQogCiBzdGF0aWMgUmVnRXhwVGVzdCog
cGFyc2VUZXN0TGluZShjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0aCkKIHsKLSAgICBVU3RyaW5n
QnVpbGRlciBzdWJqZWN0U3RyaW5nOworICAgIFN0cmluZ0J1aWxkZXIgc3ViamVjdFN0cmluZzsK
ICAgICAKICAgICBpZiAoKGxpbmVbMF0gIT0gJyAnKSB8fCAobGluZVsxXSAhPSAnIicpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgUmVnRXhwVGVzdCogcGFy
c2VUZXN0TGluZShjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0aCkKICAgICAKICAgICBSZWdFeHBU
ZXN0KiByZXN1bHQgPSBuZXcgUmVnRXhwVGVzdCgpOwogICAgIAotICAgIHJlc3VsdC0+c3ViamVj
dCA9IHN1YmplY3RTdHJpbmcudG9VU3RyaW5nKCk7CisgICAgcmVzdWx0LT5zdWJqZWN0ID0gc3Vi
amVjdFN0cmluZy50b1N0cmluZygpOwogICAgIHJlc3VsdC0+b2Zmc2V0ID0gb2Zmc2V0OwogICAg
IHJlc3VsdC0+cmVzdWx0ID0gbWF0Y2hSZXN1bHQ7CiAKQEAgLTM5NCwxMCArMzk0LDEwIEBAIHN0
YXRpYyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3Ro
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBmaWxlcywgYm9v
bCB2ZXJib3NlKQorc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsIGJvb2wgdmVyYm9zZSkKIHsKLSAg
ICBVU3RyaW5nIHNjcmlwdDsKLSAgICBVU3RyaW5nIGZpbGVOYW1lOworICAgIFN0cmluZyBzY3Jp
cHQ7CisgICAgU3RyaW5nIGZpbGVOYW1lOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHRCdWZmZXI7
CiAgICAgdW5zaWduZWQgdGVzdHMgPSAwOwogICAgIHVuc2lnbmVkIGZhaWx1cmVzID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IGJh
MTAxNzFiZmU4ZWJmMWI5NzBkYmZiOGUxZDI3Y2QwNTVlZGI2MTUuLjVjMmEyODdjOGU1NDBlYzc1
NzU3OWU5MGU3NGIzZDQ4ZTQzZjViYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckludGVycHJldGVyLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiWWFyckludGVycHJldGVyLmgiCiAKLSNpbmNsdWRlICJVU3RyaW5n
LmgiCiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgIllhcnJDYW5vbmljYWxpemVVQ1MyLmgi
CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0Rh
dGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAg
LTE5MzQsNyArMTkzNCw3IEBAIFBhc3NPd25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGls
ZShZYXJyUGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0CiAgICAgcmV0dXJuIEJ5
dGVDb21waWxlcihwYXR0ZXJuKS5jb21waWxlKGFsbG9jYXRvcik7CiB9CiAKLXVuc2lnbmVkIGlu
dGVycHJldChCeXRlY29kZVBhdHRlcm4qIGJ5dGVjb2RlLCBjb25zdCBVU3RyaW5nJiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkKiBvdXRwdXQpCit1bnNpZ25lZCBpbnRlcnByZXQoQnl0
ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkKiBvdXRwdXQpCiB7CiAgICAgaWYgKGlucHV0LmlzOEJpdCgpKQogICAgICAg
ICByZXR1cm4gSW50ZXJwcmV0ZXI8TENoYXI+KGJ5dGVjb2RlLCBvdXRwdXQsIGlucHV0LmNoYXJh
Y3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBzdGFydCkuaW50ZXJwcmV0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCmluZGV4IDRlY2Q2OWVjYTcwM2Nk
NmI4ODRjYTYxYTQ0MjQ5MTdjMDNmOTFkYzYuLmZiNjBiZDk3OWQ3NmIxYzYwNDIxZjIxYTUwYjc4
YzQ4YTc3MjkwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJ
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5oCkBAIC0zNzYsNyArMzc2LDcgQEAgcHJpdmF0ZToKIH07CiAKIEpTX0VYUE9SVF9QUklW
QVRFIFBhc3NPd25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYs
IEJ1bXBQb2ludGVyQWxsb2NhdG9yKik7Ci1KU19FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBpbnRl
cnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgVVN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCogb3V0cHV0KTsKK0pTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGludGVy
cHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQqIG91dHB1dCk7CiB1bnNpZ25lZCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJu
KiwgY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCogb3V0cHV0KTsKIHVuc2lnbmVkIGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBj
b25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkKiBvdXRwdXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4
IGViOTg2MWZlZGQxMjEwOWQ2NWJhOGEyNDhkMTNhNzQxMmQ0MWMyMDguLmVlNmUzOTc1MzczYzQ0
NmEzZDVmNDJkOWU2MTgxMDU4N2JmYzA5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFy
ciB7CiAKIHRlbXBsYXRlPFlhcnJKSVRDb21waWxlTW9kZSBjb21waWxlTW9kZT4KIGNsYXNzIFlh
cnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKLSAgICBmcmllbmQgdm9pZCBq
aXRDb21waWxlKEpTR2xvYmFsRGF0YSosIFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwgY29uc3Qg
VVN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiYg
ZXJyb3IsIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUpOworICAgIGZyaWVuZCB2b2lk
IGppdENvbXBpbGUoSlNHbG9iYWxEYXRhKiwgWWFyckNvZGVCbG9jayYgaml0T2JqZWN0LCBjb25z
dCBTdHJpbmcmIHBhdHRlcm4sIHVuc2lnbmVkJiBudW1TdWJwYXR0ZXJucywgY29uc3QgY2hhciom
IGVycm9yLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5lKTsKIAogI2lmIENQVShBUk0p
CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5wdXQgPSBBUk1SZWdpc3RlcnM6OnIwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmluZGV4IDcxOTI4ZTczY2U3ZGQ0MTU2YzJl
ODM1NTFkNjNkM2ZlYTBhNzczOGUuLmJiNzAzM2ZkZWFhZTA5OTZlMmYxNzRiMWJlNjhmNWQzZmE3
ZDdlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCIKICNpbmNsdWRlICJNYXRjaFJlc3VsdC5oIgotI2luY2x1ZGUgIlVTdHJpbmcuaCIK
ICNpbmNsdWRlICJZYXJyLmgiCiAjaW5jbHVkZSAiWWFyclBhdHRlcm4uaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCmluZGV4IDExODJkNzkwNzgxYjcwMDg1MDIwOWYz
NjM1NjAyMTQ5ZGRlYmFiZTYuLjRiYWIxYTA5MDNkOTUzYTEyYTExMTUxNTgwYzRjYTg1ZjVjMTk2
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKQEAgLTI2LDkgKzI2
LDkgQEAKICNpZm5kZWYgWWFyclBhcnNlcl9oCiAjZGVmaW5lIFlhcnJQYXJzZXJfaAogCi0jaW5j
bHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAjaW5jbHVkZSAiWWFyci5oIgogI2luY2x1ZGUgPHd0
Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlh
cnIgewpAQCAtNDcsNyArNDcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWxlZ2F0ZSwgdHlwZW5hbWUg
Q2hhclR5cGU+CiBjbGFzcyBQYXJzZXIgewogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxjbGFzcyBG
cmllbmREZWxlZ2F0ZT4KLSAgICBmcmllbmQgY29uc3QgY2hhciogcGFyc2UoRnJpZW5kRGVsZWdh
dGUmIGRlbGVnYXRlLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25lZCBiYWNrUmVmZXJl
bmNlTGltaXQpOworICAgIGZyaWVuZCBjb25zdCBjaGFyKiBwYXJzZShGcmllbmREZWxlZ2F0ZSYs
IGNvbnN0IFN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KTsKIAog
ICAgIGVudW0gRXJyb3JDb2RlIHsKICAgICAgICAgTm9FcnJvciwKQEAgLTIyOCw3ICsyMjgsNyBA
QCBwcml2YXRlOgogICAgICAgICBVQ2hhciBtX2NoYXJhY3RlcjsKICAgICB9OwogCi0gICAgUGFy
c2VyKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQg
YmFja1JlZmVyZW5jZUxpbWl0KQorICAgIFBhcnNlcihEZWxlZ2F0ZSYgZGVsZWdhdGUsIGNvbnN0
IFN0cmluZyYgcGF0dGVybiwgdW5zaWduZWQgYmFja1JlZmVyZW5jZUxpbWl0KQogICAgICAgICA6
IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgICAgICwgbV9iYWNrUmVmZXJlbmNlTGltaXQoYmFj
a1JlZmVyZW5jZUxpbWl0KQogICAgICAgICAsIG1fZXJyKE5vRXJyb3IpCkBAIC04NjgsNyArODY4
LDcgQEAgcHJpdmF0ZToKICAqLwogCiB0ZW1wbGF0ZTxjbGFzcyBEZWxlZ2F0ZT4KLWNvbnN0IGNo
YXIqIHBhcnNlKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgdW5z
aWduZWQgYmFja1JlZmVyZW5jZUxpbWl0ID0gcXVhbnRpZnlJbmZpbml0ZSkKK2NvbnN0IGNoYXIq
IHBhcnNlKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25l
ZCBiYWNrUmVmZXJlbmNlTGltaXQgPSBxdWFudGlmeUluZmluaXRlKQogewogICAgIGlmIChwYXR0
ZXJuLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gUGFyc2VyPERlbGVnYXRlLCBMQ2hhcj4oZGVs
ZWdhdGUsIHBhdHRlcm4sIGJhY2tSZWZlcmVuY2VMaW1pdCkucGFyc2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCBiYmRhOWM1MjY2ZjIzNzk3ZTU2
NjczOTg3ZmZhOTRjZDczN2I5NjI5Li41MDgwOTI5ZjRhNDE5ZGYyMDM0NDgyNjU2ZTdkZTJiOTk1
M2I0NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBA
IC04MjAsNyArODIwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW52ZXJ0UGFyZW50aGV0aWNh
bEFzc2VydGlvbjsKIH07CiAKLWNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0
IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCitjb25zdCBjaGFyKiBZYXJyUGF0dGVybjo6Y29tcGls
ZShjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiB7CiAgICAgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciBjb25zdHJ1Y3RvcigqdGhpcyk7CiAKQEAgLTg1Myw3ICs4NTMsNyBAQCBjb25zdCBjaGFy
KiBZYXJyUGF0dGVybjo6Y29tcGlsZShjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKQogICAg
IHJldHVybiAwOwogfQogCi1ZYXJyUGF0dGVybjo6WWFyclBhdHRlcm4oY29uc3QgVVN0cmluZyYg
cGF0dGVybiwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVy
cm9yKQorWWFyclBhdHRlcm46OllhcnJQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcGF0dGVybiwgYm9v
bCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVycm9yKQogICAgIDog
bV9pZ25vcmVDYXNlKGlnbm9yZUNhc2UpCiAgICAgLCBtX211bHRpbGluZShtdWx0aWxpbmUpCiAg
ICAgLCBtX2NvbnRhaW5zQmFja3JlZmVyZW5jZXMoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCBhMzFkZWVlNjcyOTQ2NDRlNWRjNGFhZDRkN2EwNmIw
NzNiMjBiNzlmLi4xNGU4OWI4ZTA5Mjk2ODgyNmRlYTM5NzU0YzM2ZDEzYjE0MTFmNmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTI3LDEwICsyNywxMCBA
QAogI2lmbmRlZiBZYXJyUGF0dGVybl9oCiAjZGVmaW5lIFlhcnJQYXR0ZXJuX2gKIAotI2luY2x1
ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1Vu
aWNvZGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKQEAgLTMxNiw3ICsz
MTYsNyBAQCBzdHJ1Y3QgVGVybUNoYWluIHsKIH07CiAKIHN0cnVjdCBZYXJyUGF0dGVybiB7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgVVN0cmluZyYgcGF0dGVybiwg
Ym9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVycm9yKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJv
b2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CiAKICAg
ICB+WWFyclBhdHRlcm4oKQogICAgIHsKQEAgLTQwNSw3ICs0MDUsNyBAQCBzdHJ1Y3QgWWFyclBh
dHRlcm4gewogICAgIFZlY3RvcjxDaGFyYWN0ZXJDbGFzcyo+IG1fdXNlckNoYXJhY3RlckNsYXNz
ZXM7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogY29tcGlsZShjb25zdCBVU3RyaW5nJiBw
YXR0ZXJuU3RyaW5nKTsKKyAgICBjb25zdCBjaGFyKiBjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0
dGVyblN0cmluZyk7CiAKICAgICBDaGFyYWN0ZXJDbGFzcyogbmV3bGluZUNhY2hlZDsKICAgICBD
aGFyYWN0ZXJDbGFzcyogZGlnaXRzQ2FjaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwCmluZGV4IDUxZmRhOTRkOGEzZDc2ZmM1YTJkNzZi
NTYzZmI1ZjZiYTkyOWZmMzEuLmFhOThjNGEzNTQ3NTc3ZmE2YzUxYzg4MWZhYjMzNThkYmNkOTky
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tl
ci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzanVuY3Rpb24oKSB7
fQogfTsKIAotY29uc3QgY2hhciogY2hlY2tTeW50YXgoY29uc3QgVVN0cmluZyYgcGF0dGVybikK
K2NvbnN0IGNoYXIqIGNoZWNrU3ludGF4KGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHsKICAgICBT
eW50YXhDaGVja2VyIHN5bnRheENoZWNrZXI7CiAgICAgcmV0dXJuIHBhcnNlKHN5bnRheENoZWNr
ZXIsIHBhdHRlcm4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clN5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhD
aGVja2VyLmgKaW5kZXggMjAxMzY3MWViNTczZjliNmUwMjNjMzBhM2I1YWQyOGE2YWU5YWVmYy4u
MTA0Y2VkM2FiNGJkNzhjYjJhZTY0MDZiN2Y2MzUxODI2NGNhYmQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5oCkBAIC0yNiwxMSArMjYsMTEg
QEAKICNpZm5kZWYgWWFyclN5bnRheENoZWNrZXJfaAogI2RlZmluZSBZYXJyU3ludGF4Q2hlY2tl
cl9oCiAKLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKIAotY29uc3Qg
Y2hhciogY2hlY2tTeW50YXgoY29uc3QgVVN0cmluZyYgcGF0dGVybik7Citjb25zdCBjaGFyKiBj
aGVja1N5bnRheChjb25zdCBTdHJpbmcmIHBhdHRlcm4pOwogCiB9fSAvLyBKU0M6OllBUlIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIveWFyci5wcmkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci95YXJyLnByaQppbmRleCA2MjMwOThmZDNhZjdiMzBlMDBlZTg1
MzE0MjUzMzZjYzgyZDQwMGU5Li43ZTliNGQzZjNiM2NmYmQ0ZTNjOTdiM2M4YjEwYTY4YWJjZGNi
ZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci95YXJyLnByaQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci95YXJyLnByaQpAQCAtMTAsOSArMTAsMyBAQCBT
T1VSQ0VTICs9IFwKICAgICAkJFBXRC9ZYXJyU3ludGF4Q2hlY2tlci5jcHAgXAogICAgICQkUFdE
L1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcAogCi0jIEZvciBVU3RyaW5nLmgKLXY4IHsKLSAgICBJ
TkNMVURFUEFUSCArPSBcCi0gICAgICAgICQkUFdELy4uIFwKLSAgICAgICAgJCRQV0QvLi4vcnVu
dGltZQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZDlhZDVhNWMyYmQ2MTE2NmZkZGU4MDc1YmVhZGMxOWYw
MDM1YjAzZS4uNGE0ZWZlODQ2ZWI1NTgwMWE4ZTU4YmVhZGM3ZmY3YThkZGYyMTY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCkBAIC0xMTY5LDQgKzExNjksMyBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBXVEZfUGxh
dGZvcm1faCAqLwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBiNTA3YzQ5OGMxMmQ3ZTg0
MjA0MWIwMmQ5ZjFkZDljMWE3OTBlYzg5Li4zYWIwYWRmM2JmOTk1MzNmZTRkZDIxODNmYjI2ZTgy
ZTRhMDIzMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTE5OCw4ICsxOTgsMTMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9pbXBsLT5jaGFyYWN0ZXJzMTYoKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgaW5saW5lIGNvbnN0IENoYXJU
eXBlKiBnZXRDaGFyYWN0ZXJzKCkgY29uc3Q7CisgICAgLy8gUmV0dXJuIGNoYXJhY3RlcnM4KCkg
b3IgY2hhcmFjdGVyczE2KCkgZGVwZW5kaW5nIG9uIENoYXJhY3RlclR5cGUuCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CisgICAgaW5saW5lIGNvbnN0IENoYXJhY3RlclR5
cGUqIGdldENoYXJhY3RlcnMoKSBjb25zdDsKKworICAgIC8vIExpa2UgZ2V0Q2hhcmFjdGVycygp
IGFuZCB1cGNvbnZlcnQgaWYgQ2hhcmFjdGVyVHlwZSBpcyBVQ2hhciBvbiBhIDhiaXQgc3RyaW5n
LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorICAgIGlubGluZSBjb25z
dCBDaGFyYWN0ZXJUeXBlKiBnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCgpIGNvbnN0OwogCiAg
ICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9CiAKQEAg
LTMxNSw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQg
cmVtb3ZlKHVuc2lnbmVkIHBvcywgaW50IGxlbiA9IDEpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5U
X01BWCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBv
cywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBs
ZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuKSBjb25z
dCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuKTsgfQogICAgIFN0cmluZyByaWdodCh1bnNpZ25l
ZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQog
CkBAIC01MTgsNiArNTIzLDE5IEBAIGlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpnZXRDaGFy
YWN0ZXJzPFVDaGFyPigpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnMxNigpOwogfQogCit0
ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Z2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQ8TENoYXI+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIHJl
dHVybiBjaGFyYWN0ZXJzOCgpOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgY29uc3QgVUNoYXIq
IFN0cmluZzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQ8VUNoYXI+KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gY2hhcmFjdGVycygpOworfQorCiBpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5z
T25seUxhdGluMSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVVN0cmluZy5oIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQ5ODVhYTUyMWM5NTFiMGYyZGIwMWQ4NTVlY2ZjOGViZDU1ZTkz
ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0ICswLDAgQEAKLSNpZm5kZWYgV2ViQ29yZV9GV0RfVVN0cmluZ19oCi0jZGVmaW5l
IFdlYkNvcmVfRldEX1VTdHJpbmdfaAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VTdHJpbmcu
aD4KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9VU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1OTJhNzgzMGYxZjQ3ZDRjOWY2NjkyMTdkODc2MzlhY2E0YjFkNjExLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQg
KzAsMCBAQAotI2lmbmRlZiBXZWJDb3JlX0ZXRF9VU3RyaW5nQnVpbGRlcl9oCi0jZGVmaW5lIFdl
YkNvcmVfRldEX1VTdHJpbmdCdWlsZGVyX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VU3Ry
aW5nQnVpbGRlci5oPgotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk0MTY3YTRkNmVlZjU5MzNmMmNlZDdmNzQ1NDRkODc5ZTc3YjkzMWMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nSW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX1VTdHJpbmdJbXBsX2gKLSNkZWZpbmUgV2Vi
Q29yZV9GV0RfVVN0cmluZ0ltcGxfaAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VTdHJpbmdJ
bXBsLmg+Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmVhMTRkODcyNzUxZDc0ZDY0
OGE5NmM3YTJjOWVjMmNkNDQ5MzQzNy4uYWI1ZjYyZDQxNTUwNWNlZTk1YWMxYjQyMWJjNjRiNmJj
YWNjYTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE4MzMsNyArMTgzMyw3IEBAIF9fWk43
V2ViQ29yZTE2VGhyZWFkR2xvYmFsRGF0YTI2c2hhcmVkTWFpblRocmVhZFN0YXRpY0RhdGFFCiBf
X1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24yN3NlbGVjdGlvbkZyb21Db250ZW50c09mTm9k
ZUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25DMUV2CiBfX1pON1dl
YkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUks2Q0dSZWN0Ci1fX1pON1dlYkNvcmUxNmpzU3RyaW5n
U2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1w
bEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM18xMFN0cmluZ0hhc2hFTlMzXzEwSGFzaFRy
YWl0c0lTNl9FRU5TQl9JUzlfRUVFRVM2XworX19aTjdXZWJDb3JlMTZqc1N0cmluZ1dpdGhDYWNo
ZVNsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0lt
cGxFTlMwXzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfMTBTdHJpbmdIYXNoRU5TM18xMEhhc2hU
cmFpdHNJUzZfRUVOU0JfSVM5X0VFRUVTNl8KIF9fWk43V2ViQ29yZTE2bmV4dExpbmVQb3NpdGlv
bkVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWlOU18xMkVkaXRhYmxlVHlwZUUKIF9fWk43V2ViQ29y
ZTE2bmV4dFdvcmRQb3NpdGlvbkVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3Jl
MTdDcmVkZW50aWFsU3RvcmFnZTE2Y2xlYXJDcmVkZW50aWFsc0V2CkBAIC0yMzA5LDggKzIzMDks
OCBAQCBfX05QTl9TZXRQcm9wZXJ0eQogX19OUE5fVVRGOEZyb21JZGVudGlmaWVyCiBfX1pON1dl
YkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyMHdpbmRvd1NjcmlwdE5QT2JqZWN0RXYKIF9fWk43V2Vi
Q29yZTE2U2NyaXB0Q29udHJvbGxlcjI5Y2xlYW51cFNjcmlwdE9iamVjdHNGb3JQbHVnaW5FUHYK
LV9fWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOM1dURjdI
YXNoTWFwSVBOUzNfMTBTdHJpbmdJbXBsRU5TMF80V2Vha0lOUzBfOEpTU3RyaW5nRUVFTlMzXzdQ
dHJIYXNoSVM2X0VFTlMzXzEwSGFzaFRyYWl0c0lTNl9FRU5TQ19JUzlfRUVFRVM2XwogX19aTjdX
ZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDExZ2V0TlBPYmplY3RFdgorX19aTjdXZWJDb3JlMjVq
c1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJ
UE5TM18xMFN0cmluZ0ltcGxFTlMwXzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfN1B0ckhhc2hJ
UzZfRUVOUzNfMTBIYXNoVHJhaXRzSVM2X0VFTlNDX0lTOV9FRUVFUzZfCiBfX1pOSzdXZWJDb3Jl
MTRTZWN1cml0eU9yaWdpbjljYW5BY2Nlc3NFUEtTMF8KIF9fWk5LN1dlYkNvcmU0S1VSTDdoYXNQ
YXRoRXYKICNlbmRpZgpAQCAtMjMzOCw3ICsyMzM4LDcgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjZz
ZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudEVpCiAKICNpZiBVU0UoUExVR0lOX0hPU1RfUFJPQ0VT
UykKIF9fWk4zSlNDMTNSdW50aW1lTWV0aG9kMTFnZXRDYWxsRGF0YUVQTlNfNkpTQ2VsbEVSTlNf
OENhbGxEYXRhRQotX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZpbmlzaENyZWF0aW9uRVJOU18x
MkpTR2xvYmFsRGF0YUVSS05TXzdVU3RyaW5nRQorX19aTjNKU0MxM1J1bnRpbWVNZXRob2QxNGZp
bmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS04zV1RGNlN0cmluZ0UKIF9fWk4zSlND
MTNSdW50aW1lTWV0aG9kMThnZXRPd25Qcm9wZXJ0eVNsb3RFUE5TXzZKU0NlbGxFUE5TXzlFeGVj
U3RhdGVFTlNfMTJQcm9wZXJ0eU5hbWVFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0MxM1J1
bnRpbWVNZXRob2QyNGdldE93blByb3BlcnR5RGVzY3JpcHRvckVQTlNfOEpTT2JqZWN0RVBOU185
RXhlY1N0YXRlRU5TXzEyUHJvcGVydHlOYW1lRVJOU18xOFByb3BlcnR5RGVzY3JpcHRvckUKIF9f
Wk4zSlNDMTNSdW50aW1lTWV0aG9kNnNfaW5mb0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZmJkOGE1YmE1NjIxZTI3MmY0MzgwYjUzNzdiZGQz
NjNhODVkMmFmMy4uY2FhMjE5MTE1NWFhZWU2ODRhYzc3NmQzYzljYmYyYTVkZjM4MWFhMiAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTczODc3
LDE0ICs3Mzg3Nyw2IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZVxTdHJpbmdPYmplY3QuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcVVN0cmluZy5o
IgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxVU3RyaW5nSW1wbC5oIgotCQkJCQk+Ci0JCQkJPC9G
aWxlPgogCQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0ieWFyciIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRl
ci5oCmluZGV4IDhlZmI0ODE3NTM0MzY2ZGM1NDc5OTg2YjNiMGFkMmY4ODUwNmJjNjEuLjBkZDNj
ZjU3N2YxODZmNGIyMDVjZWEwOGZkYjU4YTExY2VmZmNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKLSNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIgLy8gZm9yIHN0cmluZ1RvVVN0cmluZwogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4K
IApAQCAtNDUsMTQgKzQ0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIG1f
Y2FjaGVkU2NyaXB0LT5yZW1vdmVDbGllbnQodGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICB2
aXJ0dWFsIEpTQzo6VVN0cmluZyBnZXRSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0IE9W
RVJSSURFCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIGdldFJhbmdlKGludCBzdGFydCwgaW50IGVu
ZCkgY29uc3QgT1ZFUlJJREUKICAgICAgICAgewogICAgICAgICAgICAgaW50IGxlbmd0aCA9IGVu
ZCAtIHN0YXJ0OwogICAgICAgICAgICAgQVNTRVJUKGxlbmd0aCA+PSAwKTsKICAgICAgICAgICAg
IEFTU0VSVChzdGFydCArIGxlbmd0aCA8PSB0aGlzLT5sZW5ndGgoKSk7CiAKICAgICAgICAgICAg
IFN0cmluZyBzY3JpcHQgPSBtX2NhY2hlZFNjcmlwdC0+c2NyaXB0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNDOjpVU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZShzY3JpcHQuaW1wbCgpLCBzdGFy
dCwgbGVuZ3RoKSk7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0
ZShzY3JpcHQuaW1wbCgpLCBzdGFydCwgbGVuZ3RoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBj
b25zdCBTdHJpbmdJbXBsKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPnNj
cmlwdCgpLmltcGwoKTsgfQpAQCAtNjYsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcihDYWNoZWRT
Y3JpcHQqIGNhY2hlZFNjcmlwdCkKLSAgICAgICAgICAgIDogU2NyaXB0U291cmNlUHJvdmlkZXIo
c3RyaW5nVG9VU3RyaW5nKGNhY2hlZFNjcmlwdC0+cmVzcG9uc2UoKS51cmwoKSksIFRleHRQb3Np
dGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGNhY2hlZFNjcmlwdC0+c291cmNlUHJvdmlkZXJDYWNo
ZSgpKQorICAgICAgICAgICAgOiBTY3JpcHRTb3VyY2VQcm92aWRlcihjYWNoZWRTY3JpcHQtPnJl
c3BvbnNlKCkudXJsKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGNhY2hlZFNj
cmlwdC0+c291cmNlUHJvdmlkZXJDYWNoZSgpKQogICAgICAgICAgICAgLCBtX2NhY2hlZFNjcmlw
dChjYWNoZWRTY3JpcHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5h
ZGRDbGllbnQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3Bw
CmluZGV4IGJhOTYwZGM4MjgzYmVhM2EyZDRlMjcwMTBjNDllM2NiNDk0M2Y2ZGYuLjg2MzdkYWNj
YTA3ODJkNGE5YWNiZmY3ZDUwYzU1NGU1YzM3MTRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC02NSwxMyArNjUsMTMgQEAgYm9vbCBEaWN0aW9uYXJ5
OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIG0KICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwogICAg
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3Bl
cnR5TmFtZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IHVzdHJp
bmdUb1N0cmluZyhpdC0+dXN0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0
LT51c3RyaW5nKCk7CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCAq
aXQpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1
ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgaWYgKCFleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIG1hcC5zZXQoc3RyaW5nS2V5LCBzdHJpbmdW
YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcAppbmRleCBjZGMwYzQ4ODQxNWNhMjMzNDJiNDFmNGRlNTUzMTllYTdj
Yzk0NDhjLi5iNTVlNzZiYmRmNmI4MDdkNzUwODJjZjhlNjZjYTE1MjljOTQ2NTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApA
QCAtMzksNyArMzksNyBAQCBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVZhbHVl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdQogICAgIGlmICh2YWx1ZS5p
c0ludDMyKCkpCiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJlcih2YWx1ZS50b051
bWJlcihleGVjKSk7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBJ
REJLZXk6OmNyZWF0ZVN0cmluZyh1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZVN0cmluZyh2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
ZGF0ZXMuCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
bG9iQ3VzdG9tLmNwcAppbmRleCA0OWNhMjk2NGM1NjRmZjg2MWNhY2I4ZjczYWIzZjY2MDNlNDlm
ZGE0Li4zZWU2MTg0MzJmZWU4YTcwNDZmODc2ZjdhMjVmOWJiYjc0MzlkZTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKQEAgLTEyOSw3ICsxMjksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQmxvYkNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU0Jsb2IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoaXRlbS5pbmhlcml0cygmSlNC
bG9iOjpzX2luZm8pKQogICAgICAgICAgICAgYmxvYkJ1aWxkZXItPmFwcGVuZCh0b0Jsb2IoaXRl
bSkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZyBzdHJpbmcgPSB1c3RyaW5n
VG9TdHJpbmcoaXRlbS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAg
U3RyaW5nIHN0cmluZyA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBibG9iQnVpbGRlci0+
YXBwZW5kKHN0cmluZywgZW5kaW5ncywgQVNTRVJUX05PX0VYQ0VQVElPTik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcAppbmRleCA0NjRlOGJiNzc1ZDA1MTY0MWVhMzYzNGNhZjMxOWU4OTZlOWRjNDc2Li40
YTE5ODk0ZmJhYTFmY2EyZjk3OTU1ZDc2NjE0YzRiZDEyODBjYTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgZ2V0UHJvcGVy
dHlWYWx1ZUZhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcgogewogICAg
IC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFk
ZGluZyIpLAogICAgIC8vIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5
VmFsdWUuCi0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+Z2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOwor
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT5pbXBsKCktPmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpbmRleCkpKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1By
ZWZpeChFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5z
aWduZWQgcHJvcGVydHlJRCkKQEAgLTM3Nyw3ICszNzcsNyBAQCBib29sIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYQogCiBKU1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUodXN0
cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSkpOworICAgIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcAppbmRleCAwYzY3NGNiNmY0ZmY0M2IxMTc4Y2RlZTVjMThlMGI1ZDdhMzg2NzViLi4w
MjZiMWFlMWRlZDdmMjAwN2U5Y2YxNmIxMDYxNzQ5MTYyNzA4NWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNTdHls
CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUtPmNhbnZhc0dy
YWRpZW50KCkpOwogICAgIGlmIChzdHlsZS0+Y2FudmFzUGF0dGVybigpKQogICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpOwotICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBzdHlsZS0+Y29sb3IoKSk7CisgICAgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKGV4ZWMsIHN0eWxlLT5jb2xvcigpKTsKIH0KIAogc3RhdGljIFBhc3NSZWZQ
dHI8Q2FudmFzU3R5bGU+IHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFs
dWUpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dFN0cm9rZVN0eWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQqPihpbXBsKCkpOwogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHVzdHJpbmdUb1N0cmluZyhhc1N0cmluZyh2YWx1
ZSktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGFzU3Ry
aW5nKHZhbHVlKS0+dmFsdWUoZXhlYykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNv
bnRleHQtPnNldFN0cm9rZVN0eWxlKHRvSFRNTENhbnZhc1N0eWxlKGV4ZWMsIHZhbHVlKSk7CkBA
IC04NSw3ICs4NSw3IEBAIHZvaWQgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxT
dHlsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEKj4oaW1wbCgpKTsKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IodXN0cmluZ1RvU3RyaW5nKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUo
ZXhlYykpKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGFzU3RyaW5nKHZhbHVlKS0+
dmFsdWUoZXhlYykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNvbnRleHQtPnNldEZp
bGxTdHlsZSh0b0hUTUxDYW52YXNTdHlsZShleGVjLCB2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IDhjZmQ2NWEyOWQ5
YjA3NWQyMzE0MmU2OWViODllODYxNGE5YTM2ZjYuLjNhOTNmODkzM2U1OGIzODM2MTJiNzg3NmI3
MjI5MzFhZmExNDdiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2xpcGJvYXJkQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ns
aXBib2FyZEN1c3RvbS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSlNWYWx1ZSBKU0NsaXBib2FyZDo6
dHlwZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxp
c3Q7CiAgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSB0eXBlcy5lbmQo
KTsKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nKGV4
ZWMsIHN0cmluZ1RvVVN0cmluZygqaXQpKSk7CisgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5n
V2l0aENhY2hlKGV4ZWMsICppdCkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBn
bG9iYWxPYmplY3QoKSwgbGlzdCk7CiB9CiAKQEAgLTczLDcgKzczLDcgQEAgSlNWYWx1ZSBKU0Ns
aXBib2FyZDo6Y2xlYXJEYXRhKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiAKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKLSAgICAgICAgY2xpcGJvYXJkLT5jbGVhckRhdGEo
dXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworICAgICAgICBjbGlwYm9hcmQtPmNsZWFyRGF0YShleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCA4NDdiY2U0ZDZhZTdjNGMzNzUxYWZiMTJlYWE2
NDQ4YjYyNzhlMDY0Li5kMWRjMGIxY2VlZDMyMTE2YjY3ZjEyNDhiMjgwYTRmZDRkN2MzYmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIFJlZlB0
cjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gc2VsZlByb3RlY3Rvcih0aGlzKTsKIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywg
cHJlZml4KSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcHJlZml4
KSk7CiAKICAgICBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7CiAgICAgSlNWYWx1ZSByZXR2YWwgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwo
ZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9jdXN0b21SZXNvbHZlci5nZXQo
KSwgYXJncyk7CkBAIC05OCw3ICs5OCw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgICAgICByZXBv
cnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIXJldHZh
bC5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmVzdWx0ID0gdXN0cmluZ1RvU3Ry
aW5nKHJldHZhbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICAgICAgcmVz
dWx0ID0gcmV0dmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICB9CiAKICAgICBE
b2N1bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDY1NTFkNjY4N2RmZjgyOGU5NTRiYzJj
ZjFmNGFhNmM4ZmEyNDY1MjUuLjM0NGE4MDc4Mjg2ZDI1ZWE0OGExNDIyZjEzZGRhYjg3OGNmOTll
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAt
NDgsOSArNDgsOSBAQCBjb25zdCBKU0M6Okhhc2hUYWJsZSogZ2V0SGFzaFRhYmxlRm9yR2xvYmFs
RGF0YShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0CiAgICAgcmV0dXJuIERPTU9iamVj
dEhhc2hUYWJsZU1hcDo6bWFwRm9yKGdsb2JhbERhdGEpLmdldChzdGF0aWNUYWJsZSk7CiB9CiAK
LUpTVmFsdWUganNTdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nQ2FjaGUm
IHN0cmluZ0NhY2hlLCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKQorSlNWYWx1ZSBqc1N0cmluZ1dp
dGhDYWNoZVNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2Fj
aGUsIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiB7Ci0gICAgSlNTdHJpbmcqIHdyYXBwZXIgPSBq
c1N0cmluZyhleGVjLCBVU3RyaW5nKHN0cmluZ0ltcGwpKTsKKyAgICBKU1N0cmluZyogd3JhcHBl
ciA9IEpTQzo6anNTdHJpbmcoZXhlYywgU3RyaW5nKHN0cmluZ0ltcGwpKTsKICAgICB3ZWFrQWRk
KHN0cmluZ0NhY2hlLCBzdHJpbmdJbXBsLCBQYXNzV2VhazxKU1N0cmluZz4od3JhcHBlciwgY3Vy
cmVudFdvcmxkKGV4ZWMpLT5zdHJpbmdXcmFwcGVyT3duZXIoKSwgc3RyaW5nSW1wbCkpOwogICAg
IHJldHVybiB3cmFwcGVyOwogfQpAQCAtNTksNDAgKzU5LDQwIEBAIEpTVmFsdWUganNTdHJpbmdP
ck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhl
Yywgcyk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHMpOwogfQogCiBKU1Zh
bHVlIGpzT3duZWRTdHJpbmdPck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMp
CiB7CiAgICAgaWYgKHMuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICBy
ZXR1cm4ganNPd25lZFN0cmluZyhleGVjLCBzdHJpbmdUb1VTdHJpbmcocykpOworICAgIHJldHVy
biBqc093bmVkU3RyaW5nKGV4ZWMsIHMpOwogfQogCiBKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmlu
ZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBqc1N0cmluZyhl
eGVjLCBzKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcyk7CiB9CiAKIEpT
VmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5n
V2l0aENhY2hlKGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKIEpTVmFsdWUganNTdHJpbmdPck51
bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCB1cmwuc3RyaW5nKCkpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1cmwu
c3RyaW5nKCkpOwogfQogCiBKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVybC5zdHJp
bmcoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHVybC5zdHJpbmcoKSk7
CiB9CiAKIEF0b21pY1N0cmluZ0ltcGwqIGZpbmRBdG9taWNTdHJpbmcoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKQEAgLTEwOCwxNCArMTA4LDE0IEBAIFN0cmluZyB2YWx1ZVRvU3RyaW5nV2l0
aE51bGxDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHVzdHJp
bmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJldHVy
biB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiB9CiAKIFN0cmluZyB2YWx1ZVRv
U3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiB1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogfQogCiBKU1ZhbHVlIGpzRGF0ZU9yTnVsbChFeGVjU3RhdGUqIGV4ZWMsIGRv
dWJsZSB2YWx1ZSkKQEAgLTEzOSw3ICsxMzksNyBAQCBKU0M6OkpTVmFsdWUganNBcnJheShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzcwog
ICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAgICBpZiAoc3RyaW5nTGlzdCkg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5nTGlzdC0+bGVuZ3RoKCk7
ICsraSkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHN0cmluZ0xpc3Qt
Pml0ZW0oaSkpKTsKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIHN0cmluZ0xpc3QtPml0ZW0oaSkpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTQzo6Y29uc3Ry
dWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBsaXN0KTsKIH0KQEAgLTE0OSwxNCArMTQ5LDE0
IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBleGNlcHRp
b24pCiAgICAgaWYgKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGNlcHRpb24pKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IGV4Y2VwdGlvbi50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGV4
Y2VwdGlvbi50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgSlNPYmplY3QqIGV4Y2Vw
dGlvbk9iamVjdCA9IGV4Y2VwdGlvbi50b09iamVjdChleGVjKTsKICAgICBpbnQgbGluZU51bWJl
ciA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxpbmUiKSku
dG9JbnQzMihleGVjKTsKLSAgICBVU3RyaW5nIGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlv
bk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4
Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
IAogICAgIGlmIChFeGNlcHRpb25CYXNlKiBleGNlcHRpb25CYXNlID0gdG9FeGNlcHRpb25CYXNl
KGV4Y2VwdGlvbikpCi0gICAgICAgIGVycm9yTWVzc2FnZSA9IHN0cmluZ1RvVVN0cmluZyhleGNl
cHRpb25CYXNlLT5tZXNzYWdlKCkgKyAiOiAiICArIGV4Y2VwdGlvbkJhc2UtPmRlc2NyaXB0aW9u
KCkpOworICAgICAgICBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb25CYXNlLT5tZXNzYWdlKCkgKyAi
OiAiICArIGV4Y2VwdGlvbkJhc2UtPmRlc2NyaXB0aW9uKCk7CiAKICAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHlu
YW1pY0Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpKSB7CkBAIC0xNjQsNyArMTY0LDcg
QEAgdm9pZCByZXBvcnRFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2VwdGlv
bikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnJlcG9ydEV4Y2VwdGlvbih1
c3RyaW5nVG9TdHJpbmcoZXJyb3JNZXNzYWdlKSwgbGluZU51bWJlciwgdXN0cmluZ1RvU3RyaW5n
KGV4Y2VwdGlvblNvdXJjZVVSTCksIDApOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnJl
cG9ydEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGV4Y2VwdGlvblNvdXJjZVVS
TCwgMCk7CiB9CiAKIHZvaWQgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDBjM2Q1Mzc0
ODFiZWEyYTk5Yzk4MzUzYzE0ZDZlMTZmMDAyNDQ5N2QuLjAwOWIyN2MzYWNhYWIyOWQxYWU3ZmRk
YjRlYzA1Y2QxYmEwN2QxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCkBAIC0yMzMsMTIgKzIzMywxMiBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kg
ewogICAgIC8vIENvbnZlcnQgYSBET00gaW1wbGVtZW50YXRpb24gZXhjZXB0aW9uIGNvZGUgaW50
byBhIEphdmFTY3JpcHQgZXhjZXB0aW9uIGluIHRoZSBleGVjdXRpb24gc3RhdGUuCiAgICAgdm9p
ZCBzZXRET01FeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25Db2RlKTsKIAotICAg
IEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAv
LyBlbXB0eSBpZiB0aGUgc3RyaW5nIGlzIG51bGwKLSAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdT
bG93Q2FzZShKU0M6OkV4ZWNTdGF0ZSosIEpTU3RyaW5nQ2FjaGUmLCBTdHJpbmdJbXBsKik7Cisg
ICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJik7CisgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hlU2xvd0Nhc2UoSlND
OjpFeGVjU3RhdGUqLCBKU1N0cmluZ0NhY2hlJiwgU3RyaW5nSW1wbCopOwogICAgIEpTQzo6SlNW
YWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gZW1wdHkgaWYg
dGhlIFVSTCBpcyBudWxsCi0gICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzKQorICAgIGlubGluZSBKU0M6OkpT
VmFsdWUganNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21p
Y1N0cmluZyYgcykKICAgICB7IAotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgcy5zdHJp
bmcoKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBzLnN0cmluZygp
KTsKICAgICB9CiAgICAgICAgIAogICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVsbChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlmIHRoZSBzdHJpbmcgaXMgbnVs
bApAQCAtMjUyLDExICsyNTIsOCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAg
IEpTQzo6SlNWYWx1ZSBqc093bmVkU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJik7IAogCiAgICAgU3RyaW5nIHByb3BlcnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVy
dHlOYW1lKTsKLSAgICBTdHJpbmcgdXN0cmluZ1RvU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYp
OwotICAgIEpTQzo6VVN0cmluZyBzdHJpbmdUb1VTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5h
bWUpOwotICAgIEF0b21pY1N0cmluZyB1c3RyaW5nVG9BdG9taWNTdHJpbmcoY29uc3QgSlNDOjpV
U3RyaW5nJik7CiAgICAgQXRvbWljU3RyaW5nSW1wbCogZmluZEF0b21pY1N0cmluZyhKU0M6OlBy
b3BlcnR5TmFtZSk7CiAKICAgICBTdHJpbmcgdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOyAvLyBudWxsIGlmIHRoZSB2YWx1ZSBpcyBudWxs
CkBAIC0zMTcsNyArMzE0LDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICBz
dHJ1Y3QgSlNWYWx1ZVRyYWl0czxTdHJpbmc+IHsKICAgICAgICAgc3RhdGljIGlubGluZSBKU0M6
OkpTVmFsdWUgYXJyYXlKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCBzdHJpbmdUb1VTdHJpbmcodmFsdWUpKTsKKyAgICAgICAgICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9Owog
CkBAIC0zNTgsNyArMzU1LDcgQEAgZW51bSBQYXJhbWV0ZXJEZWZhdWx0UG9saWN5IHsKICAgICBz
dHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8U3RyaW5nPiB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBhcnJheU5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUg
anNWYWx1ZSwgU3RyaW5nJiBpbmRleGVkVmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlu
ZGV4ZWRWYWx1ZSA9IHVzdHJpbmdUb1N0cmluZyhqc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CisgICAgICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgfTsKQEAgLTQwOSwzMCArNDA2LDIyIEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7
CiAgICAgdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICBKU0M6OkpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5jdGlvbkdldHRl
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCi0g
ICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBzKQorICAgIGlubGluZSBKU0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGUo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykKICAgICB7CiAgICAgICAgIFN0
cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzLmltcGwoKTsKICAgICAgICAgaWYgKCFzdHJpbmdJbXBs
IHx8ICFzdHJpbmdJbXBsLT5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBqc0VtcHR5U3Ry
aW5nKGV4ZWMpOwogCisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGRuJ3QgaW52b2tlIFN0cmlu
Z0ltcGw6OmNoYXJhY3RlcnMoKS4KKyAgICAgICAgLy8gRklYTUU6IHdoeSBub3QganVzdCByZXR1
cm4gYSBTbWFsbFN0cmluZ3Mgd2hlbiBwb3NzaWJsZT8KICAgICAgICAgaWYgKHN0cmluZ0ltcGwt
Pmxlbmd0aCgpID09IDEgJiYgc3RyaW5nSW1wbC0+Y2hhcmFjdGVycygpWzBdIDw9IDB4RkYpCi0g
ICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKHMpKTsKKyAg
ICAgICAgICAgIHJldHVybiBKU0M6OmpzU3RyaW5nKGV4ZWMsIHMpOwogCiAgICAgICAgIEpTU3Ry
aW5nQ2FjaGUmIHN0cmluZ0NhY2hlID0gY3VycmVudFdvcmxkKGV4ZWMpLT5tX3N0cmluZ0NhY2hl
OwogICAgICAgICBpZiAoSlNDOjpKU1N0cmluZyogc3RyaW5nID0gc3RyaW5nQ2FjaGUuZ2V0KHN0
cmluZ0ltcGwpKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKIAotICAgICAgICByZXR1cm4g
anNTdHJpbmdTbG93Q2FzZShleGVjLCBzdHJpbmdDYWNoZSwgc3RyaW5nSW1wbCk7Ci0gICAgfQot
Ci0gICAgaW5saW5lIFN0cmluZyB1c3RyaW5nVG9TdHJpbmcoY29uc3QgSlNDOjpVU3RyaW5nJiB1
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHUuaW1wbCgpOwotICAgIH0KLQotICAgIGlubGluZSBK
U0M6OlVTdHJpbmcgc3RyaW5nVG9VU3RyaW5nKGNvbnN0IFN0cmluZyYgcykKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBKU0M6OlVTdHJpbmcocy5pbXBsKCkpOworICAgICAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGVTbG93Q2FzZShleGVjLCBzdHJpbmdDYWNoZSwgc3RyaW5nSW1wbCk7CiAgICAg
fQogCiAgICAgaW5saW5lIFN0cmluZyBwcm9wZXJ0eU5hbWVUb1N0cmluZyhKU0M6OlByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC00NDAsMTEgKzQyOSw2IEBAIGVudW0gUGFyYW1ldGVyRGVm
YXVsdFBvbGljeSB7CiAgICAgICAgIHJldHVybiBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwog
ICAgIH0KIAotICAgIGlubGluZSBBdG9taWNTdHJpbmcgdXN0cmluZ1RvQXRvbWljU3RyaW5nKGNv
bnN0IEpTQzo6VVN0cmluZyYgdSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmco
dS5pbXBsKCkpOwotICAgIH0KLQogICAgIGlubGluZSBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRm9ybURhdGFDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAK
aW5kZXggN2JlOTMzMjhjMjY1NjY0N2Q3ZjFmMGU2MjNhYmE2ZDI1MDc3M2JiMy4uNGVkNDQ5N2Ex
YmRhNDBiZDQyNDcxNjRjNzk4YTAyYmZhMWJlMTk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTYwLDE1ICs2MCwxNSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NRm9ybURhdGFDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNET01Gb3JtRGF0YShFeAogSlNWYWx1ZSBKU0RPTUZvcm1EYXRhOjphcHBlbmQo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikg
ewotICAgICAgICBTdHJpbmcgbmFtZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBTdHJpbmcgbmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgICAgICBpZiAodmFsdWUuaW5oZXJp
dHMoJkpTQmxvYjo6c19pbmZvKSkgewogICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lOwogICAg
ICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzICYmICFleGVjLT5hcmd1bWVu
dCgyKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gdXN0
cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDIpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBleGVjLT5hcmd1bWVudCgyKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICBpbXBsKCktPmFwcGVuZChuYW1lLCB0
b0Jsb2IodmFsdWUpLCBmaWxlbmFtZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW1w
bCgpLT5hcHBlbmQobmFtZSwgdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgICAgICAgICAgaW1wbCgpLT5hcHBlbmQobmFtZSwgdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICB9CiAKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xp
c3RDdXN0b20uY3BwCmluZGV4IDdmOGQ1ZWM1M2ZmYzNmMzY5YTljYzZmYTI2M2ZhZDJiNmYzYmJm
MzkuLjY4NjlkY2VhNDlmZTYzMDQ4MDdhOTJkN2U5NTMzZDE5YTQ5YTZkNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcApA
QCAtMzQsNyArMzQsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlz
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgSlNBcnJheSogYXJyYXkgPSBh
c0FycmF5KHZhbHVlKTsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3RyaW5nTGlzdCA9IERP
TVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJh
eS0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgc3RyaW5nTGlzdC0+YXBwZW5kKHVzdHJpbmdUb1N0
cmluZyhhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cisg
ICAgICAgIHN0cmluZ0xpc3QtPmFwcGVuZChhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKIAogICAgIHJldHVybiBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcAppbmRleCA4OTFlYTZhYjQxYjYxODlhZDhkNDQ4MGZlYjc4NGQ0ZmE0YjQ0MDdlLi5kMzk3
OWM0OTQzOTFiN2EzZWE1YmIzMWYwODdkOWRlOTlmNzZhODdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC00Myw3ICs0
Myw3IEBAIGJvb2wgSlNET01TdHJpbmdNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUq
LCBET01TdHJpbmdNYXAqIGltcGwsIFByb3BlcnR5CiBKU1ZhbHVlIEpTRE9NU3RyaW5nTWFwOjpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKIHsKICAgICBKU0RPTVN0cmluZ01hcCogdGhpc09iaiA9IGpzQ2FzdDxK
U0RPTVN0cmluZ01hcCo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7Ci0gICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHRoaXNP
YmotPmltcGwoKS0+aXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KSk7CiB9CiAKIHZvaWQgSlNET01TdHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgSlNET01T
dHJpbmdNYXA6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wCiAgICAgdGhpc09iamVjdC0+bV9pbXBsLT5nZXROYW1lcyhuYW1lcyk7CiAg
ICAgc2l6ZV90IGxlbmd0aCA9IG5hbWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4
ZWMsIHN0cmluZ1RvVVN0cmluZyhuYW1lc1tpXSkpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcihleGVjLCBuYW1lc1tpXSkpOwogCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KQEAgLTcy
LDcgKzcyLDcgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBib29sIEpTRE9NU3RyaW5nTWFw
OjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7Ci0gICAgU3RyaW5nIHN0cmluZ1Zh
bHVlID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGExZjBjMWIyMjYwZDVmYjZmMGJjZjkx
N2JlYzZmZTZhNTViN2NkM2MuLjM0MzlhZmI0NTEzYzQ1MmY5YTU5ZTAwM2U3OTNjMGEyMDI4ZDQ3
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKQEAgLTQyMSwxMiArNDIxLDEyIEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICB9CiAjZW5kaWYKIAotICAgIFVT
dHJpbmcgbG9jYXRpb25TdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgU3RyaW5nIGxvY2F0aW9uU3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKExvY2F0aW9uKiBsb2NhdGlvbiA9IGltcGwoKS0+bG9jYXRpb24oKSkKLSAgICAg
ICAgbG9jYXRpb24tPnNldEhyZWYodXN0cmluZ1RvU3RyaW5nKGxvY2F0aW9uU3RyaW5nKSwgYWN0
aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAgICAgIGxvY2F0
aW9uLT5zZXRIcmVmKGxvY2F0aW9uU3RyaW5nLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0
RE9NV2luZG93KGV4ZWMpKTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6ZXZlbnQoRXhlY1N0
YXRlKiBleGVjKSBjb25zdApAQCAtNDcyLDcgKzQ3Miw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6
Om9wZW4oRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB2YWx1ZVRvU3Ry
aW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgIEF0b21pY1N0cmluZyBmcmFtZU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVm
aW5lZE9yTnVsbCgpID8gIl9ibGFuayIgOiB1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJn
dW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBBdG9taWNTdHJpbmcg
ZnJhbWVOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSA/ICJfYmxh
bmsiIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgU3RyaW5nIHdpbmRvd0ZlYXR1cmVzU3RyaW5nID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRl
ZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgyKSk7CkBAIC02NDEsNyArNjQx
LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcih1c3RyaW5nVG9BdG9taWNT
dHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSwgY3Vy
cmVudFdvcmxkKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAg
ICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5l
ciksIHRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLCBleGVjLT5hcmd1bWVudCgyKS50
b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC02NTUs
NyArNjU1LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih1c3Ry
aW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlz
LCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKS5nZXQoKSwgZXhlYy0+YXJndW1lbnQoMikudG9C
b29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykp
LmdldCgpLCBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuY3BwCmluZGV4IDc1OGU3Mjc4YjE0OGNmMjExMTUxNGY0MTRmYThiYjkwMzhh
YjBiZDUuLjU1ZDk5YmM4MGU1NGFlZDY5N2E2YmZmNTk0MzNmMjNlM2Q0M2I5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIHZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFBhc3NSZWZQdHI8RE9N
V2luZG93PiBkb21XaW5kb3cpCiAvLyBKU09iamVjdCBtZXRob2RzCiAvLyAtLS0tCiAKLVVTdHJp
bmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QpCitT
dHJpbmcgSlNET01XaW5kb3dTaGVsbDo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgY29uc3QgSlNET01XaW5kb3dTaGVsbCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25z
dCBKU0RPTVdpbmRvd1NoZWxsKj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+d2lu
ZG93KCktPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LT53aW5kb3coKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggNWYy
MmQ3YjE4ZDQ5ZGIzNDJmNjA3NTMzOWRjNGNmNjM1MzJmYmUxZi4uODRhYzRmMzM2ZTE1MDJhYzEw
MjZiZTkzMmIzMmJlYjg2OGI4MTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuaApAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBzdGF0aWMg
SlNDOjpVU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0Kik7CisgICAgICAgIHN0
YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTQzo6SlNPYmplY3QqKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRD
dXN0b20uY3BwCmluZGV4IDhlOTk0OGYxYWMyMGI5ZGU4ODhlNjgzN2E0NmQzYmFlZTZlZjBmZjMu
LjE5M2E2YzRhMzUyZTMxZjNjZjA1ZTc5MDhkOWM2YjdlYjA1ODY0MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50OjppbnRl
cnZhbChFeGVjU3RhdGUqKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlTW90aW9uRXZlbnQ6Omlu
aXREZXZpY2VNb3Rpb25FdmVudChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgY29uc3QgU3RyaW5n
JiB0eXBlID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CisgICAgY29uc3QgU3RyaW5nIHR5cGUgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgYm9vbCBidWJibGVzID0gZXhlYy0+
YXJndW1lbnQoMSkudG9Cb29sZWFuKGV4ZWMpOwogICAgIGJvb2wgY2FuY2VsYWJsZSA9IGV4ZWMt
PmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAK
aW5kZXggZDAzYjc0MGFhNWZmZDNkYmVkZjE1NTI0ZmE3ODY4Y2EyMTg5YjUzNC4uMWYwNzBmZTYw
ZGM0MjU1NGQ4YzBhNWU5NDc3NTk2ZjdkNDE4NmI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20u
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojph
YnNvbHV0ZShFeGVjU3RhdGUqKSBjb25zdAogCiBKU1ZhbHVlIEpTRGV2aWNlT3JpZW50YXRpb25F
dmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoRXhlY1N0YXRlKiBleGVjKQogewotICAg
IGNvbnN0IFN0cmluZyYgdHlwZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGNvbnN0IFN0cmluZyB0eXBlID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGJvb2wgYnVi
YmxlcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvQm9vbGVhbihleGVjKTsKICAgICBib29sIGNhbmNl
bGFibGUgPSBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgLy8gSWYgYWxw
aGEsIGJldGEgb3IgZ2FtbWEgYXJlIG51bGwgb3IgdW5kZWZpbmVkLCBtYXJrIHRoZW0gYXMgbm90
IHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0
aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAK
aW5kZXggODViNzU5MTk4YmI0YWYyODBlOGI2YzhhNzM3ZmMyYWZmMTUyN2QxMC4uZDRlMjI2NDcz
OTY0OGNmYmUyNzA1ZDNiMWQ1MTdjZDMyZmU0YmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBKU0RpY3Rp
b25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZh
bHVlLCBEaWN0aW8KIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IHVz
dHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJl
c3VsdCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIH0KIAogdm9pZCBKU0Rp
Y3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZl
Y3RvcjxTdHJpbmc+JiByZXN1bHQpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBKU0RpY3Rpb25h
cnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxT
dHJpbmc+JgogICAgICAgICBKU1ZhbHVlIGl0ZW1WYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkp
OwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKGl0ZW1WYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICB9CiB9CiAKQEAgLTE4Miw3ICsxODIs
NyBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgSGFzaFNldDxBdG9taWNTdAogICAgICAgICBKU1ZhbHVlIGl0ZW1WYWx1ZSA9
IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJlc3VsdC5hZGQodXN0cmluZ1RvQXRvbWlj
U3RyaW5nKGl0ZW1WYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAg
cmVzdWx0LmFkZChpdGVtVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICB9
CiB9CiAjZW5kaWYKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEpTRGljdGlvbmFyeTo6Z2V0V2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBTdHJpbgog
ICAgIGlmICh0cnlHZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgdmFsdWUp
ICE9IFByb3BlcnR5Rm91bmQgfHwgdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0gdXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3Ry
aW5nKG1fZXhlYyktPnZhbHVlKG1fZXhlYykpOworICAgIHJlc3VsdCA9IHZhbHVlLnRvV1RGU3Ry
aW5nKG1fZXhlYyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNjQ3YjQ0NjFlYWU0MGFiNDVi
YjYyNWViYzliZjI3ZmU0NWFkNDlmZC4uNTQ4ODQwNGI0OGE0N2M5Nzk1ZmYwM2UwMjJiNmFkZjY5
NWM2NGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHAKQEAgLTY5LDEyICs2OSwxMiBAQCB2b2lkIEpTRG9jdW1lbnQ6OnNldExvY2F0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBVU3RyaW5nIGxvY2F0aW9uU3RyaW5nID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2NhdGlvblN0cmluZyA9IHZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChMb2NhdGlvbiogbG9jYXRpb24gPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCkpCi0gICAgICAgIGxvY2F0aW9uLT5z
ZXRIcmVmKHVzdHJpbmdUb1N0cmluZyhsb2NhdGlvblN0cmluZyksIGFjdGl2ZURPTVdpbmRvdyhl
eGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgICAgICBsb2NhdGlvbi0+c2V0SHJlZihs
b2NhdGlvblN0cmluZywgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVj
KSk7CiB9CiAKIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAppbmRleCA1YjRiNTlmOGZlMGI5ODQyYWNjMTZi
NGIyNDdhNjBiMTNjNjRkYWQxLi5iNjU5MjU2MDAxZDA2ZmI3NTNkN2RmZDUzOWUwOGI2ZDI5NGQy
MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3Bw
CkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgICAgIGdsb2Jh
bE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KGV2ZW50KTsKIAogICAgICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwotICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBlcnJvckV2
ZW50LT5tZXNzYWdlKCkpKTsKLSAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgZXJy
b3JFdmVudC0+ZmlsZW5hbWUoKSkpOworICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhD
YWNoZShleGVjLCBlcnJvckV2ZW50LT5tZXNzYWdlKCkpKTsKKyAgICAgICAgYXJncy5hcHBlbmQo
anNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgZXJyb3JFdmVudC0+ZmlsZW5hbWUoKSkpOwogICAgICAg
ICBhcmdzLmFwcGVuZChqc051bWJlcihlcnJvckV2ZW50LT5saW5lbm8oKSkpOwogCiAgICAgICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXgg
Nzc5ZThkNzM5ZDUzNjkzM2I2NjdmNjQyMmQ0NWFlNGJiMzM3Nzg1OS4uNWVlYjQxMDE4MWE0YjI4
MzgwZjYwMTM4ZDM2YWRhY2M3ZGVkMGU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBKU0V2ZW50
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQKICAgICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIXJldHZhbC5pc1VuZGVmaW5lZE9yTnVs
bCgpICYmIGV2ZW50LT5zdG9yZXNSZXN1bHRBc1N0cmluZygpKQotICAgICAgICAgICAgICAgIGV2
ZW50LT5zdG9yZVJlc3VsdCh1c3RyaW5nVG9TdHJpbmcocmV0dmFsLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgICAgICAgICAgICAgIGV2ZW50LT5zdG9yZVJlc3VsdChyZXR2YWwu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgICAgIGlmIChtX2lzQXR0cmli
dXRlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJldHZhbC5pc0ZhbHNlKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50LT5wcmV2ZW50RGVmYXVsdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA4
NTQ2NzI5ZjRkNzUzOTAwMjgxMjQ3OTBhNmY3ZTA4NjdkOWVhNGY2Li41NTYxYmNhZDBiNzM3MGE1
ZDA3Y2NlMjUyYzNjZmYwNzI4OGZkODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNzAsNyArNzAs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxl
Y3Rpb24oRXhlY1N0YXRlKiBleGVjKQogCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9
PSAxKSB7CiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50LmFsbCg8aW5kZXg+KSBldGMu
Ci0gICAgICAgIFVTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgICAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICB1bnNpZ25lZCBpbmRleCA9
IHRvVUludDMyRnJvbVN0cmluZ0ltcGwoc3RyaW5nLmltcGwoKSk7CiAgICAgICAgIGlmIChpbmRl
eCAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVj
dGlvbi0+aXRlbShpbmRleCkpKTsKQEAgLTgwLDEwICs4MCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVj
KQogICAgIH0KIAogICAgIC8vIFRoZSBzZWNvbmQgYXJnLCBpZiBzZXQsIGlzIHRoZSBpbmRleCBv
ZiB0aGUgaXRlbSB3ZSB3YW50Ci0gICAgVVN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSB0b1VJ
bnQzMkZyb21TdHJpbmdJbXBsKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKS5pbXBsKCkpOworICAgIFN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgdW5zaWduZWQgaW5kZXggPSB0b1VJbnQz
MkZyb21TdHJpbmdJbXBsKGV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGV4ZWMpLmltcGwo
KSk7CiAgICAgaWYgKGluZGV4ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkgewotICAgICAg
ICBpZiAoTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPm5hbWVkSXRlbVdpdGhJbmRleCh1c3RyaW5n
VG9BdG9taWNTdHJpbmcoc3RyaW5nKSwgaW5kZXgpKQorICAgICAgICBpZiAoTm9kZSogbm9kZSA9
IGNvbGxlY3Rpb24tPm5hbWVkSXRlbVdpdGhJbmRleChzdHJpbmcsIGluZGV4KSkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBqc0NvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBub2RlKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDNmOWEzOWZk
MjU2MTM3MGI4MDkwZjk0MzI3ZjMxZjU1ZjBmNWMyYzguLjgwMjEyYTllZTkxOWYwMWExZDc5N2Yz
YjA4NDQzYjJmYzRlZWE3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IHN0
YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oaW1wbCgpKTsKLSAgICBjb25zdCBVU3RyaW5n
JiBjb250ZXh0SWQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CisgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgUmVmUHRyPENhbnZhc0NvbnRleHRBdHRyaWJ1
dGVzPiBhdHRyczsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKGNvbnRleHRJZCA9PSAiZXhw
ZXJpbWVudGFsLXdlYmdsIiB8fCBjb250ZXh0SWQgPT0gIndlYmtpdC0zZCIpIHsKQEAgLTc0LDcg
Kzc0LDcgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQgPSBjYW52YXMtPmdldENvbnRleHQodXN0cmluZ1RvU3RyaW5nKGNvbnRl
eHRJZCksIGF0dHJzLmdldCgpKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0
ID0gY2FudmFzLT5nZXRDb250ZXh0KGNvbnRleHRJZCwgYXR0cnMuZ2V0KCkpOwogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNvbnRleHQpKTsKQEAgLTEw
NSw3ICsxMDUsNyBAQCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nKGV4ZWMsIGNhbnZhcy0+dG9EYXRhVVJMKHR5cGUsIHF1YWxpdHlQdHIsIGVjKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmpzU3RyaW5nKGV4ZWMsIGNhbnZhcy0+dG9EYXRhVVJM
KHR5cGUsIHF1YWxpdHlQdHIsIGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDVlMmYzNWVmZDM5MzhiYmFhMGI5NTg5
ZjkzMWQzYWNkNzc5NmI3NWEuLjNjNjg5M2IwMDg3OTQ5MDUzZmZmMzNkNWMzNDFmNTE4YTA2MmE4
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVu
dEN1c3RvbS5jcHAKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkb2N1
bWVudFdyaXRlKEV4ZWNTdGF0ZSogZXhlYywgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgTmV3bGlu
CiAKICAgICBzaXplX3Qgc2l6ZSA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKIAotICAgIFVTdHJp
bmcgZmlyc3RTdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7Ci0gICAgU2VnbWVudGVkU3RyaW5nIHNlZ21lbnRlZFN0cmluZyA9IHVzdHJpbmdUb1N0
cmluZyhmaXJzdFN0cmluZyk7CisgICAgU3RyaW5nIGZpcnN0U3RyaW5nID0gZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFNlZ21lbnRlZFN0cmluZyBz
ZWdtZW50ZWRTdHJpbmcgPSBmaXJzdFN0cmluZzsKICAgICBpZiAoc2l6ZSAhPSAxKSB7CiAgICAg
ICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgIHNlZ21lbnRlZFN0cmluZy5jbGVhcigpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgc2l6ZTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgVVN0cmluZyBzdWJzZXF1ZW50U3RyaW5nID0gZXhlYy0+YXJn
dW1lbnQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgICAgICAgICAgICAgIHNl
Z21lbnRlZFN0cmluZy5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKHVzdHJpbmdUb1N0cmluZyhzdWJz
ZXF1ZW50U3RyaW5nKSkpOworICAgICAgICAgICAgICAgIFN0cmluZyBzdWJzZXF1ZW50U3RyaW5n
ID0gZXhlYy0+YXJndW1lbnQoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAg
ICAgICAgICAgIHNlZ21lbnRlZFN0cmluZy5hcHBlbmQoU2VnbWVudGVkU3RyaW5nKHN1YnNlcXVl
bnRTdHJpbmcpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
CmluZGV4IDM2ZmQ4Yjc0NmFlZjNlMzczMDZkMmIxOGQ5N2FkYzA2MGRkMDU1MDAuLjUyMGNlNjUw
YjNhMmMyZGNhNDk2OWM1YjdhYWJhNjYyMDAyMWYzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzUs
NyArNzUsNyBAQCBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9u
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBpZiAoIWlucHV0LT5jYW5IYXZlU2VsZWN0aW9u
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKIAotICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBpbnB1dC0+c2VsZWN0aW9uRGlyZWN0aW9uKCkpOworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbnB1dC0+c2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQog
CiB2b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBKU0hUTUxJbnB1
dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnB1dC0+c2V0U2VsZWN0aW9u
RGlyZWN0aW9uKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpKTsKKyAgICBpbnB1dC0+c2V0U2VsZWN0aW9uRGlyZWN0aW9uKHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRT
ZWxlY3Rpb25SYW5nZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC05Nyw3ICs5Nyw3IEBAIEpTVmFsdWUg
SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShFeGVjU3RhdGUqIGV4ZWMpCiAK
ICAgICBpbnQgc3RhcnQgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlu
dCBlbmQgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwotICAgIFN0cmluZyBkaXJl
Y3Rpb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMikudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgZGlyZWN0aW9uID0gZXhlYy0+YXJndW1lbnQoMiku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogCiAgICAgaW5wdXQtPnNldFNlbGVjdGlvblJh
bmdlKHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKaW5kZXggM2Y5
MDdhYzc1MGQxYTA0ZDk0NjRkNGM4NDc2NmYxMjcxY2E5ZDQyYy4uNzcxMTNjNzBmMmIwODUwZWY3
N2IzNzg3YWUzZDhkOGQ5ZGI1NWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNjUsNyArNjUsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJREJBbnkqIGlkYkFu
eSkKICAgICBjYXNlIElEQkFueTo6TnVsbFR5cGU6CiAgICAgICAgIHJldHVybiBqc051bGwoKTsK
ICAgICBjYXNlIElEQkFueTo6U3RyaW5nVHlwZToKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIGlkYkFueS0+c3RyaW5nKCkpOworICAgICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgaWRiQW55LT5zdHJpbmcoKSk7CiAgICAgY2FzZSBJREJBbnk6OkRPTVN0cmluZ0xpc3RU
eXBlOgogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGlkYkFueS0+ZG9t
U3RyaW5nTGlzdCgpKTsKICAgICBjYXNlIElEQkFueTo6SURCQ3Vyc29yVHlwZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCS2V5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCS2V5Q3VzdG9tLmNwcAppbmRleCBiMmI3OGVjNTc2
Yzc3Njc2YjZhOThmYmVmOWEzODNmYWMwYWJmMWQ1Li40YWZhNTUwYjViNzYxNmI4NWZiMDU0YWE5
N2U3MDExNjEwOTE2MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQktleUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJL
ZXlDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElEQktleSoga2V5KQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUob3V0QXJyYXkpOwogICAgICAgICB9CiAgICAgY2FzZSBJREJL
ZXk6OlN0cmluZ1R5cGU6Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBrZXktPnN0cmlu
ZygpKTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGtleS0+c3RyaW5n
KCkpOwogICAgIGNhc2UgSURCS2V5OjpEYXRlVHlwZToKICAgICAgICAgcmV0dXJuIGpzRGF0ZU9y
TnVsbChleGVjLCBrZXktPmRhdGUoKSk7CiAgICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAKaW5kZXggMTQxMzc1MDc4YTc5NGJhYzRkMmNhYjNlZGNiZmZmYzBkYTI4
YWUxMS4uOWVmZWQ0NmJmODZmYTY4OTViNGRiM2U2YTBlYjk1NjQ1NTBkNTNkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcApAQCAtMTA5LDggKzEwOSw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvVGhpc09iamVjdChleGVjKTsKLSAgICBVU3RyaW5nIHJlc3VsdCA9IHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KTsKLSAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgcmVzdWx0KTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpOworICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCByZXN1bHQpOwogfQogCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE3MCw3ICsxNzAs
NyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHMoRXhlY1N0
YXRlKiBleGVjKQogICAgIGludCBsaW5lTnVtYmVyID0gc291cmNlQ29kZS0+Zmlyc3RMaW5lKCk7
CiAgICAgaWYgKGxpbmVOdW1iZXIpCiAgICAgICAgIGxpbmVOdW1iZXIgLT0gMTsgLy8gSW4gdGhl
IGluc3BlY3RvciBwcm90b2NvbCBhbGwgcG9zaXRpb25zIGFyZSAwLWJhc2VkIHdoaWxlIGluIFNv
dXJjZUNvZGUgdGhleSBhcmUgMS1iYXNlZAotICAgIFVTdHJpbmcgc2NyaXB0SWQgPSBVU3RyaW5n
OjpudW1iZXIoc291cmNlQ29kZS0+cHJvdmlkZXIoKS0+YXNJRCgpKTsKKyAgICBTdHJpbmcgc2Ny
aXB0SWQgPSBTdHJpbmc6Om51bWJlcihzb3VyY2VDb2RlLT5wcm92aWRlcigpLT5hc0lEKCkpOwog
CiAgICAgSlNPYmplY3QqIGxvY2F0aW9uID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAg
ICAgbG9jYXRpb24tPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgImxpbmVOdW1iZXIiKSwganNOdW1iZXIobGluZU51bWJlcikpOwpAQCAtMTc4LDEyICsxNzgs
MTIgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChleGVjKTsKICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIGxvY2F0aW9uKTsKLSAgICBVU3RyaW5nIG5hbWUgPSBm
dW5jdGlvbi0+bmFtZShleGVjKTsKKyAgICBTdHJpbmcgbmFtZSA9IGZ1bmN0aW9uLT5uYW1lKGV4
ZWMpOwogICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAibmFtZSIpLCBqc1N0cmluZyhl
eGVjLCBuYW1lKSk7Ci0gICAgVVN0cmluZyBkaXNwbGF5TmFtZSA9IGZ1bmN0aW9uLT5kaXNwbGF5
TmFtZShleGVjKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBJZGVudGlmaWVyKGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIG5hbWUp
KTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWUgPSBmdW5jdGlvbi0+ZGlzcGxheU5hbWUoZXhlYyk7
CiAgICAgaWYgKCFkaXNwbGF5TmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiZGlzcGxheU5hbWUiKSwg
anNTdHJpbmcoZXhlYywgZGlzcGxheU5hbWUpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJkaXNwbGF5TmFtZSIpLCBqc1N0
cmluZ1dpdGhDYWNoZShleGVjLCBkaXNwbGF5TmFtZSkpOwogICAgIC8vIEZJWE1FOiBwcm92aWRl
IGZ1bmN0aW9uIHNjb3BlIGRhdGEgaW4gInNjb3Blc1JhdyIgcHJvcGVydHkgd2hlbiBKU0Mgc3Vw
cG9ydHMgaXQuCiAgICAgLy8gICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NzE5MgogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yNjAsNyArMjYwLDcgQEAgSlNWYWx1
ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZChFeGVjU3RhdGUqIGV4ZWMpCiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSB0b0RhdGFiYXNl
KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoZGF0YWJhc2UpCi0gICAgICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBpbXBsKCktPmRhdGFiYXNlSWRJbXBsKGRhdGFiYXNlKSk7CisgICAgICAg
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCktPmRhdGFiYXNlSWRJbXBsKGRh
dGFiYXNlKSk7CiAjZW5kaWYKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTI3MSw3
ICsyNzEsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdG9yYWdlSWQoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBTdG9yYWdlKiBz
dG9yYWdlID0gdG9TdG9yYWdlKGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoc3RvcmFnZSkK
LSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGltcGwoKS0+c3RvcmFnZUlkSW1wbChzdG9y
YWdlKSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsKCktPnN0
b3JhZ2VJZEltcGwoc3RvcmFnZSkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAKaW5kZXggZTYzZjQ5NzRjZTc3MjA0MDU2YmNlNGI4NzU2OWZmZjIxNDljMTE3ZS4u
Y2RlNzg3NTUwZWI3ODE4MDM0NzdlYmRiODE2ZGQzY2JhNTc0ZTY5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApA
QCAtNTQsNyArNTQsNyBAQCBTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVh
dGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgUwogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHNjcmlwdFN0YXRlKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1h
a2VTb3VyY2Uoc3RyaW5nVG9VU3RyaW5nKHNvdXJjZSkpOworICAgIFNvdXJjZUNvZGUgc291cmNl
Q29kZSA9IG1ha2VTb3VyY2Uoc291cmNlKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0U3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSk7CiAgICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFsdWUgPSBzY3JpcHRTdGF0
ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCAyOTc4
ZGVhZjA0ZGM4YjYwZjQ4OGJjMTc4ZDI4NjdjMTdmMzUzMjllLi44OWU3NzJhMjliZjUzNDY0NmI4
YmExNWFiN2ExZDAyNzk5OTAxNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC02OCw3
ICs2OCw3IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtKEV4ZWNT
dGF0ZSogZXhlY1N0YXRlKQogI2Vsc2UKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgcGxhdGZvcm0sIChBU0NJSUxpdGVyYWwoInVua25vd24iKSkpOwogI2VuZGlmCi0gICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWNTdGF0ZSwgcGxhdGZvcm0pOworICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjU3RhdGUsIHBsYXRmb3JtKTsKIH0KIAogSlNWYWx1ZSBKU0luc3BlY3Rv
ckZyb250ZW5kSG9zdDo6cG9ydChFeGVjU3RhdGUqIGV4ZWNTdGF0ZSkKQEAgLTgyLDcgKzgyLDcg
QEAgSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6cG9ydChFeGVjU3RhdGUqIGV4ZWNT
dGF0ZSkKICNlbHNlCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBvcnQs
IChBU0NJSUxpdGVyYWwoInVua25vd24iKSkpOwogI2VuZGlmCi0gICAgcmV0dXJuIGpzU3RyaW5n
KGV4ZWNTdGF0ZSwgcG9ydCk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWNTdGF0
ZSwgcG9ydCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTk5LDcgKzk5LDcg
QEAgc3RhdGljIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywg
SlNBcnJheSogYXJyYXksIENvbnRleHRNZW4KICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5nKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9IHVz
dHJpbmdUb1N0cmluZyh0eXBlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAg
IFN0cmluZyB0eXBlU3RyaW5nID0gdHlwZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgICAgIGlmICh0eXBlU3RyaW5nID09ICJzZXBhcmF0b3IiKSB7CiAgICAgICAgICAgICBDb250
ZXh0TWVudUl0ZW0gaXRlbShTZXBhcmF0b3JUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24sCkBAIC0xMTEsMTIgKzEx
MSwxMiBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMoRXhlY1N0YXRlKiBl
eGVjLCBKU0FycmF5KiBhcnJheSwgQ29udGV4dE1lbgogICAgICAgICAgICAgcG9wdWxhdGVDb250
ZXh0TWVudUl0ZW1zKGV4ZWMsIHN1Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOwogICAgICAgICAgICAg
Q29udGV4dE1lbnVJdGVtIGl0ZW0oU3VibWVudVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzdHJpbmdUb1N0cmluZyhsYWJlbC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnN1Yk1lbnUpOwogICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKGl0ZW0pOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ29udGV4dE1lbnVBY3Rpb24gdHlwZWRJZCA9IHN0
YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFn
ICsgaWQudG9JbnQzMihleGVjKSk7Ci0gICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gbWVudUl0
ZW0oKHR5cGVTdHJpbmcgPT0gImNoZWNrYm94IiA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rp
b25UeXBlKSwgdHlwZWRJZCwgdXN0cmluZ1RvU3RyaW5nKGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIG1lbnVJdGVtKCh0eXBl
U3RyaW5nID09ICJjaGVja2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZSks
IHR5cGVkSWQsIGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgICAgICAg
ICBpZiAoIWVuYWJsZWQuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgICAgICBtZW51SXRlbS5z
ZXRFbmFibGVkKGVuYWJsZWQudG9Cb29sZWFuKGV4ZWMpKTsKICAgICAgICAgICAgIGlmICghY2hl
Y2tlZC5pc1VuZGVmaW5lZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnRlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ludGVudENvbnN0cnVjdG9yLmNwcAppbmRleCA2MGEyMTRhNzM4NzFiYTEwODY0MmMxNjhkMGJi
ZGNhZmQ2NDNlYzk0Li40ZjI5Yzc0MmExNzU4NDNmMTI4YjgxNzkyZmM3ZWMwODIzN2VhZDY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVudENvbnN0cnVjdG9y
LmNwcApAQCAtNjEsMTEgKzYxLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJ
bnRlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNJbnRlbnQoRXhlY1N0YXRlKiBlCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgaW1wbC5nZXQoKSkpKTsKICAgICB9CiAKLSAgICBjb25zdCBTdHJpbmcm
IGFjdGlvbih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyBhY3Rpb24oTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6
IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9X
VEZTdHJpbmcoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGNvbnN0IFN0cmlu
ZyYgdHlwZSh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwg
RGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyB0eXBlKE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvV1RG
U3RyaW5nKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3Bw
CmluZGV4IDEyNDk5ZmFjOTBlM2E1MGVmOThmNGY5YzA0ODRlNWE0ODEyNjhiNDMuLjE1OWYxODQx
Njg4NGUwMzM0ZmQwOGIwNTM1MzNjNmYzNGYyZjdkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApA
QCAtNjMsOSArNjMsOSBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6dHlwZShFeGVj
U3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChpbXBsKCktPnR5cGUoKSkgewogICAg
ICAgICBjYXNlIERlYnVnZ2VyQ2FsbEZyYW1lOjpGdW5jdGlvblR5cGU6Ci0gICAgICAgICAgICBy
ZXR1cm4ganNTdHJpbmcoZXhlYywgVVN0cmluZygiZnVuY3Rpb24iKSk7CisgICAgICAgICAgICBy
ZXR1cm4ganNTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFsKCJmdW5jdGlvbiIpKTsKICAgICAgICAg
Y2FzZSBEZWJ1Z2dlckNhbGxGcmFtZTo6UHJvZ3JhbVR5cGU6Ci0gICAgICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgVVN0cmluZygicHJvZ3JhbSIpKTsKKyAgICAgICAgICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoInByb2dyYW0iKSk7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDg4Nzk3MjdlMjhkZWMzNWMxMjJjNmRhNmMzNWVh
YTE5M2IzMjQ4NWYuLjg3ZGM0OTI1MzdkZTM1N2FiZThkYmU3OGM0YWQ3YmIwODNiMDE3YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIu
Y3BwCkBAIC05NCwxMCArOTQsMTAgQEAgSlNPYmplY3QqIEpTTGF6eUV2ZW50TGlzdGVuZXI6Omlu
aXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWMKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAogICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5nKGV4
ZWMsIHN0cmluZ1RvVVN0cmluZyhtX2V2ZW50UGFyYW1ldGVyTmFtZSkpKTsKLSAgICBhcmdzLmFw
cGVuZChqc1N0cmluZyhleGVjLCBtX2NvZGUpKTsKKyAgICBhcmdzLmFwcGVuZChqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgbV9ldmVudFBhcmFtZXRlck5hbWUpKTsKKyAgICBhcmdzLmFwcGVuZChq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBtX2NvZGUpKTsKIAotICAgIEpTT2JqZWN0KiBqc0Z1bmN0
aW9uID0gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1Rv
VVN0cmluZyhtX2Z1bmN0aW9uTmFtZSkpLCBzdHJpbmdUb1VTdHJpbmcobV9zb3VyY2VVUkwpLCBt
X3Bvc2l0aW9uKTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/CisgICAgSlNPYmplY3QqIGpz
RnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgbV9m
dW5jdGlvbk5hbWUpLCBtX3NvdXJjZVVSTCwgbV9wb3NpdGlvbik7IC8vIEZJWE1FOiBpcyBnbG9i
YWxFeGVjIG9rPwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICByZXBv
cnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCA1Y2IwYzA3M2U0ZTE3YTBjNzRmYzA1OWYwZDI4NWViZjZmNTU0MDY1Li4xNGJkMzU3NDk1
ZDkxNDJkMmIyZmU0ODU5M2JiODQ4MDBjNGY4NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTc5LDc2ICsxNzksNzYgQEAgYm9v
bCBKU0xvY2F0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmEKIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRIcmVmKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGhyZWYgPSB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGhyZWYgPSB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRIcmVmKHVzdHJpbmdUb1N0cmluZyhocmVmKSwg
YWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7CisgICAgaW1wbCgp
LT5zZXRIcmVmKGhyZWYsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhl
YykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNldFByb3RvY29sKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIHByb3RvY29sID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBwcm90b2NvbCA9IHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbXBsKCktPnNldFBy
b3RvY29sKHVzdHJpbmdUb1N0cmluZyhwcm90b2NvbCksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwg
Zmlyc3RET01XaW5kb3coZXhlYyksIGVjKTsKKyAgICBpbXBsKCktPnNldFByb3RvY29sKHByb3Rv
Y29sLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpLCBlYyk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRI
b3N0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGhvc3Qg
PSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGhvc3QgPSB2
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRIb3N0KHVzdHJpbmdUb1N0
cmluZyhob3N0KSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVjKSk7
CisgICAgaW1wbCgpLT5zZXRIb3N0KGhvc3QsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RE
T01XaW5kb3coZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNldEhvc3RuYW1lKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGhvc3RuYW1lID0gdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBob3N0bmFtZSA9IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldEhvc3RuYW1lKHVzdHJpbmdU
b1N0cmluZyhob3N0bmFtZSksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3co
ZXhlYykpOworICAgIGltcGwoKS0+c2V0SG9zdG5hbWUoaG9zdG5hbWUsIGFjdGl2ZURPTVdpbmRv
dyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQogCiB2b2lkIEpTTG9jYXRpb246OnNl
dFBvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJpbmcgcG9y
dCA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcG9ydCA9
IHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0UG9ydCh1c3RyaW5nVG9TdHJpbmcocG9y
dCksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGlt
cGwoKS0+c2V0UG9ydChwb3J0LCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93
KGV4ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRQYXRobmFtZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVVN0cmluZyBwYXRobmFtZSA9IHZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgcGF0aG5hbWUgPSB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRQYXRobmFtZSh1c3RyaW5nVG9TdHJpbmco
cGF0aG5hbWUpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsK
KyAgICBpbXBsKCktPnNldFBhdGhuYW1lKHBhdGhuYW1lLCBhY3RpdmVET01XaW5kb3coZXhlYyks
IGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpzZXRTZWFyY2go
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFVTdHJpbmcgcGF0aG5hbWUg
PSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHBhdGhuYW1l
ID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0U2VhcmNoKHVzdHJp
bmdUb1N0cmluZyhwYXRobmFtZSksIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5k
b3coZXhlYykpOworICAgIGltcGwoKS0+c2V0U2VhcmNoKHBhdGhuYW1lLCBhY3RpdmVET01XaW5k
b3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKIH0KIAogdm9pZCBKU0xvY2F0aW9uOjpz
ZXRIYXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBVU3RyaW5nIGhh
c2ggPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIGhhc2gg
PSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRIYXNoKHVzdHJpbmdU
b1N0cmluZyhoYXNoKSwgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhleGVj
KSk7CisgICAgaW1wbCgpLT5zZXRIYXNoKGhhc2gsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmly
c3RET01XaW5kb3coZXhlYykpOwogfQogCiBKU1ZhbHVlIEpTTG9jYXRpb246OnJlcGxhY2UoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIFVTdHJpbmcgdXJsU3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBp
bXBsKCktPnJlcGxhY2UodXN0cmluZ1RvU3RyaW5nKHVybFN0cmluZyksIGFjdGl2ZURPTVdpbmRv
dyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+cmVwbGFjZSh1cmxT
dHJpbmcsIGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0yNjAsMTAgKzI2MCwxMCBAQCBKU1ZhbHVl
IEpTTG9jYXRpb246OnJlbG9hZChFeGVjU3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNMb2NhdGlv
bjo6YXNzaWduKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBVU3RyaW5nIHVybFN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcg
dXJsU3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0gICAgaW1wbCgpLT5hc3NpZ24odXN0cmluZ1RvU3RyaW5nKHVybFN0cmluZyksIGFj
dGl2ZURPTVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOworICAgIGltcGwoKS0+
YXNzaWduKHVybFN0cmluZywgYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBmaXJzdERPTVdpbmRvdyhl
eGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTI3Myw3ICsyNzMsNyBA
QCBKU1ZhbHVlIEpTTG9jYXRpb246OnRvU3RyaW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQog
ICAgIGlmICghZnJhbWUgfHwgIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBmcmFtZSkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIGltcGwoKS0+dG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIGltcGwoKS0+dG9TdHJpbmcoKSk7CiB9CiAKIGJvb2wgSlNMb2NhdGlvblByb3RvdHlwZTo6
cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaAppbmRleCA4MzhlM2VkYjM5MjBmNTZhZTVkNmUz
YTgwYjI2NjA0MjM1OWMzNGNmLi45NjBjYmJmNTMwMDkxNjc0NmJjYTVmNWFkNDI0YWE0NjVkYmZj
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyByZXNv
dXJjZU5hbWU7CiAgICAgICAgIGludCBsaW5lTnVtYmVyID0gMTsKICAgICAgICAgaWYgKGNhbGxU
eXBlID09IEpTQzo6Q2FsbFR5cGVKUykgewotICAgICAgICAgICAgcmVzb3VyY2VOYW1lID0gdXN0
cmluZ1RvU3RyaW5nKGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+c291cmNlVVJMKCkp
OworICAgICAgICAgICAgcmVzb3VyY2VOYW1lID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRh
YmxlLT5zb3VyY2VVUkwoKTsKICAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBjYWxsRGF0YS5qcy5m
dW5jdGlvbkV4ZWN1dGFibGUtPmxpbmVObygpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHJlc291cmNlTmFtZSA9ICJ1bmRlZmluZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDY0ZmNlZjg4YTUyMTIyYWE5
OTk0ZmVmZTBkMDA2ZjQ0YWFiMjcxYWUuLmU0NGNkZGRhOTBmMjNiMTQ1YmQ3YTM1ZWFlOTIzMGZj
OTMxNjg0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgSlNWYWx1ZSBKU01lc3NhZ2VFdmVu
dDo6ZGF0YShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlU3RyaW5nOgotICAgICAgICByZXN1bHQgPSBqc1N0cmlu
ZyhleGVjLCBldmVudC0+ZGF0YUFzU3RyaW5nKCkpOworICAgICAgICByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCBldmVudC0+ZGF0YUFzU3RyaW5nKCkpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZUJsb2I6CkBAIC0xMDIsMTEgKzEwMiwx
MSBAQCBKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50Ojpwb3J0cyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiAKIHN0YXRpYyBKU0M6OkpTVmFsdWUgaGFuZGxlSW5pdE1lc3NhZ2VFdmVudChKU01lc3NhZ2VF
dmVudCoganNFdmVudCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgY29uc3QgVVN0cmlu
ZyYgdHlwZUFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBjb25zdCBTdHJpbmcmIHR5cGVBcmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgYm9vbCBjYW5CdWJibGVBcmcgPSBleGVjLT5hcmd1
bWVudCgxKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgYm9vbCBjYW5jZWxhYmxlQXJnID0gZXhlYy0+
YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpOwotICAgIGNvbnN0IFVTdHJpbmcmIG9yaWdpbkFy
ZyA9IGV4ZWMtPmFyZ3VtZW50KDQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICBj
b25zdCBVU3RyaW5nJiBsYXN0RXZlbnRJZEFyZyA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgb3JpZ2luQXJnID0gZXhlYy0+
YXJndW1lbnQoNCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmlu
ZyBsYXN0RXZlbnRJZEFyZyA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJjZUFyZyA9IHRvRE9NV2luZG93KGV4ZWMtPmFy
Z3VtZW50KDYpKTsKICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzOwog
ICAgIE93blB0cjxBcnJheUJ1ZmZlckFycmF5PiBhcnJheUJ1ZmZlcnM7CkBAIC0xMjIsNyArMTIy
LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2Fn
ZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKICAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gc3RhdGljX2Nhc3Q8TWVzc2FnZUV2ZW50
Kj4oanNFdmVudC0+aW1wbCgpKTsKLSAgICBldmVudC0+aW5pdE1lc3NhZ2VFdmVudCh1c3RyaW5n
VG9BdG9taWNTdHJpbmcodHlwZUFyZyksIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZywgZGF0
YUFyZywgdXN0cmluZ1RvU3RyaW5nKG9yaWdpbkFyZyksIHVzdHJpbmdUb1N0cmluZyhsYXN0RXZl
bnRJZEFyZyksIHNvdXJjZUFyZywgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSk7CisgICAgZXZlbnQt
PmluaXRNZXNzYWdlRXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBk
YXRhQXJnLCBvcmlnaW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcsIG1lc3NhZ2VQb3J0
cy5yZWxlYXNlKCkpOwogICAgIGpzRXZlbnQtPm1fZGF0YS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBqc0V2ZW50LCBkYXRhQXJnLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01pY3JvRGF0YUl0
ZW1WYWx1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01pY3JvRGF0
YUl0ZW1WYWx1ZUN1c3RvbS5jcHAKaW5kZXggMDlmYzMzZDc0YjJjZjczYmU2MzRiYjZkMmE0OGUw
ODk1YTVmZjNmOC4uYTcwNzA5YTk5ODkyZjA2MTNlNTgyZGNiZDE0NTQ1OTJmYmQzODM0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNaWNyb0RhdGFJdGVtVmFsdWVD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWljcm9EYXRhSXRl
bVZhbHVlQ3VzdG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNaWNyb0RhdGFJdGVtVmFs
dQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgaWYgKGl0ZW1WYWx1ZS0+aXNOb2RlKCkp
CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlLT5nZXRO
b2RlKCkpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBpdGVtVmFsdWUtPmdldFN0cmluZygp
KTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaXRlbVZhbHVlLT5nZXRTdHJp
bmcoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCmluZGV4IDQ4MDAzNTU2NTNmYTgzMTVj
MzI2MTMwMGU0ZGQwZmM1ZWU1MjRjNmMuLjBkMDkzNzVkMTkzZWYxZmNmY2QwY2E2OTFiMWViYTlk
YTc1ZjRjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMUmVz
dWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcApAQCAtNjMsNyArNjMsNyBAQCBKU1ZhbHVl
IEpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAgICAg
c3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgU1FMVmFsdWU6OlN0cmlu
Z1ZhbHVlOgotICAgICAgICAgICAgICBqc1ZhbHVlID0ganNTdHJpbmcoZXhlYywgdmFsdWUuc3Ry
aW5nKCkpOworICAgICAgICAgICAgICBqc1ZhbHVlID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
dmFsdWUuc3RyaW5nKCkpOwogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIFNR
TFZhbHVlOjpOdWxsVmFsdWU6CiAgICAgICAgICAgICAgIGpzVmFsdWUgPSBqc051bGwoKTsKQEAg
LTc1LDcgKzc1LDcgQEAgSlNWYWx1ZSBKU1NRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW0oRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQogCi0gICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcobV9pbXBsLT5jb2x1bW5OYW1lcygpW2ldKSksIGpz
VmFsdWUsIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBtX2ltcGwtPmNvbHVtbk5hbWVz
KClbaV0pLCBqc1ZhbHVlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgIH0KIAogICAgIHJl
dHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NR
TFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwCmluZGV4IGEzYzE5OGY4NTcxYTJhNjZkNmEyMmMwNDc0YzBl
Mjc1ZjVjMzg2N2YuLjdhOTBjNDNiZjIyZTk3ODkwMjVjYmYzMDUwNjcyZGYwMWJhZmI0MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25D
dXN0b20uY3BwCkBAIC01MCw3ICs1MCw3IEBAIEpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvbjo6ZXhl
Y3V0ZVNxbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIH0KIAotICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgc3Fs
U3RhdGVtZW50ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgSlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uOjpleGVj
dXRlU3FsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5k
KHZhbHVlLmFzTnVtYmVyKCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gQ29udmVydCB0aGUgYXJndW1lbnQgdG8gYSBzdHJpbmcgYW5kIGFwcGVuZCBpdAotICAgICAg
ICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgICAgICAgICAgICAgIHNxbFZhbHVlcy5hcHBlbmQo
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCmluZGV4IDk2YzE4ODRjYjk1
YmI4MWVkMTc5NTNlMmZlYzhlMzgyMzg5YTI3NmQuLjMzZjg0MzQ0NzNjNGRjODA1NmJlOWUxYzVh
NmE0YzMyNmRmZjIxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNW
YWx1ZSBKU1NRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIFN0cmluZyBzcWxTdGF0
ZW1lbnQgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgc3FsU3RhdGVtZW50ID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTgwLDcgKzgwLDcgQEAg
SlNWYWx1ZSBKU1NRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZCh2YWx1ZS5hc051bWJlcigpKTsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFyZ3VtZW50
IHRvIGEgc3RyaW5nIGFuZCBhcHBlbmQgaXQKLSAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBw
ZW5kKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsK
KyAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBwZW5kKHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9t
LmNwcAppbmRleCBjNzliNzkzZmEyNjFmZTJkODZiMjgzMzkyNjk0ODNlZThlZGQ5OWRhLi43ZjZl
YjI4ZjAyYmQ2ZTY2ZmU3Y2JhZTZkNWFiNTQ5YzkxYWIxZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCkBAIC02Miw4ICs2
Miw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNTaGFyZWRXb3JrZXJDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNTaGFyZWRXb3JrZXIoCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgVVN0cmluZyBzY3JpcHRVUkwgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgVVN0cmluZyBu
YW1lOworICAgIFN0cmluZyBzY3JpcHRVUkwgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIG5hbWU7CiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA+IDEpCiAgICAgICAgIG5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAKQEAgLTczLDcgKzczLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1NoYXJl
ZFdvcmtlcigKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB1c2UgYm90aCB0aGUgZHluYW1pYyBz
Y29wZSBhbmQgdGhlIGxleGljYWwgc2NvcGUgKGR5bmFtaWMgc2NvcGUgZm9yIHJlc29sdmluZyB0
aGUgd29ya2VyIFVSTCkKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciA9IFNoYXJlZFdvcmtlcjo6Y3Jl
YXRlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgdXN0cmluZ1RvU3RyaW5nKHNjcmlwdFVSTCksIHVzdHJp
bmdUb1N0cmluZyhuYW1lKSwgZWMpOworICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciA9
IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgc2NyaXB0VVJMLCBuYW1l
LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCmluZGV4IGE3OTM3YjAxNDc2
YzA5MDIwMWZjMDRkYjk5Njg1Nzk2MTUyMDBkNTUuLjUyZDdlYzRlMTliMjEyNmZiNDZlMjg1MGI3
OTc1NTQ0YWFiMjIzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3RvcmFnZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9y
YWdlQ3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEpTU3RvcmFnZTo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgog
ICAgIEpTU3RvcmFnZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0b3JhZ2UqPihvYmplY3QpOwog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPm1faW1wbC0+bGVuZ3RoKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0cmluZyh0aGlzT2JqZWN0LT5tX2lt
cGwtPmtleShpKSkpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVj
LCB0aGlzT2JqZWN0LT5tX2ltcGwtPmtleShpKSkpOwogICAgICAgICAKICAgICBCYXNlOjpnZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwog
fQpAQCAtOTEsNyArOTEsNyBAQCBib29sIEpTU3RvcmFnZTo6cHV0RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgaWYgKHByb3Rv
dHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHByb3RvdHlwZSktPmhhc1Byb3BlcnR5KGV4ZWMs
IHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBTdHJpbmcg
c3RyaW5nVmFsdWUgPSB1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBhZjAwODA3NGY4M2Yx
NWVkMjFiZmVmZjA5NzExMDM3YjczYjI2N2RkLi5mNGFmNTVkODI2YjZlYWZjZWZmMjU0MjBjMDBi
MWM3YTdmNDYyYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdlYkcKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVO
dWxsOgogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlU3RyaW5nOgotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW5mby5nZXRTdHJpbmco
KSk7CisgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbmZvLmdldFN0cmlu
ZygpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVVbnNpZ25lZEludDoKICAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKGluZm8uZ2V0VW5zaWduZWRJbnQoKSk7CiAgICAgY2FzZSBXZWJHTEdl
dEluZm86OmtUeXBlV2ViR0xCdWZmZXI6CkBAIC0yNTQsNyArMjU0LDcgQEAgSlNWYWx1ZSBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIG5h
bWUgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKKyAgICBjb25zdCBTdHJpbmcgbmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFdlYkdMRXh0ZW5zaW9uKiBleHRl
bnNpb24gPSBjb250ZXh0LT5nZXRFeHRlbnNpb24obmFtZSk7CkBAIC0zNjMsNyArMzYzLDcgQEAg
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgVmVjdG9yPFN0cmluZz4gdmFsdWUgPSBjb250ZXh0LT5nZXRT
dXBwb3J0ZWRFeHRlbnNpb25zKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKICAg
ICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgdmFsdWUuc2l6ZSgpOyArK2lpKQotICAgICAgICBs
aXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCB2YWx1ZVtpaV0pKTsKKyAgICAgICAgbGlzdC5hcHBl
bmQoanNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgdmFsdWVbaWldKSk7CiAgICAgcmV0dXJuIGNvbnN0
cnVjdEFycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBsaXN0KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCmluZGV4IGM0MmIzY2Jk
ZmVkYzZkZDlhNDBmMGYxMDQwNTQwYTFiOTc4MDBiMzAuLjNlMzUwY2NjNGI3ZjMxYWZjODJjYmI3
ZjE0ZmE3NDZhMmU2MTk3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldChF
eGVjU3QKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAK
LSAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywgIndyb25nIFVSTCIpKTsKICAgICBSZWZQdHI8V2ViU29ja2V0
PiB3ZWJTb2NrZXQgPSBXZWJTb2NrZXQ6OmNyZWF0ZShjb250ZXh0KTsKQEAgLTc0LDE0ICs3NCwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV2ViU29ja2V0Q29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTV2ViU29ja2V0KEV4ZWNTdAogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4g
cHJvdG9jb2xzOwogICAgICAgICAgICAgSlNBcnJheSogcHJvdG9jb2xzQXJyYXkgPSBhc0FycmF5
KHByb3RvY29sc1ZhbHVlKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
cm90b2NvbHNBcnJheS0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBw
cm90b2NvbCA9IHVzdHJpbmdUb1N0cmluZyhwcm90b2NvbHNBcnJheS0+Z2V0SW5kZXgoaSkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcHJvdG9j
b2wgPSBwcm90b2NvbHNBcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICAg
ICAgICAgIHByb3RvY29scy5hcHBlbmQocHJvdG9jb2wpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgd2ViU29ja2V0LT5jb25uZWN0KHVybFN0cmluZywgcHJvdG9jb2xzLCBlYyk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTdHJpbmcgcHJvdG9jb2wgPSB1c3RyaW5nVG9TdHJp
bmcocHJvdG9jb2xzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAg
ICAgIFN0cmluZyBwcm90b2NvbCA9IHByb3RvY29sc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgICAgICB3
ZWJTb2NrZXQtPmNvbm5lY3QodXJsU3RyaW5nLCBwcm90b2NvbCwgZWMpOwpAQCAtMTA2LDcgKzEw
Niw3IEBAIEpTVmFsdWUgSlNXZWJTb2NrZXQ6OnNlbmQoRXhlY1N0YXRlKiBleGVjKQogICAgIGVs
c2UgaWYgKG1lc3NhZ2UuaW5oZXJpdHMoJkpTQmxvYjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0
ID0gaW1wbCgpLT5zZW5kKHRvQmxvYihtZXNzYWdlKSwgZWMpOwogICAgIGVsc2UgewotICAgICAg
ICBTdHJpbmcgc3RyaW5nTWVzc2FnZSA9IHVzdHJpbmdUb1N0cmluZyhtZXNzYWdlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgIFN0cmluZyBzdHJpbmdNZXNzYWdlID0gbWVz
c2FnZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICBy
ZXN1bHQgPSBpbXBsKCktPnNlbmQoc3RyaW5nTWVzc2FnZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggZjNm
NmY1NjIwOGYwODQzNTgxOGI1YmE1Mzk5OTY5Y2YzNDhjMWYxZi4uZWM1NjMzMWUyY2QzZDA2YzRm
ZThhMTc4OGIyNzBkZjQzMmMyZjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgSlNW
YWx1ZSBKU1dvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoRXhlY1N0YXRlKiBleGVjKQogCiAg
ICAgVmVjdG9yPFN0cmluZz4gdXJsczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhl
Yy0+YXJndW1lbnRDb3VudCgpOyBpKyspIHsKLSAgICAgICAgdXJscy5hcHBlbmQodXN0cmluZ1Rv
U3RyaW5nKGV4ZWMtPmFyZ3VtZW50KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwor
ICAgICAgICB1cmxzLmFwcGVuZChleGVjLT5hcmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckN1c3RvbS5jcHAKaW5kZXggNzE0NWZjZjM0NTkwZDhjZDc3ZmU3OTgwMjNj
NDExMDdjZjE1ZmMxYi4uYjFmMzhhNTg2ZDJiNTNhMmIxN2ExOGI3ZmRjZGI4ZDM5NTM5MGVhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTV29ya2VyQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSogZQogICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIFVTdHJpbmcgc2NyaXB0VVJMID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmlu
ZyBzY3JpcHRVUkwgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKQEAgLTY1LDcgKzY1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU1dvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dvcmtlcihFeGVj
U3RhdGUqIGUKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgUmVmUHRyPFdvcmtlcj4gd29ya2VyID0gV29ya2VyOjpjcmVhdGUod2luZG93LT5kb2N1
bWVudCgpLCB1c3RyaW5nVG9TdHJpbmcoc2NyaXB0VVJMKSwgZWMpOworICAgIFJlZlB0cjxXb3Jr
ZXI+IHdvcmtlciA9IFdvcmtlcjo6Y3JlYXRlKHdpbmRvdy0+ZG9jdW1lbnQoKSwgc2NyaXB0VVJM
LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5k
ZXggYzA4YzI5NTYwMmJkYzhlZDM1NDNmMmNkMDg2YjNmMWUxNzQwNTg1Zi4uOTBiZDQ4YjdmNTY3
YjI2NTM4OGEwMmNhNWU3ODhhNjg2ZTRlMzQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTg0LDggKzg0LDgg
QEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgY29uc3Qg
S1VSTCYgdXJsID0gaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJM
KHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpKTsKLSAgICBTdHJpbmcgbWV0aG9kID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgY29uc3QgS1VSTCYgdXJs
ID0gaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGV4ZWMtPmFy
Z3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgU3RyaW5nIG1ldGhv
ZCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0g
MykgewpAQCAtMTMwLDE2ICsxMzAsMTYgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpzZW5k
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKCZKU0FycmF5
QnVmZmVyVmlldzo6c19pbmZvKSkKICAgICAgICAgICAgIGltcGwoKS0+c2VuZCh0b0FycmF5QnVm
ZmVyVmlldyh2YWwpLCBlYyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGltcGwoKS0+c2Vu
ZCh1c3RyaW5nVG9TdHJpbmcodmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGVjKTsK
KyAgICAgICAgICAgIGltcGwoKS0+c2VuZCh2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
LCBlYyk7CiAgICAgfQogCiAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CiAgICAgaW50cHRyX3Qg
c291cmNlSUQ7Ci0gICAgVVN0cmluZyBzb3VyY2VVUkw7CisgICAgU3RyaW5nIHNvdXJjZVVSTDsK
ICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwogICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZl
TGFzdENhbGxlcihleGVjLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgc291cmNlVVJMLCBm
dW5jdGlvbik7CiAgICAgaW1wbCgpLT5zZXRMYXN0U2VuZExpbmVOdW1iZXIoc2lnbmVkTGluZU51
bWJlciA+PSAwID8gc2lnbmVkTGluZU51bWJlciA6IDApOwotICAgIGltcGwoKS0+c2V0TGFzdFNl
bmRVUkwodXN0cmluZ1RvU3RyaW5nKHNvdXJjZVVSTCkpOworICAgIGltcGwoKS0+c2V0TGFzdFNl
bmRVUkwoc291cmNlVVJMKTsKIAogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAppbmRleCA3MGI2OTgwOWQ3ODdmYjRjMTIxMWVl
YjVjN2MwMDAzYjg2YmJiOWEzLi5kODNmZjM4N2JlZmE5NjlhODBlYjhlN2Y4NzFkOGI5MjZhYjA3
NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nl
c3NvckN1c3RvbS5jcHAKQEAgLTg5LDkgKzg5LDkgQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6
OnNldFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgZXhlYy0+YXJndW1lbnQoMikuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IC8vIFRocm93IGV4Y2VwdGlv
bj8KLSAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0gICAgU3RyaW5nIGxvY2FsTmFt
ZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwotICAgIFN0cmluZyB2YWx1ZSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1
bWVudCgyKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIFN0cmluZyBuYW1lc3Bh
Y2VVUkkgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cisg
ICAgU3RyaW5nIGxvY2FsTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgyKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaW1wbCgpLT5zZXRQYXJhbWV0ZXIobmFtZXNwYWNl
VVJJLCBsb2NhbE5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAg
LTEwMCw4ICsxMDAsOCBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgU3RyaW5nIG5hbWVz
cGFjZVVSSSA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwotICAgIFN0cmluZyBsb2NhbE5hbWUgPSB1c3RyaW5nVG9TdHJpbmco
ZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJp
bmcgbmFtZXNwYWNlVVJJID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgU3RyaW5nIHZhbHVlID0gaW1wbCgpLT5nZXRQYXJh
bWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5k
ZWZpbmVkKGV4ZWMsIHZhbHVlKTsKIH0KQEAgLTExMCw4ICsxMTAsOCBAQCBKU1ZhbHVlIEpTWFNM
VFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHVzdHJpbmdUb1N0cmluZyhl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgIFN0cmlu
ZyBsb2NhbE5hbWUgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2NhbE5h
bWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAg
aW1wbCgpLT5yZW1vdmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOwogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCA5ZWE5ZWM4ZjBkMzRmZmEwZGU3ZTY0ZjVk
YjBkOWE4YWI1MjhmZjAzLi5iYjhmOGRlYzViNWY2NTk1OTlmOThmNzU4NDliNzkzYWVlZWFmZjJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcApAQCAtNzgsMTAgKzc4LDEwIEBAIFN0cmluZyBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpm
dW5jdGlvbk5hbWUoKSBjb25zdAogICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9p
c1ZhbGlkKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgVVN0cmluZyBmdW5jdGlvbk5h
bWUgPSBtX2RlYnVnZ2VyQ2FsbEZyYW1lLmNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKTsKKyAgICBT
dHJpbmcgZnVuY3Rpb25OYW1lID0gbV9kZWJ1Z2dlckNhbGxGcmFtZS5jYWxjdWxhdGVkRnVuY3Rp
b25OYW1lKCk7CiAgICAgaWYgKGZ1bmN0aW9uTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLSAgICByZXR1cm4gdXN0cmluZ1RvU3RyaW5nKGZ1bmN0aW9uTmFtZSk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTsKIH0KIAogRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgSmF2
YVNjcmlwdENhbGxGcmFtZTo6dHlwZSgpIGNvbnN0CkBAIC0xMDksNyArMTA5LDcgQEAgRXhlY1N0
YXRlKiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpleGVjKCkgY29uc3QKIH0KIAogLy8gRXZhbHVhdGUg
c29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCi1KU1ZhbHVl
IEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNW
YWx1ZSYgZXhjZXB0aW9uKSBjb25zdAorSlNWYWx1ZSBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFs
dWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIGlmICghbV9pc1ZhbGlkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmluZGV4IGU5ODdlY2Y4
OGY4ZGU4NjQ2YzM0ZTkwYzlkNDMwNmRkNjhmNTQyYWUuLmRjMjI5MTM1MmFiODQ4OTI5YjVhOTA3
Yjc2M2JjMjIzNmY1MjM5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0phdmFTY3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
YXZhU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjKCkgY29uc3Q7CiAKICAgICBKU0M6OkpTT2JqZWN0KiB0aGlzT2JqZWN0
KCkgY29uc3Q7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IEpTQzo6VVN0cmluZyYg
c2NyaXB0LCBKU0M6OkpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CisgICAgSlNDOjpKU1ZhbHVl
IGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU0M6OkpTVmFsdWUmIGV4Y2VwdGlvbikg
Y29uc3Q7CiAgICAgCiBwcml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUoY29uc3QgSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZSYsIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY2Fs
bGVyLCBpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBjNDY5YmY4Mjky
MmU2YzAyZDI5YTY2ZDFmYTNjMTMxYzM3ZjRjYzhkLi43NjgyMDUxMGQxMjI2YzZkMjNkMTIxODY5
MTJkZTQ2ZGJiOWE1NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKQEAgLTU4LDEwICs1OCwxMCBAQCBQYXNzT3duUHRyPFNjaGVkdWxlZEFj
dGlvbj4gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBET01XcmFwcGVy
VwogICAgICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrRm9ySW5zcGVjdG9yKGV4ZWMpKTsKICAgICAgICAgaWYgKHBvbGljeSAmJiAhcG9s
aWN5LT5hbGxvd0V2YWwoY2FsbFN0YWNrLnJlbGVhc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAgICAgVVN0cmluZyBzdHJpbmcgPSB2LnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHYudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rp
b24odXN0cmluZ1RvU3RyaW5nKHN0cmluZyksIGlzb2xhdGVkV29ybGQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rpb24oc3RyaW5nLCBpc29sYXRlZFdvcmxkKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rpb24oZXhlYywg
diwgaXNvbGF0ZWRXb3JsZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCAzYmI2OWY0MmM4ZjlhMjYzOGRkMmQ4
ODI1NzEyYzNiNmUxZDcwNzUxLi40ZmFlZWVkODk1MmFmOTc1ZmUxMThmODYyYTM0OGZhZWZmMGU4
Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNG
dW5jdGlvbi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTgy
LDExICs4MiwxMSBAQCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbQogICAgICAgICBBU1NFUlQoY2Fs
bEZyYW1lKTsKICAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CiAgICAgICAgIGludHB0cl90
IHNvdXJjZUlEOwotICAgICAgICBVU3RyaW5nIHVybFN0cmluZzsKKyAgICAgICAgU3RyaW5nIHVy
bFN0cmluZzsKICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKIAogICAgICAgICBleGVjLT5pbnRl
cnByZXRlcigpLT5yZXRyaWV2ZUxhc3RDYWxsZXIoY2FsbEZyYW1lLCBzaWduZWRMaW5lTnVtYmVy
LCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7Ci0gICAgICAgIFVTdHJpbmcgZnVuY3Rp
b25OYW1lOworICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lOwogICAgICAgICBpZiAoZnVuY3Rp
b24pCiAgICAgICAgICAgICBmdW5jdGlvbk5hbWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0
aW9uKS0+bmFtZShleGVjKTsKICAgICAgICAgZWxzZSB7CkBAIC05Niw3ICs5Niw3IEBAIFBhc3NS
ZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIHNpemVfdCBtCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25l
ZExpbmVOdW1iZXIgOiAwOwotICAgICAgICBmcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZSh1
c3RyaW5nVG9TdHJpbmcoZnVuY3Rpb25OYW1lKSwgdXN0cmluZ1RvU3RyaW5nKHVybFN0cmluZyks
IGxpbmVOdW1iZXIpKTsKKyAgICAgICAgZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoZnVu
Y3Rpb25OYW1lLCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIpKTsKICAgICAgICAgaWYgKCFmdW5jdGlv
biB8fCBmcmFtZXMuc2l6ZSgpID09IG1heFN0YWNrU2l6ZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYWxsRnJhbWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDQxYmJlYThi
MmY4ZGI3NTZhODE1OGFiMzA2ZTMzODZmZDFlNmJjYjAuLmQ2YWU2MWZlYTBjNGEzMjA0ZGRkMWFk
N2NjN2ZiY2I5OWVmOWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgSlNET01XaW5kb3dTaGVsbCog
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCkKIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewog
ICAgIGNvbnN0IFNvdXJjZUNvZGUmIGpzU291cmNlQ29kZSA9IHNvdXJjZUNvZGUuanNTb3VyY2VD
b2RlKCk7Ci0gICAgU3RyaW5nIHNvdXJjZVVSTCA9IHVzdHJpbmdUb1N0cmluZyhqc1NvdXJjZUNv
ZGUucHJvdmlkZXIoKS0+dXJsKCkpOworICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNv
ZGUucHJvdmlkZXIoKS0+dXJsKCk7CiAKICAgICAvLyBldmFsdWF0ZSBjb2RlLiBSZXR1cm5zIHRo
ZSBKUyByZXR1cm4gdmFsdWUgb3IgMAogICAgIC8vIGlmIHRoZXJlIHdhcyBub25lLCBhbiBlcnJv
ciBvY2N1cnJlZCBvciB0aGUgdHlwZSBjb3VsZG4ndCBiZSBjb252ZXJ0ZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYmJjZDU0
Mjk5NjU3MGZhMTM3OTlhNGU1YTgyOTUwMzBkZTUwYTBhMS4uNTJmZjhmNjM3OWRhNDE5MGY2YjEx
YjIxNzkyZDA1NWVlZGUwMDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpCiAgICAgU291cmNlUHJvdmlkZXIqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
U291cmNlUHJvdmlkZXIqPihzb3VyY2VJRCk7CiAKICAgICBpZiAobV9jdXJyZW50U291cmNlSUQg
IT0gc291cmNlSUQpIHsKLSAgICAgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSB1c3RyaW5nVG9TdHJp
bmcoSlNDOjpVU3RyaW5nKGNvbnN0X2Nhc3Q8U3RyaW5nSW1wbCo+KHNvdXJjZS0+ZGF0YSgpKSkp
OworICAgICAgICBTdHJpbmcgc291cmNlQ29kZShjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3Vy
Y2UtPmRhdGEoKSkpOwogICAgICAgICBtX2N1cnJlbnRTb3VyY2VDb2RlLmNsZWFyKCk7CiAgICAg
ICAgIHNvdXJjZUNvZGUuc3BsaXQoIlxuIiwgdHJ1ZSwgbV9jdXJyZW50U291cmNlQ29kZSk7CiAg
ICAgICAgIG1fY3VycmVudFNvdXJjZUlEID0gc291cmNlSUQ7CkBAIC0yMDEsNyArMjAxLDcgQEAg
Ym9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBKU1Zh
bHVlIGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+
ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24pLCBl
eGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFs
dWF0ZShicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uLCBleGNlcHRpb24pOwogICAgIGlmIChl
eGNlcHRpb24pIHsKICAgICAgICAgLy8gQW4gZXJyb25lb3VzIGNvbmRpdGlvbiBjb3VudHMgYXMg
ImZhbHNlIi4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE2LDExICszMTYsMTEgQEAgdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZShTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lcikKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJz
ZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBTb3VyY2VQcm92aWRlciogc291
cmNlUHJvdmlkZXIsIGJvb2wgaXNDb250ZW50U2NyaXB0KQogewotICAgIFN0cmluZyBzb3VyY2VJ
RCA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmc6Om51bWJlcihzb3VyY2VQcm92aWRlci0+
YXNJRCgpKSk7CisgICAgU3RyaW5nIHNvdXJjZUlEID0gU3RyaW5nOjpudW1iZXIoc291cmNlUHJv
dmlkZXItPmFzSUQoKSk7CiAKICAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgc2NyaXB0
OwotICAgIHNjcmlwdC51cmwgPSB1c3RyaW5nVG9TdHJpbmcoc291cmNlUHJvdmlkZXItPnVybCgp
KTsKLSAgICBzY3JpcHQuc291cmNlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25z
dF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2VQcm92aWRlci0+ZGF0YSgpKSkpOworICAgIHNjcmlw
dC51cmwgPSBzb3VyY2VQcm92aWRlci0+dXJsKCk7CisgICAgc2NyaXB0LnNvdXJjZSA9IFN0cmlu
Zyhjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2VQcm92aWRlci0+ZGF0YSgpKSk7CiAgICAg
c2NyaXB0LnN0YXJ0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5l
Lnplcm9CYXNlZEludCgpOwogICAgIHNjcmlwdC5zdGFydENvbHVtbiA9IHNvdXJjZVByb3ZpZGVy
LT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CiAgICAgc2NyaXB0Lmlz
Q29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKQEAgLTM1NCw4ICszNTQsOCBAQCB2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVy
U2V0JiBsaXN0ZW5lcnMsIFNvdQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZh
aWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgU291cmNlUHJv
dmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKIHsKLSAgICBTdHJpbmcgdXJsID0gdXN0cmluZ1RvU3RyaW5nKHNvdXJjZVByb3Zp
ZGVyLT51cmwoKSk7Ci0gICAgU3RyaW5nIGRhdGEgPSB1c3RyaW5nVG9TdHJpbmcoSlNDOjpVU3Ry
aW5nKGNvbnN0X2Nhc3Q8U3RyaW5nSW1wbCo+KHNvdXJjZVByb3ZpZGVyLT5kYXRhKCkpKSk7Cisg
ICAgU3RyaW5nIHVybCA9IHNvdXJjZVByb3ZpZGVyLT51cmwoKTsKKyAgICBTdHJpbmcgZGF0YSA9
IFN0cmluZyhjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2VQcm92aWRlci0+ZGF0YSgpKSk7
CiAgICAgaW50IGZpcnN0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9s
aW5lLm9uZUJhc2VkSW50KCk7CiAKICAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGNv
cHk7CkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgRGVidWdnZXI6OmRldGFjaChnbG9iYWxP
YmplY3QpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzb3VyY2VQYXJzZWQoRXhlY1N0
YXRlKiBleGVjLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUs
IGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNv
dXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRl
ciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgaWYg
KG1fY2FsbGluZ0xpc3RlbmVycykKICAgICAgICAgcmV0dXJuOwpAQCAtMzk2LDcgKzM5Niw3IEBA
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNv
dXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92CiAKICAgICBib29sIGlzRXJyb3IgPSBlcnJvckxpbmUg
IT0gLTE7CiAgICAgaWYgKGlzRXJyb3IpCi0gICAgICAgIGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNv
dXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQcm92aWRlciwgZXJyb3JMaW5lLCB1c3RyaW5nVG9TdHJp
bmcoZXJyb3JNZXNzYWdlKSk7CisgICAgICAgIGRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZSgq
bGlzdGVuZXJzLCBzb3VyY2VQcm92aWRlciwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOwogICAg
IGVsc2UKICAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQ
cm92aWRlciwgaXNDb250ZW50U2NyaXB0KGV4ZWMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggOTM1OTE0YzZiNDE4ZGMzZmEzNjMz
Nzg3NDI2MjU3NWE1YWFkODVkMy4uMjhkOTdjNTljOGI5OGVjOTgxZTRjNjY1NzA4NDA1YjFiYzI4
MTU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oCkBAIC0zOCwxMiArMzgsMTIgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8
ZGVidWdnZXIvRGVidWdnZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0UG9zaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBEZWJ1Z2dlckNhbGxGcmFtZTsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3RyaW5nJiBl
cnJvck1zZyk7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9y
TXNnKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxs
RnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpOwogICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBmaXJzdExpbmUsIGludCBjb2x1bW5OdW1i
ZXIpOwogICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggYTc2NjVlMTZlOWY2MDU1MDRlMTg2ODQ1OGJjYzg5NDdjMDkxNTYzOC4u
YzBlOWMzZTM5NzJlZjI0NDdhNzg5Njc1YjU5MmFlZmIyZjY2MTJhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBTdHJpbmcgZXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KERvY3VtZW50KiBkb2N1
bWVudCwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lcgogICAgIGlmICghanNGdW5jdGlvbikK
ICAgICAgICAgcmV0dXJuICIiOwogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IHNjcmlw
dFN0YXRlRnJvbU5vZGUoanNMaXN0ZW5lci0+aXNvbGF0ZWRXb3JsZCgpLCBkb2N1bWVudCk7Ci0g
ICAgcmV0dXJuIHVzdHJpbmdUb1N0cmluZyhqc0Z1bmN0aW9uLT50b1N0cmluZyhzY3JpcHRTdGF0
ZSktPnZhbHVlKHNjcmlwdFN0YXRlKSk7CisgICAgcmV0dXJuIGpzRnVuY3Rpb24tPnRvU3RyaW5n
KHNjcmlwdFN0YXRlKS0+dmFsdWUoc2NyaXB0U3RhdGUpOwogfQogCiBib29sIGV2ZW50TGlzdGVu
ZXJIYW5kbGVyTG9jYXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBFdmVudExpc3RlbmVyKiBldmVu
dExpc3RlbmVyLCBTdHJpbmcmIHNvdXJjZU5hbWUsIGludCYgbGluZU51bWJlcikKQEAgLTEyMyw3
ICsxMjMsNyBAQCBib29sIGV2ZW50TGlzdGVuZXJIYW5kbGVyTG9jYXRpb24oRG9jdW1lbnQqIGRv
Y3VtZW50LCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbgogICAgIGlmICghZnVuY0V4ZWN1dGFi
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBsaW5lTnVtYmVyID0gZnVuY0V4ZWN1dGFi
bGUtPmxpbmVObygpOwotICAgIHNvdXJjZU5hbWUgPSB1c3RyaW5nVG9TdHJpbmcoZnVuY0V4ZWN1
dGFibGUtPnNvdXJjZVVSTCgpKTsKKyAgICBzb3VyY2VOYW1lID0gZnVuY0V4ZWN1dGFibGUtPnNv
dXJjZVVSTCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAppbmRleCA1NDc3ODI1OWE4OGY2OGZh
ZjNjNmFmNGUzMDI3OTdhMGU4MzI5ZmJjLi5lNTI4NDJlMGJiYWE1ZTZjZjdjM2Q5YjFiNGZlY2Qw
ZjI3NTY5MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRG
dW5jdGlvbkNhbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJp
bmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApAQCAtNTksMTkgKzU5LDEzIEBAIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxl
cjo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQogdm9pZCBTY3Jp
cHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBTdHJpbmcmIGFyZ3Vt
ZW50KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMu
YXBwZW5kKGpzU3RyaW5nKG1fZXhlYywgYXJndW1lbnQpKTsKLX0KLQotdm9pZCBTY3JpcHRDYWxs
QXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChjb25zdCBKU0M6OlVTdHJpbmcmIGFyZ3Vt
ZW50KQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMu
YXBwZW5kKGpzU3RyaW5nKG1fZXhlYywgYXJndW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBl
bmQoanNTdHJpbmdXaXRoQ2FjaGUobV9leGVjLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlw
dENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqIGFyZ3VtZW50
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7Ci0gICAgbV9hcmd1bWVudHMuYXBw
ZW5kKGpzU3RyaW5nKG1fZXhlYywgVVN0cmluZyhhcmd1bWVudCkpKTsKKyAgICBtX2FyZ3VtZW50
cy5hcHBlbmQoanNTdHJpbmcobV9leGVjLCBTdHJpbmcoYXJndW1lbnQpKSk7CiB9CiAKIHZvaWQg
U2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6YXBwZW5kQXJndW1lbnQoSlNDOjpKU1ZhbHVlIGFy
Z3VtZW50KQpAQCAtMTI3LDcgKzEyMSw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2Fs
bDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9ucykKIAogICAg
IEpTTG9ja0hvbGRlciBsb2NrKG1fZXhlYyk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gdGhp
c09iamVjdC0+Z2V0KG1fZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIHN0cmluZ1RvVVN0cmluZyht
X25hbWUpKSk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2V4ZWMs
IElkZW50aWZpZXIobV9leGVjLCBtX25hbWUpKTsKICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRp
b24oKSkgewogICAgICAgICBpZiAocmVwb3J0RXhjZXB0aW9ucykKICAgICAgICAgICAgIHJlcG9y
dEV4Y2VwdGlvbihtX2V4ZWMsIG1fZXhlYy0+ZXhjZXB0aW9uKCkpOwpAQCAtMTY1LDcgKzE1OSw3
IEBAIFNjcmlwdE9iamVjdCBTY3JpcHRGdW5jdGlvbkNhbGw6OmNvbnN0cnVjdChib29sJiBoYWRF
eGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2V4
ZWMpOwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gYXNPYmplY3QodGhpc09iamVjdC0+
Z2V0KG1fZXhlYywgSWRlbnRpZmllcihtX2V4ZWMsIHN0cmluZ1RvVVN0cmluZyhtX25hbWUpKSkp
OworICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGFzT2JqZWN0KHRoaXNPYmplY3QtPmdldCht
X2V4ZWMsIElkZW50aWZpZXIobV9leGVjLCBtX25hbWUpKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFk
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgaWYgKHJlcG9ydEV4Y2VwdGlvbnMpCiAgICAgICAgICAg
ICByZXBvcnRFeGNlcHRpb24obV9leGVjLCBtX2V4ZWMtPmV4Y2VwdGlvbigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmgKaW5kZXggNjliNWUy
OGRiZTMzN2RhYjhhYzg5YTgxN2RkYWQ4MjI4YjE2OGYyYi4uNGU5YzIwMmIxM2Q1YmFjMjAxMmY0
MTA5NGQ2YTExNjA2OWM3YzFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RnVuY3Rpb25DYWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RnVuY3Rpb25DYWxsLmgKQEAgLTMxLDE0ICszMSwxMyBAQAogI2lmbmRlZiBTY3JpcHRG
dW5jdGlvbkNhbGxfaAogI2RlZmluZSBTY3JpcHRGdW5jdGlvbkNhbGxfaAogCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogCiAjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIFVTdHJp
bmc7CiAgICAgY2xhc3MgSlNWYWx1ZTsKIH0KIApAQCAtNTEsOSArNTAsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRPYmpl
Y3QmKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRWYWx1ZSYpOwot
ICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYpOwogICAgICAgICB2b2lk
IGFwcGVuZEFyZ3VtZW50KGNvbnN0IGNoYXIqKTsKLSAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVu
dChjb25zdCBKU0M6OlVTdHJpbmcmKTsKKyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25z
dCBTdHJpbmcmKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUpOwog
ICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGxvbmcpOwogICAgICAgICB2b2lkIGFwcGVuZEFy
Z3VtZW50KGxvbmcgbG9uZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRQcm9maWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGUuY3BwCmluZGV4IDNjMmI2NWZlMDJmNjE0MjgyMzUwYjE5Y2I1MmQwYmQyOGU5OGEzZTgu
LjRjZWY0Y2RkZDU5YzI3ZjIyY2E1ZTE1YTUxMjFlNjUwNjUyODI5OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFNj
cmlwdFByb2ZpbGU6On5TY3JpcHRQcm9maWxlKCkKIAogU3RyaW5nIFNjcmlwdFByb2ZpbGU6OnRp
dGxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdXN0cmluZ1RvU3RyaW5nKG1fcHJvZmlsZS0+dGl0
bGUoKSk7CisgICAgcmV0dXJuIG1fcHJvZmlsZS0+dGl0bGUoKTsKIH0KIAogdW5zaWduZWQgaW50
IFNjcmlwdFByb2ZpbGU6OnVpZCgpIGNvbnN0CkBAIC04MCw4ICs4MCw4IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IoY29uc3QgSlND
OjpQcm9maWxlTm9kCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKIAotICAgIHJlc3VsdC0+c2V0U3RyaW5nKCJmdW5jdGlv
bk5hbWUiLCB1c3RyaW5nVG9TdHJpbmcobm9kZS0+ZnVuY3Rpb25OYW1lKCkpKTsKLSAgICByZXN1
bHQtPnNldFN0cmluZygidXJsIiwgdXN0cmluZ1RvU3RyaW5nKG5vZGUtPnVybCgpKSk7CisgICAg
cmVzdWx0LT5zZXRTdHJpbmcoImZ1bmN0aW9uTmFtZSIsIG5vZGUtPmZ1bmN0aW9uTmFtZSgpKTsK
KyAgICByZXN1bHQtPnNldFN0cmluZygidXJsIiwgbm9kZS0+dXJsKCkpOwogICAgIHJlc3VsdC0+
c2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgbm9kZS0+bGluZU51bWJlcigpKTsKICAgICByZXN1bHQt
PnNldE51bWJlcigidG90YWxUaW1lIiwgbm9kZS0+dG90YWxUaW1lKCkpOwogICAgIHJlc3VsdC0+
c2V0TnVtYmVyKCJzZWxmVGltZSIsIG5vZGUtPnNlbGZUaW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuY3BwCmluZGV4IGQ2YWZkODk2NmRhYjgxNGQ5
MTExMmNiYTFlMTY4MGE3NDNjOTQyMzIuLjVjN2ViZDdkNTZiNjEzMWJiNjg5OWVhYjFlMThiNTcw
MWMwNmFhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxl
ci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdW5zaWduZWQgU2NyaXB0UHJvZmlsZXI6OmdldEhlYXBP
YmplY3RJZChjb25zdCBTY3JpcHRWYWx1ZSYpCiAKIHZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0
KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBKU0M6OlBy
b2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhzdGF0ZSwgc3RyaW5nVG9VU3RyaW5n
KHRpdGxlKSk7CisgICAgSlNDOjpQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmco
c3RhdGUsIHRpdGxlKTsKIH0KIAogdm9pZCBTY3JpcHRQcm9maWxlcjo6c3RhcnRGb3JQYWdlKFBh
Z2UqIGluc3BlY3RlZFBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgU2NyaXB0UHJvZmlsZXI6OnN0YXJ0Rm9yV29ya2VyQ29udGV4dChXb3JrZXJDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmCiAKIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gU2Ny
aXB0UHJvZmlsZXI6OnN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogewotICAgIFJlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUgPSBKU0M6OlByb2ZpbGVyOjpw
cm9maWxlcigpLT5zdG9wUHJvZmlsaW5nKHN0YXRlLCBzdHJpbmdUb1VTdHJpbmcodGl0bGUpKTsK
KyAgICBSZWZQdHI8SlNDOjpQcm9maWxlPiBwcm9maWxlID0gSlNDOjpQcm9maWxlcjo6cHJvZmls
ZXIoKS0+c3RvcFByb2ZpbGluZyhzdGF0ZSwgdGl0bGUpOwogICAgIHJldHVybiBTY3JpcHRQcm9m
aWxlOjpjcmVhdGUocHJvZmlsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTb3VyY2VQcm92aWRlci5oCmluZGV4IDg3NjAxODUwYWJiNDMwMGNiOTljMzA4
Y2RiMjk2NDA4ZjQwOWJjZDkuLjgzOTYwODJmYTFjNzYyODU5YTI1NDhlNTNlZmJhZDJhZDc3NGIw
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZVBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlUHJv
dmlkZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBTY3JpcHRTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBKU0M6OlNvdXJjZVByb3ZpZGVyIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFNjcmlwdFNvdXJjZVByb3ZpZGVyKGNvbnN0IEpTQzo6VVN0cmlu
ZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIEpTQzo6U291cmNlUHJv
dmlkZXJDYWNoZSogY2FjaGUgPSAwKQorICAgICAgICBTY3JpcHRTb3VyY2VQcm92aWRlcihjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBKU0M6OlNv
dXJjZVByb3ZpZGVyQ2FjaGUqIGNhY2hlID0gMCkKICAgICAgICAgICAgIDogU291cmNlUHJvdmlk
ZXIodXJsLCBzdGFydFBvc2l0aW9uLCBjYWNoZSkKICAgICAgICAgewogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKaW5kZXggODNkZmQ1ZmI4MzI2
NzE4YjZlZWJmMTM0MzIzYWYyNDQxM2VjMzUyYy4uNDMxMGZmY2Q3ZGY1ZDBkNjIyYWIzMDYyNmY2
ZmMzMGI5ZjY0NzNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVl
LmNwcApAQCAtMzksNyArMzksNiBAQAogCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTTG9jay5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC01MCwxNiArNDksMTQgQEAgYm9vbCBTY3JpcHRWYWx1
ZTo6Z2V0U3RyaW5nKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU3RyaW5nJiByZXN1bHQpIGNv
bnN0CiAgICAgaWYgKCFtX3ZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soc2NyaXB0U3RhdGUpOwotICAgIFVTdHJpbmcgdXN0cmluZzsKLSAgICBpZiAo
IW1fdmFsdWUuZ2V0KCkuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlLCB1c3RyaW5nKSkKKyAgICBpZiAo
IW1fdmFsdWUuZ2V0KCkuZ2V0U3RyaW5nKHNjcmlwdFN0YXRlLCByZXN1bHQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gdXN0cmluZ1RvU3RyaW5nKHVzdHJpbmcpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBTdHJpbmcgU2NyaXB0VmFsdWU6OnRvU3RyaW5nKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSkgY29uc3QKIHsKLSAgICBTdHJpbmcgcmVzdWx0ID0gdXN0cmluZ1Rv
U3RyaW5nKG1fdmFsdWUuZ2V0KCkudG9TdHJpbmcoc2NyaXB0U3RhdGUpLT52YWx1ZShzY3JpcHRT
dGF0ZSkpOworICAgIFN0cmluZyByZXN1bHQgPSBtX3ZhbHVlLmdldCgpLnRvU3RyaW5nKHNjcmlw
dFN0YXRlKS0+dmFsdWUoc2NyaXB0U3RhdGUpOwogICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVy
ZSBhbiBleGNlcHRpb24gaXMgdGhyb3duIGFzIHBhcnQgb2YgaW52b2tpbmcgdG9TdHJpbmcgb24g
dGhlIG9iamVjdC4KICAgICBpZiAoc2NyaXB0U3RhdGUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICBzY3JpcHRTdGF0ZS0+Y2xlYXJFeGNlcHRpb24oKTsKQEAgLTEzOCw3ICsxMzUsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgSgogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKQogICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVlLmFzTnVtYmVyKCkpOwogICAg
IGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIFVTdHJpbmcgcyA9IHZhbHVlLmdldFN0
cmluZyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIFN0cmluZyBzID0gdmFsdWUuZ2V0U3RyaW5nKHNj
cmlwdFN0YXRlKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclN0cmluZzo6Y3JlYXRlKFN0cmlu
ZyhzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSkpOwogICAgIH0KICAgICBpZiAodmFsdWUuaXNP
YmplY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZWE3MDIyOTViN2U2NTM2ZWQ0NDYxOTgzMzNkMDg3MmRk
MTI0MDUzYy4uZjI5YTEzYTVmZTQwZGFkNjcxNjc3NzE0YWZiYzVlZTRhYzYwMGEwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCkBAIC0zODYsNyArMzg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBDbG9uZUJhc2UoZXhl
YykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCiAgICAgICAgICwgbV9ibG9iVVJMcyhibG9iVVJM
cykKLSAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBVU3RyaW5nKCIiLCAwKSkKKyAg
ICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBlbXB0eVN0cmluZygpKQogICAgIHsKICAg
ICAgICAgd3JpdGUoQ3VycmVudFZlcnNpb24pOwogICAgICAgICBmaWxsVHJhbnNmZXJNYXAobWVz
c2FnZVBvcnRzLCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzKTsKQEAgLTUyMyw3ICs1MjMsNyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBkdW1wU3RyaW5nKFVTdHJp
bmcgc3RyKQorICAgIHZvaWQgZHVtcFN0cmluZyhTdHJpbmcgc3RyKQogICAgIHsKICAgICAgICAg
aWYgKHN0ci5pc0VtcHR5KCkpCiAgICAgICAgICAgICB3cml0ZShFbXB0eVN0cmluZ1RhZyk7CkBA
IC01MzMsNyArNTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQg
ZHVtcFN0cmluZ09iamVjdChVU3RyaW5nIHN0cikKKyAgICB2b2lkIGR1bXBTdHJpbmdPYmplY3Qo
U3RyaW5nIHN0cikKICAgICB7CiAgICAgICAgIGlmIChzdHIuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgd3JpdGUoRW1wdHlTdHJpbmdPYmplY3RUYWcpOwpAQCAtNTg5LDcgKzU4OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAg
ICAgICAgVVN0cmluZyBzdHIgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKG1fZXhlYyk7CisgICAg
ICAgICAgICBTdHJpbmcgc3RyID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShtX2V4ZWMpOwogICAg
ICAgICAgICAgZHVtcFN0cmluZyhzdHIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KQEAgLTYyMCw3ICs2MjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKG9iai0+
aW5oZXJpdHMoJlN0cmluZ09iamVjdDo6c19pbmZvKSkgewogICAgICAgICAgICAgICAgIGlmICgh
c3RhcnRPYmplY3RJbnRlcm5hbChvYmopKSAvLyBoYW5kbGUgZHVwbGljYXRlcwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHN0ciA9IGFz
U3RyaW5nKGFzU3RyaW5nT2JqZWN0KHZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKS0+dmFsdWUobV9l
eGVjKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyID0gYXNTdHJpbmcoYXNTdHJpbmdPYmpl
Y3QodmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkpLT52YWx1ZShtX2V4ZWMpOwogICAgICAgICAgICAg
ICAgIGR1bXBTdHJpbmdPYmplY3Qoc3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgIH0KQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBmbGFnc1tmbGFnQ291bnQrK10gPSAnbSc7CiAgICAgICAgICAgICAgICAgd3JpdGUo
UmVnRXhwVGFnKTsKICAgICAgICAgICAgICAgICB3cml0ZShyZWdFeHAtPnJlZ0V4cCgpLT5wYXR0
ZXJuKCkpOwotICAgICAgICAgICAgICAgIHdyaXRlKFVTdHJpbmcoZmxhZ3MsIGZsYWdDb3VudCkp
OworICAgICAgICAgICAgICAgIHdyaXRlKFN0cmluZyhmbGFncywgZmxhZ0NvdW50KSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
b2JqLT5pbmhlcml0cygmSlNNZXNzYWdlUG9ydDo6c19pbmZvKSkgewpAQCAtNzkyLDcgKzc5Miw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdyaXRlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
ICAgIHsKLSAgICAgICAgVVN0cmluZyBzdHIgPSBpZGVudC51c3RyaW5nKCk7CisgICAgICAgIGNv
bnN0IFN0cmluZyYgc3RyID0gaWRlbnQudXN0cmluZygpOwogICAgICAgICBTdHJpbmdDb25zdGFu
dFBvb2w6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX2NvbnN0YW50UG9vbC5hZGQoc3RyLmltcGwo
KSwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkgewogICAgICAgICAgICAgd3JpdGUoU3RyaW5nUG9vbFRhZyk7CkBAIC04MTgsNyArODE4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZhaWwoKTsKICAgICB9CiAKLSAgICB2b2lkIHdy
aXRlKGNvbnN0IFVTdHJpbmcmIHN0cikKKyAgICB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgc3Ry
KQogICAgIHsKICAgICAgICAgaWYgKHN0ci5pc051bGwoKSkKICAgICAgICAgICAgIHdyaXRlKG1f
ZW1wdHlJZGVudGlmaWVyKTsKQEAgLTgyNiwxNCArODI2LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHdyaXRlKElkZW50aWZpZXIobV9leGVjLCBzdHIpKTsKICAgICB9CiAKLSAgICB2b2lkIHdy
aXRlKGNvbnN0IFN0cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAgaWYgKHN0ci5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICB3cml0ZShtX2VtcHR5SWRlbnRpZmllcik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHdyaXRlKElkZW50aWZpZXIobV9leGVjLCBzdHIuaW1wbCgpKSk7Ci0gICAgfQot
CiAgICAgdm9pZCB3cml0ZShjb25zdCBGaWxlKiBmaWxlKQogICAgIHsKICAgICAgICAgbV9ibG9i
VVJMcy5hcHBlbmQoZmlsZS0+dXJsKCkpOwpAQCAtMTAzNyw3ICsxMDI5LDcgQEAgcHVibGljOgog
ICAgICAgICBjb25zdCB1aW50OF90KiBzdGFydCA9IHZhbHVlLmJlZ2luKCk7CiAgICAgICAgIGNv
bnN0IHVpbnQ4X3QqIGVuZCA9IHZhbHVlLmVuZCgpOwogICAgICAgICBjb25zdCB1aW50MzJfdCBs
ZW5ndGggPSB2YWx1ZS5zaXplKCkgLyBzaXplb2YoVUNoYXIpOwotICAgICAgICBVU3RyaW5nIHN0
cjsKKyAgICAgICAgU3RyaW5nIHN0cjsKICAgICAgICAgaWYgKCFDbG9uZURlc2VyaWFsaXplcjo6
cmVhZFN0cmluZyhzdGFydCwgZW5kLCBzdHIsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKQEAgLTEwNTcsNyArMTA0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgdWludDMy
X3QgbGVuZ3RoOwogICAgICAgICBpZiAoIXJlYWRMaXR0bGVFbmRpYW4ocHRyLCBlbmQsIGxlbmd0
aCkgfHwgbGVuZ3RoID49IFN0cmluZ1Bvb2xUYWcpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgICAgIFVTdHJpbmcgc3RyOworICAgICAgICBTdHJpbmcgc3RyOwogICAgICAgICBp
ZiAoIXJlYWRTdHJpbmcocHRyLCBlbmQsIHN0ciwgbGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIFN0cmluZyhzdHIuaW1wbCgpKTsKQEAgLTEwNzcs
NyArMTA2OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2FjaGVkU3RyaW5n
IHsKLSAgICAgICAgQ2FjaGVkU3RyaW5nKGNvbnN0IFVTdHJpbmcmIHN0cmluZykKKyAgICAgICAg
Q2FjaGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMTA4OCwxMCArMTA4MCwxMSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG1fanNTdHJpbmcgPSBKU0M6OmpzU3RyaW5nKGV4ZWMs
IG1fc3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiBtX2pzU3RyaW5nOwogICAgICAgICB9Ci0g
ICAgICAgIGNvbnN0IFVTdHJpbmcmIHVzdHJpbmcoKSB7IHJldHVybiBtX3N0cmluZzsgfQorICAg
ICAgICAvLyBGSVhNRTogcmVuYW1lIHRvIHN0cmluZygpLgorICAgICAgICBjb25zdCBTdHJpbmcm
IHVzdHJpbmcoKSB7IHJldHVybiBtX3N0cmluZzsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
VVN0cmluZyBtX3N0cmluZzsKKyAgICAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgICAgICBKU1Zh
bHVlIG1fanNTdHJpbmc7CiAgICAgfTsKIApAQCAtMTI0MCw3ICsxMjMzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIHJlYWQoaSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgcmVhZFN0
cmluZyhjb25zdCB1aW50OF90KiYgcHRyLCBjb25zdCB1aW50OF90KiBlbmQsIFVTdHJpbmcmIHN0
ciwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHN0YXRpYyBib29sIHJlYWRTdHJpbmcoY29uc3QgdWlu
dDhfdComIHB0ciwgY29uc3QgdWludDhfdCogZW5kLCBTdHJpbmcmIHN0ciwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIHsKICAgICAgICAgaWYgKGxlbmd0aCA+PSBudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkgLyBzaXplb2YoVUNoYXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTI1MCw3ICsxMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
I2lmIEFTU1VNRV9MSVRUTEVfRU5ESUFOCi0gICAgICAgIHN0ciA9IFVTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVQ2hhcio+KHB0ciksIGxlbmd0aCk7CisgICAgICAgIHN0ciA9IFN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocHRyKSwgbGVuZ3RoKTsKICAgICAgICAg
cHRyICs9IGxlbmd0aCAqIHNpemVvZihVQ2hhcik7CiAjZWxzZQogICAgICAgICBWZWN0b3I8VUNo
YXI+IGJ1ZmZlcjsKQEAgLTEyNjAsNyArMTI1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZWFkTGl0dGxlRW5kaWFuKHB0ciwgZW5kLCBjaCk7CiAgICAgICAgICAgICBidWZmZXIuYXBwZW5k
KGNoKTsKICAgICAgICAgfQotICAgICAgICBzdHIgPSBVU3RyaW5nOjphZG9wdChidWZmZXIpOwor
ICAgICAgICBzdHIgPSBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiAjZW5kaWYKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTI5NSw3ICsxMjg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGNhY2hlZFN0cmluZyA9IENhY2hlZFN0cmluZ1JlZigmbV9jb25zdGFudFBvb2wsIGluZGV4
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIFVTdHJpbmcg
c3RyOworICAgICAgICBTdHJpbmcgc3RyOwogICAgICAgICBpZiAoIXJlYWRTdHJpbmcobV9wdHIs
IG1fZW5kLCBzdHIsIGxlbmd0aCkpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cmluZ1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJpbmdT
b3VyY2VQcm92aWRlci5oCmluZGV4IDhiNjcxODg5MTJiNzdlNjQ4OTg3Njc4MDI3ODM2NTcxZTEx
YzNhM2UuLjZiNmJiNGU5YWIxNjE2YjJjZmVlNGU3YzYyZTdkYjdlNDY4NDM4NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RyaW5nU291cmNlUHJvdmlkZXIuaApAQCAt
NDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3RyaW5nU291cmNlUHJvdmlkZXIoc291cmNlLCB1cmwsIHN0YXJ0UG9zaXRp
b24pKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgSlNDOjpVU3RyaW5nIGdldFJhbmdl
KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QgT1ZFUlJJREUKKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0UmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdCBPVkVSUklERQogICAgICAgICB7
CiAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gZW5kIC0gc3RhcnQ7CiAgICAgICAgICAgICBBU1NF
UlQobGVuZ3RoID49IDApOwogICAgICAgICAgICAgQVNTRVJUKHN0YXJ0ICsgbGVuZ3RoIDw9IHRo
aXMtPmxlbmd0aCgpKTsKIAotICAgICAgICAgICAgcmV0dXJuIEpTQzo6VVN0cmluZyhTdHJpbmdJ
bXBsOjpjcmVhdGUobV9zb3VyY2UuaW1wbCgpLCBzdGFydCwgbGVuZ3RoKSk7CisgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZShtX3NvdXJjZS5pbXBsKCksIHN0YXJ0
LCBsZW5ndGgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5pbXBsKCk7IH0KQEAgLTU3LDcgKzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nU291cmNlUHJv
dmlkZXIoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0
UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pCi0gICAgICAgICAgICA6IFNjcmlwdFNvdXJjZVByb3Zp
ZGVyKHN0cmluZ1RvVVN0cmluZyh1cmwpLCBzdGFydFBvc2l0aW9uKQorICAgICAgICAgICAgOiBT
Y3JpcHRTb3VyY2VQcm92aWRlcih1cmwsIHN0YXJ0UG9zaXRpb24pCiAgICAgICAgICAgICAsIG1f
c291cmNlKHNvdXJjZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC02NSwxMSArNjUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICB9OwogCi0g
ICAgaW5saW5lIEpTQzo6U291cmNlQ29kZSBtYWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
LCBjb25zdCBTdHJpbmcmIHVybCA9IFN0cmluZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0
UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIEpTQzo6U291cmNlQ29kZShTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNv
dXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJ
bnQoKSk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTdHJp
bmdTb3VyY2VQcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCmluZGV4IGMxYzE5OGQ2NWJiNDQzYWEwYjFhYzU1MzI5YmRkYjI1YmU4
ZGE4ZTQuLmU3NzAyMTlmZWFmMzE0MzRjMDNkNDQwMGRiYWQzMjVkZjg4YWM2ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0zMTcs
NyArMzE3LDcgQEAgc3RhdGljIHZvaWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZXhl
YywgTlNBcnJheSAqYXJyYXksIFJvb3RPYmplY3QqIHJvb3QKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIEpTVmFs
dWUgZnVuY3Rpb24gPSBbc2VsZiBfaW1wXS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgc3Ry
aW5nVG9VU3RyaW5nKFN0cmluZyhuYW1lKSkpKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gW3Nl
bGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhuYW1lKSkpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
ZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpA
QCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3Rh
dGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5LCBSb290T2JqZWN0KiByb290CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBbc2VsZiBf
aW1wXS0+bWV0aG9kVGFibGUoKS0+cHV0KFtzZWxmIF9pbXBdLCBleGVjLCBJZGVudGlmaWVyKGV4
ZWMsIHN0cmluZ1RvVVN0cmluZyhTdHJpbmcoa2V5KSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1
ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBzbG90
KTsKKyAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+cHV0KFtzZWxmIF9pbXBdLCBleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUo
ZXhlYywgJnZhbHVlLCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7
CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgYWRkRXhjZXB0aW9u
VG9Db25zb2xlKGV4ZWMpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyB2b2lkIGdldExpc3RG
cm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5LCBSb290T2JqZWN0KiBy
b290CiAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGxvY2sgcGVybWFuZW50bHkgaGVsZAogICAgICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgcmVz
dWx0ID0gW3NlbGYgX2ltcF0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHN0cmluZ1RvVVN0
cmluZyhTdHJpbmcoa2V5KSkpKTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBbc2VsZiBfaW1w
XS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgU3RyaW5nKGtleSkpKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgYWRkRXhjZXB0
aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIHN0YXRpYyB2b2lkIGdldExp
c3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFycmF5LCBSb290T2JqZWN0
KiByb290CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKLSAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHkoW3NlbGYgX2ltcF0sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgc3RyaW5nVG9VU3Ry
aW5nKFN0cmluZyhrZXkpKSkpOworICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSgpLT5kZWxl
dGVQcm9wZXJ0eShbc2VsZiBfaW1wXSwgZXhlYywgSWRlbnRpZmllcihleGVjLCBTdHJpbmcoa2V5
KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFkZEV4Y2Vw
dGlvblRvQ29uc29sZShleGVjKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgdm9pZCBnZXRM
aXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVj
dCogcm9vdAogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgQk9PTCByZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJv
cGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nKGtleSkp
KSk7CisgICAgQk9PTCByZXN1bHQgPSBbc2VsZiBfaW1wXS0+aGFzUHJvcGVydHkoZXhlYywgSWRl
bnRpZmllcihleGVjLCBTdHJpbmcoa2V5KSkpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsKQEAgLTU2OSw3ICs1
NjksNyBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0YXRlICpleGVjLCBO
U0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogCiAgICAgaWYgKHZhbHVlLmlzU3RyaW5n
KCkpIHsKICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgY29uc3QgVVN0cmluZyYgdSA9IGFzU3RyaW5nKHZh
bHVlKS0+dmFsdWUoZXhlYyk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdSA9IGFzU3RyaW5nKHZh
bHVlKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6dS5jaGFyYWN0ZXJzKCkgbGVuZ3RoOnUubGVuZ3RoKCldOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCA0YmVlZjljMmQxNjYwYWYwNzA4N2IwNmM3MzhmYTE3YWVjYTJiZDViLi42ODk4MTQ0Y2E2
OGYzZGM1MTJkMDIxYmM3OGY3NzA1MzZkYTJhYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTY1LDcgKzE2NSw3IEBA
IEVORAogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBpZiAo
IWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgaW1wbC0+JHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcih1c3Ry
aW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCAkd3Jh
cHBlck9iamVjdCwgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSkkcGFzc1JlZlB0ckhhbmRsaW5n
LCBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwtPiR7ZnVuY3Rp
b25OYW1lfUV2ZW50TGlzdGVuZXIoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksICR3
cmFwcGVyT2JqZWN0LCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKSRwYXNzUmVmUHRySGFuZGxp
bmcsIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIEVORAogICAgIHJldHVybiBAR2VuZXJhdGVFdmVu
dExpc3RlbmVySW1wbDsKQEAgLTI4NDUsNyArMjg0NSw3IEBAIEVORAogICAgICAgICAgICAgZm9y
ZWFjaCBteSAkcGFyYW0gKEBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1l
ID0gJHBhcmFtLT5uYW1lOwogICAgICAgICAgICAgICAgIGlmICgkcGFyYW0tPnR5cGUgZXEgIkRP
TVN0cmluZyIpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgJHtwYXJhbU5hbWV9KSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXJncy5hcHBlbmQoanNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgJHtwYXJhbU5hbWV9KSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVs
c2lmICgkcGFyYW0tPnR5cGUgZXEgImJvb2xlYW4iKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGFyZ3MuYXBwZW5kKGpzQm9vbGVhbigke3BhcmFtTmFtZX0p
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRwYXJhbS0+dHlwZSBlcSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlIikgewpAQCAtMzA1MSw3ICszMDUxLDcgQEAgc3ViIEpTVmFsdWVUb05h
dGl2ZQogICAgICAgICAgICAgcmV0dXJuICJ2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVj
LCAkdmFsdWUpIgogICAgICAgICB9CiAgICAgICAgICMgRklYTUU6IEFkZCB0aGUgY2FzZSBmb3Ig
J2lmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXRVbmRlZmluZWRBcyJ9
IGFuZCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXRVbmRlZmluZWRBcyJ9
IGVxICJOdWxsU3RyaW5nIikpJy4KLSAgICAgICAgcmV0dXJuICJ1c3RyaW5nVG9TdHJpbmcoJHZh
bHVlLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6ICR2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpIjsKKyAgICAgICAgcmV0dXJuICIkdmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiAk
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIjsKICAgICB9CiAKICAgICBpZiAoJHR5
cGUgZXEgIkRPTU9iamVjdCIpIHsKQEAgLTMxNDQsNyArMzE0NCw3IEBAIHN1YiBOYXRpdmVUb0pT
VmFsdWUKICAgICAgICAgICAgIGRpZSAiVW5rbm93biB2YWx1ZSBmb3IgVHJlYXRSZXR1cm5lZE51
bGxTdHJpbmdBcyBleHRlbmRlZCBhdHRyaWJ1dGUiOwogICAgICAgICB9CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCI8cnVudGltZS9KU1N0cmluZy5oPiIsICRjb25kaXRpb25hbCk7Ci0gICAg
ICAgIHJldHVybiAianNTdHJpbmcoZXhlYywgJHZhbHVlKSI7CisgICAgICAgIHJldHVybiAianNT
dHJpbmdXaXRoQ2FjaGUoZXhlYywgJHZhbHVlKSI7CiAgICAgfQogCiAgICAgbXkgJGdsb2JhbE9i
amVjdDsKQEAgLTM2ODEsNyArMzY4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjCiAgICAg
aWYgKCFleGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJDb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1
dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpOwogCi0gICAgQXRvbWljU3RyaW5nIGV2ZW50
VHlwZSA9IHVzdHJpbmdUb0F0b21pY1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOworICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IGY3MTBiZTE2OTBi
MjQ3MzYxMTA5NzlhNzliMjQ5NGM1ZmIxOTE4YmEuLjg3Yjk2MTgzMzI4YmJhOTFjODFhMWYwMDQ0
NjkwMzFhYTY0NDcxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0y
MDUsNyArMjA1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVE
T01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEUKICAgICBUZXN0QWN0aXZlRE9N
T2JqZWN0KiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdEFjdGl2ZURPTU9iamVjdCo+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOwotICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSh1c3RyaW5nVG9TdHJpbmcoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkg
PyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRl
ZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5wb3N0TWVzc2FnZShtZXNzYWdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2suY3BwCmluZGV4IGY4NGY5MTVmZGVkM2ZlMWFjYjhlMTEzYTQ4MGY4MTk4OTlm
NmVlOWEuLjc2MjM0ZDZhMWQ0NTRlMjQ2MzJiYTkzMmQzYzIxMDgzMjJiN2I1NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aENsYXNzMlBhcmFtKENsYXNzMiogY2xhc3MyUGFyYW0sIGNvbnN0IFN0cmluZyYK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZCh0b0pT
KGV4ZWMsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIGNsYXNzMlBhcmFtKSk7Ci0gICAgYXJncy5h
cHBlbmQoanNTdHJpbmcoZXhlYywgc3RyQXJnKSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgc3RyQXJnKSk7CiAKICAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZh
bHNlOwogICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgJnJhaXNlZEV4Y2VwdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA5NmY4N2FiMDQ4NTE1
YTczZmNiYmM3MGU4YzE0MmVlMGE5Y2U3ZDYyLi5iMTFhNjM3YmNiZTgxNGE4YmM1NTU4ZTQzZGNk
ZTQ2NTY0Yzg0OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuYwogICAgIFRlc3RDdXN0b21O
YW1lZEdldHRlciogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RDdXN0b21OYW1lZEdldHRlcio+KGNh
c3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyKHVzdHJpbmdUb1N0cmluZyhNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHko
KSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3Ry
aW5nJiBzdHIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC0+YW5vdGhlckZ1bmN0aW9uKHN0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDhkYTM1ODY4ZDg3YWZlMTQzZTU5
MWU4MWMxMTRkNmEwOWMxYWU3NC4uZGVmMzg0ZDRlNWEyNDg3NmYyODRiYjVjODBjMDgwYmU4MWUw
ODg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtODUsNyArODUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0RQogICAgIGlmICghZXhlY3V0aW9uQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihl
eGVjLCAiQ29uc3RydWN0b3IgYXNzb2NpYXRlZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWls
YWJsZSIpKTsKIAotICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSB1c3RyaW5nVG9BdG9taWNT
dHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAg
ICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTg1LDcgKzE4NSw3
IEBAIEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOCiAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvciog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEV2ZW50Q29uc3RydWN0
b3IqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBpbXBsLT5hdHRy
MSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwt
PmF0dHIxKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBK
U1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TgogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBp
bXBsID0gc3RhdGljX2Nhc3Q8VGVzdEV2ZW50Q29uc3RydWN0b3IqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+YXR0cjIoKSk7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5hdHRy
MigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApp
bmRleCA0Y2Y5NWM5Y2Y1MzdhY2Y1MmY0ZWY4ZjgzMzcwZDM4OTVkOTUyYWEwLi4xYzY0ODUxMzIx
NTdiZDIwNTA4MTVmMzdjZjkyZjkzMTFiZjY5YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKAogICAgIEpTVmFs
dWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIWxpc3RlbmVyLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgaW1wbC0+YWRkRXZlbnRMaXN0ZW5lcih1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgSlNFdmVudExpc3RlbmVyOjpj
cmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRUaGlzLCBmYWxzZSwgY3VycmVudFdvcmxk
KGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsLT5h
ZGRFdmVudExpc3RlbmVyKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBjYXN0ZWRU
aGlzLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKSwgZXhlYy0+YXJndW1lbnQoMikudG9Cb29s
ZWFuKGV4ZWMpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkBAIC0yNjgsNyArMjY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW4KICAgICBKU1Zh
bHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGltcGwtPnJlbW92ZUV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRX
b3JsZChleGVjKSkuZ2V0KCksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7Cisg
ICAgaW1wbC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3Rl
bmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSkuZ2V0KCksIGV4ZWMt
PmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA0NTgyYWNh
MWZhNGMwZjdiNDM1ODE0N2NlN2EyMDJmN2FmMDA4ZDM5Li5lNjlkNmEwNTZiYjc1YjQwNjhkZDQ1
NGVlZDc3MjliNTljNDUxMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTM3LDcgKzEz
Nyw3IEBAIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKICAgICBKU1Rlc3RFeGNlcHRpb24qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEV4Y2VwdGlvbiogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RFeGNlcHRpb24qPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+bmFtZSgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPm5hbWUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAwZTM5YzQxZWU4ZDcxODJiOWE4ZmMwYWUy
NDAyNzAwYTU1ZTM5M2YwLi5kNDZkNDdjN2FiYzNlZGQ0OTQ2ODUyOTJiMmQ3YjNiNDI3YjJjMGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTMyLDEwICsxMzIsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNUZXN0SW50ZXJmYWMKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29uc3QgU3RyaW5nJiBz
dHIxKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHIxKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0
cmluZyYgc3RyMih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MSwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyMihNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygp
IDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpz
dXBwbGVtZW50YWxTdGF0aWNBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0cigp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNjksNyArMjY5LDcgQEAgSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGUKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RJbnRlcmZh
Y2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmco
ZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMShpbXBsKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpz
dXBwbGVtZW50YWxTdHIxKGltcGwpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yODEs
NyArMjgxLDcgQEAgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGUKICAgICBKU1Rlc3RJbnRlcmZhY2Uq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdEludGVyZmFjZSogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RJbnRlcmZhY2UqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFs
U3RyMihpbXBsKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIyKGltcGwpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2U6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmEK
IHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKLSAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdGF0
aWNBdHRyKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpz
ZXRTdXBwbGVtZW50YWxTdGF0aWNBdHRyKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKIH0KIAogI2VuZGlmCkBAIC0zMzgsNyAr
MzM4LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEoKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFj
ZSo+KHRoaXNPYmplY3QpOwogICAgIFRlc3RJbnRlcmZhY2UqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0SW50ZXJmYWNlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBUZXN0U3VwcGxlbWVudGFs
OjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcGwsIHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5
KCkgPyBVU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAg
ICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcGwsIHZhbHVlLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKIH0K
IAogI2VuZGlmCkBAIC0zOTgsNyArMzk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3Ry
aW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkp
OworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFy
Zyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGVlZWY2
NmE0NGVhYWMzOTM1ZjNiODgwYjlmZTYyMGExNDRjNWE4MDkuLjE2YzM0NTdiOWUwODhhYWQwOTUz
YmFjYTg5YjNmODdkZDIzYjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTkzLDEzICs5MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKUwogICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBjb25zdCBTdHJpbmcmIHN0cjEodXN0cmluZ1RvU3RyaW5nKE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgp
ID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJp
bmcmIHN0cjEoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHIyKHVzdHJpbmdUb1N0cmlu
ZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlz
RW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERl
ZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29u
c3QgU3RyaW5nJiBzdHIyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJ
c1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyMyh1c3RyaW5n
VG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMiwgRGVmYXVsdElzTnVsbFN0
cmluZykuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7
CisgICAgY29uc3QgU3RyaW5nJiBzdHIzKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIs
IERlZmF1bHRJc051bGxTdHJpbmcpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMiwgRGVmYXVsdElzTnVsbFN0cmluZykudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgUmVmUHRyPFRlc3ROYW1l
ZENvbnN0cnVjdG9yPiBvYmplY3QgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9ySlND
b25zdHJ1Y3RvcihjYXN0ZWRUaGlzLT5kb2N1bWVudCgpLCBzdHIxLCBzdHIyLCBzdHIzLCBlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IGMxNzYxNDM2ODExNjFhNDllNTAzOWMxNzc0YWIyMzVjZjlkMDQ0NDQu
LmZhZTg2ZDA4ZjllNzc5YTE1ZWIzMzY5MDdiMTgwYmI2NjdiMWZlOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU4KICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmcoZXhlYywgaW1wbC0+cmVhZE9ubHlTdHJpbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+cmVhZE9ubHlTdHJpbmdBdHRyKCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQyOSw3ICs0MjksNyBAQCBKU1ZhbHVlIGpzVGVz
dE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFS
QU0oZXhlYyk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBUZXN0T2JqOjpz
dGF0aWNTdHJpbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoZXhlYywgVGVzdE9iajo6c3RhdGljU3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC00OTYsNyArNDk2LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkp
OwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZyhleGVjLCBpbXBsLT5zdHJpbmdBdHRyKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+c3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC01MzYsNyArNTM2LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHkK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiogaW1wbCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+Z2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtNTc2LDcgKzU3Niw3IEBAIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtCiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nKGV4ZWMsIGltcGwtPmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVybGF0dHJBdHRyKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShleGVjLCBpbXBsLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWR1cmxhdHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU4Niw3ICs1ODYs
NyBAQCBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBpbXBs
LT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0
ckF0dHIpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGlt
cGwtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdB
dHRyQXR0cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTYxNiw3ICs2MTYsNyBAQCBK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBQcm9wZQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVj
KTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVjLCBpbXBsLT5nZXRV
UkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmdl
dFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0
cikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBKU1ZhbHVl
IGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90QmFzZQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+c3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oZWMpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CkBAIC02NjgsNyArNjY4LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xv
dEJhc2UpKTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmcoZXhlYywgaW1wbC0+c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLT5z
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC05MzYsNyArOTM2LDcgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAgIFVOVVNF
RF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZyhleGVj
LCBpbXBsLT5oYXNoKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgaW1wbC0+aGFzaCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC05NjcsNyAr
OTY3LDcgQEAgdm9pZCBKU1Rlc3RPYmo6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlMKIHZvaWQgc2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICBUZXN0T2JqOjpzZXRTdGF0
aWNTdHJpbmdBdHRyKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBUZXN0T2JqOjpzZXRT
dGF0aWNTdHJpbmdBdHRyKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKIH0KIAogCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwot
ICAgIGltcGwtPnNldFN0cmluZ0F0dHIodXN0cmluZ1RvU3RyaW5nKHZhbHVlLmlzRW1wdHkoKSA/
IFVTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGlt
cGwtPnNldFN0cmluZ0F0dHIodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogfQogCiAKQEAgLTExNzAsNyArMTE3MCw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBpbXBsLT5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih1c3RyaW5nVG9T
dHJpbmcodmFsdWUuaXNFbXB0eSgpID8gVVN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKSwgZWMpOworICAgIGltcGwtPnNldFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIH0KIApA
QCAtMTE4MSw3ICsxMTgxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2IKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGltcGwtPnNldFN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBlYyk7CisgICAgaW1wbC0+c2V0
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24odmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIGVjKTsKICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwogfQogCkBAIC0xNDMzLDcgKzE0MzMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhB
cmdzKEV4ZWNTdAogICAgIGxvbmcgbG9uZyBBcmcoc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvSW50ZWdl
cihleGVjKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFy
Zyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVs
dElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoq
IG9iakFyZyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMiwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOwpAQCAtMTQ2OSw3ICsxNDY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdzKEV4ZWNT
dGF0ZSoKICAgICBsb25nIGxvbmcgQXJnKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0ludGVnZXIoZXhl
YykpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0
cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
ZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
KTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqKiBvYmpB
cmcodG9UZXN0T2JqKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpKTsKQEAgLTE1MDYsNyArMTUwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3Rh
CiAgICAgbG9uZyBsb25nIEFyZyhzdGF0aWNfY2FzdDxsb25nIGxvbmc+KE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9JbnRlZ2VyKGV4ZWMpKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdU
b1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cisg
ICAgY29uc3QgU3RyaW5nJiBzdHJBcmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwg
RGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnKHRv
VGVzdE9iaihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAyLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSk7CkBAIC0xNTYzLDcgKzE1NjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncwogICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJp
bmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5p
c0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNv
bnN0IFN0cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RP
YmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
OwpAQCAtMTY4MSw3ICsxNjgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXQKICAgICBKU1Zh
bHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGltcGwtPmFkZEV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3Js
ZChleGVjKSksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wbC0+
YWRkRXZlbnRMaXN0ZW5lcihleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVk
VGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9v
bGVhbihleGVjKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtMTY5Niw3ICsxNjk2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKICAgICBK
U1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIGltcGwtPnJlbW92ZUV2ZW50TGlzdGVuZXIodXN0cmluZ1RvQXRvbWljU3RyaW5nKGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJl
bnRXb3JsZChleGVjKSkuZ2V0KCksIGV4ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7
CisgICAgaW1wbC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxp
c3RlbmVyKSwgY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChleGVjKSkuZ2V0KCksIGV4
ZWMtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTkzOSw3ICsxOTM5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZygKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJpbmcoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5
KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0
SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0
cmluZyYgc3RyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhz
dHIpOwpAQCAtMTk1NCw3ICsxOTU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0
T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0cih1c3RyaW5nVG9TdHJp
bmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5p
c0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNv
bnN0IFN0cmluZyYgc3RyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0lzVW5kZWZpbmVkKHN0cik7CkBAIC0xOTY5LDcgKzE5NjksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIGNvbnN0IFN0cmluZyYg
c3RyKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNOdWxsU3RyaW5nKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNOdWxsU3RyaW5nKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cihNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNOdWxsU3RyaW5nKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc051bGxTdHJpbmcpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwt
Pm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyhzdHIpOwpAQCAtMjA0Nyw3ICsy
MDQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMShFeGVjU3QKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1w
bCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogCi0gICAgSlND
OjpKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcGwtPmNvbmRpdGlvbmFsTWV0aG9k
MSgpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
aW1wbC0+Y29uZGl0aW9uYWxNZXRob2QxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIApAQCAtMjA5Niw3ICsyMDk2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
MSgKICAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gVVN0cmluZygp
IDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVs
dElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgc3RyQXJnKTsKQEAg
LTIxNDAsNyArMjE0MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoCiAgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBjb25zdCBT
dHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkuaXNFbXB0eSgpID8gU3Ry
aW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2Qoc3RyQXJnKTsKQEAgLTIzNDgsNyArMjM0OCw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIGNvbnN0IFN0cmluZyYgdHlwZSh1c3RyaW5nVG9T
dHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KS5pc0VtcHR5KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAg
IGNvbnN0IFN0cmluZyYgdHlwZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqOjpvdmVybG9hZGVkTWV0
aG9kMSh0eXBlKTsKQEAgLTI1NzEsNyArMjU3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUq
CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGNvbnN0IFN0cmluZyYgc3RyKHVzdHJpbmdUb1N0
cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
LmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAg
Y29uc3QgU3RyaW5nJiBzdHIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgZmxvYXQgYShNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvRmxvYXQoZXhlYykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAppbmRleCBkN2Y5YTM3Yzg3M2FlNjk0ZDE4M2Q5OWJhMjBlNDZiNDM3NzYxZDdjLi5hOGMwZjZi
Yjc5MjJlNTI1MDRhMmVlNjQ2MDJkM2MxZTI0ZGFjYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtOTIsNyArOTIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjbwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBj
b25zdCBTdHJpbmcmIGhlbGxvKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/IFVTdHJpbmcoKSA6IE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBoZWxsbyhNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERl
ZmF1bHRJc1VuZGVmaW5lZCksIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9JZGVudGlmaWVyUmVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVy
UmVwLmNwcAppbmRleCAyYWNmMTQxNTNkMWRiOWUxMmI3MjU1OGE1Mzg4ZDk4NmZmOGE1ZTg1Li4x
ZjE3NmZjOGMyMDczZjc4YzA5MGEwZjY2MjAxMDgxYmIwN2NkODg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHJ1
bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCkBAIC05Miw3ICs5Miw3IEBAIElkZW50aWZpZXJSZXAqIElkZW50
aWZpZXJSZXA6OmdldChjb25zdCBjaGFyKiBuYW1lKQogICAgIGlmICghbmFtZSkKICAgICAgICAg
cmV0dXJuIDA7CiAgIAotICAgIFVTdHJpbmcgc3RyaW5nID0gc3RyaW5nVG9VU3RyaW5nKFN0cmlu
Zzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgc3RybGVuKG5hbWUpKSk7CisgICAg
U3RyaW5nIHN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwg
c3RybGVuKG5hbWUpKTsKICAgICBTdHJpbmdJZGVudGlmaWVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gc3RyaW5nSWRlbnRpZmllck1hcCgpLmFkZChzdHJpbmcuaW1wbCgpLCAwKTsKICAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnNl
Y29uZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCA2MWUzNjc5NTYx
YTYzZTRlM2NmNWJlNGQwODk2NzIzMTM3ZjYzMmM3Li5mYmY1NDE5NGJjMTc1NWFhY2E3NWQ2ZjRh
YzlmZTdiZDUwNDllNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNv
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAg
LTQzMyw3ICs0MzMsNyBAQCBib29sIF9OUE5fSGFzTWV0aG9kKE5QUCwgTlBPYmplY3QqIG8sIE5Q
SWRlbnRpZmllciBtZXRob2ROYW1lKQogdm9pZCBfTlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCos
IGNvbnN0IE5QVVRGOCogbWVzc2FnZSkKIHsKICAgICAvLyBJZ25vcmluZyB0aGUgTlBPYmplY3Qg
cGFyYW0gaXMgY29uc2lzdGVudCB3aXRoIHRoZSBNb3ppbGxhIGltcGxlbWVudGF0aW9uLgotICAg
IFVTdHJpbmcgZXhjZXB0aW9uKG1lc3NhZ2UpOworICAgIFN0cmluZyBleGNlcHRpb24obWVzc2Fn
ZSk7CiAgICAgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oZXhjZXB0aW9uKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAppbmRleCBjZmMwMjZiMjhjYjlmZWI2NTMzNTc2
ZWJlODIzNjU4ZjM5NWM3YmI3Li5jZTVmZDU0ODlkYzU2ZDczZTA3ZjAzNDllYWJiZDMzZTRiOWNl
OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcApAQCAtNzMsNyArNzMsNyBAQCBD
Q2xhc3MqIENDbGFzczo6Y2xhc3NGb3JJc0EoTlBDbGFzcyogaXNhKQogCiBNZXRob2RMaXN0IEND
bGFzczo6bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBp
bnN0YW5jZSkgY29uc3QKIHsKLSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAg
CiAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0OwogCkBAIC05Nyw3ICs5Nyw3IEBAIE1ldGhvZExp
c3QgQ0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFu
Y2UqIGluc3RhbmNlKSBjCiAKIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogewotICAgIFVTdHJpbmcg
bmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTdHJpbmcgbmFtZShwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKICAgICAKICAgICBGaWVsZCogYUZpZWxkID0gX2ZpZWxkcy5n
ZXQobmFtZS5pbXBsKCkpOwogICAgIGlmIChhRmllbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
aW5zdGFuY2UuY3BwCmluZGV4IDViOThmNmVlMTk0ZDE1Y2ZmZjI3ZTIyZDRmNzdiYTkwMmFlYTRk
OTAuLjIwMWM2MWU4NjExZTMzOTNkNGZmOTgxZjhlNTdlMjAxOWNkY2MzOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCkBAIC01NCwxNSArNTQsMTMgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAK
LXVzaW5nIEpTQzo6VVN0cmluZzsKLQotc3RhdGljIEpTQzo6VVN0cmluZyYgZ2xvYmFsRXhjZXB0
aW9uU3RyaW5nKCkKK3N0YXRpYyBTdHJpbmcmIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpCiB7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU0M6OlVTdHJpbmcsIGV4Y2VwdGlvblN0ciwgKCkpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBleGNlcHRpb25TdHIsICgpKTsKICAgICBy
ZXR1cm4gZXhjZXB0aW9uU3RyOwogfQogCi12b2lkIENJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0
aW9uKFVTdHJpbmcgZXhjZXB0aW9uKQordm9pZCBDSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlv
bihTdHJpbmcgZXhjZXB0aW9uKQogewogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gZXhj
ZXB0aW9uOwogfQpAQCAtNzcsNyArNzUsNyBAQCB2b2lkIENJbnN0YW5jZTo6bW92ZUdsb2JhbEV4
Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0K
IAotICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gVVN0cmluZygpOworICAgIGdsb2JhbEV4
Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CiB9CiAKIENJbnN0YW5jZTo6Q0luc3RhbmNlKE5Q
T2JqZWN0KiBvLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QpCkBAIC0xMTMsNyAr
MTExLDcgQEAgY2xhc3MgQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBSdW50aW1lTWV0aG9kIEJhc2U7CiAKLSAgICBzdGF0aWMgQ1J1
bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0
KQorICAgIHN0YXRpYyBDUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6
TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0
RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBv
YmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2Jq
ZWN0IGZvciAiaSIuCkBAIC0xMzYsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IFVTdHJpbmcmIG5hbWUpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5o
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oCmluZGV4IDYxZTM0OTExYjgx
NTQzNzIyNjhiMTdmNTM1Mzg4ZmU5M2NmMDEwM2MuLmRkYWMwYzI2YzY3MGVhZDhlOWIyNjY2ZDU3
ZTdlMWY1MGNmNjhmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5z
dGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgKQEAgLTMx
LDEzICszMSwxMiBAQAogI2luY2x1ZGUgIkJyaWRnZUpTQy5oIgogI2luY2x1ZGUgInJ1bnRpbWVf
cm9vdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIHR5cGVkZWYgc3RydWN0IE5QT2JqZWN0IE5QT2JqZWN0OwogCiBuYW1l
c3BhY2UgSlNDIHsKIAotY2xhc3MgVVN0cmluZzsKLQogbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAog
Y2xhc3MgQ0NsYXNzOwpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ0luc3RhbmNlKG9iamVjdCwgcm9vdE9iamVjdCkpOwogICAgIH0KIAotICAg
IHN0YXRpYyB2b2lkIHNldEdsb2JhbEV4Y2VwdGlvbihKU0M6OlVTdHJpbmcgZXhjZXB0aW9uKTsK
KyAgICBzdGF0aWMgdm9pZCBzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW5nKTsKICAgICBzdGF0aWMg
dm9pZCBtb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0YXRlKik7CiAKICAgICB+
Q0luc3RhbmNlICgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGls
aXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKaW5kZXggMzA4
YWY1YWZkYzVkZDVmMDExZDY4NDJhODkwMWQwMzdiMTNkNTExMy4uNWZlY2M1YzI1MGVjOGViZWMy
MTY0NWY1MDJhMmVjYjI1MmYzYzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2MvY191dGlsaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHku
Y3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBOUFZhcmlhbnQqIHJlc3VsdCkKICAgICBWT0lEX1RP
X05QVkFSSUFOVCgqcmVzdWx0KTsKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAg
ICAgIFVTdHJpbmcgdXN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICAgICAgU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgICAgIENTdHJpbmcgY3N0cmluZyA9IHVzdHJpbmcudXRmOCgpOwogICAgICAgICBO
UFN0cmluZyBzdHJpbmcgPSB7IChjb25zdCBOUFVURjgqKWNzdHJpbmcuZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oY3N0cmluZy5sZW5ndGgoKSkgfTsKICAgICAgICAgTlBOX0luaXRpYWxp
emVWYXJpYW50V2l0aFN0cmluZ0NvcHkocmVzdWx0LCAmc3RyaW5nKTsKQEAgLTEyMiw3ICsxMjIs
NyBAQCBKU1ZhbHVlIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgTlBWYXJpYW50KiB2YXJpYW50LCBSb290TwogICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5
cGVfRG91YmxlKQogICAgICAgICByZXR1cm4ganNOdW1iZXIoTlBWQVJJQU5UX1RPX0RPVUJMRSgq
dmFyaWFudCkpOwogICAgIGlmICh0eXBlID09IE5QVmFyaWFudFR5cGVfU3RyaW5nKQotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6anNTdHJpbmcoZXhlYywgY29udmVydE5QU3RyaW5nVG9VVEYxNigm
dmFyaWFudC0+dmFsdWUuc3RyaW5nVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ompz
U3RyaW5nV2l0aENhY2hlKGV4ZWMsIGNvbnZlcnROUFN0cmluZ1RvVVRGMTYoJnZhcmlhbnQtPnZh
bHVlLnN0cmluZ1ZhbHVlKSk7CiAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9PYmplY3Qp
IHsKICAgICAgICAgTlBPYmplY3QqIG9iaiA9IHZhcmlhbnQtPnZhbHVlLm9iamVjdFZhbHVlOwog
ICAgICAgICAKQEAgLTE0NCw3ICsxNDQsNyBAQCBTdHJpbmcgY29udmVydE5QU3RyaW5nVG9VVEYx
Nihjb25zdCBOUFN0cmluZyogc3RyaW5nKQogCiBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tTlBJ
ZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTlBVVEY4KiBuYW1lKQogewotICAgIHJl
dHVybiBJZGVudGlmaWVyKGV4ZWMsIFdlYkNvcmU6OnN0cmluZ1RvVVN0cmluZyhjb252ZXJ0VVRG
OFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEpKSk7CisgICAgcmV0dXJuIElkZW50
aWZpZXIoZXhlYywgY29udmVydFVURjhUb1VURjE2V2l0aExhdGluMUZhbGxiYWNrKG5hbWUsIC0x
KSk7CiB9CiAKIH0gfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlf
anNvYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQpp
bmRleCBiNWE3ZDIyMGIzYTEzZmIzM2FjNTJkNjNmMWZlNGVkYTVjNjk4OWNiLi5hMTlkMzQzNDli
NTQzNzk3YjQyOTVkY2NmMzAxYTNmOTBmOTY0ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL2puaV9qc29iamVjdC5tbQpAQCAtNDg4LDcgKzQ4OCw3IEBAIGpvYmplY3QgSmF2YUpTT2Jq
ZWN0Ojpjb252ZXJ0VmFsdWVUb0pPYmplY3QoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICAgICAg
ICAgIHJlc3VsdCA9IGVudi0+TmV3T2JqZWN0IChKU09iamVjdENsYXNzLCBjb25zdHJ1Y3RvcklE
LCAoamRvdWJsZSl2YWx1ZS50b051bWJlcihleGVjKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgVVN0cmluZyBzdHJpbmdWYWx1ZSA9IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZ1Zh
bHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICBKTklFbnYg
KmVudiA9IGdldEpOSUVudigpOwogICAgICAgICByZXN1bHQgPSBlbnYtPk5ld1N0cmluZyAoKGNv
bnN0IGpjaGFyICopc3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5ndGgo
KSk7CiAgICAgfSBlbHNlIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JVXRpbGl0eVByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSk5JVXRpbGl0eVByaXZhdGUuY3BwCmluZGV4IGEzYjJj
MmU3ZGZlMjEwMTBkYTM1NmE5ZDYwY2E0ZGUxMzVlYmYwNzkuLjM3NmIwMmE0NGY4N2U2NzU5MmI5
NWNhNmMwZmQ3ODEyYjhkNzYxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvanNjL0pOSVV0aWxpdHlQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL2pzYy9KTklVdGlsaXR5UHJpdmF0ZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGpv
YmplY3QgY29udmVydEFycmF5SW5zdGFuY2VUb0phdmFBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpT
QXJyYXkqIGpzQXJyYXkKICAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoIiIp
KTsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVtID0ganNBcnJheS0+Z2V0KGV4ZWMs
IGkpOwotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRlbS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHJp
bmdWYWx1ZSA9IGl0ZW0udG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICAgICAg
ICAgICAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChqYXJyYXksIGksCiAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFy
ICopc3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5ndGgoKSkpOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIGpvYmplY3QgY29udmVydEFy
cmF5SW5zdGFuY2VUb0phdmFBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkqIGpzQXJyYXkK
ICAgICAgICAgICAgIGphcnJheSA9IChqb2JqZWN0QXJyYXkpZW52LT5OZXdDaGFyQXJyYXkobGVu
Z3RoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewogICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlbSA9IGpzQXJyYXktPmdldChleGVjLCBpKTsK
LSAgICAgICAgICAgICAgICBVU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRlbS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlID0gaXRl
bS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgamNoYXIgdmFs
dWUgPSAwOwogICAgICAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZS5sZW5ndGgoKSA+IDApCiAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKChjb25zdCBqY2hhciopc3RyaW5nVmFsdWUuY2hh
cmFjdGVycygpKVswXTsKQEAgLTIxOSw3ICsyMTksNyBAQCBqdmFsdWUgY29udmVydFZhbHVlVG9K
VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBSb290T2JqZWN0KiByb290T2JqZWN0LCBKU1ZhbHVlIHZh
bAogICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFwcHJvcHJpYXRlIEphdmEgb2JqZWN0IGlmIHRh
cmdldCB0eXBlIGlzIGphdmEubGFuZy5PYmplY3QuCiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5s
ICYmICFzdHJjbXAoamF2YUNsYXNzTmFtZSwgImphdmEubGFuZy5PYmplY3QiKSkgewogICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFVT
dHJpbmcgc3RyaW5nVmFsdWUgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4ZWMpOworICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nVmFsdWUgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVl
KGV4ZWMpOwogICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGVudiA9IGdldEpOSUVudigpOwog
ICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBlbnYtPmZ1bmN0aW9ucy0+
TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFyKilzdHJpbmdWYWx1ZS5jaGFyYWN0ZXJzKCksIHN0
cmluZ1ZhbHVlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmwgPSBqYXZh
U3RyaW5nOwpAQCAtMjM4LDcgKzIzOCw3IEBAIGp2YWx1ZSBjb252ZXJ0VmFsdWVUb0pWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFJvb3RPYmplY3QqIHJvb3RPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAg
ICAgICAgICAgICAgICAgIGpvYmplY3QgamF2YUJvb2xlYW4gPSBlbnYtPmZ1bmN0aW9ucy0+TmV3
T2JqZWN0KGVudiwgY2xhenosIGNvbnN0cnVjdG9yLCBib29sVmFsdWUpOwogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQubCA9IGphdmFCb29sZWFuOwogICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHN0
cmluZ1ZhbHVlID0gInVuZGVmaW5lZCI7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHJp
bmdWYWx1ZSA9ICJ1bmRlZmluZWQiOwogICAgICAgICAgICAgICAgICAgICBKTklFbnYqIGVudiA9
IGdldEpOSUVudigpOwogICAgICAgICAgICAgICAgICAgICBqb2JqZWN0IGphdmFTdHJpbmcgPSBl
bnYtPmZ1bmN0aW9ucy0+TmV3U3RyaW5nKGVudiwgKGNvbnN0IGpjaGFyKilzdHJpbmdWYWx1ZS5j
aGFyYWN0ZXJzKCksIHN0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmwgPSBqYXZhU3RyaW5nOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIGp2YWx1ZSBjb252ZXJ0
VmFsdWVUb0pWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFJvb3RPYmplY3QqIHJvb3RPYmplY3QsIEpT
VmFsdWUgdmFsCiAgICAgICAgICAgICAvLyBjb252ZXJ0aW5nIGZyb20gYSBudWxsLgogICAgICAg
ICAgICAgaWYgKCFyZXN1bHQubCAmJiAhc3RyY21wKGphdmFDbGFzc05hbWUsICJqYXZhLmxhbmcu
U3RyaW5nIikpIHsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFVTdHJpbmcgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICAgICAg
Sk5JRW52KiBlbnYgPSBnZXRKTklFbnYoKTsKICAgICAgICAgICAgICAgICAgICAgam9iamVjdCBq
YXZhU3RyaW5nID0gZW52LT5mdW5jdGlvbnMtPk5ld1N0cmluZyhlbnYsIChjb25zdCBqY2hhciop
c3RyaW5nVmFsdWUuY2hhcmFjdGVycygpLCBzdHJpbmdWYWx1ZS5sZW5ndGgoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5sID0gamF2YVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFGaWVsZEpTQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvam5pL2pzYy9KYXZhRmllbGRKU0MuY3BwCmluZGV4IDFlYmYxZTYxNzUzMDk2ZTA5OTI4
MWVlNGYwMGM3ODJhMThkYjYwZmIuLmM4NzE3NTUzMTllZTEwY2Q3ODQ2OTk5NjYzMWFiNTVmMGM2
M2RmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFGaWVs
ZEpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUZpZWxkSlND
LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEpTVmFsdWUgSmF2YUZpZWxkOjp2YWx1ZUZyb21JbnN0
YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpKSBjb25zdAogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhRmllbGQ6OnZhbHVlRnJv
bUluc3RhbmNlIGdldHRpbmcgJXMgPSAlcyIsIFVTdHJpbmcobmFtZSgpLmltcGwoKSkudXRmOCgp
LmRhdGEoKSwganNyZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNl
IGdldHRpbmcgJXMgPSAlcyIsIFN0cmluZyhuYW1lKCkuaW1wbCgpKS51dGY4KCkuZGF0YSgpLCBq
c3Jlc3VsdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykuYXNjaWkoKS5kYXRhKCkpOwogCiAg
ICAgcmV0dXJuIGpzcmVzdWx0OwogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSmF2YUZpZWxk
OjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaSwg
SlNWYWx1ZSBhCiAgICAgY29uc3QgSmF2YUluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0
PGNvbnN0IEphdmFJbnN0YW5jZSo+KGkpOwogICAgIGp2YWx1ZSBqYXZhVmFsdWUgPSBjb252ZXJ0
VmFsdWVUb0pWYWx1ZShleGVjLCBpLT5yb290T2JqZWN0KCksIGFWYWx1ZSwgbV90eXBlLCB0eXBl
Q2xhc3NOYW1lKCkpOwogCi0gICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUZpZWxkOjpzZXRWYWx1
ZVRvSW5zdGFuY2Ugc2V0dGluZyB2YWx1ZSAlcyB0byAlcyIsIFVTdHJpbmcobmFtZSgpLmltcGwo
KSkudXRmOCgpLmRhdGEoKSwgYVZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS5hc2Np
aSgpLmRhdGEoKSk7CisgICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUZpZWxkOjpzZXRWYWx1ZVRv
SW5zdGFuY2Ugc2V0dGluZyB2YWx1ZSAlcyB0byAlcyIsIFN0cmluZyhuYW1lKCkuaW1wbCgpKS51
dGY4KCkuZGF0YSgpLCBhVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLmFzY2lpKCku
ZGF0YSgpKTsKIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBKYXZhVHlwZUFycmF5
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNl
SlNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5j
cHAKaW5kZXggMTVkZmZhNWFkNTY0MjQ5NjEwNjA3Y2VjMDhjMzE4ZTU1OGQwODNmNS4uYjJkYmUw
ZTgzN2M5NWU4M2U2MmY2YWJlOTk5OTE5ZTVlZjk0OGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCkBAIC05MywxMSArOTMsMTEg
QEAgSlNWYWx1ZSBKYXZhSW5zdGFuY2U6OnN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIAogICAgIC8vIFNob3VsZCB0aHJvdyBhIEpTIGV4Y2VwdGlvbiwgcmF0aGVyIHRoYW4gcmV0
dXJuaW5nICIiPyAtIGJ1dCBiZXR0ZXIgdGhhbiBhIG51bGwgZGVyZWZlcmVuY2UuCiAgICAgaWYg
KCFzdHJpbmdWYWx1ZSkKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmcoKSk7
CisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmcoKSk7IC8vIEZJWE1FOiB3aHkg
bm90IGpzRW1wdHlTdHJpbmcoZXhlYyk/CiAKICAgICBKTklFbnYqIGVudiA9IGdldEpOSUVudigp
OwogICAgIGNvbnN0IGpjaGFyKiBjID0gZ2V0VUNoYXJhY3RlcnNGcm9tSlN0cmluZ0luRW52KGVu
diwgc3RyaW5nVmFsdWUpOwotICAgIFVTdHJpbmcgdSgoY29uc3QgVUNoYXIqKWMsIChpbnQpZW52
LT5HZXRTdHJpbmdMZW5ndGgoc3RyaW5nVmFsdWUpKTsKKyAgICBTdHJpbmcgdSgoY29uc3QgVUNo
YXIqKWMsIChpbnQpZW52LT5HZXRTdHJpbmdMZW5ndGgoc3RyaW5nVmFsdWUpKTsKICAgICByZWxl
YXNlVUNoYXJhY3RlcnNGb3JKU3RyaW5nSW5FbnYoZW52LCBzdHJpbmdWYWx1ZSwgYyk7CiAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHUpOwogfQpAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIEph
dmFSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHR5
cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIEphdmFSdW50aW1lTWV0aG9k
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBVU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0
aWMgSmF2YVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExp
c3QmIGxpc3QpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVj
dHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3Ig
ImkiLgpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBuYW1lKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhLCBuYW1lKTsKICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
QEAgLTE4Nyw3ICsxODcsNyBAQCBKU1ZhbHVlIEphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZAogICAgIH0KIAogICAg
IGNvbnN0IEphdmFNZXRob2QqIGpNZXRob2QgPSBzdGF0aWNfY2FzdDxjb25zdCBKYXZhTWV0aG9k
Kj4obWV0aG9kKTsKLSAgICBMT0coTGl2ZUNvbm5lY3QsICJKYXZhSW5zdGFuY2U6Omludm9rZU1l
dGhvZCBjYWxsICVzICVzIG9uICVwIiwgVVN0cmluZyhqTWV0aG9kLT5uYW1lKCkuaW1wbCgpKS51
dGY4KCkuZGF0YSgpLCBqTWV0aG9kLT5zaWduYXR1cmUoKSwgbV9pbnN0YW5jZS0+aW5zdGFuY2Uo
KSk7CisgICAgTE9HKExpdmVDb25uZWN0LCAiSmF2YUluc3RhbmNlOjppbnZva2VNZXRob2QgY2Fs
bCAlcyAlcyBvbiAlcCIsIFN0cmluZyhqTWV0aG9kLT5uYW1lKCkuaW1wbCgpKS51dGY4KCkuZGF0
YSgpLCBqTWV0aG9kLT5zaWduYXR1cmUoKSwgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKSk7CiAKICAg
ICBWZWN0b3I8anZhbHVlPiBqQXJncyhjb3VudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaAppbmRleCAxZTE4MDNhYTE0NGEwMDRiYTk2Y2UyYmM5
ZGQ3NzQxOWZjYjQzM2Y5Li4xY2M1NDc0YTNkY2U2MmM2OTcxZmJlMTgwMGUxOTBmZjJlYzMxYzBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhU3RyaW5nSlND
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pTQy5oCkBA
IC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAgICBKYXZhU3RyaW5nKCkKICAgICB7CiAgICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9i
YWxEYXRhKCkpOwotICAgICAgICBtX2ltcGwgPSBVU3RyaW5nKCkuaW1wbCgpOwogICAgIH0KIAog
ICAgIH5KYXZhU3RyaW5nKCkKQEAgLTY3LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKCFtX3V0ZjhTdHJpbmcuZGF0YSgpKSB7CiAgICAgICAgICAgICBKU0xvY2tIb2xkZXIg
bG9jayhXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLSAg
ICAgICAgICAgIG1fdXRmOFN0cmluZyA9IFVTdHJpbmcobV9pbXBsKS51dGY4KCk7CisgICAgICAg
ICAgICBtX3V0ZjhTdHJpbmcgPSBTdHJpbmcobV9pbXBsKS51dGY4KCk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG1fdXRmOFN0cmluZy5kYXRhKCk7CiAgICAgfQpAQCAtODEsNyArODAsNyBA
QCBwcml2YXRlOgogICAgICAgICBjb25zdCBqY2hhciogdWMgPSBnZXRVQ2hhcmFjdGVyc0Zyb21K
U3RyaW5nSW5FbnYoZSwgcyk7CiAgICAgICAgIHsKICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOwotICAg
ICAgICAgICAgbV9pbXBsID0gVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
dWMpLCBzaXplKS5pbXBsKCk7CisgICAgICAgICAgICBtX2ltcGwgPSBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVQ2hhcio+KHVjKSwgc2l6ZSkuaW1wbCgpOwogICAgICAgICB9CiAgICAg
ICAgIHJlbGVhc2VVQ2hhcmFjdGVyc0ZvckpTdHJpbmdJbkVudihlLCBzLCB1Yyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KaW5kZXggMmQwODcwNDU4MWU3
YmFmNDkyZWNlNzkwOWJjNzM0Y2MyZTA3YjY0YS4uYmNiZDdlN2JjN2ZjY2E4MzM4YWMzMjRlMGU2
ZWYyN2M1MDc0Y2RmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1t
CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb252ZXJ0SlNNZXRob2ROYW1l
VG9PYmpjKGNvbnN0IENTdHJpbmcmIGpzTmFtZSwgSlNOYW1lQ29udmVyCiAKIE1ldGhvZExpc3Qg
T2JqY0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFu
Y2UqKSBjb25zdAogewotICAgIFVTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICBTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAo
bmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIE1ldGhvZExpc3QoKTsKIApAQCAtMTQ5LDcg
KzE0OSw3IEBAIE1ldGhvZExpc3QgT2JqY0NsYXNzOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogCiBGaWVsZCogT2JqY0NsYXNzOjpmaWVs
ZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29u
c3QKIHsKLSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
U3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5tbQppbmRleCA4YTk3YjdkZThiZDEwYWMzMzIyMDBjYjY1OWEyZDEzNTM0
ZDc0NGQxLi40ZjViZWNhYWRiY2ExNzUxOGNjNjgwNGVhZGE1YjkxNTU4MzQ4NDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KQEAgLTE4MSw3ICsxODEs
NyBAQCBib29sIE9iamNJbnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29u
c3QKIAogY2xhc3MgT2JqQ1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBC
aW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKKyAgICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRob2Qq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewogICAg
ICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5
cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8g
cGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgpAQCAtMjA2LDcgKzIwNiw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBuYW1lKQorICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgewogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBuYW1lKTsK
ICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTQwMyw3ICs0MDMsNyBAQCBK
U1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMp
CiAKIGJvb2wgT2JqY0luc3RhbmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIGFWYWx1ZSkKIHsKLSAg
ICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIG5h
bWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgT2JqY0luc3Rh
bmNlOjpzZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVyCiAKIEpTVmFsdWUgT2JqY0luc3RhbmNlOjpnZXRWYWx1ZU9mVW5kZWZpbmVkRmll
bGQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewot
ICAgIFVTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTdHJpbmcg
bmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmgKaW5kZXggMWQxNjA0MGM3NGEzMjM3ZjI4NGJhMzI1MjgwYjRhMTk2
NDZmZDM2Ny4uMGRjMmI4MzQ4Y2IwOWViZjg2YTUwZDNhNTIyMjNkYmNjYWNiNWI3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTk0LDcgKzk0LDcgQEAg
Y2xhc3MgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgc3RhdGlj
IE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29uc3QgVVN0cmlu
ZyYgcHJvcGVydHlOYW1lKQorICAgIHN0YXRpYyBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iamNJbnN0
YW5jZSogaW5zdGFuY2UsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBl
IG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0
cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqY0ZhbGxiYWNr
T2JqZWN0SW1wPihleGVjKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgIGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIF9pdGVtOyB9CisgICAgY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2l0ZW07IH0KIAogICAgIHN0YXRpYyBPYmplY3RQcm90
b3R5cGUqIGNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIHsKQEAgLTEyMSw3ICsxMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgotICAgIE9iamNGYWxs
YmFja09iamVjdEltcChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE9iamNJbnN0YW5jZSos
IGNvbnN0IFVTdHJpbmcmIHByb3BlcnR5TmFtZSk7CisgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1w
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqY0luc3RhbmNlKiwgY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0b0Jvb2xl
YW4oRXhlY1N0YXRlKikgY29uc3Q7IC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBpcyBicm9rZW4g
YmVjYXVzZSBub25lIG9mIHRoZSBzdXBlcmNsYXNzZXMgYXJlIG1hcmtlZCB2aXJ0dWFsLiBXZSBu
ZWVkIHRvIHNvbHZlIHRoaXMgaW4gdGhlIGxvbmdlciB0ZXJtLgogCiAgICAgUmVmUHRyPE9iamNJ
bnN0YW5jZT4gX2luc3RhbmNlOwotICAgIFVTdHJpbmcgX2l0ZW07CisgICAgU3RyaW5nIG1faXRl
bTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMzM1NjY4ZWM2MzVhZjE3NTc2MzkxYzE1YjEzYmY2
M2VmYTQ5MzgxYS4uZGIzZjk4ZTY1YjFlMzM3MjdiODYzZmEzOWQzZDVjNjJlNTNiOTQ4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMTkwLDEwICsx
OTAsMTAgQEAgdW5zaWduZWQgaW50IE9iamNBcnJheTo6Z2V0TGVuZ3RoKCkgY29uc3QKIAogY29u
c3QgQ2xhc3NJbmZvIE9iamNGYWxsYmFja09iamVjdEltcDo6c19pbmZvID0geyAiT2JqY0ZhbGxi
YWNrT2JqZWN0IiwgJkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShPYmpjRmFsbGJhY2tPYmplY3RJbXApIH07CiAKLU9iamNGYWxsYmFja09iamVjdElt
cDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBPYmpjSW5zdGFuY2UqIGksIGNvbnN0IFVTdHJpbmcmIHByb3Bl
cnR5TmFtZSkKK09iamNGYWxsYmFja09iamVjdEltcDo6T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBPYmpjSW5z
dGFuY2UqIGksIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIDogSlNOb25GaW5hbE9i
amVjdChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKQogICAgICwgX2luc3Rh
bmNlKGkpCi0gICAgLCBfaXRlbShwcm9wZXJ0eU5hbWUpCisgICAgLCBtX2l0ZW0ocHJvcGVydHlO
YW1lKQogewogfQogCkBAIC0yNDcsOCArMjQ3LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
aWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRl
ZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpj
Q2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+
Z2V0Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChh
ZG9wdFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tl
VW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7Ci0gICAgICAg
IGNvbnN0IFVTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNr
T2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgbmFtZUlkZW50aWZpZXIuY2hhcmFjdGVycygpLCBuYW1lSWRlbnRpZmllci5sZW5n
dGgoKSkpOworICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nh
c3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUo
KTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0Q0YsIG5hbWVJZGVu
dGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2
YVNjcmlwdE5hbWUobmFtZS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+
aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CiAgICAgfQpAQCAt
Mjc2LDcgKzI3Niw3IEBAIGJvb2wgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0
eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiBKU1ZhbHVlIE9iamNGYWxsYmFj
a09iamVjdEltcDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkKIHsKICAgICBjb25zdCBPYmpjRmFsbGJh
Y2tPYmplY3RJbXAqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wKj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+X2luc3RhbmNlLT5nZXRWYWx1
ZU9mVW5kZWZpbmVkRmllbGQoZXhlYywgSWRlbnRpZmllcihleGVjLCB0aGlzT2JqZWN0LT5faXRl
bSkpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5faW5zdGFuY2UtPmdldFZhbHVlT2ZVbmRlZmlu
ZWRGaWVsZChleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHRoaXNPYmplY3QtPm1faXRlbSkpOwogfQog
CiBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1t
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCmluZGV4IGI2MmUz
ZGY2MDgwZmFjZTY3ZmYxNWY5MTIwOGU1Mzk5NzA4ZTgyMGEuLmU4NjAyNDc3YWU2MTQzNWM4ZDMy
NjNmMWJlYThhNTk2ZDMwYTY2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfdXRpbGl0eS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3V0aWxpdHkubW0KQEAgLTE0NywxNCArMTQ3LDcgQEAgT2JqY1ZhbHVlIGNvbnZlcnRWYWx1ZVRv
T2JqY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgT2JqY1ZhbHVlVHlwZQog
SlNWYWx1ZSBjb252ZXJ0TlNTdHJpbmdUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIE5TU3RyaW5n
ICpuc3N0cmluZykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAKLSAgICB1
bmljaGFyICpjaGFyczsKLSAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoID0gW25zc3RyaW5nIGxlbmd0
aF07Ci0gICAgY2hhcnMgPSAodW5pY2hhciAqKW1hbGxvYyhzaXplb2YodW5pY2hhcikqbGVuZ3Ro
KTsKLSAgICBbbnNzdHJpbmcgZ2V0Q2hhcmFjdGVyczpjaGFyc107Ci0gICAgVVN0cmluZyB1KChj
b25zdCBVQ2hhciopY2hhcnMsIGxlbmd0aCk7Ci0gICAgSlNWYWx1ZSBhVmFsdWUgPSBqc1N0cmlu
ZyhleGVjLCB1KTsKLSAgICBmcmVlKCh2b2lkICopY2hhcnMpOworICAgIEpTVmFsdWUgYVZhbHVl
ID0ganNTdHJpbmcoZXhlYywgU3RyaW5nKG5zc3RyaW5nKSk7CiAgICAgcmV0dXJuIGFWYWx1ZTsK
IH0KIApAQCAtMzExLDExICszMDQsNyBAQCBPYmpjVmFsdWVUeXBlIG9iamNWYWx1ZVR5cGVGb3JU
eXBlKGNvbnN0IGNoYXIgKnR5cGUpCiBKU09iamVjdCAqdGhyb3dFcnJvcihFeGVjU3RhdGUgKmV4
ZWMsIE5TU3RyaW5nICptZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKLSAgICBzaXpl
X3QgbGVuZ3RoID0gW21lc3NhZ2UgbGVuZ3RoXTsKLSAgICB1bmljaGFyICpidWZmZXIgPSBuZXcg
dW5pY2hhcltsZW5ndGhdOwotICAgIFttZXNzYWdlIGdldENoYXJhY3RlcnM6YnVmZmVyXTsKLSAg
ICBKU09iamVjdCAqZXJyb3IgPSBKU0M6OnRocm93RXJyb3IoZXhlYywgSlNDOjpjcmVhdGVFcnJv
cihleGVjLCBVU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKSkpOwotICAgIGRlbGV0ZSBbXSBidWZmZXI7
CisgICAgSlNPYmplY3QgKmVycm9yID0gSlNDOjp0aHJvd0Vycm9yKGV4ZWMsIEpTQzo6Y3JlYXRl
RXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNwcAppbmRleCBlMjQ2NzZhMjlkNjdjNDQ4NzUy
YjQ2OGE5NzEzMmM2YjA3ZGI2ODZmLi43NjE3ODcxZjNmM2UwZWUzYzFhODdkOTg1MmMwMzk4NjQ1
MDk5Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgSlNWYWx1ZSBRdENsYXNzOjpmYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIElu
c3RhbmNlKiBpbnN0LCBQcm9wZXJ0eU5hbWUgaWQKICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9
IHRvUmVmKGV4ZWMpOwogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKIAotICAgIFVTdHJp
bmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5nIHVzdHJpbmco
aWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOwogICAgIGNvbnN0IFFCeXRlQXJyYXkgbmFtZSA9IFFT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHVzdHJpbmcuY2hhcmFjdGVycygp
KSwgdXN0cmluZy5sZW5ndGgoKSkudG9MYXRpbjEoKTsKIAogICAgIC8vIEZpcnN0IHNlZSBpZiB3
ZSBoYXZlIGEgY2FjaGUgaGl0CkBAIC0xMzYsNyArMTM2LDcgQEAgRmllbGQqIFF0Q2xhc3M6OmZp
ZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29u
c3QKICAgICBRdEluc3RhbmNlKiBxdGluc3QgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5z
dGFuY2UpOwogCiAgICAgUU9iamVjdCogb2JqID0gcXRpbnN0LT5nZXRPYmplY3QoKTsKLSAgICBV
U3RyaW5nIHVzdHJpbmcoaWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyB1c3Ry
aW5nKGlkZW50aWZpZXIucHVibGljTmFtZSgpKTsKICAgICBjb25zdCBRU3RyaW5nIG5hbWUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHVzdHJpbmcuY2hhcmFjdGVycygpKSwgdXN0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgY29uc3QgUUJ5dGVBcnJheSBhc2NpaSA9IG5hbWUudG9MYXRpbjEo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAKaW5kZXggMDQxMjUz
MmE4NWNkNjIwM2VlNGE3OTM0ZmE1ZjA3OGE2MTE2ZDY1Ny4uM2YwNjkxNDJhZTQxZjUwNDFiYjI3
MWZhNTA2MDFmNTRhOWNhMmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFu
Y2UuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBRdEluc3RhbmNlOjpnZXRQcm9wZXJ0eU5h
bWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIGFycmF5KQogICAgICAgICAg
ICAgUU1ldGFNZXRob2QgbWV0aG9kID0gbWV0YS0+bWV0aG9kKGkpOwogICAgICAgICAgICAgaWYg
KG1ldGhvZC5hY2Nlc3MoKSAhPSBRTWV0YU1ldGhvZDo6UHJpdmF0ZSkgewogICAgICAgICAgICAg
ICAgIFFCeXRlQXJyYXkgc2lnID0gbWV0aG9kLm1ldGhvZFNpZ25hdHVyZSgpOwotICAgICAgICAg
ICAgICAgIGFycmF5LmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoc2lnLmNvbnN0RGF0YSgp
LCBzaWcubGVuZ3RoKCkpKSk7CisgICAgICAgICAgICAgICAgYXJyYXkuYWRkKElkZW50aWZpZXIo
ZXhlYywgU3RyaW5nKHNpZy5jb25zdERhdGEoKSwgc2lnLmxlbmd0aCgpKSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3Bp
eG1hcHJ1bnRpbWUuY3BwCmluZGV4IGEyZGFhZGE4MzFlMGJjNGU3ZDg3NWQzMDAxMDllOTQ5ODAz
ZWIyMjcuLjYyMGNjNDNlM2FmZmU5ODg1MWQyZjU0MzcyZGFiNmM1Njc4NGVjODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKQEAgLTE3MSw4ICsx
NzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFFCdWZmZXIgYnVmZmVyKCZieXRlQXJyYXkpOwogICAg
ICAgICBpbnN0YW5jZS0+dG9JbWFnZSgpLnNhdmUoJmJ1ZmZlciwgIlBORyIpOwogICAgICAgICBj
b25zdCBRU3RyaW5nIGVuY29kZWRTdHJpbmcgPSBRTGF0aW4xU3RyaW5nKCJkYXRhOmltYWdlL3Bu
ZztiYXNlNjQsIikgKyBRTGF0aW4xU3RyaW5nKGJ5dGVBcnJheS50b0Jhc2U2NCgpKTsKLSAgICAg
ICAgY29uc3QgVVN0cmluZyB1c3RyaW5nKChVQ2hhciopZW5jb2RlZFN0cmluZy51dGYxNigpLCBl
bmNvZGVkU3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHVz
dHJpbmcpOworICAgICAgICBjb25zdCBTdHJpbmcgdXN0cmluZygoVUNoYXIqKWVuY29kZWRTdHJp
bmcudXRmMTYoKSwgZW5jb2RlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBKU0M6
OmpzU3RyaW5nKGV4ZWMsIHVzdHJpbmcpOwogICAgIH0KIH07CiAKQEAgLTI1OSw3ICsyNTksNyBA
QCBKU1ZhbHVlIFF0UGl4bWFwSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMs
IFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZQogTWV0aG9kTGlzdCBRdFBpeG1hcENsYXNzOjptZXRo
b2RzTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNlKikgY29uc3QKIHsKICAg
ICBNZXRob2RMaXN0IG1ldGhvZHM7Ci0gICAgVVN0cmluZyB1c3RyaW5nKGlkZW50aWZpZXIucHVi
bGljTmFtZSgpKTsKKyAgICBTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7
CiAgICAgaWYgKHVzdHJpbmcgPT0gUXRQaXhtYXBUb0RhdGFVcmxNZXRob2Q6Om5hbWUoKSkKICAg
ICAgICAgbWV0aG9kcy5hcHBlbmQoJnF0X3BpeG1hcF9tZXRhRGF0YS50b0RhdGFVcmxNZXRob2Qp
OwogICAgIGVsc2UgaWYgKHVzdHJpbmcgPT0gUXRQaXhtYXBUb0ltYWdlRGF0YU1ldGhvZDo6bmFt
ZSgpKQpAQCAtMjczLDcgKzI3Myw3IEBAIE1ldGhvZExpc3QgUXRQaXhtYXBDbGFzczo6bWV0aG9k
c05hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5jZSopIGNvbnN0CiAKIEZpZWxk
KiBRdFBpeG1hcENsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0
YW5jZSopIGNvbnN0CiB7Ci0gICAgVVN0cmluZyB1c3RyaW5nKGlkZW50aWZpZXIucHVibGljTmFt
ZSgpKTsKKyAgICBTdHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7CiAgICAg
aWYgKHVzdHJpbmcgPT0gUXRQaXhtYXBXaWR0aEZpZWxkOjpuYW1lKCkpCiAgICAgICAgIHJldHVy
biAmcXRfcGl4bWFwX21ldGFEYXRhLndpZHRoRmllbGQ7CiAgICAgaWYgKHVzdHJpbmcgPT0gUXRQ
aXhtYXBIZWlnaHRGaWVsZDo6bmFtZSgpKQpAQCAtMjgzLDEyICsyODMsMTIgQEAgRmllbGQqIFF0
UGl4bWFwQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIGlkZW50aWZpZXIsIEluc3RhbmNl
KikgY29uc3QKIAogdm9pZCBRdFBpeG1hcEluc3RhbmNlOjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNT
dGF0ZSpleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyKQogewotICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwVG9EYXRhVXJsTWV0aG9kOjpuYW1lKCkpKSk7Ci0g
ICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFVTdHJpbmcoUXRQaXhtYXBUb0ltYWdlRGF0YU1l
dGhvZDo6bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0
UGl4bWFwQXNzaWduVG9FbGVtZW50TWV0aG9kOjpuYW1lKCkpKSk7Ci0gICAgYXJyLmFkZChJZGVu
dGlmaWVyKGV4ZWMsIFVTdHJpbmcoUXRQaXhtYXBUb1N0cmluZ01ldGhvZDo6bmFtZSgpKSkpOwot
ICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFwV2lkdGhGaWVsZDo6
bmFtZSgpKSkpOwotICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBVU3RyaW5nKFF0UGl4bWFw
SGVpZ2h0RmllbGQ6Om5hbWUoKSkpKTsKKyAgICBhcnIuYWRkKElkZW50aWZpZXIoZXhlYywgU3Ry
aW5nKFF0UGl4bWFwVG9EYXRhVXJsTWV0aG9kOjpuYW1lKCkpKSk7CisgICAgYXJyLmFkZChJZGVu
dGlmaWVyKGV4ZWMsIFN0cmluZyhRdFBpeG1hcFRvSW1hZ2VEYXRhTWV0aG9kOjpuYW1lKCkpKSk7
CisgICAgYXJyLmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhRdFBpeG1hcEFzc2lnblRvRWxl
bWVudE1ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQoSWRlbnRpZmllcihleGVjLCBTdHJp
bmcoUXRQaXhtYXBUb1N0cmluZ01ldGhvZDo6bmFtZSgpKSkpOworICAgIGFyci5hZGQoSWRlbnRp
ZmllcihleGVjLCBTdHJpbmcoUXRQaXhtYXBXaWR0aEZpZWxkOjpuYW1lKCkpKSk7CisgICAgYXJy
LmFkZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhRdFBpeG1hcEhlaWdodEZpZWxkOjpuYW1lKCkp
KSk7CiB9CiAKIEpTVmFsdWUgUXRQaXhtYXBJbnN0YW5jZTo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwdHlwZSkgY29uc3QKQEAgLTMwOCw4ICsz
MDgsOCBAQCBKU1ZhbHVlIFF0UGl4bWFwSW5zdGFuY2U6OmRlZmF1bHRWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcAogSlNWYWx1ZSBRdFBpeG1hcEluc3RhbmNl
Ojp2YWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBjb25zdCBRU3RyaW5nIHN0
cmluZ1ZhbHVlID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiW1F0IE5hdGl2ZSBQaXhtYXAgJTEsJTJd
IikuYXJnKHdpZHRoKCkpLmFyZyhoZWlnaHQoKSk7Ci0gICAgVVN0cmluZyB1c3RyaW5nKChVQ2hh
ciopc3RyaW5nVmFsdWUudXRmMTYoKSwgc3RyaW5nVmFsdWUubGVuZ3RoKCkpOwotICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCB1c3RyaW5nKTsKKyAgICBTdHJpbmcgdXN0cmluZygoVUNoYXIqKXN0
cmluZ1ZhbHVlLnV0ZjE2KCksIHN0cmluZ1ZhbHVlLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gSlND
Ojpqc1N0cmluZyhleGVjLCB1c3RyaW5nKTsKIH0KIAogUXRQaXhtYXBJbnN0YW5jZTo6UXRQaXht
YXBJbnN0YW5jZShQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmosIGNvbnN0IFFWYXJpYW50
JiBkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCmluZGV4IDBkYjVhODcz
YzFmMTJkZWZjMTgwNWU4ZDRhMDMzOGY1ZTUwOTUzZWIuLjk4OTIxMzU0Yzc1MjBlMGM3ZDY2Yjg1
YWMwNTcxMTIwOTIyMmU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9x
dF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5j
cHAKQEAgLTk3LDcgKzk3LDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBWYXJpYW50ID0gMCwKICAg
ICBOdW1iZXIsCiAgICAgQm9vbGVhbiwKLSAgICBTdHJpbmcsCisgICAgUlRTdHJpbmcsCiAgICAg
RGF0ZSwKICAgICBBcnJheSwKICAgICBRT2JqLApAQCAtMTEwLDcgKzExMCw3IEBAIHR5cGVkZWYg
ZW51bSB7CiAjaWYgZGVmaW5lZChRVFdLX1JVTlRJTUVfQ09OVkVSU0lPTl9ERUJVRykgfHwgZGVm
aW5lZChRVFdLX1JVTlRJTUVfTUFUQ0hfREVCVUcpCiBRRGVidWcgb3BlcmF0b3I8PChRRGVidWcg
ZGJnLCBjb25zdCBKU1JlYWxUeXBlICZjKQogewotICAgICBjb25zdCBjaGFyICptYXBbXSA9IHsg
IlZhcmlhbnQiLCAiTnVtYmVyIiwgIkJvb2xlYW4iLCAiU3RyaW5nIiwgIkRhdGUiLAorICAgICBj
b25zdCBjaGFyICptYXBbXSA9IHsgIlZhcmlhbnQiLCAiTnVtYmVyIiwgIkJvb2xlYW4iLCAiUlRT
dHJpbmciLCAiRGF0ZSIsCiAgICAgICAgICAiQXJyYXkiLCAiUlRPYmplY3QiLCAiT2JqZWN0Iiwg
Ik51bGwiLCAiUlRBcnJheSJ9OwogCiAgICAgIGRiZy5ub3NwYWNlKCkgPDwgIkpTVHlwZSgiIDw8
ICgoaW50KWMpIDw8ICIsICIgPDwgIG1hcFtjXSA8PCAiKSI7CkBAIC0xNTYsNyArMTU2LDcgQEAg
c3RhdGljIEpTUmVhbFR5cGUgdmFsdWVSZWFsVHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsKQogICAgIGlmICh2YWwuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIE51bWJlcjsKICAg
ICBlbHNlIGlmICh2YWwuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZzsKKyAgICAg
ICAgcmV0dXJuIFJUU3RyaW5nOwogICAgIGVsc2UgaWYgKHZhbC5pc0Jvb2xlYW4oKSkKICAgICAg
ICAgcmV0dXJuIEJvb2xlYW47CiAgICAgZWxzZSBpZiAodmFsLmlzTnVsbCgpKQpAQCAtMTc2LDcg
KzE3Niw3IEBAIHN0YXRpYyBKU1JlYWxUeXBlIHZhbHVlUmVhbFR5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbCkKICAgICAgICAgcmV0dXJuIE9iamVjdDsKICAgICB9CiAKLSAgICByZXR1
cm4gU3RyaW5nOyAvLyBJIGRvbid0IGtub3cuCisgICAgcmV0dXJuIFJUU3RyaW5nOyAvLyBJIGRv
bid0IGtub3cuCiB9CiAKIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgUU1ldGFUeXBlOjpUeXBlLCBpbnQqLCBIYXNoU2V0PEpTT2JqZWN0Kj4qLCBp
bnQpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBRVmFyaWFudE1hcCBjb252ZXJ0VmFsdWVU
b1FWYXJpYW50TWFwKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFFWYXJpYW50IHYgPSBjb252ZXJ0VmFsdWVUb1FW
YXJpYW50KGV4ZWMsIHZhbCwgUU1ldGFUeXBlOjpWb2lkLCAmb2JqZGlzdCwgdmlzaXRlZE9iamVj
dHMsIHJlY3Vyc2lvbkxpbWl0KTsKICAgICAgICAgICAgICAgICBpZiAob2JqZGlzdCA+PSAwKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9ICgqaXQpLnVzdHJpbmcoKTsK
KyAgICAgICAgICAgICAgICAgICAgV1RGOjpTdHJpbmcgdXN0cmluZyA9ICgqaXQpLnVzdHJpbmco
KTsKICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBpZCA9IFFTdHJpbmcoKGNvbnN0IFFDaGFy
Kil1c3RyaW5nLmltcGwoKS0+Y2hhcmFjdGVycygpLCB1c3RyaW5nLmxlbmd0aCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0Lmluc2VydChpZCwgdik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMjQ2LDcgKzI0Niw3IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgIGNh
c2UgQm9vbGVhbjoKICAgICAgICAgICAgICAgICBoaW50ID0gUU1ldGFUeXBlOjpCb29sOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdHJpbmc6CisgICAgICAgICAg
ICBjYXNlIFJUU3RyaW5nOgogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBo
aW50ID0gUU1ldGFUeXBlOjpRU3RyaW5nOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzU0
LDkgKzM1NCw5IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSA2OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBVU3RyaW5nIHN0ciA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKKyAgICAgICAgICAgICAgICBXVEY6OlN0cmluZyBzdHIgPSB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQoUUNoYXIo
c3RyLmxlbmd0aCgpID8gKihjb25zdCB1c2hvcnQqKXN0ci5pbXBsKCktPmNoYXJhY3RlcnMoKSA6
IDApKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBTdHJpbmcpCisgICAgICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gUlRTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSAzOwog
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDEwOwpAQCAt
MzY5LDkgKzM2OSw5IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICAg
ICAgKmRpc3RhbmNlID0gMTsKICAgICAgICAgICAgICAgICByZXR1cm4gUVN0cmluZygpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgV1RGOjpTdHJp
bmcgdXN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
ICAgICAgICByZXQgPSBRVmFyaWFudChRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBs
KCktPmNoYXJhY3RlcnMoKSwgdXN0cmluZy5sZW5ndGgoKSkpOwotICAgICAgICAgICAgICAgIGlm
ICh0eXBlID09IFN0cmluZykKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBSVFN0cmluZykK
ICAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDA7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICBkaXN0ID0gMTA7CkBAIC00NTAsNyArNDUwLDcgQEAgUVZhcmlhbnQg
Y29udmVydFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFFN
ZXRhVHlwZTo6VHlwZQogICAgICAgICAgICAgICAgIGludCBsZW4gPSBydGFycmF5LT5nZXRMZW5n
dGgoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsID0gcnRhcnJheS0+Z2V0Q29uY3JldGVBcnJh
eSgpLT52YWx1ZUF0KGV4ZWMsIGkpOwotICAgICAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJp
bmcgPSB2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgICAgICAgICAgICAgICAg
ICBXVEY6OlN0cmluZyB1c3RyaW5nID0gdmFsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
ICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBxc3RyaW5nID0gUVN0cmluZygoY29uc3QgUUNo
YXIqKXVzdHJpbmcuaW1wbCgpLT5jaGFyYWN0ZXJzKCksIHVzdHJpbmcubGVuZ3RoKCkpOwogCiAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXN0cmluZyk7CkBAIC00NjQsNyArNDY0
LDcgQEAgUVZhcmlhbnQgY29udmVydFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUsIFFNZXRhVHlwZTo6VHlwZQogICAgICAgICAgICAgICAgIGludCBsZW4gPSBh
cnJheS0+bGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47
ICsraSkgewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbCA9IGFycmF5LT5nZXQoZXhl
YywgaSk7Ci0gICAgICAgICAgICAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9IHZhbC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIFdURjo6U3RyaW5nIHVz
dHJpbmcgPSB2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAgICAgICAgICAg
ICAgICBRU3RyaW5nIHFzdHJpbmcgPSBRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBs
KCktPmNoYXJhY3RlcnMoKSwgdXN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChxc3RyaW5nKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBRVmFyaWFudCBj
b252ZXJ0VmFsdWVUb1FWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUU1l
dGFUeXBlOjpUeXBlCiAgICAgICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQocmVzdWx0KTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gTWFrZSBhIHNpbmdsZSBsZW5n
dGggYXJyYXkKLSAgICAgICAgICAgICAgICBVU3RyaW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgICAgICAgICAgICAgV1RGOjpTdHJpbmcgdXN0cmlu
ZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICBR
U3RyaW5nIHFzdHJpbmcgPSBRU3RyaW5nKChjb25zdCBRQ2hhciopdXN0cmluZy5pbXBsKCktPmNo
YXJhY3RlcnMoKSwgdXN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgUVN0cmluZ0xp
c3QgcmVzdWx0OwogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXN0cmluZyk7CkBAIC00
ODksOSArNDg5LDkgQEAgUVZhcmlhbnQgY29udmVydFZhbHVlVG9RVmFyaWFudChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFFNZXRhVHlwZTo6VHlwZQogICAgICAgICAgICAgICAgIHJl
dCA9IFFWYXJpYW50KFFCeXRlQXJyYXkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYXJy
LT5kYXRhKCkpLCBhcnItPmxlbmd0aCgpKSk7CiAgICAgICAgICAgICAgICAgZGlzdCA9IDA7CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFVTdHJpbmcgdXN0cmluZyA9IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAgICAgICBXVEY6OlN0
cmluZyB1c3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgICAg
ICAgICAgICAgIHJldCA9IFFWYXJpYW50KFFTdHJpbmcoKGNvbnN0IFFDaGFyKil1c3RyaW5nLmlt
cGwoKS0+Y2hhcmFjdGVycygpLCB1c3RyaW5nLmxlbmd0aCgpKS50b0xhdGluMSgpKTsKLSAgICAg
ICAgICAgICAgICBpZiAodHlwZSA9PSBTdHJpbmcpCisgICAgICAgICAgICAgICAgaWYgKHR5cGUg
PT0gUlRTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgIGRpc3QgPSA1OwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDEwOwpAQCAtNTMxLDggKzUzMSw4
IEBAIFFWYXJpYW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUKICAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDEw
OwogICAgICAgICAgICAgICAgIH0KICNpZm5kZWYgUVRfTk9fREFURVNUUklORwotICAgICAgICAg
ICAgfSBlbHNlIGlmICh0eXBlID09IFN0cmluZykgewotICAgICAgICAgICAgICAgIFVTdHJpbmcg
dXN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAodHlwZSA9PSBSVFN0cmluZykgeworICAgICAgICAgICAgICAgIFdURjo6U3Ry
aW5nIHVzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAg
ICAgICAgICAgUVN0cmluZyBxc3RyaW5nID0gUVN0cmluZygoY29uc3QgUUNoYXIqKXVzdHJpbmcu
aW1wbCgpLT5jaGFyYWN0ZXJzKCksIHVzdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgICAgICAg
ICAgaWYgKGhpbnQgPT0gUU1ldGFUeXBlOjpRRGF0ZVRpbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwCmluZGV4IDRkYzRlNmQ3ZTc0M2QwMmFjNmM3YzAyNTdhMTk2
ODU3Njc0M2E0YTcuLjlmZGI2NGRmNzNjZTBjOGVhNzQ0Y2M3OTQ4MTY1YzM2NTVhYmI1NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcApAQCAtNTUsNyArNTUsNyBA
QCB2b2lkIFJ1bnRpbWVNZXRob2Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogICAgIHN0YXRpY19j
YXN0PFJ1bnRpbWVNZXRob2QqPihjZWxsKS0+UnVudGltZU1ldGhvZDo6flJ1bnRpbWVNZXRob2Qo
KTsKIH0KIAotdm9pZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIGlkZW50KQordm9pZCBSdW50aW1lTWV0aG9kOjpm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgaWRl
bnQpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgaWRlbnQpOwogICAg
IEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21l
dGhvZC5oCmluZGV4IGY2Mjk1NzhlZmYxZWM3Yzk2ODM5ZWNhMGQ0ZmIzOTcyNTFjNTNmZGYuLjc0
ODE2MDVkNDQxNThjOTgwOTIwMzIxZDMxMTBhNDk0NGZiYTVlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBzdGF0aWMgUnVudGltZU1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RM
aXN0JiBtZXRob2RMaXN0KQorICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlz
dCkKICAgICB7CiAgICAgICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0aG9k
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2RMaXN0KTsKICAgICAgICAgbWV0aG9kLT5m
aW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgQmluZGluZ3M6Ok1ldGhvZExpc3QmKTsKLSAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IElu
dGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvdGVzdGJpbmRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0Ymlu
ZGluZ3MuY3BwCmluZGV4IGZlOWZjMWIwNGFkYTEyMDNhNzhhOWJjOGU1MGE0MjEzNjcyZTkwOTAu
LmI0M2I3NWQ1NmZjYzEzMzc3MDVjYjdlZjk4MDlhZDZmMjQwYzc2OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzo6QmluZGluZ3M7CiAKIGNsYXNzIEdsb2JhbEltcCA6IHB1YmxpYyBPYmplY3RJbXAg
ewogcHVibGljOgotICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4g
Imdsb2JhbCI7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVy
biAiZ2xvYmFsIjsgfQogfTsKIAogI2RlZmluZSBCdWZmZXJTaXplIDIwMDAwMApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS90ZXN0YmluZGluZ3MubW0KaW5kZXggZWYzYmM0ZTFlMmQxYThlOTlkMGQwYzIwNDg3
MTU5MDA4YmFkZWExYi4uZTUwZjE2YWI3YjhlNGM0NDFhOWMwMDk2M2JiOGVjMjJhNTEwNzUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7CiAKIGNsYXNzIEdsb2JhbEltcCA6IHB1Ymxp
YyBPYmplY3RJbXAgewogcHVibGljOgotICB2aXJ0dWFsIFVTdHJpbmcgY2xhc3NOYW1lKCkgY29u
c3QgeyByZXR1cm4gImdsb2JhbCI7IH0KKyAgdmlydHVhbCBTdHJpbmcgY2xhc3NOYW1lKCkgY29u
c3QgeyByZXR1cm4gImdsb2JhbCI7IH0KIH07CiAKICNkZWZpbmUgQnVmZmVyU2l6ZSAyMDAwMDAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0cXRiaW5kaW5ncy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCmluZGV4IGE0ZjRkNWExNGMx
MDViZmQyMzk4MTQxNmZjYzQ1YzExNTVmZGY1MTkuLjdkM2Q0MTZhNWY1YjFlYWRhOTZjODgxYjM1
ZmMzNGYzZWMyMDM1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0cXRi
aW5kaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RxdGJpbmRpbmdzLmNw
cApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBHbG9iYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICBz
dGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKSB7IHJldHVybiAiZ2xvYmFs
IjsgfQorICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KikgeyByZXR1
cm4gImdsb2JhbCI7IH0KIH07CiAKIHN0YXRpYyBjaGFyIGNvZGVbXSA9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwCmluZGV4IDA1NGRhMzQ4ZmU2
M2FlOTY2MWQzMDZmOGIyMTY0MzRjMGY2OWI2NmIuLmEzZjgzYzJkNjg0YjQ4NTg5ODBkMzEwZDM0
NWQzMzYyMWY3MDM5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50
U2VhcmNoVXRpbHMuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kTWFn
aWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIFN0cmluZyBwYXR0ZXJuU3RyaW5nID0gIi8vQFtcMDQwXHRdIiArIG5hbWUgKyAiPVtcMDQw
XHRdKihbXlxcc1wnXCJdKilbXDA0MFx0XSokIjsKICAgICBjb25zdCBjaGFyKiBlcnJvciA9IDA7
Ci0gICAgSlNDOjpZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKEpTQzo6VVN0cmluZyhwYXR0ZXJu
U3RyaW5nLmltcGwoKSksIGZhbHNlLCB0cnVlLCAmZXJyb3IpOworICAgIEpTQzo6WWFycjo6WWFy
clBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5nLCBmYWxzZSwgdHJ1ZSwgJmVycm9yKTsKICAg
ICBBU1NFUlQoIWVycm9yKTsKICAgICBCdW1wUG9pbnRlckFsbG9jYXRvciByZWdleEFsbG9jYXRv
cjsKICAgICBPd25QdHI8SlNDOjpZYXJyOjpCeXRlY29kZVBhdHRlcm4+IGJ5dGVjb2RlUGF0dGVy
biA9IEpTQzo6WWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnJlZ2V4QWxsb2NhdG9yKTsKQEAg
LTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRNYWdpY0NvbW1lbnQoY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgQVNTRVJUKHBhdHRlcm4ubV9u
dW1TdWJwYXR0ZXJucyA9PSAxKTsKICAgICBWZWN0b3I8aW50LCA0PiBtYXRjaGVzOwogICAgIG1h
dGNoZXMucmVzaXplKDQpOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IEpTQzo6WWFycjo6aW50ZXJw
cmV0KGJ5dGVjb2RlUGF0dGVybi5nZXQoKSwgSlNDOjpVU3RyaW5nKGNvbnRlbnQuaW1wbCgpKSwg
MCwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCo+KG1hdGNoZXMuZGF0YSgpKSk7CisgICAgdW5z
aWduZWQgcmVzdWx0ID0gSlNDOjpZYXJyOjppbnRlcnByZXQoYnl0ZWNvZGVQYXR0ZXJuLmdldCgp
LCBjb250ZW50LCAwLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obWF0Y2hlcy5kYXRhKCkp
KTsKICAgICBpZiAocmVzdWx0ID09IEpTQzo6WWFycjo6b2Zmc2V0Tm9NYXRjaCkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIEFTU0VSVChtYXRjaGVzWzJdID4gMCAmJiBtYXRjaGVzWzNd
ID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKaW5kZXggZmJmOWY4MjM3ZmFhMTYwZWIwZGE2OWI2
NDZhM2Q4M2E5YzJmNGQwNC4uYTM4MGVkZjg4MjM5NzRkODZlMDc3YTUzMGJjMWY0MDY0NmMwNGI0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaApAQCAtNDgsMTAgKzQ4LDYgQEAgUVRfRU5EX05BTUVT
UEFDRQogI2luY2x1ZGUgIktVUkxHb29nbGVQcml2YXRlLmgiCiAjZW5kaWYKIAotI2lmIFVTRShK
U0MpCi0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBUZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwCmluZGV4IGY3NGY5NTdkY2QzOTM0NmJl
MmE1YjVjMzZiOTVjODQ0ZjIzYTQ5NjQuLjIzNjk1OTA4NTU2ZTk1MjE3ZTVlNjk2OWQzNDkzOGU4
YWRiOWMyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxh
ckV4cHJlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxh
ckV4cHJlc3Npb24uY3BwCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICBQYXNzT3du
UHRyPEpTQzo6WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBjb21waWxlKGNvbnN0IFN0cmluZyYgcGF0
dGVyblN0cmluZywgVGV4dENhc2VTZW5zaXRpdml0eSBjYXNlU2Vuc2l0aXZpdHkpCiAgICAgewot
ICAgICAgICBKU0M6OllhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4oSlNDOjpVU3RyaW5nKHBhdHRl
cm5TdHJpbmcuaW1wbCgpKSwgKGNhc2VTZW5zaXRpdml0eSA9PSBUZXh0Q2FzZUluc2Vuc2l0aXZl
KSwgZmFsc2UsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKKyAgICAgICAgSlNDOjpZYXJyOjpZYXJy
UGF0dGVybiBwYXR0ZXJuKHBhdHRlcm5TdHJpbmcsIChjYXNlU2Vuc2l0aXZpdHkgPT0gVGV4dENh
c2VJbnNlbnNpdGl2ZSksIGZhbHNlLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiAgICAgICAgIGlm
IChtX2NvbnN0cnVjdGlvbkVycm9yKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlJlZ3VsYXJF
eHByZXNzaW9uOiBZQVJSIGNvbXBpbGUgZmFpbGVkIHdpdGggJyVzJyIsIG1fY29uc3RydWN0aW9u
RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTIsNyArMTEyLDcgQEAg
aW50IFJlZ3VsYXJFeHByZXNzaW9uOjptYXRjaChjb25zdCBTdHJpbmcmIHN0ciwgaW50IHN0YXJ0
RnJvbSwgaW50KiBtYXRjaExlbmd0aCkKIAogICAgIHVuc2lnbmVkIHJlc3VsdDsKICAgICBpZiAo
c3RyLmxlbmd0aCgpIDw9IElOVF9NQVgpCi0gICAgICAgIHJlc3VsdCA9IEpTQzo6WWFycjo6aW50
ZXJwcmV0KGQtPm1fcmVnRXhwQnl0ZUNvZGUuZ2V0KCksIEpTQzo6VVN0cmluZyhzdHIuaW1wbCgp
KSwgc3RhcnRGcm9tLCBvZmZzZXRWZWN0b3IpOworICAgICAgICByZXN1bHQgPSBKU0M6OllhcnI6
OmludGVycHJldChkLT5tX3JlZ0V4cEJ5dGVDb2RlLmdldCgpLCBzdHIsIHN0YXJ0RnJvbSwgb2Zm
c2V0VmVjdG9yKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gVGhpcyBjb2RlIGNhbid0IGhhbmRs
ZSB1bnNpZ25lZCBvZmZzZXRzLiBMaW1pdCBvdXIgcHJvY2Vzc2luZyB0byBzdHJpbmdzIHdpdGgg
b2Zmc2V0cyB0aGF0IAogICAgICAgICAvLyBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgaW50cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcAppbmRleCA4NzJhYjdlYWMwMjNjMDBh
MzIwMzk4ODk0ZjNkOTg5ZTQ3NjJjZjBiLi5hNTc3ZWY1NDU1MGFhMTdiMjMwNWU3MjYzNDlmZjVj
OTIwNGE2Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCkBAIC04
NCwxNCArODQsNiBAQCBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgcykKICAg
ICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4ocy5jaGFyYWN0ZXJzKCksIHMubGVuZ3Ro
KCkpOwogfQogCi1CU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFVTdHJpbmcmIHMpCi17Ci0gICAgaWYg
KHMuaXNOdWxsKCkpCi0gICAgICAgIG1fYnN0ciA9IDA7Ci0gICAgZWxzZQotICAgICAgICBtX2Jz
dHIgPSBTeXNBbGxvY1N0cmluZ0xlbihzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSk7Ci19Ci0K
ICNpZiBVU0UoQ0YpCiBCU3RyaW5nOjpCU3RyaW5nKENGU3RyaW5nUmVmIGNmc3RyKQogICAgIDog
bV9ic3RyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCA5MjJkM2Uy
ZmI0NjA0MWFhN2M0MjZkNTkwZDcxNzUxN2M5NDE2ZGNiLi43MzczZWVkYWRmZjY5MTZlOTIwZjY5
MGQ5OWUyYzcyMzE3NzIzZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQlN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgK
QEAgLTM0LDEwICszNCw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0
cmluZ1JlZjsKIAogdHlwZWRlZiB3Y2hhcl90KiBCU1RSOwogCi1uYW1lc3BhY2UgSlNDIHsKLSAg
ICBjbGFzcyBVU3RyaW5nOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBL
VVJMOwpAQCAtNTAsNyArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEJTdHJp
bmcoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIEJTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJik7
CiAgICAgICAgIEJTdHJpbmcoY29uc3QgS1VSTCYpOwotICAgICAgICBCU3RyaW5nKGNvbnN0IEpT
Qzo6VVN0cmluZyYpOwogI2lmIFVTRShDRikKICAgICAgICAgQlN0cmluZyhDRlN0cmluZ1JlZik7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDBkNjg1N2Yy
NWM0Yzk4ODY0NmFiMTA4NTBiNDM1NzA3ZThiOTJhYWMuLmRkMjIwZDg3ODhiNWJjNWFjM2JiMGU2
NGM4NWMxY2RkNzdjMmFhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAibnBydW50
aW1lX2ltcGwuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoV0lORE9XUykgJiYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAjaW5jbHVkZSAiUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oIgpAQCAtODEs
NyArODIsNiBAQCB1c2luZyBKU0M6OkV4ZWNTdGF0ZTsKIHVzaW5nIEpTQzo6SlNMb2NrOwogdXNp
bmcgSlNDOjpKU09iamVjdDsKIHVzaW5nIEpTQzo6SlNWYWx1ZTsKLXVzaW5nIEpTQzo6VVN0cmlu
ZzsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0Jl
cnJ5LmNwcAppbmRleCAyY2M5NmQ1ZTIyMzJhNzQyZDM4MzJmZWEzN2RlMTMyNmU2MmM2MTg0Li5m
NTQ3OGYwOGM2NThkNzNkOWM4MzMxNDA0YTI2MGU3ZTJiOGMzZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJy
eS5jcHAKQEAgLTkwLDcgKzkwLDYgQEAgdXNpbmcgSlNDOjpFeGVjU3RhdGU7CiB1c2luZyBKU0M6
OkludGVycHJldGVyOwogdXNpbmcgSlNDOjpKU0xvY2s7CiB1c2luZyBKU0M6OkpTT2JqZWN0Owot
dXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNw
YWNlIFdURjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZp
ZXdHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAK
aW5kZXggNjg0NGVlY2M1OTZjNDNkNDc5MTUzYzc5ZTUzMmIyYTQ4NDBhNmYwOS4uNjJmOWY4ZDg0
MzkxN2Y2YWNiMTM5NDcwODJjMjY5M2VkMWI4MWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKQEAgLTgzLDcgKzgzLDYgQEAgdXNpbmcgSlNDOjpF
eGVjU3RhdGU7CiB1c2luZyBKU0M6OkludGVycHJldGVyOwogdXNpbmcgSlNDOjpKU0xvY2s7CiB1
c2luZyBKU0M6OkpTT2JqZWN0OwotdXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBzdGQ6Om1p
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KaW5kZXgg
Nzg1YTc0ZGYwZTRlM2ZkMDdlMDZkY2U2MjlmNTU3ZTNiMWFkYmFjMy4uNDJiYTZhNjQ1YWNhYmIw
ZWE5YWMxY2QzNGExNTFlODM1NmEyZmE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21h
Yy9QbHVnaW5WaWV3TWFjLm1tCkBAIC03MCw3ICs3MCw2IEBAIHVzaW5nIEpTQzo6SW50ZXJwcmV0
ZXI7CiB1c2luZyBKU0M6OkpTTG9jazsKIHVzaW5nIEpTQzo6SlNPYmplY3Q7CiB1c2luZyBKU0M6
OkpTVmFsdWU7Ci11c2luZyBKU0M6OlVTdHJpbmc7CiAKICNpZiBQTEFURk9STShRVCkKICNpbmNs
dWRlIDxRV2lkZ2V0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVn
aW5WaWV3UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5WaWV3UXQuY3Bw
CmluZGV4IDA0ZDcxMGVhMjhlNWQ3ODQ1MzAwODFiNTJlZDdiYzc4ZDgwYzc5MDUuLjliYzAyMjc1
YWE4ZDJhMzE0ZmUzYjE4NTFjOGQ4MDg3OGE5MWNmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL3F0L1BsdWdpblZpZXdRdC5jcHAKQEAgLTkwLDcgKzkwLDYgQEAgdXNpbmcgSlNDOjpJbnRl
cnByZXRlcjsKICNlbmRpZgogdXNpbmcgSlNDOjpKU0xvY2s7CiB1c2luZyBKU0M6OkpTT2JqZWN0
OwotdXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBzdGQ6Om1pbjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAxNDJmYTgzMDU4MGQwM2Fm
ZTExMjQ3MTIzYmNhMDkxYjYwNDVjNTU0Li4wNWZmMzBiYTQ0NjE1Y2Y3NzkzNTc1YWM4MGEzZWFh
MGU5NzYwNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5W
aWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2lu
LmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmICFQTEFURk9STShXWCkKICNpbmNs
dWRlICJCaXRtYXBJbmZvLmgiCkBAIC0xMjcsNyArMTI4LDYgQEAgc3RhdGljIGlubGluZSBIV05E
IHdpbmRvd0hhbmRsZUZvclBhZ2VDbGllbnQoUGxhdGZvcm1QYWdlQ2xpZW50IGNsaWVudCkKIHVz
aW5nIEpTQzo6RXhlY1N0YXRlOwogdXNpbmcgSlNDOjpKU0xvY2s7CiB1c2luZyBKU0M6OkpTT2Jq
ZWN0OwotdXNpbmcgSlNDOjpVU3RyaW5nOwogCiB1c2luZyBzdGQ6Om1pbjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NsaWVudEV4dGVuc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0
ZW5zaW9uLmNwcAppbmRleCAzOTIwOTcxODlmYTAyYmQ4MjhhNzQwOWY4ZTQyYzI4ZDg1OGViNTlh
Li41NGM0NTZhNzFiYzJjOTk2M2YwZjUzYTA4YjlkMmQzZDE1NjczODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5zaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0
ZW5zaW9uLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgYXR0YWNoRXh0ZW5zaW9uT2JqZWN0
VG9GcmFtZShGcmFtZSogZnJhbWUsIFdlYlBhZ2VDbGllbnQqIGNsaWVudCkKICAgICBKU09iamVj
dFJlZiBjbGllbnRDbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShzY3JpcHRDdHgsIGNsaWVudENs
YXNzLCAwKTsKICAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmplY3QsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNsaWVudCkpOwogCi0gICAgSlNDOjpVU3RyaW5nIG5hbWUoInFu
eCIpOworICAgIFN0cmluZyBuYW1lKCJxbngiKTsKIAogICAgIEpTQzo6UHV0UHJvcGVydHlTbG90
IHNsb3Q7CiAgICAgd2luZG93LT5wdXQod2luZG93LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhl
YywgbmFtZSksIHRvSlMoY2xpZW50Q2xhc3NPYmplY3QpLCBzbG90KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBC
bGFja0JlcnJ5LmNwcAppbmRleCA0MDJiNTIzMzMzYWQ5YjVkOWNjZjI0ZTQ4Yjg1ZGI0ZTU3MmZh
Y2Y3Li5lMmVkMzQ5MGJmZTg3YjQ0MzhjZjc2NGE2YTQ4Y2VhZWQ2MWZkOWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tC
ZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1Bh
Z2VQb3B1cEJsYWNrQmVycnkuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBQYWdlUG9wdXBC
bGFja0JlcnJ5OjppbnN0YWxsRG9tRnVuY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIEpTT2JqZWN0
UmVmIGNsaWVudENsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNsaWVudENsYXNz
LCAwKTsKICAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmplY3QsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KG1fY2xpZW50LmdldCgpKSk7CiAKLSAgICBKU0M6OlVTdHJpbmcgbmFt
ZSgicG9wVXAiKTsKKyAgICBTdHJpbmcgbmFtZSgicG9wVXAiKTsKIAogICAgIEpTQzo6UHV0UHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgd2luZG93LT5wdXQod2luZG93LCBleGVjLCBKU0M6OklkZW50
aWZpZXIoZXhlYywgbmFtZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRleCA5NmE1Nzkx
ZWUyYTlmMDY1NDExZDI5ODRhYjBhNGY4MmExZmE4ZGJhLi44YTllZjliZTBmNWJjYmZmZjVmNGU4
NTg4MDFlMzY2NjQ1NTViMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2VyaWFsaXplSFRU
UExvYWRzKGJvb2wgZW5hYmxlZCkKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZW5k
V2ViSW50ZW50UmVzcG9uc2UoRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0LCBKU1N0cmluZ1Jl
ZiByZXNwb25zZSkKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgSlNDOjpVU3RyaW5n
IHJlc3BvbnNlU3RyaW5nID0gcmVzcG9uc2UtPnVzdHJpbmcoKTsKKyAgICBTdHJpbmcgcmVzcG9u
c2VTdHJpbmcgPSByZXNwb25zZS0+dXN0cmluZygpOwogICAgIGlmIChyZXNwb25zZVN0cmluZy5p
c051bGwoKSkKICAgICAgICAgZXdrX2ludGVudF9yZXF1ZXN0X2ZhaWx1cmVfcG9zdChyZXF1ZXN0
LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4
KCJFUlJPUiIpKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCA3MjMxYjU0OWRkOTVmZDIzNDAyMWMyYjNjOWM2OGM4NWNlMzFjMDhhLi40YjMzYzYyODBmM2Nk
MmY0YzE0NmRhYjk4YzhlM2NjN2RmZjIxYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcApAQCAtNDU4LDcgKzQ1OCw3IEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9zY3JpcHRfZXhl
Y3V0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHNjcmlwdCkKIAogICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gc21hcnREYXRhLT5mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9i
amVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIHJlc3VsdFN0cmluZyA9IFdlYkNv
cmU6OnVzdHJpbmdUb1N0cmluZyhyZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
KyAgICByZXN1bHRTdHJpbmcgPSByZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChyZXN1bHRTdHJpbmcudXRmOCgpLmRhdGEo
KSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsv
Z2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaAppbmRleCBhZmJlZDQ5NjFmYWZjMGI1Y2ExMzAy
NzlmYWQ0Mjk3ZjZjOGEwZjg3Li5iZTAyZmZiODJhMjk4ZjAxYjM1OTUzZDAxMGViOWZlMDY4ZDg4
ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0NoYXJQcml2YXRl
LmgKQEAgLTM1LDcgKzM1LDcgQEAgaW5saW5lIGdjaGFyKiBjb3B5QXNHY2hhcihXZWJDb3JlOjpL
VVJMIGNvbnN0JiBzKQogICAgIHJldHVybiBjb3B5QXNHY2hhcihzLnN0cmluZygpKTsKIH0KIAot
aW5saW5lIGdjaGFyKiBjb3B5QXNHY2hhcihjb25zdCBKU0M6OlVTdHJpbmcmIHMpCitpbmxpbmUg
Z2NoYXIqIGNvcHlBc0djaGFyKGNvbnN0IFN0cmluZyYgcykKIHsKICAgICByZXR1cm4gZ19zdHJk
dXAocy5VVEY4U3RyaW5nKCkuY19zdHIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4
IGFmNmYyYmU5OTY5Y2IxMWNiMzNhNTYzMTdmZGRhOGMyY2Y2MWNmNWUuLjBmOWYwN2RkYjQ0MDcy
M2RiYWY1YTcxMmI4YTQwYTA5ODk0NzQ4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC02
MDcsNyArNjA3LDcgQEAgc3RhdGljIElkZW50aWZpZXIgaWRlbnRpZmllckZyb21JZGVudGlmaWVy
UmVwKElkZW50aWZpZXJSZXAqIGlkZW50aWZpZXIpCiAgICAgQVNTRVJUKGlkZW50aWZpZXItPmlz
U3RyaW5nKCkpOwogICAKICAgICBjb25zdCBjaGFyKiBzdHIgPSBpZGVudGlmaWVyLT5zdHJpbmco
KTsgICAgCi0gICAgcmV0dXJuIElkZW50aWZpZXIoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFs
RGF0YSgpLCBzdHJpbmdUb1VTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhzdHIsIHN0cmxlbihzdHIpKSkpOworICAgIHJldHVybiBJZGVudGlmaWVyKEpTRE9NV2luZG93
Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFj
ayhzdHIsIHN0cmxlbihzdHIpKSk7CiB9CiAKIGtlcm5fcmV0dXJuX3QgV0tQQ0ludm9rZShtYWNo
X3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwgdWludDMyX3QgcmVxdWVzdElE
LCB1aW50MzJfdCBvYmplY3RJRCwgdWludDY0X3Qgc2VydmVySWRlbnRpZmllciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCA5MTA0NDMwNWZiYTZiMjNhYjI1NTUwNmMxMTdhMTI0
YWM0OTMxY2I1Li4xNzRhM2E0ODE0Yjg5YzgwNTVlM2VkYWNiYTE1NWRmOGM0MjlkMzA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6YWRkVmFsdWVUb0FycmF5KE5TTXV0YWJsZUFycmF5
ICphcnJheSwgRXhlY1N0YQogCiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAg
W2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpTdHJpbmdWYWx1ZVR5cGVd
XTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDp1c3RyaW5nVG9TdHJpbmcodmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKV07CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6dmFsdWUu
dG9XVEZTdHJpbmcoZXhlYyldOwogICAgIH0gZWxzZSBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewog
ICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50OkRvdWJsZVZh
bHVlVHlwZV1dOwogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnZhbHVlLnRvTnVtYmVyKGV4ZWMpXV07CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0
YXRlKEV4ZWNTdGF0ZSogZXhlYwogCiAgICAgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBzdHJpbmdU
b1VTdHJpbmcoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKSk7CisgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKICAgICB9
CiAKICAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggODk4YzVl
MjE0MDY5ZmM5YmJmZDM0OWM1YjRjNmJhOGY3MzU1ZTI3MC4uNDllOThmZTZlMjE0N2QwN2VmZTA4
MDliMzIzZjVkMWI2MmRmMWM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0xODEsNyArMTgxLDcgQEAgY2xhc3MgUHJveHlS
dW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgogICAgIHR5cGVk
ZWYgUnVudGltZU1ldGhvZCBCYXNlOwogCi0gICAgc3RhdGljIFByb3h5UnVudGltZU1ldGhvZCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgVVN0cmluZyYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCisgICAgc3RhdGlj
IFByb3h5UnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlz
dCYgbGlzdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0
dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAg
ICAgICAgLy8gZXhlYy1nbG9iYWxEYXRhKCkgaXMgYWxzbyBsaWtlbHkgd3JvbmcuCkBAIC0yMDQs
NyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIG5hbWUpCisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEs
IG5hbWUpOwogICAgICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwpAQCAtMzQwLDcgKzM0
MCw3IEBAIHZvaWQgUHJveHlJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBuYW1lQXJyCiAKICAgICAgICAgaWYgKGlkZW50aWZpZXIt
PmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0ciA9IGlkZW50aWZpZXIt
PnN0cmluZygpOwotICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVyKEpTRE9NV2lu
ZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSwgc3RyaW5nVG9VU3RyaW5nKFN0cmluZzo6ZnJvbVVU
RjhXaXRoTGF0aW4xRmFsbGJhY2soc3RyLCBzdHJsZW4oc3RyKSkpKSk7CisgICAgICAgICAgICBu
YW1lQXJyYXkuYWRkKElkZW50aWZpZXIoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
LCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHN0ciwgc3RybGVuKHN0cikpKSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmFtZUFycmF5LmFkZChJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIGlkZW50aWZpZXItPm51bWJlcigpKSk7CiAgICAgfQpAQCAtMzQ4LDcgKzM0OCw3
IEBAIHZvaWQgUHJveHlJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZUFycmF5JiBuYW1lQXJyCiAKIE1ldGhvZExpc3QgUHJveHlJbnN0YW5jZTo6
bWV0aG9kc05hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVVN0cmluZyBu
YW1lKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN0cmluZyBuYW1lKHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gTWV0aG9kTGlzdCgpOwogCkBAIC0zOTIsNyArMzkyLDcgQEAgTWV0aG9kTGlzdCBQcm94eUlu
c3RhbmNlOjptZXRob2RzTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIAogRmllbGQq
IFByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
LSAgICBVU3RyaW5nIG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3RyaW5n
IG5hbWUocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpp
bmRleCA5MmY5ZTBiYjYxNjZlY2Q3MmMwNDlmM2VkMzcyMjEwY2VlMjA4OGVmLi5mOTFmZmQ4ZTUx
YmQ0ZGFjYjdhZjBhMWNjNGYyNjUxM2MzZWRhODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3Vy
Y2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwotICAgIHJldHVybiB1c3RyaW5nVG9TdHJpbmcocmVzdWx0LnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIHJlc3VsdC50b1dURlN0cmluZyhl
eGVjKTsKIH0KIAogLSAoTlNSZWN0KV9jYXJldFJlY3RBdFBvc2l0aW9uOihjb25zdCBQb3NpdGlv
biYpcG9zIGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KWFmZmluaXR5CkBAIC0xMTI0LDcg
KzExMjQsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gYW55V29ybGRH
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOwotICAgIHJldHVybiB1c3RyaW5nVG9TdHJpbmcocmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIHJlc3VsdC50b1dURlN0cmluZyhleGVjKTsKIH0KIAog
LSAoSlNHbG9iYWxDb250ZXh0UmVmKV9nbG9iYWxDb250ZXh0Rm9yU2NyaXB0V29ybGQ6KFdlYlNj
cmlwdFdvcmxkICopd29ybGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
U2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQppbmRleCA5MWQ0NzM1OTZhZTM0OTI2ZTZmOGUwMjA4NTM0
MmRiNjc1NjU4OTI0Li4wZmNmYzhiYzUzMmFjYTBkOWRkOTFkZTc3NWEyNDAyMDMyMDhkY2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z0RlbGVn
YXRlLm1tCkBAIC0yMDMsOCArMjAzLDggQEAgTlNTdHJpbmcgKiBjb25zdCBXZWJTY3JpcHRFcnJv
ckxpbmVOdW1iZXJLZXkgPSBAIldlYlNjcmlwdEVycm9yTGluZU51bWJlciI7CiAgICAgaWYgKCFf
cHJpdmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBj
b25zdCBVU3RyaW5nKiBmdW5jdGlvbk5hbWUgPSBfcHJpdmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUt
PmZ1bmN0aW9uTmFtZSgpOwotICAgIHJldHVybiBmdW5jdGlvbk5hbWUgPyB0b05TU3RyaW5nKCpm
dW5jdGlvbk5hbWUpIDogbmlsOworICAgIGNvbnN0IFN0cmluZyogZnVuY3Rpb25OYW1lID0gX3By
aXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5mdW5jdGlvbk5hbWUoKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb25OYW1lID8gbnNTdHJpbmdOaWxJZkVtcHR5KCpmdW5jdGlvbk5hbWUpIDogbmlsOwogfQog
CiAvLyBSZXR1cm5zIHRoZSBwZW5kaW5nIGV4Y2VwdGlvbiBmb3IgdGhpcyBmcmFtZSAobmlsIGlm
IG5vbmUpLgpAQCAtMjQyLDE0ICsyNDIsMTQgQEAgTlNTdHJpbmcgKiBjb25zdCBXZWJTY3JpcHRF
cnJvckxpbmVOdW1iZXJLZXkgPSBAIldlYlNjcmlwdEVycm9yTGluZU51bWJlciI7CiAgICAgICAg
IER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlv
bjsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKHN0
cmluZ1RvVVN0cmluZyhzY3JpcHQpLCBleGNlcHRpb24sIGdsb2JhbE9iamVjdCk7CisgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShzY3JpcHQsIGV4Y2Vw
dGlvbiwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAg
IHJldHVybiBbc2VsZiBfY29udmVydFZhbHVlVG9PYmpjVmFsdWU6ZXhjZXB0aW9uXTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdCA/IFtzZWxmIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTpyZXN1bHRd
IDogbmlsOyAgICAgICAgCiAgICAgfQogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgSlNW
YWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+ZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmlu
Z1RvVVN0cmluZyhzY3JpcHQpLCBleGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gX3By
aXZhdGUtPmRlYnVnZ2VyQ2FsbEZyYW1lLT5ldmFsdWF0ZShzY3JpcHQsIGV4Y2VwdGlvbik7CiAg
ICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFtzZWxmIF9jb252ZXJ0VmFsdWVUb09i
amNWYWx1ZTpleGNlcHRpb25dOwogICAgIHJldHVybiByZXN1bHQgPyBbc2VsZiBfY29udmVydFZh
bHVlVG9PYmpjVmFsdWU6cmVzdWx0XSA6IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIuaAppbmRleCBiNTUxZjdkYzg3NTg4ZGU5YjQ1YzlmZDA0YzUy
MDNjNjlhY2JmNDNhLi5jN2RhOGZlMWZiMGVjYzg2NDhkMDc0Njc3MzA0NmUyYWEwMTA1MDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCkBAIC0z
NCwyNiArMzQsMjcgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorbmFtZXNwYWNl
IFdURiB7CitjbGFzcyBTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERl
YnVnZ2VyQ2FsbEZyYW1lOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBBcmdMaXN0OwotICAgIGNs
YXNzIFVTdHJpbmc7CiB9CiAKIEBjbGFzcyBXZWJTY3JpcHRDYWxsRnJhbWU7CiAKLU5TU3RyaW5n
ICp0b05TU3RyaW5nKGNvbnN0IEpTQzo6VVN0cmluZyYpOwotCiBjbGFzcyBXZWJTY3JpcHREZWJ1
Z2dlciA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKIHB1YmxpYzoKICAgICBXZWJTY3JpcHREZWJ1
Z2dlcihKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICB2b2lkIGluaXRHbG9iYWxDYWxsRnJh
bWUoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNv
dXJjZVBhcnNlZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJy
b3JMaW5lLCBjb25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTXNnKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGludCBl
cnJvckxpbmUsIGNvbnN0IFdURjo6U3RyaW5nJiBlcnJvck1zZyk7CiAgICAgdmlydHVhbCB2b2lk
IGNhbGxFdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICB2aXJ0dWFsIHZvaWQg
YXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdmlydHVhbCB2b2lk
IHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KaW5kZXggNGZmZTcyNWI4YWZhMzI5
NjBmNGFjODU4NDlmNDcxNTA5NWNiOTQ4OC4uMTNjNGY3Y2VjNDUzMjRkMjQzM2UzYWRlOTY5ODky
ZjEwZmYyNzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tCkBAIC01MSwxMyArNTEsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0g
KHZvaWQpX2NsZWFyRGVidWdnZXJDYWxsRnJhbWU7CiBAZW5kCiAKLU5TU3RyaW5nICp0b05TU3Ry
aW5nKGNvbnN0IFVTdHJpbmcmIHMpCi17Ci0gICAgaWYgKHMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6cmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bmljaGFyKj4ocy5jaGFyYWN0ZXJzKCkpIGxlbmd0aDpzLmxl
bmd0aCgpXTsKLX0KLQogc3RhdGljIE5TU3RyaW5nICp0b05TU3RyaW5nKFNvdXJjZVByb3ZpZGVy
KiBzKQogewogICAgIGlmICghcy0+bGVuZ3RoKCkpCkBAIC02NSwxMiArNTgsMTIgQEAgc3RhdGlj
IE5TU3RyaW5nICp0b05TU3RyaW5nKFNvdXJjZVByb3ZpZGVyKiBzKQogICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6cy0+ZGF0YSgpLT5jaGFyYWN0ZXJzKCkgbGVuZ3Ro
OnMtPmxlbmd0aCgpXTsKIH0KIAotLy8gY29udmVydCBVU3RyaW5nIHRvIE5TVVJMCi1zdGF0aWMg
TlNVUkwgKnRvTlNVUkwoY29uc3QgVVN0cmluZyYgcykKKy8vIENvbnZlcnQgU3RyaW5nIHRvIE5T
VVJMLgorc3RhdGljIE5TVVJMICp0b05TVVJMKGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBpZiAo
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1c3RyaW5nVG9TdHJpbmcocykpOworICAgIHJldHVybiBLVVJMKFBhcnNlZFVS
TFN0cmluZywgcyk7CiB9CiAKIHN0YXRpYyBXZWJGcmFtZSAqdG9XZWJGcmFtZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtMTA1LDcgKzk4LDcgQEAgdm9pZCBXZWJTY3JpcHREZWJ1
Z2dlcjo6aW5pdEdsb2JhbENhbGxGcmFtZShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWwKIH0KIAogLy8gY2FsbGJhY2tzIC0gcmVsYXkgdG8gZGVsZWdhdGUKLXZvaWQgV2ViU2Ny
aXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVy
KiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgVVN0cmluZyYgZXJyb3JNc2cp
Cit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiBleGVjLCBT
b3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNc2cpCiB7CiAgICAgaWYgKG1fY2FsbGluZ0RlbGVnYXRlKQogICAgICAgICByZXR1
cm47CkBAIC0xMjgsNyArMTIxLDcgQEAgdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFy
c2VkKEV4ZWNTdGF0ZSogZXhlYywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3YKICAgICAgICAg
ICAgICAgICBDYWxsU2NyaXB0RGVidWdEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFBhcnNl
U291cmNlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUGFyc2VTb3VyY2U6ZnJv
bVVSTDpzb3VyY2VJZDpmb3JXZWJGcmFtZTopLCBuc1NvdXJjZSwgW25zVVJMIGFic29sdXRlU3Ry
aW5nXSwgc291cmNlUHJvdmlkZXItPmFzSUQoKSwgd2ViRnJhbWUpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgTlNTdHJpbmcqIG5zRXJyb3JNZXNzYWdlID0gdG9OU1N0cmluZyhl
cnJvck1zZyk7CisgICAgICAgIE5TU3RyaW5nKiBuc0Vycm9yTWVzc2FnZSA9IG5zU3RyaW5nTmls
SWZFbXB0eShlcnJvck1zZyk7CiAgICAgICAgIE5TRGljdGlvbmFyeSAqaW5mbyA9IFtbTlNEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOm5zRXJyb3JNZXNzYWdlLCBXZWJT
Y3JpcHRFcnJvckRlc2NyaXB0aW9uS2V5LCBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50
OmVycm9yTGluZV0sIFdlYlNjcmlwdEVycm9yTGluZU51bWJlcktleSwgbmlsXTsKICAgICAgICAg
TlNFcnJvciAqZXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOldlYlNjcmlw
dEVycm9yRG9tYWluIGNvZGU6V2ViU2NyaXB0R2VuZXJhbEVycm9yQ29kZSB1c2VySW5mbzppbmZv
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDYwYjM1M2YyZDQ2ZjBl
ODcyMGFiZGI1MjVlYTE3ZjkzNDBkYjZhOTcuLjM3OTlmOTIzZmFlYTk5ZWNhMzU0MTU5OTlhZjg4
Zjk5OWExYTVlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTQ3ODgs
NyArNDc4OCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNW
YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1CiAgICAgaWYgKGpzVmFsdWUuaXNC
b29sZWFuKCkpCiAgICAgICAgIHJldHVybiBbTlNBcHBsZUV2ZW50RGVzY3JpcHRvciBkZXNjcmlw
dG9yV2l0aEJvb2xlYW46anNWYWx1ZS5hc0Jvb2xlYW4oKV07CiAgICAgaWYgKGpzVmFsdWUuaXNT
dHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0
b3JXaXRoU3RyaW5nOnVzdHJpbmdUb1N0cmluZyhqc1ZhbHVlLmdldFN0cmluZyhleGVjKSldOwor
ICAgICAgICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhTdHJp
bmc6anNWYWx1ZS5nZXRTdHJpbmcoZXhlYyldOwogICAgIGlmIChqc1ZhbHVlLmlzTnVtYmVyKCkp
IHsKICAgICAgICAgZG91YmxlIHZhbHVlID0ganNWYWx1ZS5hc051bWJlcigpOwogICAgICAgICBp
bnQgaW50VmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAppbmRl
eCBhMjA4Y2JjNGVhNWI0N2YxODE3M2U5MjI0Yjk3OWViYzM5YjkxZjQ1Li4wNjJjZGQyN2Q0ZjE5
ZTk3YmNlNzIwZGU5MmQyNGE0N2RlNjhjZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwCkBAIC03NTEsNyArNzUxLDcgQEAgUVZhcmlhbnQgUVdlYkVsZW1lbnQ6OmV2YWx1YXRl
SmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHRTb3VyY2UpCiAgICAgaWYgKCFzZXR1cFNj
cmlwdENvbnRleHQobV9lbGVtZW50LCB0aGlzVmFsdWUsIHN0YXRlLCBzY3JpcHRDb250cm9sbGVy
KSkKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CiAgICAgSlNDOjpTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbiA9IHN0YXRlLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hh
aW4oKTsKLSAgICBKU0M6OlVTdHJpbmcgc2NyaXB0KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0
IFVDaGFyKj4oc2NyaXB0U291cmNlLmRhdGEoKSksIHNjcmlwdFNvdXJjZS5sZW5ndGgoKSk7Cisg
ICAgU3RyaW5nIHNjcmlwdChyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBVQ2hhcio+KHNjcmlw
dFNvdXJjZS5kYXRhKCkpLCBzY3JpcHRTb3VyY2UubGVuZ3RoKCkpOwogCiAgICAgSlNDOjpKU1Zh
bHVlIGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRpb25SZXN1
bHQgPSBKU0M6OmV2YWx1YXRlKHN0YXRlLCBzY29wZUNoYWluLCBKU0M6Om1ha2VTb3VyY2Uoc2Ny
aXB0KSwgdGhpc1ZhbHVlLCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHAKaW5kZXggZDE4ODBjZjNmYzZiYjk1ZDFhNTk1NTc0Nzk0MzAxNGQ5N2I5MDBiMy4uMDYyY2Yx
NDE2NDViNTNjZDUzOTI3NWY0YmRkNWUwYWYwNTk3NjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cApAQCAtMjUzOSw3ICsyNTM5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KIAogICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gYW55V29ybGRHbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIFN0cmluZyByZXN1bHRTdHJp
bmcgPSB1c3RyaW5nVG9TdHJpbmcocmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CisgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1dURlN0cmluZyhleGVjKTsKICAg
ICAqZXZhbHVhdGlvblJlc3VsdCA9IEJTdHJpbmcocmVzdWx0U3RyaW5nKS5yZWxlYXNlKCk7CiAK
ICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggNzBkNDkxZWRiMTRjYTNm
YmM3ZTZiYWI0NjUxNzhmODA5ODRhNjg4NS4uYzNmZGVkNmIxNDIwNDYxNDA0YzFkMjBiNTk4MTQ0
NmQwYWQ2YWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTMxOTgsNyArMzE5OCw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdEZyb21TdHJpbmcoCiAgICAgZWxzZSBpZiAoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LmlzU3Ry
aW5nKCkpIHsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBjb3JlRnJhbWUtPnNjcmlw
dCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCk7
CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgICpyZXN1bHQg
PSBCU3RyaW5nKHVzdHJpbmdUb1N0cmluZyhzY3JpcHRFeGVjdXRpb25SZXN1bHQuZ2V0U3RyaW5n
KGV4ZWMpKSk7CisgICAgICAgICpyZXN1bHQgPSBCU3RyaW5nKHNjcmlwdEV4ZWN1dGlvblJlc3Vs
dC5nZXRTdHJpbmcoZXhlYykpOwogICAgIH0KIAogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZy
YW1lLmNwcAppbmRleCA5NDJjNGJlYWFhYjFiYjNiZjQwNGIzYjgyMjdmNTc0MmRhY2M1YTE5Li5h
YWE3NjE0ZWZhM2I2NDEzYjcxMGUwZTg1YWFkOTUxZDZmZTkyZjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1l
LmNwcApAQCAtNTQsOCArNTQsOCBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50V3guaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudFd4LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAppbmRleCBhY2I2MGY2NDMxZTY0ZWJhYWZlZGY1
OTM3ZDgxYTBlZTdjNzJhY2U2Li40Zjg0YTFiM2Q0OTQzOTIzMTA3MzI3NzQ1OGIxOWExOTkzNzJl
NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAKQEAgLTcyLDkgKzcyLDkgQEAKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL1VTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCiAjaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCmlu
ZGV4IGVkZjQyZTRkNWU4M2YyZmIzMTcyMmRhMjAzODFlMzM0ZGI0NmM0ZTUuLjQ2ZWZmMDlkNmMx
OWEwZDlmYmU4YzkxZDQ3YmY3ZTA4ODNiODBhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgSlNOUE1ldGhvZDo6SlNOUE1ldGhvZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTlBJZGUKIHsKIH0KIAotdm9pZCBKU05QTWV0
aG9kOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJp
bmcmIG5hbWUpCit2b2lkIEpTTlBNZXRob2Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEsIG5hbWUpOwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE1ldGhvZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBNZXRob2QuaAppbmRleCAzY2IzM2ZjNDE2YTg0MGE5MGJmZTZiZGViMjFjODg0NjFhOGMxNTdl
Li45MzYxNGQ1MmQzZGM2OWMwMzZjZWEyYmJhMzllZGVhMDJkZjQ4MTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9k
LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSlNOUE1ldGhvZCA6IHB1YmxpYyBKU0M6OkludGVy
bmFsRnVuY3Rpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDOjpJbnRlcm5hbEZ1bmN0aW9u
IEJhc2U7CiAKLSAgICBzdGF0aWMgSlNOUE1ldGhvZCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6VVN0cmlu
ZyYgbmFtZSwgTlBJZGVudGlmaWVyIG5wSWRlbnQpCisgICAgc3RhdGljIEpTTlBNZXRob2QqIGNy
ZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5QSWRlbnRpZmllciBucElkZW50KQogICAgIHsKICAg
ICAgICAgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNyZWF0ZVN0cnVjdHVyZShleGVjLT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlw
ZSgpKTsKICAgICAgICAgSlNOUE1ldGhvZCogbWV0aG9kID0gbmV3IChKU0M6OmFsbG9jYXRlQ2Vs
bDxKU05QTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSlNOUE1ldGhvZChnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgbnBJZGVudCk7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBOUElkZW50
aWZpZXIgbnBJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9ucElkZW50aWZpZXI7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmLCBj
b25zdCBKU0M6OlVTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpK
U0dsb2JhbERhdGEmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiBwcml2YXRlOiAgICAKICAgICBK
U05QTWV0aG9kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIE5QSWRlbnRp
Zmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKaW5kZXggNTRmZWMwYzFhMjczOGEzMGM4N2MzNzkxMzI2
MzY4Y2UxYWVlMmI4Mi4uOWFhOTAxNjlmOWZmODljYjYxMTM1NzVjMWQzMDczNzM0MTcwYmIwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RhdGljIE5QSWRlbnRpZmllciBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFVTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBTdHJpbmcgbmFtZShwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
ICAgICBpZiAobmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE5QSWRlbnRpZmllcj4oSWRlbnRpZmllclJlcDo6Z2V0KG5hbWUudXRmOCgpLmRh
dGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAppbmRleCAzNTg1MzNmZWJm
Yzg2MjdiOWMzYWNhZjY2MDY4MTRlYjhkZDI3MWFhLi5hNTI1ZmI5YjhmZDZiYTZjZTRmZDVjZTdm
ZDlhMTc4MWY5M2EzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcApAQCAt
MTc4LDcgKzE3OCw3IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRv
TlBWYXJpYW50KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLWJvb2wgTlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamVj
dCogbnBPYmplY3QsIGNvbnN0IFN0cmluZyZzY3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0
KQorYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0KQogewogICAgIFN0
cm9uZzxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0KHRoaXMtPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxEYXRhKCksIHRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoIWdsb2JhbE9iamVj
dCkKQEAgLTE5MCw3ICsxOTAsNyBAQCBib29sIE5QUnVudGltZU9iamVjdE1hcDo6ZXZhbHVhdGUo
TlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZ2V0T3JDcmVhdGVKU09iamVjdChnbG9iYWxPYmplY3QuZ2V0KCksIG5w
T2JqZWN0KTsKIAogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2Vy
LnN0YXJ0KCk7Ci0gICAgSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IEpTQzo6ZXZhbHVhdGUoZXhlYywg
Z2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2UoVVN0cmluZyhzY3Jp
cHRTdHJpbmcuaW1wbCgpKSksIHRoaXNWYWx1ZSk7CisgICAgSlNWYWx1ZSByZXN1bHRWYWx1ZSA9
IEpTQzo6ZXZhbHVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIG1h
a2VTb3VyY2Uoc2NyaXB0U3RyaW5nKSwgdGhpc1ZhbHVlKTsKICAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBjb252ZXJ0SlNWYWx1ZVRv
TlBWYXJpYW50KGV4ZWMsIHJlc3VsdFZhbHVlLCAqcmVzdWx0KTsKQEAgLTI2Nyw3ICsyNjcsNyBA
QCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRl
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7Ci0gICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgc3RyaW5nVG9V
U3RyaW5nKGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSkpOworICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQog
ICAgIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYKaW5kZXggMWJmMDc4ZjViN2UwYTYyODgyZjA0NTUzZDYzMjU0NmQ4Y2JlOTcyNi4u
ZjUxMDJlNjY3Y2Q2YmE5MDNmOTdhM2VkZjQxNjEyNDc5ODA3NDM2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZgpAQCAtMjc2LDcgKzI3Niw3IEBAIEVYUE9SVFMKICAgICAgICAgP3NldEFsbG93c1Jv
dW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCiAgICAgICAgID9wcm9maWxlckVu
YWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVfTlhaCiAgICAgICAgID9zZXRQ
cm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWgotICAg
ICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVj
U3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpTU3RyaW5n
QEpTQ0BAQEpTQ0BAVT8kUHRySGFzaEBQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0
c0BQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BK
U0NAQEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWiAgICAgICAgCisgICAgICAgID9q
c1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4
ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJp
bmdASlNDQEBASlNDQEBVPyRQdHJIYXNoQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJh
aXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5n
QEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaICAgICAgICAKICAgICAgICAg
P3JlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3lAU2NoZW1l
UmVnaXN0cnlAV2ViQ29yZUBAU0FYQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3JlbW92ZVVS
TFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeUBTY2hlbWVS
ZWdpc3RyeUBXZWJDb3JlQEBTQVhBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/aWNvblVSTHNA
RG9jdW1lbnRAV2ViQ29yZUBAUUFFQUJWPyRWZWN0b3JAVUljb25VUkxAV2ViQ29yZUBAJDBBQEBX
VEZAQFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYg
Yi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggNTYxZGIyMjIwZjA0
OTU3OTliZDM0YjZkNzNhODQyOTMxZTc5N2RiMy4uYmIxYTBkMjM4MzJlMGY4NDlhZDU4YjQwNGYz
YWIyMGQ5OTZhYWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxp
dGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMjY3
LDYgKzI2Nyw2IEBAIEVYUE9SVFMKICAgICAgICAgP3Byb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JD
b250cm9sbGVyQFdlYkNvcmVAQFFBRV9OWFoKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJ
bnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAJPz8xQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFFQFhaCi0gICAgICAgID9qc1N0cmluZ1Nsb3dDYXNlQFdl
YkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZT
dHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVPyRQdHJIYXNoQFBB
VlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBV
PyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3Ry
aW5nSW1wbEA2QEBaCisgICAgICAgID9qc1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNlQFdlYkNvcmVA
QFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJ
bXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVPyRQdHJIYXNoQFBBVlN0cmlu
Z0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNo
VHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1w
bEA2QEBaCiAgICAgICAgID9yZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3Vy
aXR5UG9saWN5QFNjaGVtZVJlZ2lzdHJ5QFdlYkNvcmVAQFNBWEFCVlN0cmluZ0BXVEZAQEBaCiAg
ICAgICAgID9yZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJp
dHlQb2xpY3lAU2NoZW1lUmVnaXN0cnlAV2ViQ29yZUBAU0FYQUJWU3RyaW5nQFdURkBAQFoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGFmNGJmZjZhOWI5NTEyYmFiYWNhOGUxZDk0ZTI0NmI3
NzRjYWU5NzguLjZhOGQxZWM2ZTliYzdlYzI5MTA4YWY4MDVhOGY1MjVlNTExYjEzZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjksNyArNjksNiBAQCBfWk43V2ViQ29yZTE1c2V0RE9N
RXhjZXB0aW9uRVBOM0pTQzlFeGVjU3RhdGVFaTsKIF9aTjdXZWJDb3JlMTV0b0RPTVN0cmluZ0xp
c3RFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFOwogX1pON1dlYkNvcmUxNkhUTUxJbnB1
dEVsZW1lbnQxN3NldFN1Z2dlc3RlZFZhbHVlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3Jl
MTZIVE1MSW5wdXRFbGVtZW50MTVzZXRFZGl0aW5nVmFsdWVFUktOM1dURjZTdHJpbmdFOwotX1pO
N1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1h
cElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFz
aElTNl9FRU5TM18xMEhhc2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl87CiBfWk43V2ViQ29y
ZTE2c2NyaXB0TmFtZVRvQ29kZUVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTE3Y2FjaGVE
T01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05T
Ml85Q2xhc3NJbmZvRTsKIF9aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2c2F2ZURvY3Vt
ZW50QW5kU2Nyb2xsU3RhdGVFdjsKQEAgLTkyLDYgKzkxLDcgQEAgX1pON1dlYkNvcmUyNENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjlsYXN0Q2hpbGRFdjsKIF9aTjdXZWJDb3JlMjREb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIxMG1hcmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIx
MU1hcmtlclR5cGVzRTsKIF9aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxOGFk
ZFRleHRNYXRjaE1hcmtlckVQS05TXzVSYW5nZUViOwogX1pON1dlYkNvcmUyNWNvbXB1dGVWaWV3
cG9ydEF0dHJpYnV0ZXNFTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0VpaWlmTlNfN0ludFNpemVFOwor
X1pON1dlYkNvcmUyNWpzU3RyaW5nV2l0aENhY2hlU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVS
TjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VF
RU5TM183UHRySGFzaElTNl9FRU5TM18xMEhhc2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl87
CiBfWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVj
dG9ySU5TMF82U3RyaW5nRUxqMEVFRTsKIF9aTjdXZWJDb3JlMzBvdmVycmlkZVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNFUktOM1dURjZWZWN0b3JJTlMwXzZTdHJpbmdFTG0wRUVFOwogX1pON1dlYkNv
cmU0MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5TXzE4Vmlld3Bv
cnRBdHRyaWJ1dGVzRU5TXzdJbnRTaXplRTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4MzgxNWQyNzQxMjAzOGYyNDg4Yzc4ZmI1YzIxNTQyYzBk
ZmUzZDU0Li5kZTNmYmNkNzE2MThmNDRlMmIyY2UzN2RkNGViYjljODY1N2IxYmY0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgR2V0IHJpZCBvZiBVU3RyaW5nLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwOgorICAg
ICAgICAqIGdkYi93ZWJraXQucHk6CisgICAgICAgIChXVEZTdHJpbmdQcmludGVyLnRvX3N0cmlu
Zyk6CisgICAgICAgIChKU0NJZGVudGlmaWVyUHJpbnRlci50b19zdHJpbmcpOgorICAgICAgICAo
SlNDSlNTdHJpbmdQcmludGVyLnRvX3N0cmluZyk6CisgICAgICAgIChhZGRfcHJldHR5X3ByaW50
ZXJzKToKKwogMjAxMi0wOC0yOSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29t
PgogCiAgICAgICAgIFJhbmRvbSB0ZXN0LXdlYmtpdHB5IGZhaWx1cmVzIG9uIHRoZSBidWlsZGJv
dApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwCmluZGV4
IDYxZmY3YmFhNGZkYjU2MTI1NWU3ZWEwNjljOWQwODY3NDMyZmY2ZmEuLjFiNmMwYjA5ODIyZmY3
MTJlNzAwMjNlZGViOWY0NDE3MTdkYzNhNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlIDxFV2Vi
S2l0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVVN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL2dkYi93ZWJraXQucHkgYi9Ub29scy9nZGIvd2Vi
a2l0LnB5CmluZGV4IDFiMmFlNTc1MTZiNGVlNDE3Zjk0OWFmMTRhZGIzM2M1MGIzMDNjYjEuLmJk
ZjNkMDg5MDIxMWI2MmZjMmI3NDBjZDA0ZTM0ODc4MGY3YzFlZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L2dkYi93ZWJraXQucHkKKysrIGIvVG9vbHMvZ2RiL3dlYmtpdC5weQpAQCAtMTUxLDEzICsxNTEs
MTEgQEAgY2xhc3MgV1RGU3RyaW5nUHJpbnRlcihTdHJpbmdQcmludGVyKToKICAgICAgICAgcmV0
dXJuIHNlbGYuc3RyaW5naW1wbF9wdHIoKS5kZXJlZmVyZW5jZSgpCiAKIAotSlNDVVN0cmluZ1By
aW50ZXIgPSBXVEZTdHJpbmdJbXBsUHJpbnRlcgotCiAKIGNsYXNzIEpTQ0lkZW50aWZpZXJQcmlu
dGVyKFN0cmluZ1ByaW50ZXIpOgogICAgICJQcmludCBhIEpTQzo6SWRlbnRpZmllciIKICAgICBk
ZWYgdG9fc3RyaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gSlNDVVN0cmluZ1ByaW50ZXIoc2Vs
Zi52YWxbJ21fc3RyaW5nJ10pLnRvX3N0cmluZygpCisgICAgICAgIHJldHVybiBXVEZTdHJpbmdJ
bXBsUHJpbnRlcihzZWxmLnZhbFsnbV9zdHJpbmcnXSkudG9fc3RyaW5nKCkKIAogCiBjbGFzcyBK
U0NKU1N0cmluZ1ByaW50ZXIoU3RyaW5nUHJpbnRlcik6CkBAIC0xNjYsNyArMTY0LDcgQEAgY2xh
c3MgSlNDSlNTdHJpbmdQcmludGVyKFN0cmluZ1ByaW50ZXIpOgogICAgICAgICBpZiBzZWxmLnZh
bFsnbV9sZW5ndGgnXSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuICcnCiAKLSAgICAgICAgcmV0
dXJuIEpTQ1VTdHJpbmdQcmludGVyKHNlbGYudmFsWydtX3ZhbHVlJ10pLnRvX3N0cmluZygpCisg
ICAgICAgIHJldHVybiBXVEZTdHJpbmdJbXBsUHJpbnRlcihzZWxmLnZhbFsnbV92YWx1ZSddKS50
b19zdHJpbmcoKQogCiAKIGNsYXNzIFdlYkNvcmVLVVJMR29vZ2xlUHJpdmF0ZVByaW50ZXIoU3Ry
aW5nUHJpbnRlcik6CkBAIC0yODIsNyArMjgwLDYgQEAgZGVmIGFkZF9wcmV0dHlfcHJpbnRlcnMo
KToKICAgICAgICAgKHJlLmNvbXBpbGUoIl5XVEY6OlN0cmluZ0ltcGwkIiksIFdURlN0cmluZ0lt
cGxQcmludGVyKSwKICAgICAgICAgKHJlLmNvbXBpbGUoIl5XZWJDb3JlOjpLVVJMR29vZ2xlUHJp
dmF0ZSQiKSwgV2ViQ29yZUtVUkxHb29nbGVQcml2YXRlUHJpbnRlciksCiAgICAgICAgIChyZS5j
b21waWxlKCJeV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSQiKSwgV2ViQ29yZVF1YWxpZmllZE5hbWVQ
cmludGVyKSwKLSAgICAgICAgKHJlLmNvbXBpbGUoIl5KU0M6OlVTdHJpbmckIiksIEpTQ1VTdHJp
bmdQcmludGVyKSwKICAgICAgICAgKHJlLmNvbXBpbGUoIl5KU0M6OklkZW50aWZpZXIkIiksIEpT
Q0lkZW50aWZpZXJQcmludGVyKSwKICAgICAgICAgKHJlLmNvbXBpbGUoIl5KU0M6OkpTU3RyaW5n
JCIpLCBKU0NKU1N0cmluZ1ByaW50ZXIpLAogICAgICkKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKaW5kZXgg
NzE0OWUxOTZjODhjZTc0YjI4MDY5MGY1M2M1OTk0MDM5OWY4NWI1My4uM2EyODkyMWY4ZmQyNGVl
MTFkOWUzOGU3M2IzNmQ1OTI4ZWQzYWE1ZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9y
Zy9DaGFuZ2VMb2cKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMi0wOC0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIEpTQzo6VVN0cmluZyBieSBXVEY6OlN0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBVcGRhdGUgdGhlIGNvZGlu
ZyBzdHlsZSB0byBhdm9pZCBtZW50aW9uaW5nIGEgY2xhc3MgdGhhdCBubyBsb25nZXIgZXhpc3Qu
CisKKyAgICAgICAgKiBjb2RpbmcvY29kaW5nLXN0eWxlLmh0bWw6CisKIDIwMTItMDgtMDkgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkcmVzcyBvbmUgbW9y
ZSByZXZpZXcgY29tbWVudC4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvY29kaW5n
L2NvZGluZy1zdHlsZS5odG1sIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0
eWxlLmh0bWwKaW5kZXggMmE1ZDZkNmM4YWMwNjg2YmE4YjNiNDA3ZTAzZjQzMzM2NDllNDk0OC4u
NzM1YWIzODE3OWY3ZGVjNDVhYjc3MTI5NTYzMGExYzU5YjM3NjkzNiAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKKysrIGIvV2Vic2l0ZXMv
d2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKQEAgLTk0MSw3ICs5NDEsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV1RGOwogPC9wcmU+CiA8aDQgY2xhc3M9Indyb25nIj5Xcm9uZzo8L2g0
PgogPHByZSBjbGFzcz0iY29kZSI+Ci0vLyBydW50aW1lL1VTdHJpbmcuaAorLy8gcnVudGltZS9K
U09iamVjdC5oCiAKIG5hbWVzcGFjZSBXVEYgewogCg==
</data>
<flag name="review"
          id="172317"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="172353"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
      

    </bug>

</bugzilla>