<?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>226040</bug_id>
          
          <creation_ts>2021-05-20 12:55:35 -0700</creation_ts>
          <short_desc>Replace more static Locks with CheckedLocks in WTF / WebCore</short_desc>
          <delta_ts>2021-05-21 13:20:29 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226059</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226060</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226062</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226092</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=226093</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>apinheiro</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762106</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 12:55:35 -0700</bug_when>
    <thetext>Replace more static Locks with CheckedLocks so that we can benefit from Clang Thread Safety Analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762123</commentid>
    <comment_count>1</comment_count>
      <attachid>429218</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 14:00:47 -0700</bug_when>
    <thetext>Created attachment 429218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762226</commentid>
    <comment_count>2</comment_count>
      <attachid>429218</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-20 17:05:12 -0700</bug_when>
    <thetext>Comment on attachment 429218
Patch

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

Not enough time to review it all right now, but one comment.

&gt; Source/WTF/wtf/Language.cpp:98
&gt; -    preferredLanguagesOverride() = override;
&gt; +    {
&gt; +        Locker locker { preferredLanguagesOverrideLock };
&gt; +        preferredLanguagesOverride() = override;
&gt; +    }

Is this fixing a bug? Have you been mixing in fixes with the &quot;refactor to use the checker&quot; patches before this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762229</commentid>
    <comment_count>3</comment_count>
      <attachid>429218</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 17:09:54 -0700</bug_when>
    <thetext>Comment on attachment 429218
Patch

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

&gt;&gt; Source/WTF/wtf/Language.cpp:98
&gt;&gt; +    }
&gt; 
&gt; Is this fixing a bug? Have you been mixing in fixes with the &quot;refactor to use the checker&quot; patches before this?

Yes, it is fixing a bug that was found by clang thanks to adopting CheckedLock. Yes, the CheckedLock patches I have landed include some fixes but not many. Mostly our code was correct (Thankfully).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762241</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 17:35:18 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 429218 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429218&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/Language.cpp:98
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; Is this fixing a bug? Have you been mixing in fixes with the &quot;refactor to use the checker&quot; patches before this?
&gt; 
&gt; Yes, it is fixing a bug that was found by clang thanks to adopting
&gt; CheckedLock. Yes, the CheckedLock patches I have landed include some fixes
&gt; but not many. Mostly our code was correct (Thankfully).

I have split this fix to Bug 226059 to make it more obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762243</commentid>
    <comment_count>5</comment_count>
      <attachid>429249</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 17:40:21 -0700</bug_when>
    <thetext>Created attachment 429249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762252</commentid>
    <comment_count>6</comment_count>
      <attachid>429254</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 18:20:45 -0700</bug_when>
    <thetext>Created attachment 429254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762257</commentid>
    <comment_count>7</comment_count>
      <attachid>429256</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 18:29:34 -0700</bug_when>
    <thetext>Created attachment 429256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762258</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 18:32:25 -0700</bug_when>
    <thetext>Ok, I believe I have extracted all non-trivial bug fixes out into their own patches (see related bugs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762471</commentid>
    <comment_count>9</comment_count>
      <attachid>429308</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 10:21:45 -0700</bug_when>
    <thetext>Created attachment 429308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762481</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 10:49:04 -0700</bug_when>
    <thetext>*** Bug 226092 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762482</commentid>
    <comment_count>11</comment_count>
      <attachid>429311</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 10:51:03 -0700</bug_when>
    <thetext>Created attachment 429311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762550</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-21 13:19:53 -0700</bug_when>
    <thetext>Committed r277880 (238018@main): &lt;https://commits.webkit.org/238018@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429311.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762552</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-21 13:20:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/78324905&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429218</attachid>
            <date>2021-05-20 14:00:47 -0700</date>
            <delta_ts>2021-05-20 17:40:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226040-20210520140046.patch</filename>
            <type>text/plain</type>
            <size>135566</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI2NDZlYTk2Mjk1ZTg3Njk5OWIxMjZl
OTM1ODk2NmVmMGFlNjM1ODguLmVmYjU2ZWI0NGJhZGIxNWM0ODM3ZGI4Yzk5MmIyODczNzNmZGZh
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hl
Y2tlZExvY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzIHNvIHRoYXQgd2Ug
Y2FuIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAg
ICogd3RmL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdURjo6V1RGX1JFUVVJUkVTX0xPQ0spOgor
ICAgICAgICAoV1RGOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUpOgorICAgICAgICAo
V1RGOjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAoV1RGOjp1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAg
ICAgKFdURjo6VGhyZWFkOjphbGxUaHJlYWRzTG9jayk6CisgICAgICAgIChXVEY6OlRocmVhZDo6
Y3JlYXRlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkaWRFeGl0KToKKyAgICAgICAgKiB3dGYv
VGhyZWFkaW5nLmg6CisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChXVEY6OldURl9S
RVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdURjo6cmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3Rv
Y29sRm9yVGVzdGluZyk6CisgICAgICAgIChXVEY6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcpOgorICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKToK
KyAgICAgICAgKiB3dGYvY2YvTGFuZ3VhZ2VDRi5jcHA6CisgICAgICAgIChXVEY6OldURl9SRVFV
SVJFU19MT0NLKToKKyAgICAgICAgKFdURjo6cGxhdGZvcm1MYW5ndWFnZURpZENoYW5nZSk6Cisg
ICAgICAgIChXVEY6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6CisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmludmFs
aWRhdGUpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjphZG9wdFVuZGVybHlpbmdTdHJpbmcp
OgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpzZXRVbmRlcmx5aW5nU3RyaW5nKToKKyAgICAg
ICAgKiB3dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwOgorICAgICAgICAoV1RGOjpDb2xs
YXRvcjo6Q29sbGF0b3IpOgorICAgICAgICAoV1RGOjpDb2xsYXRvcjo6fkNvbGxhdG9yKToKKwog
MjAyMS0wNS0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBOYXZpZ2F0aW9uIFRpbWluZyBMZXZlbCAyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNjc0NjBlODFmNzgyNWU0YjRlZTM5MTQ0MGIwZGM1NTdlNmI1Mjk3Ny4uYmU4ZmQ2
NWM5NWI4ODJkZjgxZmViMDE5ZmFkYmY1Y2Q4M2ZkMzBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4MSBAQAorMjAyMS0wNS0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlcGxhY2UgbW9yZSBzdGF0aWMgTG9ja3Mgd2l0aCBDaGVja2VkTG9ja3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjA0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgbW9yZSBz
dGF0aWMgTG9ja3Mgd2l0aCBDaGVja2VkTG9ja3Mgc28gdGhhdCB3ZSBjYW4gYmVuZWZpdCBmcm9t
IENsYW5nIFRocmVhZCBTYWZldHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVGb3JDdXJy
ZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VyaWFsaXphdGlv
bkNvbnRleHQ6On5JREJTZXJpYWxpemF0aW9uQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVR
VUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGV0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpyZW1vdmVGcm9tRGF0YUNoYW5uZWxM
b2NhbE1hcElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpoYW5k
bGVyRnJvbUlkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
OjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xv
c2VEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Z2V0Q2FjaGVkVmVyc2lv
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2V0Q2FjaGVkVmVyc2lvbik6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdQVURldmljZTo6aW5zdGFuY2VzTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVEZXZpY2U6On5XZWJHUFVEZXZpY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdQVVBpcGVsaW5lOjpXZWJHUFVQaXBlbGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHUFVQaXBlbGluZTo6fldlYkdQVVBpcGVsaW5lKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpXZWJTb2Nr
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojp+V2ViU29ja2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c0xvY2spOgorICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkVHJlZTo6dHJlZUZvcklEKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVRyZWVG
b3JQYWdlSUQpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdl
SUQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
Lmg6CisgICAgICAgICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0SlNXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEpTV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6
cmVnaXN0ZXJBbGdvcml0aG0pOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlUG9ydDo6ZGVyZWYgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBv
cnQ6OmlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6Om5vdGlmeU1lc3NhZ2VBdmFpbGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojpjb250ZXh0SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZW1vdmVGcm9tQ29udGV4dHNNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6fkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xQcm9ncmFtOjppbnN0YW5jZXNMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJv
Z3JhbTo6fldlYkdMUHJvZ3JhbSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp+V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhc0FnZW50OjplbmFibGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2ViU29ja2V0Rm9yUmVxdWVzdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5l
dHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5l
dHdvcmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
TmV0d29ya0FnZW50Lmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6aXNBY2Nlc3NBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWxsb3dBY2Nlc3NUbyk6Cisg
ICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKToK
KyAgICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cGVuZGluZ0Rpc3BhdGNoZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6ZGlzcGF0Y2hPbmVUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsQnVpbHRpblNj
aGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1l
UmVnaXN0ZXJlZEFzTG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVJc0hhbmRsZWRCeVNjaGVtZUhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRy
ZWF0VVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNE
aXNwbGF5SXNvbGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNTZWN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmNhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3Np
bmdDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1
cml0eVBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2No
ZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25l
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0
aW9uQ2FjaGVGb3JVUkxTY2hlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRG
cmFtZU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAg
ICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZmZ0U2V0dXBGb3JTaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVR
VUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVuZ2luZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJlc2V0TWVkaWFFbmdpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6On5QbGF0Zm9ybUNBTGF5ZXJDb2NvYSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFV
SVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVFMUHJldmlld0NvbnZlcnRlckZv
clVSTCk6CisgICAgICAgIChXZWJDb3JlOjphZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZv
clVSTCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5tbToKKyAgICAgICAgKFdURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKCtbV2ViRGF0
YWJhc2VUcmFuc2FjdGlvbkJhY2tncm91bmRUYXNrQ29udHJvbGxlciBzdGFydEJhY2tncm91bmRU
YXNrXSk6CisgICAgICAgICgrW1dlYkRhdGFiYXNlVHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0Nv
bnRyb2xsZXIgZW5kQmFja2dyb3VuZFRhc2tdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9D
Syk6CisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfR1VBUkRF
RF9CWV9MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRJc0RhdGFi
YXNlT3BlbmluZ0ZvcmJpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
b3Blbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OldURl9HVUFSREVEX0JZ
X0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpzZXRDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25JblByb2dy
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6
Om5ld1RleHRDb2RlYyk6CisgICAgICAgIChXZWJDb3JlOjphdG9tQ2Fub25pY2FsVGV4dEVuY29k
aW5nTmFtZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2Vycyk6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
T3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Oldvcmtlck9yV29ya2xldFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6On5Xb3JrZXJPcldvcmtsZXRU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjpyZWxlYXNl
RmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0VGhyZWFkLmg6CisKIDIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgQ2hlY2tlZExvY2sgbW9yZSBpbiBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGI0OTRjZjc1NDY1YThmNTg1YjkzMWVhMjlkNDg2NThmODVkNTEzM2IuLjk5YTNi
NzU0MTg1NWZmOGRmNTViNTQzNWE5MzZkYjFkODNmZjUyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3Rh
dGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzIHNvIHRoYXQgd2UgY2FuIGJlbmVmaXQgZnJvbSBD
bGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRp
c3RpY3NVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAg
ICAgIChJUEM6OmFkZEFzeW5jUmVwbHlIYW5kbGVyKToKKyAgICAgICAgKElQQzo6Y2xlYXJBc3lu
Y1JlcGx5SGFuZGxlcnMpOgorICAgICAgICAoSVBDOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtOjpzdHJlYW1XaXRoSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW06On5XZWJTb2NrZXRTdHJlYW0pOgorCiAyMDIxLTA1
LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNr
ZWRMb2NrIG1vcmUgaW4gSVBDOjpDb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggMTQ0YWZiN2MyZjkxMWZlOGNlNWViYzI3OWExODI5YTliZTAxZTBhYS4uOGZiZmM5Y2Rh
ZjVkZGIzOTRkNjM3MjY2ZGEwYjJiMGUxMTRlOGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBtb3JlIHN0YXRpYyBMb2NrcyB3aXRoIENoZWNr
ZWRMb2NrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MDQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVwbGFjZSBtb3JlIHN0YXRpYyBMb2NrcyB3aXRoIENoZWNrZWRMb2NrcyBzbyB0aGF0IHdlIGNh
biBiZW5lZml0IGZyb20gQ2xhbmcgVGhyZWFkIFNhZmV0eSBBbmFseXNpcy4KKworICAgICAgICAq
IERPTS9ET01JbnRlcm5hbC5tbToKKyAgICAgICAgKGdldERPTVdyYXBwZXIpOgorICAgICAgICAo
YWRkRE9NV3JhcHBlcik6CisgICAgICAgIChyZW1vdmVET01XcmFwcGVyKToKKwogMjAyMS0wNS0x
OSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIEJhc2U2
NCBlbmNvZGluZy9kZWNvZGluZyB0byBtYXRjaCBtb3JlIG1vZGVybiBXZWJLaXQgY29udmVudGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xhbmd1YWdlLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL0xhbmd1YWdlLmNwcAppbmRleCAxNzJkMDk4Yjg0ZDU2MDgxNGE0OWZiN2RhYjhhZjNkOGZl
OWE1ODQyLi5iZTYyNThkODU3ZTU5ODhmOTY5ODM5MDIwMmJjYzkzYzNjMTc4MjBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9MYW5ndWFnZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTGFu
Z3VhZ2UuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSA8d3RmL0xhbmd1YWdlLmg+CiAKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzYsNyArMzcsMTIgQEAKIAogbmFtZXNw
YWNlIFdURiB7CiAKLXN0YXRpYyBMb2NrIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNdXRleDsKK3N0
YXRpYyBDaGVja2VkTG9jayBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZUxvY2s7CitzdGF0aWMg
VmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkgV1RGX1JFUVVJUkVT
X0xPQ0socHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGVMb2NrKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGU7CisgICAgcmV0dXJuIG92ZXJyaWRl
OworfQogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5j
dGlvbj4gT2JzZXJ2ZXJNYXA7CiBzdGF0aWMgT2JzZXJ2ZXJNYXAmIG9ic2VydmVyTWFwKCkKQEAg
LTc4LDI0ICs4NCwxOCBAQCBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIH0KIAotc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFn
ZXNPdmVycmlkZSgpCi17Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3Ry
aW5nPj4gb3ZlcnJpZGU7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Ci0gICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgb3ZlcnJpZGUuY29uc3RydWN0
KCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIG92ZXJyaWRlOwotfQotCiBWZWN0b3I8U3RyaW5nPiB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKQogeworICAgIExvY2tlciBsb2NrZXIgeyBw
cmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZUxvY2sgfTsKICAgICByZXR1cm4gcHJlZmVycmVkTGFu
Z3VhZ2VzT3ZlcnJpZGUoKTsKIH0KIAogdm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlKQogewotICAgIHByZWZlcnJlZExhbmd1
YWdlc092ZXJyaWRlKCkgPSBvdmVycmlkZTsKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZUxvY2sgfTsKKyAgICAgICAgcHJlZmVycmVkTGFu
Z3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJyaWRlOworICAgIH0KICAgICBsYW5ndWFnZURpZENoYW5n
ZSgpOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGlzb2xh
dGVkQ29weShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncykKIFZlY3RvcjxTdHJpbmc+IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGVMb2NrIH07CiAgICAgICAgIFZlY3RvcjxT
dHJpbmc+JiBvdmVycmlkZSA9IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CiAgICAgICAg
IGlmICghb3ZlcnJpZGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGlzb2xhdGVkQ29w
eShvdmVycmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBmZjE2NzkwMmZjN2M0MGE0NTQ2NDUz
MDMyMTkzMWZjYTNjNzM5NWQ2Li41NzBiNzhiNDliMzA5ZmY0OGFkODkwYWQxNTM0YzhjMjc1YzI5
YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKIAogbmFtZXNwYWNlIFdU
RiB7CiAKK0NoZWNrZWRMb2NrIFRocmVhZDo6c19hbGxUaHJlYWRzTG9jazsKKwogc3RhdGljIE9w
dGlvbmFsPHNpemVfdD4gc3RhY2tTaXplKFRocmVhZFR5cGUgdGhyZWFkVHlwZSkKIHsKICAgICAv
LyBSZXR1cm4gdGhlIHN0YWNrIHNpemUgZm9yIHRoZSBjcmVhdGVkIHRocmVhZCBiYXNlZCBvbiBp
dHMgdHlwZS4KQEAgLTkxLDcgKzkzLDcgQEAgcHVibGljOgogI2VuZGlmCiB9OwogCi1IYXNoU2V0
PFRocmVhZCo+JiBUaHJlYWQ6OmFsbFRocmVhZHMoY29uc3QgTG9ja0hvbGRlciYpCitIYXNoU2V0
PFRocmVhZCo+JiBUaHJlYWQ6OmFsbFRocmVhZHMoKQogewogICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWxsVGhyZWFkczsKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKQEAgLTEwMSwxMCArMTAzLDkgQEAgSGFzaFNldDxUaHJlYWQqPiYg
VGhyZWFkOjphbGxUaHJlYWRzKGNvbnN0IExvY2tIb2xkZXImKQogICAgIHJldHVybiBhbGxUaHJl
YWRzOwogfQogCi1Mb2NrJiBUaHJlYWQ6OmFsbFRocmVhZHNNdXRleCgpCitDaGVja2VkTG9jayYg
VGhyZWFkOjphbGxUaHJlYWRzTG9jaygpCiB7Ci0gICAgc3RhdGljIExvY2sgbXV0ZXg7Ci0gICAg
cmV0dXJuIG11dGV4OworICAgIHJldHVybiBzX2FsbFRocmVhZHNMb2NrOwogfQogCiBjb25zdCBj
aGFyKiBUaHJlYWQ6Om5vcm1hbGl6ZVRocmVhZE5hbWUoY29uc3QgY2hhciogdGhyZWFkTmFtZSkK
QEAgLTIxOCw5ICsyMTksOSBAQCBSZWY8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZShjb25zdCBjaGFy
KiBuYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgZW50cnlQb2ludCwgVGhyZQogICAgIC8vIGNhbGxl
ZCBUaHJlYWQ6OmRpZEV4aXQgdG8gdW5yZWdpc3RlciBpdHNlbGYgZnJvbSBhbGxUaHJlYWRzLiBS
ZWdpc3RlcmluZyBzdWNoIGEgdGhyZWFkIHdpbGwgcmVnaXN0ZXIgYSBzdGFsZSB0aHJlYWQgcG9p
bnRlciB0byBhbGxUaHJlYWRzLCB3aGljaCB3aWxsIG5vdCBiZSByZW1vdmVkCiAgICAgLy8gZXZl
biBhZnRlciBUaHJlYWQgaXMgZGVzdHJveWVkLiBSZWdpc3RlciBhIHRocmVhZCBvbmx5IHdoZW4g
aXQgaGFzIG5vdCB1bnJlZ2lzdGVyZWQgaXRzZWxmIGZyb20gYWxsVGhyZWFkcyB5ZXQuCiAgICAg
ewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFsbFRocmVhZHNNdXRleCgpKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IGFsbFRocmVhZHNMb2NrKCkgfTsKICAgICAgICAgaWYgKCF0
aHJlYWQtPm1fZGlkVW5yZWdpc3RlckZyb21BbGxUaHJlYWRzKQotICAgICAgICAgICAgYWxsVGhy
ZWFkcyhsb2NrZXIpLmFkZCh0aHJlYWQucHRyKCkpOworICAgICAgICAgICAgYWxsVGhyZWFkcygp
LmFkZCh0aHJlYWQucHRyKCkpOwogICAgIH0KIAogICAgIEFTU0VSVCghdGhyZWFkLT5zdGFjaygp
LmlzRW1wdHkoKSk7CkBAIC0yNDQsOCArMjQ1LDggQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVtb3Zl
VGhyZWFkRnJvbVRocmVhZEdyb3VwKCkKIHZvaWQgVGhyZWFkOjpkaWRFeGl0KCkKIHsKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxsVGhyZWFkc011dGV4KCkpOwotICAg
ICAgICBhbGxUaHJlYWRzKGxvY2tlcikucmVtb3ZlKHRoaXMpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgYWxsVGhyZWFkc0xvY2soKSB9OworICAgICAgICBhbGxUaHJlYWRzKCkucmVtb3ZlKHRo
aXMpOwogICAgICAgICBtX2RpZFVucmVnaXN0ZXJGcm9tQWxsVGhyZWFkcyA9IHRydWU7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZy5oCmluZGV4IDk0OTVkNmMxYjA4YWE0ZGNmYzUwZGQxMzBlYTMzZjEzNjQy
YmM5OTYuLmM0MmUzMDRmMzJiYjRmNzgyYjY4MjIxMjFkMzA1YjY5OWExMzJmNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3Rk
aW50Lmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExv
Y2suaD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5o
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMTE2LDggKzExNyw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgVGhyZWFkJiBjdXJyZW50KCk7CiAKICAgICAvLyBTZXQgb2YgYWxsIFdURjo6
VGhyZWFkIGNyZWF0ZWQgdGhyZWFkcy4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEhh
c2hTZXQ8VGhyZWFkKj4mIGFsbFRocmVhZHMoY29uc3QgTG9ja0hvbGRlciYpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgTG9jayYgYWxsVGhyZWFkc011dGV4KCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBIYXNoU2V0PFRocmVhZCo+JiBhbGxUaHJlYWRzKCkgV1RGX1JF
UVVJUkVTX0xPQ0soYWxsVGhyZWFkc0xvY2soKSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBDaGVja2VkTG9jayYgYWxsVGhyZWFkc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNfYWxs
VGhyZWFkc0xvY2spOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bWJlck9m
VGhyZWFkR3JvdXBzKCk7CiAKQEAgLTMyOCw2ICszMjksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3Rh
dGljIFRocmVhZCogY3VycmVudE1heUJlTnVsbCgpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgQ2hl
Y2tlZExvY2sgc19hbGxUaHJlYWRzTG9jazsKKwogICAgIEpvaW5hYmxlU3RhdGUgbV9qb2luYWJs
ZVN0YXRlIHsgSm9pbmFibGUgfTsKICAgICBib29sIG1faXNTaHV0dGluZ0Rvd24gOiAxOwogICAg
IGJvb2wgbV9kaWRFeGl0IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IGE1ZDc0YWZlYWVjZWVhN2NkZGY3YmIxNzlk
NDIzZDlkZmM5NTJjMGQuLjRkNmIwZDU1YzEwYWRiNjdkMGYxZTdlZmIzYTM1NGFhNjU3N2QwOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VVJMLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91aWRuYS5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CkBAIC0yNjcsMTYg
KzI2OCwxNiBAQCBzdGF0aWMgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChTdHJpbmdWaWV3IHBy
b3RvY29sKQogCiAjZW5kaWYKIAotc3RhdGljIExvY2sgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmdMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nTG9jazsKIAogdXNpbmcgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+Owotc3RhdGljIERlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcoKQorc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSBXVEZfUkVRVUlSRVNfTE9DSyhkZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZ0xvY2spCiB7CiAgICAgc3RhdGljIERlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
OwogICAgIHJldHVybiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwOwogfQogCi1zdGF0aWMgRGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcmIGVuc3VyZURlZmF1bHRQb3J0Rm9yUHJv
dG9jb2xNYXBGb3JUZXN0aW5nKCkKK3N0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZyYgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSBXVEZf
UkVRVUlSRVNfTE9DSyhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZ0xvY2spCiB7
CiAgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKTsKICAg
ICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCkBAIC0yODYsMjUgKzI4NywyNiBAQCBz
dGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcmIGVuc3VyZURlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZQogCiB2b2lkIHJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90
b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JU
ZXN0aW5nTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xN
YXBGb3JUZXN0aW5nTG9jayB9OwogICAgIGVuc3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBG
b3JUZXN0aW5nKCkuYWRkKHByb3RvY29sLCBwb3J0KTsKIH0KIAogdm9pZCBjbGVhckRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayB9OwogICAg
IGlmIChhdXRvKiBtYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpKQog
ICAgICAgICBtYXAtPmNsZWFyKCk7CiB9CiAKIE9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9y
dEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCiB7Ci0gICAgaWYgKGF1dG8qIG92ZXJy
aWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkgewotICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0
aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChvdmVycmlkZU1hcCk7IC8vIE5vIG5lZWQgdG8gbnVs
bCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFwIGNhbm5vdCBiZWNvbWUgbnVsbCBh
ZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG92ZXJyaWRlTWFw
LT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0gICAgICAgIGlmIChp
dGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0
b3ItPnZhbHVlOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayB9OworICAgICAgICBpZiAoYXV0byogb3ZlcnJpZGVN
YXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpKSB7CisgICAgICAgICAg
ICBhdXRvIGl0ZXJhdG9yID0gb3ZlcnJpZGVNYXAtPmZpbmQocHJvdG9jb2wudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKTsKKyAgICAgICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+
ZW5kKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAg
fQogICAgIH0KICAgICByZXR1cm4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKHBy
b3RvY29sKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3Bw
IGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKaW5kZXggNTNjMGVmMGRjMDBiMzk0
MmQzOWI2NThhOGRjYzBkNmUwNGNmNmQxMy4uZTA3MzExNTQyOTFiZmQwN2M0Y2MxNmRhMDQyYWFh
ZGI1OWM5ZTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9zcGkvY2YvQ0ZCdW5kbGVTUEkuaD4KQEAg
LTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXN0YXRpYyBMb2NrIHByZWZlcnJl
ZExhbmd1YWdlc011dGV4Oworc3RhdGljIENoZWNrZWRMb2NrIHByZWZlcnJlZExhbmd1YWdlc0xv
Y2s7CiAKICNpZiBQTEFURk9STShNQUMpCiBzdGF0aWMgdm9pZCBsYW5ndWFnZVByZWZlcmVuY2Vz
RGlkQ2hhbmdlKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYsIGNv
bnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyB2b2lk
IGxhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2UoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZv
aWQqLCBDRlN0cmluCiB9CiAjZW5kaWYKIAotc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJy
ZWRMYW5ndWFnZXMoKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFnZXMo
KSBXVEZfUkVRVUlSRVNfTE9DSyhwcmVmZXJyZWRMYW5ndWFnZXNMb2NrKQogewogICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+IGxhbmd1YWdlczsKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIFN0cmlu
ZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoQ0ZTdHJpbmdSZWYgbGFuZ3VhZ2UpCiB2b2lkIHBsYXRm
b3JtTGFuZ3VhZ2VEaWRDaGFuZ2UoKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBwcmVmZXJyZWRMYW5ndWFnZXNMb2NrIH07CiAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlcygp
LmNsZWFyKCk7CiAgICAgfQogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgbGlzdGVuRm9yTGFu
Z3VhZ2VDaGFuZ2VOb3RpZmljYXRpb25zKCkKIAogVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHByZWZl
cnJlZExhbmd1YWdlc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcHJlZmVycmVkTGFuZ3Vh
Z2VzTG9jayB9OwogICAgIFZlY3RvcjxTdHJpbmc+JiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzID0g
cHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAKICAgICBpZiAodXNlclByZWZlcnJlZExhbmd1YWdlcy5p
c0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IDNjYjAxODNjODAx
MWFkOGRhODJjMGU5NDJiNzY5Mzg5ODFiZDNkY2UuLjNlODQ2M2Y0OTMwODllMzVhZDk3NDMwZDU4
MzE5YjYzMWNkNDU2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMzAsOCAr
MzAsOCBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx1bmljb2Rl
L3Vub3JtMi5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oPgpAQCAtMzYwLDE1ICszNjAsMTEgQEAgU3RyaW5nVmlldzo6VW5kZXJseWluZ1N0cmlu
Zzo6VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiB9CiAKLXN0
YXRpYyBMb2NrIHVuZGVybHlpbmdTdHJpbmdzTXV0ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgdW5k
ZXJseWluZ1N0cmluZ3NMb2NrOwogCi1zdGF0aWMgSGFzaE1hcDxjb25zdCBTdHJpbmdJbXBsKiwg
U3RyaW5nVmlldzo6VW5kZXJseWluZ1N0cmluZyo+JiB1bmRlcmx5aW5nU3RyaW5ncygpCitzdGF0
aWMgSGFzaE1hcDxjb25zdCBTdHJpbmdJbXBsKiwgU3RyaW5nVmlldzo6VW5kZXJseWluZ1N0cmlu
Zyo+JiB1bmRlcmx5aW5nU3RyaW5ncygpIFdURl9SRVFVSVJFU19MT0NLKHVuZGVybHlpbmdTdHJp
bmdzTG9jaykKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3Qg
U3RyaW5nSW1wbCosIFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdTdHJpbmcqPj4gbWFwOwotICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7Ci0gICAgICAgIG1hcC5jb25zdHJ1Y3QoKTsKLSAgICB9KTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBTdHJpbmdJbXBsKiwgU3RyaW5nVmlldzo6VW5kZXJs
eWluZ1N0cmluZyo+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtMzc2LDcgKzM3Miw3
IEBAIHZvaWQgU3RyaW5nVmlldzo6aW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmdU
b0JlRGVzdHJveWVkKQogewogICAgIFVuZGVybHlpbmdTdHJpbmcqIHVuZGVybHlpbmdTdHJpbmc7
CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlpbmdTdHJpbmdz
TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdW5kZXJseWluZ1N0cmluZ3NMb2NrIH07
CiAgICAgICAgIHVuZGVybHlpbmdTdHJpbmcgPSB1bmRlcmx5aW5nU3RyaW5ncygpLnRha2UoJnN0
cmluZ1RvQmVEZXN0cm95ZWQpOwogICAgICAgICBpZiAoIXVuZGVybHlpbmdTdHJpbmcpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zOTMsNyArMzg5LDcgQEAgYm9vbCBTdHJpbmdWaWV3Ojp1bmRl
cmx5aW5nU3RyaW5nSXNWYWxpZCgpIGNvbnN0CiB2b2lkIFN0cmluZ1ZpZXc6OmFkb3B0VW5kZXJs
eWluZ1N0cmluZyhVbmRlcmx5aW5nU3RyaW5nKiB1bmRlcmx5aW5nU3RyaW5nKQogewogICAgIGlm
IChtX3VuZGVybHlpbmdTdHJpbmcpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh1
bmRlcmx5aW5nU3RyaW5nc011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHVuZGVybHlp
bmdTdHJpbmdzTG9jayB9OwogICAgICAgICBpZiAoIS0tbV91bmRlcmx5aW5nU3RyaW5nLT5yZWZD
b3VudCkgewogICAgICAgICAgICAgaWYgKG1fdW5kZXJseWluZ1N0cmluZy0+aXNWYWxpZCkgewog
ICAgICAgICAgICAgICAgIHVuZGVybHlpbmdTdHJpbmdzKCkucmVtb3ZlKCZtX3VuZGVybHlpbmdT
dHJpbmctPnN0cmluZyk7CkBAIC00MTAsNyArNDA2LDcgQEAgdm9pZCBTdHJpbmdWaWV3OjpzZXRV
bmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykKICAgICBpZiAoIXN0cmlu
ZykKICAgICAgICAgdW5kZXJseWluZ1N0cmluZyA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodW5kZXJseWluZ1N0cmluZ3NNdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyB1bmRlcmx5aW5nU3RyaW5nc0xvY2sgfTsKICAgICAgICAgYXV0
byByZXN1bHQgPSB1bmRlcmx5aW5nU3RyaW5ncygpLmFkZChzdHJpbmcsIG51bGxwdHIpOwogICAg
ICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbmV3IFVuZGVybHlpbmdTdHJpbmcoKnN0cmluZyk7CkBAIC00MjUsNyArNDIxLDcg
QEAgdm9pZCBTdHJpbmdWaWV3OjpzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ1ZpZXcm
IG90aGVyU3RyaW5nKQogewogICAgIFVuZGVybHlpbmdTdHJpbmcqIHVuZGVybHlpbmdTdHJpbmcg
PSBvdGhlclN0cmluZy5tX3VuZGVybHlpbmdTdHJpbmc7CiAgICAgaWYgKHVuZGVybHlpbmdTdHJp
bmcpIHsKLSAgICAgICAgLy8gSXQncyBzYWZlIHRvIGluYyB0aGUgcmVmQ291bnQgaGVyZSB3aXRo
b3V0IGxvY2tpbmcgdW5kZXJseWluZ1N0cmluZ3NNdXRleAorICAgICAgICAvLyBJdCdzIHNhZmUg
dG8gaW5jIHRoZSByZWZDb3VudCBoZXJlIHdpdGhvdXQgbG9ja2luZyB1bmRlcmx5aW5nU3RyaW5n
c0xvY2sKICAgICAgICAgLy8gYmVjYXVzZSBVbmRlcmx5aW5nU3RyaW5nOjpyZWZDb3VudCBpcyBh
IHN0ZDo6YXRvbWljX3VpbnQsIGFuZCB3ZSdyZQogICAgICAgICAvLyBndWFyYW50ZWVkIHRoYXQg
dGhlIFN0cmluZ1ZpZXcgd2UncmUgY29weWluZyBpdCBmcm9tIHdpbGwgYXQgbGVhc3QKICAgICAg
ICAgLy8gaGF2ZSAxIHJlZiBvbiBpdCwgdGhlcmVieSBrZWVwaW5nIGl0IGFsaXZlIHJlZ2FyZGxl
c3Mgb2Ygd2hhdCBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3Uv
Q29sbGF0b3JJQ1UuY3BwIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1Uu
Y3BwCmluZGV4IDY3NjYwNzNjOWY2YjljZTBmYTU2NDFmYTVjYWIxNWE5YjAxZmNiYWQuLmYxN2Uw
MjU5YWNiYWNkMTcyZTZlZjczNmFlYzg5NmE2ZTI5YmFhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91
bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1ZGUg
PG11dGV4PgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgogCiAjaWYgT1MoREFSV0lOKSAmJiBVU0UoQ0YpCkBAIC00NSwxMiArNDUsMTEgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKLXN0YXRpYyBVQ29sbGF0b3IqIGNhY2hlZENvbGxhdG9yOwor
c3RhdGljIENoZWNrZWRMb2NrIGNhY2hlZENvbGxhdG9yTG9jazsKK3N0YXRpYyBVQ29sbGF0b3Iq
IGNhY2hlZENvbGxhdG9yIFdURl9HVUFSREVEX0JZX0xPQ0soY2FjaGVkQ29sbGF0b3JMb2NrKTsK
IHN0YXRpYyBjaGFyKiBjYWNoZWRDb2xsYXRvckxvY2FsZTsKIHN0YXRpYyBib29sIGNhY2hlZENv
bGxhdG9yU2hvdWxkU29ydExvd2VyY2FzZUZpcnN0OwogCi1zdGF0aWMgTG9jayBjYWNoZWRDb2xs
YXRvck11dGV4OwotCiAjaWYgIShPUyhEQVJXSU4pICYmIFVTRShDRikpCiAKIHN0YXRpYyBpbmxp
bmUgY29uc3QgY2hhciogcmVzb2x2ZURlZmF1bHRMb2NhbGUoY29uc3QgY2hhciogbG9jYWxlKQpA
QCAtMTA2LDcgKzEwNSw3IEBAIENvbGxhdG9yOjpDb2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUs
IGJvb2wgc2hvdWxkU29ydExvd2VyY2FzZUZpcnN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNh
Y2hlZENvbGxhdG9yTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVkQ29sbGF0
b3JMb2NrIH07CiAgICAgICAgIGlmIChjYWNoZWRDb2xsYXRvciAmJiBsb2NhbGVzTWF0Y2goY2Fj
aGVkQ29sbGF0b3JMb2NhbGUsIGxvY2FsZSkgJiYgY2FjaGVkQ29sbGF0b3JTaG91bGRTb3J0TG93
ZXJjYXNlRmlyc3QgPT0gc2hvdWxkU29ydExvd2VyY2FzZUZpcnN0KSB7CiAgICAgICAgICAgICBt
X2NvbGxhdG9yID0gY2FjaGVkQ29sbGF0b3I7CiAgICAgICAgICAgICBtX2xvY2FsZSA9IGNhY2hl
ZENvbGxhdG9yTG9jYWxlOwpAQCAtMTM2LDcgKzEzNSw3IEBAIENvbGxhdG9yOjpDb2xsYXRvcihj
b25zdCBjaGFyKiBsb2NhbGUsIGJvb2wgc2hvdWxkU29ydExvd2VyY2FzZUZpcnN0KQogCiBDb2xs
YXRvcjo6fkNvbGxhdG9yKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNhY2hlZENv
bGxhdG9yTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBjYWNoZWRDb2xsYXRvckxvY2sgfTsK
ICAgICBpZiAoY2FjaGVkQ29sbGF0b3IpIHsKICAgICAgICAgdWNvbF9jbG9zZShjYWNoZWRDb2xs
YXRvcik7CiAgICAgICAgIGZhc3RGcmVlKGNhY2hlZENvbGxhdG9yTG9jYWxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwCmluZGV4IDlkZDdhYmI1NTU1OTQyZDBjOTFlZjg4
MDA3Y2I2NmQxYTcwNGQ1NzguLjUzNzZkZDkwZWY4Y2IyMzY2ZjM1NmEwZDY1ZmU4YTNjZjdjYTc5
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcApAQCAtMjksMTQgKzI5
LDE1IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0SW5saW5lcy5o
PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1zdGF0aWMgTG9jayBzZXJpYWxpemF0aW9uQ29udGV4
dE1hcE11dGV4Oworc3RhdGljIENoZWNrZWRMb2NrIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTG9j
azsKIAotc3RhdGljIEhhc2hNYXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQqPiYg
c2VyaWFsaXphdGlvbkNvbnRleHRNYXAoTG9ja2VyPExvY2s+JikKK3N0YXRpYyBIYXNoTWFwPFRo
cmVhZCosIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4mIHNlcmlhbGl6YXRpb25Db250ZXh0TWFw
KCkgV1RGX1JFUVVJUkVTX0xPQ0soc2VyaWFsaXphdGlvbkNvbnRleHRNYXBMb2NrKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFRocmVhZCosIElEQlNlcmlhbGl6YXRpb25D
b250ZXh0Kj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwpAQCAtNDUsOCArNDYsOCBAQCBzdGF0aWMg
SGFzaE1hcDxUaHJlYWQqLCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCo+JiBzZXJpYWxpemF0aW9u
Q29udGV4dE1hcChMb2NrZQogUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBJREJTZXJpYWxp
emF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVGb3JDdXJyZW50VGhyZWFkKCkKIHsKICAgICBhdXRv
JiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNl
cmlhbGl6YXRpb25Db250ZXh0TWFwTXV0ZXgpOwotICAgIGF1dG9baXRlciwgaXNOZXdFbnRyeV0g
PSBzZXJpYWxpemF0aW9uQ29udGV4dE1hcChsb2NrZXIpLmFkZCgmdGhyZWFkLCBudWxscHRyKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgc2VyaWFsaXphdGlvbkNvbnRleHRNYXBMb2NrIH07CisgICAg
YXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkuYWRkKCZ0
aHJlYWQsIG51bGxwdHIpOwogICAgIGlmIChpc05ld0VudHJ5KSB7CiAgICAgICAgIFJlZjxJREJT
ZXJpYWxpemF0aW9uQ29udGV4dD4gcHJvdGVjdGVkQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQodGhyZWFkKSk7CiAgICAgICAgIGl0ZXItPnZhbHVlID0gcHJv
dGVjdGVkQ29udGV4dC5wdHIoKTsKQEAgLTU4LDE1ICs1OSwxNSBAQCBSZWY8SURCU2VyaWFsaXph
dGlvbkNvbnRleHQ+IElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRPckNyZWF0ZUZvckN1cnJl
bnRUaHJlYQogCiBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6fklEQlNlcmlhbGl6YXRpb25Db250
ZXh0KCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNlcmlhbGl6YXRpb25Db250ZXh0TWFw
TXV0ZXgpOwotICAgIEFTU0VSVCh0aGlzID09IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKGxvY2tl
cikuZ2V0KCZtX3RocmVhZCkpOworICAgIExvY2tlciBsb2NrZXIgeyBzZXJpYWxpemF0aW9uQ29u
dGV4dE1hcExvY2sgfTsKKyAgICBBU1NFUlQodGhpcyA9PSBzZXJpYWxpemF0aW9uQ29udGV4dE1h
cCgpLmdldCgmbV90aHJlYWQpKTsKIAogICAgIGlmIChtX3ZtKSB7CiAgICAgICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2soKm1fdm0pOwogICAgICAgICBtX2dsb2JhbE9iamVjdC5jbGVhcigpOwog
ICAgICAgICBtX3ZtID0gbnVsbHB0cjsKICAgICB9Ci0gICAgc2VyaWFsaXphdGlvbkNvbnRleHRN
YXAobG9ja2VyKS5yZW1vdmUoJm1fdGhyZWFkKTsKKyAgICBzZXJpYWxpemF0aW9uQ29udGV4dE1h
cCgpLnJlbW92ZSgmbV90aHJlYWQpOwogfQogCiB2b2lkIElEQlNlcmlhbGl6YXRpb25Db250ZXh0
Ojppbml0aWFsaXplVk0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCA5YjAwMTRjYWFjM2UyODRhZjhkMmZiYjJm
NjRjMzQ3ZDNjZjNiNGE1Li4xMTUwNmZiY2I5ODQ3ODJjNjdiNzVmYTliOTU5ZTlmNGQ3MDBhYmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCkBAIC0yNTIsOCArMjUzLDggQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6c2No
ZWR1bGVEaXNwYXRjaEV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKICAgICBxdWV1ZVRhc2tUb0Rp
c3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFdURk1vdmUoZXZlbnQp
KTsKIH0KIAotc3RhdGljIExvY2sgc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jazsKLXN0YXRp
YyBIYXNoTWFwPFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDRGF0YUNoYW5uZWxIYW5kbGVyPj4mIHJ0Y0RhdGFDaGFubmVsTG9jYWxNYXAoKQorc3RhdGlj
IENoZWNrZWRMb2NrIHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2s7CitzdGF0aWMgSGFzaE1h
cDxSVENEYXRhQ2hhbm5lbExvY2FsSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4+JiBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkgV1RGX1JFUVVJUkVTX0xP
Q0soc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jaykKIHsKICAgICBBU1NFUlQoc19ydGNEYXRh
Q2hhbm5lbExvY2FsTWFwTG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPj4+IG1hcDsKQEAgLTI3OSw3ICsyODAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4gUlRDRGF0YUNoYW5uZWw6OmRldGFj
aCgpCiAgICAgbV9pc0RldGFjaGVkID0gdHJ1ZTsKICAgICBtX3JlYWR5U3RhdGUgPSBSVENEYXRh
Q2hhbm5lbFN0YXRlOjpDbG9zZWQ7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfcnRj
RGF0YUNoYW5uZWxMb2NhbE1hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzX3J0Y0RhdGFD
aGFubmVsTG9jYWxNYXBMb2NrIH07CiAgICAgcnRjRGF0YUNoYW5uZWxMb2NhbE1hcCgpLmFkZChp
ZGVudGlmaWVyKCkuY2hhbm5lbElkZW50aWZpZXIsIFdURk1vdmUobV9oYW5kbGVyKSk7CiAKICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPihpZGVudGlmaWVyKCks
IGxhYmVsKCkuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMoKSwgc3RhdGUpOwpAQCAtMjkwLDEzICsy
OTEsMTMgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6cmVtb3ZlRnJvbURhdGFDaGFubmVsTG9jYWxN
YXBJZk5lZWRlZCgpCiAgICAgaWYgKCFtX2lzRGV0YWNoZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2sgfTsKICAg
ICBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkucmVtb3ZlKGlkZW50aWZpZXIoKS5jaGFubmVsSWRl
bnRpZmllcik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IFJU
Q0RhdGFDaGFubmVsOjpoYW5kbGVyRnJvbUlkZW50aWZpZXIoUlRDRGF0YUNoYW5uZWxMb2NhbElk
ZW50aWZpZXIgY2hhbm5lbElkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19y
dGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayB9OwogICAgIHJldHVybiBydGNEYXRhQ2hhbm5lbExv
Y2FsTWFwKCkudGFrZShjaGFubmVsSWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMTE3NGU2YmNkZDA2MGU2
NmM2MzM5ODMyZWNiOGQxZTgxYWQ1ZDgzMi4uYzFkYjhlZmEwYjAwZjNlMzIxYTkwZTI5NjQ5ZDdl
NjMzNDE4NzExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgIldpbmRvd0V2ZW50TG9vcC5o
IgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CkBAIC0xNTIsMTYgKzE1MywxNSBAQCBzdGF0aWMgYm9vbCByZXRyaWV2ZVRleHRSZXN1
bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBjb25zdCBTdHJpbmcmIHF1ZQogfQog
CiAvLyBGSVhNRTogbW92ZSBhbGwgZ3VpZC1yZWxhdGVkIGZ1bmN0aW9ucyB0byBhIERhdGFiYXNl
VmVyc2lvblRyYWNrZXIgY2xhc3MuCi1zdGF0aWMgTG9jayBndWlkTXV0ZXg7CitzdGF0aWMgQ2hl
Y2tlZExvY2sgZ3VpZExvY2s7CiAKLXN0YXRpYyBIYXNoTWFwPERhdGFiYXNlR1VJRCwgU3RyaW5n
PiYgZ3VpZFRvVmVyc2lvbk1hcCgpCitzdGF0aWMgSGFzaE1hcDxEYXRhYmFzZUdVSUQsIFN0cmlu
Zz4mIGd1aWRUb1ZlcnNpb25NYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhndWlkTG9jaykKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxEYXRhYmFzZUdVSUQsIFN0cmluZz4+IG1h
cDsKICAgICByZXR1cm4gbWFwOwogfQogCi0vLyBOT1RFOiBDYWxsZXIgbXVzdCBsb2NrIGd1aWRN
dXRleCgpLgotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUdVSURWZXJzaW9uTWFwKERhdGFiYXNl
R1VJRCBndWlkLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24pCitzdGF0aWMgaW5saW5lIHZvaWQg
dXBkYXRlR1VJRFZlcnNpb25NYXAoRGF0YWJhc2VHVUlEIGd1aWQsIGNvbnN0IFN0cmluZyYgbmV3
VmVyc2lvbikgV1RGX1JFUVVJUkVTX0xPQ0soZ3VpZExvY2spCiB7CiAgICAgLy8gTm90ZTogSXQg
aXMgbm90IHNhZmUgdG8gcHV0IGFuIGVtcHR5IHN0cmluZyBpbnRvIHRoZSBndWlkVG9WZXJzaW9u
TWFwKCkgbWFwLgogICAgIC8vIFRoYXQncyBiZWNhdXNlIHRoZSBtYXAgaXMgY3Jvc3MtdGhyZWFk
LCBidXQgZW1wdHkgc3RyaW5ncyBhcmUgcGVyLXRocmVhZC4KQEAgLTE3MywxMyArMTczLDEzIEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVHVUlEVmVyc2lvbk1hcChEYXRhYmFzZUdVSUQgZ3Vp
ZCwgY29uc3QgU3RyaW5nJiBuZXdWZXJzCiAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnNldChndWlk
LCBuZXdWZXJzaW9uLmlzRW1wdHkoKSA/IFN0cmluZygpIDogbmV3VmVyc2lvbi5pc29sYXRlZENv
cHkoKSk7CiB9CiAKLXN0YXRpYyBIYXNoTWFwPERhdGFiYXNlR1VJRCwgSGFzaFNldDxEYXRhYmFz
ZSo+PiYgZ3VpZFRvRGF0YWJhc2VNYXAoKQorc3RhdGljIEhhc2hNYXA8RGF0YWJhc2VHVUlELCBI
YXNoU2V0PERhdGFiYXNlKj4+JiBndWlkVG9EYXRhYmFzZU1hcCgpIFdURl9SRVFVSVJFU19MT0NL
KGd1aWRMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPERhdGFiYXNl
R1VJRCwgSGFzaFNldDxEYXRhYmFzZSo+Pj4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgRGF0YWJhc2VHVUlEIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCitzdGF0aWMgaW5saW5lIERhdGFiYXNlR1VJ
RCBndWlkRm9yT3JpZ2luQW5kTmFtZShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lKSBXVEZfUkVRVUlSRVNfTE9DSyhndWlkTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIERhdGFiYXNlR1VJRD4+IG1hcDsKICAgICByZXR1cm4g
bWFwLmdldCgpLmVuc3VyZShtYWtlU3RyaW5nKG9yaWdpbiwgJy8nLCBuYW1lKSwgW10gewpAQCAt
MjAxLDcgKzIwMSw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShEYXRhYmFzZUNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlCiAgICAgLCBtX2RhdGFiYXNl
QXV0aG9yaXplcihEYXRhYmFzZUF1dGhvcml6ZXI6OmNyZWF0ZSh1bnF1YWxpZmllZEluZm9UYWJs
ZU5hbWUpKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlkTXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ3VpZExvY2sgfTsKIAogICAgICAgICBtX2d1
aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZShzZWN1cml0eU9yaWdpbigpLnNlY3VyaXR5T3JpZ2lu
KCktPnRvU3RyaW5nKCksIG5hbWUpOwogICAgICAgICBndWlkVG9EYXRhYmFzZU1hcCgpLmVuc3Vy
ZShtX2d1aWQsIFtdIHsKQEAgLTM0OCw3ICszNDgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRh
YmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRh
YgogCiAgICAgU3RyaW5nIGN1cnJlbnRWZXJzaW9uOwogICAgIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ3VpZExv
Y2sgfTsKIAogICAgICAgICBhdXRvIGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9n
dWlkKTsKICAgICAgICAgaWYgKGVudHJ5ICE9IGd1aWRUb1ZlcnNpb25NYXAoKS5lbmQoKSkgewpA
QCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UoKQogICAgIERh
dGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucmVtb3ZlT3BlbkRhdGFiYXNlKCp0aGlzKTsKIAog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgZ3VpZExvY2sgfTsKIAogICAgICAgICBhdXRvIGl0ID0gZ3VpZFRv
RGF0YWJhc2VNYXAoKS5maW5kKG1fZ3VpZCk7CiAgICAgICAgIEFTU0VSVChpdCAhPSBndWlkVG9E
YXRhYmFzZU1hcCgpLmVuZCgpKTsKQEAgLTQ5NSwxNCArNDk1LDE0IEBAIHZvaWQgRGF0YWJhc2U6
OnNldEV4cGVjdGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24pCiAKIFN0cmluZyBEYXRh
YmFzZTo6Z2V0Q2FjaGVkVmVyc2lvbigpIGNvbnN0CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhndWlkTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAg
cmV0dXJuIGd1aWRUb1ZlcnNpb25NYXAoKS5nZXQobV9ndWlkKS5pc29sYXRlZENvcHkoKTsKIH0K
IAogdm9pZCBEYXRhYmFzZTo6c2V0Q2FjaGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIGFjdHVhbFZl
cnNpb24pCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAgdXBkYXRlR1VJRFZlcnNpb25NYXAobV9n
dWlkLCBhY3R1YWxWZXJzaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IGNhMDFiMTAxNWFkNjFjY2MzOWFkMzM5YjlhZGI3YmU0
NjlmMWIxYzguLjgyNTBlMmJiM2E2MzQ4ZGM5YjRjYWJhNjRhZTQ4YmM2M2RhM2Q5MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAtOTQs
NiArOTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXZWJHUFVEZXZpY2UpOwogCitDaGVja2VkTG9jayBXZWJHUFVEZXZpY2U6OnNfaW5zdGFu
Y2VzTG9jazsKKwogUmVmUHRyPFdlYkdQVURldmljZT4gV2ViR1BVRGV2aWNlOjp0cnlDcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+
JiYgYWRhcHRlcikKIHsKICAgICBpZiAoYXV0byBkZXZpY2UgPSBHUFVEZXZpY2U6OnRyeUNyZWF0
ZShhZGFwdGVyLT5vcHRpb25zKCkpKSB7CkBAIC0xMDQsMTYgKzEwNiwxNSBAQCBSZWZQdHI8V2Vi
R1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OnRyeUNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1IYXNoU2V0PFdlYkdQVURl
dmljZSo+JiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJikKK0hhc2hT
ZXQ8V2ViR1BVRGV2aWNlKj4mIFdlYkdQVURldmljZTo6aW5zdGFuY2VzKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJHUFVEZXZpY2UqPj4gaW5zdGFuY2VzOwogICAg
IHJldHVybiBpbnN0YW5jZXM7CiB9CiAKLUxvY2smIFdlYkdQVURldmljZTo6aW5zdGFuY2VzTXV0
ZXgoKQorQ2hlY2tlZExvY2smIFdlYkdQVURldmljZTo6aW5zdGFuY2VzTG9jaygpCiB7Ci0gICAg
c3RhdGljIExvY2sgbXV0ZXg7Ci0gICAgcmV0dXJuIG11dGV4OworICAgIHJldHVybiBzX2luc3Rh
bmNlc0xvY2s7CiB9CiAKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJl
ZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQpAQCAtMTI4LDggKzEyOSw4IEBAIFdlYkdQVURldmljZTo6
V2ViR1BVRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxjb25zdCBX
ZWJHUFVBZGFwCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5pc0RvY3VtZW50
KCkpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soaW5zdGFuY2VzTXV0ZXgoKSk7
Ci0gICAgICAgIGluc3RhbmNlcyhsb2NrKS5hZGQodGhpcyk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgaW5zdGFuY2VzKCkuYWRkKHRoaXMpOwog
ICAgIH0KIH0KIApAQCAtMTM4LDggKzEzOSw4IEBAIFdlYkdQVURldmljZTo6fldlYkdQVURldmlj
ZSgpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVURldmlj
ZSgqdGhpcyk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhXZWJHUFVQaXBlbGlu
ZTo6aW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJHUFVQ
aXBlbGluZTo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJH
UFVQaXBlbGluZTo6aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGZvciAoYXV0byYgZW50cnkg
OiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgIGlmIChlbnRyeS52
YWx1ZSA9PSB0aGlzKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIGFueSBXZWJH
UFVQaXBlbGluZSBmcm9tIHRoZSBpbnN0YW5jZXMgbGlzdCwgYXMgdGhleSBtYXkgc3RpbGwgZXhp
c3QuCiAgICAgICAgICAgICAgICAgLy8gT25seSByZW1vdmUgdGhlIGFzc29jaWF0aW9uIHdpdGgg
YSBXZWJHUFUgZGV2aWNlLgpAQCAtMTQ5LDkgKzE1MCw5IEBAIFdlYkdQVURldmljZTo6fldlYkdQ
VURldmljZSgpCiAgICAgfQogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soaW5zdGFu
Y2VzTXV0ZXgoKSk7Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZXMobG9jaykuY29udGFpbnModGhp
cykpOwotICAgICAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIEFTU0VSVChpbnN0YW5jZXMo
KS5jb250YWlucyh0aGlzKSk7CisgICAgICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgK
aW5kZXggYzljYzNjNGU0MzVjOTI2NGIyODE0ZDNkNjNjMjQwZmNiNjY3MDZjMy4uNzBmMWIxZGE3
MjkzZGZmYTEzMWEyNTVkNWI2NzVmYWM4YTBmMmEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJX
ZWJHUFVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVUXVldWUuaCIKICNpbmNsdWRlICJXZWJH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC04NCw4ICs4NSw4IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBSZWZQdHI8V2ViR1BVRGV2aWNlPiB0cnlDcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmKTsKIAotICAgIHN0YXRpYyBIYXNoU2V0PFdl
YkdQVURldmljZSo+JiBpbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpOwotICAgIHN0YXRpYyBM
b2NrJiBpbnN0YW5jZXNNdXRleCgpOworICAgIHN0YXRpYyBIYXNoU2V0PFdlYkdQVURldmljZSo+
JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkpOworICAgIHN0
YXRpYyBDaGVja2VkTG9jayYgaW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0
YW5jZXNMb2NrKTsKIAogICAgIGNvbnN0IFdlYkdQVUFkYXB0ZXImIGFkYXB0ZXIoKSBjb25zdCB7
IHJldHVybiBtX2FkYXB0ZXIuZ2V0KCk7IH0KICAgICBHUFVEZXZpY2UmIGRldmljZSgpIHsgcmV0
dXJuIG1fZGV2aWNlLmdldCgpOyB9CkBAIC0xMjYsNiArMTI3LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGlzcGF0Y2hVbmNhcHR1cmVkRXJyb3IoR1BVRXJyb3ImJik7CiAKKyAgICBzdGF0aWMg
Q2hlY2tlZExvY2sgc19pbnN0YW5jZXNMb2NrOworCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAgUmVmPGNvbnN0IFdlYkdQVUFkYXB0
ZXI+IG1fYWRhcHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lLmNwcAppbmRleCBlZTRhYjEwYWY4YjQwMmU2MTA5ZTgzN2YzM2QwZDVmNDc2OWIw
OGViLi4yMDVmMWVkMWY3YjdjNjNiNzc1MWIxMzQ5MTNkZjQ4N2ZjZTJjZGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwCkBAIC0zOSwx
NiArMzksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IYXNoTWFwPFdlYkdQVVBpcGVs
aW5lKiwgV2ViR1BVRGV2aWNlKj4mIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoY29uc3QgTG9j
a0hvbGRlciYpCitDaGVja2VkTG9jayBXZWJHUFVQaXBlbGluZTo6c19pbnN0YW5jZXNMb2NrOwor
CitIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4mIFdlYkdQVVBpcGVsaW5l
OjppbnN0YW5jZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdlYkdQ
VVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4+IGluc3RhbmNlczsKICAgICByZXR1cm4gaW5zdGFu
Y2VzOwogfQogCi1Mb2NrJiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTXV0ZXgoKQorQ2hlY2tl
ZExvY2smIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9j
ayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsK
IH0KIAogV2ViR1BVUGlwZWxpbmU6OldlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNl
LCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCkBAIC01OCw4ICs1OSw4IEBAIFdlYkdQVVBp
cGVsaW5lOjpXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJyb3JTY29w
ZXMmIGVycm9yU2NvcGVzCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAg
ICAgaW5zdGFuY2VzKGxvY2spLmFkZCh0aGlzLCAmZGV2aWNlKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcywg
JmRldmljZSk7CiAgICAgfQogfQogCkBAIC02OCw5ICs2OSw5IEBAIFdlYkdQVVBpcGVsaW5lOjp+
V2ViR1BVUGlwZWxpbmUoKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ry
b3lXZWJHUFVQaXBlbGluZSgqdGhpcyk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9j
ayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlcyhsb2NrKS5jb250
YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcyhsb2NrKS5yZW1vdmUodGhpcyk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgQVNTRVJUKGlu
c3RhbmNlcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRo
aXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lLmgKaW5kZXggZDdmMTFhMzM2MTQ0MjJiMTc1N2Y5MDRmOTVjNzU1NWYxM2JhMmMw
My4uOTk5YTk4YWU1MmE2YmIwOWFiNGFlZjY3NGFkMTM0YjY4OTAyNmM4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oCkBAIC0zMCw4ICszMCw4
IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJH
UFVPYmplY3RCYXNlLmgiCiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCisjaW5jbHVk
ZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvTG9jay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDggKzQzLDggQEAg
Y2xhc3MgV2ViR1BVUGlwZWxpbmUgOiBwdWJsaWMgR1BVT2JqZWN0QmFzZSwgcHVibGljIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHUFVQaXBl
bGluZSgpOwogCi0gICAgc3RhdGljIEhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZp
Y2UqPiYgaW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKTsKLSAgICBzdGF0aWMgTG9jayYgaW5z
dGFuY2VzTXV0ZXgoKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQ
VURldmljZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkp
OworICAgIHN0YXRpYyBDaGVja2VkTG9jayYgaW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xP
Q0soc19pbnN0YW5jZXNMb2NrKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclBpcGVsaW5l
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDb21wdXRlUGlw
ZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjMsNiArNjMsOSBAQCBwdWJsaWM6
CiAKIHByb3RlY3RlZDoKICAgICBXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmLCBHUFVFcnJv
clNjb3BlcyYpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNl
c0xvY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDhkMzRjNjI4MjlkNzE3YWUx
OGQ2ZDY5YzAxNWZiNzRiZDE5NTg2YTkuLmZlODBkNDAxMDA1ZTUxNGI5YzlmNGQ0NGMwN2U5N2Mw
OGRkMTU4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCkBAIC03Niw2ICs3Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlNvY2tldCk7CiAKK0NoZWNrZWRMb2NrIFdlYlNvY2tl
dDo6c19hbGxBY3RpdmVXZWJTb2NrZXRzTG9jazsKKwogY29uc3Qgc2l6ZV90IG1heFJlYXNvblNp
emVJbkJ5dGVzID0gMTIzOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZFByb3RvY29sQ2hh
cmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKQEAgLTE0NiwxNyArMTQ4LDE1IEBAIFdlYlNvY2tldDo6
V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX2V4dGVu
c2lvbnMoZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fcmVzdW1lVGltZXIoKnRoaXMsICZXZWJTb2Nr
ZXQ6OnJlc3VtZVRpbWVyRmlyZWQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2ZVdl
YlNvY2tldHNNdXRleCgpKTsKLQotICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykuYWRkKHRo
aXMpOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07Cisg
ICAgYWxsQWN0aXZlV2ViU29ja2V0cygpLmFkZCh0aGlzKTsKIH0KIAogV2ViU29ja2V0Ojp+V2Vi
U29ja2V0KCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhhbGxBY3RpdmVXZWJT
b2NrZXRzTXV0ZXgoKSk7Ci0KLSAgICAgICAgYWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKS5yZW1v
dmUodGhpcyk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxBY3RpdmVXZWJTb2NrZXRzTG9j
aygpIH07CisgICAgICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMoKS5yZW1vdmUodGhpcyk7CiAgICAg
fQogCiAgICAgaWYgKG1fY2hhbm5lbCkKQEAgLTE4OCwxNiArMTg4LDE1IEBAIEV4Y2VwdGlvbk9y
PFJlZjxXZWJTb2NrZXQ+PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjCiAgICAgcmV0dXJuIGNyZWF0ZShjb250ZXh0LCB1cmwsIFZlY3RvcjxTdHJp
bmc+IHsgMSwgcHJvdG9jb2wgfSk7CiB9CiAKLUhhc2hTZXQ8V2ViU29ja2V0Kj4mIFdlYlNvY2tl
dDo6YWxsQWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9sZGVyJikKK0hhc2hTZXQ8V2ViU29j
a2V0Kj4mIFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cygpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8V2ViU29ja2V0Kj4+IGFjdGl2ZVdlYlNvY2tldHM7CiAgICAg
cmV0dXJuIGFjdGl2ZVdlYlNvY2tldHM7CiB9CiAKLUxvY2smIFdlYlNvY2tldDo6YWxsQWN0aXZl
V2ViU29ja2V0c011dGV4KCkKK0NoZWNrZWRMb2NrJiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNv
Y2tldHNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7
CisgICAgcmV0dXJuIHNfYWxsQWN0aXZlV2ViU29ja2V0c0xvY2s7CiB9CiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBhYmQyMjViZTU4ZmM5
OGQyNjI5ZDY2OTdjYmRkOGRhZWY4NTZmM2IzLi43MjcwNjk5NzI1OTNmMDE2ZWU0MTM3MTgwYWI4
NzQwZWU3Njg3NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
IDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTYwLDggKzYxLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2ViU29ja2V0Pj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHByb3RvY29scyk7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKLSAgICBzdGF0
aWMgSGFzaFNldDxXZWJTb2NrZXQqPiYgYWxsQWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9s
ZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpOworICAg
IHN0YXRpYyBIYXNoU2V0PFdlYlNvY2tldCo+JiBhbGxBY3RpdmVXZWJTb2NrZXRzKCkgV1RGX1JF
UVVJUkVTX0xPQ0soc19hbGxBY3RpdmVXZWJTb2NrZXRzTG9jayk7CisgICAgc3RhdGljIENoZWNr
ZWRMb2NrJiBhbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19hbGxB
Y3RpdmVXZWJTb2NrZXRzTG9jayk7CiAKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgQ09OTkVD
VElORyA9IDAsCkBAIC0xMzEsNiArMTMyLDcgQEAgcHJpdmF0ZToKIAogICAgIGVudW0gY2xhc3Mg
QmluYXJ5VHlwZSB7IEJsb2IsIEFycmF5QnVmZmVyIH07CiAKKyAgICBzdGF0aWMgQ2hlY2tlZExv
Y2sgc19hbGxBY3RpdmVXZWJTb2NrZXRzTG9jazsKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw+IG1fY2hhbm5lbDsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBDT05ORUNUSU5H
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggYTAwNWNhNDE0NzZmZTNlMWE3NWFjZWFj
OTBmZTMzYzkwZWJjYjAyOS4uM2Y4M2U4ZTY3MDZiYTQ1NzQzNGMyYTMxZmQyNDg5NmE3OWQ5NjJh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBMb2NrIHNfY2FjaGVMb2NrOworQ2hlY2tlZExvY2sgQVhJ
c29sYXRlZFRyZWU6OnNfY2FjaGVMb2NrOwogCiBzdGF0aWMgdW5zaWduZWQgbmV3VHJlZUlEKCkK
IHsKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6Y2xlYXIoKQogUmVmUHRy
PEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVl
SUQgdHJlZUlEKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9ySUQiKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNoZUxvY2sgfTsKICAgICByZXR1cm4gdHJlZUlEQ2Fj
aGUoKS5nZXQodHJlZUlEKTsKIH0KIApAQCAtMTA3LDcgKzEwOCw3IEBAIFJlZjxBWElzb2xhdGVk
VHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hl
KQogICAgIC8vIE5vdyB0aGF0IHRoZSB0cmVlIGlzIHJlYWR5IHRvIHRha2UgY2xpZW50IHJlcXVl
c3RzLCBhZGQgaXQgdG8gdGhlIHRyZWUKICAgICAvLyBtYXBzIHNvIHRoYXQgaXQgY2FuIGJlIGZv
dW5kLgogICAgIGF1dG8gcGFnZUlEID0gYXhPYmplY3RDYWNoZS0+cGFnZUlEKCk7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzX2NhY2hl
TG9jayB9OwogICAgIEFTU0VSVCghdHJlZVBhZ2VDYWNoZSgpLmNvbnRhaW5zKCpwYWdlSUQpKTsK
ICAgICB0cmVlUGFnZUNhY2hlKCkuc2V0KCpwYWdlSUQsIHRyZWUuY29weVJlZigpKTsKICAgICB0
cmVlSURDYWNoZSgpLnNldCh0cmVlLT50cmVlSUQoKSwgdHJlZS5jb3B5UmVmKCkpOwpAQCAtMTE5
LDcgKzEyMCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVRyZWVGb3JQYWdlSUQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpyZW1v
dmVUcmVlRm9yUGFnZUlEIik7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihzX2NhY2hlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfY2FjaGVM
b2NrIH07CiAKICAgICBpZiAoYXV0byB0cmVlID0gdHJlZVBhZ2VDYWNoZSgpLnRha2UocGFnZUlE
KSkgewogICAgICAgICB0cmVlLT5jbGVhcigpOwpAQCAtMTI5LDcgKzEzMCw3IEBAIHZvaWQgQVhJ
c29sYXRlZFRyZWU6OnJlbW92ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
CiBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihzX2NhY2hlTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfY2FjaGVMb2NrIH07CiAKICAgICBpZiAoYXV0byB0
cmVlID0gdHJlZVBhZ2VDYWNoZSgpLmdldChwYWdlSUQpKQogICAgICAgICByZXR1cm4gbWFrZVJl
ZlB0cih0cmVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGUyZmI1MTQwMzY1ZTA4MDA5MmRk
ZTA4M2QxNmUwMjJkNzJhYjc3ZTUuLjI4NDVjNzEyNGM5Njg1ZGU5NDY0OGQ2NjM5NjVmYzYyZTE3
ZDdkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlBhZ2VJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CkBAIC0zNzMsOCArMzc0LDkgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVk
VHJlZShBWE9iamVjdENhY2hlKik7CiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgc3RhdGljIEhh
c2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJRENhY2hl
KCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJl
ZT4+JiB0cmVlUGFnZUNhY2hlKCk7CisgICAgc3RhdGljIENoZWNrZWRMb2NrIHNfY2FjaGVMb2Nr
OworICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJl
ZT4+JiB0cmVlSURDYWNoZSgpIFdURl9SRVFVSVJFU19MT0NLKHNfY2FjaGVMb2NrKTsKKyAgICBz
dGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQ
YWdlQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX2NhY2hlTG9jayk7CiAKICAgICAvLyBDYWxs
IG9uIG1haW4gdGhyZWFkCiAgICAgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZVN1YnRyZWUo
QVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCBiZDUyY2I0
OTE4ODZiZWU0Y2Q2Mzk4N2YyMjAzZDQyYjdiNDVhOWNlLi4wZjVjMjlhNGFmYzQ1NmZjZWRkYTI0
YmI0ZWFiZGFhYmJiNjEzZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCkBAIC00OSw4ICs0OSw4IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU0dsb2JhbE9iamVjdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlSW50ZXJuYWwuaD4KKyNpbXBvcnQgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9Mb2Nr
Lmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzAsMTEgKzcwLDExIEBA
IHVzaW5nIEpTQzo6bWFrZVNvdXJjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
TG9jayBzcGluTG9jazsKK3N0YXRpYyBDaGVja2VkTG9jayB3cmFwcGVyQ2FjaGVMb2NrOwogc3Rh
dGljIENyZWF0ZVdyYXBwZXJGdW5jdGlvbiBjcmVhdGVET01XcmFwcGVyRnVuY3Rpb247CiBzdGF0
aWMgRGlzY29ubmVjdFdpbmRvd1dyYXBwZXJGdW5jdGlvbiBkaXNjb25uZWN0V2luZG93V3JhcHBl
ckZ1bmN0aW9uOwogCi1zdGF0aWMgSGFzaE1hcDxKU09iamVjdCosIE5TT2JqZWN0ICo+JiB3cmFw
cGVyQ2FjaGUoKQorc3RhdGljIEhhc2hNYXA8SlNPYmplY3QqLCBOU09iamVjdCAqPiYgd3JhcHBl
ckNhY2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0sod3JhcHBlckNhY2hlTG9jaykKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxKU09iamVjdCosIE5TT2JqZWN0ICo+PiBtYXA7CiAg
ICAgcmV0dXJuIG1hcDsKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIEhhc2hNYXA8SlNPYmplY3Qq
LCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkKIE5TT2JqZWN0ICpnZXRKU1dyYXBwZXIoSlNP
YmplY3QqIGltcGwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBMb2NrSG9s
ZGVyIGhvbGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB3cmFwcGVyQ2FjaGVM
b2NrIH07CiAKICAgICBOU09iamVjdCogd3JhcHBlciA9IHdyYXBwZXJDYWNoZSgpLmdldChpbXBs
KTsKICAgICByZXR1cm4gd3JhcHBlciA/IHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgp
IDogbmlsOwpAQCAtOTIsMjEgKzkyLDIxIEBAIE5TT2JqZWN0ICpnZXRKU1dyYXBwZXIoSlNPYmpl
Y3QqIGltcGwpCiB2b2lkIGFkZEpTV3JhcHBlcihOU09iamVjdCAqd3JhcHBlciwgSlNPYmplY3Qq
IGltcGwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBMb2NrSG9sZGVyIGhv
bGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB3cmFwcGVyQ2FjaGVMb2NrIH07
CiAKICAgICB3cmFwcGVyQ2FjaGUoKS5zZXQoaW1wbCwgd3JhcHBlcik7CiB9CiAKIHZvaWQgcmVt
b3ZlSlNXcmFwcGVyKEpTT2JqZWN0KiBpbXBsKQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyKCZz
cGluTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZXJDYWNoZUxvY2sgfTsKIAogICAg
IHdyYXBwZXJDYWNoZSgpLnJlbW92ZShpbXBsKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlSlNX
cmFwcGVySWZSZXRhaW5Db3VudE9uZShOU09iamVjdCogd3JhcHBlciwgSlNPYmplY3QqIGltcGwp
CiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIoJnNwaW5Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgd3JhcHBlckNhY2hlTG9jayB9OwogCiAgICAgaWYgKFt3cmFwcGVyIHJldGFpbkNvdW50XSA9
PSAxKQogICAgICAgICB3cmFwcGVyQ2FjaGUoKS5yZW1vdmUoaW1wbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAppbmRleCAyMmYyNzdh
OGFkOTVlYjBkNjQ1ZTRiNGQ4NDA5NDg1MDU0Njg0ODBkLi4zNjQ2YjQ3Y2I1MWYyZDMyNTRiZjE5
OGQyNWUxNjE1MWJkOTMzZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKQEAgLTI5LDE2ICsyOSwxNyBAQAogI2lmIEVOQUJMRShX
RUJfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtLmgiCi0jaW5jbHVkZSA8d3Rm
L0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgTG9jayByZWdpc3RyeU11dGV4OwotCiBDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeSYgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5PiByZWdpc3RyeTsKKyAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5PiByZWdp
c3RyeTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxf
b25jZShvbmNlS2V5LCBbJl0geworICAgICAgICByZWdpc3RyeS5jb25zdHJ1Y3QoKTsKKyAgICB9
KTsKICAgICByZXR1cm4gcmVnaXN0cnk7CiB9CiAKQEAgLTUyLDcgKzUzLDcgQEAgT3B0aW9uYWw8
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50
aWZpZXIoY29uc3QgU3QKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJlZ2lzdHJ5TXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIC8vIEZJWE1FOiBIb3cgaXMg
aXQgaGVscGZ1bCB0byBjYWxsIGlzb2xhdGVkQ29weSBvbiB0aGUgYXJndW1lbnQgdG8gZmluZD8K
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzLmZpbmQobmFtZS5pc29sYXRlZENv
cHkoKSk7CkBAIC02NCw3ICs2NSw3IEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKGNvbnN0IFN0CiAKIFN0cmlu
ZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWdpc3RyeU11dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBhdXRvIGNvbnRydWN0b3Ig
PSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7
CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCkBAIC03NSw3ICs3
Niw3IEBAIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IENyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgYXV0byBjb250cnVjdG9yID0gbV9j
b25zdHJ1Y3RvcnMuZmluZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpOwogICAg
IGlmIChjb250cnVjdG9yID09IG1fY29uc3RydWN0b3JzLmVuZCgpKQpAQCAtODYsNyArODcsNyBA
QCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Y3JlYXRl
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
OjpyZWdpc3RlckFsZ29yaXRobShjb25zdCBTdHJpbmcmIG5hbWUsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtQ29uc3RydWN0b3IgY29uc3RydWN0
b3IpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWdpc3RyeU11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBBU1NFUlQoIW1faWRlbnRpZmllcnMuY29u
dGFpbnMobmFtZSkpOwogICAgIEFTU0VSVCghbV9jb25zdHJ1Y3RvcnMuY29udGFpbnMoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGlkZW50aWZpZXIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCmluZGV4IGZlYTNjY2E5MjNlNDc5MTJhODRmMDY4
NzkzODgxMGYzOTgxMjU0YzUuLmNiOTE4NjUxM2U2MDBmMDJmOWFjMmVmNTk3YWE5OTczNDI5Mzdh
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIENyeXB0b0FsZ29yaXRo
bTsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5KTsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJE
ZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+OworICAgIGZyaWVuZCBjbGFzcyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+OwogCiBwdWJsaWM6CiAgICAg
c3RhdGljIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaW5nbGV0b24oKTsKQEAgLTYyLDggKzYz
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJBbGdvcml0aG0oY29uc3QgU3RyaW5n
JiBuYW1lLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1Db25zdHJ1
Y3Rvcik7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2lkZW50aWZpZXJzOwotICAgIEhhc2hNYXA8dW5z
aWduZWQsIHN0ZDo6cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUNvbnN0cnVjdG9yPj4gbV9j
b25zdHJ1Y3RvcnM7CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOworICAgIEhhc2hNYXA8U3RyaW5n
LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1f
aWRlbnRpZmllcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIEhhc2hNYXA8dW5z
aWduZWQsIHN0ZDo6cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUNvbnN0cnVjdG9yPj4gbV9j
b25zdHJ1Y3RvcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggYmJjMDg1YTI5
YTM1NmM1NTAwODBjMzU4NDM2NmY1OGNiMTI0YTZlNC4uYjc2NTg2MmU2Yzc2NWM4OWUxY2I1OWVi
ZDhhZjMxYTYyOGYxMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3Bl
Lmg+CkBAIC00Myw4ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKE1lc3NhZ2VQb3J0KTsKIAotc3RhdGljIExvY2sgYWxsTWVzc2FnZVBv
cnRzTG9jazsKLXN0YXRpYyBIYXNoTWFwPE1lc3NhZ2VQb3J0SWRlbnRpZmllciwgTWVzc2FnZVBv
cnQqPiYgYWxsTWVzc2FnZVBvcnRzKCkKK3N0YXRpYyBDaGVja2VkTG9jayBhbGxNZXNzYWdlUG9y
dHNMb2NrOworc3RhdGljIEhhc2hNYXA8TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBNZXNzYWdlUG9y
dCo+JiBhbGxNZXNzYWdlUG9ydHMoKSBXVEZfUkVRVUlSRVNfTE9DSyhhbGxNZXNzYWdlUG9ydHNM
b2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPE1lc3NhZ2VQb3J0SWRl
bnRpZmllciwgTWVzc2FnZVBvcnQqPj4gbWFwOwogICAgIHJldHVybiBtYXA7CkBAIC02MSw3ICs2
Miw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRlcmVmKCkgY29uc3QKICAgICAvLyBUaGlzIGFsbG93
cyBpc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlIGFuZCBub3RpZnlNZXNzYWdl
QXZhaWxhYmxlIHRvIGVhc2lseSBxdWVyeSB0aGUgbWFwIGFuZCBtYW5pcHVsYXRlIE1lc3NhZ2VQ
b3J0IGluc3RhbmNlcy4KIAogICAgIGlmICghLS1tX3JlZkNvdW50KSB7Ci0gICAgICAgIExvY2tl
cjxMb2NrPiBsb2NrZXIoYWxsTWVzc2FnZVBvcnRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAKICAgICAgICAgaWYgKG1fcmVmQ291bnQpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC03NiwxNCArNzcsMTQgQEAgdm9pZCBNZXNzYWdlUG9ydDo6
ZGVyZWYoKSBjb25zdAogCiBib29sIE1lc3NhZ2VQb3J0Ojppc0V4aXN0aW5nTWVzc2FnZVBvcnRM
b2NhbGx5UmVhY2hhYmxlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllcikK
IHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAgYXV0byogcG9ydCA9IGFs
bE1lc3NhZ2VQb3J0cygpLmdldChpZGVudGlmaWVyKTsKICAgICByZXR1cm4gcG9ydCAmJiBwb3J0
LT5pc0xvY2FsbHlSZWFjaGFibGUoKTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydDo6bm90aWZ5TWVz
c2FnZUF2YWlsYWJsZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7
Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxNZXNzYWdlUG9ydHNMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgYWxsTWVzc2FnZVBvcnRzTG9jayB9OwogICAgIGlmIChhdXRvKiBwb3J0ID0g
YWxsTWVzc2FnZVBvcnRzKCkuZ2V0KGlkZW50aWZpZXIpKQogICAgICAgICBwb3J0LT5tZXNzYWdl
QXZhaWxhYmxlKCk7CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBNZXNzYWdlUG9ydDo6TWVzc2FnZVBv
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3Qg
TQogewogICAgIExPRyhNZXNzYWdlUG9ydHMsICJDcmVhdGVkIE1lc3NhZ2VQb3J0ICVzICglcCkg
aW4gcHJvY2VzcyAlIiBQUkl1NjQsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCB0aGlzLCBQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKLSAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAgYWxsTWVzc2FnZVBvcnRzKCkuc2V0KG1faWRl
bnRpZmllciwgdGhpcyk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFdlYWtQdHJGYWN0b3J5IGdl
dHMgaW5pdGlhbGl6ZWQgZWFnZXJseSBvbiB0aGUgdGhyZWFkIHRoZSBNZXNzYWdlUG9ydCBnZXRz
IGNvbnN0cnVjdGVkIG9uIGZvciB0aHJlYWQtc2FmZXR5IHJlYXNvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggODhhYWNmMzU1ODE1YjYz
NDRhN2M4MGQxNmE3YWU5MTg5MWE0Y2E0Yy4uNGE1ODY2ZGE3NGQyMDU2ODk2ZTJhNDY4NDA3ZTU0
MGJhYjYyOTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJv
bWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KQEAgLTc5LDggKzgwLDggQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLXN0YXRpYyBM
b2NrIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jazsKLXN0YXRpYyBIYXNoTWFwPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4m
IGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3N0YXRpYyBDaGVja2VkTG9jayBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2s7CitzdGF0aWMgSGFzaE1hcDxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+JiBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcCgpIFdURl9SRVFVSVJFU19MT0NLKGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCo+PiBjb250ZXh0czsKICAgICBBU1NFUlQoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBM
b2NrLmlzTG9ja2VkKCkpOwpAQCAtMTEzLDcgKzExNCw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyKCkg
Y29uCiB7CiAgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKICAgICBpZiAoIW1fY29udGV4
dElkZW50aWZpZXIpIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVj
dXRpb25Db250ZXh0c01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsU2NyaXB0
RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrIH07CiAKICAgICAgICAgbV9jb250ZXh0SWRlbnRpZmll
ciA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogCkBAIC0x
MjYsNyArMTI3LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKSBjb24KIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKCkKIHsKICAgICBpZiAobV9jb250ZXh0
SWRlbnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRF
eGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICAgICAgQVNTRVJUKGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllcikpOwogICAgICAg
ICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZShtX2NvbnRleHRJZGVudGlm
aWVyKTsKICAgICB9CkBAIC0xNjIsNyArMTYzLDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAo
bV9jb250ZXh0SWRlbnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBh
bGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyhtX2NvbnRl
eHRJZGVudGlmaWVyKSwKICAgICAgICAgICAgICJBIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc3Vi
Y2xhc3MgaW5zdGFuY2UgaW1wbGVtZW50aW5nIHBvc3RUYXNrIHNob3VsZCBoYXZlIGFscmVhZHkg
cmVtb3ZlZCBpdHNlbGYgZnJvbSB0aGUgbWFwIik7CiAgICAgfQpAQCAtNjIzLDcgKzYyNCw3IEBA
IFNlcnZpY2VXb3JrZXJDb250YWluZXIqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVuc3VyZVNl
cnZpY2VXb3JrZXJDb250YWluZXIoKQogCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBv
c3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRlbnRpZmllciwgVGFz
ayYmIHRhc2spCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcExvY2sgfTsKICAgICBhdXRvKiBjb250ZXh0ID0gYWxsU2NyaXB0RXhlY3V0aW9u
Q29udGV4dHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CiAKICAgICBpZiAoIWNvbnRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDQxZmQ0MzA1N2VlYjJmYTMzMTdjNjlhYWNjYTI4YmFlMzczNjM0YTIuLmI2Njkx
YTIyZGNiMzU4ZGI2NDA0ZWVlYmY3YzQ3OGEyMjUwN2MzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00Niwz
MCArNDYsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCk7CiAKLUhhc2hTZXQ8Q2FudmFzUmVuZGVyaW5n
Q29udGV4dCo+JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoY29uc3QgTG9ja0hv
bGRlciYpCitDaGVja2VkTG9jayBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpzX2luc3RhbmNlc0xv
Y2s7CisKK0hhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0OjppbnN0YW5jZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0
PENhbnZhc1JlbmRlcmluZ0NvbnRleHQqPj4gaW5zdGFuY2VzOwogICAgIHJldHVybiBpbnN0YW5j
ZXM7CiB9CiAKLUxvY2smIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc011dGV4KCkK
K0NoZWNrZWRMb2NrJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKCkKIHsK
LSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNf
aW5zdGFuY2VzTG9jazsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMpCiAgICAgOiBtX2NhbnZhcyhjYW52YXMpCiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwotICAgIGluc3RhbmNlcyhs
b2NrKS5hZGQodGhpcyk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9Owor
ICAgIGluc3RhbmNlcygpLmFkZCh0aGlzKTsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
fkNhbnZhc1JlbmRlcmluZ0NvbnRleHQoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5j
ZXNNdXRleCgpKTsKLSAgICBBU1NFUlQoaW5zdGFuY2VzKGxvY2spLmNvbnRhaW5zKHRoaXMpKTsK
LSAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOworICAgIExvY2tlciBsb2NrZXIgeyBp
bnN0YW5jZXNMb2NrKCkgfTsKKyAgICBBU1NFUlQoaW5zdGFuY2VzKCkuY29udGFpbnModGhpcykp
OworICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0OjpyZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDZmNjg4ZDZlYzRhYjg5OTUzYzViZjQ3ZDQxNDFl
MmI1MzEzMzVmNzkuLjRkNTlhM2YwYzhmNmU1MGZjNTBjMTM3MmMzYjRlZWNkN2Y5MzJkOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYW52YXNCYXNlLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTEs
OCArNTIsOCBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFNjcmlwdFdy
YXBwYWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FudmFzUmVuZGVyaW5nQ29udGV4dCgp
OwogCi0gICAgc3RhdGljIEhhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBpbnN0YW5j
ZXMoY29uc3QgTG9ja0hvbGRlciYpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNNdXRleCgp
OworICAgIHN0YXRpYyBIYXNoU2V0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQqPiYgaW5zdGFuY2Vz
KCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKKyAgICBzdGF0aWMgQ2hlY2tl
ZExvY2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNfaW5zdGFuY2VzTG9jayk7
CiAKICAgICB2b2lkIHJlZigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVyZWYoKTsKQEAg
LTExMSw2ICsxMTIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc0FjdGl2ZUluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXIgeyBmYWxzZSB9OwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBDaGVj
a2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBDYW52YXNCYXNlJiBtX2NhbnZhczsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCmluZGV4IGY2
NTI1MTQ3MTkwZDkxZDM0YjM0YjcxNWY2ZDMwMDgzMjNhMjI4MGUuLmE5ZTY1MmMxNDIxZWM3ZTUy
YzkzYTQ0ZTUyZmJmODIzNGMwOGIwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmNwcApAQCAtNDUsMTYgKzQ1LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSGFzaE1hcDxXZWJHTFByb2dyYW0qLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4m
IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKQorQ2hlY2tlZExvY2sg
V2ViR0xQcm9ncmFtOjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hNYXA8V2ViR0xQcm9ncmFtKiwg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBXZWJHTFByb2dyYW06Omluc3RhbmNlcygpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSo+PiBpbnN0YW5jZXM7CiAgICAgcmV0dXJuIGluc3RhbmNlczsK
IH0KIAotTG9jayYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXNNdXRleCgpCitDaGVja2VkTG9jayYg
V2ViR0xQcm9ncmFtOjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsK
LSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsKIH0KIAogUmVm
PFdlYkdMUHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY3R4KQpAQCAtNjksOCArNzAsOCBAQCBXZWJHTFByb2dyYW06OldlYkdMUHJvZ3JhbShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNN
dXRleCgpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxvY2spLmFkZCh0aGlzLCAmY3R4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBpbnN0YW5jZXMo
KS5hZGQodGhpcywgJmN0eCk7CiAgICAgfQogCiAgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0Nv
bnRleHRHTCgpLT5jcmVhdGVQcm9ncmFtKCkpOwpAQCAtODEsOSArODIsOSBAQCBXZWJHTFByb2dy
YW06On5XZWJHTFByb2dyYW0oKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERl
c3Ryb3lXZWJHTFByb2dyYW0oKnRoaXMpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2soaW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZXMobG9jaykuY29u
dGFpbnModGhpcykpOwotICAgICAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIEFTU0VSVChp
bnN0YW5jZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgICAgIGluc3RhbmNlcygpLnJlbW92ZSh0
aGlzKTsKICAgICB9CiAKICAgICBpZiAoIWhhc0dyb3VwT3JDb250ZXh0KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IDZjOWUzNGVkZGU1MGRiYzNjZmRk
MmExMWY5MTk5ZjIxY2RkZTQ2MjYuLjEwMDBkMTg5ZDFmM2FmY2UyYTE2OTI5YWZiYzFiZDhlZDI5
NGQ0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3Jh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCkBAIC0y
OSw5ICsyOSw5IEBACiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgog
I2luY2x1ZGUgIldlYkdMU2hhcmVkT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9u
cy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
V2ViR0xQcm9ncmFtPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZp
cnR1YWwgfldlYkdMUHJvZ3JhbSgpOwogCi0gICAgc3RhdGljIEhhc2hNYXA8V2ViR0xQcm9ncmFt
KiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBpbnN0YW5jZXMoY29uc3QgV1RGOjpMb2Nr
SG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNlc011dGV4KCk7CisgICAgc3RhdGlj
IEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBpbnN0
YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkpOworICAgIHN0YXRpYyBD
aGVja2VkTG9jayYgaW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNM
b2NrKTsKIAogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogCkBAIC05OCw2ICs5
OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFw
aGljc0NvbnRleHRHTCopOwogICAgIHZvaWQgY2FjaGVJbmZvSWZOZWVkZWQoKTsKIAorICAgIHN0
YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBWZWN0b3I8R0NHTGludD4g
bV9hY3RpdmVBdHRyaWJMb2NhdGlvbnM7CiAKICAgICBHQ0dMaW50IG1fbGlua1N0YXR1cyB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYzEwYzQ2NDM3OTU5NWFiMGM3NzE2Y2YyZThmOGUyNWNm
YmU3NzM5MS4uYzI0YTg0ZGE4ZDMwNjg3YzYyZWU5YzU4MmE0ZGRkOWEyODBiNTIxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKQEAgLTEwNTIsOCArMTA1Miw4IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6On5XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKCkKICAgICB9CiAKICAgICB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9jayhXZWJHTFByb2dyYW06Omluc3RhbmNlc011dGV4KCkpOwotICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogV2ViR0xQcm9ncmFtOjppbnN0YW5jZXMobG9jaykpIHsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzTG9jaygpIH07Cisg
ICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJHTFByb2dyYW06Omluc3RhbmNlcygpKSB7CiAg
ICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT0gdGhpcykgewogICAgICAgICAgICAgICAgIC8v
IERvbid0IHJlbW92ZSBhbnkgV2ViR0xQcm9ncmFtIGZyb20gdGhlIGluc3RhbmNlcyBsaXN0LCBh
cyB0aGV5IG1heSBzdGlsbCBleGlzdC4KICAgICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92ZSB0
aGUgYXNzb2NpYXRpb24gd2l0aCBhIFdlYkdMIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDNkODM5YjQxYTNkOGRmOTVhYzA3YTVj
YzUwYmFhYjkwMDExNzg3MmQuLjBmZWQxZmIyYmIzZGE1ZDNhMjAxYzdmY2ExYjUwOGQxNzQ3Yzg4
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBA
IC0xNzAsOCArMTcwLDggQEAgSFRNTENhbnZhc0VsZW1lbnQqIEluc3BlY3RvckNhbnZhczo6Y2Fu
dmFzRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxX
ZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIC0+IEhUTUxDYW52YXNFbGVtZW50KiB7CiAgICAg
ICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgpOwogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhDYW52YXNSZW5kZXJpbmdDb250ZXh0
OjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMobG9jaykp
IHsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNS
ZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBjYW52YXNJZkNv
bnRleHRNYXRjaGVzRGV2aWNlKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBkZXZpY2UpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1lbnQ7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMjcxLDggKzI3MSw4IEBAIEhhc2hTZXQ8RWxlbWVudCo+IEluc3BlY3RvckNhbnZh
czo6Y2xpZW50Tm9kZXMoKSBjb25zdAogCiAgICAgICAgICAgICBIYXNoU2V0PEVsZW1lbnQqPiBj
YW52YXNFbGVtZW50Q2xpZW50czsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTXV0ZXgoKSk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAgICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9Owor
ICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA6IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBjYW52YXNFbGVtZW50ID0gY2FudmFzSWZDb250ZXh0TWF0Y2hlc0RldmljZSgqY2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgZGV2aWNlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bnZhc0VsZW1lbnRDbGllbnRzLmFkZChjYW52YXNFbGVtZW50KTsKICAgICAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCmluZGV4IDUyNmQwZjc0MTZjNWZiYzE5YWY5YmY3OTgyYTYwNGMwYWU5
MGJkN2QuLmIxNjc4NDgwOTA4MmU2OWMyMWYzZjk2MGUyNmUwMWNkZTc2N2E1ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCkBAIC0xNDAsOCArMTQwLDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgfTsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc011dGV4
KCkpOwotICAgICAgICBmb3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8qIGNvbnRl
eHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKSkgewogI2lmIEVOQUJMRShX
RUJHUFUpCiAgICAgICAgICAgICAvLyBUaGUgYWN0dWFsICJjb250ZXh0IiBmb3IgV2ViR1BVIGlz
IHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2FudmFzPi4KICAgICAgICAgICAgIGlmIChp
czxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkKQEAgLTE1NSw4ICsxNTUsOCBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKIAog
I2lmIEVOQUJMRShXRUJHUFUpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2ViR1BV
RGV2aWNlOjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgZm9yIChhdXRvKiBkZXZpY2UgOiBX
ZWJHUFVEZXZpY2U6Omluc3RhbmNlcyhsb2NrKSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
V2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvKiBkZXZp
Y2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICBpZiAoZXhpc3Rz
SW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAg
ICAgICAgICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7CiAgICAgICAgIH0KQEAgLTE2NSw4
ICsxNjUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9jayhXZWJHTFByb2dyYW06Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3Ig
KGF1dG8mIFtwcm9ncmFtLCBjb250ZXh0V2ViR0xCYXNlXSA6IFdlYkdMUHJvZ3JhbTo6aW5zdGFu
Y2VzKGxvY2spKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHTFByb2dyYW06Omluc3Rh
bmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8mIFtwcm9ncmFtLCBjb250ZXh0V2ViR0xC
YXNlXSA6IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgIGlmIChjb250
ZXh0V2ViR0xCYXNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoY29udGV4dFdlYkdMQmFzZS0+Y2Fu
dmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICAgICAgZGlk
Q3JlYXRlV2ViR0xQcm9ncmFtKCpjb250ZXh0V2ViR0xCYXNlLCAqcHJvZ3JhbSk7CiAgICAgICAg
IH0KQEAgLTE3NSw4ICsxNzUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc011dGV4KCkp
OwotICAgICAgICBmb3IgKGF1dG8mIFtwaXBlbGluZSwgZGV2aWNlXSA6IFdlYkdQVVBpcGVsaW5l
OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVVBpcGVs
aW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvJiBbcGlwZWxpbmUsIGRl
dmljZV0gOiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgIGlmIChk
ZXZpY2UgJiYgZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkgJiYgcGlwZWxpbmUtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBkaWRDcmVhdGVX
ZWJHUFVQaXBlbGluZSgqZGV2aWNlLCAqcGlwZWxpbmUpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKaW5kZXggZTlkMzVkM2IyMGU5MWVlOWJhMTkyZDQxMWQwNDI5NTM1YTYyZThkNS4uNDMw
MDEyYzVmMTdhYjdlMzMyZDkyMGU5OTM4NWI4MzJlZDVhYzVjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cApAQCAtODI2LDkgKzgyNiw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
RW5hYmxlZE5ldHdvcmtBZ2VudCh0aGlzKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBs
b2NrKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07CiAKLSAg
ICAgICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQgOiBhY3RpdmVXZWJTb2NrZXRzKGxvY2spKSB7Cisg
ICAgICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cygpKSB7CiAgICAg
ICAgICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEwMDksOSArMTAwOSw5IEBA
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpn
ZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoCiAKIFdlYlNvY2tldCogSW5zcGVjdG9yTmV0d29ya0Fn
ZW50Ojp3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQoY29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVl
c3RJZCYgcmVxdWVzdElkKQogewotICAgIExvY2tIb2xkZXIgbG9jayhXZWJTb2NrZXQ6OmFsbEFj
dGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgV2ViU29ja2V0Ojph
bGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07CiAKLSAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6
IGFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKKyAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IGFj
dGl2ZVdlYlNvY2tldHMoKSkgewogICAgICAgICBpZiAoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1
ZXN0SWQod2ViU29ja2V0LT5jaGFubmVsKCktPnByb2dyZXNzSWRlbnRpZmllcigpKSA9PSByZXF1
ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm4gd2ViU29ja2V0OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
CmluZGV4IDkzMzYwMTc2MTY2NzQxN2ViZTVkZTMwMTU4Njg2OWNjYzY0ZmMzZGEuLjhiMmUyOTY3
MDVhNWFkN2IzN2I1NWE0ZmI2NjdmZjBkOGQzMmY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFz
ZS5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9S
ZWd1bGFyRXhwcmVzc2lvbi5oPgpAQCAtMTMzLDcgKzEzNCw3IEBAIHByb3RlY3RlZDoKIAogICAg
IHZpcnR1YWwgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TG9hZGVySWQgbG9hZGVySWRl
bnRpZmllcihEb2N1bWVudExvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKikg
PSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFdlYlNvY2tldCo+IGFjdGl2ZVdlYlNvY2tldHMoY29u
c3QgTG9ja0hvbGRlciYpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3Rp
dmVXZWJTb2NrZXRzKCkgV1RGX1JFUVVJUkVTX0xPQ0soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJT
b2NrZXRzTG9jaygpKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rp
c2FibGVkSW50ZXJuYWwoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEZvcmNlQnVmZmVyaW5nTmV0d29ya1Jlc291cmNlRGF0
YSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRleCA2NTJhNzlmNTcxNDU1YWM5NmNk
MDRhMjQwZWM0ZDliNzY1Y2ZjZjMxLi5iYjRmNmJhN2MyY2M2MTg1ODU4NzE5NmM5NzNhMmMzODZm
ODhmNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZU5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC02NSwxMSArNjUsMTEgQEAgUHJvdG9jb2w6
Ok5ldHdvcms6OkZyYW1lSWQgUGFnZU5ldHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKERvY3Vt
ZW50TG9hZGVyKiBsb2EKICAgICByZXR1cm4geyB9OwogfQogCi1WZWN0b3I8V2ViU29ja2V0Kj4g
UGFnZU5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9sZGVyJiBsb2Nr
KQorVmVjdG9yPFdlYlNvY2tldCo+IFBhZ2VOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNvY2tldHMo
KQogewogICAgIFZlY3RvcjxXZWJTb2NrZXQqPiB3ZWJTb2NrZXRzOwogCi0gICAgZm9yIChhdXRv
KiB3ZWJTb2NrZXQgOiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKKyAg
ICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cygp
KSB7CiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IHdlYlNvY2tldC0+Y2hhbm5lbCgpOwogICAgICAg
ICBpZiAoIWNoYW5uZWwpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5oCmluZGV4
IGMxMjk5OTZjMWJmYjQ1MWQ3N2RkNTIwZjRhMDg5YWZkNTU4M2MwZjAuLjRiNjZjMmVhYTk4NDE0
NGFkYTI2ZGNhMDM5NzBlODAxYjQyYjFlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuaApAQCAtNDEsNyArNDEs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
OkxvYWRlcklkIGxvYWRlcklkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIGZyYW1lSWRlbnRpZmllcihEb2N1bWVudExv
YWRlciopOwotICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExv
Y2tIb2xkZXImKTsKKyAgICBWZWN0b3I8V2ViU29ja2V0Kj4gYWN0aXZlV2ViU29ja2V0cygpIFdU
Rl9SRVFVSVJFU19MT0NLKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKSk7CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJvb2wpOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpGcmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmluZ05ldHdvcmtSZXNvdXJj
ZURhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggZWY4NjgzZmI2MjI4MThiYjU4ZmU5Mzc0NTEwZWQ1OTVhODg1NWFhMS4uNGUxYTYyN2Yw
OWIxYmFlMGY3MGQxN2NlYzExNzNiOWU0YjU1ZWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIFdvcmtlck5l
dHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKikKICAgICByZXR1cm4g
eyB9OwogfQogCi1WZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29ya0FnZW50OjphY3RpdmVX
ZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQorVmVjdG9yPFdlYlNvY2tldCo+IFdvcmtlck5l
dHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cygpCiB7CiAgICAgLy8gRklYTUU6IDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJlY3RseSBkaXNwbGF5IHdv
cmtlcidzIFdlYlNvY2tldHMKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaApp
bmRleCBlNWRmZjlkMWEzNGQ5YmM0M2NiMjczMGE4MzA0NjBiNzc5ZTQ1YTJiLi5kZTE0ZGVkMmFi
YmUxNmIwNzVhNDJhYmJkNzA4YjdkZDM4MDViMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaApA
QCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6OkxvYWRlcklkIGxvYWRlcklkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqKTsK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIGZyYW1lSWRlbnRpZmll
cihEb2N1bWVudExvYWRlciopOwotICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2Nr
ZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBWZWN0b3I8V2ViU29ja2V0Kj4gYWN0aXZlV2Vi
U29ja2V0cygpIFdURl9SRVFVSVJFU19MT0NLKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0
c0xvY2soKSk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJv
b2wpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpOZXR3b3JrOjpGcmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmluZ05l
dHdvcmtSZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDE3ODJhYTBhMmNhNmJiYmE3MDEyMTQxMTVjMGYy
MjAwNTlkMzY2NzcuLjUxODMzOTM1YWFlZWZhZjU4OTAyZTRiOWM2NmEwMjRhOWQ1ZDlkZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDYsMTYgKzQ3LDE2IEBAIHN0YXRpYyBT
ZWN1cml0eVBvbGljeTo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9IFNlY3VyaXR5
UG9saWN5OjpBbGxvd0xvCiB0eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nlc3NFbnRyeT4gT3JpZ2lu
QWNjZXNzQWxsb3dsaXN0OwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAotc3RhdGljIExvY2sg
b3JpZ2luQWNjZXNzTWFwTG9jazsKLXN0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vz
c01hcCgpCitzdGF0aWMgQ2hlY2tlZExvY2sgb3JpZ2luQWNjZXNzTWFwTG9jazsKK3N0YXRpYyBP
cmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpIFdURl9SRVFVSVJFU19MT0NLKG9yaWdp
bkFjY2Vzc01hcExvY2spCiB7CiAgICAgQVNTRVJUKG9yaWdpbkFjY2Vzc01hcExvY2suaXNIZWxk
KCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcmlnaW5BY2Nlc3NNYXA+IG9yaWdpbkFj
Y2Vzc01hcDsKICAgICByZXR1cm4gb3JpZ2luQWNjZXNzTWFwOwogfQogCi1zdGF0aWMgTG9jayBv
cmlnaW5BY2Nlc3NQYXR0ZXJuTG9jazsKLXN0YXRpYyBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0
ZXJuPiYgb3JpZ2luQWNjZXNzUGF0dGVybnMoKQorc3RhdGljIENoZWNrZWRMb2NrIG9yaWdpbkFj
Y2Vzc1BhdHRlcm5Mb2NrOworc3RhdGljIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+JiBv
cmlnaW5BY2Nlc3NQYXR0ZXJucygpIFdURl9SRVFVSVJFU19MT0NLKG9yaWdpbkFjY2Vzc1BhdHRl
cm5Mb2NrKQogewogICAgIEFTU0VSVChvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jay5pc0hlbGQoKSk7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+
PiBvcmlnaW5BY2Nlc3NQYXR0ZXJuczsKQEAgLTIwNSw3ICsyMDYsNyBAQCBib29sIFNlY3VyaXR5
UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdp
biwgY29uc3QgUwogewogICAgIEFTU0VSVCh0YXJnZXRPcmlnaW4uZXF1YWwoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh0YXJnZXRVUkwpLnB0cigpKSk7CiAgICAgewotICAgICAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
b3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgICAgICBpZiAoT3JpZ2luQWNjZXNzQWxsb3dsaXN0
KiBsaXN0ID0gb3JpZ2luQWNjZXNzTWFwKCkuZ2V0KGFjdGl2ZU9yaWdpbi50b1N0cmluZygpKSkg
ewogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICpsaXN0KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGVudHJ5Lm1hdGNoZXNPcmlnaW4odGFyZ2V0T3JpZ2luKSkKQEAgLTIxMyw3ICsyMTQs
NyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgUwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzUGF0dGVybkxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jayB9OwogICAgIGZvciAo
Y29uc3QgYXV0byYgcGF0dGVybiA6IG9yaWdpbkFjY2Vzc1BhdHRlcm5zKCkpIHsKICAgICAgICAg
aWYgKHBhdHRlcm4ubWF0Y2hlcyh0YXJnZXRVUkwpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNz
QWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KIAogICAgIFN0cmlu
ZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKIAotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9y
aWdpbkFjY2Vzc01hcExvY2sgfTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4oKTsKQEAgLTI1MSw3ICsyNTIsNyBAQCB2
b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShjb25z
dCBTZWN1cml0eU9yaWdpbiYgc291cgogCiAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IHNvdXJj
ZU9yaWdpbi50b1N0cmluZygpOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nl
c3NNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9Owog
ICAgIE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFwKCk7CiAgICAgT3JpZ2lu
QWNjZXNzTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKHNvdXJjZVN0cmluZyk7CiAgICAgaWYg
KGl0ID09IG1hcC5lbmQoKSkKQEAgLTI2OCwxMyArMjY5LDEzIEBAIHZvaWQgU2VjdXJpdHlQb2xp
Y3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBzb3VyCiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0
cygpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgIG9yaWdpbkFjY2Vz
c01hcCgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFsbG93QWNjZXNzVG8o
Y29uc3QgVXNlckNvbnRlbnRVUkxQYXR0ZXJuJiBwYXR0ZXJuKQogewotICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIob3JpZ2luQWNjZXNzUGF0dGVybkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBv
cmlnaW5BY2Nlc3NQYXR0ZXJuTG9jayB9OwogICAgIG9yaWdpbkFjY2Vzc1BhdHRlcm5zKCkuYXBw
ZW5kKHBhdHRlcm4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDk5MzVhZGMzZDNiMDFjMzBlOWZkNmM4
NWI1MmE2ZmJhMWNkYTQzNzMuLjliYzZkMjk3N2VmOTEyMzhlZmEwMTVjNmNkYzM4MzE1MGFhOGMz
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRo
cmVhZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2Fn
ZVRocmVhZENvY29hLm1tCkBAIC0xNjEsOCArMTYxLDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhy
ZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYg
ZGEKIAogICAgIEhhc2hTZXQ8bWFjaF9wb3J0X3Q+IGtub3duV2ViS2l0VGhyZWFkczsKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soVGhyZWFkOjphbGxUaHJlYWRzTXV0ZXgo
KSk7Ci0gICAgICAgIGZvciAoYXV0byogdGhyZWFkIDogVGhyZWFkOjphbGxUaHJlYWRzKGxvY2tl
cikpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFRocmVhZDo6YWxsVGhyZWFkc0xvY2soKSB9
OworICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IFRocmVhZDo6YWxsVGhyZWFkcygpKSB7CiAg
ICAgICAgICAgICBtYWNoX3BvcnRfdCBtYWNoVGhyZWFkID0gdGhyZWFkLT5tYWNoVGhyZWFkKCk7
CiAgICAgICAgICAgICBpZiAoTUFDSF9QT1JUX1ZBTElEKG1hY2hUaHJlYWQpKQogICAgICAgICAg
ICAgICAgIGtub3duV2ViS2l0VGhyZWFkcy5hZGQobWFjaFRocmVhZCk7CkBAIC0xNzEsNyArMTcx
LDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpT
Qzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYgZGEKIAogICAgIEhhc2hNYXA8bWFjaF9wb3J0X3Qs
IFN0cmluZz4ga25vd25Xb3JrZXJUaHJlYWRzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNM
b2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3
b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byogdGhyZWFk
IDogV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkpIHsKICAg
ICAgICAgICAgIC8vIElnbm9yZSB3b3JrZXIgdGhyZWFkcyB0aGF0IGhhdmUgbm90IGJlZW4gZnVs
bHkgc3RhcnRlZCB5ZXQuCiAgICAgICAgICAgICBpZiAoIXRocmVhZC0+dGhyZWFkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51
eC5jcHAKaW5kZXggYjY1OWI3NzRmMjY0MDEzYTE3Y2Y1NmU2YzEzMTAyNWVlY2NiY2UwYS4uMDJl
NWQ0ODljYWI0M2Y4MzkzMzNkNDliZDI0YTU5NjkyOTg5NDdjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcApAQCAt
MjMzLDggKzIzMyw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1Db2xsZWN0
Q1BVRGF0YShKU0M6OlZNKiwgUmVzb3VyY2VVc2FnZURhdGEmIGRhCiAKICAgICBIYXNoU2V0PHBp
ZF90PiBrbm93bldlYktpdFRocmVhZHM7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKFRocmVhZDo6YWxsVGhyZWFkc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8qIHRo
cmVhZCA6IFRocmVhZDo6YWxsVGhyZWFkcyhsb2NrZXIpKSB7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBUaHJlYWQ6OmFsbFRocmVhZHNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvKiB0aHJl
YWQgOiBUaHJlYWQ6OmFsbFRocmVhZHMoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gaWQgPSB0
aHJlYWQtPmlkKCkpCiAgICAgICAgICAgICAgICAga25vd25XZWJLaXRUaHJlYWRzLmFkZChpZCk7
CiAgICAgICAgIH0KQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6
OnBsYXRmb3JtQ29sbGVjdENQVURhdGEoSlNDOjpWTSosIFJlc291cmNlVXNhZ2VEYXRhJiBkYQog
CiAgICAgSGFzaE1hcDxwaWRfdCwgU3RyaW5nPiBrbm93bldvcmtlclRocmVhZHM7CiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFdvcmtlck9yV29ya2xldFRocmVhZDo6d29y
a2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICAg
ICAgZm9yIChhdXRvKiB0aHJlYWQgOiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29y
a2xldFRocmVhZHMoKSkgewogICAgICAgICAgICAgLy8gSWdub3JlIHdvcmtlciB0aHJlYWRzIHRo
YXQgaGF2ZSBub3QgYmVlbiBmdWxseSBzdGFydGVkIHlldC4KICAgICAgICAgICAgIGlmICghdGhy
ZWFkLT50aHJlYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVy
aWNUYXNrUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1
ZS5jcHAKaW5kZXggNTE2NTMxNGNmZWExMmEwMTAwYzgyYzI2YmNjY2YyMjJkMDJjN2E1Zi4uMmY1
YWY0N2M3ZTI2OTQ2ZjNlYzFmZmY0MDhmYTdhYWJjMzc4M2U1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTMyLDYgKzMyLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitDaGVja2VkTG9jayBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNf
c2hhcmVkTG9jazsKKwogVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpUYXNrRGlzcGF0Y2hlcigpCiB7
CiB9CkBAIC0zOSw3ICs0MSw3IEBAIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6VGFza0Rpc3BhdGNo
ZXIoKQogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
c2hhcmVkTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNfc2hhcmVkTG9jayB9Owog
ICAgICAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogICAgICAg
ICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQobWFrZVdlYWtQdHIoKnRoaXMpKTsKICAgICB9
CkBAIC01NywxMiArNTksNiBAQCBUaW1lciYgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRU
aW1lcigpCiAgICAgcmV0dXJuIHRpbWVyLmdldCgpOwogfQogCi1Mb2NrJiBUYXNrRGlzcGF0Y2hl
cjxUaW1lcj46OnNoYXJlZExvY2soKQotewotICAgIHN0YXRpYyBMb2NrIGxvY2s7Ci0gICAgcmV0
dXJuIGxvY2s7Ci19Ci0KIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZp
cmVkKCkKIHsKICAgICBBU1NFUlQoIXNoYXJlZFRpbWVyKCkuaXNBY3RpdmUoKSk7CkBAIC03MSw4
ICs2Nyw4IEBAIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZpcmVkKCkK
ICAgICAvLyBxdWV1ZWQgYnkgdGhlIEpTIGV2ZW50cyBoYW5kbGVycyB0aGF0IGFyZSBleGVjdXRl
ZCBpbiB0aGUgbG9vcCBiZWxvdy4KICAgICBEZXF1ZTxXZWFrUHRyPFRhc2tEaXNwYXRjaGVyPFRp
bWVyPj4+IHF1ZXVlZERpc3BhdGNoZXJzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhzaGFyZWRMb2NrKCkpOwotICAgICAgICBxdWV1ZWREaXNwYXRjaGVycyA9IFdURk1v
dmUocGVuZGluZ0Rpc3BhdGNoZXJzKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19zaGFy
ZWRMb2NrIH07CisgICAgICAgIHF1ZXVlZERpc3BhdGNoZXJzID0gc3RkOjpleGNoYW5nZShwZW5k
aW5nRGlzcGF0Y2hlcnMoKSwgeyB9KTsKICAgICB9CiAgICAgd2hpbGUgKCFxdWV1ZWREaXNwYXRj
aGVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgV2Vha1B0cjxUYXNrRGlzcGF0Y2hlcjxUaW1lcj4+
IGRpc3BhdGNoZXIgPSBxdWV1ZWREaXNwYXRjaGVycy50YWtlRmlyc3QoKTsKQEAgLTg1LDIxICs4
MSwxNSBAQCB2b2lkIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6c2hhcmVkVGltZXJGaXJlZCgpCiAK
IERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4mIFRhc2tEaXNwYXRjaGVyPFRp
bWVyPjo6cGVuZGluZ0Rpc3BhdGNoZXJzKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4+IGRpc3BhdGNoZXJzOwot
Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGRpc3BhdGNoZXJzLmNvbnN0cnVjdCgpOwotICAgIH0p
OwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNo
ZXI8VGltZXI+Pj4+IGRpc3BhdGNoZXJzOwogICAgIHJldHVybiBkaXNwYXRjaGVycy5nZXQoKTsK
IH0KIAogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OmRpc3BhdGNoT25lVGFzaygpCiB7Ci0g
ICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IHRhc2s7CisgICAgRnVuY3Rpb248dm9pZCgpPiB0YXNr
OwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzaGFyZWRMb2NrKCkpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19zaGFyZWRMb2NrIH07CiAgICAgICAgIEFTU0VSVCgh
bV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKTsKICAgICAgICAgdGFzayA9IG1fcGVuZGluZ1Rhc2tz
LnRha2VGaXJzdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dlbmVyaWNUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNr
UXVldWUuaAppbmRleCA0ZTliNDBkOWI1MWU1ZjE2MTIwMzYwZjUzNTViYTg0OGMzNDRiZmFkLi41
MWMwODI1YzZiNGZlMDFkNjVjYWM0MGNhYTk3YmVjMWMxOGYxNmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCkBAIC02NiwxMyArNjYsMTMgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYgc2hhcmVkVGltZXIoKTsKLSAgICBzdGF0
aWMgV1RGOjpMb2NrJiBzaGFyZWRMb2NrKCk7CiAgICAgc3RhdGljIHZvaWQgc2hhcmVkVGltZXJG
aXJlZCgpOwotICAgIHN0YXRpYyBEZXF1ZTxXZWFrUHRyPFRhc2tEaXNwYXRjaGVyPFRpbWVyPj4+
JiBwZW5kaW5nRGlzcGF0Y2hlcnMoKTsKKyAgICBzdGF0aWMgRGVxdWU8V2Vha1B0cjxUYXNrRGlz
cGF0Y2hlcjxUaW1lcj4+PiYgcGVuZGluZ0Rpc3BhdGNoZXJzKCkgV1RGX1JFUVVJUkVTX0xPQ0so
c19zaGFyZWRMb2NrKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hPbmVUYXNrKCk7CiAKLSAgICBEZXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBzdGF0aWMgQ2hlY2tlZExv
Y2sgc19zaGFyZWRMb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1Rh
c2tzIFdURl9HVUFSREVEX0JZX0xPQ0soc19zaGFyZWRMb2NrKTsKIH07CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2No
ZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVn
aXN0cnkuY3BwCmluZGV4IGMzZjc1NjAxODZmMjBhYzVjODhmMzRhNTQzNmZjZGFhM2JiNTc3YWQu
LmQ1YmIwNDUyOGFjYjliMjBlNjk1ZDdiMGMwNTRhNzliMDgxMDdjMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTI3LDggKzI3
LDcgQEAKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogCiAjaW5jbHVkZSAiUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRl
IDx3dGYvTG9ja2VyLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVVJMUGFyc2VyLmg+CkBAIC02Niw3ICs2NSw3IEBAIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxVUkxTY2hlbWVzTWFwPiBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQoY29uc3QgVmVj
dG9yPFN0CiAgICAgcmV0dXJuIHNldDsKIH0KIAotc3RhdGljIExvY2sgc2NoZW1lUmVnaXN0cnlM
b2NrOworc3RhdGljIENoZWNrZWRMb2NrIHNjaGVtZVJlZ2lzdHJ5TG9jazsKIAogc3RhdGljIGNv
bnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIHsKQEAgLTk1LDcgKzk0LDcg
QEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIAogICAg
ICAgICBVUkxTY2hlbWVzTWFwIHNldDsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgICAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUg
OiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkpCiAgICAgICAgICAgICAgICAgc2V0LmFkZChzY2hl
bWUpOwogCkBAIC0xMDksNyArMTA4LDcgQEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFs
bEJ1aWx0aW5TY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIGNvbnN0
IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQorc3RhdGljIGNvbnN0IFVS
TFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhz
Y2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hl
bGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChVUkxTY2hlbWVzTWFwIHsKQEAgLTEyMSwyMSArMTIwLDIxIEBAIHN0YXRpYyBjb25zdCBVUkxT
Y2hlbWVzTWFwJiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1lczsK
IH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGxvY2FsVVJMU2NoZW1lcygpCitzdGF0aWMgVVJM
U2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVn
aXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBsb2NhbFNjaGVtZXMgPSBi
dWlsdGluTG9jYWxVUkxTY2hlbWVzKCk7CiAgICAgcmV0dXJuIGxvY2FsU2NoZW1lczsKIH0KIAot
c3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKQorc3RhdGlj
IFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9j
ay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGRp
c3BsYXlJc29sYXRlZFNjaGVtZXM7CiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7
CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpCitjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9D
SyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5p
c0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChWZWN0b3I8U3RyaW5nPiB7CkBAIC0xNTAsMTQgKzE0OSwxNCBAQCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQog
Ci1zdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1l
c01hcCYgc2VjdXJlU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9j
aykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0
aWMgYXV0byBzZWN1cmVTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGJ1aWx0
aW5TZWN1cmVTY2hlbWVzKTsKICAgICByZXR1cm4gc2VjdXJlU2NoZW1lczsKIH0KIAotY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQorc3RhdGlj
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkg
V1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hl
bWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4gewpAQCAtMTcwLDcgKzE2OSw3IEBA
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkK
ICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNX
aXRoVW5pcXVlT3JpZ2lucygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAg
IEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBhdXRvIHNj
aGVtZXNXaXRoVW5pcXVlT3JpZ2lucyA9IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChidWls
dGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTsKQEAgLTE5OCwxNCArMTk3LDE0IEBAIHN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGF4YXRpb24oKQog
ICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1jb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCitjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpIFdURl9SRVFVSVJFU19M
T0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2Nr
LmlzSGVsZCgpKTsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVz
dHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgImJsb2IiX3MgfSk7CiAgICAgcmV0dXJuIHNjaGVtZXM7
CiB9CiAKLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXMoKQorc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0
U2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBB
U1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlM
b2NrLmlzSGVsZCgpKTsKQEAgLTIyNSwyMCArMjI0LDIwIEBAIHZvaWQgTGVnYWN5U2NoZW1lUmVn
aXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAg
ICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVt
ZVJlZ2lzdHJ5TG9jayB9OwogICAgIGxvY2FsVVJMU2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQog
CiB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNM
b2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNj
aGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9j
ayB9OwogICAgIGlmIChidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbG9jYWxVUkxTY2hlbWVzKCkucmVtb3ZlKHNjaGVtZSk7
CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5k
bGVyKCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5k
bGVyKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VS
VChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFN0cmluZz4+IHNldDsKQEAgLTI0NywxMyArMjQ2LDEzIEBAIHN0YXRpYyBIYXNo
U2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKCkKIAogdm9pZCBMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0hhbmRsZWRCeVNjaGVtZUhhbmRs
ZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hl
bWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sg
fTsKICAgICBzY2hlbWVzSGFuZGxlZEJ5U2NoZW1lSGFuZGxlcigpLmFkZChzY2hlbWUpOwogfQog
CiBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVJc0hhbmRsZWRCeVNjaGVtZUhhbmRs
ZXIoU3RyaW5nVmlldyBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVS
ZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsK
ICAgICByZXR1cm4gc2NoZW1lc0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoKS5jb250YWlucyhzY2hl
bWUudG9TdHJpbmcoKSk7CiB9CiAKQEAgLTI3OSwxNCArMjc4LDE0IEBAIHN0YXRpYyBVUkxTY2hl
bWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1z
dGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1l
cygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5n
U2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBB
U1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAot
c3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpCitzdGF0aWMg
VVJMU2NoZW1lc01hcCYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xP
Q0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2su
aXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hl
bWVzOwpAQCAtMzA1LDcgKzMwNCw3IEBAIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2No
ZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJl
Z2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBsb2NhbFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hl
bWUpOwogfQogCkBAIC0zMTQsNyArMzEzLDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlm
IChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVn
aXN0cnlMb2NrIH07CiAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkuYWRkKHNjaGVtZSk7
CiB9CiAKQEAgLTMyMyw3ICszMjIsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAgICAgaWYg
KHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hl
bWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCku
Y29udGFpbnMoc2NoZW1lKTsKIH0KIApAQCAtMzMyLDcgKzMzMSw3IEBAIHZvaWQgTGVnYWN5U2No
ZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3Ry
aW5nJiBzY2hlCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBkaXNwbGF5SXNvbGF0ZWRVUkxTY2hl
bWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKQEAgLTM0MSw3ICszNDAsNyBAQCBib29sIExlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0
IFN0cmluZyYgcwogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0dXJuIGRpc3BsYXlJ
c29sYXRlZFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC0zNTAsNyArMzQ5
LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHNlY3VyZVNj
aGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtMzU5LDcgKzM1OCw3IEBAIGJvb2wgTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5n
JiBzY2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2VjdXJlU2No
ZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKQEAgLTM5Nyw3ICszOTYsNyBAQCBib29sIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJp
bmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBjYW5EaXNw
bGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC00
MDcsNyArNDA2LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2MKICAgICBpZiAoc2NoZW1lLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVt
ZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9
OwogICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmFkZChzY2hlbWUpOwog
fQogCkBAIC00NjAsNyArNDU5LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb24KICAgICBpZiAo
c2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lz
dHJ5TG9jayB9OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5h
ZGQoc2NoZW1lKTsKIH0KIApAQCAtNDY5LDcgKzQ2OCw3IEBAIHZvaWQgTGVnYWN5U2NoZW1lUmVn
aXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0
eVBvCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9j
a2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3Np
bmdTY2hlbWVzKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKQEAgLTQ3OCw3ICs0NzcsNyBAQCBib29s
IExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQ
b2xpY3koY29uc3QgU3RyaW5nJgogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0dXJu
IENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUp
OwogfQogCkBAIC00OTksNyArNDk4LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVn
aXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3RyaW5nJiBzY2gKICAgICBp
ZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJl
Z2lzdHJ5TG9jayB9OwogICAgIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpLmFkZChzY2hlbWUp
OwogfQogCkBAIC01MDgsNyArNTA3LDcgQEAgYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUKICAgICBp
ZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNj
aGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMo
KS5jb250YWlucyhzY2hlbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAppbmRleCA4MWE4YmVkNmJmY2Y3YTRiYmIxYzgwMzg1
NmQ2N2RlMWExYjQxNTBiLi5lYTRkZWQyNjQxZjU0NjU0MTIzOWFlNzVmZmE2YWIzMDc2OTdmNzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVN
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1h
Yy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJGRlRGcmFtZS5oIgogCiAjaW5jbHVk
ZSAiVmVjdG9yTWF0aC5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC00Niw5ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNv
bnN0ZXhwciB1bnNpZ25lZCBrTWluRkZUUG93MlNpemUgPSAyOwogY29uc3RleHByIHVuc2lnbmVk
IGtNYXhGRlRQb3cyU2l6ZSA9IDI0OwogCi1zdGF0aWMgTG9jayBmZnRTZXR1cHNMb2NrOworc3Rh
dGljIENoZWNrZWRMb2NrIGZmdFNldHVwc0xvY2s7CiAKLXN0YXRpYyBWZWN0b3I8RkZUU2V0dXA+
JiBmZnRTZXR1cHMoKQorc3RhdGljIFZlY3RvcjxGRlRTZXR1cD4mIGZmdFNldHVwcygpIFdURl9S
RVFVSVJFU19MT0NLKGZmdFNldHVwc0xvY2spCiB7CiAgICAgQVNTRVJUKGZmdFNldHVwc0xvY2su
aXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8RkZUU2V0dXA+PiBm
ZnRTZXR1cHMoa01heEZGVFBvdzJTaXplLCBudWxscHRyKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBG
RlRTZXR1cCBGRlRGcmFtZTo6ZmZ0U2V0dXBGb3JTaXplKHVuc2lnbmVkIGZmdFNpemUpCiAgICAg
YXV0byBwb3cyc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obG9nMihmZnRTaXplKSk7CiAgICAg
QVNTRVJUKHBvdzJzaXplIDwga01heEZGVFBvdzJTaXplKTsKIAotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soZmZ0U2V0dXBzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGZmdFNldHVwc0xv
Y2sgfTsKICAgICBhdXRvJiBmZnRTZXR1cCA9IGZmdFNldHVwcygpLmF0KHBvdzJzaXplKTsKICAg
ICBpZiAoIWZmdFNldHVwKQogICAgICAgICBmZnRTZXR1cCA9IHZEU1BfY3JlYXRlX2ZmdHNldHVw
KHBvdzJzaXplLCBGRlRfUkFESVgyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAxZDBiZTgzNDZmZmIyNGFjNzNhYzRlOTJjMWFh
MWMzNGU1Y2U2NDg5Li44YTAzNzA2OThjZGIwOWUxNzRiYzJkM2UxMzIzZDg3MzRmOTQyZDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5o
IgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlICJJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlLmgiCkBAIC0yMDMsOSArMjA0LDkgQEAgc3RhdGljIE1lZGlhUGxheWVy
Q2xpZW50JiBudWxsTWVkaWFQbGF5ZXJDbGllbnQoKQogCiBzdGF0aWMgdm9pZCBhZGRNZWRpYUVu
Z2luZShzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5PiYmKTsKIAotc3RhdGljIExv
Y2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIG1lZGlhRW5naW5l
VmVjdG9yTG9jazsKIAotc3RhdGljIGJvb2wmIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKQorc3Rh
dGljIGJvb2wmIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSBXVEZfUkVRVUlSRVNfTE9DSyhtZWRp
YUVuZ2luZVZlY3RvckxvY2spCiB7CiAgICAgc3RhdGljIGJvb2wgaGF2ZVZlY3RvcjsKICAgICBy
ZXR1cm4gaGF2ZVZlY3RvcjsKQEAgLTIyOCw3ICsyMjksNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJlbW90
ZVBsYQogICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9IFdURk1vdmUoY2FsbGJh
Y2spOwogfQogCi1zdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpCitzdGF0aWMg
dm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpIFdURl9SRVFVSVJFU19MT0NLKG1lZGlhRW5n
aW5lVmVjdG9yTG9jaykKIHsKICAgICBBU1NFUlQobWVkaWFFbmdpbmVWZWN0b3JMb2NrLmlzTG9j
a2VkKCkpOwogCkBAIC0yODIsNyArMjgzLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2lu
ZXNWZWN0b3IoKQogc3RhdGljIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5
ZXJGYWN0b3J5Pj4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiB7CiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1lZGlhRW5naW5lVmVjdG9yTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtZWRpYUVuZ2luZVZlY3RvckxvY2sgfTsKICAgICAgICAgaWYgKCFoYXZl
TWVkaWFFbmdpbmVzVmVjdG9yKCkpCiAgICAgICAgICAgICBidWlsZE1lZGlhRW5naW5lc1ZlY3Rv
cigpOwogICAgIH0KQEAgLTE1MDEsNyArMTUwMiw3IEBAIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1U
ZXh0VHJhY2s+PiBNZWRpYVBsYXllcjo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIAogdm9pZCBN
ZWRpYVBsYXllcjo6cmVzZXRNZWRpYUVuZ2luZXMoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobWVkaWFFbmdpbmVWZWN0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWVkaWFF
bmdpbmVWZWN0b3JMb2NrIH07CiAKICAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVj
dG9yKCkuY2xlYXIoKTsKICAgICBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggOGE1NDk1YmQzNTU0ODkyY2ExMDZh
YzQ0Y2NjY2ZmNzQ3ZjM1Zjc0NC4uYjZlYTE0ZmY1ZThjMjc0NjgyMGVkOGU4NTcyYjM1NmI3NTcy
ODZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTUzLDYgKzUzLDcg
QEAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NoZWNrZWRM
b2NrLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KIApAQCAtNzUsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIExheWVyVG9QbGF0Zm9ybUNBTGF5ZXJNYXAgPSBIYXNoTWFwPHZvaWQqLCBQbGF0Zm9ybUNB
TGF5ZXIqPjsKIAotc3RhdGljIExheWVyVG9QbGF0Zm9ybUNBTGF5ZXJNYXAmIGxheWVyVG9QbGF0
Zm9ybUxheWVyTWFwKCkKK3N0YXRpYyBDaGVja2VkTG9jayBsYXllclRvUGxhdGZvcm1MYXllck1h
cExvY2s7CitzdGF0aWMgTGF5ZXJUb1BsYXRmb3JtQ0FMYXllck1hcCYgbGF5ZXJUb1BsYXRmb3Jt
TGF5ZXJNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhsYXllclRvUGxhdGZvcm1MYXllck1hcExvY2sp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExheWVyVG9QbGF0Zm9ybUNBTGF5ZXJNYXA+
IGxheWVyTWFwOwogICAgIHJldHVybiBsYXllck1hcDsKQEAgLTg3LDggKzg5LDcgQEAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JMYXll
cih2b2lkKiBwbGF0Zm9ybUwKICAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgc3RhdGljIExvY2sgbG9jazsKLSAgICBMb2NrSG9sZGVyIGxvY2tI
b2xkZXIobG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGxheWVyVG9QbGF0Zm9ybUxheWVyTWFw
TG9jayB9OwogICAgIHJldHVybiBsYXllclRvUGxhdGZvcm1MYXllck1hcCgpLmdldChwbGF0Zm9y
bUxheWVyKTsKIH0KIApAQCAtMzEyLDggKzMxMywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpjb21tb25Jbml0KCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAot
ICAgIGxheWVyVG9QbGF0Zm9ybUxheWVyTWFwKCkuYWRkKG1fbGF5ZXIuZ2V0KCksIHRoaXMpOwot
ICAgIAorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxheWVyVG9QbGF0Zm9ybUxheWVy
TWFwTG9jayB9OworICAgICAgICBsYXllclRvUGxhdGZvcm1MYXllck1hcCgpLmFkZChtX2xheWVy
LmdldCgpLCB0aGlzKTsKKyAgICB9CisKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0IGFu
aW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKICAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBl
QVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3ZpZGVk
TGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIgfHwg
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAgICAgICBbbV9sYXllciB3ZWJfZGlz
YWJsZUFsbEFjdGlvbnNdOwpAQCAtMzkyLDggKzM5NiwxMCBAQCBSZWY8UGxhdGZvcm1DQUxheWVy
PiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25l
cikgYwogCiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6flBsYXRmb3JtQ0FMYXllckNvY29hKCkKIHsK
LSAgICBsYXllclRvUGxhdGZvcm1MYXllck1hcCgpLnJlbW92ZShtX2xheWVyLmdldCgpKTsKLSAg
ICAKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBsYXllclRvUGxhdGZvcm1MYXllck1h
cExvY2sgfTsKKyAgICAgICAgbGF5ZXJUb1BsYXRmb3JtTGF5ZXJNYXAoKS5yZW1vdmUobV9sYXll
ci5nZXQoKSk7CisgICAgfQogICAgIC8vIFJlbW92ZSB0aGUgb3duZXIgcG9pbnRlciBmcm9tIHRo
ZSBkZWxlZ2F0ZSBpbiBjYXNlIHRoZXJlIGlzIGEgcGVuZGluZyBhbmltYXRpb25TdGFydGVkIGV2
ZW50LgogICAgIFtzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25EZWxlZ2F0ZSo+KG1fZGVsZWdhdGUu
Z2V0KCkpIHNldE93bmVyOm5pbF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLm1tCmluZGV4IGE1ZDJmNzM2YzJlZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMuLmJl
ODdhZDJkM2RkZGVlNjU2ZWQ4MmE0ZDQyZTZlYWM0Y2RkY2IyODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMjksMTIgKzI5LDE0IEBACiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotI2ltcG9ydCA8cGFsL2lv
cy9RdWlja0xvb2tTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0ZpbGVNYW5h
Z2VyU1BJLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbXBvcnQgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKKyNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBRTFByZXZpZXdQcm90b2NvbCA9ICJ4LWFwcGxl
LXFsLWlkIjsKQEAgLTQ1LDkgKzQ3LDkgQEAgTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRlZE1J
TUVUeXBlc1NldCgpCiAgICAgcmV0dXJuIHNldC5nZXQoKS5nZXQoKTsKIH0KIAotc3RhdGljIExv
Y2sgcWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2s7CitzdGF0aWMgQ2hlY2tlZExvY2sg
cWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2s7CiAKLXN0YXRpYyBOU011dGFibGVEaWN0
aW9uYXJ5ICpRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkKK3N0YXRpYyBOU011dGFibGVE
aWN0aW9uYXJ5ICpRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgV1RGX1JFUVVJUkVTX0xP
Q0socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2spCiB7CiAgICAgc3RhdGljIE5TTXV0
YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOwogICAgIHJldHVybiBkaWN0aW9uYXJ5OwpAQCAtNjEsNyArNjMsNyBAQCBzdGF0aWMg
TlNNdXRhYmxlRGljdGlvbmFyeSAqUUxDb250ZW50RGljdGlvbmFyeSgpCiAKIHZvaWQgcmVtb3Zl
UUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICp1cmwpCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlMb2NrIH07CiAgICAgW1FMUHJl
dmlld0NvbnZlcnRlckRpY3Rpb25hcnkoKSByZW1vdmVPYmplY3RGb3JLZXk6dXJsXTsKICAgICBb
UUxDb250ZW50RGljdGlvbmFyeSgpIHJlbW92ZU9iamVjdEZvcktleTp1cmxdOwogfQpAQCAtNzAs
NyArNzIsNyBAQCBzdGF0aWMgdm9pZCBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVS
TChOU1VSTCAqdXJsLCBpZCBjb252ZXJ0ZXIsIE5TU3RyaQogewogICAgIEFTU0VSVCh1cmwpOwog
ICAgIEFTU0VSVChjb252ZXJ0ZXIpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socWxQcmV2
aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBxbFByZXZp
ZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jayB9OwogICAgIFtRTFByZXZpZXdDb252ZXJ0ZXJEaWN0
aW9uYXJ5KCkgc2V0T2JqZWN0OmNvbnZlcnRlciBmb3JLZXk6dXJsXTsKICAgICBbUUxDb250ZW50
RGljdGlvbmFyeSgpIHNldE9iamVjdDooZmlsZU5hbWUgPyBmaWxlTmFtZSA6IEAiIikgZm9yS2V5
OnVybF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQppbmRleCBiYTBlMThlOTI5OGUwYzMx
MmYzMWE3NjA5MzkxYmQ1NDIxOTQ2MjM2Li43MDcyMmE5NjljNjliN2JmNzFlMDM3NDhhNDMzYmZm
MzlmNzVkNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0KQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbXBvcnQgIldlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtODQsMTYgKzg1LDE2
IEBAIHZvaWQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpoeXN0ZXJlc2lzVXBkYXRl
ZChQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0CiAKIH0KIAotc3RhdGljIExvY2sgdHJhbnNhY3Rp
b25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIHRyYW5z
YWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jazsKIAotc3RhdGljIE5TVUludGVnZXIg
dHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXI7CitzdGF0aWMgTlNVSW50ZWdlciB0
cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NLKHRy
YW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jayk7CiAKLXN0YXRpYyB2b2lkIHNl
dFRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyKE5TVUludGVnZXIgaWRlbnRpZmll
cikKK3N0YXRpYyB2b2lkIHNldFRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyKE5T
VUludGVnZXIgaWRlbnRpZmllcikgV1RGX1JFUVVJUkVTX0xPQ0sodHJhbnNhY3Rpb25CYWNrZ3Jv
dW5kVGFza0lkZW50aWZpZXJMb2NrKQogewogICAgIHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJ
ZGVudGlmaWVyID0gaWRlbnRpZmllcjsKIH0KIAotc3RhdGljIE5TVUludGVnZXIgZ2V0VHJhbnNh
Y3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKQorc3RhdGljIE5TVUludGVnZXIgZ2V0VHJh
bnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKSBXVEZfUkVRVUlSRVNfTE9DSyh0cmFu
c2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2spCiB7CiAgICAgc3RhdGljIGRpc3Bh
dGNoX29uY2VfdCBwcmVkOwogICAgIGRpc3BhdGNoX29uY2UoJnByZWQsIF4gewpAQCAtMTA3LDcg
KzEwOCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJEYXRhYmFzZVRyYW5zYWN0aW9uQmFja2dyb3Vu
ZFRhc2tDb250cm9sbGVyCiAKICsgKHZvaWQpc3RhcnRCYWNrZ3JvdW5kVGFzawogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50
aWZpZXJMb2NrIH07CiAKICAgICAvLyBJZiB0aGVyZSdzIGFscmVhZHkgYW4gZXhpc3RpbmcgYmFj
a2dyb3VuZCB0YXNrIGdvaW5nIG9uLCB0aGVyZSdzIG5vIG5lZWQgdG8gc3RhcnQgYSBuZXcgb25l
LgogICAgIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciAqYmFja2dyb3VuZFRhc2tDb250cm9s
bGVyID0gW1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciBzaGFyZWRDb250cm9sbGVyXTsKQEAg
LTEyMiw3ICsxMjMsNyBAQCArICh2b2lkKXN0YXJ0QmFja2dyb3VuZFRhc2sKIAogKyAodm9pZCll
bmRCYWNrZ3JvdW5kVGFzawogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rp
b25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdHJh
bnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrIH07CiAKICAgICAvLyBJdCBpcyBw
b3NzaWJsZSB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHN0YXJ0IHRoZSBiYWNrZ3JvdW5kIHRhc2sg
d2hlbiB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gYmVnYW4uCiAgICAgLy8gRG9uJ3QgdHJ5IHRvIGVu
ZCB0aGUgdGFzayBpbiB0aGF0IGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KaW5kZXggNmQ1ZDVjNTdlZTBiY2E1YzYxMGQy
ZGIwZTgyYzRlNmY0OTFhZmY5ZS4uNjZlMjdlYTUyMjRhZjhkYjE5YzJhOWYxNjlhOTFjMWMzZDgz
OGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VU
SVV0aWxpdGllcy5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJVVElVdGlsaXRpZXMuaCIKIAotI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0
Zi9DaGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0
Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2ltcG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAtMTEy
LDcgKzExMiw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHN0YXRp
YyBTdHJpbmcgY3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4g
a2V5Lmlzb2xhdGVkQ29weSgpOyB9CiB9OwogCi1zdGF0aWMgVGlueUxSVUNhY2hlPFN0cmluZywg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5PiYg
Y2FjaGVVVElGcm9tTWltZVR5cGUoKQorc3RhdGljIENoZWNrZWRMb2NrIGNhY2hlVVRJRnJvbU1J
TUVUeXBlTG9jazsKK3N0YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZyb21NSU1F
VHlwZSgpIFdURl9SRVFVSVJFU19MT0NLKGNhY2hlVVRJRnJvbU1JTUVUeXBlTG9jaykKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPFN0cmluZywgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5Pj4gY2FjaGU7CiAgICAg
cmV0dXJuIGNhY2hlOwpAQCAtMTIwLDkgKzEyMSw4IEBAIHN0YXRpYyBUaW55TFJVQ2FjaGU8U3Ry
aW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xp
CiAKIFN0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAg
ICBzdGF0aWMgTG9jayBsb2NrOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7Ci0g
ICAgcmV0dXJuIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5nZXQoKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVVVElGcm9tTUlNRVR5cGVMb2NrIH07CisgICAgcmV0dXJu
IGNhY2hlVVRJRnJvbU1JTUVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5nZXQoKTsKIH0KIAogYm9vbCBp
c0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYgVVRJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggMzRkYWY0ZWQyOWVmODMyZjNhZTA1MmNi
MmU1NDUzZTI1ZDIyOGUyOS4uZWE0NTMxMTBhMTgzOTczN2Q5NzVmYjM1ZTFlODIwOWM4ZWEyMDI5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3FsaXRlMy5o
PgogI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC03MSwxMiArNzIsMTIgQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVNRTGl0ZUlmTmVjZXNzYXJ5KCkKICAgICB9KTsKIH0KIAotc3RhdGljIGJvb2wg
aXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4gPSBmYWxzZTsKLXN0YXRpYyBMb2NrIGlzRGF0YWJh
c2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgaXNEYXRhYmFzZU9w
ZW5pbmdGb3JiaWRkZW5Mb2NrOworc3RhdGljIGJvb2wgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRk
ZW4gV1RGX0dVQVJERURfQllfTE9DSyhpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbkxvY2spIHsg
ZmFsc2UgfTsKIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNEYXRhYmFzZU9wZW5pbmdGb3Ji
aWRkZW4oYm9vbCBpc0ZvcmJpZGRlbikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGlz
RGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBpc0Rh
dGFiYXNlT3BlbmluZ0ZvcmJpZGRlbkxvY2sgfTsKICAgICBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJp
ZGRlbiA9IGlzRm9yYmlkZGVuOwogfQogCkBAIC05NCw3ICs5NSw3IEBAIGJvb2wgU1FMaXRlRGF0
YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAg
ICAgY2xvc2UoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpc0Rh
dGFiYXNlT3BlbmluZ0ZvcmJpZGRlbk11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGlz
RGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTG9jayB9OwogICAgICAgICBpZiAoaXNEYXRhYmFzZU9w
ZW5pbmdGb3JiaWRkZW4pIHsKICAgICAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9ICJvcGVu
aW5nIGRhdGFiYXNlIGlzIGZvcmJpZGRlbiI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDZhMjhlMTliZTk0NjkzMDM1YTU2YjY0MDk0ZTQxNTdlYzk1YTdkNzAuLjNm
OGUzYzk3ZWRlODBlNDI5MTU4NDRlN2ZiY2E1YTYyZjE0OWQ3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0y
NywyNiArMjcsMjUgQEAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKIAogI2lu
Y2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRMb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFNRTGl0ZURhdGFi
YXNlVHJhY2tlciB7CiAKLXN0YXRpYyBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNfc3Rh
dGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID0gbnVsbHB0cjsKLXN0YXRpYyB1bnNpZ25l
ZCBzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIgPSAwOwotCi1zdGF0aWMgTG9jayB0cmFu
c2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9jayB0cmFuc2FjdGlvbklu
UHJvZ3Jlc3NMb2NrOworc3RhdGljIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCogc19zdGF0
aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgV1RGX0dVQVJERURfQllfTE9DSyh0cmFuc2Fj
dGlvbkluUHJvZ3Jlc3NMb2NrKSB7IG51bGxwdHIgfTsKK3N0YXRpYyB1bnNpZ25lZCBzX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIgV1RGX0dVQVJERURfQllfTE9DSyh0cmFuc2FjdGlvbklu
UHJvZ3Jlc3NMb2NrKSB7IDAgfTsKIAogdm9pZCBzZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2Fj
dGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0xvY2sgfTsKICAgICBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCA9
IGNsaWVudDsKIH0KIAogdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsKICAg
ICBpZiAoIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KQogICAgICAgICByZXR1
cm47CiAKQEAgLTU3LDcgKzU2LDcgQEAgdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jl
c3NDb3VudCgpCiAKIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKQog
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrIH07CiAgICAg
aWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkKICAgICAgICAgcmV0dXJu
OwogCkBAIC03MCw3ICs2OSw3IEBAIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNz
Q291bnQoKQogCiBib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsKICAgICByZXR1cm4gIXNfc3Rh
dGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50IHx8IHNfdHJhbnNhY3Rpb25JblByb2dyZXNz
Q291bnRlciA+IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggMDZkZmY2Y2Q5YjIwN2M1NmY4ZDcwMWI3
ODgyZGNjZWJmMmU2Yjg1Yy4uZTFiYzUzNmNjNmEwNDg1Nzc4NjJjZmQxYzMxNzRjZDY3NDcxNmY0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmdSZWdpc3RyeS5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlIDxtdXRleD4KICNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTkxLDEwICs5MSwxMCBAQCBzdHJ1Y3QgVGV4
dEVuY29kaW5nTmFtZUhhc2ggewogdXNpbmcgVGV4dEVuY29kaW5nTmFtZU1hcCA9IEhhc2hNYXA8
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBUZXh0RW5jb2RpbmdOYW1lSGFzaD47CiB1c2luZyBU
ZXh0Q29kZWNNYXAgPSBIYXNoTWFwPGNvbnN0IGNoYXIqLCBOZXdUZXh0Q29kZWNGdW5jdGlvbj47
CiAKLXN0YXRpYyBMb2NrIGVuY29kaW5nUmVnaXN0cnlNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9j
ayBlbmNvZGluZ1JlZ2lzdHJ5TG9jazsKIAotc3RhdGljIFRleHRFbmNvZGluZ05hbWVNYXAqIHRl
eHRFbmNvZGluZ05hbWVNYXA7Ci1zdGF0aWMgVGV4dENvZGVjTWFwKiB0ZXh0Q29kZWNNYXA7Citz
dGF0aWMgVGV4dEVuY29kaW5nTmFtZU1hcCogdGV4dEVuY29kaW5nTmFtZU1hcCBXVEZfR1VBUkRF
RF9CWV9MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKTsKK3N0YXRpYyBUZXh0Q29kZWNNYXAqIHRl
eHRDb2RlY01hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKTsKIHN0
YXRpYyBib29sIGRpZEV4dGVuZFRleHRDb2RlY01hcHM7CiBzdGF0aWMgSGFzaFNldDxjb25zdCBj
aGFyKj4qIGphcGFuZXNlRW5jb2RpbmdzOwogc3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBu
b25CYWNrc2xhc2hFbmNvZGluZ3M7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGJvb2wgaXNV
bmRlc2lyZWRBbGlhcyhjb25zdCBjaGFyKiBhbGlhcykKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXN0YXRpYyB2b2lkIGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcChjb25zdCBjaGFyKiBhbGlhcywg
Y29uc3QgY2hhciogbmFtZSkKK3N0YXRpYyB2b2lkIGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcChj
b25zdCBjaGFyKiBhbGlhcywgY29uc3QgY2hhciogbmFtZSkgV1RGX1JFUVVJUkVTX0xPQ0soZW5j
b2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHN0cmxlbihhbGlhcykgPD0gbWF4RW5j
b2RpbmdOYW1lTGVuZ3RoKTsKICAgICBpZiAoaXNVbmRlc2lyZWRBbGlhcyhhbGlhcykpCkBAIC0x
MzAsMTQgKzEzMCwxNCBAQCBzdGF0aWMgdm9pZCBhZGRUb1RleHRFbmNvZGluZ05hbWVNYXAoY29u
c3QgY2hhciogYWxpYXMsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgdGV4dEVuY29kaW5nTmFtZU1h
cC0+YWRkKGFsaWFzLCBhdG9tTmFtZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFRvVGV4dENvZGVj
TWFwKGNvbnN0IGNoYXIqIG5hbWUsIE5ld1RleHRDb2RlY0Z1bmN0aW9uJiYgZnVuY3Rpb24pCitz
dGF0aWMgdm9pZCBhZGRUb1RleHRDb2RlY01hcChjb25zdCBjaGFyKiBuYW1lLCBOZXdUZXh0Q29k
ZWNGdW5jdGlvbiYmIGZ1bmN0aW9uKSBXVEZfUkVRVUlSRVNfTE9DSyhlbmNvZGluZ1JlZ2lzdHJ5
TG9jaykKIHsKICAgICBjb25zdCBjaGFyKiBhdG9tTmFtZSA9IHRleHRFbmNvZGluZ05hbWVNYXAt
PmdldChuYW1lKTsKICAgICBBU1NFUlQoYXRvbU5hbWUpOwogICAgIHRleHRDb2RlY01hcC0+YWRk
KGF0b21OYW1lLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBydW5lQmxv
Y2tsaXN0ZWRDb2RlY3MoKQorc3RhdGljIHZvaWQgcHJ1bmVCbG9ja2xpc3RlZENvZGVjcygpIFdU
Rl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIGZvciAoYXV0byYg
bmFtZUZyb21CbG9ja2xpc3QgOiB0ZXh0RW5jb2RpbmdOYW1lQmxvY2tsaXN0KSB7CiAgICAgICAg
IGF1dG8qIGF0b21OYW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWVGcm9tQmxvY2ts
aXN0KTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCBwcnVuZUJsb2NrbGlzdGVkQ29k
ZWNzKCkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMoY29u
c3QgQWJzdHJhY3RMb2NrZXImKQorc3RhdGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcygp
IFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVCgh
dGV4dENvZGVjTWFwKTsKICAgICBBU1NFUlQoIXRleHRFbmNvZGluZ05hbWVNYXApOwpAQCAtMTc4
LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMoY29uc3QgQWJz
dHJhY3RMb2NrZXImKQogICAgIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhh
ZGRUb1RleHRDb2RlY01hcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZEVuY29kaW5nTmFtZShIYXNo
U2V0PGNvbnN0IGNoYXIqPiogc2V0LCBjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQgYWRk
RW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXQsIGNvbnN0IGNoYXIqIG5hbWUp
IFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIC8vIFdlIG11
c3Qgbm90IHVzZSBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZSgpIGJlY2F1c2UgdGhpcyBm
dW5jdGlvbiBpcyBjYWxsZWQgaW4gaXQuCiAgICAgY29uc3QgY2hhciogYXRvbU5hbWUgPSB0ZXh0
RW5jb2RpbmdOYW1lTWFwLT5nZXQobmFtZSk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIHZv
aWQgYWRkRW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXQsIGNvbnN0IGNoYXIq
IG5hbWUpCiAgICAgICAgIHNldC0+YWRkKGF0b21OYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgYnVp
bGRRdWlya3NTZXRzKCkKK3N0YXRpYyB2b2lkIGJ1aWxkUXVpcmtzU2V0cygpIFdURl9SRVFVSVJF
U19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIC8vIEZJWE1FOiBIYXZpbmcgaXNK
YXBhbmVzZUVuY29kaW5nKCkgYW5kIHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9s
SW4oKQogICAgIC8vIGFuZCBpbml0aWFsaXppbmcgdGhlIHNldHMgZm9yIHRoZW0gaW4gVGV4dEVu
Y29kaW5nUmVnaXN0cnkuY3BwIGxvb2sgc3RyYW5nZS4KQEAgLTIzMSw3ICsyMzEsNyBAQCBib29s
IHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sSW4oY29uc3QgY2hhciogY2Fub25p
Y2FsRW5jb2RpbmdOYW1lKQogICAgIHJldHVybiBjYW5vbmljYWxFbmNvZGluZ05hbWUgJiYgbm9u
QmFja3NsYXNoRW5jb2RpbmdzICYmIG5vbkJhY2tzbGFzaEVuY29kaW5ncy0+Y29udGFpbnMoY2Fu
b25pY2FsRW5jb2RpbmdOYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVjTWFw
cygpCitzdGF0aWMgdm9pZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkgV1RGX1JFUVVJUkVTX0xPQ0so
ZW5jb2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lz
dGVyRW5jb2RpbmdOYW1lcyhhZGRUb1RleHRFbmNvZGluZ05hbWVNYXApOwogICAgIFRleHRDb2Rl
Y1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CkBAIC0yNTEs
NyArMjUxLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVjTWFwcygpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29k
aW5nKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZW5jb2RpbmdSZWdpc3RyeU11dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZW5jb2RpbmdSZWdpc3RyeUxvY2sgfTsKIAogICAgIEFT
U0VSVCh0ZXh0Q29kZWNNYXApOwogICAgIGF1dG8gcmVzdWx0ID0gdGV4dENvZGVjTWFwLT5maW5k
KGVuY29kaW5nLm5hbWUoKSk7CkBAIC0yNjQsMTAgKzI2NCwxMCBAQCBjb25zdCBjaGFyKiBhdG9t
Q2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBuYW1lKQogICAgIGlmICghbmFt
ZSB8fCAhbmFtZVswXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGVuY29kaW5nUmVnaXN0cnlNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7
IGVuY29kaW5nUmVnaXN0cnlMb2NrIH07CiAKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWVNYXAp
Ci0gICAgICAgIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMobG9ja2VyKTsKKyAgICAgICAgYnVpbGRC
YXNlVGV4dENvZGVjTWFwcygpOwogCiAgICAgaWYgKGNvbnN0IGNoYXIqIGF0b21OYW1lID0gdGV4
dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWUpKQogICAgICAgICByZXR1cm4gYXRvbU5hbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDAxN2Rm
NWJiN2NjNDU1ZDA5ZGExMzU0MTUyNGY2ZGNmNDNkZDM1MzMuLjA3ZjRlNzY5MzAzNjExYjhlMTFl
MmNkMzY0NzIzMjliOTExZDFiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCkBAIC01NiwxNiArNTYsMTUgQEAKICNpbmNsdWRlICJXb3JrZXJTY3Jp
cHRMb2FkZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMg
TG9jayBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jazsKLXN0YXRpYyBIYXNoU2V0
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYgYWxsV29ya2VyR2xvYmFsU2NvcGVJ
ZGVudGlmaWVycyhMb2NrSG9sZGVyJiBob2xkZXIpCitzdGF0aWMgQ2hlY2tlZExvY2sgYWxsV29y
a2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2s7CitzdGF0aWMgSGFzaFNldDxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4mIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMo
KSBXVEZfUkVRVUlSRVNfTE9DSyhhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jaykK
IHsKLSAgICBVTlVTRURfUEFSQU0oaG9sZGVyKTsKLQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPj4gaWRlbnRpZmllcnM7
CiAgICAgQVNTRVJUKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrLmlzTG9ja2Vk
KCkpOwogICAgIHJldHVybiBpZGVudGlmaWVyczsKQEAgLTkwLDggKzg5LDggQEAgV29ya2VyR2xv
YmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwgY29uc3Qg
V29ya2VyUGFyYW1ldGUKICAgICAsIG1fY3JlZGVudGlhbHMocGFyYW1zLmNyZWRlbnRpYWxzKQog
ewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhbGxXb3JrZXJHbG9iYWxT
Y29wZUlkZW50aWZpZXJzTG9jayk7Ci0gICAgICAgIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRp
ZmllcnMobG9ja2VyKS5hZGQoY29udGV4dElkZW50aWZpZXIoKSk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayB9OworICAgICAgICBh
bGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKCkuYWRkKGNvbnRleHRJZGVudGlmaWVyKCkp
OwogICAgIH0KIAogICAgIGlmIChtX3RvcE9yaWdpbi0+aGFzVW5pdmVyc2FsQWNjZXNzKCkpCkBA
IC0xMTAsOCArMTA5LDggQEAgV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgp
CiAgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2spOwotICAg
ICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKGxvY2tlcikucmVtb3ZlKGNvbnRl
eHRJZGVudGlmaWVyKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsV29ya2VyR2xvYmFs
U2NvcGVJZGVudGlmaWVyc0xvY2sgfTsKKyAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVu
dGlmaWVycygpLnJlbW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBtX3Bl
cmZvcm1hbmNlID0gbnVsbHB0cjsKQEAgLTU4Niw4ICs1ODUsOCBAQCB2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlOjpkZWxldGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIAogdm9p
ZCBXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2VycyhTeW5jaHJvbm91cyBz
eW5jaHJvbm91cykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFsbFdvcmtlckdsb2Jh
bFNjb3BlSWRlbnRpZmllcnNMb2NrKTsKLSAgICBmb3IgKGF1dG8mIGdsb2JhbFNjb3BlSWRlbnRp
ZmllciA6IGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2VyKSkgeworICAgIExv
Y2tlciBsb2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayB9OworICAg
IGZvciAoYXV0byYgZ2xvYmFsU2NvcGVJZGVudGlmaWVyIDogYWxsV29ya2VyR2xvYmFsU2NvcGVJ
ZGVudGlmaWVycygpKSB7CiAgICAgICAgIHBvc3RUYXNrVG8oZ2xvYmFsU2NvcGVJZGVudGlmaWVy
LCBbc3luY2hyb25vdXNdKGF1dG8mIGNvbnRleHQpIHsKICAgICAgICAgICAgIGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5yZWxlYXNlTWVtb3J5KHN5bmNocm9ub3VzKTsKICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRo
cmVhZC5jcHAKaW5kZXggMDA3NWE0ZTUwNDhkYTJiOTZiZmYwMmNhOGM2YjIzMzZlZmE4MjIyNi4u
YThlYTk5YmM1ZmZlZDFhM2NjZDg2MjhlZjljN2EwNTE2ZmFiYmEyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcApAQCAtNDAsMTAgKzQw
LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9jayYgV29ya2VyT3JXb3JrbGV0VGhy
ZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpCitDaGVja2VkTG9jayBXb3JrZXJPcldv
cmtsZXRUaHJlYWQ6OnNfd29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2s7CisKK0NoZWNrZWRMb2Nr
JiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkKIHsK
LSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNf
d29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2s7CiB9CiAKIEhhc2hTZXQ8V29ya2VyT3JXb3JrbGV0
VGhyZWFkKj4mIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkcygp
CkBAIC01NiwxMyArNTcsMTMgQEAgSGFzaFNldDxXb3JrZXJPcldvcmtsZXRUaHJlYWQqPiYgV29y
a2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkKIFdvcmtlck9yV29y
a2xldFRocmVhZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICB3b3JrZXJPcldvcmtsZXRU
aHJlYWRzKCkuYWRkKHRoaXMpOwogfQogCiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6On5Xb3JrZXJP
cldvcmtsZXRUaHJlYWQoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod29ya2VyT3JX
b3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdvcmtlck9yV29ya2xl
dFRocmVhZHNMb2NrKCkgfTsKICAgICBBU1NFUlQod29ya2VyT3JXb3JrbGV0VGhyZWFkcygpLmNv
bnRhaW5zKHRoaXMpKTsKICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkucmVtb3ZlKHRoaXMp
OwogfQpAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpyZXN1
bWUoKQogCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVl
TWVtb3J5SW5BbGxUaHJlYWRzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdvcmtl
ck9yV29ya2xldFRocmVhZHNMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyB3b3JrZXJPcldv
cmtsZXRUaHJlYWRzTG9jaygpIH07CiAgICAgZm9yIChhdXRvKiB3b3JrZXJPcldvcmtsZXRUaHJl
YWQgOiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkpIHsKICAgICAgICAgd29ya2VyT3JXb3JrbGV0
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CiAgICAgICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXggNGYyMWFl
YjQ1MGM1ZjU1YzgyZjI5ZTM3NGQwZTNjNjY4Njc3Yzk4Yy4uOTczZmM3MTA0YzYzZmQxYTNkN2U1
OGYwNTYyZjEyYjM2MWE3Y2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5oCkBAIC0yNiw5ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKQEAgLTY1LDggKzY1LDgg
QEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBzdGF0aWMgSGFzaFNldDxXb3JrZXJPcldvcmtsZXRU
aHJlYWQqPiYgd29ya2VyT3JXb3JrbGV0VGhyZWFkcygpOwotICAgIHN0YXRpYyBMb2NrJiB3b3Jr
ZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpOworICAgIHN0YXRpYyBIYXNoU2V0PFdvcmtlck9yV29y
a2xldFRocmVhZCo+JiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkgV1RGX1JFUVVJUkVTX0xPQ0so
d29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgc3RhdGljIENoZWNrZWRMb2NrJiB3
b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc193b3JrZXJPcldv
cmtsZXRUaHJlYWRzTG9jayk7CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVl
TWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKIHByb3RlY3RlZDoKQEAgLTgyLDYgKzgyLDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcm
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkV2FpdEZvcldlYkluc3BlY3Rvck9uU3RhcnR1
cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2sgc193
b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jazsKKwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAg
ICAgTG9jayBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrOwogICAgIFJlZlB0cjxX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gbV9nbG9iYWxTY29wZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNWVmMmI2ZWMwOTZiNGZl
MGEwZmEzNTA3YjNjMjcxMTQwNzNkZmFkYi4uZTQzY2U0MjJiYzFjMmViMzE5NjU3YjJmOTFkZGFk
YWJlNWY5Y2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKQEAgLTYwLDggKzYwLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTdGF0ZSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRlZFN0YXRlIHsgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTdGF0ZTo6UnVubmluZyB9OwotTG9jayBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRlZFN0YXRlTG9jazsKLUNvbmRpdGlvbiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRlZFN0YXRlQ2hhbmdlQ29uZGl0aW9u
OworQ2hlY2tlZExvY2sgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kZWRT
dGF0ZUxvY2s7CitDaGVja2VkQ29uZGl0aW9uIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c3VzcGVuZGVkU3RhdGVDaGFuZ2VDb25kaXRpb247CiAKIGNvbnN0IE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3JlZERh
dGFUeXBlcygpCiB7CkBAIC0zNDksNyArMzQ5LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3Vy
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQoc3VzcGVu
ZGVkU3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAg
ICAgeworICAgICAgICAgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgc3VzcGVuZGVkU3RhdGVMb2Nr
IH07CisgICAgICAgICAgICBBU1NFUlQoc3VzcGVuZGVkU3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRl
ZCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5tZXJn
ZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHko
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAvLyBXZSBjYW4gY2FuY2VsIGFu
eSBwZW5kaW5nIHJlcXVlc3QgdG8gcHJvY2VzcyBzdGF0aXN0aWNzIHNpbmNlIHdlJ3JlIGRvaW5n
IGl0IHN5bmNocm9ub3VzbHkgYmVsb3cuCkBAIC0xNDQ0LDcgKzE0NTAsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3Bl
bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIo
c3VzcGVuZGVkU3RhdGVMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBzdXNwZW5kZWRT
dGF0ZUxvY2sgfTsKICAgICBpZiAoc3VzcGVuZGVkU3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcpCiAg
ICAgICAgIHJldHVybjsKICAgICBzdXNwZW5kZWRTdGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVuZDsK
QEAgLTE0NTQsNyArMTQ2MCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0CiAgICAgICAgIGZv
ciAoYXV0byYgZGF0YWJhc2VTdG9yZSA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjphbGxTdG9yZXMoKSkKICAgICAgICAgICAgIGRhdGFiYXNlU3RvcmUtPmludGVycnVwdCgp
OwogICAgICAgICAKLSAgICAgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKHN1c3BlbmRlZFN0
YXRlTG9jayk7CisgICAgICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IHN1c3BlbmRlZFN0YXRlTG9j
ayB9OwogICAgICAgICBBU1NFUlQoc3VzcGVuZGVkU3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7
CiAKICAgICAgICAgaWYgKHN1c3BlbmRlZFN0YXRlICE9IFN0YXRlOjpXaWxsU3VzcGVuZCkgewpA
QCAtMTQ3Myw3ICsxNDc5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXQKIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgpCiB7Ci0gICAgTG9ja2VyPExvY2s+
IHN0YXRlTG9ja2VyKHN1c3BlbmRlZFN0YXRlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2Vy
IHsgc3VzcGVuZGVkU3RhdGVMb2NrIH07CiAgICAgYXV0byBwcmV2aW91c1N0YXRlID0gc3VzcGVu
ZGVkU3RhdGU7CiAgICAgc3VzcGVuZGVkU3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKICAgICBpZiAo
cHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDFmYTNiZTM4NDdmZjgwNGMyNjcwMzE4OTRi
MjEyMzFkNmZlNzA0YzYuLjk2M2VhNDczZDMyODg5NzY2NWFmMmU4OTk5N2ViY2QyYWI2YjVkMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTQw
LDYgKzQwLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZENvbmRpdGlv
bi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNjEsOSArMzYzLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgV2lsbFN1c3BlbmQsCiAgICAgICAgIFN1c3BlbmRlZAogICAgIH07Ci0gICAgc3RhdGljIFN0
YXRlIHN1c3BlbmRlZFN0YXRlOwotICAgIHN0YXRpYyBMb2NrIHN1c3BlbmRlZFN0YXRlTG9jazsK
LSAgICBzdGF0aWMgQ29uZGl0aW9uIHN1c3BlbmRlZFN0YXRlQ2hhbmdlQ29uZGl0aW9uOworICAg
IHN0YXRpYyBDaGVja2VkTG9jayBzdXNwZW5kZWRTdGF0ZUxvY2s7CisgICAgc3RhdGljIFN0YXRl
IHN1c3BlbmRlZFN0YXRlIFdURl9HVUFSREVEX0JZX0xPQ0soc3VzcGVuZGVkU3RhdGVMb2NrKTsK
KyAgICBzdGF0aWMgQ2hlY2tlZENvbmRpdGlvbiBzdXNwZW5kZWRTdGF0ZUNoYW5nZUNvbmRpdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcAppbmRleCA0YTI2NzEyZTZiNmEzMWFkMGIxMDJlN2RjOGU4ODk1ZmFh
NmVjZmU1Li4xMGE3NDMyODZlMDZjMTMzMTkwOTU3YTY5YTAyMDgzYjU0NTQwNGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMjc0LDE1ICsyNzQsMTAg
QEAgc3RhdGljIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgQ29ubmVjdGlvbio+
JiBhbGxDb25uZWN0aW9ucygpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIExvY2smIGFz
eW5jUmVwbHlIYW5kbGVyTWFwTG9jaygpCitzdGF0aWMgQ2hlY2tlZExvY2sgYXN5bmNSZXBseUhh
bmRsZXJNYXBMb2NrOworc3RhdGljIEhhc2hNYXA8dWludHB0cl90LCBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqKT4+PiYgYXN5bmNSZXBseUhhbmRsZXJN
YXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhhc3luY1JlcGx5SGFuZGxlck1hcExvY2spCiB7Ci0gICAg
c3RhdGljIExvY2sgbG9jazsKLSAgICByZXR1cm4gbG9jazsKLX0KLQotc3RhdGljIEhhc2hNYXA8
dWludHB0cl90LCBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29k
ZXIqKT4+PiYgYXN5bmNSZXBseUhhbmRsZXJNYXAoY29uc3QgTG9ja0hvbGRlciYpCi17Ci0gICAg
QVNTRVJUKGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jaygpLmlzSGVsZCgpKTsKKyAgICBBU1NFUlQo
YXN5bmNSZXBseUhhbmRsZXJNYXBMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDx1aW50cHRyX3QsIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRGVjb2RlciopPj4+PiBtYXA7CiAgICAgcmV0dXJuIG1hcC5nZXQoKTsKIH0KQEAg
LTEyMTksOCArMTIxNCw4IEBAIHVpbnQ2NF90IG5leHRBc3luY1JlcGx5SGFuZGxlcklEKCkKIAog
dm9pZCBhZGRBc3luY1JlcGx5SGFuZGxlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihhc3luY1JlcGx5SGFuZGxlck1h
cExvY2soKSk7Ci0gICAgYXV0byByZXN1bHQgPSBhc3luY1JlcGx5SGFuZGxlck1hcChsb2NrZXIp
LmVuc3VyZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmNvbm5lY3Rpb24pLCBbXSB7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jayB9OworICAgIGF1dG8g
cmVzdWx0ID0gYXN5bmNSZXBseUhhbmRsZXJNYXAoKS5lbnN1cmUocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KCZjb25uZWN0aW9uKSwgW10gewogICAgICAgICByZXR1cm4gSGFzaE1hcDx1aW50
NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVyKik+PigpOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZS5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC0xMjMwLDgg
KzEyMjUsOCBAQCB2b2lkIGNsZWFyQXN5bmNSZXBseUhhbmRsZXJzKGNvbnN0IENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiB7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChEZWNvZGVyKik+PiBtYXA7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihh
c3luY1JlcGx5SGFuZGxlck1hcExvY2soKSk7Ci0gICAgICAgIG1hcCA9IGFzeW5jUmVwbHlIYW5k
bGVyTWFwKGxvY2tlcikudGFrZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmNvbm5lY3Rp
b24pKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jayB9
OworICAgICAgICBtYXAgPSBhc3luY1JlcGx5SGFuZGxlck1hcCgpLnRha2UocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KCZjb25uZWN0aW9uKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBo
YW5kbGVyIDogbWFwLnZhbHVlcygpKSB7CkBAIC0xMjQyLDggKzEyMzcsOCBAQCB2b2lkIGNsZWFy
QXN5bmNSZXBseUhhbmRsZXJzKGNvbnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlciopPiB0YWtlQXN5bmNSZXBseUhhbmRsZXIoQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihhc3luY1JlcGx5SGFuZGxlck1hcExvY2soKSk7Ci0gICAgYXV0byYgbWFwID0gYXN5
bmNSZXBseUhhbmRsZXJNYXAobG9ja2VyKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYXN5bmNSZXBs
eUhhbmRsZXJNYXBMb2NrIH07CisgICAgYXV0byYgbWFwID0gYXN5bmNSZXBseUhhbmRsZXJNYXAo
KTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KCZjb25uZWN0aW9uKSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1hcC5lbmQoKSkgewogICAg
ICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS5pc1ZhbGlkS2V5KGlkZW50aWZpZXIpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNw
cAppbmRleCA3ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZkMWU0NDUxYjk2YzUyLi42ZmRlZDNi
OWMzN2FkZGQxNTEyYTlkOGRhNDNjMWZjNmVjZTRhOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTM0LDEzICsz
NCwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExv
Y2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIExvY2sgZ2xvYmFsV2ViU29j
a2V0U3RyZWFtTWFwTG9jazsKLXN0YXRpYyBIYXNoTWFwPFdlYlNvY2tldElkZW50aWZpZXIsIFdl
YlNvY2tldFN0cmVhbSo+JiBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKQorc3RhdGljIENoZWNr
ZWRMb2NrIGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2s7CitzdGF0aWMgSGFzaE1hcDxXZWJT
b2NrZXRJZGVudGlmaWVyLCBXZWJTb2NrZXRTdHJlYW0qPiYgZ2xvYmFsV2ViU29ja2V0U3RyZWFt
TWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jaykKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJTb2NrZXRJZGVudGlmaWVyLCBX
ZWJTb2NrZXRTdHJlYW0qPj4gZ2xvYmFsTWFwOwogICAgIHJldHVybiBnbG9iYWxNYXA7CkBAIC00
OCw3ICs0OSw3IEBAIHN0YXRpYyBIYXNoTWFwPFdlYlNvY2tldElkZW50aWZpZXIsIFdlYlNvY2tl
dFN0cmVhbSo+JiBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoCiAKIFdlYlNvY2tldFN0cmVhbSog
V2ViU29ja2V0U3RyZWFtOjpzdHJlYW1XaXRoSWRlbnRpZmllcihXZWJTb2NrZXRJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsV2ViU29ja2V0U3Ry
ZWFtTWFwTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgZ2xvYmFsV2ViU29ja2V0U3Ry
ZWFtTWFwTG9jayB9OwogICAgIHJldHVybiBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5nZXQo
aWRlbnRpZmllcik7CiB9CiAKQEAgLTU2LDcgKzU3LDcgQEAgdm9pZCBXZWJTb2NrZXRTdHJlYW06
Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJTb2NrZXRT
dHJlYW0+PiBzb2NrZXRzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFs
V2ViU29ja2V0U3RyZWFtTWFwTG9jayk7CisgICAgICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IGds
b2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2sgfTsKICAgICAgICAgc29ja2V0cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLnNpemUoKSk7CiAgICAgICAg
IGZvciAoYXV0byYgc3RyZWFtIDogZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwKCkudmFsdWVzKCkp
CiAgICAgICAgICAgICBzb2NrZXRzLnVuY2hlY2tlZEFwcGVuZChzdHJlYW0pOwpAQCAtNzEsNyAr
NzIsNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkKICAg
ICAgICAgc3RyZWFtID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihn
bG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBn
bG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrIH07CiAgICAgZ2xvYmFsV2ViU29ja2V0U3RyZWFt
TWFwKCkuY2xlYXIoKTsKIH0KIApAQCAtODcsMTQgKzg4LDE0IEBAIFdlYlNvY2tldFN0cmVhbTo6
V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGVDbGllCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRTdHJlYW0odXJsLCBjYWNoZVBhcnRpdGlvbiwg
bV9pZGVudGlmaWVyKSwgMCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxXZWJTb2Nr
ZXRTdHJlYW1NYXBMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBnbG9iYWxXZWJTb2Nr
ZXRTdHJlYW1NYXBMb2NrIH07CiAgICAgQVNTRVJUKCFnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAo
KS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKICAgICBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAo
KS5zZXQobV9pZGVudGlmaWVyLCB0aGlzKTsKIH0KIAogV2ViU29ja2V0U3RyZWFtOjp+V2ViU29j
a2V0U3RyZWFtKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxXZWJTb2NrZXRTdHJl
YW1NYXBMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBnbG9iYWxXZWJTb2NrZXRTdHJl
YW1NYXBMb2NrIH07CiAgICAgQVNTRVJUKGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLmNvbnRh
aW5zKG1faWRlbnRpZmllcikpOwogICAgIGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLnJlbW92
ZShtX2lkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUludGVybmFsLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUludGVy
bmFsLm1tCmluZGV4IDNhNzA2YzRhOGQ0OWMxZmM0N2Y4ODk0ZmFjNWI0MjVmYzc3NDhmNTYuLmQz
M2E1N2I2MzMxNDgxYjFjY2UxNjFkMTU5NTZmYjBmODJhZTZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSW50ZXJuYWwubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBvcnQg
PFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRP
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL3J1bnRpbWVfcm9vdC5oPgorI2ltcG9y
dCA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgotI2ltcG9ydCA8
d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKQEAgLTQ0LDEwICs0NCwxMSBAQAogLy8gV3JhcHBpbmcgV2ViQ29yZSBp
bXBsZW1lbnRhdGlvbiBvYmplY3RzCiAKICNpZmRlZiBORUVEU19XUkFQUEVSX0NBQ0hFX0xPQ0sK
LXN0YXRpYyBMb2NrIHdyYXBwZXJDYWNoZUxvY2s7Ci0jZW5kaWYKLQorc3RhdGljIENoZWNrZWRM
b2NrIHdyYXBwZXJDYWNoZUxvY2s7CitzdGF0aWMgSGFzaE1hcDxET01PYmplY3RJbnRlcm5hbCos
IE5TT2JqZWN0ICo+JiB3cmFwcGVyQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyh3cmFwcGVyQ2Fj
aGVMb2NrKQorI2Vsc2UKIHN0YXRpYyBIYXNoTWFwPERPTU9iamVjdEludGVybmFsKiwgTlNPYmpl
Y3QgKj4mIHdyYXBwZXJDYWNoZSgpCisjZW5kaWYKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxET01PYmplY3RJbnRlcm5hbCosIE5TT2JqZWN0ICo+PiBtYXA7CiAgICAgcmV0
dXJuIG1hcDsKQEAgLTU2LDcgKzU3LDcgQEAgc3RhdGljIEhhc2hNYXA8RE9NT2JqZWN0SW50ZXJu
YWwqLCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkKIE5TT2JqZWN0KiBnZXRET01XcmFwcGVy
KERPTU9iamVjdEludGVybmFsKiBpbXBsKQogewogI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVf
TE9DSwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hlTG9jayk7CisgICAg
TG9ja2VyIHN0YXRlTG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogI2VuZGlmCiAgICAgcmV0
dXJuIHdyYXBwZXJDYWNoZSgpLmdldChpbXBsKTsKIH0KQEAgLTY0LDcgKzY1LDcgQEAgTlNPYmpl
Y3QqIGdldERPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB2b2lkIGFkZERPTVdy
YXBwZXIoTlNPYmplY3QqIHdyYXBwZXIsIERPTU9iamVjdEludGVybmFsKiBpbXBsKQogewogI2lm
ZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
d3JhcHBlckNhY2hlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgd3JhcHBlckNhY2hl
TG9jayB9OwogI2VuZGlmCiAgICAgd3JhcHBlckNhY2hlKCkuc2V0KGltcGwsIHdyYXBwZXIpOwog
fQpAQCAtNzIsNyArNzMsNyBAQCB2b2lkIGFkZERPTVdyYXBwZXIoTlNPYmplY3QqIHdyYXBwZXIs
IERPTU9iamVjdEludGVybmFsKiBpbXBsKQogdm9pZCByZW1vdmVET01XcmFwcGVyKERPTU9iamVj
dEludGVybmFsKiBpbXBsKQogewogI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hlTG9jayk7CisgICAgTG9ja2VyIHN0
YXRlTG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogI2VuZGlmCiAgICAgd3JhcHBlckNhY2hl
KCkucmVtb3ZlKGltcGwpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429249</attachid>
            <date>2021-05-20 17:40:21 -0700</date>
            <delta_ts>2021-05-20 18:20:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226040-20210520174020.patch</filename>
            <type>text/plain</type>
            <size>133421</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI2NDZlYTk2Mjk1ZTg3Njk5OWIxMjZl
OTM1ODk2NmVmMGFlNjM1ODguLmIzNmNmNTBiNjBiNWQyZDM5OGRkYzlhMjA0Yjc0NjFjZTY1MTNk
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hl
Y2tlZExvY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzIHNvIHRoYXQgd2Ug
Y2FuIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6YWxsVGhyZWFkc0xv
Y2spOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6ZGlkRXhpdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9V
UkwuY3BwOgorICAgICAgICAoV1RGOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXVEY6
OnJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOgorICAgICAgICAoV1RG
OjpjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKFdU
Rjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0Yu
Y3BwOgorICAgICAgICAoV1RGOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXVEY6OnBs
YXRmb3JtTGFuZ3VhZ2VEaWRDaGFuZ2UpOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmdWaWV3OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5n
Vmlldzo6YWRvcHRVbmRlcmx5aW5nU3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6
c2V0VW5kZXJseWluZ1N0cmluZyk6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9y
SUNVLmNwcDoKKyAgICAgICAgKFdURjo6Q29sbGF0b3I6OkNvbGxhdG9yKToKKyAgICAgICAgKFdU
Rjo6Q29sbGF0b3I6On5Db2xsYXRvcik6CisKIDIwMjEtMDUtMTkgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2
aWdhdGlvbiBUaW1pbmcgTGV2ZWwgMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1NzdkM2QxNDllN2U1M2UzZjhl
NzRiNGU3ZDY5YTlmNWQ1NGIxYWEuLmEyNTEzZmZhMTkyMzU0M2VjNTA1NTJkZDVjNzhlM2Y4MmZm
ZmNkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODEgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExv
Y2tzIHdpdGggQ2hlY2tlZExvY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tz
IHNvIHRoYXQgd2UgY2FuIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lz
LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25D
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VyaWFsaXphdGlv
bkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp+SURCU2VyaWFsaXphdGlvbkNv
bnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbDo6cmVtb3ZlRnJvbURhdGFDaGFubmVsTG9jYWxNYXBJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6aGFuZGxlckZyb21JZGVudGlmaWVyKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldU
Rl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmdldENhY2hlZFZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6Omluc3RhbmNl
c0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2aWNlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQ
aXBlbGluZTo6aW5zdGFuY2VzTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQaXBlbGlu
ZTo6V2ViR1BVUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUGlwZWxpbmU6On5X
ZWJHUFVQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6fldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2
ZVdlYlNvY2tldHNMb2NrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjphZGRKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlSlNX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUpTV3JhcHBlcklmUmV0YWluQ291bnRP
bmUpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpuYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnJlZ2lzdGVyQWxnb3JpdGhtKToKKyAgICAgICAg
KiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaDoKKyAgICAgICAgKiBkb20vTWVzc2Fn
ZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRlcmVmIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2Nh
bGx5UmVhY2hhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpub3RpZnlNZXNz
YWdlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9y
dCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNv
bnRleHRzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5T
Y3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6aW5zdGFuY2VzTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6aW5zdGFu
Y2VzTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OldlYkdMUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06On5XZWJHTFByb2dyYW0pOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6fldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2FudmFzOjpjYW52YXNFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25z
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndlYlNvY2tldEZvclJlcXVlc3RJZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIHBh
Z2UvU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xP
Q0spOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3ds
aXN0RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdp
bkFjY2Vzc0FsbG93bGlzdEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5
OjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93bGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlQb2xpY3k6OmFsbG93QWNjZXNzVG8pOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZVRocmVhZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVh
ZDo6cGxhdGZvcm1Db2xsZWN0Q1BVRGF0YSk6CisgICAgICAgICogcGFnZS9saW51eC9SZXNvdXJj
ZVVzYWdlVGhyZWFkTGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRo
cmVhZDo6cGxhdGZvcm1Db2xsZWN0Q1BVRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJp
Y1Rhc2tRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46
OnBvc3RUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6c2hh
cmVkVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46
OnBlbmRpbmdEaXNwYXRjaGVycyk6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxU
aW1lcj46OmRpc3BhdGNoT25lVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tR
dWV1ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldU
Rl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2No
ZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzSGFuZGxl
ZEJ5U2NoZW1lSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6c2NoZW1lSXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0Fj
Y2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJl
YXRVUkxTY2hlbWVBc05vQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxh
eUlzb2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdp
c3RlclVSTFNjaGVtZUFzU2VjdXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzU2VjdXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlP
bmx5SWZDYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpyZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdp
c3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0
eVBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnNob3VsZFBhcnRpdGlvbkNhY2hlRm9yVVJMU2NoZW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmZmdFNl
dHVwRm9yU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29y
ZTo6aW5zdGFsbGVkTWVkaWFFbmdpbmVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpyZXNldE1lZGlhRW5naW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlS
RVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FM
YXllckZvckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpj
b21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjp+UGxh
dGZvcm1DQUxheWVyQ29jb2EpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06
CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3Jl
OjpyZW1vdmVRTFByZXZpZXdDb252ZXJ0ZXJGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6YWRk
UUxQcmV2aWV3Q29udmVydGVyV2l0aEZpbGVGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW06CisgICAgICAgIChXVEZfUkVRVUlS
RVNfTE9DSyk6CisgICAgICAgICgrW1dlYkRhdGFiYXNlVHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFz
a0NvbnRyb2xsZXIgc3RhcnRCYWNrZ3JvdW5kVGFza10pOgorICAgICAgICAoK1tXZWJEYXRhYmFz
ZVRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tDb250cm9sbGVyIGVuZEJhY2tncm91bmRUYXNrXSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJv
bU1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6c2V0SXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAqIHBsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VUcmFja2VyOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlVHJhY2tlcjo6aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3NDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRy
YWNrZXI6Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlS
RVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpuZXdUZXh0Q29kZWMpOgorICAgICAgICAoV2Vi
Q29yZTo6YXRvbUNhbm9uaWNhbFRleHRFbmNvZGluZ05hbWUpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xP
Q0spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNj
b3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFs
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OnJlbGVhc2VNZW1v
cnlJbldvcmtlcnMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3Jr
bGV0VGhyZWFkc0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFk
OjpXb3JrZXJPcldvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3Jr
bGV0VGhyZWFkOjp+V29ya2VyT3JXb3JrbGV0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlck9yV29ya2xldFRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJl
YWRzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oOgorCiAyMDIx
LTA1LTIwICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBT
cGF0aWFsIG5hdmlnYXRpb24gdGVzdHMgZmFpbCB3aXRoIGFzeW5jIG92ZXJmbG93IHNjcm9sbGlu
ZyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE3YWMxZWFlZWUzNGZjMGMxODNlZmI5ZmZkNzY0ODc0MzRj
MmJkZTguLjkzYjBlZTZkNWVkYzNhYTk0MGZmMjIxM2FmNzAwNGMwZmU1YmY0NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExv
Y2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYw
NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzIHNvIHRoYXQgd2UgY2FuIGJl
bmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpXVEZfUkVRVUlSRVNf
TE9DSyk6CisgICAgICAgIChJUEM6OmFkZEFzeW5jUmVwbHlIYW5kbGVyKToKKyAgICAgICAgKElQ
Qzo6Y2xlYXJBc3luY1JlcGx5SGFuZGxlcnMpOgorICAgICAgICAoSVBDOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFt
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtOjpzdHJlYW1XaXRoSWRlbnRp
Zmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nlc3ND
cmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJl
YW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW06On5XZWJTb2NrZXRTdHJlYW0p
OgorCiAyMDIxLTA1LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzc2MDYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggYzM5MzhmYTdkZjIyZjM4ZGQ0MzZkMmE3ZGQyYzVhYzBmNTAy
NDgxYy4uMTU3NmE3YWZkYjU2MGEyOTc2OGFjMTNhYzdjNGUzOWM3ZTVlYWM5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTIwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBtb3JlIHN0YXRpYyBM
b2NrcyB3aXRoIENoZWNrZWRMb2NrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2MDQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVwbGFjZSBtb3JlIHN0YXRpYyBMb2NrcyB3aXRoIENoZWNrZWRMb2Nr
cyBzbyB0aGF0IHdlIGNhbiBiZW5lZml0IGZyb20gQ2xhbmcgVGhyZWFkIFNhZmV0eSBBbmFseXNp
cy4KKworICAgICAgICAqIERPTS9ET01JbnRlcm5hbC5tbToKKyAgICAgICAgKGdldERPTVdyYXBw
ZXIpOgorICAgICAgICAoYWRkRE9NV3JhcHBlcik6CisgICAgICAgIChyZW1vdmVET01XcmFwcGVy
KToKKwogMjAyMS0wNS0yMCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+
CiAKICAgICAgICAgW1dlYklETF0gUmVtb3ZlIFtJbXBsaWNpdFRoaXNdIGFuZCBbQ3VzdG9tUHJv
eHlUb0pTT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBm
ZjE2NzkwMmZjN2M0MGE0NTQ2NDUzMDMyMTkzMWZjYTNjNzM5NWQ2Li41NzBiNzhiNDliMzA5ZmY0
OGFkODkwYWQxNTM0YzhjMjc1YzI5YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTQxLDYgKzQx
LDggQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKK0NoZWNrZWRMb2NrIFRocmVhZDo6c19hbGxUaHJl
YWRzTG9jazsKKwogc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gc3RhY2tTaXplKFRocmVhZFR5cGUg
dGhyZWFkVHlwZSkKIHsKICAgICAvLyBSZXR1cm4gdGhlIHN0YWNrIHNpemUgZm9yIHRoZSBjcmVh
dGVkIHRocmVhZCBiYXNlZCBvbiBpdHMgdHlwZS4KQEAgLTkxLDcgKzkzLDcgQEAgcHVibGljOgog
I2VuZGlmCiB9OwogCi1IYXNoU2V0PFRocmVhZCo+JiBUaHJlYWQ6OmFsbFRocmVhZHMoY29uc3Qg
TG9ja0hvbGRlciYpCitIYXNoU2V0PFRocmVhZCo+JiBUaHJlYWQ6OmFsbFRocmVhZHMoKQogewog
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWxsVGhyZWFk
czsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKQEAgLTEwMSwxMCArMTAzLDkg
QEAgSGFzaFNldDxUaHJlYWQqPiYgVGhyZWFkOjphbGxUaHJlYWRzKGNvbnN0IExvY2tIb2xkZXIm
KQogICAgIHJldHVybiBhbGxUaHJlYWRzOwogfQogCi1Mb2NrJiBUaHJlYWQ6OmFsbFRocmVhZHNN
dXRleCgpCitDaGVja2VkTG9jayYgVGhyZWFkOjphbGxUaHJlYWRzTG9jaygpCiB7Ci0gICAgc3Rh
dGljIExvY2sgbXV0ZXg7Ci0gICAgcmV0dXJuIG11dGV4OworICAgIHJldHVybiBzX2FsbFRocmVh
ZHNMb2NrOwogfQogCiBjb25zdCBjaGFyKiBUaHJlYWQ6Om5vcm1hbGl6ZVRocmVhZE5hbWUoY29u
c3QgY2hhciogdGhyZWFkTmFtZSkKQEAgLTIxOCw5ICsyMTksOSBAQCBSZWY8VGhyZWFkPiBUaHJl
YWQ6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBGdW5jdGlvbjx2b2lkKCk+JiYgZW50cnlQb2lu
dCwgVGhyZQogICAgIC8vIGNhbGxlZCBUaHJlYWQ6OmRpZEV4aXQgdG8gdW5yZWdpc3RlciBpdHNl
bGYgZnJvbSBhbGxUaHJlYWRzLiBSZWdpc3RlcmluZyBzdWNoIGEgdGhyZWFkIHdpbGwgcmVnaXN0
ZXIgYSBzdGFsZSB0aHJlYWQgcG9pbnRlciB0byBhbGxUaHJlYWRzLCB3aGljaCB3aWxsIG5vdCBi
ZSByZW1vdmVkCiAgICAgLy8gZXZlbiBhZnRlciBUaHJlYWQgaXMgZGVzdHJveWVkLiBSZWdpc3Rl
ciBhIHRocmVhZCBvbmx5IHdoZW4gaXQgaGFzIG5vdCB1bnJlZ2lzdGVyZWQgaXRzZWxmIGZyb20g
YWxsVGhyZWFkcyB5ZXQuCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFs
bFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFsbFRocmVhZHNMb2Nr
KCkgfTsKICAgICAgICAgaWYgKCF0aHJlYWQtPm1fZGlkVW5yZWdpc3RlckZyb21BbGxUaHJlYWRz
KQotICAgICAgICAgICAgYWxsVGhyZWFkcyhsb2NrZXIpLmFkZCh0aHJlYWQucHRyKCkpOworICAg
ICAgICAgICAgYWxsVGhyZWFkcygpLmFkZCh0aHJlYWQucHRyKCkpOwogICAgIH0KIAogICAgIEFT
U0VSVCghdGhyZWFkLT5zdGFjaygpLmlzRW1wdHkoKSk7CkBAIC0yNDQsOCArMjQ1LDggQEAgc3Rh
dGljIGJvb2wgc2hvdWxkUmVtb3ZlVGhyZWFkRnJvbVRocmVhZEdyb3VwKCkKIHZvaWQgVGhyZWFk
OjpkaWRFeGl0KCkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxs
VGhyZWFkc011dGV4KCkpOwotICAgICAgICBhbGxUaHJlYWRzKGxvY2tlcikucmVtb3ZlKHRoaXMp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsVGhyZWFkc0xvY2soKSB9OworICAgICAgICBh
bGxUaHJlYWRzKCkucmVtb3ZlKHRoaXMpOwogICAgICAgICBtX2RpZFVucmVnaXN0ZXJGcm9tQWxs
VGhyZWFkcyA9IHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IDk0OTVkNmMxYjA4YWE0
ZGNmYzUwZGQxMzBlYTMzZjEzNjQyYmM5OTYuLmM0MmUzMDRmMzJiYjRmNzgyYjY4MjIxMjFkMzA1
YjY5OWExMzJmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNp
bmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtMTE2
LDggKzExNyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGhyZWFkJiBjdXJyZW50KCk7CiAKICAg
ICAvLyBTZXQgb2YgYWxsIFdURjo6VGhyZWFkIGNyZWF0ZWQgdGhyZWFkcy4KLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIEhhc2hTZXQ8VGhyZWFkKj4mIGFsbFRocmVhZHMoY29uc3QgTG9j
a0hvbGRlciYpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTG9jayYgYWxsVGhyZWFk
c011dGV4KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBIYXNoU2V0PFRocmVhZCo+
JiBhbGxUaHJlYWRzKCkgV1RGX1JFUVVJUkVTX0xPQ0soYWxsVGhyZWFkc0xvY2soKSk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDaGVja2VkTG9jayYgYWxsVGhyZWFkc0xvY2soKSBX
VEZfUkVUVVJOU19MT0NLKHNfYWxsVGhyZWFkc0xvY2spOwogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHVuc2lnbmVkIG51bWJlck9mVGhyZWFkR3JvdXBzKCk7CiAKQEAgLTMyOCw2ICszMjksOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIFRocmVhZCogY3VycmVudE1heUJlTnVsbCgpOwogI2Vu
ZGlmCiAKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2sgc19hbGxUaHJlYWRzTG9jazsKKwogICAgIEpv
aW5hYmxlU3RhdGUgbV9qb2luYWJsZVN0YXRlIHsgSm9pbmFibGUgfTsKICAgICBib29sIG1faXNT
aHV0dGluZ0Rvd24gOiAxOwogICAgIGJvb2wgbV9kaWRFeGl0IDogMTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IGE1ZDc0
YWZlYWVjZWVhN2NkZGY3YmIxNzlkNDIzZDlkZmM5NTJjMGQuLjRkNmIwZDU1YzEwYWRiNjdkMGYx
ZTdlZmIzYTM1NGFhNjU3N2QwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IlVSTFBhcnNlci5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91aWRu
YS5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CkBAIC0yNjcsMTYgKzI2OCwxNiBAQCBzdGF0aWMgdm9pZCBhc3NlcnRQcm90b2Nv
bElzR29vZChTdHJpbmdWaWV3IHByb3RvY29sKQogCiAjZW5kaWYKIAotc3RhdGljIExvY2sgZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrOworc3RhdGljIENoZWNrZWRMb2Nr
IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jazsKIAogdXNpbmcgRGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcgPSBIYXNoTWFwPFN0cmluZywgdWludDE2X3Q+
Owotc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQorc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSBX
VEZfUkVRVUlSRVNfTE9DSyhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZ0xvY2sp
CiB7CiAgICAgc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiBkZWZh
dWx0UG9ydEZvclByb3RvY29sTWFwOwogICAgIHJldHVybiBkZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwOwogfQogCi1zdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcmIGVu
c3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkKK3N0YXRpYyBEZWZhdWx0
UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyYgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKSBXVEZfUkVRVUlSRVNfTE9DSyhkZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZ0xvY2spCiB7CiAgICAgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKTsKICAgICBpZiAoIWRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXApCkBA
IC0yODYsMjUgKzI4NywyNiBAQCBzdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmcmIGVuc3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZQogCiB2b2lkIHJlZ2lz
dGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcodWludDE2X3QgcG9ydCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayB9OwogICAgIGVuc3VyZURlZmF1
bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkuYWRkKHByb3RvY29sLCBwb3J0KTsKIH0K
IAogdm9pZCBjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0
aW5nTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBG
b3JUZXN0aW5nTG9jayB9OwogICAgIGlmIChhdXRvKiBtYXAgPSBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZygpKQogICAgICAgICBtYXAtPmNsZWFyKCk7CiB9CiAKIE9wdGlvbmFs
PHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCiB7
Ci0gICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmcoKSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayk7Ci0gICAgICAgIEFTU0VSVChvdmVycmlkZU1h
cCk7IC8vIE5vIG5lZWQgdG8gbnVsbCBjaGVjayBhZ2FpbiBoZXJlIHNpbmNlIG92ZXJyaWRlTWFw
IGNhbm5vdCBiZWNvbWUgbnVsbCBhZnRlciBiZWluZyBub24tbnVsbC4KLSAgICAgICAgYXV0byBp
dGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENvcHlp
bmcoKSk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCi0gICAg
ICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jayB9OworICAgICAg
ICBpZiAoYXV0byogb3ZlcnJpZGVNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZygpKSB7CisgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gb3ZlcnJpZGVNYXAtPmZpbmQo
cHJvdG9jb2wudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICAgICAgICAgIGlmIChpdGVy
YXRvciAhPSBvdmVycmlkZU1hcC0+ZW5kKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gVVJMUGFyc2VyOjpkZWZh
dWx0UG9ydEZvclByb3RvY29sKHByb3RvY29sKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2NmL0xhbmd1YWdlQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAK
aW5kZXggNTNjMGVmMGRjMDBiMzk0MmQzOWI2NThhOGRjYzBkNmUwNGNmNmQxMy4uZTA3MzExNTQy
OTFiZmQwN2M0Y2MxNmRhMDQyYWFhZGI1OWM5ZTNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvY2YvTGFuZ3VhZ2VDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx1bmljb2Rl
L3Vsb2MuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9zcGkv
Y2YvQ0ZCdW5kbGVTUEkuaD4KQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAK
LXN0YXRpYyBMb2NrIHByZWZlcnJlZExhbmd1YWdlc011dGV4Oworc3RhdGljIENoZWNrZWRMb2Nr
IHByZWZlcnJlZExhbmd1YWdlc0xvY2s7CiAKICNpZiBQTEFURk9STShNQUMpCiBzdGF0aWMgdm9p
ZCBsYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2
b2lkKiwgQ0ZTdHJpbmdSZWYsIGNvbnN0IHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYpCkBAIC00Nyw3
ICs0Nyw3IEBAIHN0YXRpYyB2b2lkIGxhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2UoQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqLCBDRlN0cmluCiB9CiAjZW5kaWYKIAotc3RhdGljIFZl
Y3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFnZXMoKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+
JiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhwcmVmZXJyZWRMYW5ndWFn
ZXNMb2NrKQogewogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFN0cmluZz4+
IGxhbmd1YWdlczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKQEAgLTkxLDcg
KzkxLDcgQEAgc3RhdGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoQ0ZTdHJpbmdSZWYg
bGFuZ3VhZ2UpCiB2b2lkIHBsYXRmb3JtTGFuZ3VhZ2VEaWRDaGFuZ2UoKQogewogICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwcmVmZXJyZWRMYW5ndWFnZXNNdXRleCk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBwcmVmZXJyZWRMYW5ndWFnZXNMb2NrIH07CiAgICAgICAg
IHByZWZlcnJlZExhbmd1YWdlcygpLmNsZWFyKCk7CiAgICAgfQogfQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgbGlzdGVuRm9yTGFuZ3VhZ2VDaGFuZ2VOb3RpZmljYXRpb25zKCkKIAogVmVjdG9y
PFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgcHJlZmVycmVkTGFuZ3VhZ2VzTG9jayB9OwogICAgIFZlY3RvcjxTdHJpbmc+JiB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzID0gcHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAKICAgICBpZiAodXNl
clByZWZlcnJlZExhbmd1YWdlcy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
Y3BwCmluZGV4IDNjYjAxODNjODAxMWFkOGRhODJjMGU5NDJiNzY5Mzg5ODFiZDNkY2UuLjNlODQ2
M2Y0OTMwODllMzVhZDk3NDMwZDU4MzE5YjYzMWNkNDU2NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcApAQCAtMzAsOCArMzAsOCBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICNpbmNsdWRlIDx1bmljb2RlL3Vicmsu
aD4KICNpbmNsdWRlIDx1bmljb2RlL3Vub3JtMi5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgpAQCAtMzYwLDE1ICszNjAsMTEgQEAgU3RyaW5n
Vmlldzo6VW5kZXJseWluZ1N0cmluZzo6VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdJbXBs
JiBzdHJpbmcpCiB7CiB9CiAKLXN0YXRpYyBMb2NrIHVuZGVybHlpbmdTdHJpbmdzTXV0ZXg7Citz
dGF0aWMgQ2hlY2tlZExvY2sgdW5kZXJseWluZ1N0cmluZ3NMb2NrOwogCi1zdGF0aWMgSGFzaE1h
cDxjb25zdCBTdHJpbmdJbXBsKiwgU3RyaW5nVmlldzo6VW5kZXJseWluZ1N0cmluZyo+JiB1bmRl
cmx5aW5nU3RyaW5ncygpCitzdGF0aWMgSGFzaE1hcDxjb25zdCBTdHJpbmdJbXBsKiwgU3RyaW5n
Vmlldzo6VW5kZXJseWluZ1N0cmluZyo+JiB1bmRlcmx5aW5nU3RyaW5ncygpIFdURl9SRVFVSVJF
U19MT0NLKHVuZGVybHlpbmdTdHJpbmdzTG9jaykKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdT
dHJpbmcqPj4gbWFwOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwotICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIG1hcC5jb25zdHJ1Y3QoKTsKLSAg
ICB9KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBTdHJpbmdJbXBs
KiwgU3RyaW5nVmlldzo6VW5kZXJseWluZ1N0cmluZyo+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsK
IH0KIApAQCAtMzc2LDcgKzM3Miw3IEBAIHZvaWQgU3RyaW5nVmlldzo6aW52YWxpZGF0ZShjb25z
dCBTdHJpbmdJbXBsJiBzdHJpbmdUb0JlRGVzdHJveWVkKQogewogICAgIFVuZGVybHlpbmdTdHJp
bmcqIHVuZGVybHlpbmdTdHJpbmc7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdW5k
ZXJseWluZ1N0cmluZ3NMb2NrIH07CiAgICAgICAgIHVuZGVybHlpbmdTdHJpbmcgPSB1bmRlcmx5
aW5nU3RyaW5ncygpLnRha2UoJnN0cmluZ1RvQmVEZXN0cm95ZWQpOwogICAgICAgICBpZiAoIXVu
ZGVybHlpbmdTdHJpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zOTMsNyArMzg5LDcgQEAg
Ym9vbCBTdHJpbmdWaWV3Ojp1bmRlcmx5aW5nU3RyaW5nSXNWYWxpZCgpIGNvbnN0CiB2b2lkIFN0
cmluZ1ZpZXc6OmFkb3B0VW5kZXJseWluZ1N0cmluZyhVbmRlcmx5aW5nU3RyaW5nKiB1bmRlcmx5
aW5nU3RyaW5nKQogewogICAgIGlmIChtX3VuZGVybHlpbmdTdHJpbmcpIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayh1bmRlcmx5aW5nU3RyaW5nc011dGV4KTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IHVuZGVybHlpbmdTdHJpbmdzTG9jayB9OwogICAgICAgICBpZiAoIS0tbV91
bmRlcmx5aW5nU3RyaW5nLT5yZWZDb3VudCkgewogICAgICAgICAgICAgaWYgKG1fdW5kZXJseWlu
Z1N0cmluZy0+aXNWYWxpZCkgewogICAgICAgICAgICAgICAgIHVuZGVybHlpbmdTdHJpbmdzKCku
cmVtb3ZlKCZtX3VuZGVybHlpbmdTdHJpbmctPnN0cmluZyk7CkBAIC00MTAsNyArNDA2LDcgQEAg
dm9pZCBTdHJpbmdWaWV3OjpzZXRVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqIHN0
cmluZykKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgdW5kZXJseWluZ1N0cmluZyA9IG51bGxw
dHI7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodW5kZXJseWlu
Z1N0cmluZ3NNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB1bmRlcmx5aW5nU3RyaW5n
c0xvY2sgfTsKICAgICAgICAgYXV0byByZXN1bHQgPSB1bmRlcmx5aW5nU3RyaW5ncygpLmFkZChz
dHJpbmcsIG51bGxwdHIpOwogICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbmV3IFVuZGVybHlpbmdTdHJpbmcoKnN0cmlu
Zyk7CkBAIC00MjUsNyArNDIxLDcgQEAgdm9pZCBTdHJpbmdWaWV3OjpzZXRVbmRlcmx5aW5nU3Ry
aW5nKGNvbnN0IFN0cmluZ1ZpZXcmIG90aGVyU3RyaW5nKQogewogICAgIFVuZGVybHlpbmdTdHJp
bmcqIHVuZGVybHlpbmdTdHJpbmcgPSBvdGhlclN0cmluZy5tX3VuZGVybHlpbmdTdHJpbmc7CiAg
ICAgaWYgKHVuZGVybHlpbmdTdHJpbmcpIHsKLSAgICAgICAgLy8gSXQncyBzYWZlIHRvIGluYyB0
aGUgcmVmQ291bnQgaGVyZSB3aXRob3V0IGxvY2tpbmcgdW5kZXJseWluZ1N0cmluZ3NNdXRleAor
ICAgICAgICAvLyBJdCdzIHNhZmUgdG8gaW5jIHRoZSByZWZDb3VudCBoZXJlIHdpdGhvdXQgbG9j
a2luZyB1bmRlcmx5aW5nU3RyaW5nc0xvY2sKICAgICAgICAgLy8gYmVjYXVzZSBVbmRlcmx5aW5n
U3RyaW5nOjpyZWZDb3VudCBpcyBhIHN0ZDo6YXRvbWljX3VpbnQsIGFuZCB3ZSdyZQogICAgICAg
ICAvLyBndWFyYW50ZWVkIHRoYXQgdGhlIFN0cmluZ1ZpZXcgd2UncmUgY29weWluZyBpdCBmcm9t
IHdpbGwgYXQgbGVhc3QKICAgICAgICAgLy8gaGF2ZSAxIHJlZiBvbiBpdCwgdGhlcmVieSBrZWVw
aW5nIGl0IGFsaXZlIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwIGIvU291cmNlL1dURi93dGYvdW5p
Y29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCmluZGV4IDY3NjYwNzNjOWY2YjljZTBmYTU2NDFmYTVj
YWIxNWE5YjAxZmNiYWQuLmYxN2UwMjU5YWNiYWNkMTcyZTZlZjczNmFlYzg5NmE2ZTI5YmFhMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAKIAogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgot
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiAjaWYgT1MoREFSV0lOKSAmJiBVU0UoQ0Yp
CkBAIC00NSwxMiArNDUsMTEgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXN0YXRpYyBVQ29sbGF0
b3IqIGNhY2hlZENvbGxhdG9yOworc3RhdGljIENoZWNrZWRMb2NrIGNhY2hlZENvbGxhdG9yTG9j
azsKK3N0YXRpYyBVQ29sbGF0b3IqIGNhY2hlZENvbGxhdG9yIFdURl9HVUFSREVEX0JZX0xPQ0so
Y2FjaGVkQ29sbGF0b3JMb2NrKTsKIHN0YXRpYyBjaGFyKiBjYWNoZWRDb2xsYXRvckxvY2FsZTsK
IHN0YXRpYyBib29sIGNhY2hlZENvbGxhdG9yU2hvdWxkU29ydExvd2VyY2FzZUZpcnN0OwogCi1z
dGF0aWMgTG9jayBjYWNoZWRDb2xsYXRvck11dGV4OwotCiAjaWYgIShPUyhEQVJXSU4pICYmIFVT
RShDRikpCiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogcmVzb2x2ZURlZmF1bHRMb2NhbGUo
Y29uc3QgY2hhciogbG9jYWxlKQpAQCAtMTA2LDcgKzEwNSw3IEBAIENvbGxhdG9yOjpDb2xsYXRv
cihjb25zdCBjaGFyKiBsb2NhbGUsIGJvb2wgc2hvdWxkU29ydExvd2VyY2FzZUZpcnN0KQogICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogCiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGNhY2hlZENvbGxhdG9yTXV0ZXgpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgY2FjaGVkQ29sbGF0b3JMb2NrIH07CiAgICAgICAgIGlmIChjYWNoZWRDb2xsYXRv
ciAmJiBsb2NhbGVzTWF0Y2goY2FjaGVkQ29sbGF0b3JMb2NhbGUsIGxvY2FsZSkgJiYgY2FjaGVk
Q29sbGF0b3JTaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QgPT0gc2hvdWxkU29ydExvd2VyY2FzZUZp
cnN0KSB7CiAgICAgICAgICAgICBtX2NvbGxhdG9yID0gY2FjaGVkQ29sbGF0b3I7CiAgICAgICAg
ICAgICBtX2xvY2FsZSA9IGNhY2hlZENvbGxhdG9yTG9jYWxlOwpAQCAtMTM2LDcgKzEzNSw3IEBA
IENvbGxhdG9yOjpDb2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUsIGJvb2wgc2hvdWxkU29ydExv
d2VyY2FzZUZpcnN0KQogCiBDb2xsYXRvcjo6fkNvbGxhdG9yKCkKIHsKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNhY2hlZENvbGxhdG9yTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBj
YWNoZWRDb2xsYXRvckxvY2sgfTsKICAgICBpZiAoY2FjaGVkQ29sbGF0b3IpIHsKICAgICAgICAg
dWNvbF9jbG9zZShjYWNoZWRDb2xsYXRvcik7CiAgICAgICAgIGZhc3RGcmVlKGNhY2hlZENvbGxh
dG9yTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwCmluZGV4IDlk
ZDdhYmI1NTU1OTQyZDBjOTFlZjg4MDA3Y2I2NmQxYTcwNGQ1NzguLjUzNzZkZDkwZWY4Y2IyMzY2
ZjM1NmEwZDY1ZmU4YTNjZjdjYTc5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250
ZXh0LmNwcApAQCAtMjksMTQgKzI5LDE1IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTT2JqZWN0SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1zdGF0aWMgTG9j
ayBzZXJpYWxpemF0aW9uQ29udGV4dE1hcE11dGV4Oworc3RhdGljIENoZWNrZWRMb2NrIHNlcmlh
bGl6YXRpb25Db250ZXh0TWFwTG9jazsKIAotc3RhdGljIEhhc2hNYXA8VGhyZWFkKiwgSURCU2Vy
aWFsaXphdGlvbkNvbnRleHQqPiYgc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoTG9ja2VyPExvY2s+
JikKK3N0YXRpYyBIYXNoTWFwPFRocmVhZCosIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4mIHNl
cmlhbGl6YXRpb25Db250ZXh0TWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2VyaWFsaXphdGlvbkNv
bnRleHRNYXBMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFRocmVh
ZCosIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwpAQCAt
NDUsOCArNDYsOCBAQCBzdGF0aWMgSGFzaE1hcDxUaHJlYWQqLCBJREJTZXJpYWxpemF0aW9uQ29u
dGV4dCo+JiBzZXJpYWxpemF0aW9uQ29udGV4dE1hcChMb2NrZQogUmVmPElEQlNlcmlhbGl6YXRp
b25Db250ZXh0PiBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVGb3JDdXJyZW50
VGhyZWFkKCkKIHsKICAgICBhdXRvJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKLSAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTXV0ZXgpOwotICAgIGF1
dG9baXRlciwgaXNOZXdFbnRyeV0gPSBzZXJpYWxpemF0aW9uQ29udGV4dE1hcChsb2NrZXIpLmFk
ZCgmdGhyZWFkLCBudWxscHRyKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2VyaWFsaXphdGlvbkNv
bnRleHRNYXBMb2NrIH07CisgICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9IHNlcmlhbGl6YXRp
b25Db250ZXh0TWFwKCkuYWRkKCZ0aHJlYWQsIG51bGxwdHIpOwogICAgIGlmIChpc05ld0VudHJ5
KSB7CiAgICAgICAgIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gcHJvdGVjdGVkQ29udGV4
dCA9IGFkb3B0UmVmKCpuZXcgSURCU2VyaWFsaXphdGlvbkNvbnRleHQodGhyZWFkKSk7CiAgICAg
ICAgIGl0ZXItPnZhbHVlID0gcHJvdGVjdGVkQ29udGV4dC5wdHIoKTsKQEAgLTU4LDE1ICs1OSwx
NSBAQCBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IElEQlNlcmlhbGl6YXRpb25Db250ZXh0
OjpnZXRPckNyZWF0ZUZvckN1cnJlbnRUaHJlYQogCiBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6
fklEQlNlcmlhbGl6YXRpb25Db250ZXh0KCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNl
cmlhbGl6YXRpb25Db250ZXh0TWFwTXV0ZXgpOwotICAgIEFTU0VSVCh0aGlzID09IHNlcmlhbGl6
YXRpb25Db250ZXh0TWFwKGxvY2tlcikuZ2V0KCZtX3RocmVhZCkpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2sgfTsKKyAgICBBU1NFUlQodGhpcyA9PSBz
ZXJpYWxpemF0aW9uQ29udGV4dE1hcCgpLmdldCgmbV90aHJlYWQpKTsKIAogICAgIGlmIChtX3Zt
KSB7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soKm1fdm0pOwogICAgICAgICBtX2ds
b2JhbE9iamVjdC5jbGVhcigpOwogICAgICAgICBtX3ZtID0gbnVsbHB0cjsKICAgICB9Ci0gICAg
c2VyaWFsaXphdGlvbkNvbnRleHRNYXAobG9ja2VyKS5yZW1vdmUoJm1fdGhyZWFkKTsKKyAgICBz
ZXJpYWxpemF0aW9uQ29udGV4dE1hcCgpLnJlbW92ZSgmbV90aHJlYWQpOwogfQogCiB2b2lkIElE
QlNlcmlhbGl6YXRpb25Db250ZXh0Ojppbml0aWFsaXplVk0oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCA5YjAw
MTRjYWFjM2UyODRhZjhkMmZiYjJmNjRjMzQ3ZDNjZjNiNGE1Li4xMTUwNmZiY2I5ODQ3ODJjNjdi
NzVmYTliOTU5ZTlmNGQ3MDBhYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0yNTIsOCArMjUzLDggQEAgdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFJlZjxFdmVudD4mJiBldmVu
dCkKICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdv
cmtpbmcsIFdURk1vdmUoZXZlbnQpKTsKIH0KIAotc3RhdGljIExvY2sgc19ydGNEYXRhQ2hhbm5l
bExvY2FsTWFwTG9jazsKLXN0YXRpYyBIYXNoTWFwPFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPj4mIHJ0Y0RhdGFDaGFu
bmVsTG9jYWxNYXAoKQorc3RhdGljIENoZWNrZWRMb2NrIHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1h
cExvY2s7CitzdGF0aWMgSGFzaE1hcDxSVENEYXRhQ2hhbm5lbExvY2FsSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4+JiBydGNEYXRhQ2hhbm5lbExvY2Fs
TWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jaykKIHsK
ICAgICBBU1NFUlQoc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jay5pc0hlbGQoKSk7CiAgICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPj4+IG1hcDsKQEAg
LTI3OSw3ICsyODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4g
UlRDRGF0YUNoYW5uZWw6OmRldGFjaCgpCiAgICAgbV9pc0RldGFjaGVkID0gdHJ1ZTsKICAgICBt
X3JlYWR5U3RhdGUgPSBSVENEYXRhQ2hhbm5lbFN0YXRlOjpDbG9zZWQ7CiAKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrIH07CiAgICAgcnRjRGF0YUNo
YW5uZWxMb2NhbE1hcCgpLmFkZChpZGVudGlmaWVyKCkuY2hhbm5lbElkZW50aWZpZXIsIFdURk1v
dmUobV9oYW5kbGVyKSk7CiAKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZXRhY2hlZFJUQ0RhdGFD
aGFubmVsPihpZGVudGlmaWVyKCksIGxhYmVsKCkuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMoKSwg
c3RhdGUpOwpAQCAtMjkwLDEzICsyOTEsMTMgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6cmVtb3Zl
RnJvbURhdGFDaGFubmVsTG9jYWxNYXBJZk5lZWRlZCgpCiAgICAgaWYgKCFtX2lzRGV0YWNoZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ydGNEYXRh
Q2hhbm5lbExvY2FsTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfcnRjRGF0YUNoYW5u
ZWxMb2NhbE1hcExvY2sgfTsKICAgICBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkucmVtb3ZlKGlk
ZW50aWZpZXIoKS5jaGFubmVsSWRlbnRpZmllcik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+IFJUQ0RhdGFDaGFubmVsOjpoYW5kbGVyRnJvbUlkZW50aWZpZXIo
UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXIgY2hhbm5lbElkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayB9OwogICAgIHJl
dHVybiBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkudGFrZShjaGFubmVsSWRlbnRpZmllcik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
aW5kZXggMTE3NGU2YmNkZDA2MGU2NmM2MzM5ODMyZWNiOGQxZTgxYWQ1ZDgzMi4uYzFkYjhlZmEw
YjAwZjNlMzIxYTkwZTI5NjQ5ZDdlNjMzNDE4NzExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogI2luY2x1
ZGUgIldpbmRvd0V2ZW50TG9vcC5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xNTIsMTYgKzE1MywxNSBAQCBzdGF0aWMg
Ym9vbCByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiLCBj
b25zdCBTdHJpbmcmIHF1ZQogfQogCiAvLyBGSVhNRTogbW92ZSBhbGwgZ3VpZC1yZWxhdGVkIGZ1
bmN0aW9ucyB0byBhIERhdGFiYXNlVmVyc2lvblRyYWNrZXIgY2xhc3MuCi1zdGF0aWMgTG9jayBn
dWlkTXV0ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgZ3VpZExvY2s7CiAKLXN0YXRpYyBIYXNoTWFw
PERhdGFiYXNlR1VJRCwgU3RyaW5nPiYgZ3VpZFRvVmVyc2lvbk1hcCgpCitzdGF0aWMgSGFzaE1h
cDxEYXRhYmFzZUdVSUQsIFN0cmluZz4mIGd1aWRUb1ZlcnNpb25NYXAoKSBXVEZfUkVRVUlSRVNf
TE9DSyhndWlkTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxEYXRh
YmFzZUdVSUQsIFN0cmluZz4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCi0vLyBOT1RFOiBD
YWxsZXIgbXVzdCBsb2NrIGd1aWRNdXRleCgpLgotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUdV
SURWZXJzaW9uTWFwKERhdGFiYXNlR1VJRCBndWlkLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24p
CitzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlR1VJRFZlcnNpb25NYXAoRGF0YWJhc2VHVUlEIGd1
aWQsIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbikgV1RGX1JFUVVJUkVTX0xPQ0soZ3VpZExvY2sp
CiB7CiAgICAgLy8gTm90ZTogSXQgaXMgbm90IHNhZmUgdG8gcHV0IGFuIGVtcHR5IHN0cmluZyBp
bnRvIHRoZSBndWlkVG9WZXJzaW9uTWFwKCkgbWFwLgogICAgIC8vIFRoYXQncyBiZWNhdXNlIHRo
ZSBtYXAgaXMgY3Jvc3MtdGhyZWFkLCBidXQgZW1wdHkgc3RyaW5ncyBhcmUgcGVyLXRocmVhZC4K
QEAgLTE3MywxMyArMTczLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVHVUlEVmVyc2lv
bk1hcChEYXRhYmFzZUdVSUQgZ3VpZCwgY29uc3QgU3RyaW5nJiBuZXdWZXJzCiAgICAgZ3VpZFRv
VmVyc2lvbk1hcCgpLnNldChndWlkLCBuZXdWZXJzaW9uLmlzRW1wdHkoKSA/IFN0cmluZygpIDog
bmV3VmVyc2lvbi5pc29sYXRlZENvcHkoKSk7CiB9CiAKLXN0YXRpYyBIYXNoTWFwPERhdGFiYXNl
R1VJRCwgSGFzaFNldDxEYXRhYmFzZSo+PiYgZ3VpZFRvRGF0YWJhc2VNYXAoKQorc3RhdGljIEhh
c2hNYXA8RGF0YWJhc2VHVUlELCBIYXNoU2V0PERhdGFiYXNlKj4+JiBndWlkVG9EYXRhYmFzZU1h
cCgpIFdURl9SRVFVSVJFU19MT0NLKGd1aWRMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPERhdGFiYXNlR1VJRCwgSGFzaFNldDxEYXRhYmFzZSo+Pj4gbWFwOwogICAg
IHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRGF0YWJhc2VHVUlEIGd1aWRGb3JPcmln
aW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCitzdGF0
aWMgaW5saW5lIERhdGFiYXNlR1VJRCBndWlkRm9yT3JpZ2luQW5kTmFtZShjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKSBXVEZfUkVRVUlSRVNfTE9DSyhndWlkTG9jaykK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIERhdGFiYXNlR1VJ
RD4+IG1hcDsKICAgICByZXR1cm4gbWFwLmdldCgpLmVuc3VyZShtYWtlU3RyaW5nKG9yaWdpbiwg
Jy8nLCBuYW1lKSwgW10gewpAQCAtMjAxLDcgKzIwMSw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShE
YXRhYmFzZUNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBlCiAgICAgLCBtX2RhdGFiYXNlQXV0aG9yaXplcihEYXRhYmFzZUF1dGhvcml6ZXI6OmNyZWF0
ZSh1bnF1YWxpZmllZEluZm9UYWJsZU5hbWUpKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ3VpZExv
Y2sgfTsKIAogICAgICAgICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZShzZWN1cml0eU9y
aWdpbigpLnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5hbWUpOwogICAgICAgICBndWlk
VG9EYXRhYmFzZU1hcCgpLmVuc3VyZShtX2d1aWQsIFtdIHsKQEAgLTM0OCw3ICszNDgsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91
bGRTZXRWZXJzaW9uSW5OZXdEYXRhYgogCiAgICAgU3RyaW5nIGN1cnJlbnRWZXJzaW9uOwogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgZ3VpZExvY2sgfTsKIAogICAgICAgICBhdXRvIGVudHJ5ID0gZ3VpZFRv
VmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKICAgICAgICAgaWYgKGVudHJ5ICE9IGd1aWRUb1Zl
cnNpb25NYXAoKS5lbmQoKSkgewpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgRGF0YWJhc2U6OmNs
b3NlRGF0YWJhc2UoKQogICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucmVtb3ZlT3Bl
bkRhdGFiYXNlKCp0aGlzKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhndWlkTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZ3VpZExvY2sgfTsKIAogICAg
ICAgICBhdXRvIGl0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5maW5kKG1fZ3VpZCk7CiAgICAgICAg
IEFTU0VSVChpdCAhPSBndWlkVG9EYXRhYmFzZU1hcCgpLmVuZCgpKTsKQEAgLTQ5NSwxNCArNDk1
LDE0IEBAIHZvaWQgRGF0YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIHZl
cnNpb24pCiAKIFN0cmluZyBEYXRhYmFzZTo6Z2V0Q2FjaGVkVmVyc2lvbigpIGNvbnN0CiB7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhndWlkTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBndWlkTG9jayB9OwogCiAgICAgcmV0dXJuIGd1aWRUb1ZlcnNpb25NYXAoKS5nZXQobV9ndWlk
KS5pc29sYXRlZENvcHkoKTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6c2V0Q2FjaGVkVmVyc2lvbihj
b25zdCBTdHJpbmcmIGFjdHVhbFZlcnNpb24pCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhndWlkTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAgdXBk
YXRlR1VJRFZlcnNpb25NYXAobV9ndWlkLCBhY3R1YWxWZXJzaW9uKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IGNhMDFiMTAxNWFk
NjFjY2MzOWFkMzM5YjlhZGI3YmU0NjlmMWIxYzguLjgyNTBlMmJiM2E2MzQ4ZGM5YjRjYWJhNjRh
ZTQ4YmM2M2RhM2Q5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVRGV2aWNlLmNwcApAQCAtOTQsNiArOTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHUFVEZXZpY2UpOwogCitDaGVja2VkTG9jayBX
ZWJHUFVEZXZpY2U6OnNfaW5zdGFuY2VzTG9jazsKKwogUmVmUHRyPFdlYkdQVURldmljZT4gV2Vi
R1BVRGV2aWNlOjp0cnlDcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVm
PGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlcikKIHsKICAgICBpZiAoYXV0byBkZXZpY2Ug
PSBHUFVEZXZpY2U6OnRyeUNyZWF0ZShhZGFwdGVyLT5vcHRpb25zKCkpKSB7CkBAIC0xMDQsMTYg
KzEwNiwxNSBAQCBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OnRyeUNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1IYXNoU2V0PFdlYkdQVURldmljZSo+JiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcyhjb25z
dCBMb2NrSG9sZGVyJikKK0hhc2hTZXQ8V2ViR1BVRGV2aWNlKj4mIFdlYkdQVURldmljZTo6aW5z
dGFuY2VzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJHUFVEZXZp
Y2UqPj4gaW5zdGFuY2VzOwogICAgIHJldHVybiBpbnN0YW5jZXM7CiB9CiAKLUxvY2smIFdlYkdQ
VURldmljZTo6aW5zdGFuY2VzTXV0ZXgoKQorQ2hlY2tlZExvY2smIFdlYkdQVURldmljZTo6aW5z
dGFuY2VzTG9jaygpCiB7Ci0gICAgc3RhdGljIExvY2sgbXV0ZXg7Ci0gICAgcmV0dXJuIG11dGV4
OworICAgIHJldHVybiBzX2luc3RhbmNlc0xvY2s7CiB9CiAKIFdlYkdQVURldmljZTo6V2ViR1BV
RGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxjb25zdCBXZWJHUFVB
ZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQpAQCAtMTI4LDggKzEy
OSw4IEBAIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFJlZjxjb25zdCBXZWJHUFVBZGFwCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxv
Y2soaW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIGluc3RhbmNlcyhsb2NrKS5hZGQodGhpcyk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgaW5z
dGFuY2VzKCkuYWRkKHRoaXMpOwogICAgIH0KIH0KIApAQCAtMTM4LDggKzEzOSw4IEBAIFdlYkdQ
VURldmljZTo6fldlYkdQVURldmljZSgpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRGVzdHJveVdlYkdQVURldmljZSgqdGhpcyk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9jayhXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTG9jaygpIH07CisgICAg
ICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKCkpIHsKICAg
ICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSA9PSB0aGlzKSB7CiAgICAgICAgICAgICAgICAgLy8g
RG9uJ3QgcmVtb3ZlIGFueSBXZWJHUFVQaXBlbGluZSBmcm9tIHRoZSBpbnN0YW5jZXMgbGlzdCwg
YXMgdGhleSBtYXkgc3RpbGwgZXhpc3QuCiAgICAgICAgICAgICAgICAgLy8gT25seSByZW1vdmUg
dGhlIGFzc29jaWF0aW9uIHdpdGggYSBXZWJHUFUgZGV2aWNlLgpAQCAtMTQ5LDkgKzE1MCw5IEBA
IFdlYkdQVURldmljZTo6fldlYkdQVURldmljZSgpCiAgICAgfQogCiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2soaW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIEFTU0VSVChpbnN0YW5j
ZXMobG9jaykuY29udGFpbnModGhpcykpOwotICAgICAgICBpbnN0YW5jZXMobG9jaykucmVtb3Zl
KHRoaXMpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07CisgICAg
ICAgIEFTU0VSVChpbnN0YW5jZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgICAgIGluc3RhbmNl
cygpLnJlbW92ZSh0aGlzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmgKaW5kZXggYzljYzNjNGU0MzVjOTI2NGIyODE0ZDNkNjNjMjQw
ZmNiNjY3MDZjMy4uNzBmMWIxZGE3MjkzZGZmYTEzMWEyNTVkNWI2NzVmYWM4YTBmMmEwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVUXVl
dWUuaCIKICNpbmNsdWRlICJXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC04NCw4ICs4NSw4
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVRGV2aWNlPiB0cnlDcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmKTsKIAot
ICAgIHN0YXRpYyBIYXNoU2V0PFdlYkdQVURldmljZSo+JiBpbnN0YW5jZXMoY29uc3QgTG9ja0hv
bGRlciYpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNNdXRleCgpOworICAgIHN0YXRpYyBI
YXNoU2V0PFdlYkdQVURldmljZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0
YW5jZXNMb2NrKCkpOworICAgIHN0YXRpYyBDaGVja2VkTG9jayYgaW5zdGFuY2VzTG9jaygpIFdU
Rl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNMb2NrKTsKIAogICAgIGNvbnN0IFdlYkdQVUFkYXB0
ZXImIGFkYXB0ZXIoKSBjb25zdCB7IHJldHVybiBtX2FkYXB0ZXIuZ2V0KCk7IH0KICAgICBHUFVE
ZXZpY2UmIGRldmljZSgpIHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9CkBAIC0xMjYsNiArMTI3
LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzcGF0Y2hVbmNhcHR1cmVkRXJyb3IoR1BVRXJy
b3ImJik7CiAKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2sgc19pbnN0YW5jZXNMb2NrOworCiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAg
UmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+IG1fYWRhcHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcAppbmRleCBlZTRhYjEwYWY4YjQwMmU2
MTA5ZTgzN2YzM2QwZDVmNDc2OWIwOGViLi4yMDVmMWVkMWY3YjdjNjNiNzc1MWIxMzQ5MTNkZjQ4
N2ZjZTJjZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmUuY3BwCkBAIC0zOSwxNiArMzksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1IYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4mIFdlYkdQVVBpcGVsaW5l
OjppbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpCitDaGVja2VkTG9jayBXZWJHUFVQaXBlbGlu
ZTo6c19pbnN0YW5jZXNMb2NrOworCitIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2
aWNlKj4mIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4+IGluc3RhbmNl
czsKICAgICByZXR1cm4gaW5zdGFuY2VzOwogfQogCi1Mb2NrJiBXZWJHUFVQaXBlbGluZTo6aW5z
dGFuY2VzTXV0ZXgoKQorQ2hlY2tlZExvY2smIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2Nr
KCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0
dXJuIHNfaW5zdGFuY2VzTG9jazsKIH0KIAogV2ViR1BVUGlwZWxpbmU6OldlYkdQVVBpcGVsaW5l
KFdlYkdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCkBAIC01
OCw4ICs1OSw4IEBAIFdlYkdQVVBpcGVsaW5lOjpXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2Um
IGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzCiAgICAgQVNTRVJUKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0
YW5jZXNNdXRleCgpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxvY2spLmFkZCh0aGlzLCAmZGV2aWNl
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBp
bnN0YW5jZXMoKS5hZGQodGhpcywgJmRldmljZSk7CiAgICAgfQogfQogCkBAIC02OCw5ICs2OSw5
IEBAIFdlYkdQVVBpcGVsaW5lOjp+V2ViR1BVUGlwZWxpbmUoKQogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZSgqdGhpcyk7CiAKICAgICB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgQVNTRVJU
KGluc3RhbmNlcyhsb2NrKS5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcyhsb2Nr
KS5yZW1vdmUodGhpcyk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkg
fTsKKyAgICAgICAgQVNTRVJUKGluc3RhbmNlcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICAgICAg
aW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmgKaW5kZXggZDdmMTFhMzM2MTQ0MjJiMTc1
N2Y5MDRmOTVjNzU1NWYxM2JhMmMwMy4uOTk5YTk4YWU1MmE2YmIwOWFiNGFlZjY3NGFkMTM0YjY4
OTAyNmM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZS5oCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJHUFVPYmplY3RCYXNlLmgiCiAjaW5jbHVkZSAiV2ViR1BVU2hh
ZGVyTW9kdWxlLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgV2ViR1BVUGlwZWxpbmUgOiBwdWJsaWMgR1BVT2Jq
ZWN0QmFzZSwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5XZWJHUFVQaXBlbGluZSgpOwogCi0gICAgc3RhdGljIEhhc2hNYXA8V2ViR1BV
UGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPiYgaW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKTsK
LSAgICBzdGF0aWMgTG9jayYgaW5zdGFuY2VzTXV0ZXgoKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxX
ZWJHUFVQaXBlbGluZSosIFdlYkdQVURldmljZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhpbnN0YW5jZXNMb2NrKCkpOworICAgIHN0YXRpYyBDaGVja2VkTG9jayYgaW5zdGFuY2Vz
TG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNMb2NrKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNDb21wdXRlUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
NjMsNiArNjMsOSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBXZWJHUFVQaXBlbGluZShX
ZWJHUFVEZXZpY2UmLCBHUFVFcnJvclNjb3BlcyYpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBD
aGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmlu
ZGV4IDhkMzRjNjI4MjlkNzE3YWUxOGQ2ZDY5YzAxNWZiNzRiZDE5NTg2YTkuLmZlODBkNDAxMDA1
ZTUxNGI5YzlmNGQ0NGMwN2U5N2MwOGRkMTU4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC03Niw2ICs3Niw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlNvY2tldCk7CiAK
K0NoZWNrZWRMb2NrIFdlYlNvY2tldDo6c19hbGxBY3RpdmVXZWJTb2NrZXRzTG9jazsKKwogY29u
c3Qgc2l6ZV90IG1heFJlYXNvblNpemVJbkJ5dGVzID0gMTIzOwogCiBzdGF0aWMgaW5saW5lIGJv
b2wgaXNWYWxpZFByb3RvY29sQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKQEAgLTE0NiwxNyAr
MTQ4LDE1IEBAIFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgLCBtX2V4dGVuc2lvbnMoZW1wdHlTdHJpbmcoKSkKICAgICAsIG1fcmVzdW1l
VGltZXIoKnRoaXMsICZXZWJTb2NrZXQ6OnJlc3VtZVRpbWVyRmlyZWQpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKGFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKLQotICAgIGFsbEFjdGl2ZVdl
YlNvY2tldHMobG9jaykuYWRkKHRoaXMpOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxBY3RpdmVX
ZWJTb2NrZXRzTG9jaygpIH07CisgICAgYWxsQWN0aXZlV2ViU29ja2V0cygpLmFkZCh0aGlzKTsK
IH0KIAogV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9jayhhbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKSk7Ci0KLSAgICAgICAgYWxsQWN0aXZl
V2ViU29ja2V0cyhsb2NrKS5yZW1vdmUodGhpcyk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBh
bGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07CisgICAgICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMo
KS5yZW1vdmUodGhpcyk7CiAgICAgfQogCiAgICAgaWYgKG1fY2hhbm5lbCkKQEAgLTE4OCwxNiAr
MTg4LDE1IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBXZWJTb2NrZXQ6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjCiAgICAgcmV0dXJuIGNyZWF0ZShjb250
ZXh0LCB1cmwsIFZlY3RvcjxTdHJpbmc+IHsgMSwgcHJvdG9jb2wgfSk7CiB9CiAKLUhhc2hTZXQ8
V2ViU29ja2V0Kj4mIFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9s
ZGVyJikKK0hhc2hTZXQ8V2ViU29ja2V0Kj4mIFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0
cygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8V2ViU29ja2V0Kj4+IGFj
dGl2ZVdlYlNvY2tldHM7CiAgICAgcmV0dXJuIGFjdGl2ZVdlYlNvY2tldHM7CiB9CiAKLUxvY2sm
IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkKK0NoZWNrZWRMb2NrJiBXZWJT
b2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRl
eDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfYWxsQWN0aXZlV2ViU29ja2V0c0xv
Y2s7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJp
bmcmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aAppbmRleCBhYmQyMjViZTU4ZmM5OGQyNjI5ZDY2OTdjYmRkOGRhZWY4NTZmM2IzLi43MjcwNjk5
NzI1OTNmMDE2ZWU0MTM3MTgwYWI4NzQwZWU3Njg3NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hh
bm5lbENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2su
aD4KQEAgLTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
V2ViU29ja2V0Pj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scyk7CiAgICAgdmlydHVhbCB+V2Vi
U29ja2V0KCk7CiAKLSAgICBzdGF0aWMgSGFzaFNldDxXZWJTb2NrZXQqPiYgYWxsQWN0aXZlV2Vi
U29ja2V0cyhjb25zdCBMb2NrSG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGFsbEFjdGl2ZVdl
YlNvY2tldHNNdXRleCgpOworICAgIHN0YXRpYyBIYXNoU2V0PFdlYlNvY2tldCo+JiBhbGxBY3Rp
dmVXZWJTb2NrZXRzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19hbGxBY3RpdmVXZWJTb2NrZXRzTG9j
ayk7CisgICAgc3RhdGljIENoZWNrZWRMb2NrJiBhbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIFdU
Rl9SRVRVUk5TX0xPQ0soc19hbGxBY3RpdmVXZWJTb2NrZXRzTG9jayk7CiAKICAgICBlbnVtIFN0
YXRlIHsKICAgICAgICAgQ09OTkVDVElORyA9IDAsCkBAIC0xMzEsNiArMTMyLDcgQEAgcHJpdmF0
ZToKIAogICAgIGVudW0gY2xhc3MgQmluYXJ5VHlwZSB7IEJsb2IsIEFycmF5QnVmZmVyIH07CiAK
KyAgICBzdGF0aWMgQ2hlY2tlZExvY2sgc19hbGxBY3RpdmVXZWJTb2NrZXRzTG9jazsKICAgICBS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsKIAogICAgIFN0YXRl
IG1fc3RhdGUgeyBDT05ORUNUSU5HIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggYTAw
NWNhNDE0NzZmZTNlMWE3NWFjZWFjOTBmZTMzYzkwZWJjYjAyOS4uM2Y4M2U4ZTY3MDZiYTQ1NzQz
NGMyYTMxZmQyNDg5NmE3OWQ5NjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBMb2NrIHNfY2FjaGVM
b2NrOworQ2hlY2tlZExvY2sgQVhJc29sYXRlZFRyZWU6OnNfY2FjaGVMb2NrOwogCiBzdGF0aWMg
dW5zaWduZWQgbmV3VHJlZUlEKCkKIHsKQEAgLTg0LDYgKzg0LDcgQEAgdm9pZCBBWElzb2xhdGVk
VHJlZTo6Y2xlYXIoKQogUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJl
ZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0
ZWRUcmVlOjp0cmVlRm9ySUQiKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19jYWNoZUxvY2sgfTsK
ICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIApAQCAtMTA3LDcgKzEw
OCw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZShBWE9iamVj
dENhY2hlKiBheE9iamVjdENhY2hlKQogICAgIC8vIE5vdyB0aGF0IHRoZSB0cmVlIGlzIHJlYWR5
IHRvIHRha2UgY2xpZW50IHJlcXVlc3RzLCBhZGQgaXQgdG8gdGhlIHRyZWUKICAgICAvLyBtYXBz
IHNvIHRoYXQgaXQgY2FuIGJlIGZvdW5kLgogICAgIGF1dG8gcGFnZUlEID0gYXhPYmplY3RDYWNo
ZS0+cGFnZUlEKCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBzX2NhY2hlTG9jayB9OwogICAgIEFTU0VSVCghdHJlZVBhZ2VDYWNoZSgp
LmNvbnRhaW5zKCpwYWdlSUQpKTsKICAgICB0cmVlUGFnZUNhY2hlKCkuc2V0KCpwYWdlSUQsIHRy
ZWUuY29weVJlZigpKTsKICAgICB0cmVlSURDYWNoZSgpLnNldCh0cmVlLT50cmVlSUQoKSwgdHJl
ZS5jb3B5UmVmKCkpOwpAQCAtMTE5LDcgKzEyMCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJl
bW92ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFYVFJBQ0Uo
IkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEIik7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihzX2NhY2hlTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHNfY2FjaGVMb2NrIH07CiAKICAgICBpZiAoYXV0byB0cmVlID0gdHJlZVBh
Z2VDYWNoZSgpLnRha2UocGFnZUlEKSkgewogICAgICAgICB0cmVlLT5jbGVhcigpOwpAQCAtMTI5
LDcgKzEzMCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVRyZWVGb3JQYWdlSUQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogCiBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRU
cmVlOjp0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihzX2NhY2hlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfY2FjaGVMb2Nr
IH07CiAKICAgICBpZiAoYXV0byB0cmVlID0gdHJlZVBhZ2VDYWNoZSgpLmdldChwYWdlSUQpKQog
ICAgICAgICByZXR1cm4gbWFrZVJlZlB0cih0cmVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4
IGUyZmI1MTQwMzY1ZTA4MDA5MmRkZTA4M2QxNmUwMjJkNzJhYjc3ZTUuLjI4NDVjNzEyNGM5Njg1
ZGU5NDY0OGQ2NjM5NjVmYzYyZTE3ZDdkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNzMsOCArMzc0LDkgQEAgcHJp
dmF0ZToKICAgICBBWElzb2xhdGVkVHJlZShBWE9iamVjdENhY2hlKik7CiAgICAgdm9pZCBjbGVh
cigpOwogCi0gICAgc3RhdGljIEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0
ZWRUcmVlPj4mIHRyZWVJRENhY2hlKCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZp
ZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlUGFnZUNhY2hlKCk7CisgICAgc3RhdGljIENo
ZWNrZWRMb2NrIHNfY2FjaGVMb2NrOworICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0ZWRUcmVl
SUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpIFdURl9SRVFVSVJFU19MT0NL
KHNfY2FjaGVMb2NrKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFY
SXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX2NhY2hl
TG9jayk7CiAKICAgICAvLyBDYWxsIG9uIG1haW4gdGhyZWFkCiAgICAgUmVmPEFYSXNvbGF0ZWRP
YmplY3Q+IGNyZWF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCwgYm9vbCBh
dHRhY2hXcmFwcGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbQppbmRleCBiZDUyY2I0OTE4ODZiZWU0Y2Q2Mzk4N2YyMjAzZDQyYjdiNDVhOWNlLi4w
ZjVjMjlhNGFmYzQ1NmZjZWRkYTI0YmI0ZWFiZGFhYmJiNjEzZDAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC00OSw4ICs0OSw4IEBACiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSlNMb2NrLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlSW50ZXJu
YWwuaD4KKyNpbXBvcnQgPHd0Zi9DaGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAu
aD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNzAsMTEgKzcwLDExIEBAIHVzaW5nIEpTQzo6bWFrZVNvdXJjZTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgTG9jayBzcGluTG9jazsKK3N0YXRpYyBDaGVja2VkTG9jayB3
cmFwcGVyQ2FjaGVMb2NrOwogc3RhdGljIENyZWF0ZVdyYXBwZXJGdW5jdGlvbiBjcmVhdGVET01X
cmFwcGVyRnVuY3Rpb247CiBzdGF0aWMgRGlzY29ubmVjdFdpbmRvd1dyYXBwZXJGdW5jdGlvbiBk
aXNjb25uZWN0V2luZG93V3JhcHBlckZ1bmN0aW9uOwogCi1zdGF0aWMgSGFzaE1hcDxKU09iamVj
dCosIE5TT2JqZWN0ICo+JiB3cmFwcGVyQ2FjaGUoKQorc3RhdGljIEhhc2hNYXA8SlNPYmplY3Qq
LCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0sod3JhcHBlckNh
Y2hlTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxKU09iamVjdCos
IE5TT2JqZWN0ICo+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKQEAgLTgzLDcgKzgzLDcgQEAgc3Rh
dGljIEhhc2hNYXA8SlNPYmplY3QqLCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkKIE5TT2Jq
ZWN0ICpnZXRKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyB3cmFwcGVyQ2FjaGVMb2NrIH07CiAKICAgICBOU09iamVjdCogd3JhcHBlciA9IHdy
YXBwZXJDYWNoZSgpLmdldChpbXBsKTsKICAgICByZXR1cm4gd3JhcHBlciA/IHJldGFpblB0cih3
cmFwcGVyKS5hdXRvcmVsZWFzZSgpIDogbmlsOwpAQCAtOTIsMjEgKzkyLDIxIEBAIE5TT2JqZWN0
ICpnZXRKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiB2b2lkIGFkZEpTV3JhcHBlcihOU09iamVj
dCAqd3JhcHBlciwgSlNPYmplY3QqIGltcGwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyB3cmFwcGVyQ2FjaGVMb2NrIH07CiAKICAgICB3cmFwcGVyQ2FjaGUoKS5zZXQoaW1wbCwgd3Jh
cHBlcik7CiB9CiAKIHZvaWQgcmVtb3ZlSlNXcmFwcGVyKEpTT2JqZWN0KiBpbXBsKQogewotICAg
IExvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBw
ZXJDYWNoZUxvY2sgfTsKIAogICAgIHdyYXBwZXJDYWNoZSgpLnJlbW92ZShpbXBsKTsKIH0KIAog
c3RhdGljIHZvaWQgcmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZShOU09iamVjdCogd3Jh
cHBlciwgSlNPYmplY3QqIGltcGwpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIoJnNwaW5Mb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogCiAgICAgaWYgKFt3
cmFwcGVyIHJldGFpbkNvdW50XSA9PSAxKQogICAgICAgICB3cmFwcGVyQ2FjaGUoKS5yZW1vdmUo
aW1wbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5LmNwcAppbmRleCAyMmYyNzdhOGFkOTVlYjBkNjQ1ZTRiNGQ4NDA5NDg1MDU0Njg0ODBkLi4z
NjQ2YjQ3Y2I1MWYyZDMyNTRiZjE5OGQyNWUxNjE1MWJkOTMzZWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKQEAgLTI5LDE2ICsy
OSwxNyBAQAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgTG9jayByZWdpc3RyeU11dGV4
OwotCiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSYgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNp
bmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5PiByZWdpc3RyeTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5PiByZWdpc3RyeTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICByZWdpc3Ry
eS5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4gcmVnaXN0cnk7CiB9CiAKQEAgLTUy
LDcgKzUzLDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3QKICAgICBpZiAobmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKHJlZ2lzdHJ5TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAog
ICAgIC8vIEZJWE1FOiBIb3cgaXMgaXQgaGVscGZ1bCB0byBjYWxsIGlzb2xhdGVkQ29weSBvbiB0
aGUgYXJndW1lbnQgdG8gZmluZD8KICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJz
LmZpbmQobmFtZS5pc29sYXRlZENvcHkoKSk7CkBAIC02NCw3ICs2NSw3IEBAIE9wdGlvbmFsPENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlm
aWVyKGNvbnN0IFN0CiAKIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhyZWdpc3RyeU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAK
ICAgICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpZGVudGlmaWVyKSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3Rv
cnMuZW5kKCkpCkBAIC03NSw3ICs3Niw3IEBAIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eTo6bmFtZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2socmVnaXN0cnlNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAg
YXV0byBjb250cnVjdG9yID0gbV9jb25zdHJ1Y3RvcnMuZmluZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaWRlbnRpZmllcikpOwogICAgIGlmIChjb250cnVjdG9yID09IG1fY29uc3RydWN0b3JzLmVu
ZCgpKQpAQCAtODYsNyArODcsNyBAQCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZQogCiB2b2lkIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobShjb25zdCBTdHJpbmcmIG5h
bWUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGht
Q29uc3RydWN0b3IgY29uc3RydWN0b3IpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhy
ZWdpc3RyeU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBBU1NF
UlQoIW1faWRlbnRpZmllcnMuY29udGFpbnMobmFtZSkpOwogICAgIEFTU0VSVCghbV9jb25zdHJ1
Y3RvcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50aWZpZXIpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCmluZGV4IGZl
YTNjY2E5MjNlNDc5MTJhODRmMDY4NzkzODgxMGYzOTgxMjU0YzUuLmNiOTE4NjUxM2U2MDBmMDJm
OWFjMmVmNTk3YWE5OTczNDI5MzdhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9D
cnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0zOSw3ICs0MCw3IEBA
IGNsYXNzIENyeXB0b0FsZ29yaXRobTsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5KTsKLSAg
ICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+Owor
ICAgIGZyaWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnk+OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaW5n
bGV0b24oKTsKQEAgLTYyLDggKzYzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJB
bGdvcml0aG0oY29uc3QgU3RyaW5nJiBuYW1lLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBD
cnlwdG9BbGdvcml0aG1Db25zdHJ1Y3Rvcik7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2lkZW50aWZp
ZXJzOwotICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29y
aXRobUNvbnN0cnVjdG9yPj4gbV9jb25zdHJ1Y3RvcnM7CisgICAgQ2hlY2tlZExvY2sgbV9sb2Nr
OworICAgIEhhc2hNYXA8U3RyaW5nLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IG1faWRlbnRpZmllcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xv
Y2spOworICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29y
aXRobUNvbnN0cnVjdG9yPj4gbV9jb25zdHJ1Y3RvcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xv
Y2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAKaW5kZXggYmJjMDg1YTI5YTM1NmM1NTAwODBjMzU4NDM2NmY1OGNiMTI0YTZlNC4uYjc2
NTg2MmU2Yzc2NWM4OWUxY2I1OWViZDhhZjMxYTYyOGYxMjVjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldv
cmtlclRocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CkBAIC00Myw4ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lc3NhZ2VQb3J0KTsKIAotc3Rh
dGljIExvY2sgYWxsTWVzc2FnZVBvcnRzTG9jazsKLXN0YXRpYyBIYXNoTWFwPE1lc3NhZ2VQb3J0
SWRlbnRpZmllciwgTWVzc2FnZVBvcnQqPiYgYWxsTWVzc2FnZVBvcnRzKCkKK3N0YXRpYyBDaGVj
a2VkTG9jayBhbGxNZXNzYWdlUG9ydHNMb2NrOworc3RhdGljIEhhc2hNYXA8TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyLCBNZXNzYWdlUG9ydCo+JiBhbGxNZXNzYWdlUG9ydHMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhhbGxNZXNzYWdlUG9ydHNMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPE1lc3NhZ2VQb3J0SWRlbnRpZmllciwgTWVzc2FnZVBvcnQqPj4gbWFwOwogICAgIHJl
dHVybiBtYXA7CkBAIC02MSw3ICs2Miw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRlcmVmKCkgY29u
c3QKICAgICAvLyBUaGlzIGFsbG93cyBpc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hh
YmxlIGFuZCBub3RpZnlNZXNzYWdlQXZhaWxhYmxlIHRvIGVhc2lseSBxdWVyeSB0aGUgbWFwIGFu
ZCBtYW5pcHVsYXRlIE1lc3NhZ2VQb3J0IGluc3RhbmNlcy4KIAogICAgIGlmICghLS1tX3JlZkNv
dW50KSB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsTWVzc2FnZVBvcnRzTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAKICAgICAg
ICAgaWYgKG1fcmVmQ291bnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NiwxNCArNzcsMTQg
QEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGVyZWYoKSBjb25zdAogCiBib29sIE1lc3NhZ2VQb3J0Ojpp
c0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlKGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3Nh
Z2VQb3J0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07
CiAgICAgYXV0byogcG9ydCA9IGFsbE1lc3NhZ2VQb3J0cygpLmdldChpZGVudGlmaWVyKTsKICAg
ICByZXR1cm4gcG9ydCAmJiBwb3J0LT5pc0xvY2FsbHlSZWFjaGFibGUoKTsKIH0KIAogdm9pZCBN
ZXNzYWdlUG9ydDo6bm90aWZ5TWVzc2FnZUF2YWlsYWJsZShjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxNZXNzYWdl
UG9ydHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWxsTWVzc2FnZVBvcnRzTG9jayB9Owog
ICAgIGlmIChhdXRvKiBwb3J0ID0gYWxsTWVzc2FnZVBvcnRzKCkuZ2V0KGlkZW50aWZpZXIpKQog
ICAgICAgICBwb3J0LT5tZXNzYWdlQXZhaWxhYmxlKCk7CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBN
ZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY29uc3QgTQogewogICAgIExPRyhNZXNzYWdlUG9ydHMsICJDcmVhdGVk
IE1lc3NhZ2VQb3J0ICVzICglcCkgaW4gcHJvY2VzcyAlIiBQUkl1NjQsIG1faWRlbnRpZmllci5s
b2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzLCBQcm9jZXNzOjppZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAgYWxsTWVz
c2FnZVBvcnRzKCkuc2V0KG1faWRlbnRpZmllciwgdGhpcyk7CiAKICAgICAvLyBNYWtlIHN1cmUg
dGhlIFdlYWtQdHJGYWN0b3J5IGdldHMgaW5pdGlhbGl6ZWQgZWFnZXJseSBvbiB0aGUgdGhyZWFk
IHRoZSBNZXNzYWdlUG9ydCBnZXRzIGNvbnN0cnVjdGVkIG9uIGZvciB0aHJlYWQtc2FmZXR5IHJl
YXNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggODhhYWNmMzU1ODE1YjYzNDRhN2M4MGQxNmE3YWU5MTg5MWE0Y2E0Yy4uNGE1ODY2ZGE3
NGQyMDU2ODk2ZTJhNDY4NDA3ZTU0MGJhYjYyOTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMu
aD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
QEAgLTc5LDggKzgwLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKLXN0YXRpYyBMb2NrIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9j
azsKLXN0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3N0
YXRpYyBDaGVja2VkTG9jayBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2s7CitzdGF0
aWMgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCo+JiBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpIFdURl9SRVFVSVJF
U19MT0NLKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jaykKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+PiBjb250ZXh0czsKICAgICBBU1NFUlQoYWxsU2NyaXB0
RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrLmlzTG9ja2VkKCkpOwpAQCAtMTEzLDcgKzExNCw3IEBA
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNvbnRleHRJZGVudGlmaWVyKCkgY29uCiB7CiAgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgp
KTsKICAgICBpZiAoIW1fY29udGV4dElkZW50aWZpZXIpIHsKLSAgICAgICAgTG9ja2VyPExvY2s+
IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrIH07CiAKICAgICAg
ICAgbV9jb250ZXh0SWRlbnRpZmllciA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOwogCkBAIC0xMjYsNyArMTI3LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKSBj
b24KIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKCkK
IHsKICAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICAgICAg
QVNTRVJUKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0
SWRlbnRpZmllcikpOwogICAgICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJl
bW92ZShtX2NvbnRleHRJZGVudGlmaWVyKTsKICAgICB9CkBAIC0xNjIsNyArMTYzLDcgQEAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogCiAjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewotICAgICAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsK
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNN
YXAoKS5jb250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSwKICAgICAgICAgICAgICJBIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgc3ViY2xhc3MgaW5zdGFuY2UgaW1wbGVtZW50aW5nIHBvc3RUYXNr
IHNob3VsZCBoYXZlIGFscmVhZHkgcmVtb3ZlZCBpdHNlbGYgZnJvbSB0aGUgbWFwIik7CiAgICAg
fQpAQCAtNjIzLDcgKzYyNCw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXIqIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmVuc3VyZVNlcnZpY2VXb3JrZXJDb250YWluZXIoKQogCiBib29sIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIgaWRlbnRpZmllciwgVGFzayYmIHRhc2spCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tl
cihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICBhdXRvKiBjb250ZXh0
ID0gYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CiAKICAg
ICBpZiAoIWNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDQxZmQ0MzA1N2VlYjJmYTMzMTdjNjlhYWNj
YTI4YmFlMzczNjM0YTIuLmI2NjkxYTIyZGNiMzU4ZGI2NDA0ZWVlYmY3YzQ3OGEyMjUwN2MzZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC00NiwzMCArNDYsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCk7CiAKLUhh
c2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpp
bnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpCitDaGVja2VkTG9jayBDYW52YXNSZW5kZXJpbmdD
b250ZXh0OjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dCo+JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQqPj4gaW5zdGFuY2Vz
OwogICAgIHJldHVybiBpbnN0YW5jZXM7CiB9CiAKLUxvY2smIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQ6Omluc3RhbmNlc011dGV4KCkKK0NoZWNrZWRMb2NrJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
OjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4g
bXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsKIH0KIAogQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMpCiAgICAg
OiBtX2NhbnZhcyhjYW52YXMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011dGV4
KCkpOwotICAgIGluc3RhbmNlcyhsb2NrKS5hZGQodGhpcyk7CisgICAgTG9ja2VyIGxvY2tlciB7
IGluc3RhbmNlc0xvY2soKSB9OworICAgIGluc3RhbmNlcygpLmFkZCh0aGlzKTsKIH0KIAogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDo6fkNhbnZhc1JlbmRlcmluZ0NvbnRleHQoKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICBBU1NFUlQoaW5zdGFuY2VzKGxv
Y2spLmNvbnRhaW5zKHRoaXMpKTsKLSAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICBBU1NFUlQoaW5zdGFu
Y2VzKCkuY29udGFpbnModGhpcykpOworICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKIH0K
IAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpyZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDZmNjg4ZDZl
YzRhYjg5OTUzYzViZjQ3ZDQxNDFlMmI1MzEzMzVmNzkuLjRkNTlhM2YwYzhmNmU1MGZjNTBjMTM3
MmMzYjRlZWNkN2Y5MzJkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJD
YW52YXNCYXNlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgpAQCAtNTEsOCArNTIsOCBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250
ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCgpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dCo+JiBpbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpOwotICAgIHN0YXRpYyBM
b2NrJiBpbnN0YW5jZXNNdXRleCgpOworICAgIHN0YXRpYyBIYXNoU2V0PENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqPiYgaW5zdGFuY2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygp
KTsKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19M
T0NLKHNfaW5zdGFuY2VzTG9jayk7CiAKICAgICB2b2lkIHJlZigpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGVyZWYoKTsKQEAgLTExMSw2ICsxMTIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgeyBmYWxzZSB9OwogCiBwcml2
YXRlOgorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBDYW52
YXNCYXNlJiBtX2NhbnZhczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFByb2dyYW0uY3BwCmluZGV4IGY2NTI1MTQ3MTkwZDkxZDM0YjM0YjcxNWY2ZDMwMDgzMjNhMjI4
MGUuLmE5ZTY1MmMxNDIxZWM3ZTUyYzkzYTQ0ZTUyZmJmODIzNGMwOGIwOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcApAQCAtNDUsMTYgKzQ1LDE3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaE1hcDxXZWJHTFByb2dyYW0qLCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKj4mIFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKGNvbnN0IExvY2tI
b2xkZXImKQorQ2hlY2tlZExvY2sgV2ViR0xQcm9ncmFtOjpzX2luc3RhbmNlc0xvY2s7CisKK0hh
c2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBXZWJHTFBy
b2dyYW06Omluc3RhbmNlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+PiBpbnN0YW5jZXM7CiAg
ICAgcmV0dXJuIGluc3RhbmNlczsKIH0KIAotTG9jayYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXNN
dXRleCgpCitDaGVja2VkTG9jayYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXNMb2NrKCkKIHsKLSAg
ICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfaW5z
dGFuY2VzTG9jazsKIH0KIAogUmVmPFdlYkdMUHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQpAQCAtNjksOCArNzAsOCBAQCBXZWJHTFBy
b2dyYW06OldlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tI
b2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxvY2spLmFk
ZCh0aGlzLCAmY3R4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9
OworICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcywgJmN0eCk7CiAgICAgfQogCiAgICAgc2V0
T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgpLT5jcmVhdGVQcm9ncmFtKCkpOwpAQCAtODEs
OSArODIsOSBAQCBXZWJHTFByb2dyYW06On5XZWJHTFByb2dyYW0oKQogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHTFByb2dyYW0oKnRoaXMpOwogCiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2soaW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIEFTU0VS
VChpbnN0YW5jZXMobG9jaykuY29udGFpbnModGhpcykpOwotICAgICAgICBpbnN0YW5jZXMobG9j
aykucmVtb3ZlKHRoaXMpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygp
IH07CisgICAgICAgIEFTU0VSVChpbnN0YW5jZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgICAg
IGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAgICBpZiAoIWhhc0dyb3VwT3JD
b250ZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4
IDZjOWUzNGVkZGU1MGRiYzNjZmRkMmExMWY5MTk5ZjIxY2RkZTQ2MjYuLjEwMDBkMTg5ZDFmM2Fm
Y2UyYTE2OTI5YWZiYzFiZDhlZDI5NGQ0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5oCkBAIC0yOSw5ICsyOSw5IEBACiAKICNpbmNsdWRlICJDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYkdMU2hhcmVkT2JqZWN0LmgiCisjaW5j
bHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUzLDggKzUzLDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9ncmFtPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMUHJvZ3JhbSgpOwogCi0gICAgc3RhdGlj
IEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBpbnN0
YW5jZXMoY29uc3QgV1RGOjpMb2NrSG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNl
c011dGV4KCk7CisgICAgc3RhdGljIEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNM
b2NrKCkpOworICAgIHN0YXRpYyBDaGVja2VkTG9jayYgaW5zdGFuY2VzTG9jaygpIFdURl9SRVRV
Uk5TX0xPQ0soc19pbnN0YW5jZXNMb2NrKTsKIAogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
IGZpbmFsOwogCkBAIC05OCw2ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWNoZUFjdGl2
ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRHTCopOwogICAgIHZvaWQgY2FjaGVJbmZv
SWZOZWVkZWQoKTsKIAorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisK
ICAgICBWZWN0b3I8R0NHTGludD4gbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnM7CiAKICAgICBHQ0dM
aW50IG1fbGlua1N0YXR1cyB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYzEwYzQ2NDM3OTU5
NWFiMGM3NzE2Y2YyZThmOGUyNWNmYmU3NzM5MS4uYzI0YTg0ZGE4ZDMwNjg3YzYyZWU5YzU4MmE0
ZGRkOWEyODBiNTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEwNTIsOCArMTA1Miw4IEBAIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6On5XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKCkKICAg
ICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhXZWJHTFByb2dyYW06Omluc3Rh
bmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogV2ViR0xQcm9ncmFtOjpp
bnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdMUHJvZ3JhbTo6
aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJHTFByb2dy
YW06Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT0gdGhpcykg
ewogICAgICAgICAgICAgICAgIC8vIERvbid0IHJlbW92ZSBhbnkgV2ViR0xQcm9ncmFtIGZyb20g
dGhlIGluc3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBzdGlsbCBleGlzdC4KICAgICAgICAgICAg
ICAgICAvLyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRpb24gd2l0aCBhIFdlYkdMIGNvbnRleHQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDNk
ODM5YjQxYTNkOGRmOTVhYzA3YTVjYzUwYmFhYjkwMDExNzg3MmQuLjBmZWQxZmIyYmIzZGE1ZDNh
MjAxYzdmY2ExYjUwOGQxNzQ3Yzg4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xNzAsOCArMTcwLDggQEAgSFRNTENhbnZhc0VsZW1lbnQq
IEluc3BlY3RvckNhbnZhczo6Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIFsmXSAoc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIC0+IEhUTUxD
YW52YXNFbGVtZW50KiB7CiAgICAgICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVy
LmdldCgpOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgICAgICAg
ICBmb3IgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgICAgICAg
ICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZh
c0VsZW1lbnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpjYW52YXNSZW5kZXJpbmdD
b250ZXh0LCBkZXZpY2UpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbnZhc0Vs
ZW1lbnQ7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjcxLDggKzI3MSw4IEBAIEhhc2hTZXQ8RWxl
bWVudCo+IEluc3BlY3RvckNhbnZhczo6Y2xpZW50Tm9kZXMoKSBjb25zdAogCiAgICAgICAgICAg
ICBIYXNoU2V0PEVsZW1lbnQqPiBjYW52YXNFbGVtZW50Q2xpZW50czsKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
aW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5k
ZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKGxvY2spKSB7
CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2FudmFzUmVu
ZGVyaW5nQ29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVtZW50ID0gY2FudmFzSWZDb250
ZXh0TWF0Y2hlc0RldmljZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgZGV2aWNlKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnRDbGllbnRzLmFkZChjYW52YXNFbGVtZW50
KTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDUyNmQwZjc0MTZjNWZi
YzE5YWY5YmY3OTgyYTYwNGMwYWU5MGJkN2QuLmIxNjc4NDgwOTA4MmU2OWMyMWYzZjk2MGUyNmUw
MWNkZTc2N2E1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC0xNDAsOCArMTQwLDggQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAg
ICAgfTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8qIGNvbnRleHQgOiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9OworICAg
ICAgICBmb3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5j
ZXMoKSkgewogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgICAgICAgICAvLyBUaGUgYWN0dWFsICJj
b250ZXh0IiBmb3IgV2ViR1BVIGlzIHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2FudmFz
Pi4KICAgICAgICAgICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkKQEAgLTE1
NSw4ICsxNTUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2soV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAg
Zm9yIChhdXRvKiBkZXZpY2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcyhsb2NrKSkgeworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAg
ICAgICAgZm9yIChhdXRvKiBkZXZpY2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7CiAg
ICAgICAgICAgICBpZiAoZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkpCiAgICAgICAgICAgICAgICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7
CiAgICAgICAgIH0KQEAgLTE2NSw4ICsxNjUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHTCkK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhXZWJHTFByb2dyYW06Omluc3RhbmNlc011
dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8mIFtwcm9ncmFtLCBjb250ZXh0V2ViR0xCYXNlXSA6
IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBXZWJHTFByb2dyYW06Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8mIFtw
cm9ncmFtLCBjb250ZXh0V2ViR0xCYXNlXSA6IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKCkpIHsK
ICAgICAgICAgICAgIGlmIChjb250ZXh0V2ViR0xCYXNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2Uo
Y29udGV4dFdlYkdMQmFzZS0+Y2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
CiAgICAgICAgICAgICAgICAgZGlkQ3JlYXRlV2ViR0xQcm9ncmFtKCpjb250ZXh0V2ViR0xCYXNl
LCAqcHJvZ3JhbSk7CiAgICAgICAgIH0KQEAgLTE3NSw4ICsxNzUsOCBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVO
QUJMRShXRUJHUFUpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2ViR1BVUGlwZWxp
bmU6Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8mIFtwaXBlbGluZSwgZGV2
aWNlXSA6IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9y
IChhdXRvJiBbcGlwZWxpbmUsIGRldmljZV0gOiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKCkp
IHsKICAgICAgICAgICAgIGlmIChkZXZpY2UgJiYgZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2Ut
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgJiYgcGlwZWxpbmUtPmlzVmFsaWQoKSkKICAgICAg
ICAgICAgICAgICBkaWRDcmVhdGVXZWJHUFVQaXBlbGluZSgqZGV2aWNlLCAqcGlwZWxpbmUpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZTlkMzVkM2IyMGU5MWVlOWJhMTkyZDQx
MWQwNDI5NTM1YTYyZThkNS4uNDMwMDEyYzVmMTdhYjdlMzMyZDkyMGU5OTM4NWI4MzJlZDVhYzVj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtODI2LDkgKzgyNiw5IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKCkKICAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZE5ldHdvcmtBZ2VudCh0aGlzKTsKIAogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011
dGV4KCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJT
b2NrZXRzTG9jaygpIH07CiAKLSAgICAgICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQgOiBhY3RpdmVX
ZWJTb2NrZXRzKGxvY2spKSB7CisgICAgICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogYWN0aXZl
V2ViU29ja2V0cygpKSB7CiAgICAgICAgICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
QEAgLTEwMDksOSArMTAwOSw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoCiAKIFdlYlNvY2tl
dCogSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQoY29uc3QgUHJv
dG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkKQogewotICAgIExvY2tIb2xkZXIg
bG9jayhXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07CiAKLSAgICBm
b3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKKyAgICBmb3Ig
KGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMoKSkgewogICAgICAgICBpZiAoSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQod2ViU29ja2V0LT5jaGFubmVsKCktPnByb2dyZXNz
SWRlbnRpZmllcigpKSA9PSByZXF1ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm4gd2ViU29ja2V0
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDkzMzYwMTc2MTY2NzQxN2ViZTVkZTMwMTU4Njg2
OWNjYzY0ZmMzZGEuLjhiMmUyOTY3MDVhNWFkN2IzN2I1NWE0ZmI2NjdmZjBkOGQzMmY5NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9SZWd1bGFyRXhwcmVzc2lvbi5oPgpAQCAtMTMzLDcgKzEzNCw3
IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29y
azo6TG9hZGVySWQgbG9hZGVySWRlbnRpZmllcihEb2N1bWVudExvYWRlciopID0gMDsKICAgICB2
aXJ0dWFsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgZnJhbWVJZGVudGlm
aWVyKERvY3VtZW50TG9hZGVyKikgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFdlYlNvY2tldCo+
IGFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpID0gMDsKKyAgICB2aXJ0dWFsIFZl
Y3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRzKCkgV1RGX1JFUVVJUkVTX0xPQ0soV2Vi
U29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkSW50ZXJuYWwoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dChJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OkZyYW1lSWQmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEZvcmNlQnVmZmVy
aW5nTmV0d29ya1Jlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRl
eCA2NTJhNzlmNTcxNDU1YWM5NmNkMDRhMjQwZWM0ZDliNzY1Y2ZjZjMxLi5iYjRmNmJhN2MyY2M2
MTg1ODU4NzE5NmM5NzNhMmMzODZmODhmNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC02NSwx
MSArNjUsMTEgQEAgUHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgUGFnZU5ldHdvcmtBZ2VudDo6
ZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKiBsb2EKICAgICByZXR1cm4geyB9OwogfQog
Ci1WZWN0b3I8V2ViU29ja2V0Kj4gUGFnZU5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cyhj
b25zdCBMb2NrSG9sZGVyJiBsb2NrKQorVmVjdG9yPFdlYlNvY2tldCo+IFBhZ2VOZXR3b3JrQWdl
bnQ6OmFjdGl2ZVdlYlNvY2tldHMoKQogewogICAgIFZlY3RvcjxXZWJTb2NrZXQqPiB3ZWJTb2Nr
ZXRzOwogCi0gICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQgOiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdl
YlNvY2tldHMobG9jaykpIHsKKyAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6
YWxsQWN0aXZlV2ViU29ja2V0cygpKSB7CiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IHdlYlNvY2tl
dC0+Y2hhbm5lbCgpOwogICAgICAgICBpZiAoIWNoYW5uZWwpCiAgICAgICAgICAgICBjb250aW51
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
TmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZU5ldHdvcmtBZ2VudC5oCmluZGV4IGMxMjk5OTZjMWJmYjQ1MWQ3N2RkNTIwZjRhMDg5YWZkNTU4
M2MwZjAuLjRiNjZjMmVhYTk4NDE0NGFkYTI2ZGNhMDM5NzBlODAxYjQyYjFlYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3Jr
QWdlbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OkxvYWRlcklkIGxvYWRlcklkZW50aWZpZXIoRG9jdW1lbnRM
b2FkZXIqKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIGZyYW1l
SWRlbnRpZmllcihEb2N1bWVudExvYWRlciopOwotICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3Rp
dmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBWZWN0b3I8V2ViU29ja2V0Kj4g
YWN0aXZlV2ViU29ja2V0cygpIFdURl9SRVFVSVJFU19MT0NLKFdlYlNvY2tldDo6YWxsQWN0aXZl
V2ViU29ja2V0c0xvY2soKSk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZElu
dGVybmFsKGJvb2wpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1
ZmZlcmluZ05ldHdvcmtSZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0
d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZWY4NjgzZmI2MjI4MThiYjU4ZmU5Mzc0NTEwZWQ1
OTVhODg1NWFhMS4uNGUxYTYyN2YwOWIxYmFlMGY3MGQxN2NlYzExNzNiOWU0YjU1ZWM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFByb3RvY29sOjpOZXR3
b3JrOjpGcmFtZUlkIFdvcmtlck5ldHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKERvY3VtZW50
TG9hZGVyKikKICAgICByZXR1cm4geyB9OwogfQogCi1WZWN0b3I8V2ViU29ja2V0Kj4gV29ya2Vy
TmV0d29ya0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQorVmVjdG9y
PFdlYlNvY2tldCo+IFdvcmtlck5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cygpCiB7CiAg
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6
IENvcnJlY3RseSBkaXNwbGF5IHdvcmtlcidzIFdlYlNvY2tldHMKICAgICByZXR1cm4geyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
TmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJOZXR3b3JrQWdlbnQuaAppbmRleCBlNWRmZjlkMWEzNGQ5YmM0M2NiMjczMGE4MzA0NjBi
Nzc5ZTQ1YTJiLi5kZTE0ZGVkMmFiYmUxNmIwNzVhNDJhYmJkNzA4YjdkZDM4MDViMjNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3
b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJOZXR3b3JrQWdlbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkxvYWRlcklkIGxvYWRlcklkZW50aWZp
ZXIoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpG
cmFtZUlkIGZyYW1lSWRlbnRpZmllcihEb2N1bWVudExvYWRlciopOwotICAgIFZlY3RvcjxXZWJT
b2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBWZWN0b3I8
V2ViU29ja2V0Kj4gYWN0aXZlV2ViU29ja2V0cygpIFdURl9SRVFVSVJFU19MT0NLKFdlYlNvY2tl
dDo6YWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKSk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hp
bmdEaXNhYmxlZEludGVybmFsKGJvb2wpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJik7CiAgICAgYm9vbCBz
aG91bGRGb3JjZUJ1ZmZlcmluZ05ldHdvcmtSZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDE3ODJhYTBh
MmNhNmJiYmE3MDEyMTQxMTVjMGYyMjAwNTlkMzY2NzcuLjUxODMzOTM1YWFlZWZhZjU4OTAyZTRi
OWM2NmEwMjRhOWQ1ZDlkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDYs
MTYgKzQ3LDE2IEBAIHN0YXRpYyBTZWN1cml0eVBvbGljeTo6TG9jYWxMb2FkUG9saWN5IGxvY2Fs
TG9hZFBvbGljeSA9IFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvCiB0eXBlZGVmIFZlY3RvcjxPcmln
aW5BY2Nlc3NFbnRyeT4gT3JpZ2luQWNjZXNzQWxsb3dsaXN0OwogdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4+IE9yaWdpbkFjY2Vz
c01hcDsKIAotc3RhdGljIExvY2sgb3JpZ2luQWNjZXNzTWFwTG9jazsKLXN0YXRpYyBPcmlnaW5B
Y2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpCitzdGF0aWMgQ2hlY2tlZExvY2sgb3JpZ2luQWNj
ZXNzTWFwTG9jazsKK3N0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpIFdU
Rl9SRVFVSVJFU19MT0NLKG9yaWdpbkFjY2Vzc01hcExvY2spCiB7CiAgICAgQVNTRVJUKG9yaWdp
bkFjY2Vzc01hcExvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcmln
aW5BY2Nlc3NNYXA+IG9yaWdpbkFjY2Vzc01hcDsKICAgICByZXR1cm4gb3JpZ2luQWNjZXNzTWFw
OwogfQogCi1zdGF0aWMgTG9jayBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jazsKLXN0YXRpYyBWZWN0
b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiYgb3JpZ2luQWNjZXNzUGF0dGVybnMoKQorc3RhdGlj
IENoZWNrZWRMb2NrIG9yaWdpbkFjY2Vzc1BhdHRlcm5Mb2NrOworc3RhdGljIFZlY3RvcjxVc2Vy
Q29udGVudFVSTFBhdHRlcm4+JiBvcmlnaW5BY2Nlc3NQYXR0ZXJucygpIFdURl9SRVFVSVJFU19M
T0NLKG9yaWdpbkFjY2Vzc1BhdHRlcm5Mb2NrKQogewogICAgIEFTU0VSVChvcmlnaW5BY2Nlc3NQ
YXR0ZXJuTG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxV
c2VyQ29udGVudFVSTFBhdHRlcm4+PiBvcmlnaW5BY2Nlc3NQYXR0ZXJuczsKQEAgLTIwNSw3ICsy
MDYsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgUwogewogICAgIEFTU0VSVCh0YXJnZXRPcmln
aW4uZXF1YWwoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0YXJnZXRVUkwpLnB0cigpKSk7CiAgICAg
ewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgICAgICBpZiAo
T3JpZ2luQWNjZXNzQWxsb3dsaXN0KiBsaXN0ID0gb3JpZ2luQWNjZXNzTWFwKCkuZ2V0KGFjdGl2
ZU9yaWdpbi50b1N0cmluZygpKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICps
aXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5Lm1hdGNoZXNPcmlnaW4odGFyZ2V0T3Jp
Z2luKSkKQEAgLTIxMyw3ICsyMTQsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0Fs
bG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgUwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2lu
QWNjZXNzUGF0dGVybkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NQYXR0
ZXJuTG9jayB9OwogICAgIGZvciAoY29uc3QgYXV0byYgcGF0dGVybiA6IG9yaWdpbkFjY2Vzc1Bh
dHRlcm5zKCkpIHsKICAgICAgICAgaWYgKHBhdHRlcm4ubWF0Y2hlcyh0YXJnZXRVUkwpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBTZWN1cml0eVBv
bGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHNvdXJjZU8KIAogICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJp
bmcoKTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG9yaWdpbkFjY2Vzc01hcExvY2sgfTsKICAgICBPcmlnaW5BY2Nl
c3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3Ry
aW5nLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4oKTsK
QEAgLTI1MSw3ICsyNTIsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nl
c3NBbGxvd2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cgogCiAgICAgU3RyaW5n
IHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwogCi0gICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb3Jp
Z2luQWNjZXNzTWFwTG9jayB9OwogICAgIE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNj
ZXNzTWFwKCk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKHNv
dXJjZVN0cmluZyk7CiAgICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKQEAgLTI2OCwxMyArMjY5LDEz
IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyCiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0
T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmln
aW5BY2Nlc3NNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9j
ayB9OwogICAgIG9yaWdpbkFjY2Vzc01hcCgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgU2VjdXJpdHlQ
b2xpY3k6OmFsbG93QWNjZXNzVG8oY29uc3QgVXNlckNvbnRlbnRVUkxQYXR0ZXJuJiBwYXR0ZXJu
KQogewotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzUGF0dGVybkxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jayB9OwogICAgIG9yaWdp
bkFjY2Vzc1BhdHRlcm5zKCkuYXBwZW5kKHBhdHRlcm4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDk5
MzVhZGMzZDNiMDFjMzBlOWZkNmM4NWI1MmE2ZmJhMWNkYTQzNzMuLjliYzZkMjk3N2VmOTEyMzhl
ZmEwMTVjNmNkYzM4MzE1MGFhOGMzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCkBAIC0xNjEsOCArMTYxLDggQEAg
dm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0q
LCBSZXNvdXJjZVVzYWdlRGF0YSYgZGEKIAogICAgIEhhc2hTZXQ8bWFjaF9wb3J0X3Q+IGtub3du
V2ViS2l0VGhyZWFkczsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soVGhy
ZWFkOjphbGxUaHJlYWRzTXV0ZXgoKSk7Ci0gICAgICAgIGZvciAoYXV0byogdGhyZWFkIDogVGhy
ZWFkOjphbGxUaHJlYWRzKGxvY2tlcikpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFRocmVh
ZDo6YWxsVGhyZWFkc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IFRocmVh
ZDo6YWxsVGhyZWFkcygpKSB7CiAgICAgICAgICAgICBtYWNoX3BvcnRfdCBtYWNoVGhyZWFkID0g
dGhyZWFkLT5tYWNoVGhyZWFkKCk7CiAgICAgICAgICAgICBpZiAoTUFDSF9QT1JUX1ZBTElEKG1h
Y2hUaHJlYWQpKQogICAgICAgICAgICAgICAgIGtub3duV2ViS2l0VGhyZWFkcy5hZGQobWFjaFRo
cmVhZCk7CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0
Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYgZGEKIAogICAg
IEhhc2hNYXA8bWFjaF9wb3J0X3QsIFN0cmluZz4ga25vd25Xb3JrZXJUaHJlYWRzOwogICAgIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondv
cmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV29y
a2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIH07CiAgICAg
ICAgIGZvciAoYXV0byogdGhyZWFkIDogV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldv
cmtsZXRUaHJlYWRzKCkpIHsKICAgICAgICAgICAgIC8vIElnbm9yZSB3b3JrZXIgdGhyZWFkcyB0
aGF0IGhhdmUgbm90IGJlZW4gZnVsbHkgc3RhcnRlZCB5ZXQuCiAgICAgICAgICAgICBpZiAoIXRo
cmVhZC0+dGhyZWFkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jl
c291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jl
c291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAKaW5kZXggYjY1OWI3NzRmMjY0MDEzYTE3Y2Y1NmU2
YzEzMTAyNWVlY2NiY2UwYS4uMDJlNWQ0ODljYWI0M2Y4MzkzMzNkNDliZDI0YTU5NjkyOTg5NDdj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhy
ZWFkTGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2Fn
ZVRocmVhZExpbnV4LmNwcApAQCAtMjMzLDggKzIzMyw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRo
cmVhZDo6cGxhdGZvcm1Db2xsZWN0Q1BVRGF0YShKU0M6OlZNKiwgUmVzb3VyY2VVc2FnZURhdGEm
IGRhCiAKICAgICBIYXNoU2V0PHBpZF90PiBrbm93bldlYktpdFRocmVhZHM7CiAgICAgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFRocmVhZDo6YWxsVGhyZWFkc011dGV4KCkpOwot
ICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IFRocmVhZDo6YWxsVGhyZWFkcyhsb2NrZXIpKSB7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBUaHJlYWQ6OmFsbFRocmVhZHNMb2NrKCkgfTsKKyAg
ICAgICAgZm9yIChhdXRvKiB0aHJlYWQgOiBUaHJlYWQ6OmFsbFRocmVhZHMoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8gaWQgPSB0aHJlYWQtPmlkKCkpCiAgICAgICAgICAgICAgICAga25vd25X
ZWJLaXRUaHJlYWRzLmFkZChpZCk7CiAgICAgICAgIH0KQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lk
IFJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdENQVURhdGEoSlNDOjpWTSosIFJl
c291cmNlVXNhZ2VEYXRhJiBkYQogCiAgICAgSGFzaE1hcDxwaWRfdCwgU3RyaW5nPiBrbm93bldv
cmtlclRocmVhZHM7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFdvcmtl
ck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRo
cmVhZHNMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvKiB0aHJlYWQgOiBXb3JrZXJPcldvcmts
ZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHMoKSkgewogICAgICAgICAgICAgLy8gSWdu
b3JlIHdvcmtlciB0aHJlYWRzIHRoYXQgaGF2ZSBub3QgYmVlbiBmdWxseSBzdGFydGVkIHlldC4K
ICAgICAgICAgICAgIGlmICghdGhyZWFkLT50aHJlYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKaW5kZXggNTE2NTMxNGNmZWExMmEwMTAwYzgyYzI2
YmNjY2YyMjJkMDJjN2E1Zi4uMmY1YWY0N2M3ZTI2OTQ2ZjNlYzFmZmY0MDhmYTdhYWJjMzc4M2U1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAg
LTMyLDYgKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDaGVja2VkTG9jayBUYXNr
RGlzcGF0Y2hlcjxUaW1lcj46OnNfc2hhcmVkTG9jazsKKwogVGFza0Rpc3BhdGNoZXI8VGltZXI+
OjpUYXNrRGlzcGF0Y2hlcigpCiB7CiB9CkBAIC0zOSw3ICs0MSw3IEBAIFRhc2tEaXNwYXRjaGVy
PFRpbWVyPjo6VGFza0Rpc3BhdGNoZXIoKQogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBv
c3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soc2hhcmVkTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IHNfc2hhcmVkTG9jayB9OwogICAgICAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoV1RGTW92
ZShmdW5jdGlvbikpOwogICAgICAgICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQobWFrZVdl
YWtQdHIoKnRoaXMpKTsKICAgICB9CkBAIC01NywxMiArNTksNiBAQCBUaW1lciYgVGFza0Rpc3Bh
dGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lcigpCiAgICAgcmV0dXJuIHRpbWVyLmdldCgpOwogfQog
Ci1Mb2NrJiBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNoYXJlZExvY2soKQotewotICAgIHN0YXRp
YyBMb2NrIGxvY2s7Ci0gICAgcmV0dXJuIGxvY2s7Ci19Ci0KIHZvaWQgVGFza0Rpc3BhdGNoZXI8
VGltZXI+OjpzaGFyZWRUaW1lckZpcmVkKCkKIHsKICAgICBBU1NFUlQoIXNoYXJlZFRpbWVyKCku
aXNBY3RpdmUoKSk7CkBAIC03MSw4ICs2Nyw4IEBAIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+
OjpzaGFyZWRUaW1lckZpcmVkKCkKICAgICAvLyBxdWV1ZWQgYnkgdGhlIEpTIGV2ZW50cyBoYW5k
bGVycyB0aGF0IGFyZSBleGVjdXRlZCBpbiB0aGUgbG9vcCBiZWxvdy4KICAgICBEZXF1ZTxXZWFr
UHRyPFRhc2tEaXNwYXRjaGVyPFRpbWVyPj4+IHF1ZXVlZERpc3BhdGNoZXJzOwogICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzaGFyZWRMb2NrKCkpOwotICAgICAgICBxdWV1
ZWREaXNwYXRjaGVycyA9IFdURk1vdmUocGVuZGluZ0Rpc3BhdGNoZXJzKCkpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgc19zaGFyZWRMb2NrIH07CisgICAgICAgIHF1ZXVlZERpc3BhdGNoZXJz
ID0gc3RkOjpleGNoYW5nZShwZW5kaW5nRGlzcGF0Y2hlcnMoKSwgeyB9KTsKICAgICB9CiAgICAg
d2hpbGUgKCFxdWV1ZWREaXNwYXRjaGVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgV2Vha1B0cjxU
YXNrRGlzcGF0Y2hlcjxUaW1lcj4+IGRpc3BhdGNoZXIgPSBxdWV1ZWREaXNwYXRjaGVycy50YWtl
Rmlyc3QoKTsKQEAgLTg1LDIxICs4MSwxNSBAQCB2b2lkIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6
c2hhcmVkVGltZXJGaXJlZCgpCiAKIERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+
Pj4mIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cGVuZGluZ0Rpc3BhdGNoZXJzKCkKIHsKLSAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGlt
ZXI+Pj4+IGRpc3BhdGNoZXJzOwotCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGRpc3BhdGNoZXJz
LmNvbnN0cnVjdCgpOwotICAgIH0pOwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcXVl
PFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4+IGRpc3BhdGNoZXJzOwogICAgIHJldHVy
biBkaXNwYXRjaGVycy5nZXQoKTsKIH0KIAogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OmRp
c3BhdGNoT25lVGFzaygpCiB7Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IHRhc2s7CisgICAg
RnVuY3Rpb248dm9pZCgpPiB0YXNrOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhzaGFyZWRMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19zaGFyZWRMb2Nr
IH07CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKTsKICAgICAgICAg
dGFzayA9IG1fcGVuZGluZ1Rhc2tzLnRha2VGaXJzdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAppbmRleCA0ZTliNDBkOWI1MWU1ZjE2MTIwMzYw
ZjUzNTViYTg0OGMzNDRiZmFkLi41MWMwODI1YzZiNGZlMDFkNjVjYWM0MGNhYTk3YmVjMWMxOGYx
NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCkBAIC02
NiwxMyArNjYsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYgc2hh
cmVkVGltZXIoKTsKLSAgICBzdGF0aWMgV1RGOjpMb2NrJiBzaGFyZWRMb2NrKCk7CiAgICAgc3Rh
dGljIHZvaWQgc2hhcmVkVGltZXJGaXJlZCgpOwotICAgIHN0YXRpYyBEZXF1ZTxXZWFrUHRyPFRh
c2tEaXNwYXRjaGVyPFRpbWVyPj4+JiBwZW5kaW5nRGlzcGF0Y2hlcnMoKTsKKyAgICBzdGF0aWMg
RGVxdWU8V2Vha1B0cjxUYXNrRGlzcGF0Y2hlcjxUaW1lcj4+PiYgcGVuZGluZ0Rpc3BhdGNoZXJz
KCkgV1RGX1JFUVVJUkVTX0xPQ0soc19zaGFyZWRMb2NrKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hP
bmVUYXNrKCk7CiAKLSAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsK
KyAgICBzdGF0aWMgQ2hlY2tlZExvY2sgc19zaGFyZWRMb2NrOworICAgIERlcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+IG1fcGVuZGluZ1Rhc2tzIFdURl9HVUFSREVEX0JZX0xPQ0soc19zaGFyZWRMb2Nr
KTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IGMzZjc1NjAxODZmMjBhYzVjODhm
MzRhNTQzNmZjZGFhM2JiNTc3YWQuLmQ1YmIwNDUyOGFjYjliMjBlNjk1ZDdiMGMwNTRhNzliMDgx
MDdjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdp
c3RyeS5jcHAKQEAgLTI3LDggKzI3LDcgQEAKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3Ry
eS5oIgogCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSA8
d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CkBAIC02Niw3ICs2NSw3
IEBAIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBtYWtlTmV2ZXJEZXN0cm95
ZWRTY2hlbWVTZXQoY29uc3QgVmVjdG9yPFN0CiAgICAgcmV0dXJuIHNldDsKIH0KIAotc3RhdGlj
IExvY2sgc2NoZW1lUmVnaXN0cnlMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIHNjaGVtZVJlZ2lz
dHJ5TG9jazsKIAogc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVz
KCkKIHsKQEAgLTk1LDcgKzk0LDcgQEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1
aWx0aW5TY2hlbWVzKCkKIAogICAgICAgICBVUkxTY2hlbWVzTWFwIHNldDsKICAgICAgICAgewot
ICAgICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAg
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgICAgICAg
ICAgZm9yIChhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkpCiAgICAgICAg
ICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwogCkBAIC0xMDksNyArMTA4LDcgQEAgc3RhdGljIGNv
bnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1l
czsKIH0KIAotc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVt
ZXMoKQorc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMo
KSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNj
aGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1l
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChVUkxTY2hlbWVzTWFwIHsKQEAgLTEyMSwyMSArMTIwLDIx
IEBAIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkK
ICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGxvY2FsVVJM
U2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkgV1RGX1JF
UVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdp
c3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVz
TWFwPiBsb2NhbFNjaGVtZXMgPSBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCk7CiAgICAgcmV0dXJu
IGxvY2FsU2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRl
ZFVSTFNjaGVtZXMoKQorc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNj
aGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNT
RVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTFNjaGVtZXNNYXA+IGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiAgICAgcmV0dXJuIGRp
c3BsYXlJc29sYXRlZFNjaGVtZXM7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGlu
U2VjdXJlU2NoZW1lcygpCitjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVt
ZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJU
KHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2No
ZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CkBAIC0xNTAsMTQgKzE0
OSwxNCBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKQogICAg
IHJldHVybiBzY2hlbWVzOwogfQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1l
cygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpIFdURl9SRVFVSVJFU19M
T0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2Nr
LmlzSGVsZCgpKTsKICAgICBzdGF0aWMgYXV0byBzZWN1cmVTY2hlbWVzID0gbWFrZU5ldmVyRGVz
dHJveWVkU2NoZW1lU2V0KGJ1aWx0aW5TZWN1cmVTY2hlbWVzKTsKICAgICByZXR1cm4gc2VjdXJl
U2NoZW1lczsKIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVu
aXF1ZU9yaWdpbnMoKQorc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2Nr
KQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRp
YyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4g
ewpAQCAtMTcwLDcgKzE2OSw3IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIFVS
TFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCitzdGF0aWMgVVJMU2NoZW1l
c01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1l
UmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkp
OwogICAgIHN0YXRpYyBhdXRvIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyA9IG1ha2VOZXZlckRl
c3Ryb3llZFNjaGVtZVNldChidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTsKQEAgLTE5
OCwxNCArMTk3LDE0IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzRm9yYmlkZGVuRnJv
bURvbWFpblJlbGF4YXRpb24oKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1jb25zdCBWZWN0
b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCitj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NF
UlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgY29uc3QgYXV0byBz
Y2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgImJsb2IiX3MgfSk7
CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNw
bGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQorc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJl
Z2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKICAgICBB
U1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKQEAgLTIyNSwyMCArMjI0LDIwIEBA
IHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25z
dCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGxvY2FsVVJMU2NoZW1l
cygpLmFkZChzY2hlbWUpOwogfQogCiB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVV
UkxTY2hlbWVSZWdpc3RlcmVkQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGlmIChidWlsdGluTG9jYWxVUkxTY2hlbWVz
KCkuY29udGFpbnMoc2NoZW1lKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbG9jYWxVUkxTY2hl
bWVzKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVt
ZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVt
ZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0
cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHNldDsKQEAgLTI0NywxMyAr
MjQ2LDEzIEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVI
YW5kbGVyKCkKIAogdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgTG9j
a2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBzY2hlbWVzSGFuZGxlZEJ5U2NoZW1lSGFuZGxl
cigpLmFkZChzY2hlbWUpOwogfQogCiBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVJ
c0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoU3RyaW5nVmlldyBzY2hlbWUpCiB7Ci0gICAgTG9ja2Vy
PExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBz
Y2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2NoZW1lc0hhbmRsZWRCeVNjaGVtZUhh
bmRsZXIoKS5jb250YWlucyhzY2hlbWUudG9TdHJpbmcoKSk7CiB9CiAKQEAgLTI3OSwxNCArMjc4
LDE0IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogICAgIHJl
dHVybiBzY2hlbWVzOwogfQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5
UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNl
Y3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJl
Z2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAgICBy
ZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhY2hlUGFydGl0aW9u
aW5nU2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FjaGVQYXJ0aXRpb25pbmdTY2hl
bWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VS
VChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwpAQCAtMzA1LDcgKzMwNCw3IEBAIGJvb2wgTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBsb2NhbFVSTFNj
aGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC0zMTQsNyArMzEzLDcgQEAgdm9pZCBM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgc2NoZW1lc1dpdGhVbmlxdWVP
cmlnaW5zKCkuYWRkKHNjaGVtZSk7CiB9CiAKQEAgLTMyMyw3ICszMjIsNyBAQCBib29sIExlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIApAQCAtMzMyLDcgKzMz
MSw3IEBAIHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNw
bGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3Ry
eUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBk
aXNwbGF5SXNvbGF0ZWRVUkxTY2hlbWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKQEAgLTM0MSw3ICsz
NDAsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
RGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYgcwogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1l
UmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07
CiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUp
OwogfQogCkBAIC0zNTAsNyArMzQ5LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVn
aXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2No
ZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5
TG9jayB9OwogICAgIHNlY3VyZVNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtMzU5LDcg
KzM1OCw3IEBAIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNTZWN1cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVS
ZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsK
ICAgICByZXR1cm4gc2VjdXJlU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKQEAgLTM5
Nyw3ICszOTYsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVt
ZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9
OwogICAgIHJldHVybiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKS5jb250YWlu
cyhzY2hlbWUpOwogfQogCkBAIC00MDcsNyArNDA2LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYg
c2MKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcygpLmFkZChzY2hlbWUpOwogfQogCkBAIC00NjAsNyArNDU5LDcgQEAgdm9pZCBMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0
eVBvbGljeShjb24KICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eUJ5cGFzc2luZ1NjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtNDY5LDcgKzQ2OCw3IEBA
IHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5
cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKQEAg
LTQ3OCw3ICs0NzcsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRC
eXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJgogICAgIGlmIChzY2hlbWUu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0
cnlMb2NrIH07CiAgICAgcmV0dXJuIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVt
ZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC00OTksNyArNDk4LDcgQEAgdm9pZCBMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29u
c3QgU3RyaW5nJiBzY2gKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGNhY2hlUGFydGl0aW9uaW5n
U2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCkBAIC01MDgsNyArNTA3LDcgQEAgYm9vbCBMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3Qg
U3RyaW5nJiBzY2hlbWUKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBjYWNo
ZVBhcnRpdGlvbmluZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAppbmRleCA4MWE4
YmVkNmJmY2Y3YTRiYmIxYzgwMzg1NmQ2N2RlMWExYjQxNTBiLi5lYTRkZWQyNjQxZjU0NjU0MTIz
OWFlNzVmZmE2YWIzMDc2OTdmNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJG
RlRGcmFtZS5oIgogCiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgotI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Niw5ICs0Niw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0ZXhwciB1bnNpZ25lZCBrTWluRkZUUG93MlNpemUgPSAy
OwogY29uc3RleHByIHVuc2lnbmVkIGtNYXhGRlRQb3cyU2l6ZSA9IDI0OwogCi1zdGF0aWMgTG9j
ayBmZnRTZXR1cHNMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIGZmdFNldHVwc0xvY2s7CiAKLXN0
YXRpYyBWZWN0b3I8RkZUU2V0dXA+JiBmZnRTZXR1cHMoKQorc3RhdGljIFZlY3RvcjxGRlRTZXR1
cD4mIGZmdFNldHVwcygpIFdURl9SRVFVSVJFU19MT0NLKGZmdFNldHVwc0xvY2spCiB7CiAgICAg
QVNTRVJUKGZmdFNldHVwc0xvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWZWN0b3I8RkZUU2V0dXA+PiBmZnRTZXR1cHMoa01heEZGVFBvdzJTaXplLCBudWxscHRyKTsK
QEAgLTEzNiw3ICsxMzYsNyBAQCBGRlRTZXR1cCBGRlRGcmFtZTo6ZmZ0U2V0dXBGb3JTaXplKHVu
c2lnbmVkIGZmdFNpemUpCiAgICAgYXV0byBwb3cyc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4o
bG9nMihmZnRTaXplKSk7CiAgICAgQVNTRVJUKHBvdzJzaXplIDwga01heEZGVFBvdzJTaXplKTsK
IAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmZ0U2V0dXBzTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGZmdFNldHVwc0xvY2sgfTsKICAgICBhdXRvJiBmZnRTZXR1cCA9IGZmdFNldHVw
cygpLmF0KHBvdzJzaXplKTsKICAgICBpZiAoIWZmdFNldHVwKQogICAgICAgICBmZnRTZXR1cCA9
IHZEU1BfY3JlYXRlX2ZmdHNldHVwKHBvdzJzaXplLCBGRlRfUkFESVgyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAxZDBiZTgz
NDZmZmIyNGFjNzNhYzRlOTJjMWFhMWMzNGU1Y2U2NDg5Li44YTAzNzA2OThjZGIwOWUxNzRiYzJk
M2UxMzIzZDg3MzRmOTQyZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtVGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCkBAIC0yMDMsOSArMjA0LDkg
QEAgc3RhdGljIE1lZGlhUGxheWVyQ2xpZW50JiBudWxsTWVkaWFQbGF5ZXJDbGllbnQoKQogCiBz
dGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0
b3J5PiYmKTsKIAotc3RhdGljIExvY2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOworc3RhdGljIENo
ZWNrZWRMb2NrIG1lZGlhRW5naW5lVmVjdG9yTG9jazsKIAotc3RhdGljIGJvb2wmIGhhdmVNZWRp
YUVuZ2luZXNWZWN0b3IoKQorc3RhdGljIGJvb2wmIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSBX
VEZfUkVRVUlSRVNfTE9DSyhtZWRpYUVuZ2luZVZlY3RvckxvY2spCiB7CiAgICAgc3RhdGljIGJv
b2wgaGF2ZVZlY3RvcjsKICAgICByZXR1cm4gaGF2ZVZlY3RvcjsKQEAgLTIyOCw3ICsyMjksNyBA
QCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJD
YWxsYmFjayhSZWdpc3RlclJlbW90ZVBsYQogICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJh
Y2soKSA9IFdURk1vdmUoY2FsbGJhY2spOwogfQogCi1zdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5n
aW5lc1ZlY3RvcigpCitzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpIFdURl9S
RVFVSVJFU19MT0NLKG1lZGlhRW5naW5lVmVjdG9yTG9jaykKIHsKICAgICBBU1NFUlQobWVkaWFF
bmdpbmVWZWN0b3JMb2NrLmlzTG9ja2VkKCkpOwogCkBAIC0yODIsNyArMjgzLDcgQEAgc3RhdGlj
IHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogc3RhdGljIGNvbnN0IFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygp
CiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1lZGlhRW5naW5lVmVj
dG9yTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtZWRpYUVuZ2luZVZlY3RvckxvY2sg
fTsKICAgICAgICAgaWYgKCFoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkpCiAgICAgICAgICAgICBi
dWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpOwogICAgIH0KQEAgLTE1MDEsNyArMTUwMiw3IEBAIFZl
Y3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBNZWRpYVBsYXllcjo6b3V0T2ZCYW5kVHJh
Y2tTb3VyY2VzKCkKIAogdm9pZCBNZWRpYVBsYXllcjo6cmVzZXRNZWRpYUVuZ2luZXMoKQogewot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobWVkaWFFbmdpbmVWZWN0b3JMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbWVkaWFFbmdpbmVWZWN0b3JMb2NrIH07CiAKICAgICBtdXRhYmxlSW5z
dGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuY2xlYXIoKTsKICAgICBoYXZlTWVkaWFFbmdpbmVz
VmVjdG9yKCkgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXgg
OGE1NDk1YmQzNTU0ODkyY2ExMDZhYzQ0Y2NjY2ZmNzQ3ZjM1Zjc0NC4uYjZlYTE0ZmY1ZThjMjc0
NjgyMGVkOGU4NTcyYjM1NmI3NTcyODZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9y
dCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgor
I2ltcG9ydCA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtNzUsNyArNzYsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIExheWVyVG9QbGF0Zm9ybUNBTGF5ZXJNYXAgPSBIYXNo
TWFwPHZvaWQqLCBQbGF0Zm9ybUNBTGF5ZXIqPjsKIAotc3RhdGljIExheWVyVG9QbGF0Zm9ybUNB
TGF5ZXJNYXAmIGxheWVyVG9QbGF0Zm9ybUxheWVyTWFwKCkKK3N0YXRpYyBDaGVja2VkTG9jayBs
YXllclRvUGxhdGZvcm1MYXllck1hcExvY2s7CitzdGF0aWMgTGF5ZXJUb1BsYXRmb3JtQ0FMYXll
ck1hcCYgbGF5ZXJUb1BsYXRmb3JtTGF5ZXJNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhsYXllclRv
UGxhdGZvcm1MYXllck1hcExvY2spCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExheWVy
VG9QbGF0Zm9ybUNBTGF5ZXJNYXA+IGxheWVyTWFwOwogICAgIHJldHVybiBsYXllck1hcDsKQEAg
LTg3LDggKzg5LDcgQEAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXJGb3JMYXllcih2b2lkKiBwbGF0Zm9ybUwKICAgICBpZiAoIXBsYXRmb3Jt
TGF5ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RhdGljIExvY2sgbG9jazsK
LSAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGxh
eWVyVG9QbGF0Zm9ybUxheWVyTWFwTG9jayB9OwogICAgIHJldHVybiBsYXllclRvUGxhdGZvcm1M
YXllck1hcCgpLmdldChwbGF0Zm9ybUxheWVyKTsKIH0KIApAQCAtMzEyLDggKzMxMywxMSBAQCB2
b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIAotICAgIGxheWVyVG9QbGF0Zm9ybUxheWVyTWFwKCkuYWRkKG1f
bGF5ZXIuZ2V0KCksIHRoaXMpOwotICAgIAorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxheWVyVG9QbGF0Zm9ybUxheWVyTWFwTG9jayB9OworICAgICAgICBsYXllclRvUGxhdGZvcm1M
YXllck1hcCgpLmFkZChtX2xheWVyLmdldCgpLCB0aGlzKTsKKyAgICB9CisKICAgICAvLyBDbGVh
ciBhbGwgdGhlIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKICAgICBpZiAobV9s
YXllclR5cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXll
clR5cGVDb250ZW50c1Byb3ZpZGVkTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Ny
b2xsQ29udGFpbmVyTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAg
ICAgICBbbV9sYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOwpAQCAtMzkyLDggKzM5NiwxMCBA
QCBSZWY8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xvbmUoUGxhdGZv
cm1DQUxheWVyQ2xpZW50KiBvd25lcikgYwogCiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6flBsYXRm
b3JtQ0FMYXllckNvY29hKCkKIHsKLSAgICBsYXllclRvUGxhdGZvcm1MYXllck1hcCgpLnJlbW92
ZShtX2xheWVyLmdldCgpKTsKLSAgICAKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBs
YXllclRvUGxhdGZvcm1MYXllck1hcExvY2sgfTsKKyAgICAgICAgbGF5ZXJUb1BsYXRmb3JtTGF5
ZXJNYXAoKS5yZW1vdmUobV9sYXllci5nZXQoKSk7CisgICAgfQogICAgIC8vIFJlbW92ZSB0aGUg
b3duZXIgcG9pbnRlciBmcm9tIHRoZSBkZWxlZ2F0ZSBpbiBjYXNlIHRoZXJlIGlzIGEgcGVuZGlu
ZyBhbmltYXRpb25TdGFydGVkIGV2ZW50LgogICAgIFtzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25E
ZWxlZ2F0ZSo+KG1fZGVsZWdhdGUuZ2V0KCkpIHNldE93bmVyOm5pbF07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE1ZDJmNzM2YzJlZDgzMGVkYzBkM2Ri
YTczZGJiYTgwM2YxZTFlMjMuLmJlODdhZDJkM2RkZGVlNjU2ZWQ4MmE0ZDQyZTZlYWM0Y2RkY2Iy
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMjksMTIg
KzI5LDE0IEBACiAjaWYgVVNFKFFVSUNLX0xPT0spCiAKICNpbXBvcnQgIlJlc291cmNlUmVxdWVz
dC5oIgotI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU0ZpbGVNYW5hZ2VyU1BJLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2su
aD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29r
U29mdExpbmsuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBRTFByZXZp
ZXdQcm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKQEAgLTQ1LDkgKzQ3LDkgQEAgTlNTZXQgKlFM
UHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpCiAgICAgcmV0dXJuIHNldC5nZXQoKS5n
ZXQoKTsKIH0KIAotc3RhdGljIExvY2sgcWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2s7
CitzdGF0aWMgQ2hlY2tlZExvY2sgcWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2s7CiAK
LXN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5
KCkKK3N0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9u
YXJ5KCkgV1RGX1JFUVVJUkVTX0xPQ0socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2sp
CiB7CiAgICAgc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAgIHJldHVybiBkaWN0aW9uYXJ5OwpAQCAt
NjEsNyArNjMsNyBAQCBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqUUxDb250ZW50RGljdGlv
bmFyeSgpCiAKIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICp1cmwp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9u
YXJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25h
cnlMb2NrIH07CiAgICAgW1FMUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnkoKSByZW1vdmVPYmpl
Y3RGb3JLZXk6dXJsXTsKICAgICBbUUxDb250ZW50RGljdGlvbmFyeSgpIHJlbW92ZU9iamVjdEZv
cktleTp1cmxdOwogfQpAQCAtNzAsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBhZGRRTFByZXZpZXdD
b252ZXJ0ZXJXaXRoRmlsZUZvclVSTChOU1VSTCAqdXJsLCBpZCBjb252ZXJ0ZXIsIE5TU3RyaQog
ewogICAgIEFTU0VSVCh1cmwpOwogICAgIEFTU0VSVChjb252ZXJ0ZXIpOwotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jayB9OwogICAgIFtR
TFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgc2V0T2JqZWN0OmNvbnZlcnRlciBmb3JLZXk6
dXJsXTsKICAgICBbUUxDb250ZW50RGljdGlvbmFyeSgpIHNldE9iamVjdDooZmlsZU5hbWUgPyBm
aWxlTmFtZSA6IEAiIikgZm9yS2V5OnVybF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQpp
bmRleCBiYTBlMThlOTI5OGUwYzMxMmYzMWE3NjA5MzkxYmQ1NDIxOTQ2MjM2Li43MDcyMmE5Njlj
NjliN2JmNzFlMDM3NDhhNDMzYmZmMzlmNzVkNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQu
bW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldlYkJhY2tncm91bmRUYXNrQ29udHJvbGxl
ci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIApAQCAtODQsMTYgKzg1LDE2IEBAIHZvaWQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50OjpoeXN0ZXJlc2lzVXBkYXRlZChQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0CiAKIH0KIAot
c3RhdGljIExvY2sgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrOworc3Rh
dGljIENoZWNrZWRMb2NrIHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jazsK
IAotc3RhdGljIE5TVUludGVnZXIgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXI7
CitzdGF0aWMgTlNVSW50ZWdlciB0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllciBX
VEZfR1VBUkRFRF9CWV9MT0NLKHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9j
ayk7CiAKLXN0YXRpYyB2b2lkIHNldFRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVy
KE5TVUludGVnZXIgaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIHNldFRyYW5zYWN0aW9uQmFja2dy
b3VuZFRhc2tJZGVudGlmaWVyKE5TVUludGVnZXIgaWRlbnRpZmllcikgV1RGX1JFUVVJUkVTX0xP
Q0sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKQogewogICAgIHRyYW5z
YWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKIH0KIAotc3RhdGlj
IE5TVUludGVnZXIgZ2V0VHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKQorc3Rh
dGljIE5TVUludGVnZXIgZ2V0VHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKSBX
VEZfUkVRVUlSRVNfTE9DSyh0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2sp
CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBwcmVkOwogICAgIGRpc3BhdGNoX29uY2Uo
JnByZWQsIF4gewpAQCAtMTA3LDcgKzEwOCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJEYXRhYmFz
ZVRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tDb250cm9sbGVyCiAKICsgKHZvaWQpc3RhcnRCYWNr
Z3JvdW5kVGFzawogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25CYWNr
Z3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rp
b25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrIH07CiAKICAgICAvLyBJZiB0aGVyZSdzIGFs
cmVhZHkgYW4gZXhpc3RpbmcgYmFja2dyb3VuZCB0YXNrIGdvaW5nIG9uLCB0aGVyZSdzIG5vIG5l
ZWQgdG8gc3RhcnQgYSBuZXcgb25lLgogICAgIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciAq
YmFja2dyb3VuZFRhc2tDb250cm9sbGVyID0gW1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciBz
aGFyZWRDb250cm9sbGVyXTsKQEAgLTEyMiw3ICsxMjMsNyBAQCArICh2b2lkKXN0YXJ0QmFja2dy
b3VuZFRhc2sKIAogKyAodm9pZCllbmRCYWNrZ3JvdW5kVGFzawogewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2Nr
IH07CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHN0YXJ0
IHRoZSBiYWNrZ3JvdW5kIHRhc2sgd2hlbiB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gYmVnYW4uCiAg
ICAgLy8gRG9uJ3QgdHJ5IHRvIGVuZCB0aGUgdGFzayBpbiB0aGF0IGNhc2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KaW5kZXgg
NmQ1ZDVjNTdlZTBiY2E1YzYxMGQyZGIwZTgyYzRlNmY0OTFhZmY5ZS4uNjZlMjdlYTUyMjRhZjhk
YjE5YzJhOWYxNjlhOTFjMWMzZDgzOGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKIAotI2ltcG9ydCA8d3Rm
L0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9DaGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2ltcG9ydCA8d3RmL1Rp
bnlMUlVDYWNoZS5oPgpAQCAtMTEyLDcgKzExMiw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBT
dHJpbmcmIGtleSkgeyByZXR1cm4ga2V5Lmlzb2xhdGVkQ29weSgpOyB9CiB9OwogCi1zdGF0aWMg
VGlueUxSVUNhY2hlPFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21N
SU1FVHlwZUNhY2hlUG9saWN5PiYgY2FjaGVVVElGcm9tTWltZVR5cGUoKQorc3RhdGljIENoZWNr
ZWRMb2NrIGNhY2hlVVRJRnJvbU1JTUVUeXBlTG9jazsKK3N0YXRpYyBUaW55TFJVQ2FjaGU8U3Ry
aW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xp
Y3k+JiBjYWNoZVVUSUZyb21NSU1FVHlwZSgpIFdURl9SRVFVSVJFU19MT0NLKGNhY2hlVVRJRnJv
bU1JTUVUeXBlTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hl
PFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hl
UG9saWN5Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlOwpAQCAtMTIwLDkgKzEyMSw4IEBAIHN0
YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJ
RnJvbU1JTUVUeXBlQ2FjaGVQb2xpCiAKIFN0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKIHsKLSAgICBzdGF0aWMgTG9jayBsb2NrOwotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobG9jayk7Ci0gICAgcmV0dXJuIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0
KG1pbWVUeXBlKS5nZXQoKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVVVElGcm9tTUlNRVR5
cGVMb2NrIH07CisgICAgcmV0dXJuIGNhY2hlVVRJRnJvbU1JTUVUeXBlKCkuZ2V0KG1pbWVUeXBl
KS5nZXQoKTsKIH0KIAogYm9vbCBpc0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYgVVRJKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggMzRk
YWY0ZWQyOWVmODMyZjNhZTA1MmNiMmU1NDUzZTI1ZDIyOGUyOS4uZWE0NTMxMTBhMTgzOTczN2Q5
NzVmYjM1ZTFlODIwOWM4ZWEyMDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8bXV0ZXg+
CiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC03MSwxMiAr
NzIsMTIgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNRTGl0ZUlmTmVjZXNzYXJ5KCkKICAgICB9
KTsKIH0KIAotc3RhdGljIGJvb2wgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4gPSBmYWxzZTsK
LXN0YXRpYyBMb2NrIGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXg7CitzdGF0aWMgQ2hl
Y2tlZExvY2sgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW5Mb2NrOworc3RhdGljIGJvb2wgaXNE
YXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4gV1RGX0dVQVJERURfQllfTE9DSyhpc0RhdGFiYXNlT3Bl
bmluZ0ZvcmJpZGRlbkxvY2spIHsgZmFsc2UgfTsKIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0
SXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4oYm9vbCBpc0ZvcmJpZGRlbikKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbkxvY2sgfTsKICAgICBp
c0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbiA9IGlzRm9yYmlkZGVuOwogfQogCkBAIC05NCw3ICs5
NSw3IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
T3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgY2xvc2UoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbk11dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTG9jayB9OwogICAg
ICAgICBpZiAoaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4pIHsKICAgICAgICAgICAgIG1fb3Bl
bkVycm9yTWVzc2FnZSA9ICJvcGVuaW5nIGRhdGFiYXNlIGlzIGZvcmJpZGRlbiI7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDZhMjhlMTliZTk0NjkzMDM1YTU2YjY0
MDk0ZTQxNTdlYzk1YTdkNzAuLjNmOGUzYzk3ZWRlODBlNDI5MTU4NDRlN2ZiY2E1YTYyZjE0OWQ3
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVRyYWNrZXIuY3BwCkBAIC0yNywyNiArMjcsMjUgQEAKICNpbmNsdWRlICJTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaCIKIAogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIFNRTGl0ZURhdGFiYXNlVHJhY2tlciB7CiAKLXN0YXRpYyBTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQqIHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID0gbnVs
bHB0cjsKLXN0YXRpYyB1bnNpZ25lZCBzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIgPSAw
OwotCi1zdGF0aWMgTG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKK3N0YXRpYyBDaGVj
a2VkTG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrOworc3RhdGljIFNRTGl0ZURhdGFiYXNl
VHJhY2tlckNsaWVudCogc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgV1RGX0dV
QVJERURfQllfTE9DSyh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IG51bGxwdHIgfTsKK3N0
YXRpYyB1bnNpZ25lZCBzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIgV1RGX0dVQVJERURf
QllfTE9DSyh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IDAgfTsKIAogdm9pZCBzZXRDbGll
bnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsKICAgICBzX3N0YXRpY1NRTGl0ZURh
dGFiYXNlVHJhY2tlckNsaWVudCA9IGNsaWVudDsKIH0KIAogdm9pZCBpbmNyZW1lbnRUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3NDb3VudCgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFu
c2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0xvY2sgfTsKICAgICBpZiAoIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTU3LDcgKzU2LDcgQEAgdm9pZCBpbmNyZW1l
bnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpCiAKIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rp
b25JblByb2dyZXNzQ291bnQoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNh
Y3Rpb25JblByb2dyZXNzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyB0cmFuc2FjdGlvbklu
UHJvZ3Jlc3NMb2NrIH07CiAgICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC03MCw3ICs2OSw3IEBAIHZvaWQgZGVjcmVtZW50
VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKQogCiBib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9n
cmVzcygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sg
fTsKICAgICByZXR1cm4gIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50IHx8IHNf
dHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRlciA+IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggMDZk
ZmY2Y2Q5YjIwN2M1NmY4ZDcwMWI3ODgyZGNjZWJmMmU2Yjg1Yy4uZTFiYzUzNmNjNmEwNDg1Nzc4
NjJjZmQxYzMxNzRjZDY3NDcxNmY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNp
bmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTkxLDEw
ICs5MSwxMCBAQCBzdHJ1Y3QgVGV4dEVuY29kaW5nTmFtZUhhc2ggewogdXNpbmcgVGV4dEVuY29k
aW5nTmFtZU1hcCA9IEhhc2hNYXA8Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBUZXh0RW5jb2Rp
bmdOYW1lSGFzaD47CiB1c2luZyBUZXh0Q29kZWNNYXAgPSBIYXNoTWFwPGNvbnN0IGNoYXIqLCBO
ZXdUZXh0Q29kZWNGdW5jdGlvbj47CiAKLXN0YXRpYyBMb2NrIGVuY29kaW5nUmVnaXN0cnlNdXRl
eDsKK3N0YXRpYyBDaGVja2VkTG9jayBlbmNvZGluZ1JlZ2lzdHJ5TG9jazsKIAotc3RhdGljIFRl
eHRFbmNvZGluZ05hbWVNYXAqIHRleHRFbmNvZGluZ05hbWVNYXA7Ci1zdGF0aWMgVGV4dENvZGVj
TWFwKiB0ZXh0Q29kZWNNYXA7CitzdGF0aWMgVGV4dEVuY29kaW5nTmFtZU1hcCogdGV4dEVuY29k
aW5nTmFtZU1hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKTsKK3N0
YXRpYyBUZXh0Q29kZWNNYXAqIHRleHRDb2RlY01hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29k
aW5nUmVnaXN0cnlMb2NrKTsKIHN0YXRpYyBib29sIGRpZEV4dGVuZFRleHRDb2RlY01hcHM7CiBz
dGF0aWMgSGFzaFNldDxjb25zdCBjaGFyKj4qIGphcGFuZXNlRW5jb2RpbmdzOwogc3RhdGljIEhh
c2hTZXQ8Y29uc3QgY2hhcio+KiBub25CYWNrc2xhc2hFbmNvZGluZ3M7CkBAIC0xMTUsNyArMTE1
LDcgQEAgc3RhdGljIGJvb2wgaXNVbmRlc2lyZWRBbGlhcyhjb25zdCBjaGFyKiBhbGlhcykKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFRvVGV4dEVuY29kaW5nTmFtZU1h
cChjb25zdCBjaGFyKiBhbGlhcywgY29uc3QgY2hhciogbmFtZSkKK3N0YXRpYyB2b2lkIGFkZFRv
VGV4dEVuY29kaW5nTmFtZU1hcChjb25zdCBjaGFyKiBhbGlhcywgY29uc3QgY2hhciogbmFtZSkg
V1RGX1JFUVVJUkVTX0xPQ0soZW5jb2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHN0
cmxlbihhbGlhcykgPD0gbWF4RW5jb2RpbmdOYW1lTGVuZ3RoKTsKICAgICBpZiAoaXNVbmRlc2ly
ZWRBbGlhcyhhbGlhcykpCkBAIC0xMzAsMTQgKzEzMCwxNCBAQCBzdGF0aWMgdm9pZCBhZGRUb1Rl
eHRFbmNvZGluZ05hbWVNYXAoY29uc3QgY2hhciogYWxpYXMsIGNvbnN0IGNoYXIqIG5hbWUpCiAg
ICAgdGV4dEVuY29kaW5nTmFtZU1hcC0+YWRkKGFsaWFzLCBhdG9tTmFtZSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGFkZFRvVGV4dENvZGVjTWFwKGNvbnN0IGNoYXIqIG5hbWUsIE5ld1RleHRDb2RlY0Z1
bmN0aW9uJiYgZnVuY3Rpb24pCitzdGF0aWMgdm9pZCBhZGRUb1RleHRDb2RlY01hcChjb25zdCBj
aGFyKiBuYW1lLCBOZXdUZXh0Q29kZWNGdW5jdGlvbiYmIGZ1bmN0aW9uKSBXVEZfUkVRVUlSRVNf
TE9DSyhlbmNvZGluZ1JlZ2lzdHJ5TG9jaykKIHsKICAgICBjb25zdCBjaGFyKiBhdG9tTmFtZSA9
IHRleHRFbmNvZGluZ05hbWVNYXAtPmdldChuYW1lKTsKICAgICBBU1NFUlQoYXRvbU5hbWUpOwog
ICAgIHRleHRDb2RlY01hcC0+YWRkKGF0b21OYW1lLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAK
LXN0YXRpYyB2b2lkIHBydW5lQmxvY2tsaXN0ZWRDb2RlY3MoKQorc3RhdGljIHZvaWQgcHJ1bmVC
bG9ja2xpc3RlZENvZGVjcygpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2Nr
KQogewogICAgIGZvciAoYXV0byYgbmFtZUZyb21CbG9ja2xpc3QgOiB0ZXh0RW5jb2RpbmdOYW1l
QmxvY2tsaXN0KSB7CiAgICAgICAgIGF1dG8qIGF0b21OYW1lID0gdGV4dEVuY29kaW5nTmFtZU1h
cC0+Z2V0KG5hbWVGcm9tQmxvY2tsaXN0KTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgdm9p
ZCBwcnVuZUJsb2NrbGlzdGVkQ29kZWNzKCkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxk
QmFzZVRleHRDb2RlY01hcHMoY29uc3QgQWJzdHJhY3RMb2NrZXImKQorc3RhdGljIHZvaWQgYnVp
bGRCYXNlVGV4dENvZGVjTWFwcygpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlM
b2NrKQogewogICAgIEFTU0VSVCghdGV4dENvZGVjTWFwKTsKICAgICBBU1NFUlQoIXRleHRFbmNv
ZGluZ05hbWVNYXApOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRl
eHRDb2RlY01hcHMoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgIFRleHRDb2RlY1VzZXJEZWZp
bmVkOjpyZWdpc3RlckNvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGFkZEVuY29kaW5nTmFtZShIYXNoU2V0PGNvbnN0IGNoYXIqPiogc2V0LCBjb25zdCBjaGFyKiBu
YW1lKQorc3RhdGljIHZvaWQgYWRkRW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBz
ZXQsIGNvbnN0IGNoYXIqIG5hbWUpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlM
b2NrKQogewogICAgIC8vIFdlIG11c3Qgbm90IHVzZSBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5n
TmFtZSgpIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gaXQuCiAgICAgY29uc3Qg
Y2hhciogYXRvbU5hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5nZXQobmFtZSk7CkBAIC0xODYs
NyArMTg2LDcgQEAgc3RhdGljIHZvaWQgYWRkRW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hh
cio+KiBzZXQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIHNldC0+YWRkKGF0b21OYW1lKTsK
IH0KIAotc3RhdGljIHZvaWQgYnVpbGRRdWlya3NTZXRzKCkKK3N0YXRpYyB2b2lkIGJ1aWxkUXVp
cmtzU2V0cygpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAg
IC8vIEZJWE1FOiBIYXZpbmcgaXNKYXBhbmVzZUVuY29kaW5nKCkgYW5kIHNob3VsZFNob3dCYWNr
c2xhc2hBc0N1cnJlbmN5U3ltYm9sSW4oKQogICAgIC8vIGFuZCBpbml0aWFsaXppbmcgdGhlIHNl
dHMgZm9yIHRoZW0gaW4gVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGxvb2sgc3RyYW5nZS4KQEAg
LTIzMSw3ICsyMzEsNyBAQCBib29sIHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9s
SW4oY29uc3QgY2hhciogY2Fub25pY2FsRW5jb2RpbmdOYW1lKQogICAgIHJldHVybiBjYW5vbmlj
YWxFbmNvZGluZ05hbWUgJiYgbm9uQmFja3NsYXNoRW5jb2RpbmdzICYmIG5vbkJhY2tzbGFzaEVu
Y29kaW5ncy0+Y29udGFpbnMoY2Fub25pY2FsRW5jb2RpbmdOYW1lKTsKIH0KIAotc3RhdGljIHZv
aWQgZXh0ZW5kVGV4dENvZGVjTWFwcygpCitzdGF0aWMgdm9pZCBleHRlbmRUZXh0Q29kZWNNYXBz
KCkgV1RGX1JFUVVJUkVTX0xPQ0soZW5jb2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgVGV4dENv
ZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhhZGRUb1RleHRFbmNvZGluZ05h
bWVNYXApOwogICAgIFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhhZGRUb1Rl
eHRDb2RlY01hcCk7CkBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENv
ZGVjTWFwcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhjb25z
dCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
ZW5jb2RpbmdSZWdpc3RyeU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZW5jb2RpbmdSZWdp
c3RyeUxvY2sgfTsKIAogICAgIEFTU0VSVCh0ZXh0Q29kZWNNYXApOwogICAgIGF1dG8gcmVzdWx0
ID0gdGV4dENvZGVjTWFwLT5maW5kKGVuY29kaW5nLm5hbWUoKSk7CkBAIC0yNjQsMTAgKzI2NCwx
MCBAQCBjb25zdCBjaGFyKiBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFy
KiBuYW1lKQogICAgIGlmICghbmFtZSB8fCAhbmFtZVswXSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGVuY29kaW5nUmVnaXN0cnlNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IGVuY29kaW5nUmVnaXN0cnlMb2NrIH07CiAKICAgICBpZiAo
IXRleHRFbmNvZGluZ05hbWVNYXApCi0gICAgICAgIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMobG9j
a2VyKTsKKyAgICAgICAgYnVpbGRCYXNlVGV4dENvZGVjTWFwcygpOwogCiAgICAgaWYgKGNvbnN0
IGNoYXIqIGF0b21OYW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWUpKQogICAgICAg
ICByZXR1cm4gYXRvbU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IDAxN2RmNWJiN2NjNDU1ZDA5ZGExMzU0MTUyNGY2ZGNmNDNkZDM1MzMu
LjA3ZjRlNzY5MzAzNjExYjhlMTFlMmNkMzY0NzIzMjliOTExZDFiZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01NiwxNiArNTYsMTUgQEAK
ICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxs
U3RhY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCi1zdGF0aWMgTG9jayBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJz
TG9jazsKLXN0YXRpYyBIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYg
YWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycyhMb2NrSG9sZGVyJiBob2xkZXIpCitzdGF0
aWMgQ2hlY2tlZExvY2sgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2s7CitzdGF0
aWMgSGFzaFNldDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mIGFsbFdvcmtlckds
b2JhbFNjb3BlSWRlbnRpZmllcnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhhbGxXb3JrZXJHbG9iYWxT
Y29wZUlkZW50aWZpZXJzTG9jaykKIHsKLSAgICBVTlVTRURfUEFSQU0oaG9sZGVyKTsKLQogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPj4gaWRlbnRpZmllcnM7CiAgICAgQVNTRVJUKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRl
bnRpZmllcnNMb2NrLmlzTG9ja2VkKCkpOwogICAgIHJldHVybiBpZGVudGlmaWVyczsKQEAgLTkw
LDggKzg5LDggQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRo
cmVhZFR5cGUgdHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGUKICAgICAsIG1fY3JlZGVudGlhbHMo
cGFyYW1zLmNyZWRlbnRpYWxzKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayk7Ci0gICAgICAgIGFsbFdv
cmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2VyKS5hZGQoY29udGV4dElkZW50aWZpZXIo
KSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZp
ZXJzTG9jayB9OworICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKCkuYWRk
KGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIGlmIChtX3RvcE9yaWdpbi0+aGFz
VW5pdmVyc2FsQWNjZXNzKCkpCkBAIC0xMTAsOCArMTA5LDggQEAgV29ya2VyR2xvYmFsU2NvcGU6
On5Xb3JrZXJHbG9iYWxTY29wZSgpCiAgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7CiAKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxsV29ya2VyR2xvYmFsU2NvcGVJ
ZGVudGlmaWVyc0xvY2spOwotICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJz
KGxvY2tlcikucmVtb3ZlKGNvbnRleHRJZGVudGlmaWVyKCkpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2sgfTsKKyAgICAgICAgYWxs
V29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycygpLnJlbW92ZShjb250ZXh0SWRlbnRpZmllcigp
KTsKICAgICB9CiAKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKQEAgLTU4Niw4ICs1ODUs
OCBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpkZWxldGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91
cyBzeW5jaHJvbm91cykKIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUlu
V29ya2VycyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrKTsKLSAgICBmb3IgKGF1
dG8mIGdsb2JhbFNjb3BlSWRlbnRpZmllciA6IGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmll
cnMobG9ja2VyKSkgeworICAgIExvY2tlciBsb2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlk
ZW50aWZpZXJzTG9jayB9OworICAgIGZvciAoYXV0byYgZ2xvYmFsU2NvcGVJZGVudGlmaWVyIDog
YWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycygpKSB7CiAgICAgICAgIHBvc3RUYXNrVG8o
Z2xvYmFsU2NvcGVJZGVudGlmaWVyLCBbc3luY2hyb25vdXNdKGF1dG8mIGNvbnRleHQpIHsKICAg
ICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5yZWxlYXNlTWVt
b3J5KHN5bmNocm9ub3VzKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKaW5kZXggMDA3NWE0ZTUwNDhkYTJiOTZiZmYw
MmNhOGM2YjIzMzZlZmE4MjIyNi4uYThlYTk5YmM1ZmZlZDFhM2NjZDg2MjhlZjljN2EwNTE2ZmFi
YmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhy
ZWFkLmNwcApAQCAtNDAsMTAgKzQwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9j
ayYgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpCitD
aGVja2VkTG9jayBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnNfd29ya2VyT3JXb3JrbGV0VGhyZWFk
c0xvY2s7CisKK0NoZWNrZWRMb2NrJiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29y
a2xldFRocmVhZHNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4g
bXV0ZXg7CisgICAgcmV0dXJuIHNfd29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2s7CiB9CiAKIEhh
c2hTZXQ8V29ya2VyT3JXb3JrbGV0VGhyZWFkKj4mIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29y
a2VyT3JXb3JrbGV0VGhyZWFkcygpCkBAIC01NiwxMyArNTcsMTMgQEAgSGFzaFNldDxXb3JrZXJP
cldvcmtsZXRUaHJlYWQqPiYgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRU
aHJlYWRzKCkKIFdvcmtlck9yV29ya2xldFRocmVhZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsK
ICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkuYWRkKHRoaXMpOwogfQogCiBXb3JrZXJPcldv
cmtsZXRUaHJlYWQ6On5Xb3JrZXJPcldvcmtsZXRUaHJlYWQoKQogewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICBBU1NFUlQod29ya2Vy
T3JXb3JrbGV0VGhyZWFkcygpLmNvbnRhaW5zKHRoaXMpKTsKICAgICB3b3JrZXJPcldvcmtsZXRU
aHJlYWRzKCkucmVtb3ZlKHRoaXMpOwogfQpAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgV29ya2Vy
T3JXb3JrbGV0VGhyZWFkOjpyZXN1bWUoKQogCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkpOworICAgIExvY2tl
ciBsb2NrZXIgeyB3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIH07CiAgICAgZm9yIChhdXRv
KiB3b3JrZXJPcldvcmtsZXRUaHJlYWQgOiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkpIHsKICAg
ICAgICAgd29ya2VyT3JXb3JrbGV0VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW10gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9j
RnJlZU1lbW9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
VGhyZWFkLmgKaW5kZXggNGYyMWFlYjQ1MGM1ZjU1YzgyZjI5ZTM3NGQwZTNjNjY4Njc3Yzk4Yy4u
OTczZmM3MTA0YzYzZmQxYTNkN2U1OGYwNTYyZjEyYjM2MWE3Y2I1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCkBAIC0yNiw5ICsyNiw5IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3Jl
Lmg+CiAKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBzdGF0aWMgSGFz
aFNldDxXb3JrZXJPcldvcmtsZXRUaHJlYWQqPiYgd29ya2VyT3JXb3JrbGV0VGhyZWFkcygpOwot
ICAgIHN0YXRpYyBMb2NrJiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpOworICAgIHN0YXRp
YyBIYXNoU2V0PFdvcmtlck9yV29ya2xldFRocmVhZCo+JiB3b3JrZXJPcldvcmtsZXRUaHJlYWRz
KCkgV1RGX1JFUVVJUkVTX0xPQ0sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAg
c3RhdGljIENoZWNrZWRMb2NrJiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIFdURl9SRVRV
Uk5TX0xPQ0soc193b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jayk7CiAgICAgc3RhdGljIHZvaWQg
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKIHByb3RlY3RlZDoK
QEAgLTgyLDYgKzgyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVTY3Jp
cHRJZk5lY2Vzc2FyeShTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkV2FpdEZv
cldlYkluc3BlY3Rvck9uU3RhcnR1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBz
dGF0aWMgQ2hlY2tlZExvY2sgc193b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jazsKKwogICAgIFN0
cmluZyBtX2lkZW50aWZpZXI7CiAgICAgTG9jayBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2Nv
cGVMb2NrOwogICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gbV9nbG9iYWxT
Y29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
aW5kZXggNWVmMmI2ZWMwOTZiNGZlMGEwZmEzNTA3YjNjMjcxMTQwNzNkZmFkYi4uZTQzY2U0MjJi
YzFjMmViMzE5NjU3YjJmOTFkZGFkYWJlNWY5Y2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTYwLDggKzYwLDggQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpTdGF0ZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3Bl
bmRlZFN0YXRlIHsgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTdGF0ZTo6UnVubmlu
ZyB9OwotTG9jayBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRlZFN0YXRl
TG9jazsKLUNvbmRpdGlvbiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRl
ZFN0YXRlQ2hhbmdlQ29uZGl0aW9uOworQ2hlY2tlZExvY2sgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzdXNwZW5kZWRTdGF0ZUxvY2s7CitDaGVja2VkQ29uZGl0aW9uIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZGVkU3RhdGVDaGFuZ2VDb25kaXRpb247CiAK
IGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Om1vbml0b3JlZERhdGFUeXBlcygpCiB7CkBAIC0zNDksNyArMzQ5LDEzIEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8UmVzb3VyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBBU1NFUlQoc3VzcGVuZGVkU3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja2VyIHN0YXRlTG9ja2Vy
IHsgc3VzcGVuZGVkU3RhdGVMb2NrIH07CisgICAgICAgICAgICBBU1NFUlQoc3VzcGVuZGVkU3Rh
dGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlLT5tZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CiAg
ICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICAvLyBXZSBjYW4gY2FuY2VsIGFueSBwZW5kaW5nIHJlcXVlc3QgdG8gcHJvY2VzcyBzdGF0aXN0
aWNzIHNpbmNlIHdlJ3JlIGRvaW5nIGl0IHN5bmNocm9ub3VzbHkgYmVsb3cuCkBAIC0xNDQ0LDcg
KzE0NTAsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRl
ZFRoaXJkUGFydHlEYXRhKENvbXBsZXRpb25IYW5kbGVyPAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBMb2Nr
ZXI8TG9jaz4gc3RhdGVMb2NrZXIoc3VzcGVuZGVkU3RhdGVMb2NrKTsKKyAgICBMb2NrZXIgc3Rh
dGVMb2NrZXIgeyBzdXNwZW5kZWRTdGF0ZUxvY2sgfTsKICAgICBpZiAoc3VzcGVuZGVkU3RhdGUg
IT0gU3RhdGU6OlJ1bm5pbmcpCiAgICAgICAgIHJldHVybjsKICAgICBzdXNwZW5kZWRTdGF0ZSA9
IFN0YXRlOjpXaWxsU3VzcGVuZDsKQEAgLTE0NTQsNyArMTQ2MCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0CiAgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2VTdG9yZSA6IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjphbGxTdG9yZXMoKSkKICAgICAgICAgICAgIGRhdGFi
YXNlU3RvcmUtPmludGVycnVwdCgpOwogICAgICAgICAKLSAgICAgICAgTG9ja2VyPExvY2s+IHN0
YXRlTG9ja2VyKHN1c3BlbmRlZFN0YXRlTG9jayk7CisgICAgICAgIExvY2tlciBzdGF0ZUxvY2tl
ciB7IHN1c3BlbmRlZFN0YXRlTG9jayB9OwogICAgICAgICBBU1NFUlQoc3VzcGVuZGVkU3RhdGUg
IT0gU3RhdGU6OlN1c3BlbmRlZCk7CiAKICAgICAgICAgaWYgKHN1c3BlbmRlZFN0YXRlICE9IFN0
YXRlOjpXaWxsU3VzcGVuZCkgewpAQCAtMTQ3Myw3ICsxNDc5LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXQKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgp
CiB7Ci0gICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKHN1c3BlbmRlZFN0YXRlTG9jayk7Cisg
ICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgc3VzcGVuZGVkU3RhdGVMb2NrIH07CiAgICAgYXV0byBw
cmV2aW91c1N0YXRlID0gc3VzcGVuZGVkU3RhdGU7CiAgICAgc3VzcGVuZGVkU3RhdGUgPSBTdGF0
ZTo6UnVubmluZzsKICAgICBpZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDFmYTNi
ZTM4NDdmZjgwNGMyNjcwMzE4OTRiMjEyMzFkNmZlNzA0YzYuLjk2M2VhNDczZDMyODg5NzY2NWFm
MmU4OTk5N2ViY2QyYWI2YjVkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZENvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNjEsOSArMzYz
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgV2lsbFN1c3BlbmQsCiAgICAgICAgIFN1c3BlbmRlZAog
ICAgIH07Ci0gICAgc3RhdGljIFN0YXRlIHN1c3BlbmRlZFN0YXRlOwotICAgIHN0YXRpYyBMb2Nr
IHN1c3BlbmRlZFN0YXRlTG9jazsKLSAgICBzdGF0aWMgQ29uZGl0aW9uIHN1c3BlbmRlZFN0YXRl
Q2hhbmdlQ29uZGl0aW9uOworICAgIHN0YXRpYyBDaGVja2VkTG9jayBzdXNwZW5kZWRTdGF0ZUxv
Y2s7CisgICAgc3RhdGljIFN0YXRlIHN1c3BlbmRlZFN0YXRlIFdURl9HVUFSREVEX0JZX0xPQ0so
c3VzcGVuZGVkU3RhdGVMb2NrKTsKKyAgICBzdGF0aWMgQ2hlY2tlZENvbmRpdGlvbiBzdXNwZW5k
ZWRTdGF0ZUNoYW5nZUNvbmRpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA0YTI2NzEyZTZiNmEz
MWFkMGIxMDJlN2RjOGU4ODk1ZmFhNmVjZmU1Li4xMGE3NDMyODZlMDZjMTMzMTkwOTU3YTY5YTAy
MDgzYjU0NTQwNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cApAQCAtMjc0LDE1ICsyNzQsMTAgQEAgc3RhdGljIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCwgQ29ubmVjdGlvbio+JiBhbGxDb25uZWN0aW9ucygpCiAgICAgcmV0dXJuIG1hcDsK
IH0KIAotc3RhdGljIExvY2smIGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jaygpCitzdGF0aWMgQ2hl
Y2tlZExvY2sgYXN5bmNSZXBseUhhbmRsZXJNYXBMb2NrOworc3RhdGljIEhhc2hNYXA8dWludHB0
cl90LCBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqKT4+
PiYgYXN5bmNSZXBseUhhbmRsZXJNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhhc3luY1JlcGx5SGFu
ZGxlck1hcExvY2spCiB7Ci0gICAgc3RhdGljIExvY2sgbG9jazsKLSAgICByZXR1cm4gbG9jazsK
LX0KLQotc3RhdGljIEhhc2hNYXA8dWludHB0cl90LCBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqKT4+PiYgYXN5bmNSZXBseUhhbmRsZXJNYXAoY29uc3Qg
TG9ja0hvbGRlciYpCi17Ci0gICAgQVNTRVJUKGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jaygpLmlz
SGVsZCgpKTsKKyAgICBBU1NFUlQoYXN5bmNSZXBseUhhbmRsZXJNYXBMb2NrLmlzSGVsZCgpKTsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1aW50cHRyX3QsIEhhc2hNYXA8dWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlciopPj4+PiBtYXA7CiAgICAgcmV0
dXJuIG1hcC5nZXQoKTsKIH0KQEAgLTEyMTksOCArMTIxNCw4IEBAIHVpbnQ2NF90IG5leHRBc3lu
Y1JlcGx5SGFuZGxlcklEKCkKIAogdm9pZCBhZGRBc3luY1JlcGx5SGFuZGxlcihDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERlY29kZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihhc3luY1JlcGx5SGFuZGxlck1hcExvY2soKSk7Ci0gICAgYXV0byByZXN1bHQgPSBhc3luY1Jl
cGx5SGFuZGxlck1hcChsb2NrZXIpLmVuc3VyZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
JmNvbm5lY3Rpb24pLCBbXSB7CisgICAgTG9ja2VyIGxvY2tlciB7IGFzeW5jUmVwbHlIYW5kbGVy
TWFwTG9jayB9OworICAgIGF1dG8gcmVzdWx0ID0gYXN5bmNSZXBseUhhbmRsZXJNYXAoKS5lbnN1
cmUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZjb25uZWN0aW9uKSwgW10gewogICAgICAg
ICByZXR1cm4gSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVy
Kik+PigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNO
ZXdFbnRyeSk7CkBAIC0xMjMwLDggKzEyMjUsOCBAQCB2b2lkIGNsZWFyQXN5bmNSZXBseUhhbmRs
ZXJzKGNvbnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVyKik+PiBtYXA7CiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihhc3luY1JlcGx5SGFuZGxlck1hcExvY2soKSk7Ci0gICAgICAg
IG1hcCA9IGFzeW5jUmVwbHlIYW5kbGVyTWFwKGxvY2tlcikudGFrZShyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oJmNvbm5lY3Rpb24pKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFzeW5j
UmVwbHlIYW5kbGVyTWFwTG9jayB9OworICAgICAgICBtYXAgPSBhc3luY1JlcGx5SGFuZGxlck1h
cCgpLnRha2UocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZjb25uZWN0aW9uKSk7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiBoYW5kbGVyIDogbWFwLnZhbHVlcygpKSB7CkBAIC0xMjQyLDgg
KzEyMzcsOCBAQCB2b2lkIGNsZWFyQXN5bmNSZXBseUhhbmRsZXJzKGNvbnN0IENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiAKIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlciopPiB0YWtlQXN5
bmNSZXBseUhhbmRsZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmll
cikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihhc3luY1JlcGx5SGFuZGxlck1hcExvY2soKSk7
Ci0gICAgYXV0byYgbWFwID0gYXN5bmNSZXBseUhhbmRsZXJNYXAobG9ja2VyKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgYXN5bmNSZXBseUhhbmRsZXJNYXBMb2NrIH07CisgICAgYXV0byYgbWFwID0g
YXN5bmNSZXBseUhhbmRsZXJNYXAoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZjb25uZWN0aW9uKSk7CiAgICAgaWYgKGl0ZXJhdG9y
ICE9IG1hcC5lbmQoKSkgewogICAgICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS5pc1ZhbGlkS2V5
KGlkZW50aWZpZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCA3ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZk
MWU0NDUxYjk2YzUyLi42ZmRlZDNiOWMzN2FkZGQxNTEyYTlkOGRhNDNjMWZjNmVjZTRhOTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0
cmVhbS5jcHAKQEAgLTM0LDEzICszNCwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVy
cm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaD4KKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3Rh
dGljIExvY2sgZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jazsKLXN0YXRpYyBIYXNoTWFwPFdl
YlNvY2tldElkZW50aWZpZXIsIFdlYlNvY2tldFN0cmVhbSo+JiBnbG9iYWxXZWJTb2NrZXRTdHJl
YW1NYXAoKQorc3RhdGljIENoZWNrZWRMb2NrIGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2s7
CitzdGF0aWMgSGFzaE1hcDxXZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJTb2NrZXRTdHJlYW0qPiYg
Z2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soZ2xvYmFsV2ViU29j
a2V0U3RyZWFtTWFwTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxX
ZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJTb2NrZXRTdHJlYW0qPj4gZ2xvYmFsTWFwOwogICAgIHJl
dHVybiBnbG9iYWxNYXA7CkBAIC00OCw3ICs0OSw3IEBAIHN0YXRpYyBIYXNoTWFwPFdlYlNvY2tl
dElkZW50aWZpZXIsIFdlYlNvY2tldFN0cmVhbSo+JiBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAo
CiAKIFdlYlNvY2tldFN0cmVhbSogV2ViU29ja2V0U3RyZWFtOjpzdHJlYW1XaXRoSWRlbnRpZmll
cihXZWJTb2NrZXRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2Nr
ZXIoZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2Vy
IHsgZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jayB9OwogICAgIHJldHVybiBnbG9iYWxXZWJT
b2NrZXRTdHJlYW1NYXAoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKQEAgLTU2LDcgKzU3LDcgQEAg
dm9pZCBXZWJTb2NrZXRTdHJlYW06Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiB7CiAgICAgVmVj
dG9yPFJlZlB0cjxXZWJTb2NrZXRTdHJlYW0+PiBzb2NrZXRzOwogICAgIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIoZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jayk7CisgICAgICAgIExv
Y2tlciBzdGF0ZUxvY2tlciB7IGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2sgfTsKICAgICAg
ICAgc29ja2V0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGdsb2JhbFdlYlNvY2tldFN0cmVhbU1h
cCgpLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgc3RyZWFtIDogZ2xvYmFsV2ViU29ja2V0
U3RyZWFtTWFwKCkudmFsdWVzKCkpCiAgICAgICAgICAgICBzb2NrZXRzLnVuY2hlY2tlZEFwcGVu
ZChzdHJlYW0pOwpAQCAtNzEsNyArNzIsNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKCkKICAgICAgICAgc3RyZWFtID0gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrKTsKKyAgICBM
b2NrZXIgc3RhdGVMb2NrZXIgeyBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrIH07CiAgICAg
Z2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwKCkuY2xlYXIoKTsKIH0KIApAQCAtODcsMTQgKzg4LDE0
IEBAIFdlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRTdHJlYW0o
dXJsLCBjYWNoZVBhcnRpdGlvbiwgbV9pZGVudGlmaWVyKSwgMCk7CiAKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVM
b2NrZXIgeyBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrIH07CiAgICAgQVNTRVJUKCFnbG9i
YWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKICAgICBnbG9i
YWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5zZXQobV9pZGVudGlmaWVyLCB0aGlzKTsKIH0KIAogV2Vi
U29ja2V0U3RyZWFtOjp+V2ViU29ja2V0U3RyZWFtKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIg
eyBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrIH07CiAgICAgQVNTRVJUKGdsb2JhbFdlYlNv
Y2tldFN0cmVhbU1hcCgpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOwogICAgIGdsb2JhbFdlYlNv
Y2tldFN0cmVhbU1hcCgpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUludGVybmFsLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUludGVybmFsLm1tCmluZGV4IDNhNzA2YzRhOGQ0OWMxZmM0N2Y4ODk0
ZmFjNWI0MjVmYzc3NDhmNTYuLmQzM2E1N2I2MzMxNDgxYjFjY2UxNjFkMTU5NTZmYjBmODJhZTZk
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSW50ZXJuYWwubW0KQEAgLTMy
LDggKzMyLDggQEAKICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL3J1
bnRpbWVfcm9vdC5oPgorI2ltcG9ydCA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW1wb3J0IDx3dGYv
SGFzaE1hcC5oPgotI2ltcG9ydCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ0LDEwICs0NCwxMSBAQAog
Ly8gV3JhcHBpbmcgV2ViQ29yZSBpbXBsZW1lbnRhdGlvbiBvYmplY3RzCiAKICNpZmRlZiBORUVE
U19XUkFQUEVSX0NBQ0hFX0xPQ0sKLXN0YXRpYyBMb2NrIHdyYXBwZXJDYWNoZUxvY2s7Ci0jZW5k
aWYKLQorc3RhdGljIENoZWNrZWRMb2NrIHdyYXBwZXJDYWNoZUxvY2s7CitzdGF0aWMgSGFzaE1h
cDxET01PYmplY3RJbnRlcm5hbCosIE5TT2JqZWN0ICo+JiB3cmFwcGVyQ2FjaGUoKSBXVEZfUkVR
VUlSRVNfTE9DSyh3cmFwcGVyQ2FjaGVMb2NrKQorI2Vsc2UKIHN0YXRpYyBIYXNoTWFwPERPTU9i
amVjdEludGVybmFsKiwgTlNPYmplY3QgKj4mIHdyYXBwZXJDYWNoZSgpCisjZW5kaWYKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxET01PYmplY3RJbnRlcm5hbCosIE5TT2Jq
ZWN0ICo+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKQEAgLTU2LDcgKzU3LDcgQEAgc3RhdGljIEhh
c2hNYXA8RE9NT2JqZWN0SW50ZXJuYWwqLCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkKIE5T
T2JqZWN0KiBnZXRET01XcmFwcGVyKERPTU9iamVjdEludGVybmFsKiBpbXBsKQogewogI2lmZGVm
IE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3Jh
cHBlckNhY2hlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgd3JhcHBlckNhY2hlTG9j
ayB9OwogI2VuZGlmCiAgICAgcmV0dXJuIHdyYXBwZXJDYWNoZSgpLmdldChpbXBsKTsKIH0KQEAg
LTY0LDcgKzY1LDcgQEAgTlNPYmplY3QqIGdldERPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwq
IGltcGwpCiB2b2lkIGFkZERPTVdyYXBwZXIoTlNPYmplY3QqIHdyYXBwZXIsIERPTU9iamVjdElu
dGVybmFsKiBpbXBsKQogewogI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hlTG9jayk7CisgICAgTG9ja2VyIHN0YXRl
TG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogI2VuZGlmCiAgICAgd3JhcHBlckNhY2hlKCku
c2V0KGltcGwsIHdyYXBwZXIpOwogfQpAQCAtNzIsNyArNzMsNyBAQCB2b2lkIGFkZERPTVdyYXBw
ZXIoTlNPYmplY3QqIHdyYXBwZXIsIERPTU9iamVjdEludGVybmFsKiBpbXBsKQogdm9pZCByZW1v
dmVET01XcmFwcGVyKERPTU9iamVjdEludGVybmFsKiBpbXBsKQogewogI2lmZGVmIE5FRURTX1dS
QVBQRVJfQ0FDSEVfTE9DSwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hl
TG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogI2Vu
ZGlmCiAgICAgd3JhcHBlckNhY2hlKCkucmVtb3ZlKGltcGwpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429254</attachid>
            <date>2021-05-20 18:20:45 -0700</date>
            <delta_ts>2021-05-20 18:29:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226040-20210520182044.patch</filename>
            <type>text/plain</type>
            <size>130040</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI2NDZlYTk2Mjk1ZTg3Njk5OWIxMjZl
OTM1ODk2NmVmMGFlNjM1ODguLmIzNmNmNTBiNjBiNWQyZDM5OGRkYzlhMjA0Yjc0NjFjZTY1MTNk
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hl
Y2tlZExvY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzIHNvIHRoYXQgd2Ug
Y2FuIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6YWxsVGhyZWFkc0xv
Y2spOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6ZGlkRXhpdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9V
UkwuY3BwOgorICAgICAgICAoV1RGOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXVEY6
OnJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOgorICAgICAgICAoV1RG
OjpjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKFdU
Rjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0Yu
Y3BwOgorICAgICAgICAoV1RGOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXVEY6OnBs
YXRmb3JtTGFuZ3VhZ2VEaWRDaGFuZ2UpOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmdWaWV3OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5n
Vmlldzo6YWRvcHRVbmRlcmx5aW5nU3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6
c2V0VW5kZXJseWluZ1N0cmluZyk6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9y
SUNVLmNwcDoKKyAgICAgICAgKFdURjo6Q29sbGF0b3I6OkNvbGxhdG9yKToKKyAgICAgICAgKFdU
Rjo6Q29sbGF0b3I6On5Db2xsYXRvcik6CisKIDIwMjEtMDUtMTkgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2
aWdhdGlvbiBUaW1pbmcgTGV2ZWwgMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1NzdkM2QxNDllN2U1M2UzZjhl
NzRiNGU3ZDY5YTlmNWQ1NGIxYWEuLmZmNmE0NTMzMDgwY2Q2ZGVjMWFjNmFhNDRlNzUzZGFhYjE4
OWY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzUgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExv
Y2tzIHdpdGggQ2hlY2tlZExvY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tz
IHNvIHRoYXQgd2UgY2FuIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lz
LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25D
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VyaWFsaXphdGlv
bkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp+SURCU2VyaWFsaXphdGlvbkNv
bnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbDo6cmVtb3ZlRnJvbURhdGFDaGFubmVsTG9jYWxNYXBJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6aGFuZGxlckZyb21JZGVudGlmaWVyKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldU
Rl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmdldENhY2hlZFZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6Omluc3RhbmNl
c0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2aWNlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQ
aXBlbGluZTo6aW5zdGFuY2VzTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQaXBlbGlu
ZTo6V2ViR1BVUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUGlwZWxpbmU6On5X
ZWJHUFVQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6fldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2
ZVdlYlNvY2tldHNMb2NrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Lmg6CisgICAgICAgICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0SlNXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEpTV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6
cmVnaXN0ZXJBbGdvcml0aG0pOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlUG9ydDo6ZGVyZWYgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBv
cnQ6OmlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6Om5vdGlmeU1lc3NhZ2VBdmFpbGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojpjb250ZXh0SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZW1vdmVGcm9tQ29udGV4dHNNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6fkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xQcm9ncmFtOjppbnN0YW5jZXNMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJv
Z3JhbTo6fldlYkdMUHJvZ3JhbSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp+V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhc0FnZW50OjplbmFibGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2ViU29ja2V0Rm9yUmVxdWVzdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5l
dHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5l
dHdvcmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
TmV0d29ya0FnZW50Lmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6aXNBY2Nlc3NBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWxsb3dBY2Nlc3NUbyk6Cisg
ICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKToK
KyAgICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cGVuZGluZ0Rpc3BhdGNoZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6ZGlzcGF0Y2hPbmVUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsQnVpbHRpblNj
aGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1l
UmVnaXN0ZXJlZEFzTG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVJc0hhbmRsZWRCeVNjaGVtZUhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRy
ZWF0VVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNE
aXNwbGF5SXNvbGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNTZWN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmNhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3Np
bmdDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1
cml0eVBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2No
ZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25l
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0
aW9uQ2FjaGVGb3JVUkxTY2hlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRG
cmFtZU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAg
ICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZmZ0U2V0dXBGb3JTaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVR
VUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVuZ2luZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJlc2V0TWVkaWFFbmdpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6On5QbGF0Zm9ybUNBTGF5ZXJDb2NvYSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFV
SVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVFMUHJldmlld0NvbnZlcnRlckZv
clVSTCk6CisgICAgICAgIChXZWJDb3JlOjphZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZv
clVSTCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5tbToKKyAgICAgICAgKFdURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKCtbV2ViRGF0
YWJhc2VUcmFuc2FjdGlvbkJhY2tncm91bmRUYXNrQ29udHJvbGxlciBzdGFydEJhY2tncm91bmRU
YXNrXSk6CisgICAgICAgICgrW1dlYkRhdGFiYXNlVHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0Nv
bnRyb2xsZXIgZW5kQmFja2dyb3VuZFRhc2tdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9D
Syk6CisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfR1VBUkRF
RF9CWV9MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRJc0RhdGFi
YXNlT3BlbmluZ0ZvcmJpZGRlbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
b3Blbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OldURl9HVUFSREVEX0JZ
X0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpzZXRDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjppbmNyZW1lbnRU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25JblByb2dy
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6
Om5ld1RleHRDb2RlYyk6CisgICAgICAgIChXZWJDb3JlOjphdG9tQ2Fub25pY2FsVGV4dEVuY29k
aW5nTmFtZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2Vycyk6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
T3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Oldvcmtlck9yV29ya2xldFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6On5Xb3JrZXJPcldvcmtsZXRU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjpyZWxlYXNl
RmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMpOgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyT3JXb3JrbGV0VGhyZWFkLmg6CisKIDIwMjEtMDUtMjAgIENocmlzIExvcmQgIDxjbG9yZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIFNwYXRpYWwgbmF2aWdhdGlvbiB0ZXN0cyBmYWls
IHdpdGggYXN5bmMgb3ZlcmZsb3cgc2Nyb2xsaW5nIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTdhYzFl
YWVlZTM0ZmMwYzE4M2VmYjlmZmQ3NjQ4NzQzNGMyYmRlOC4uOTNiMGVlNmQ1ZWRjM2FhOTQwZmYy
MjEzYWY3MDA0YzBmZTViZjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0wNS0y
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgbW9y
ZSBzdGF0aWMgTG9ja3Mgd2l0aCBDaGVja2VkTG9ja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgbW9yZSBzdGF0aWMgTG9ja3Mgd2l0aCBD
aGVja2VkTG9ja3Mgc28gdGhhdCB3ZSBjYW4gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZl
dHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3Vt
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChJUEM6OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKElQQzo6YWRkQXN5
bmNSZXBseUhhbmRsZXIpOgorICAgICAgICAoSVBDOjpjbGVhckFzeW5jUmVwbHlIYW5kbGVycyk6
CisgICAgICAgIChJUEM6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b2NrZXRTdHJlYW06OnN0cmVhbVdpdGhJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U29ja2V0U3RyZWFtOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
Y2tldFN0cmVhbTo6fldlYlNvY2tldFN0cmVhbSk6CisKIDIwMjEtMDUtMjAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
ZXZlcnRpbmcgcjI3NzYwNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBjMzkzOGZh
N2RmMjJmMzhkZDQzNmQyYTdkZDJjNWFjMGY1MDI0ODFjLi4xNTc2YTdhZmRiNTYwYTI5NzY4YWMx
M2FjN2M0ZTM5YzdlNWVhYzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYwNDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIG1vcmUg
c3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzIHNvIHRoYXQgd2UgY2FuIGJlbmVmaXQgZnJv
bSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogRE9NL0RPTUludGVy
bmFsLm1tOgorICAgICAgICAoZ2V0RE9NV3JhcHBlcik6CisgICAgICAgIChhZGRET01XcmFwcGVy
KToKKyAgICAgICAgKHJlbW92ZURPTVdyYXBwZXIpOgorCiAyMDIxLTA1LTIwICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBSZW1vdmUg
W0ltcGxpY2l0VGhpc10gYW5kIFtDdXN0b21Qcm94eVRvSlNPYmplY3RdIGV4dGVuZGVkIGF0dHJp
YnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IGZmMTY3OTAyZmM3YzQwYTQ1NDY0NTMwMzIxOTMx
ZmNhM2M3Mzk1ZDYuLjU3MGI3OGI0OWIzMDlmZjQ4YWQ4OTBhZDE1MzRjOGMyNzVjMjliOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcApAQCAtNDEsNiArNDEsOCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAor
Q2hlY2tlZExvY2sgVGhyZWFkOjpzX2FsbFRocmVhZHNMb2NrOworCiBzdGF0aWMgT3B0aW9uYWw8
c2l6ZV90PiBzdGFja1NpemUoVGhyZWFkVHlwZSB0aHJlYWRUeXBlKQogewogICAgIC8vIFJldHVy
biB0aGUgc3RhY2sgc2l6ZSBmb3IgdGhlIGNyZWF0ZWQgdGhyZWFkIGJhc2VkIG9uIGl0cyB0eXBl
LgpAQCAtOTEsNyArOTMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIH07CiAKLUhhc2hTZXQ8VGhyZWFk
Kj4mIFRocmVhZDo6YWxsVGhyZWFkcyhjb25zdCBMb2NrSG9sZGVyJikKK0hhc2hTZXQ8VGhyZWFk
Kj4mIFRocmVhZDo6YWxsVGhyZWFkcygpCiB7CiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFRocmVhZCo+PiBhbGxUaHJlYWRzOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OwpAQCAtMTAxLDEwICsxMDMsOSBAQCBIYXNoU2V0PFRocmVhZCo+JiBUaHJlYWQ6
OmFsbFRocmVhZHMoY29uc3QgTG9ja0hvbGRlciYpCiAgICAgcmV0dXJuIGFsbFRocmVhZHM7CiB9
CiAKLUxvY2smIFRocmVhZDo6YWxsVGhyZWFkc011dGV4KCkKK0NoZWNrZWRMb2NrJiBUaHJlYWQ6
OmFsbFRocmVhZHNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4g
bXV0ZXg7CisgICAgcmV0dXJuIHNfYWxsVGhyZWFkc0xvY2s7CiB9CiAKIGNvbnN0IGNoYXIqIFRo
cmVhZDo6bm9ybWFsaXplVGhyZWFkTmFtZShjb25zdCBjaGFyKiB0aHJlYWROYW1lKQpAQCAtMjE4
LDkgKzIxOSw5IEBAIFJlZjxUaHJlYWQ+IFRocmVhZDo6Y3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUs
IEZ1bmN0aW9uPHZvaWQoKT4mJiBlbnRyeVBvaW50LCBUaHJlCiAgICAgLy8gY2FsbGVkIFRocmVh
ZDo6ZGlkRXhpdCB0byB1bnJlZ2lzdGVyIGl0c2VsZiBmcm9tIGFsbFRocmVhZHMuIFJlZ2lzdGVy
aW5nIHN1Y2ggYSB0aHJlYWQgd2lsbCByZWdpc3RlciBhIHN0YWxlIHRocmVhZCBwb2ludGVyIHRv
IGFsbFRocmVhZHMsIHdoaWNoIHdpbGwgbm90IGJlIHJlbW92ZWQKICAgICAvLyBldmVuIGFmdGVy
IFRocmVhZCBpcyBkZXN0cm95ZWQuIFJlZ2lzdGVyIGEgdGhyZWFkIG9ubHkgd2hlbiBpdCBoYXMg
bm90IHVucmVnaXN0ZXJlZCBpdHNlbGYgZnJvbSBhbGxUaHJlYWRzIHlldC4KICAgICB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxsVGhyZWFkc011dGV4KCkpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgYWxsVGhyZWFkc0xvY2soKSB9OwogICAgICAgICBpZiAoIXRocmVhZC0+
bV9kaWRVbnJlZ2lzdGVyRnJvbUFsbFRocmVhZHMpCi0gICAgICAgICAgICBhbGxUaHJlYWRzKGxv
Y2tlcikuYWRkKHRocmVhZC5wdHIoKSk7CisgICAgICAgICAgICBhbGxUaHJlYWRzKCkuYWRkKHRo
cmVhZC5wdHIoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCF0aHJlYWQtPnN0YWNrKCkuaXNFbXB0
eSgpKTsKQEAgLTI0NCw4ICsyNDUsOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZW1vdmVUaHJlYWRG
cm9tVGhyZWFkR3JvdXAoKQogdm9pZCBUaHJlYWQ6OmRpZEV4aXQoKQogewogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhbGxUaHJlYWRzTXV0ZXgoKSk7Ci0gICAgICAgIGFs
bFRocmVhZHMobG9ja2VyKS5yZW1vdmUodGhpcyk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBh
bGxUaHJlYWRzTG9jaygpIH07CisgICAgICAgIGFsbFRocmVhZHMoKS5yZW1vdmUodGhpcyk7CiAg
ICAgICAgIG1fZGlkVW5yZWdpc3RlckZyb21BbGxUaHJlYWRzID0gdHJ1ZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmgKaW5kZXggOTQ5NWQ2YzFiMDhhYTRkY2ZjNTBkZDEzMGVhMzNmMTM2NDJiYzk5Ni4u
YzQyZTMwNGYzMmJiNGY3ODJiNjgyMjEyMWQzMDViNjk5YTEzMmY0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDxzdGRpbnQuaD4K
ICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgog
I2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC0xMTYsOCArMTE3LDggQEAgcHVibGljOgogICAgIHN0
YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKIAogICAgIC8vIFNldCBvZiBhbGwgV1RGOjpUaHJlYWQg
Y3JlYXRlZCB0aHJlYWRzLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgSGFzaFNldDxU
aHJlYWQqPiYgYWxsVGhyZWFkcyhjb25zdCBMb2NrSG9sZGVyJik7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBMb2NrJiBhbGxUaHJlYWRzTXV0ZXgoKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIEhhc2hTZXQ8VGhyZWFkKj4mIGFsbFRocmVhZHMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhhbGxUaHJlYWRzTG9jaygpKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENo
ZWNrZWRMb2NrJiBhbGxUaHJlYWRzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19hbGxUaHJlYWRz
TG9jayk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRH
cm91cHMoKTsKIApAQCAtMzI4LDYgKzMyOSw4IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgVGhy
ZWFkKiBjdXJyZW50TWF5QmVOdWxsKCk7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBDaGVja2VkTG9j
ayBzX2FsbFRocmVhZHNMb2NrOworCiAgICAgSm9pbmFibGVTdGF0ZSBtX2pvaW5hYmxlU3RhdGUg
eyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9pc1NodXR0aW5nRG93biA6IDE7CiAgICAgYm9vbCBt
X2RpZEV4aXQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggYTVkNzRhZmVhZWNlZWE3Y2RkZjdiYjE3OWQ0MjNkOWRm
Yzk1MmMwZC4uNGQ2YjBkNTVjMTBhZGI2N2QwZjFlN2VmYjNhMzU0YWE2NTc3ZDA5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRM
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTI2NywxNiArMjY4LDE2
IEBAIHN0YXRpYyB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1ZpZXcgcHJvdG9jb2wp
CiAKICNlbmRpZgogCi1zdGF0aWMgTG9jayBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZ0xvY2s7CitzdGF0aWMgQ2hlY2tlZExvY2sgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmdMb2NrOwogCiB1c2luZyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
ZyA9IEhhc2hNYXA8U3RyaW5nLCB1aW50MTZfdD47Ci1zdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygp
CitzdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpIFdURl9SRVFVSVJFU19MT0NLKGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jaykKIHsKICAgICBzdGF0aWMgRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcqIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXA7CiAgICAg
cmV0dXJuIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXA7CiB9CiAKLXN0YXRpYyBEZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZyYgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcoKQorc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
JiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpIFdURl9SRVFVSVJF
U19MT0NLKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jaykKIHsKICAgICBE
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyomIGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwogICAgIGlmICgh
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcCkKQEAgLTI4NiwyNSArMjg3LDI2IEBAIHN0YXRpYyBE
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyYgZW5zdXJlRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlCiAKIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9y
VGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRl
c3RpbmdMb2NrIH07CiAgICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOwogfQogCiB2b2lkIGNsZWFyRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmcoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrIH07CiAgICAgaWYgKGF1
dG8qIG1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkpCiAgICAgICAg
IG1hcC0+Y2xlYXIoKTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCkKIHsKLSAgICBpZiAoYXV0byogb3ZlcnJpZGVNYXAg
PSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpKSB7Ci0gICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2Nr
KTsKLSAgICAgICAgQVNTRVJUKG92ZXJyaWRlTWFwKTsgLy8gTm8gbmVlZCB0byBudWxsIGNoZWNr
IGFnYWluIGhlcmUgc2luY2Ugb3ZlcnJpZGVNYXAgY2Fubm90IGJlY29tZSBudWxsIGFmdGVyIGJl
aW5nIG5vbi1udWxsLgotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gb3ZlcnJpZGVNYXAtPmZpbmQo
cHJvdG9jb2wudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKLSAgICAgICAgaWYgKGl0ZXJhdG9y
ICE9IG92ZXJyaWRlTWFwLT5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFs
dWU7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmdMb2NrIH07CisgICAgICAgIGlmIChhdXRvKiBvdmVycmlkZU1hcCA9IGRl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
aXRlcmF0b3IgPSBvdmVycmlkZU1hcC0+ZmluZChwcm90b2NvbC50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG92ZXJyaWRlTWFwLT5lbmQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocHJvdG9jb2wp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAppbmRleCA1M2MwZWYwZGMwMGIzOTQyZDM5YjY1
OGE4ZGNjMGQ2ZTA0Y2Y2ZDEzLi5lMDczMTE1NDI5MWJmZDA3YzRjYzE2ZGEwNDJhYWFkYjU5Yzll
M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgPG11dGV4PgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExv
Y2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9jZi9DRkJ1bmRsZVNQSS5oPgpAQCAtMzgsNyAr
MzgsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotc3RhdGljIExvY2sgcHJlZmVycmVkTGFuZ3Vh
Z2VzTXV0ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgcHJlZmVycmVkTGFuZ3VhZ2VzTG9jazsKIAog
I2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyB2b2lkIGxhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFu
Z2UoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqLCBDRlN0cmluZ1JlZiwgY29uc3Qgdm9p
ZCosIENGRGljdGlvbmFyeVJlZikKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIHZvaWQgbGFuZ3Vh
Z2VQcmVmZXJlbmNlc0RpZENoYW5nZShDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCosIENG
U3RyaW4KIH0KICNlbmRpZgogCi1zdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1
YWdlcygpCitzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlcygpIFdURl9S
RVFVSVJFU19MT0NLKHByZWZlcnJlZExhbmd1YWdlc0xvY2spCiB7CiAgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFuZ3VhZ2VzOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgU3RyaW5nIGh0dHBT
dHlsZUxhbmd1YWdlQ29kZShDRlN0cmluZ1JlZiBsYW5ndWFnZSkKIHZvaWQgcGxhdGZvcm1MYW5n
dWFnZURpZENoYW5nZSgpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByZWZl
cnJlZExhbmd1YWdlc0xvY2sgfTsKICAgICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VzKCkuY2xlYXIo
KTsKICAgICB9CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBsaXN0ZW5Gb3JMYW5ndWFnZUNo
YW5nZU5vdGlmaWNhdGlvbnMoKQogCiBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJlZmVycmVkTGFu
Z3VhZ2VzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBwcmVmZXJyZWRMYW5ndWFnZXNMb2Nr
IH07CiAgICAgVmVjdG9yPFN0cmluZz4mIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBwcmVmZXJy
ZWRMYW5ndWFnZXMoKTsKIAogICAgIGlmICh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmlzRW1wdHko
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggM2NiMDE4M2M4MDExYWQ4ZGE4
MmMwZTk0MmI3NjkzODk4MWJkM2RjZS4uM2U4NDYzZjQ5MzA4OWUzNWFkOTc0MzBkNTgzMTliNjMx
Y2Q0NTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMCw4ICszMCw4IEBA
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdW5vcm0y
Lmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExv
Y2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRl
Z2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CkBAIC0zNjAsMTUgKzM2MCwxMSBAQCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5nU3RyaW5nOjpVbmRl
cmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykKIHsKIH0KIAotc3RhdGljIExv
Y2sgdW5kZXJseWluZ1N0cmluZ3NNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9jayB1bmRlcmx5aW5n
U3RyaW5nc0xvY2s7CiAKLXN0YXRpYyBIYXNoTWFwPGNvbnN0IFN0cmluZ0ltcGwqLCBTdHJpbmdW
aWV3OjpVbmRlcmx5aW5nU3RyaW5nKj4mIHVuZGVybHlpbmdTdHJpbmdzKCkKK3N0YXRpYyBIYXNo
TWFwPGNvbnN0IFN0cmluZ0ltcGwqLCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5nU3RyaW5nKj4mIHVu
ZGVybHlpbmdTdHJpbmdzKCkgV1RGX1JFUVVJUkVTX0xPQ0sodW5kZXJseWluZ1N0cmluZ3NMb2Nr
KQogewotICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBTdHJpbmdJ
bXBsKiwgU3RyaW5nVmlldzo6VW5kZXJseWluZ1N0cmluZyo+PiBtYXA7Ci0gICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
LSAgICAgICAgbWFwLmNvbnN0cnVjdCgpOwotICAgIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPGNvbnN0IFN0cmluZ0ltcGwqLCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5nU3Ry
aW5nKj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC0zNzYsNyArMzcyLDcgQEAgdm9p
ZCBTdHJpbmdWaWV3OjppbnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZ1RvQmVEZXN0
cm95ZWQpCiB7CiAgICAgVW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZzsKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodW5kZXJseWluZ1N0cmluZ3NNdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB1bmRlcmx5aW5nU3RyaW5nc0xvY2sgfTsKICAgICAg
ICAgdW5kZXJseWluZ1N0cmluZyA9IHVuZGVybHlpbmdTdHJpbmdzKCkudGFrZSgmc3RyaW5nVG9C
ZURlc3Ryb3llZCk7CiAgICAgICAgIGlmICghdW5kZXJseWluZ1N0cmluZykKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTM5Myw3ICszODksNyBAQCBib29sIFN0cmluZ1ZpZXc6OnVuZGVybHlpbmdT
dHJpbmdJc1ZhbGlkKCkgY29uc3QKIHZvaWQgU3RyaW5nVmlldzo6YWRvcHRVbmRlcmx5aW5nU3Ry
aW5nKFVuZGVybHlpbmdTdHJpbmcqIHVuZGVybHlpbmdTdHJpbmcpCiB7CiAgICAgaWYgKG1fdW5k
ZXJseWluZ1N0cmluZykgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlp
bmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdW5kZXJseWluZ1N0cmlu
Z3NMb2NrIH07CiAgICAgICAgIGlmICghLS1tX3VuZGVybHlpbmdTdHJpbmctPnJlZkNvdW50KSB7
CiAgICAgICAgICAgICBpZiAobV91bmRlcmx5aW5nU3RyaW5nLT5pc1ZhbGlkKSB7CiAgICAgICAg
ICAgICAgICAgdW5kZXJseWluZ1N0cmluZ3MoKS5yZW1vdmUoJm1fdW5kZXJseWluZ1N0cmluZy0+
c3RyaW5nKTsKQEAgLTQxMCw3ICs0MDYsNyBAQCB2b2lkIFN0cmluZ1ZpZXc6OnNldFVuZGVybHlp
bmdTdHJpbmcoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIGlmICghc3RyaW5nKQogICAg
ICAgICB1bmRlcmx5aW5nU3RyaW5nID0gbnVsbHB0cjsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayh1bmRlcmx5aW5nU3RyaW5nc011dGV4KTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IHVuZGVybHlpbmdTdHJpbmdzTG9jayB9OwogICAgICAgICBhdXRvIHJlc3Vs
dCA9IHVuZGVybHlpbmdTdHJpbmdzKCkuYWRkKHN0cmluZywgbnVsbHB0cik7CiAgICAgICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBuZXcgVW5kZXJseWluZ1N0cmluZygqc3RyaW5nKTsKQEAgLTQyNSw3ICs0MjEsNyBAQCB2b2lk
IFN0cmluZ1ZpZXc6OnNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYgb3RoZXJT
dHJpbmcpCiB7CiAgICAgVW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZyA9IG90aGVy
U3RyaW5nLm1fdW5kZXJseWluZ1N0cmluZzsKICAgICBpZiAodW5kZXJseWluZ1N0cmluZykgewot
ICAgICAgICAvLyBJdCdzIHNhZmUgdG8gaW5jIHRoZSByZWZDb3VudCBoZXJlIHdpdGhvdXQgbG9j
a2luZyB1bmRlcmx5aW5nU3RyaW5nc011dGV4CisgICAgICAgIC8vIEl0J3Mgc2FmZSB0byBpbmMg
dGhlIHJlZkNvdW50IGhlcmUgd2l0aG91dCBsb2NraW5nIHVuZGVybHlpbmdTdHJpbmdzTG9jawog
ICAgICAgICAvLyBiZWNhdXNlIFVuZGVybHlpbmdTdHJpbmc6OnJlZkNvdW50IGlzIGEgc3RkOjph
dG9taWNfdWludCwgYW5kIHdlJ3JlCiAgICAgICAgIC8vIGd1YXJhbnRlZWQgdGhhdCB0aGUgU3Ry
aW5nVmlldyB3ZSdyZSBjb3B5aW5nIGl0IGZyb20gd2lsbCBhdCBsZWFzdAogICAgICAgICAvLyBo
YXZlIDEgcmVmIG9uIGl0LCB0aGVyZWJ5IGtlZXBpbmcgaXQgYWxpdmUgcmVnYXJkbGVzcyBvZiB3
aGF0IG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRv
cklDVS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKaW5k
ZXggNjc2NjA3M2M5ZjZiOWNlMGZhNTY0MWZhNWNhYjE1YTliMDFmY2JhZC4uZjE3ZTAyNTlhY2Jh
Y2QxNzJlNmVmNzM2YWVjODk2YTZlMjliYWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUv
aWN1L0NvbGxhdG9ySUNVLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSA8bXV0ZXg+
CiAjaW5jbHVkZSA8dW5pY29kZS91Y29sLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CiAKICNpZiBPUyhEQVJXSU4pICYmIFVTRShDRikKQEAgLTQ1LDEyICs0NSwxMSBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotc3RhdGljIFVDb2xsYXRvciogY2FjaGVkQ29sbGF0b3I7CitzdGF0aWMg
Q2hlY2tlZExvY2sgY2FjaGVkQ29sbGF0b3JMb2NrOworc3RhdGljIFVDb2xsYXRvciogY2FjaGVk
Q29sbGF0b3IgV1RGX0dVQVJERURfQllfTE9DSyhjYWNoZWRDb2xsYXRvckxvY2spOwogc3RhdGlj
IGNoYXIqIGNhY2hlZENvbGxhdG9yTG9jYWxlOwogc3RhdGljIGJvb2wgY2FjaGVkQ29sbGF0b3JT
aG91bGRTb3J0TG93ZXJjYXNlRmlyc3Q7CiAKLXN0YXRpYyBMb2NrIGNhY2hlZENvbGxhdG9yTXV0
ZXg7Ci0KICNpZiAhKE9TKERBUldJTikgJiYgVVNFKENGKSkKIAogc3RhdGljIGlubGluZSBjb25z
dCBjaGFyKiByZXNvbHZlRGVmYXVsdExvY2FsZShjb25zdCBjaGFyKiBsb2NhbGUpCkBAIC0xMDYs
NyArMTA1LDcgQEAgQ29sbGF0b3I6OkNvbGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSwgYm9vbCBz
aG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2FjaGVkQ29s
bGF0b3JNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBjYWNoZWRDb2xsYXRvckxvY2sg
fTsKICAgICAgICAgaWYgKGNhY2hlZENvbGxhdG9yICYmIGxvY2FsZXNNYXRjaChjYWNoZWRDb2xs
YXRvckxvY2FsZSwgbG9jYWxlKSAmJiBjYWNoZWRDb2xsYXRvclNob3VsZFNvcnRMb3dlcmNhc2VG
aXJzdCA9PSBzaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpIHsKICAgICAgICAgICAgIG1fY29sbGF0
b3IgPSBjYWNoZWRDb2xsYXRvcjsKICAgICAgICAgICAgIG1fbG9jYWxlID0gY2FjaGVkQ29sbGF0
b3JMb2NhbGU7CkBAIC0xMzYsNyArMTM1LDcgQEAgQ29sbGF0b3I6OkNvbGxhdG9yKGNvbnN0IGNo
YXIqIGxvY2FsZSwgYm9vbCBzaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpCiAKIENvbGxhdG9yOjp+
Q29sbGF0b3IoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2FjaGVkQ29sbGF0b3JN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNhY2hlZENvbGxhdG9yTG9jayB9OwogICAgIGlm
IChjYWNoZWRDb2xsYXRvcikgewogICAgICAgICB1Y29sX2Nsb3NlKGNhY2hlZENvbGxhdG9yKTsK
ICAgICAgICAgZmFzdEZyZWUoY2FjaGVkQ29sbGF0b3JMb2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uQ29udGV4dC5jcHAKaW5kZXggOWRkN2FiYjU1NTU5NDJkMGM5MWVmODgwMDdjYjY2
ZDFhNzA0ZDU3OC4uNTM3NmRkOTBlZjhjYjIzNjZmMzU2YTBkNjVmZThhM2NmN2NhNzk3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwCkBAIC0yOSwxNCArMjksMTUgQEAK
ICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnRE
YXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+CisjaW5j
bHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNw
YWNlIElEQlNlcnZlciB7CiAKLXN0YXRpYyBMb2NrIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTXV0
ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgc2VyaWFsaXphdGlvbkNvbnRleHRNYXBMb2NrOwogCi1z
dGF0aWMgSGFzaE1hcDxUaHJlYWQqLCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCo+JiBzZXJpYWxp
emF0aW9uQ29udGV4dE1hcChMb2NrZXI8TG9jaz4mKQorc3RhdGljIEhhc2hNYXA8VGhyZWFkKiwg
SURCU2VyaWFsaXphdGlvbkNvbnRleHQqPiYgc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKSBXVEZf
UkVRVUlSRVNfTE9DSyhzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2spCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQq
Pj4gbWFwOwogICAgIHJldHVybiBtYXA7CkBAIC00NSw4ICs0Niw4IEBAIHN0YXRpYyBIYXNoTWFw
PFRocmVhZCosIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4mIHNlcmlhbGl6YXRpb25Db250ZXh0
TWFwKExvY2tlCiBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IElEQlNlcmlhbGl6YXRpb25D
b250ZXh0OjpnZXRPckNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKQogewogICAgIGF1dG8mIHRocmVh
ZCA9IFRocmVhZDo6Y3VycmVudCgpOwotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2VyaWFsaXph
dGlvbkNvbnRleHRNYXBNdXRleCk7Ci0gICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9IHNlcmlh
bGl6YXRpb25Db250ZXh0TWFwKGxvY2tlcikuYWRkKCZ0aHJlYWQsIG51bGxwdHIpOworICAgIExv
Y2tlciBsb2NrZXIgeyBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2sgfTsKKyAgICBhdXRvW2l0
ZXIsIGlzTmV3RW50cnldID0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKS5hZGQoJnRocmVhZCwg
bnVsbHB0cik7CiAgICAgaWYgKGlzTmV3RW50cnkpIHsKICAgICAgICAgUmVmPElEQlNlcmlhbGl6
YXRpb25Db250ZXh0PiBwcm90ZWN0ZWRDb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBJREJTZXJpYWxp
emF0aW9uQ29udGV4dCh0aHJlYWQpKTsKICAgICAgICAgaXRlci0+dmFsdWUgPSBwcm90ZWN0ZWRD
b250ZXh0LnB0cigpOwpAQCAtNTgsMTUgKzU5LDE1IEBAIFJlZjxJREJTZXJpYWxpemF0aW9uQ29u
dGV4dD4gSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVh
CiAKIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp+SURCU2VyaWFsaXphdGlvbkNvbnRleHQoKQog
ewotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2VyaWFsaXphdGlvbkNvbnRleHRNYXBNdXRleCk7
Ci0gICAgQVNTRVJUKHRoaXMgPT0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAobG9ja2VyKS5nZXQo
Jm1fdGhyZWFkKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNlcmlhbGl6YXRpb25Db250ZXh0TWFw
TG9jayB9OworICAgIEFTU0VSVCh0aGlzID09IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkuZ2V0
KCZtX3RocmVhZCkpOwogCiAgICAgaWYgKG1fdm0pIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jaygqbV92bSk7CiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LmNsZWFyKCk7CiAgICAgICAg
IG1fdm0gPSBudWxscHRyOwogICAgIH0KLSAgICBzZXJpYWxpemF0aW9uQ29udGV4dE1hcChsb2Nr
ZXIpLnJlbW92ZSgmbV90aHJlYWQpOworICAgIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkucmVt
b3ZlKCZtX3RocmVhZCk7CiB9CiAKIHZvaWQgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRp
YWxpemVWTSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDliMDAxNGNhYWMzZTI4NGFmOGQyZmJiMmY2NGMzNDdk
M2NmM2I0YTUuLjExNTA2ZmJjYjk4NDc4MmM2N2I3NWZhOWI5NTllOWY0ZDcwMGFiZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKQEAgLTI1Miw4ICsyNTMsOCBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzY2hlZHVsZURp
c3BhdGNoRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hF
dmVudCgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgV1RGTW92ZShldmVudCkpOwogfQog
Ci1zdGF0aWMgTG9jayBzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrOwotc3RhdGljIEhhc2hN
YXA8UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRh
Q2hhbm5lbEhhbmRsZXI+PiYgcnRjRGF0YUNoYW5uZWxMb2NhbE1hcCgpCitzdGF0aWMgQ2hlY2tl
ZExvY2sgc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jazsKK3N0YXRpYyBIYXNoTWFwPFJUQ0Rh
dGFDaGFubmVsTG9jYWxJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxI
YW5kbGVyPj4mIHJ0Y0RhdGFDaGFubmVsTG9jYWxNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX3J0
Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrKQogewogICAgIEFTU0VSVChzX3J0Y0RhdGFDaGFubmVs
TG9jYWxNYXBMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhh
c2hNYXA8UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+Pj4gbWFwOwpAQCAtMjc5LDcgKzI4MCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6ZGV0YWNoKCkKICAg
ICBtX2lzRGV0YWNoZWQgPSB0cnVlOwogICAgIG1fcmVhZHlTdGF0ZSA9IFJUQ0RhdGFDaGFubmVs
U3RhdGU6OkNsb3NlZDsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ydGNEYXRhQ2hh
bm5lbExvY2FsTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfcnRjRGF0YUNoYW5uZWxM
b2NhbE1hcExvY2sgfTsKICAgICBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkuYWRkKGlkZW50aWZp
ZXIoKS5jaGFubmVsSWRlbnRpZmllciwgV1RGTW92ZShtX2hhbmRsZXIpKTsKIAogICAgIHJldHVy
biBtYWtlVW5pcXVlPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+KGlkZW50aWZpZXIoKSwgbGFiZWwo
KS5pc29sYXRlZENvcHkoKSwgb3B0aW9ucygpLCBzdGF0ZSk7CkBAIC0yOTAsMTMgKzI5MSwxMyBA
QCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpyZW1vdmVGcm9tRGF0YUNoYW5uZWxMb2NhbE1hcElmTmVl
ZGVkKCkKICAgICBpZiAoIW1faXNEZXRhY2hlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayB9OwogICAgIHJ0Y0Rh
dGFDaGFubmVsTG9jYWxNYXAoKS5yZW1vdmUoaWRlbnRpZmllcigpLmNoYW5uZWxJZGVudGlmaWVy
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gUlRDRGF0YUNo
YW5uZWw6OmhhbmRsZXJGcm9tSWRlbnRpZmllcihSVENEYXRhQ2hhbm5lbExvY2FsSWRlbnRpZmll
ciBjaGFubmVsSWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfcnRj
RGF0YUNoYW5uZWxMb2NhbE1hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzX3J0Y0RhdGFD
aGFubmVsTG9jYWxNYXBMb2NrIH07CiAgICAgcmV0dXJuIHJ0Y0RhdGFDaGFubmVsTG9jYWxNYXAo
KS50YWtlKGNoYW5uZWxJZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCAxMTc0ZTZiY2RkMDYwZTY2YzYzMzk4
MzJlY2I4ZDFlODFhZDVkODMyLi5jMWRiOGVmYTBiMDBmM2UzMjFhOTBlMjk2NDlkN2U2MzM0MTg3
MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV2luZG93RXZlbnRMb29wLmgiCisjaW5j
bHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
QEAgLTE1MiwxNiArMTUzLDE1IEBAIHN0YXRpYyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21E
YXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlCiB9CiAKIC8vIEZJ
WE1FOiBtb3ZlIGFsbCBndWlkLXJlbGF0ZWQgZnVuY3Rpb25zIHRvIGEgRGF0YWJhc2VWZXJzaW9u
VHJhY2tlciBjbGFzcy4KLXN0YXRpYyBMb2NrIGd1aWRNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9j
ayBndWlkTG9jazsKIAotc3RhdGljIEhhc2hNYXA8RGF0YWJhc2VHVUlELCBTdHJpbmc+JiBndWlk
VG9WZXJzaW9uTWFwKCkKK3N0YXRpYyBIYXNoTWFwPERhdGFiYXNlR1VJRCwgU3RyaW5nPiYgZ3Vp
ZFRvVmVyc2lvbk1hcCgpIFdURl9SRVFVSVJFU19MT0NLKGd1aWRMb2NrKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPERhdGFiYXNlR1VJRCwgU3RyaW5nPj4gbWFwOwogICAg
IHJldHVybiBtYXA7CiB9CiAKLS8vIE5PVEU6IENhbGxlciBtdXN0IGxvY2sgZ3VpZE11dGV4KCku
Ci1zdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlR1VJRFZlcnNpb25NYXAoRGF0YWJhc2VHVUlEIGd1
aWQsIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbikKK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVH
VUlEVmVyc2lvbk1hcChEYXRhYmFzZUdVSUQgZ3VpZCwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9u
KSBXVEZfUkVRVUlSRVNfTE9DSyhndWlkTG9jaykKIHsKICAgICAvLyBOb3RlOiBJdCBpcyBub3Qg
c2FmZSB0byBwdXQgYW4gZW1wdHkgc3RyaW5nIGludG8gdGhlIGd1aWRUb1ZlcnNpb25NYXAoKSBt
YXAuCiAgICAgLy8gVGhhdCdzIGJlY2F1c2UgdGhlIG1hcCBpcyBjcm9zcy10aHJlYWQsIGJ1dCBl
bXB0eSBzdHJpbmdzIGFyZSBwZXItdGhyZWFkLgpAQCAtMTczLDEzICsxNzMsMTMgQEAgc3RhdGlj
IGlubGluZSB2b2lkIHVwZGF0ZUdVSURWZXJzaW9uTWFwKERhdGFiYXNlR1VJRCBndWlkLCBjb25z
dCBTdHJpbmcmIG5ld1ZlcnMKICAgICBndWlkVG9WZXJzaW9uTWFwKCkuc2V0KGd1aWQsIG5ld1Zl
cnNpb24uaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBuZXdWZXJzaW9uLmlzb2xhdGVkQ29weSgpKTsK
IH0KIAotc3RhdGljIEhhc2hNYXA8RGF0YWJhc2VHVUlELCBIYXNoU2V0PERhdGFiYXNlKj4+JiBn
dWlkVG9EYXRhYmFzZU1hcCgpCitzdGF0aWMgSGFzaE1hcDxEYXRhYmFzZUdVSUQsIEhhc2hTZXQ8
RGF0YWJhc2UqPj4mIGd1aWRUb0RhdGFiYXNlTWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soZ3VpZExv
Y2spCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8RGF0YWJhc2VHVUlELCBI
YXNoU2V0PERhdGFiYXNlKj4+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIGlu
bGluZSBEYXRhYmFzZUdVSUQgZ3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBpbmxpbmUgRGF0YWJhc2VHVUlEIGd1aWRG
b3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUp
IFdURl9SRVFVSVJFU19MT0NLKGd1aWRMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VHVUlEPj4gbWFwOwogICAgIHJldHVybiBtYXAuZ2V0
KCkuZW5zdXJlKG1ha2VTdHJpbmcob3JpZ2luLCAnLycsIG5hbWUpLCBbXSB7CkBAIC0yMDEsNyAr
MjAxLDcgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKERhdGFiYXNlQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGUKICAgICAsIG1fZGF0YWJhc2VBdXRob3Jp
emVyKERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKHVucXVhbGlmaWVkSW5mb1RhYmxlTmFtZSkp
CiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAgICAgIG1fZ3VpZCA9IGd1
aWRGb3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSwgbmFtZSk7CiAgICAgICAgIGd1aWRUb0RhdGFiYXNlTWFwKCkuZW5zdXJlKG1fZ3Vp
ZCwgW10gewpAQCAtMzQ4LDcgKzM0OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpw
ZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAKICAg
ICBTdHJpbmcgY3VycmVudFZlcnNpb247CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGd1aWRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBndWlkTG9jayB9Owog
CiAgICAgICAgIGF1dG8gZW50cnkgPSBndWlkVG9WZXJzaW9uTWFwKCkuZmluZChtX2d1aWQpOwog
ICAgICAgICBpZiAoZW50cnkgIT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmVuZCgpKSB7CkBAIC00Mzcs
NyArNDM3LDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZSgpCiAgICAgRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS5yZW1vdmVPcGVuRGF0YWJhc2UoKnRoaXMpOwogCiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAgICAgIGF1dG8gaXQgPSBndWlkVG9EYXRhYmFz
ZU1hcCgpLmZpbmQobV9ndWlkKTsKICAgICAgICAgQVNTRVJUKGl0ICE9IGd1aWRUb0RhdGFiYXNl
TWFwKCkuZW5kKCkpOwpAQCAtNDk1LDE0ICs0OTUsMTQgQEAgdm9pZCBEYXRhYmFzZTo6c2V0RXhw
ZWN0ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIAogU3RyaW5nIERhdGFiYXNlOjpn
ZXRDYWNoZWRWZXJzaW9uKCkgY29uc3QKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1
aWRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGd1aWRMb2NrIH07CiAKICAgICByZXR1cm4g
Z3VpZFRvVmVyc2lvbk1hcCgpLmdldChtX2d1aWQpLmlzb2xhdGVkQ29weSgpOwogfQogCiB2b2lk
IERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgYWN0dWFsVmVyc2lvbikK
IHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IGd1aWRMb2NrIH07CiAKICAgICB1cGRhdGVHVUlEVmVyc2lvbk1hcChtX2d1aWQsIGFj
dHVhbFZlcnNpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHAKaW5kZXggY2EwMWIxMDE1YWQ2MWNjYzM5YWQzMzliOWFkYjdiZTQ2OWYxYjFj
OC4uODI1MGUyYmIzYTYzNDhkYzliNGNhYmE2NGFlNDhiYzYzZGEzZDkyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCkBAIC05NCw2ICs5NCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YkdQVURldmljZSk7CiAKK0NoZWNrZWRMb2NrIFdlYkdQVURldmljZTo6c19pbnN0YW5jZXNMb2Nr
OworCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OnRyeUNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJiBhZGFw
dGVyKQogewogICAgIGlmIChhdXRvIGRldmljZSA9IEdQVURldmljZTo6dHJ5Q3JlYXRlKGFkYXB0
ZXItPm9wdGlvbnMoKSkpIHsKQEAgLTEwNCwxNiArMTA2LDE1IEBAIFJlZlB0cjxXZWJHUFVEZXZp
Y2U+IFdlYkdQVURldmljZTo6dHJ5Q3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFJlCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4m
IFdlYkdQVURldmljZTo6aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKQorSGFzaFNldDxXZWJH
UFVEZXZpY2UqPiYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXMoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFdlYkdQVURldmljZSo+PiBpbnN0YW5jZXM7CiAgICAgcmV0dXJu
IGluc3RhbmNlczsKIH0KIAotTG9jayYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNNdXRleCgpCitD
aGVja2VkTG9jayYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMg
TG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9j
azsKIH0KIAogV2ViR1BVRGV2aWNlOjpXZWJHUFVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlciwgUmVmPEdQVURl
dmljZT4mJiBkZXZpY2UpCkBAIC0xMjgsOCArMTI5LDggQEAgV2ViR1BVRGV2aWNlOjpXZWJHUFVE
ZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNvbnN0IFdlYkdQVUFk
YXAKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSk7CiAK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAg
ICAgaW5zdGFuY2VzKGxvY2spLmFkZCh0aGlzKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGlu
c3RhbmNlc0xvY2soKSB9OworICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcyk7CiAgICAgfQog
fQogCkBAIC0xMzgsOCArMTM5LDggQEAgV2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2aWNlKCkKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKCp0aGlz
KTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKFdlYkdQVVBpcGVsaW5lOjppbnN0
YW5jZXNNdXRleCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IFdlYkdQVVBpcGVsaW5l
OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVVBpcGVs
aW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IFdlYkdQ
VVBpcGVsaW5lOjppbnN0YW5jZXMoKSkgewogICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlID09
IHRoaXMpIHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgYW55IFdlYkdQVVBpcGVs
aW5lIGZyb20gdGhlIGluc3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBzdGlsbCBleGlzdC4KICAg
ICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRpb24gd2l0aCBhIFdlYkdQ
VSBkZXZpY2UuCkBAIC0xNDksOSArMTUwLDkgQEAgV2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2aWNl
KCkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRl
eCgpKTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlcyhsb2NrKS5jb250YWlucyh0aGlzKSk7Ci0g
ICAgICAgIGluc3RhbmNlcyhsb2NrKS5yZW1vdmUodGhpcyk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgQVNTRVJUKGluc3RhbmNlcygpLmNvbnRh
aW5zKHRoaXMpKTsKKyAgICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRleCBj
OWNjM2M0ZTQzNWM5MjY0YjI4MTRkM2Q2M2MyNDBmY2I2NjcwNmMzLi43MGYxYjFkYTcyOTNkZmZh
MTMxYTI1NWQ1YjY3NWZhYzhhMGYyYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYkdQVUFk
YXB0ZXIuaCIKICNpbmNsdWRlICJXZWJHUFVRdWV1ZS5oIgogI2luY2x1ZGUgIldlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KQEAgLTg0LDggKzg1LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJl
ZlB0cjxXZWJHUFVEZXZpY2U+IHRyeUNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVm
PGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8V2ViR1BVRGV2
aWNlKj4mIGluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGlu
c3RhbmNlc011dGV4KCk7CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4mIGluc3Rh
bmNlcygpIFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7CisgICAgc3RhdGljIENo
ZWNrZWRMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2luc3RhbmNlc0xv
Y2spOwogCiAgICAgY29uc3QgV2ViR1BVQWRhcHRlciYgYWRhcHRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYWRhcHRlci5nZXQoKTsgfQogICAgIEdQVURldmljZSYgZGV2aWNlKCkgeyByZXR1cm4gbV9k
ZXZpY2UuZ2V0KCk7IH0KQEAgLTEyNiw2ICsxMjcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
aXNwYXRjaFVuY2FwdHVyZWRFcnJvcihHUFVFcnJvciYmKTsKIAorICAgIHN0YXRpYyBDaGVja2Vk
TG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKICAgICBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4gbV9h
ZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmUuY3BwCmluZGV4IGVlNGFiMTBhZjhiNDAyZTYxMDllODM3ZjMzZDBkNWY0NzY5YjA4ZWIuLjIw
NWYxZWQxZjdiN2M2M2I3NzUxYjEzNDkxM2RmNDg3ZmNlMmNkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHAKQEAgLTM5LDE2ICszOSwx
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBX
ZWJHUFVEZXZpY2UqPiYgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVy
JikKK0NoZWNrZWRMb2NrIFdlYkdQVVBpcGVsaW5lOjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hN
YXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPiYgV2ViR1BVUGlwZWxpbmU6Omluc3Rh
bmNlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViR1BVUGlwZWxp
bmUqLCBXZWJHUFVEZXZpY2UqPj4gaW5zdGFuY2VzOwogICAgIHJldHVybiBpbnN0YW5jZXM7CiB9
CiAKLUxvY2smIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNNdXRleCgpCitDaGVja2VkTG9jayYg
V2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc0xvY2soKQogewotICAgIHN0YXRpYyBMb2NrIG11dGV4
OwotICAgIHJldHVybiBtdXRleDsKKyAgICByZXR1cm4gc19pbnN0YW5jZXNMb2NrOwogfQogCiBX
ZWJHUFVQaXBlbGluZTo6V2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVy
cm9yU2NvcGVzJiBlcnJvclNjb3BlcykKQEAgLTU4LDggKzU5LDggQEAgV2ViR1BVUGlwZWxpbmU6
OldlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJy
b3JTY29wZXMKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBpbnN0
YW5jZXMobG9jaykuYWRkKHRoaXMsICZkZXZpY2UpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGluc3RhbmNlcygpLmFkZCh0aGlzLCAmZGV2aWNl
KTsKICAgICB9CiB9CiAKQEAgLTY4LDkgKzY5LDkgQEAgV2ViR1BVUGlwZWxpbmU6On5XZWJHUFVQ
aXBlbGluZSgpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQ
VVBpcGVsaW5lKCp0aGlzKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGluc3Rh
bmNlc011dGV4KCkpOwotICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKGxvY2spLmNvbnRhaW5zKHRo
aXMpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxvY2spLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBBU1NFUlQoaW5zdGFuY2Vz
KCkuY29udGFpbnModGhpcykpOworICAgICAgICBpbnN0YW5jZXMoKS5yZW1vdmUodGhpcyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxp
bmUuaAppbmRleCBkN2YxMWEzMzYxNDQyMmIxNzU3ZjkwNGY5NWM3NTU1ZjEzYmEyYzAzLi45OTlh
OThhZTUyYTZiYjA5YWI0YWVmNjc0YWQxMzRiNjg5MDI2YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmgKQEAgLTMwLDggKzMwLDggQEAKICNp
bmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkdQVU9iamVj
dEJhc2UuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsOCArNDMsOCBAQCBjbGFzcyBX
ZWJHUFVQaXBlbGluZSA6IHB1YmxpYyBHUFVPYmplY3RCYXNlLCBwdWJsaWMgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdQVVBpcGVsaW5lKCk7
CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQVURldmljZSo+JiBp
bnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNN
dXRleCgpOworICAgIHN0YXRpYyBIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNl
Kj4mIGluc3RhbmNlcygpIFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7CisgICAg
c3RhdGljIENoZWNrZWRMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2lu
c3RhbmNlc0xvY2spOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbXB1dGVQaXBlbGluZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogICAgIFdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIEdQVUVycm9yU2NvcGVz
Jik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIENoZWNrZWRMb2NrIHNfaW5zdGFuY2VzTG9jazsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOGQzNGM2MjgyOWQ3MTdhZTE4ZDZkNjlj
MDE1ZmI3NGJkMTk1ODZhOS4uZmU4MGQ0MDEwMDVlNTE0YjljOWY0ZDQ0YzA3ZTk3YzA4ZGQxNTg0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKQEAgLTc2LDYgKzc2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoV2ViU29ja2V0KTsKIAorQ2hlY2tlZExvY2sgV2ViU29ja2V0OjpzX2Fs
bEFjdGl2ZVdlYlNvY2tldHNMb2NrOworCiBjb25zdCBzaXplX3QgbWF4UmVhc29uU2l6ZUluQnl0
ZXMgPSAxMjM7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkUHJvdG9jb2xDaGFyYWN0ZXIo
VUNoYXIgY2hhcmFjdGVyKQpAQCAtMTQ2LDE3ICsxNDgsMTUgQEAgV2ViU29ja2V0OjpXZWJTb2Nr
ZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fZXh0ZW5zaW9ucyhl
bXB0eVN0cmluZygpKQogICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJldlYlNvY2tldDo6cmVz
dW1lVGltZXJGaXJlZCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2soYWxsQWN0aXZlV2ViU29ja2V0
c011dGV4KCkpOwotCi0gICAgYWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKS5hZGQodGhpcyk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgfTsKKyAgICBhbGxB
Y3RpdmVXZWJTb2NrZXRzKCkuYWRkKHRoaXMpOwogfQogCiBXZWJTb2NrZXQ6On5XZWJTb2NrZXQo
KQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2ZVdlYlNvY2tldHNN
dXRleCgpKTsKLQotICAgICAgICBhbGxBY3RpdmVXZWJTb2NrZXRzKGxvY2spLnJlbW92ZSh0aGlz
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgfTsK
KyAgICAgICAgYWxsQWN0aXZlV2ViU29ja2V0cygpLnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAg
ICBpZiAobV9jaGFubmVsKQpAQCAtMTg4LDE2ICsxODgsMTUgQEAgRXhjZXB0aW9uT3I8UmVmPFdl
YlNvY2tldD4+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGMKICAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIHVybCwgVmVjdG9yPFN0cmluZz4geyAx
LCBwcm90b2NvbCB9KTsKIH0KIAotSGFzaFNldDxXZWJTb2NrZXQqPiYgV2ViU29ja2V0OjphbGxB
Y3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQorSGFzaFNldDxXZWJTb2NrZXQqPiYg
V2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxXZWJTb2NrZXQqPj4gYWN0aXZlV2ViU29ja2V0czsKICAgICByZXR1cm4g
YWN0aXZlV2ViU29ja2V0czsKIH0KIAotTG9jayYgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2Nr
ZXRzTXV0ZXgoKQorQ2hlY2tlZExvY2smIFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c0xv
Y2soKQogewotICAgIHN0YXRpYyBMb2NrIG11dGV4OwotICAgIHJldHVybiBtdXRleDsKKyAgICBy
ZXR1cm4gc19hbGxBY3RpdmVXZWJTb2NrZXRzTG9jazsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
V2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGFiZDIyNWJlNThmYzk4ZDI2Mjlk
NjY5N2NiZGQ4ZGFlZjg1NmYzYjMuLjcyNzA2OTk3MjU5M2YwMTZlZTQxMzcxODBhYjg3NDBlZTc2
ODc1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCisjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cHJvdG9jb2xzKTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAotICAgIHN0YXRpYyBIYXNo
U2V0PFdlYlNvY2tldCo+JiBhbGxBY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsK
LSAgICBzdGF0aWMgTG9jayYgYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCk7CisgICAgc3RhdGlj
IEhhc2hTZXQ8V2ViU29ja2V0Kj4mIGFsbEFjdGl2ZVdlYlNvY2tldHMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhzX2FsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKTsKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2sm
IGFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2FsbEFjdGl2ZVdl
YlNvY2tldHNMb2NrKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBDT05ORUNUSU5HID0g
MCwKQEAgLTEzMSw2ICsxMzIsNyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBjbGFzcyBCaW5hcnlU
eXBlIHsgQmxvYiwgQXJyYXlCdWZmZXIgfTsKIAorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2Fs
bEFjdGl2ZVdlYlNvY2tldHNMb2NrOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbD4gbV9jaGFubmVsOwogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IENPTk5FQ1RJTkcgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCBiZDUy
Y2I0OTE4ODZiZWU0Y2Q2Mzk4N2YyMjAzZDQyYjdiNDVhOWNlLi4wZjVjMjlhNGFmYzQ1NmZjZWRk
YTI0YmI0ZWFiZGFhYmJiNjEzZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
V2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC00OSw4ICs0OSw4IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlSW50ZXJuYWwuaD4KKyNpbXBvcnQgPHd0
Zi9DaGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9M
b2NrLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9UaHJl
YWRpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzAsMTEgKzcwLDEx
IEBAIHVzaW5nIEpTQzo6bWFrZVNvdXJjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgTG9jayBzcGluTG9jazsKK3N0YXRpYyBDaGVja2VkTG9jayB3cmFwcGVyQ2FjaGVMb2NrOwog
c3RhdGljIENyZWF0ZVdyYXBwZXJGdW5jdGlvbiBjcmVhdGVET01XcmFwcGVyRnVuY3Rpb247CiBz
dGF0aWMgRGlzY29ubmVjdFdpbmRvd1dyYXBwZXJGdW5jdGlvbiBkaXNjb25uZWN0V2luZG93V3Jh
cHBlckZ1bmN0aW9uOwogCi1zdGF0aWMgSGFzaE1hcDxKU09iamVjdCosIE5TT2JqZWN0ICo+JiB3
cmFwcGVyQ2FjaGUoKQorc3RhdGljIEhhc2hNYXA8SlNPYmplY3QqLCBOU09iamVjdCAqPiYgd3Jh
cHBlckNhY2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0sod3JhcHBlckNhY2hlTG9jaykKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxKU09iamVjdCosIE5TT2JqZWN0ICo+PiBtYXA7
CiAgICAgcmV0dXJuIG1hcDsKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIEhhc2hNYXA8SlNPYmpl
Y3QqLCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkKIE5TT2JqZWN0ICpnZXRKU1dyYXBwZXIo
SlNPYmplY3QqIGltcGwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBMb2Nr
SG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB3cmFwcGVyQ2Fj
aGVMb2NrIH07CiAKICAgICBOU09iamVjdCogd3JhcHBlciA9IHdyYXBwZXJDYWNoZSgpLmdldChp
bXBsKTsKICAgICByZXR1cm4gd3JhcHBlciA/IHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFz
ZSgpIDogbmlsOwpAQCAtOTIsMjEgKzkyLDIxIEBAIE5TT2JqZWN0ICpnZXRKU1dyYXBwZXIoSlNP
YmplY3QqIGltcGwpCiB2b2lkIGFkZEpTV3JhcHBlcihOU09iamVjdCAqd3JhcHBlciwgSlNPYmpl
Y3QqIGltcGwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBMb2NrSG9sZGVy
IGhvbGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB3cmFwcGVyQ2FjaGVMb2Nr
IH07CiAKICAgICB3cmFwcGVyQ2FjaGUoKS5zZXQoaW1wbCwgd3JhcHBlcik7CiB9CiAKIHZvaWQg
cmVtb3ZlSlNXcmFwcGVyKEpTT2JqZWN0KiBpbXBsKQogewotICAgIExvY2tIb2xkZXIgaG9sZGVy
KCZzcGluTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZXJDYWNoZUxvY2sgfTsKIAog
ICAgIHdyYXBwZXJDYWNoZSgpLnJlbW92ZShpbXBsKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3Zl
SlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZShOU09iamVjdCogd3JhcHBlciwgSlNPYmplY3QqIGlt
cGwpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIoJnNwaW5Mb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogCiAgICAgaWYgKFt3cmFwcGVyIHJldGFpbkNvdW50
XSA9PSAxKQogICAgICAgICB3cmFwcGVyQ2FjaGUoKS5yZW1vdmUoaW1wbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAppbmRleCAyMmYy
NzdhOGFkOTVlYjBkNjQ1ZTRiNGQ4NDA5NDg1MDU0Njg0ODBkLi4zNjQ2YjQ3Y2I1MWYyZDMyNTRi
ZjE5OGQyNWUxNjE1MWJkOTMzZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9D
cnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKQEAgLTI5LDE2ICsyOSwxNyBAQAogI2lmIEVOQUJM
RShXRUJfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtLmgiCi0jaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgTG9jayByZWdpc3RyeU11dGV4OwotCiBDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeSYgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5PiByZWdpc3RyeTsK
KyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5PiBy
ZWdpc3RyeTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICByZWdpc3RyeS5jb25zdHJ1Y3QoKTsKKyAg
ICB9KTsKICAgICByZXR1cm4gcmVnaXN0cnk7CiB9CiAKQEAgLTUyLDcgKzUzLDcgQEAgT3B0aW9u
YWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6Omlk
ZW50aWZpZXIoY29uc3QgU3QKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJlZ2lzdHJ5TXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIC8vIEZJWE1FOiBIb3cg
aXMgaXQgaGVscGZ1bCB0byBjYWxsIGlzb2xhdGVkQ29weSBvbiB0aGUgYXJndW1lbnQgdG8gZmlu
ZD8KICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzLmZpbmQobmFtZS5pc29sYXRl
ZENvcHkoKSk7CkBAIC02NCw3ICs2NSw3IEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKGNvbnN0IFN0CiAKIFN0
cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWdpc3RyeU11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBhdXRvIGNvbnRydWN0
b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVy
KSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCkBAIC03NSw3
ICs3Niw3IEBAIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgYXV0byBjb250cnVjdG9yID0g
bV9jb25zdHJ1Y3RvcnMuZmluZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpOwog
ICAgIGlmIChjb250cnVjdG9yID09IG1fY29uc3RydWN0b3JzLmVuZCgpKQpAQCAtODYsNyArODcs
NyBAQCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Y3Jl
YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5OjpyZWdpc3RlckFsZ29yaXRobShjb25zdCBTdHJpbmcmIG5hbWUsIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtQ29uc3RydWN0b3IgY29uc3Ry
dWN0b3IpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWdpc3RyeU11dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBBU1NFUlQoIW1faWRlbnRpZmllcnMu
Y29udGFpbnMobmFtZSkpOwogICAgIEFTU0VSVCghbV9jb25zdHJ1Y3RvcnMuY29udGFpbnMoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50aWZpZXIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCmluZGV4IGZlYTNjY2E5MjNlNDc5MTJhODRm
MDY4NzkzODgxMGYzOTgxMjU0YzUuLmNiOTE4NjUxM2U2MDBmMDJmOWFjMmVmNTk3YWE5OTczNDI5
MzdhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIENyeXB0b0FsZ29y
aXRobTsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5KTsKLSAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+OworICAgIGZyaWVuZCBjbGFzcyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+OwogCiBwdWJsaWM6CiAg
ICAgc3RhdGljIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaW5nbGV0b24oKTsKQEAgLTYyLDgg
KzYzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJBbGdvcml0aG0oY29uc3QgU3Ry
aW5nJiBuYW1lLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1Db25z
dHJ1Y3Rvcik7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2lkZW50aWZpZXJzOwotICAgIEhhc2hNYXA8
dW5zaWduZWQsIHN0ZDo6cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUNvbnN0cnVjdG9yPj4g
bV9jb25zdHJ1Y3RvcnM7CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOworICAgIEhhc2hNYXA8U3Ry
aW5nLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
IG1faWRlbnRpZmllcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIEhhc2hNYXA8
dW5zaWduZWQsIHN0ZDo6cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUNvbnN0cnVjdG9yPj4g
bV9jb25zdHJ1Y3RvcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggYmJjMDg1
YTI5YTM1NmM1NTAwODBjMzU4NDM2NmY1OGNiMTI0YTZlNC4uYjc2NTg2MmU2Yzc2NWM4OWUxY2I1
OWViZDhhZjMxYTYyOGYxMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CkBAIC00Myw4ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKE1lc3NhZ2VQb3J0KTsKIAotc3RhdGljIExvY2sgYWxsTWVzc2Fn
ZVBvcnRzTG9jazsKLXN0YXRpYyBIYXNoTWFwPE1lc3NhZ2VQb3J0SWRlbnRpZmllciwgTWVzc2Fn
ZVBvcnQqPiYgYWxsTWVzc2FnZVBvcnRzKCkKK3N0YXRpYyBDaGVja2VkTG9jayBhbGxNZXNzYWdl
UG9ydHNMb2NrOworc3RhdGljIEhhc2hNYXA8TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBNZXNzYWdl
UG9ydCo+JiBhbGxNZXNzYWdlUG9ydHMoKSBXVEZfUkVRVUlSRVNfTE9DSyhhbGxNZXNzYWdlUG9y
dHNMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPE1lc3NhZ2VQb3J0
SWRlbnRpZmllciwgTWVzc2FnZVBvcnQqPj4gbWFwOwogICAgIHJldHVybiBtYXA7CkBAIC02MSw3
ICs2Miw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRlcmVmKCkgY29uc3QKICAgICAvLyBUaGlzIGFs
bG93cyBpc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlIGFuZCBub3RpZnlNZXNz
YWdlQXZhaWxhYmxlIHRvIGVhc2lseSBxdWVyeSB0aGUgbWFwIGFuZCBtYW5pcHVsYXRlIE1lc3Nh
Z2VQb3J0IGluc3RhbmNlcy4KIAogICAgIGlmICghLS1tX3JlZkNvdW50KSB7Ci0gICAgICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIoYWxsTWVzc2FnZVBvcnRzTG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAKICAgICAgICAgaWYgKG1fcmVmQ291bnQp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC03NiwxNCArNzcsMTQgQEAgdm9pZCBNZXNzYWdlUG9y
dDo6ZGVyZWYoKSBjb25zdAogCiBib29sIE1lc3NhZ2VQb3J0Ojppc0V4aXN0aW5nTWVzc2FnZVBv
cnRMb2NhbGx5UmVhY2hhYmxlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmll
cikKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAgYXV0byogcG9ydCA9
IGFsbE1lc3NhZ2VQb3J0cygpLmdldChpZGVudGlmaWVyKTsKICAgICByZXR1cm4gcG9ydCAmJiBw
b3J0LT5pc0xvY2FsbHlSZWFjaGFibGUoKTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydDo6bm90aWZ5
TWVzc2FnZUF2YWlsYWJsZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlkZW50aWZpZXIp
CiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxNZXNzYWdlUG9ydHNMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgYWxsTWVzc2FnZVBvcnRzTG9jayB9OwogICAgIGlmIChhdXRvKiBwb3J0
ID0gYWxsTWVzc2FnZVBvcnRzKCkuZ2V0KGlkZW50aWZpZXIpKQogICAgICAgICBwb3J0LT5tZXNz
YWdlQXZhaWxhYmxlKCk7CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBNZXNzYWdlUG9ydDo6TWVzc2Fn
ZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29u
c3QgTQogewogICAgIExPRyhNZXNzYWdlUG9ydHMsICJDcmVhdGVkIE1lc3NhZ2VQb3J0ICVzICgl
cCkgaW4gcHJvY2VzcyAlIiBQUkl1NjQsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCB0aGlzLCBQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKLSAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAgYWxsTWVzc2FnZVBvcnRzKCkuc2V0KG1f
aWRlbnRpZmllciwgdGhpcyk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFdlYWtQdHJGYWN0b3J5
IGdldHMgaW5pdGlhbGl6ZWQgZWFnZXJseSBvbiB0aGUgdGhyZWFkIHRoZSBNZXNzYWdlUG9ydCBn
ZXRzIGNvbnN0cnVjdGVkIG9uIGZvciB0aHJlYWQtc2FmZXR5IHJlYXNvbnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggODhhYWNmMzU1ODE1
YjYzNDRhN2M4MGQxNmE3YWU5MTg5MWE0Y2E0Yy4uNGE1ODY2ZGE3NGQyMDU2ODk2ZTJhNDY4NDA3
ZTU0MGJhYjYyOTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
UHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KQEAgLTc5LDggKzgwLDggQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLXN0YXRp
YyBMb2NrIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jazsKLXN0YXRpYyBIYXNoTWFw
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kj4mIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3N0YXRpYyBDaGVja2VkTG9jayBh
bGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2s7CitzdGF0aWMgSGFzaE1hcDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+JiBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpIFdURl9SRVFVSVJFU19MT0NLKGFsbFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRzTWFwTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCo+PiBjb250ZXh0czsKICAgICBBU1NFUlQoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNN
YXBMb2NrLmlzTG9ja2VkKCkpOwpAQCAtMTEzLDcgKzExNCw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVy
KCkgY29uCiB7CiAgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKICAgICBpZiAoIW1fY29u
dGV4dElkZW50aWZpZXIpIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRF
eGVjdXRpb25Db250ZXh0c01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrIH07CiAKICAgICAgICAgbV9jb250ZXh0SWRlbnRp
ZmllciA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogCkBA
IC0xMjYsNyArMTI3LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKSBjb24KIHZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKCkKIHsKICAgICBpZiAobV9jb250
ZXh0SWRlbnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICAgICAgQVNTRVJUKGFsbFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllcikpOwogICAg
ICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZShtX2NvbnRleHRJZGVu
dGlmaWVyKTsKICAgICB9CkBAIC0xNjIsNyArMTYzLDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBp
ZiAobV9jb250ZXh0SWRlbnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFs
bFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyhtX2Nv
bnRleHRJZGVudGlmaWVyKSwKICAgICAgICAgICAgICJBIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
c3ViY2xhc3MgaW5zdGFuY2UgaW1wbGVtZW50aW5nIHBvc3RUYXNrIHNob3VsZCBoYXZlIGFscmVh
ZHkgcmVtb3ZlZCBpdHNlbGYgZnJvbSB0aGUgbWFwIik7CiAgICAgfQpAQCAtNjIzLDcgKzYyNCw3
IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXIqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVuc3Vy
ZVNlcnZpY2VXb3JrZXJDb250YWluZXIoKQogCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnBvc3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRlbnRpZmllciwg
VGFzayYmIHRhc2spCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRp
b25Db250ZXh0c01hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRp
b25Db250ZXh0c01hcExvY2sgfTsKICAgICBhdXRvKiBjb250ZXh0ID0gYWxsU2NyaXB0RXhlY3V0
aW9uQ29udGV4dHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CiAKICAgICBpZiAoIWNvbnRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDQxZmQ0MzA1N2VlYjJmYTMzMTdjNjlhYWNjYTI4YmFlMzczNjM0YTIuLmI2
NjkxYTIyZGNiMzU4ZGI2NDA0ZWVlYmY3YzQ3OGEyMjUwN2MzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00
NiwzMCArNDYsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCk7CiAKLUhhc2hTZXQ8Q2FudmFzUmVuZGVy
aW5nQ29udGV4dCo+JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoY29uc3QgTG9j
a0hvbGRlciYpCitDaGVja2VkTG9jayBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpzX2luc3RhbmNl
c0xvY2s7CisKK0hhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0OjppbnN0YW5jZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQqPj4gaW5zdGFuY2VzOwogICAgIHJldHVybiBpbnN0
YW5jZXM7CiB9CiAKLUxvY2smIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc011dGV4
KCkKK0NoZWNrZWRMb2NrJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKCkK
IHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJu
IHNfaW5zdGFuY2VzTG9jazsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMpCiAgICAgOiBtX2NhbnZhcyhjYW52YXMp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwotICAgIGluc3RhbmNl
cyhsb2NrKS5hZGQodGhpcyk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9
OworICAgIGluc3RhbmNlcygpLmFkZCh0aGlzKTsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6fkNhbnZhc1JlbmRlcmluZ0NvbnRleHQoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhpbnN0
YW5jZXNNdXRleCgpKTsKLSAgICBBU1NFUlQoaW5zdGFuY2VzKGxvY2spLmNvbnRhaW5zKHRoaXMp
KTsKLSAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOworICAgIExvY2tlciBsb2NrZXIg
eyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICBBU1NFUlQoaW5zdGFuY2VzKCkuY29udGFpbnModGhp
cykpOworICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0OjpyZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDZmNjg4ZDZlYzRhYjg5OTUzYzViZjQ3ZDQx
NDFlMmI1MzEzMzVmNzkuLjRkNTlhM2YwYzhmNmU1MGZjNTBjMTM3MmMzYjRlZWNkN2Y5MzJkOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYW52YXNCYXNlLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAt
NTEsOCArNTIsOCBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FudmFzUmVuZGVyaW5nQ29udGV4
dCgpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBpbnN0
YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNNdXRl
eCgpOworICAgIHN0YXRpYyBIYXNoU2V0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQqPiYgaW5zdGFu
Y2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKKyAgICBzdGF0aWMgQ2hl
Y2tlZExvY2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNfaW5zdGFuY2VzTG9j
ayk7CiAKICAgICB2b2lkIHJlZigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVyZWYoKTsK
QEAgLTExMSw2ICsxMTIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc0FjdGl2ZUluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIgeyBmYWxzZSB9OwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBD
aGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBDYW52YXNCYXNlJiBtX2NhbnZhczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3Jh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCmluZGV4
IGY2NTI1MTQ3MTkwZDkxZDM0YjM0YjcxNWY2ZDMwMDgzMjNhMjI4MGUuLmE5ZTY1MmMxNDIxZWM3
ZTUyYzkzYTQ0ZTUyZmJmODIzNGMwOGIwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xQcm9ncmFtLmNwcApAQCAtNDUsMTYgKzQ1LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotSGFzaE1hcDxXZWJHTFByb2dyYW0qLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Kj4mIFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKQorQ2hlY2tlZExv
Y2sgV2ViR0xQcm9ncmFtOjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hNYXA8V2ViR0xQcm9ncmFt
KiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBXZWJHTFByb2dyYW06Omluc3RhbmNlcygp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+PiBpbnN0YW5jZXM7CiAgICAgcmV0dXJuIGluc3RhbmNl
czsKIH0KIAotTG9jayYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXNNdXRleCgpCitDaGVja2VkTG9j
ayYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRl
eDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsKIH0KIAog
UmVmPFdlYkdMUHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY3R4KQpAQCAtNjksOCArNzAsOCBAQCBXZWJHTFByb2dyYW06OldlYkdMUHJvZ3Jh
bShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5j
ZXNNdXRleCgpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxvY2spLmFkZCh0aGlzLCAmY3R4KTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBpbnN0YW5j
ZXMoKS5hZGQodGhpcywgJmN0eCk7CiAgICAgfQogCiAgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGlj
c0NvbnRleHRHTCgpLT5jcmVhdGVQcm9ncmFtKCkpOwpAQCAtODEsOSArODIsOSBAQCBXZWJHTFBy
b2dyYW06On5XZWJHTFByb2dyYW0oKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERlc3Ryb3lXZWJHTFByb2dyYW0oKnRoaXMpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGxvY2soaW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZXMobG9jayku
Y29udGFpbnModGhpcykpOwotICAgICAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIEFTU0VS
VChpbnN0YW5jZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgICAgIGluc3RhbmNlcygpLnJlbW92
ZSh0aGlzKTsKICAgICB9CiAKICAgICBpZiAoIWhhc0dyb3VwT3JDb250ZXh0KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IDZjOWUzNGVkZGU1MGRiYzNj
ZmRkMmExMWY5MTk5ZjIxY2RkZTQ2MjYuLjEwMDBkMTg5ZDFmM2FmY2UyYTE2OTI5YWZiYzFiZDhl
ZDI5NGQ0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJv
Z3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCkBA
IC0yOSw5ICsyOSw5IEBACiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5o
IgogI2luY2x1ZGUgIldlYkdMU2hhcmVkT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRM
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0
aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2ViR0xQcm9ncmFtPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAg
IHZpcnR1YWwgfldlYkdMUHJvZ3JhbSgpOwogCi0gICAgc3RhdGljIEhhc2hNYXA8V2ViR0xQcm9n
cmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBpbnN0YW5jZXMoY29uc3QgV1RGOjpM
b2NrSG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNlc011dGV4KCk7CisgICAgc3Rh
dGljIEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBp
bnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkpOworICAgIHN0YXRp
YyBDaGVja2VkTG9jayYgaW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5j
ZXNMb2NrKTsKIAogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogCkBAIC05OCw2
ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhH
cmFwaGljc0NvbnRleHRHTCopOwogICAgIHZvaWQgY2FjaGVJbmZvSWZOZWVkZWQoKTsKIAorICAg
IHN0YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBWZWN0b3I8R0NHTGlu
dD4gbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnM7CiAKICAgICBHQ0dMaW50IG1fbGlua1N0YXR1cyB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYzEwYzQ2NDM3OTU5NWFiMGM3NzE2Y2YyZThmOGUy
NWNmYmU3NzM5MS4uYzI0YTg0ZGE4ZDMwNjg3YzYyZWU5YzU4MmE0ZGRkOWEyODBiNTIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKQEAgLTEwNTIsOCArMTA1Miw4IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6On5XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKCkKICAgICB9CiAKICAgICB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9jayhXZWJHTFByb2dyYW06Omluc3RhbmNlc011dGV4KCkpOwotICAg
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogV2ViR0xQcm9ncmFtOjppbnN0YW5jZXMobG9jaykpIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzTG9jaygpIH07
CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJHTFByb2dyYW06Omluc3RhbmNlcygpKSB7
CiAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT0gdGhpcykgewogICAgICAgICAgICAgICAg
IC8vIERvbid0IHJlbW92ZSBhbnkgV2ViR0xQcm9ncmFtIGZyb20gdGhlIGluc3RhbmNlcyBsaXN0
LCBhcyB0aGV5IG1heSBzdGlsbCBleGlzdC4KICAgICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92
ZSB0aGUgYXNzb2NpYXRpb24gd2l0aCBhIFdlYkdMIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDNkODM5YjQxYTNkOGRmOTVhYzA3
YTVjYzUwYmFhYjkwMDExNzg3MmQuLjBmZWQxZmIyYmIzZGE1ZDNhMjAxYzdmY2ExYjUwOGQxNzQ3
Yzg4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3Bw
CkBAIC0xNzAsOCArMTcwLDggQEAgSFRNTENhbnZhc0VsZW1lbnQqIEluc3BlY3RvckNhbnZhczo6
Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIC0+IEhUTUxDYW52YXNFbGVtZW50KiB7CiAg
ICAgICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgpOwogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhDYW52YXNSZW5kZXJpbmdDb250
ZXh0OjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbnZh
c1JlbmRlcmluZ0NvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMobG9j
aykpIHsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDo6aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52
YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBjYW52YXNJ
ZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBkZXZpY2UpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1lbnQ7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMjcxLDggKzI3MSw4IEBAIEhhc2hTZXQ8RWxlbWVudCo+IEluc3BlY3RvckNh
bnZhczo6Y2xpZW50Tm9kZXMoKSBjb25zdAogCiAgICAgICAgICAgICBIYXNoU2V0PEVsZW1lbnQq
PiBjYW52YXNFbGVtZW50Q2xpZW50czsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTXV0ZXgoKSk7
Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAgICAgICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9
OworICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA6IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYW52YXNFbGVtZW50ID0gY2FudmFzSWZDb250ZXh0TWF0Y2hlc0RldmljZSgq
Y2FudmFzUmVuZGVyaW5nQ29udGV4dCwgZGV2aWNlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNhbnZhc0VsZW1lbnRDbGllbnRzLmFkZChjYW52YXNFbGVtZW50KTsKICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDUyNmQwZjc0MTZjNWZiYzE5YWY5YmY3OTgyYTYwNGMw
YWU5MGJkN2QuLmIxNjc4NDgwOTA4MmU2OWMyMWYzZjk2MGUyNmUwMWNkZTc2N2E1ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuY3BwCkBAIC0xNDAsOCArMTQwLDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgfTsKIAogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc011
dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8qIGNv
bnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKSkgewogI2lmIEVOQUJM
RShXRUJHUFUpCiAgICAgICAgICAgICAvLyBUaGUgYWN0dWFsICJjb250ZXh0IiBmb3IgV2ViR1BV
IGlzIHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2FudmFzPi4KICAgICAgICAgICAgIGlm
IChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkKQEAgLTE1NSw4ICsxNTUsOCBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkK
IAogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2Vi
R1BVRGV2aWNlOjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgZm9yIChhdXRvKiBkZXZpY2Ug
OiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcyhsb2NrKSkgeworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvKiBk
ZXZpY2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICBpZiAoZXhp
c3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAg
ICAgICAgICAgICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7CiAgICAgICAgIH0KQEAgLTE2
NSw4ICsxNjUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52
YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgbG9jayhXZWJHTFByb2dyYW06Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBm
b3IgKGF1dG8mIFtwcm9ncmFtLCBjb250ZXh0V2ViR0xCYXNlXSA6IFdlYkdMUHJvZ3JhbTo6aW5z
dGFuY2VzKGxvY2spKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHTFByb2dyYW06Omlu
c3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8mIFtwcm9ncmFtLCBjb250ZXh0V2Vi
R0xCYXNlXSA6IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgIGlmIChj
b250ZXh0V2ViR0xCYXNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoY29udGV4dFdlYkdMQmFzZS0+
Y2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICAgICAg
ZGlkQ3JlYXRlV2ViR0xQcm9ncmFtKCpjb250ZXh0V2ViR0xCYXNlLCAqcHJvZ3JhbSk7CiAgICAg
ICAgIH0KQEAgLTE3NSw4ICsxNzUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc011dGV4
KCkpOwotICAgICAgICBmb3IgKGF1dG8mIFtwaXBlbGluZSwgZGV2aWNlXSA6IFdlYkdQVVBpcGVs
aW5lOjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVVBp
cGVsaW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvJiBbcGlwZWxpbmUs
IGRldmljZV0gOiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgIGlm
IChkZXZpY2UgJiYgZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkgJiYgcGlwZWxpbmUtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBkaWRDcmVh
dGVXZWJHUFVQaXBlbGluZSgqZGV2aWNlLCAqcGlwZWxpbmUpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggZTlkMzVkM2IyMGU5MWVlOWJhMTkyZDQxMWQwNDI5NTM1YTYyZThkNS4u
NDMwMDEyYzVmMTdhYjdlMzMyZDkyMGU5OTM4NWI4MzJlZDVhYzVjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcApAQCAtODI2LDkgKzgyNiw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0RW5hYmxlZE5ldHdvcmtBZ2VudCh0aGlzKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07CiAK
LSAgICAgICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQgOiBhY3RpdmVXZWJTb2NrZXRzKGxvY2spKSB7
CisgICAgICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cygpKSB7CiAg
ICAgICAgICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEwMDksOSArMTAwOSw5
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoCiAKIFdlYlNvY2tldCogSW5zcGVjdG9yTmV0d29y
a0FnZW50Ojp3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQoY29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6OlJl
cXVlc3RJZCYgcmVxdWVzdElkKQogewotICAgIExvY2tIb2xkZXIgbG9jayhXZWJTb2NrZXQ6OmFs
bEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgV2ViU29ja2V0
OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07CiAKLSAgICBmb3IgKGF1dG8qIHdlYlNvY2tl
dCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKKyAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6
IGFjdGl2ZVdlYlNvY2tldHMoKSkgewogICAgICAgICBpZiAoSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQod2ViU29ja2V0LT5jaGFubmVsKCktPnByb2dyZXNzSWRlbnRpZmllcigpKSA9PSBy
ZXF1ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm4gd2ViU29ja2V0OwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCmluZGV4IDkzMzYwMTc2MTY2NzQxN2ViZTVkZTMwMTU4Njg2OWNjYzY0ZmMzZGEuLjhiMmUy
OTY3MDVhNWFkN2IzN2I1NWE0ZmI2NjdmZjBkOGQzMmY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9SZWd1bGFyRXhwcmVzc2lvbi5oPgpAQCAtMTMzLDcgKzEzNCw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TG9hZGVySWQgbG9hZGVy
SWRlbnRpZmllcihEb2N1bWVudExvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVy
KikgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFdlYlNvY2tldCo+IGFjdGl2ZVdlYlNvY2tldHMo
Y29uc3QgTG9ja0hvbGRlciYpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxXZWJTb2NrZXQqPiBh
Y3RpdmVXZWJTb2NrZXRzKCkgV1RGX1JFUVVJUkVTX0xPQ0soV2ViU29ja2V0OjphbGxBY3RpdmVX
ZWJTb2NrZXRzTG9jaygpKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlc291cmNlQ2FjaGlu
Z0Rpc2FibGVkSW50ZXJuYWwoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEZvcmNlQnVmZmVyaW5nTmV0d29ya1Jlc291cmNl
RGF0YSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRleCA2NTJhNzlmNTcxNDU1YWM5
NmNkMDRhMjQwZWM0ZDliNzY1Y2ZjZjMxLi5iYjRmNmJhN2MyY2M2MTg1ODU4NzE5NmM5NzNhMmMz
ODZmODhmNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC02NSwxMSArNjUsMTEgQEAgUHJvdG9j
b2w6Ok5ldHdvcms6OkZyYW1lSWQgUGFnZU5ldHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKERv
Y3VtZW50TG9hZGVyKiBsb2EKICAgICByZXR1cm4geyB9OwogfQogCi1WZWN0b3I8V2ViU29ja2V0
Kj4gUGFnZU5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9sZGVyJiBs
b2NrKQorVmVjdG9yPFdlYlNvY2tldCo+IFBhZ2VOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNvY2tl
dHMoKQogewogICAgIFZlY3RvcjxXZWJTb2NrZXQqPiB3ZWJTb2NrZXRzOwogCi0gICAgZm9yIChh
dXRvKiB3ZWJTb2NrZXQgOiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsK
KyAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0
cygpKSB7CiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IHdlYlNvY2tldC0+Y2hhbm5lbCgpOwogICAg
ICAgICBpZiAoIWNoYW5uZWwpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5oCmlu
ZGV4IGMxMjk5OTZjMWJmYjQ1MWQ3N2RkNTIwZjRhMDg5YWZkNTU4M2MwZjAuLjRiNjZjMmVhYTk4
NDE0NGFkYTI2ZGNhMDM5NzBlODAxYjQyYjFlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuaApAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OkxvYWRlcklkIGxvYWRlcklkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIGZyYW1lSWRlbnRpZmllcihEb2N1bWVu
dExvYWRlciopOwotICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRzKGNvbnN0
IExvY2tIb2xkZXImKTsKKyAgICBWZWN0b3I8V2ViU29ja2V0Kj4gYWN0aXZlV2ViU29ja2V0cygp
IFdURl9SRVFVSVJFU19MT0NLKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKSk7
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJvb2wpOwogICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpGcmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmluZ05ldHdvcmtSZXNv
dXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggZWY4NjgzZmI2MjI4MThiYjU4ZmU5Mzc0NTEwZWQ1OTVhODg1NWFhMS4uNGUxYTYy
N2YwOWIxYmFlMGY3MGQxN2NlYzExNzNiOWU0YjU1ZWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdl
bnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIFdvcmtl
ck5ldHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKikKICAgICByZXR1
cm4geyB9OwogfQogCi1WZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29ya0FnZW50OjphY3Rp
dmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQorVmVjdG9yPFdlYlNvY2tldCo+IFdvcmtl
ck5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cygpCiB7CiAgICAgLy8gRklYTUU6IDxodHRw
czovL3dlYmtpdC5vcmcvYi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJlY3RseSBkaXNwbGF5
IHdvcmtlcidzIFdlYlNvY2tldHMKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQu
aAppbmRleCBlNWRmZjlkMWEzNGQ5YmM0M2NiMjczMGE4MzA0NjBiNzc5ZTQ1YTJiLi5kZTE0ZGVk
MmFiYmUxNmIwNzVhNDJhYmJkNzA4YjdkZDM4MDViMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQu
aApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OkxvYWRlcklkIGxvYWRlcklkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIq
KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIGZyYW1lSWRlbnRp
ZmllcihEb2N1bWVudExvYWRlciopOwotICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJT
b2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBWZWN0b3I8V2ViU29ja2V0Kj4gYWN0aXZl
V2ViU29ja2V0cygpIFdURl9SRVFVSVJFU19MT0NLKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29j
a2V0c0xvY2soKSk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFs
KGJvb2wpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmlu
Z05ldHdvcmtSZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDE3ODJhYTBhMmNhNmJiYmE3MDEyMTQxMTVj
MGYyMjAwNTlkMzY2NzcuLjUxODMzOTM1YWFlZWZhZjU4OTAyZTRiOWM2NmEwMjRhOWQ1ZDlkZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBh
dHRlcm4uaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDYsMTYgKzQ3LDE2IEBAIHN0YXRp
YyBTZWN1cml0eVBvbGljeTo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9IFNlY3Vy
aXR5UG9saWN5OjpBbGxvd0xvCiB0eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nlc3NFbnRyeT4gT3Jp
Z2luQWNjZXNzQWxsb3dsaXN0OwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVf
cHRyPE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAotc3RhdGljIExv
Y2sgb3JpZ2luQWNjZXNzTWFwTG9jazsKLXN0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFj
Y2Vzc01hcCgpCitzdGF0aWMgQ2hlY2tlZExvY2sgb3JpZ2luQWNjZXNzTWFwTG9jazsKK3N0YXRp
YyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpIFdURl9SRVFVSVJFU19MT0NLKG9y
aWdpbkFjY2Vzc01hcExvY2spCiB7CiAgICAgQVNTRVJUKG9yaWdpbkFjY2Vzc01hcExvY2suaXNI
ZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcmlnaW5BY2Nlc3NNYXA+IG9yaWdp
bkFjY2Vzc01hcDsKICAgICByZXR1cm4gb3JpZ2luQWNjZXNzTWFwOwogfQogCi1zdGF0aWMgTG9j
ayBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jazsKLXN0YXRpYyBWZWN0b3I8VXNlckNvbnRlbnRVUkxQ
YXR0ZXJuPiYgb3JpZ2luQWNjZXNzUGF0dGVybnMoKQorc3RhdGljIENoZWNrZWRMb2NrIG9yaWdp
bkFjY2Vzc1BhdHRlcm5Mb2NrOworc3RhdGljIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+
JiBvcmlnaW5BY2Nlc3NQYXR0ZXJucygpIFdURl9SRVFVSVJFU19MT0NLKG9yaWdpbkFjY2Vzc1Bh
dHRlcm5Mb2NrKQogewogICAgIEFTU0VSVChvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jay5pc0hlbGQo
KSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRl
cm4+PiBvcmlnaW5BY2Nlc3NQYXR0ZXJuczsKQEAgLTIwNSw3ICsyMDYsNyBAQCBib29sIFNlY3Vy
aXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9y
aWdpbiwgY29uc3QgUwogewogICAgIEFTU0VSVCh0YXJnZXRPcmlnaW4uZXF1YWwoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh0YXJnZXRVUkwpLnB0cigpKSk7CiAgICAgewotICAgICAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgICAgICBpZiAoT3JpZ2luQWNjZXNzQWxsb3ds
aXN0KiBsaXN0ID0gb3JpZ2luQWNjZXNzTWFwKCkuZ2V0KGFjdGl2ZU9yaWdpbi50b1N0cmluZygp
KSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICpsaXN0KSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGVudHJ5Lm1hdGNoZXNPcmlnaW4odGFyZ2V0T3JpZ2luKSkKQEAgLTIxMyw3ICsy
MTQsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgUwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzUGF0dGVybkxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jayB9OwogICAgIGZv
ciAoY29uc3QgYXV0byYgcGF0dGVybiA6IG9yaWdpbkFjY2Vzc1BhdHRlcm5zKCkpIHsKICAgICAg
ICAgaWYgKHBhdHRlcm4ubWF0Y2hlcyh0YXJnZXRVUkwpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNj
ZXNzQWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KIAogICAgIFN0
cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKIAotICAgIExvY2tl
cjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9yaWdpbkFjY2Vzc01hcExvY2sgfTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKICAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4oKTsKQEAgLTI1MSw3ICsyNTIsNyBA
QCB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShj
b25zdCBTZWN1cml0eU9yaWdpbiYgc291cgogCiAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IHNv
dXJjZU9yaWdpbi50b1N0cmluZygpOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5B
Y2Nlc3NNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9
OwogICAgIE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFwKCk7CiAgICAgT3Jp
Z2luQWNjZXNzTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKHNvdXJjZVN0cmluZyk7CiAgICAg
aWYgKGl0ID09IG1hcC5lbmQoKSkKQEAgLTI2OCwxMyArMjY5LDEzIEBAIHZvaWQgU2VjdXJpdHlQ
b2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBzb3VyCiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3ds
aXN0cygpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgIG9yaWdpbkFj
Y2Vzc01hcCgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFsbG93QWNjZXNz
VG8oY29uc3QgVXNlckNvbnRlbnRVUkxQYXR0ZXJuJiBwYXR0ZXJuKQogewotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzUGF0dGVybkxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jayB9OwogICAgIG9yaWdpbkFjY2Vzc1BhdHRlcm5zKCku
YXBwZW5kKHBhdHRlcm4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDk5MzVhZGMzZDNiMDFjMzBlOWZk
NmM4NWI1MmE2ZmJhMWNkYTQzNzMuLjliYzZkMjk3N2VmOTEyMzhlZmEwMTVjNmNkYzM4MzE1MGFh
OGMzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2Fn
ZVRocmVhZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VV
c2FnZVRocmVhZENvY29hLm1tCkBAIC0xNjEsOCArMTYxLDggQEAgdm9pZCBSZXNvdXJjZVVzYWdl
VGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0
YSYgZGEKIAogICAgIEhhc2hTZXQ8bWFjaF9wb3J0X3Q+IGtub3duV2ViS2l0VGhyZWFkczsKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soVGhyZWFkOjphbGxUaHJlYWRzTXV0
ZXgoKSk7Ci0gICAgICAgIGZvciAoYXV0byogdGhyZWFkIDogVGhyZWFkOjphbGxUaHJlYWRzKGxv
Y2tlcikpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFRocmVhZDo6YWxsVGhyZWFkc0xvY2so
KSB9OworICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IFRocmVhZDo6YWxsVGhyZWFkcygpKSB7
CiAgICAgICAgICAgICBtYWNoX3BvcnRfdCBtYWNoVGhyZWFkID0gdGhyZWFkLT5tYWNoVGhyZWFk
KCk7CiAgICAgICAgICAgICBpZiAoTUFDSF9QT1JUX1ZBTElEKG1hY2hUaHJlYWQpKQogICAgICAg
ICAgICAgICAgIGtub3duV2ViS2l0VGhyZWFkcy5hZGQobWFjaFRocmVhZCk7CkBAIC0xNzEsNyAr
MTcxLDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRh
KEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYgZGEKIAogICAgIEhhc2hNYXA8bWFjaF9wb3J0
X3QsIFN0cmluZz4ga25vd25Xb3JrZXJUaHJlYWRzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVh
ZHNMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV29ya2VyT3JXb3JrbGV0VGhyZWFk
Ojp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byogdGhy
ZWFkIDogV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkpIHsK
ICAgICAgICAgICAgIC8vIElnbm9yZSB3b3JrZXIgdGhyZWFkcyB0aGF0IGhhdmUgbm90IGJlZW4g
ZnVsbHkgc3RhcnRlZCB5ZXQuCiAgICAgICAgICAgICBpZiAoIXRocmVhZC0+dGhyZWFkKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRM
aW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRM
aW51eC5jcHAKaW5kZXggYjY1OWI3NzRmMjY0MDEzYTE3Y2Y1NmU2YzEzMTAyNWVlY2NiY2UwYS4u
MDJlNWQ0ODljYWI0M2Y4MzkzMzNkNDliZDI0YTU5NjkyOTg5NDdjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcApA
QCAtMjMzLDggKzIzMyw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1Db2xs
ZWN0Q1BVRGF0YShKU0M6OlZNKiwgUmVzb3VyY2VVc2FnZURhdGEmIGRhCiAKICAgICBIYXNoU2V0
PHBpZF90PiBrbm93bldlYktpdFRocmVhZHM7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKFRocmVhZDo6YWxsVGhyZWFkc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8q
IHRocmVhZCA6IFRocmVhZDo6YWxsVGhyZWFkcyhsb2NrZXIpKSB7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBUaHJlYWQ6OmFsbFRocmVhZHNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvKiB0
aHJlYWQgOiBUaHJlYWQ6OmFsbFRocmVhZHMoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gaWQg
PSB0aHJlYWQtPmlkKCkpCiAgICAgICAgICAgICAgICAga25vd25XZWJLaXRUaHJlYWRzLmFkZChp
ZCk7CiAgICAgICAgIH0KQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJl
YWQ6OnBsYXRmb3JtQ29sbGVjdENQVURhdGEoSlNDOjpWTSosIFJlc291cmNlVXNhZ2VEYXRhJiBk
YQogCiAgICAgSGFzaE1hcDxwaWRfdCwgU3RyaW5nPiBrbm93bldvcmtlclRocmVhZHM7CiAgICAg
ewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFdvcmtlck9yV29ya2xldFRocmVhZDo6
d29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBX
b3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAg
ICAgICAgZm9yIChhdXRvKiB0aHJlYWQgOiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9y
V29ya2xldFRocmVhZHMoKSkgewogICAgICAgICAgICAgLy8gSWdub3JlIHdvcmtlciB0aHJlYWRz
IHRoYXQgaGF2ZSBub3QgYmVlbiBmdWxseSBzdGFydGVkIHlldC4KICAgICAgICAgICAgIGlmICgh
dGhyZWFkLT50aHJlYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dl
bmVyaWNUYXNrUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tR
dWV1ZS5jcHAKaW5kZXggNTE2NTMxNGNmZWExMmEwMTAwYzgyYzI2YmNjY2YyMjJkMDJjN2E1Zi4u
MmY1YWY0N2M3ZTI2OTQ2ZjNlYzFmZmY0MDhmYTdhYWJjMzc4M2U1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTMyLDYgKzMyLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitDaGVja2VkTG9jayBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46
OnNfc2hhcmVkTG9jazsKKwogVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpUYXNrRGlzcGF0Y2hlcigp
CiB7CiB9CkBAIC0zOSw3ICs0MSw3IEBAIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6VGFza0Rpc3Bh
dGNoZXIoKQogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKEZ1bmN0aW9uPHZv
aWQoKT4mJiBmdW5jdGlvbikKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soc2hhcmVkTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNfc2hhcmVkTG9jayB9
OwogICAgICAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogICAg
ICAgICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQobWFrZVdlYWtQdHIoKnRoaXMpKTsKICAg
ICB9CkBAIC01NywxMiArNTksNiBAQCBUaW1lciYgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFy
ZWRUaW1lcigpCiAgICAgcmV0dXJuIHRpbWVyLmdldCgpOwogfQogCi1Mb2NrJiBUYXNrRGlzcGF0
Y2hlcjxUaW1lcj46OnNoYXJlZExvY2soKQotewotICAgIHN0YXRpYyBMb2NrIGxvY2s7Ci0gICAg
cmV0dXJuIGxvY2s7Ci19Ci0KIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1l
ckZpcmVkKCkKIHsKICAgICBBU1NFUlQoIXNoYXJlZFRpbWVyKCkuaXNBY3RpdmUoKSk7CkBAIC03
MSw4ICs2Nyw4IEBAIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZpcmVk
KCkKICAgICAvLyBxdWV1ZWQgYnkgdGhlIEpTIGV2ZW50cyBoYW5kbGVycyB0aGF0IGFyZSBleGVj
dXRlZCBpbiB0aGUgbG9vcCBiZWxvdy4KICAgICBEZXF1ZTxXZWFrUHRyPFRhc2tEaXNwYXRjaGVy
PFRpbWVyPj4+IHF1ZXVlZERpc3BhdGNoZXJzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhzaGFyZWRMb2NrKCkpOwotICAgICAgICBxdWV1ZWREaXNwYXRjaGVycyA9IFdU
Rk1vdmUocGVuZGluZ0Rpc3BhdGNoZXJzKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19z
aGFyZWRMb2NrIH07CisgICAgICAgIHF1ZXVlZERpc3BhdGNoZXJzID0gc3RkOjpleGNoYW5nZShw
ZW5kaW5nRGlzcGF0Y2hlcnMoKSwgeyB9KTsKICAgICB9CiAgICAgd2hpbGUgKCFxdWV1ZWREaXNw
YXRjaGVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgV2Vha1B0cjxUYXNrRGlzcGF0Y2hlcjxUaW1l
cj4+IGRpc3BhdGNoZXIgPSBxdWV1ZWREaXNwYXRjaGVycy50YWtlRmlyc3QoKTsKQEAgLTg1LDIx
ICs4MSwxNSBAQCB2b2lkIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6c2hhcmVkVGltZXJGaXJlZCgp
CiAKIERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4mIFRhc2tEaXNwYXRjaGVy
PFRpbWVyPjo6cGVuZGluZ0Rpc3BhdGNoZXJzKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4+IGRpc3BhdGNoZXJz
OwotCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGRpc3BhdGNoZXJzLmNvbnN0cnVjdCgpOwotICAg
IH0pOwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcXVlPFdlYWtQdHI8VGFza0Rpc3Bh
dGNoZXI8VGltZXI+Pj4+IGRpc3BhdGNoZXJzOwogICAgIHJldHVybiBkaXNwYXRjaGVycy5nZXQo
KTsKIH0KIAogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OmRpc3BhdGNoT25lVGFzaygpCiB7
Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IHRhc2s7CisgICAgRnVuY3Rpb248dm9pZCgpPiB0
YXNrOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzaGFyZWRMb2NrKCkp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19zaGFyZWRMb2NrIH07CiAgICAgICAgIEFTU0VS
VCghbV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKTsKICAgICAgICAgdGFzayA9IG1fcGVuZGluZ1Rh
c2tzLnRha2VGaXJzdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0dlbmVyaWNUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNU
YXNrUXVldWUuaAppbmRleCA0ZTliNDBkOWI1MWU1ZjE2MTIwMzYwZjUzNTViYTg0OGMzNDRiZmFk
Li41MWMwODI1YzZiNGZlMDFkNjVjYWM0MGNhYTk3YmVjMWMxOGYxNmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCkBAIC02NiwxMyArNjYsMTMgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYgc2hhcmVkVGltZXIoKTsKLSAgICBz
dGF0aWMgV1RGOjpMb2NrJiBzaGFyZWRMb2NrKCk7CiAgICAgc3RhdGljIHZvaWQgc2hhcmVkVGlt
ZXJGaXJlZCgpOwotICAgIHN0YXRpYyBEZXF1ZTxXZWFrUHRyPFRhc2tEaXNwYXRjaGVyPFRpbWVy
Pj4+JiBwZW5kaW5nRGlzcGF0Y2hlcnMoKTsKKyAgICBzdGF0aWMgRGVxdWU8V2Vha1B0cjxUYXNr
RGlzcGF0Y2hlcjxUaW1lcj4+PiYgcGVuZGluZ0Rpc3BhdGNoZXJzKCkgV1RGX1JFUVVJUkVTX0xP
Q0soc19zaGFyZWRMb2NrKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hPbmVUYXNrKCk7CiAKLSAgICBE
ZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBzdGF0aWMgQ2hlY2tl
ZExvY2sgc19zaGFyZWRMb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGlu
Z1Rhc2tzIFdURl9HVUFSREVEX0JZX0xPQ0soc19zaGFyZWRMb2NrKTsKIH07CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5
U2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1l
UmVnaXN0cnkuY3BwCmluZGV4IGMzZjc1NjAxODZmMjBhYzVjODhmMzRhNTQzNmZjZGFhM2JiNTc3
YWQuLmQ1YmIwNDUyOGFjYjliMjBlNjk1ZDdiMGMwNTRhNzliMDgxMDdjMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTI3LDgg
KzI3LDcgQEAKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogCiAjaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNs
dWRlIDx3dGYvTG9ja2VyLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CkBAIC02Niw3ICs2NSw3IEBAIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQoY29uc3Qg
VmVjdG9yPFN0CiAgICAgcmV0dXJuIHNldDsKIH0KIAotc3RhdGljIExvY2sgc2NoZW1lUmVnaXN0
cnlMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIHNjaGVtZVJlZ2lzdHJ5TG9jazsKIAogc3RhdGlj
IGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIHsKQEAgLTk1LDcgKzk0
LDcgQEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIAog
ICAgICAgICBVUkxTY2hlbWVzTWFwIHNldDsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2Vy
PExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgICAgICAgICAgZm9yIChhdXRvJiBzY2hl
bWUgOiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkpCiAgICAgICAgICAgICAgICAgc2V0LmFkZChz
Y2hlbWUpOwogCkBAIC0xMDksNyArMTA4LDcgQEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAm
IGFsbEJ1aWx0aW5TY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIGNv
bnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQorc3RhdGljIGNvbnN0
IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9D
SyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5p
c0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChVUkxTY2hlbWVzTWFwIHsKQEAgLTEyMSwyMSArMTIwLDIxIEBAIHN0YXRpYyBjb25zdCBV
UkxTY2hlbWVzTWFwJiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1l
czsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGxvY2FsVVJMU2NoZW1lcygpCitzdGF0aWMg
VVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1l
UmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkp
OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBsb2NhbFNjaGVtZXMg
PSBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCk7CiAgICAgcmV0dXJuIGxvY2FsU2NoZW1lczsKIH0K
IAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKQorc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKSBXVEZfUkVRVUlS
RVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5
TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVt
ZXM7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpCitj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9j
ay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRl
c3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CkBAIC0xNTAsMTQgKzE0OSwxNCBAQCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwog
fQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCitzdGF0aWMgVVJMU2No
ZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5
TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBz
dGF0aWMgYXV0byBzZWN1cmVTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGJ1
aWx0aW5TZWN1cmVTY2hlbWVzKTsKICAgICByZXR1cm4gc2VjdXJlU2NoZW1lczsKIH0KIAotY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQorc3Rh
dGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChz
Y2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVt
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4gewpAQCAtMTcwLDcgKzE2OSw3
IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhV
bmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewog
ICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBhdXRv
IHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyA9IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChi
dWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTsKQEAgLTE5OCwxNCArMTk3LDE0IEBAIHN0
YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGF4YXRpb24o
KQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1jb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRp
bkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCitjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpIFdURl9SRVFVSVJF
U19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlM
b2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgImJsb2IiX3MgfSk7CiAgICAgcmV0dXJuIHNjaGVt
ZXM7CiB9CiAKLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dFNjaGVtZXMoKQorc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0U2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAg
ICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0
cnlMb2NrLmlzSGVsZCgpKTsKQEAgLTIyNSwyMCArMjI0LDIwIEBAIHZvaWQgTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkK
ICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNj
aGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGxvY2FsVVJMU2NoZW1lcygpLmFkZChzY2hlbWUpOwog
fQogCiB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVk
QXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5
TG9jayB9OwogICAgIGlmIChidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1l
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbG9jYWxVUkxTY2hlbWVzKCkucmVtb3ZlKHNjaGVt
ZSk7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVI
YW5kbGVyKCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVI
YW5kbGVyKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFT
U0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IHNldDsKQEAgLTI0NywxMyArMjQ2LDEzIEBAIHN0YXRpYyBI
YXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKCkKIAogdm9pZCBM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0hhbmRsZWRCeVNjaGVtZUhh
bmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihz
Y2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxv
Y2sgfTsKICAgICBzY2hlbWVzSGFuZGxlZEJ5U2NoZW1lSGFuZGxlcigpLmFkZChzY2hlbWUpOwog
fQogCiBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVJc0hhbmRsZWRCeVNjaGVtZUhh
bmRsZXIoU3RyaW5nVmlldyBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hl
bWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sg
fTsKICAgICByZXR1cm4gc2NoZW1lc0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoKS5jb250YWlucyhz
Y2hlbWUudG9TdHJpbmcoKSk7CiB9CiAKQEAgLTI3OSwxNCArMjc4LDE0IEBAIHN0YXRpYyBVUkxT
Y2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQog
Ci1zdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2No
ZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNz
aW5nU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAg
ICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsKIH0K
IAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpCitzdGF0
aWMgVVJMU2NoZW1lc01hcCYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkgV1RGX1JFUVVJUkVT
X0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxv
Y2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBz
Y2hlbWVzOwpAQCAtMzA1LDcgKzMwNCw3IEBAIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAo
c2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVt
ZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBsb2NhbFVSTFNjaGVtZXMoKS5jb250YWlucyhz
Y2hlbWUpOwogfQogCkBAIC0zMTQsNyArMzEzLDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAg
IGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1l
UmVnaXN0cnlMb2NrIH07CiAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkuYWRkKHNjaGVt
ZSk7CiB9CiAKQEAgLTMyMyw3ICszMjIsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojpz
aG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAgICAg
aWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9ja2Vy
PExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBz
Y2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIApAQCAtMzMyLDcgKzMzMSw3IEBAIHZvaWQgTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3Qg
U3RyaW5nJiBzY2hlCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBkaXNwbGF5SXNvbGF0ZWRVUkxT
Y2hlbWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKQEAgLTM0MSw3ICszNDAsNyBAQCBib29sIExlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNv
bnN0IFN0cmluZyYgcwogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0dXJuIGRpc3Bs
YXlJc29sYXRlZFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC0zNTAsNyAr
MzQ5LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1Nl
Y3VyZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHNlY3Vy
ZVNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtMzU5LDcgKzM1OCw3IEBAIGJvb2wgTGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2VjdXJl
U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKQEAgLTM5Nyw3ICszOTYsNyBAQCBib29s
IExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBT
dHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBjYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBA
IC00MDcsNyArNDA2LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0Nh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2MKICAgICBpZiAoc2NoZW1l
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNj
aGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9j
ayB9OwogICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmFkZChzY2hlbWUp
OwogfQogCkBAIC00NjAsNyArNDU5LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVn
aXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb24KICAgICBp
ZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJl
Z2lzdHJ5TG9jayB9OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMo
KS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtNDY5LDcgKzQ2OCw3IEBAIHZvaWQgTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1
cml0eVBvCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBh
c3NpbmdTY2hlbWVzKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKQEAgLTQ3OCw3ICs0NzcsNyBAQCBi
b29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJp
dHlQb2xpY3koY29uc3QgU3RyaW5nJgogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0
dXJuIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5jb250YWlucyhzY2hl
bWUpOwogfQogCkBAIC00OTksNyArNDk4LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3RyaW5nJiBzY2gKICAg
ICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVt
ZVJlZ2lzdHJ5TG9jayB9OwogICAgIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpLmFkZChzY2hl
bWUpOwogfQogCkBAIC01MDgsNyArNTA3LDcgQEAgYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUKICAg
ICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVt
ZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAppbmRleCA4MWE4YmVkNmJmY2Y3YTRiYmIxYzgw
Mzg1NmQ2N2RlMWExYjQxNTBiLi5lYTRkZWQyNjQxZjU0NjU0MTIzOWFlNzVmZmE2YWIzMDc2OTdm
NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJh
bWVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFt
ZU1hYy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJGRlRGcmFtZS5oIgogCiAjaW5j
bHVkZSAiVmVjdG9yTWF0aC5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Niw5ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNvbnN0ZXhwciB1bnNpZ25lZCBrTWluRkZUUG93MlNpemUgPSAyOwogY29uc3RleHByIHVuc2ln
bmVkIGtNYXhGRlRQb3cyU2l6ZSA9IDI0OwogCi1zdGF0aWMgTG9jayBmZnRTZXR1cHNMb2NrOwor
c3RhdGljIENoZWNrZWRMb2NrIGZmdFNldHVwc0xvY2s7CiAKLXN0YXRpYyBWZWN0b3I8RkZUU2V0
dXA+JiBmZnRTZXR1cHMoKQorc3RhdGljIFZlY3RvcjxGRlRTZXR1cD4mIGZmdFNldHVwcygpIFdU
Rl9SRVFVSVJFU19MT0NLKGZmdFNldHVwc0xvY2spCiB7CiAgICAgQVNTRVJUKGZmdFNldHVwc0xv
Y2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8RkZUU2V0dXA+
PiBmZnRTZXR1cHMoa01heEZGVFBvdzJTaXplLCBudWxscHRyKTsKQEAgLTEzNiw3ICsxMzYsNyBA
QCBGRlRTZXR1cCBGRlRGcmFtZTo6ZmZ0U2V0dXBGb3JTaXplKHVuc2lnbmVkIGZmdFNpemUpCiAg
ICAgYXV0byBwb3cyc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obG9nMihmZnRTaXplKSk7CiAg
ICAgQVNTRVJUKHBvdzJzaXplIDwga01heEZGVFBvdzJTaXplKTsKIAotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soZmZ0U2V0dXBzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGZmdFNldHVw
c0xvY2sgfTsKICAgICBhdXRvJiBmZnRTZXR1cCA9IGZmdFNldHVwcygpLmF0KHBvdzJzaXplKTsK
ICAgICBpZiAoIWZmdFNldHVwKQogICAgICAgICBmZnRTZXR1cCA9IHZEU1BfY3JlYXRlX2ZmdHNl
dHVwKHBvdzJzaXplLCBGRlRfUkFESVgyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAxZDBiZTgzNDZmZmIyNGFjNzNhYzRlOTJj
MWFhMWMzNGU1Y2U2NDg5Li44YTAzNzA2OThjZGIwOWUxNzRiYzJkM2UxMzIzZDg3MzRmOTQyZDU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGltZVJhbmdl
cy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlLmgiCkBAIC0yMDMsOSArMjA0LDkgQEAgc3RhdGljIE1lZGlhUGxh
eWVyQ2xpZW50JiBudWxsTWVkaWFQbGF5ZXJDbGllbnQoKQogCiBzdGF0aWMgdm9pZCBhZGRNZWRp
YUVuZ2luZShzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5PiYmKTsKIAotc3RhdGlj
IExvY2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIG1lZGlhRW5n
aW5lVmVjdG9yTG9jazsKIAotc3RhdGljIGJvb2wmIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKQor
c3RhdGljIGJvb2wmIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSBXVEZfUkVRVUlSRVNfTE9DSyht
ZWRpYUVuZ2luZVZlY3RvckxvY2spCiB7CiAgICAgc3RhdGljIGJvb2wgaGF2ZVZlY3RvcjsKICAg
ICByZXR1cm4gaGF2ZVZlY3RvcjsKQEAgLTIyOCw3ICsyMjksNyBAQCB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJl
bW90ZVBsYQogICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9IFdURk1vdmUoY2Fs
bGJhY2spOwogfQogCi1zdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpCitzdGF0
aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpIFdURl9SRVFVSVJFU19MT0NLKG1lZGlh
RW5naW5lVmVjdG9yTG9jaykKIHsKICAgICBBU1NFUlQobWVkaWFFbmdpbmVWZWN0b3JMb2NrLmlz
TG9ja2VkKCkpOwogCkBAIC0yODIsNyArMjgzLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVu
Z2luZXNWZWN0b3IoKQogc3RhdGljIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQ
bGF5ZXJGYWN0b3J5Pj4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiB7CiAgICAgewotICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1lZGlhRW5naW5lVmVjdG9yTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtZWRpYUVuZ2luZVZlY3RvckxvY2sgfTsKICAgICAgICAgaWYgKCFo
YXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkpCiAgICAgICAgICAgICBidWlsZE1lZGlhRW5naW5lc1Zl
Y3RvcigpOwogICAgIH0KQEAgLTE1MDEsNyArMTUwMiw3IEBAIFZlY3RvcjxSZWZQdHI8UGxhdGZv
cm1UZXh0VHJhY2s+PiBNZWRpYVBsYXllcjo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIAogdm9p
ZCBNZWRpYVBsYXllcjo6cmVzZXRNZWRpYUVuZ2luZXMoKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobWVkaWFFbmdpbmVWZWN0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWVk
aWFFbmdpbmVWZWN0b3JMb2NrIH07CiAKICAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVz
VmVjdG9yKCkuY2xlYXIoKTsKICAgICBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggOGE1NDk1YmQzNTU0ODkyY2Ex
MDZhYzQ0Y2NjY2ZmNzQ3ZjM1Zjc0NC4uYjZlYTE0ZmY1ZThjMjc0NjgyMGVkOGU4NTcyYjM1NmI3
NTcyODZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTUzLDYgKzUz
LDcgQEAKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4
Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0NoZWNr
ZWRMb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2Ev
VmVjdG9yQ29jb2EuaD4KIApAQCAtNzUsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIExheWVyVG9QbGF0Zm9ybUNBTGF5ZXJNYXAgPSBIYXNoTWFwPHZvaWQqLCBQbGF0Zm9y
bUNBTGF5ZXIqPjsKIAotc3RhdGljIExheWVyVG9QbGF0Zm9ybUNBTGF5ZXJNYXAmIGxheWVyVG9Q
bGF0Zm9ybUxheWVyTWFwKCkKK3N0YXRpYyBDaGVja2VkTG9jayBsYXllclRvUGxhdGZvcm1MYXll
ck1hcExvY2s7CitzdGF0aWMgTGF5ZXJUb1BsYXRmb3JtQ0FMYXllck1hcCYgbGF5ZXJUb1BsYXRm
b3JtTGF5ZXJNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhsYXllclRvUGxhdGZvcm1MYXllck1hcExv
Y2spCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExheWVyVG9QbGF0Zm9ybUNBTGF5ZXJN
YXA+IGxheWVyTWFwOwogICAgIHJldHVybiBsYXllck1hcDsKQEAgLTg3LDggKzg5LDcgQEAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXJGb3JM
YXllcih2b2lkKiBwbGF0Zm9ybUwKICAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgc3RhdGljIExvY2sgbG9jazsKLSAgICBMb2NrSG9sZGVyIGxv
Y2tIb2xkZXIobG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGxheWVyVG9QbGF0Zm9ybUxheWVy
TWFwTG9jayB9OwogICAgIHJldHVybiBsYXllclRvUGxhdGZvcm1MYXllck1hcCgpLmdldChwbGF0
Zm9ybUxheWVyKTsKIH0KIApAQCAtMzEyLDggKzMxMywxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpjb21tb25Jbml0KCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
IAotICAgIGxheWVyVG9QbGF0Zm9ybUxheWVyTWFwKCkuYWRkKG1fbGF5ZXIuZ2V0KCksIHRoaXMp
OwotICAgIAorICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxheWVyVG9QbGF0Zm9ybUxh
eWVyTWFwTG9jayB9OworICAgICAgICBsYXllclRvUGxhdGZvcm1MYXllck1hcCgpLmFkZChtX2xh
eWVyLmdldCgpLCB0aGlzKTsKKyAgICB9CisKICAgICAvLyBDbGVhciBhbGwgdGhlIGltcGxpY2l0
IGFuaW1hdGlvbnMgb24gdGhlIENBTGF5ZXIKICAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJU
eXBlQVZQbGF5ZXJMYXllciB8fCBtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDb250ZW50c1Byb3Zp
ZGVkTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2Nyb2xsQ29udGFpbmVyTGF5ZXIg
fHwgbV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKQogICAgICAgICBbbV9sYXllciB3ZWJf
ZGlzYWJsZUFsbEFjdGlvbnNdOwpAQCAtMzkyLDggKzM5NiwxMCBAQCBSZWY8UGxhdGZvcm1DQUxh
eWVyPiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcikgYwogCiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6flBsYXRmb3JtQ0FMYXllckNvY29hKCkK
IHsKLSAgICBsYXllclRvUGxhdGZvcm1MYXllck1hcCgpLnJlbW92ZShtX2xheWVyLmdldCgpKTsK
LSAgICAKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBsYXllclRvUGxhdGZvcm1MYXll
ck1hcExvY2sgfTsKKyAgICAgICAgbGF5ZXJUb1BsYXRmb3JtTGF5ZXJNYXAoKS5yZW1vdmUobV9s
YXllci5nZXQoKSk7CisgICAgfQogICAgIC8vIFJlbW92ZSB0aGUgb3duZXIgcG9pbnRlciBmcm9t
IHRoZSBkZWxlZ2F0ZSBpbiBjYXNlIHRoZXJlIGlzIGEgcGVuZGluZyBhbmltYXRpb25TdGFydGVk
IGV2ZW50LgogICAgIFtzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25EZWxlZ2F0ZSo+KG1fZGVsZWdh
dGUuZ2V0KCkpIHNldE93bmVyOm5pbF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLm1tCmluZGV4IGE1ZDJmNzM2YzJlZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMu
LmJlODdhZDJkM2RkZGVlNjU2ZWQ4MmE0ZDQyZTZlYWM0Y2RkY2IyODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMjksMTIgKzI5LDE0IEBACiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotI2ltcG9ydCA8cGFs
L2lvcy9RdWlja0xvb2tTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0ZpbGVN
YW5hZ2VyU1BJLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbXBvcnQgPHd0Zi9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKKyNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBRTFByZXZpZXdQcm90b2NvbCA9ICJ4LWFw
cGxlLXFsLWlkIjsKQEAgLTQ1LDkgKzQ3LDkgQEAgTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRl
ZE1JTUVUeXBlc1NldCgpCiAgICAgcmV0dXJuIHNldC5nZXQoKS5nZXQoKTsKIH0KIAotc3RhdGlj
IExvY2sgcWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2s7CitzdGF0aWMgQ2hlY2tlZExv
Y2sgcWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2s7CiAKLXN0YXRpYyBOU011dGFibGVE
aWN0aW9uYXJ5ICpRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkKK3N0YXRpYyBOU011dGFi
bGVEaWN0aW9uYXJ5ICpRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgV1RGX1JFUVVJUkVT
X0xPQ0socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2spCiB7CiAgICAgc3RhdGljIE5T
TXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOwogICAgIHJldHVybiBkaWN0aW9uYXJ5OwpAQCAtNjEsNyArNjMsNyBAQCBzdGF0
aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqUUxDb250ZW50RGljdGlvbmFyeSgpCiAKIHZvaWQgcmVt
b3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICp1cmwpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlMb2NrIH07CiAgICAgW1FM
UHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnkoKSByZW1vdmVPYmplY3RGb3JLZXk6dXJsXTsKICAg
ICBbUUxDb250ZW50RGljdGlvbmFyeSgpIHJlbW92ZU9iamVjdEZvcktleTp1cmxdOwogfQpAQCAt
NzAsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZv
clVSTChOU1VSTCAqdXJsLCBpZCBjb252ZXJ0ZXIsIE5TU3RyaQogewogICAgIEFTU0VSVCh1cmwp
OwogICAgIEFTU0VSVChjb252ZXJ0ZXIpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socWxQ
cmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBxbFBy
ZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jayB9OwogICAgIFtRTFByZXZpZXdDb252ZXJ0ZXJE
aWN0aW9uYXJ5KCkgc2V0T2JqZWN0OmNvbnZlcnRlciBmb3JLZXk6dXJsXTsKICAgICBbUUxDb250
ZW50RGljdGlvbmFyeSgpIHNldE9iamVjdDooZmlsZU5hbWUgPyBmaWxlTmFtZSA6IEAiIikgZm9y
S2V5OnVybF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQppbmRleCBiYTBlMThlOTI5OGUw
YzMxMmYzMWE3NjA5MzkxYmQ1NDIxOTQ2MjM2Li43MDcyMmE5NjljNjliN2JmNzFlMDM3NDhhNDMz
YmZmMzlmNzVkNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0KQEAgLTMxLDYgKzMxLDcg
QEAKICNpbXBvcnQgIldlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtODQsMTYgKzg1
LDE2IEBAIHZvaWQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpoeXN0ZXJlc2lzVXBk
YXRlZChQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0CiAKIH0KIAotc3RhdGljIExvY2sgdHJhbnNh
Y3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIHRy
YW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jazsKIAotc3RhdGljIE5TVUludGVn
ZXIgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXI7CitzdGF0aWMgTlNVSW50ZWdl
ciB0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NL
KHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jayk7CiAKLXN0YXRpYyB2b2lk
IHNldFRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyKE5TVUludGVnZXIgaWRlbnRp
ZmllcikKK3N0YXRpYyB2b2lkIHNldFRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVy
KE5TVUludGVnZXIgaWRlbnRpZmllcikgV1RGX1JFUVVJUkVTX0xPQ0sodHJhbnNhY3Rpb25CYWNr
Z3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKQogewogICAgIHRyYW5zYWN0aW9uQmFja2dyb3VuZFRh
c2tJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKIH0KIAotc3RhdGljIE5TVUludGVnZXIgZ2V0VHJh
bnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKQorc3RhdGljIE5TVUludGVnZXIgZ2V0
VHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKSBXVEZfUkVRVUlSRVNfTE9DSyh0
cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2spCiB7CiAgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBwcmVkOwogICAgIGRpc3BhdGNoX29uY2UoJnByZWQsIF4gewpAQCAtMTA3
LDcgKzEwOCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJEYXRhYmFzZVRyYW5zYWN0aW9uQmFja2dy
b3VuZFRhc2tDb250cm9sbGVyCiAKICsgKHZvaWQpc3RhcnRCYWNrZ3JvdW5kVGFzawogewotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZp
ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lk
ZW50aWZpZXJMb2NrIH07CiAKICAgICAvLyBJZiB0aGVyZSdzIGFscmVhZHkgYW4gZXhpc3Rpbmcg
YmFja2dyb3VuZCB0YXNrIGdvaW5nIG9uLCB0aGVyZSdzIG5vIG5lZWQgdG8gc3RhcnQgYSBuZXcg
b25lLgogICAgIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciAqYmFja2dyb3VuZFRhc2tDb250
cm9sbGVyID0gW1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciBzaGFyZWRDb250cm9sbGVyXTsK
QEAgLTEyMiw3ICsxMjMsNyBAQCArICh2b2lkKXN0YXJ0QmFja2dyb3VuZFRhc2sKIAogKyAodm9p
ZCllbmRCYWNrZ3JvdW5kVGFzawogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNh
Y3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
dHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrIH07CiAKICAgICAvLyBJdCBp
cyBwb3NzaWJsZSB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHN0YXJ0IHRoZSBiYWNrZ3JvdW5kIHRh
c2sgd2hlbiB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gYmVnYW4uCiAgICAgLy8gRG9uJ3QgdHJ5IHRv
IGVuZCB0aGUgdGFzayBpbiB0aGF0IGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KaW5kZXggNmQ1ZDVjNTdlZTBiY2E1YzYx
MGQyZGIwZTgyYzRlNmY0OTFhZmY5ZS4uNjZlMjdlYTUyMjRhZjhkYjE5YzJhOWYxNjlhOTFjMWMz
ZDgzOGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
VVRJVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1VUSVV0aWxpdGllcy5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKIAotI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQg
PHd0Zi9DaGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQg
PHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2ltcG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAt
MTEyLDcgKzExMiw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHN0
YXRpYyBTdHJpbmcgY3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1
cm4ga2V5Lmlzb2xhdGVkQ29weSgpOyB9CiB9OwogCi1zdGF0aWMgVGlueUxSVUNhY2hlPFN0cmlu
ZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5
PiYgY2FjaGVVVElGcm9tTWltZVR5cGUoKQorc3RhdGljIENoZWNrZWRMb2NrIGNhY2hlVVRJRnJv
bU1JTUVUeXBlTG9jazsKK3N0YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZyb21N
SU1FVHlwZSgpIFdURl9SRVFVSVJFU19MT0NLKGNhY2hlVVRJRnJvbU1JTUVUeXBlTG9jaykKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPFN0cmluZywgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5Pj4gY2FjaGU7CiAg
ICAgcmV0dXJuIGNhY2hlOwpAQCAtMTIwLDkgKzEyMSw4IEBAIHN0YXRpYyBUaW55TFJVQ2FjaGU8
U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQ
b2xpCiAKIFN0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
LSAgICBzdGF0aWMgTG9jayBsb2NrOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7
Ci0gICAgcmV0dXJuIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5nZXQoKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVVVElGcm9tTUlNRVR5cGVMb2NrIH07CisgICAgcmV0
dXJuIGNhY2hlVVRJRnJvbU1JTUVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5nZXQoKTsKIH0KIAogYm9v
bCBpc0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYgVVRJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggMzRkYWY0ZWQyOWVmODMyZjNhZTA1
MmNiMmU1NDUzZTI1ZDIyOGUyOS4uZWE0NTMxMTBhMTgzOTczN2Q5NzVmYjM1ZTFlODIwOWM4ZWEy
MDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3FsaXRl
My5oPgogI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC03MSwxMiArNzIsMTIgQEAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVNRTGl0ZUlmTmVjZXNzYXJ5KCkKICAgICB9KTsKIH0KIAotc3RhdGljIGJv
b2wgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4gPSBmYWxzZTsKLXN0YXRpYyBMb2NrIGlzRGF0
YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgaXNEYXRhYmFz
ZU9wZW5pbmdGb3JiaWRkZW5Mb2NrOworc3RhdGljIGJvb2wgaXNEYXRhYmFzZU9wZW5pbmdGb3Ji
aWRkZW4gV1RGX0dVQVJERURfQllfTE9DSyhpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbkxvY2sp
IHsgZmFsc2UgfTsKIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNEYXRhYmFzZU9wZW5pbmdG
b3JiaWRkZW4oYm9vbCBpc0ZvcmJpZGRlbikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBp
c0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbkxvY2sgfTsKICAgICBpc0RhdGFiYXNlT3BlbmluZ0Zv
cmJpZGRlbiA9IGlzRm9yYmlkZGVuOwogfQogCkBAIC05NCw3ICs5NSw3IEBAIGJvb2wgU1FMaXRl
RGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUp
CiAgICAgY2xvc2UoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhp
c0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbk11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTG9jayB9OwogICAgICAgICBpZiAoaXNEYXRhYmFz
ZU9wZW5pbmdGb3JiaWRkZW4pIHsKICAgICAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9ICJv
cGVuaW5nIGRhdGFiYXNlIGlzIGZvcmJpZGRlbiI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuY3BwCmluZGV4IDZhMjhlMTliZTk0NjkzMDM1YTU2YjY0MDk0ZTQxNTdlYzk1YTdkNzAu
LjNmOGUzYzk3ZWRlODBlNDI5MTU4NDRlN2ZiY2E1YTYyZjE0OWQ3NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC0yNywyNiArMjcsMjUgQEAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKIAog
I2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFNRTGl0ZURh
dGFiYXNlVHJhY2tlciB7CiAKLXN0YXRpYyBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNf
c3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID0gbnVsbHB0cjsKLXN0YXRpYyB1bnNp
Z25lZCBzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIgPSAwOwotCi1zdGF0aWMgTG9jayB0
cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9jayB0cmFuc2FjdGlv
bkluUHJvZ3Jlc3NMb2NrOworc3RhdGljIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCogc19z
dGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgV1RGX0dVQVJERURfQllfTE9DSyh0cmFu
c2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IG51bGxwdHIgfTsKK3N0YXRpYyB1bnNpZ25lZCBzX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIgV1RGX0dVQVJERURfQllfTE9DSyh0cmFuc2FjdGlv
bkluUHJvZ3Jlc3NMb2NrKSB7IDAgfTsKIAogdm9pZCBzZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFu
c2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0xvY2sgfTsKICAgICBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dCA9IGNsaWVudDsKIH0KIAogdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3Vu
dCgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsK
ICAgICBpZiAoIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTU3LDcgKzU2LDcgQEAgdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NDb3VudCgpCiAKIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQo
KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNzTXV0
ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrIH07CiAg
ICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC03MCw3ICs2OSw3IEBAIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dy
ZXNzQ291bnQoKQogCiBib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsKICAgICByZXR1cm4gIXNf
c3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50IHx8IHNfdHJhbnNhY3Rpb25JblByb2dy
ZXNzQ291bnRlciA+IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggMDZkZmY2Y2Q5YjIwN2M1NmY4ZDcw
MWI3ODgyZGNjZWJmMmU2Yjg1Yy4uZTFiYzUzNmNjNmEwNDg1Nzc4NjJjZmQxYzMxNzRjZDY3NDcx
NmY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmdSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5j
b2RpbmdSZWdpc3RyeS5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlIDxtdXRleD4KICNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTkxLDEwICs5MSwxMCBAQCBzdHJ1Y3Qg
VGV4dEVuY29kaW5nTmFtZUhhc2ggewogdXNpbmcgVGV4dEVuY29kaW5nTmFtZU1hcCA9IEhhc2hN
YXA8Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBUZXh0RW5jb2RpbmdOYW1lSGFzaD47CiB1c2lu
ZyBUZXh0Q29kZWNNYXAgPSBIYXNoTWFwPGNvbnN0IGNoYXIqLCBOZXdUZXh0Q29kZWNGdW5jdGlv
bj47CiAKLXN0YXRpYyBMb2NrIGVuY29kaW5nUmVnaXN0cnlNdXRleDsKK3N0YXRpYyBDaGVja2Vk
TG9jayBlbmNvZGluZ1JlZ2lzdHJ5TG9jazsKIAotc3RhdGljIFRleHRFbmNvZGluZ05hbWVNYXAq
IHRleHRFbmNvZGluZ05hbWVNYXA7Ci1zdGF0aWMgVGV4dENvZGVjTWFwKiB0ZXh0Q29kZWNNYXA7
CitzdGF0aWMgVGV4dEVuY29kaW5nTmFtZU1hcCogdGV4dEVuY29kaW5nTmFtZU1hcCBXVEZfR1VB
UkRFRF9CWV9MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKTsKK3N0YXRpYyBUZXh0Q29kZWNNYXAq
IHRleHRDb2RlY01hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKTsK
IHN0YXRpYyBib29sIGRpZEV4dGVuZFRleHRDb2RlY01hcHM7CiBzdGF0aWMgSGFzaFNldDxjb25z
dCBjaGFyKj4qIGphcGFuZXNlRW5jb2RpbmdzOwogc3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+
KiBub25CYWNrc2xhc2hFbmNvZGluZ3M7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGJvb2wg
aXNVbmRlc2lyZWRBbGlhcyhjb25zdCBjaGFyKiBhbGlhcykKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXN0YXRpYyB2b2lkIGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcChjb25zdCBjaGFyKiBhbGlh
cywgY29uc3QgY2hhciogbmFtZSkKK3N0YXRpYyB2b2lkIGFkZFRvVGV4dEVuY29kaW5nTmFtZU1h
cChjb25zdCBjaGFyKiBhbGlhcywgY29uc3QgY2hhciogbmFtZSkgV1RGX1JFUVVJUkVTX0xPQ0so
ZW5jb2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHN0cmxlbihhbGlhcykgPD0gbWF4
RW5jb2RpbmdOYW1lTGVuZ3RoKTsKICAgICBpZiAoaXNVbmRlc2lyZWRBbGlhcyhhbGlhcykpCkBA
IC0xMzAsMTQgKzEzMCwxNCBAQCBzdGF0aWMgdm9pZCBhZGRUb1RleHRFbmNvZGluZ05hbWVNYXAo
Y29uc3QgY2hhciogYWxpYXMsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgdGV4dEVuY29kaW5nTmFt
ZU1hcC0+YWRkKGFsaWFzLCBhdG9tTmFtZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFRvVGV4dENv
ZGVjTWFwKGNvbnN0IGNoYXIqIG5hbWUsIE5ld1RleHRDb2RlY0Z1bmN0aW9uJiYgZnVuY3Rpb24p
CitzdGF0aWMgdm9pZCBhZGRUb1RleHRDb2RlY01hcChjb25zdCBjaGFyKiBuYW1lLCBOZXdUZXh0
Q29kZWNGdW5jdGlvbiYmIGZ1bmN0aW9uKSBXVEZfUkVRVUlSRVNfTE9DSyhlbmNvZGluZ1JlZ2lz
dHJ5TG9jaykKIHsKICAgICBjb25zdCBjaGFyKiBhdG9tTmFtZSA9IHRleHRFbmNvZGluZ05hbWVN
YXAtPmdldChuYW1lKTsKICAgICBBU1NFUlQoYXRvbU5hbWUpOwogICAgIHRleHRDb2RlY01hcC0+
YWRkKGF0b21OYW1lLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBydW5l
QmxvY2tsaXN0ZWRDb2RlY3MoKQorc3RhdGljIHZvaWQgcHJ1bmVCbG9ja2xpc3RlZENvZGVjcygp
IFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIGZvciAoYXV0
byYgbmFtZUZyb21CbG9ja2xpc3QgOiB0ZXh0RW5jb2RpbmdOYW1lQmxvY2tsaXN0KSB7CiAgICAg
ICAgIGF1dG8qIGF0b21OYW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWVGcm9tQmxv
Y2tsaXN0KTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCBwcnVuZUJsb2NrbGlzdGVk
Q29kZWNzKCkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMo
Y29uc3QgQWJzdHJhY3RMb2NrZXImKQorc3RhdGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFw
cygpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VS
VCghdGV4dENvZGVjTWFwKTsKICAgICBBU1NFUlQoIXRleHRFbmNvZGluZ05hbWVNYXApOwpAQCAt
MTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMoY29uc3Qg
QWJzdHJhY3RMb2NrZXImKQogICAgIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVj
cyhhZGRUb1RleHRDb2RlY01hcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZEVuY29kaW5nTmFtZShI
YXNoU2V0PGNvbnN0IGNoYXIqPiogc2V0LCBjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQg
YWRkRW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXQsIGNvbnN0IGNoYXIqIG5h
bWUpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIC8vIFdl
IG11c3Qgbm90IHVzZSBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZSgpIGJlY2F1c2UgdGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gaXQuCiAgICAgY29uc3QgY2hhciogYXRvbU5hbWUgPSB0
ZXh0RW5jb2RpbmdOYW1lTWFwLT5nZXQobmFtZSk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGlj
IHZvaWQgYWRkRW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXQsIGNvbnN0IGNo
YXIqIG5hbWUpCiAgICAgICAgIHNldC0+YWRkKGF0b21OYW1lKTsKIH0KIAotc3RhdGljIHZvaWQg
YnVpbGRRdWlya3NTZXRzKCkKK3N0YXRpYyB2b2lkIGJ1aWxkUXVpcmtzU2V0cygpIFdURl9SRVFV
SVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIC8vIEZJWE1FOiBIYXZpbmcg
aXNKYXBhbmVzZUVuY29kaW5nKCkgYW5kIHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3lt
Ym9sSW4oKQogICAgIC8vIGFuZCBpbml0aWFsaXppbmcgdGhlIHNldHMgZm9yIHRoZW0gaW4gVGV4
dEVuY29kaW5nUmVnaXN0cnkuY3BwIGxvb2sgc3RyYW5nZS4KQEAgLTIzMSw3ICsyMzEsNyBAQCBi
b29sIHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sSW4oY29uc3QgY2hhciogY2Fu
b25pY2FsRW5jb2RpbmdOYW1lKQogICAgIHJldHVybiBjYW5vbmljYWxFbmNvZGluZ05hbWUgJiYg
bm9uQmFja3NsYXNoRW5jb2RpbmdzICYmIG5vbkJhY2tzbGFzaEVuY29kaW5ncy0+Y29udGFpbnMo
Y2Fub25pY2FsRW5jb2RpbmdOYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVj
TWFwcygpCitzdGF0aWMgdm9pZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkgV1RGX1JFUVVJUkVTX0xP
Q0soZW5jb2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJl
Z2lzdGVyRW5jb2RpbmdOYW1lcyhhZGRUb1RleHRFbmNvZGluZ05hbWVNYXApOwogICAgIFRleHRD
b2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CkBAIC0y
NTEsNyArMjUxLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVjTWFwcygpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhjb25zdCBUZXh0RW5jb2RpbmcmIGVu
Y29kaW5nKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZW5jb2RpbmdSZWdpc3RyeU11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZW5jb2RpbmdSZWdpc3RyeUxvY2sgfTsKIAogICAg
IEFTU0VSVCh0ZXh0Q29kZWNNYXApOwogICAgIGF1dG8gcmVzdWx0ID0gdGV4dENvZGVjTWFwLT5m
aW5kKGVuY29kaW5nLm5hbWUoKSk7CkBAIC0yNjQsMTAgKzI2NCwxMCBAQCBjb25zdCBjaGFyKiBh
dG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBuYW1lKQogICAgIGlmICgh
bmFtZSB8fCAhbmFtZVswXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGVuY29kaW5nUmVnaXN0cnlNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IGVuY29kaW5nUmVnaXN0cnlMb2NrIH07CiAKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWVN
YXApCi0gICAgICAgIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMobG9ja2VyKTsKKyAgICAgICAgYnVp
bGRCYXNlVGV4dENvZGVjTWFwcygpOwogCiAgICAgaWYgKGNvbnN0IGNoYXIqIGF0b21OYW1lID0g
dGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWUpKQogICAgICAgICByZXR1cm4gYXRvbU5hbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDAx
N2RmNWJiN2NjNDU1ZDA5ZGExMzU0MTUyNGY2ZGNmNDNkZDM1MzMuLjA3ZjRlNzY5MzAzNjExYjhl
MTFlMmNkMzY0NzIzMjliOTExZDFiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01NiwxNiArNTYsMTUgQEAKICNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0
aWMgTG9jayBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jazsKLXN0YXRpYyBIYXNo
U2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYgYWxsV29ya2VyR2xvYmFsU2Nv
cGVJZGVudGlmaWVycyhMb2NrSG9sZGVyJiBob2xkZXIpCitzdGF0aWMgQ2hlY2tlZExvY2sgYWxs
V29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2s7CitzdGF0aWMgSGFzaFNldDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmll
cnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9j
aykKIHsKLSAgICBVTlVTRURfUEFSQU0oaG9sZGVyKTsKLQogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPj4gaWRlbnRpZmll
cnM7CiAgICAgQVNTRVJUKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrLmlzTG9j
a2VkKCkpOwogICAgIHJldHVybiBpZGVudGlmaWVyczsKQEAgLTkwLDggKzg5LDggQEAgV29ya2Vy
R2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwgY29u
c3QgV29ya2VyUGFyYW1ldGUKICAgICAsIG1fY3JlZGVudGlhbHMocGFyYW1zLmNyZWRlbnRpYWxz
KQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhbGxXb3JrZXJHbG9i
YWxTY29wZUlkZW50aWZpZXJzTG9jayk7Ci0gICAgICAgIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRl
bnRpZmllcnMobG9ja2VyKS5hZGQoY29udGV4dElkZW50aWZpZXIoKSk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayB9OworICAgICAg
ICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKCkuYWRkKGNvbnRleHRJZGVudGlmaWVy
KCkpOwogICAgIH0KIAogICAgIGlmIChtX3RvcE9yaWdpbi0+aGFzVW5pdmVyc2FsQWNjZXNzKCkp
CkBAIC0xMTAsOCArMTA5LDggQEAgV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29w
ZSgpCiAgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2spOwot
ICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKGxvY2tlcikucmVtb3ZlKGNv
bnRleHRJZGVudGlmaWVyKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsV29ya2VyR2xv
YmFsU2NvcGVJZGVudGlmaWVyc0xvY2sgfTsKKyAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJ
ZGVudGlmaWVycygpLnJlbW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBt
X3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKQEAgLTU4Niw4ICs1ODUsOCBAQCB2b2lkIFdvcmtlckds
b2JhbFNjb3BlOjpkZWxldGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIAog
dm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2VycyhTeW5jaHJvbm91
cyBzeW5jaHJvbm91cykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFsbFdvcmtlckds
b2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrKTsKLSAgICBmb3IgKGF1dG8mIGdsb2JhbFNjb3BlSWRl
bnRpZmllciA6IGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2VyKSkgeworICAg
IExvY2tlciBsb2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayB9Owor
ICAgIGZvciAoYXV0byYgZ2xvYmFsU2NvcGVJZGVudGlmaWVyIDogYWxsV29ya2VyR2xvYmFsU2Nv
cGVJZGVudGlmaWVycygpKSB7CiAgICAgICAgIHBvc3RUYXNrVG8oZ2xvYmFsU2NvcGVJZGVudGlm
aWVyLCBbc3luY2hyb25vdXNdKGF1dG8mIGNvbnRleHQpIHsKICAgICAgICAgICAgIGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5yZWxlYXNlTWVtb3J5KHN5bmNocm9ub3VzKTsK
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9y
V29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5jcHAKaW5kZXggMDA3NWE0ZTUwNDhkYTJiOTZiZmYwMmNhOGM2YjIzMzZlZmE4MjIy
Ni4uYThlYTk5YmM1ZmZlZDFhM2NjZDg2MjhlZjljN2EwNTE2ZmFiYmEyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcApAQCAtNDAsMTAg
KzQwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9jayYgV29ya2VyT3JXb3JrbGV0
VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpCitDaGVja2VkTG9jayBXb3JrZXJP
cldvcmtsZXRUaHJlYWQ6OnNfd29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2s7CisKK0NoZWNrZWRM
b2NrJiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkK
IHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJu
IHNfd29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2s7CiB9CiAKIEhhc2hTZXQ8V29ya2VyT3JXb3Jr
bGV0VGhyZWFkKj4mIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFk
cygpCkBAIC01NiwxMyArNTcsMTMgQEAgSGFzaFNldDxXb3JrZXJPcldvcmtsZXRUaHJlYWQqPiYg
V29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkKIFdvcmtlck9y
V29ya2xldFRocmVhZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICB3b3JrZXJPcldvcmts
ZXRUaHJlYWRzKCkuYWRkKHRoaXMpOwogfQogCiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6On5Xb3Jr
ZXJPcldvcmtsZXRUaHJlYWQoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod29ya2Vy
T3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdvcmtlck9yV29y
a2xldFRocmVhZHNMb2NrKCkgfTsKICAgICBBU1NFUlQod29ya2VyT3JXb3JrbGV0VGhyZWFkcygp
LmNvbnRhaW5zKHRoaXMpKTsKICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkucmVtb3ZlKHRo
aXMpOwogfQpAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpy
ZXN1bWUoKQogCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdv
cmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyB3b3JrZXJP
cldvcmtsZXRUaHJlYWRzTG9jaygpIH07CiAgICAgZm9yIChhdXRvKiB3b3JrZXJPcldvcmtsZXRU
aHJlYWQgOiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkpIHsKICAgICAgICAgd29ya2VyT3JXb3Jr
bGV0VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSB7CiAgICAgICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXggNGYy
MWFlYjQ1MGM1ZjU1YzgyZjI5ZTM3NGQwZTNjNjY4Njc3Yzk4Yy4uOTczZmM3MTA0YzYzZmQxYTNk
N2U1OGYwNTYyZjEyYjM2MWE3Y2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldFRocmVhZC5oCkBAIC0yNiw5ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKQEAgLTY1LDggKzY1
LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBzdGF0aWMgSGFzaFNldDxXb3JrZXJPcldvcmts
ZXRUaHJlYWQqPiYgd29ya2VyT3JXb3JrbGV0VGhyZWFkcygpOwotICAgIHN0YXRpYyBMb2NrJiB3
b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpOworICAgIHN0YXRpYyBIYXNoU2V0PFdvcmtlck9y
V29ya2xldFRocmVhZCo+JiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkgV1RGX1JFUVVJUkVTX0xP
Q0sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgc3RhdGljIENoZWNrZWRMb2Nr
JiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc193b3JrZXJP
cldvcmtsZXRUaHJlYWRzTG9jayk7CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKIHByb3RlY3RlZDoKQEAgLTgyLDYgKzgyLDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkV2FpdEZvcldlYkluc3BlY3Rvck9uU3Rh
cnR1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2sg
c193b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jazsKKwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7
CiAgICAgTG9jayBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrOwogICAgIFJlZlB0
cjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gbV9nbG9iYWxTY29wZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNWVmMmI2ZWMwOTZi
NGZlMGEwZmEzNTA3YjNjMjcxMTQwNzNkZmFkYi4uZTQzY2U0MjJiYzFjMmViMzE5NjU3YjJmOTFk
ZGFkYWJlNWY5Y2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTYwLDggKzYwLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTdGF0
ZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRlZFN0YXRlIHsgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpTdGF0ZTo6UnVubmluZyB9OwotTG9jayBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRlZFN0YXRlTG9jazsKLUNvbmRpdGlvbiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRlZFN0YXRlQ2hhbmdlQ29uZGl0
aW9uOworQ2hlY2tlZExvY2sgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5k
ZWRTdGF0ZUxvY2s7CitDaGVja2VkQ29uZGl0aW9uIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c3VzcGVuZGVkU3RhdGVDaGFuZ2VDb25kaXRpb247CiAKIGNvbnN0IE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+JiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1vbml0b3Jl
ZERhdGFUeXBlcygpCiB7CkBAIC0zNDksNyArMzQ5LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVz
b3VyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQoc3Vz
cGVuZGVkU3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICAgICAgeworICAgICAgICAgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgc3VzcGVuZGVkU3RhdGVM
b2NrIH07CisgICAgICAgICAgICBBU1NFUlQoc3VzcGVuZGVkU3RhdGUgIT0gU3RhdGU6OlN1c3Bl
bmRlZCk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5t
ZXJnZVN0YXRpc3RpY3MoV1RGTW92ZShzdGF0aXN0aWNzKSk7CiAgICAgICAgIHBvc3RUYXNrUmVw
bHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICAvLyBXZSBjYW4gY2FuY2Vs
IGFueSBwZW5kaW5nIHJlcXVlc3QgdG8gcHJvY2VzcyBzdGF0aXN0aWNzIHNpbmNlIHdlJ3JlIGRv
aW5nIGl0IHN5bmNocm9ub3VzbHkgYmVsb3cuCkBAIC0xNDQ0LDcgKzE0NTAsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWdncmVnYXRlZFRoaXJkUGFydHlEYXRhKENv
bXBsZXRpb25IYW5kbGVyPAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1
c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2Nr
ZXIoc3VzcGVuZGVkU3RhdGVMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBzdXNwZW5k
ZWRTdGF0ZUxvY2sgfTsKICAgICBpZiAoc3VzcGVuZGVkU3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcp
CiAgICAgICAgIHJldHVybjsKICAgICBzdXNwZW5kZWRTdGF0ZSA9IFN0YXRlOjpXaWxsU3VzcGVu
ZDsKQEAgLTE0NTQsNyArMTQ2MCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0CiAgICAgICAg
IGZvciAoYXV0byYgZGF0YWJhc2VTdG9yZSA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjphbGxTdG9yZXMoKSkKICAgICAgICAgICAgIGRhdGFiYXNlU3RvcmUtPmludGVycnVw
dCgpOwogICAgICAgICAKLSAgICAgICAgTG9ja2VyPExvY2s+IHN0YXRlTG9ja2VyKHN1c3BlbmRl
ZFN0YXRlTG9jayk7CisgICAgICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IHN1c3BlbmRlZFN0YXRl
TG9jayB9OwogICAgICAgICBBU1NFUlQoc3VzcGVuZGVkU3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRl
ZCk7CiAKICAgICAgICAgaWYgKHN1c3BlbmRlZFN0YXRlICE9IFN0YXRlOjpXaWxsU3VzcGVuZCkg
ewpAQCAtMTQ3Myw3ICsxNDc5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXQKIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgpCiB7Ci0gICAgTG9ja2VyPExv
Y2s+IHN0YXRlTG9ja2VyKHN1c3BlbmRlZFN0YXRlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9j
a2VyIHsgc3VzcGVuZGVkU3RhdGVMb2NrIH07CiAgICAgYXV0byBwcmV2aW91c1N0YXRlID0gc3Vz
cGVuZGVkU3RhdGU7CiAgICAgc3VzcGVuZGVkU3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKICAgICBp
ZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDFmYTNiZTM4NDdmZjgwNGMyNjcwMzE4
OTRiMjEyMzFkNmZlNzA0YzYuLjk2M2VhNDczZDMyODg5NzY2NWFmMmU4OTk5N2ViY2QyYWI2YjVk
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAg
LTQwLDYgKzQwLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZENvbmRp
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0zNjEsOSArMzYzLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgV2lsbFN1c3BlbmQsCiAgICAgICAgIFN1c3BlbmRlZAogICAgIH07Ci0gICAgc3RhdGlj
IFN0YXRlIHN1c3BlbmRlZFN0YXRlOwotICAgIHN0YXRpYyBMb2NrIHN1c3BlbmRlZFN0YXRlTG9j
azsKLSAgICBzdGF0aWMgQ29uZGl0aW9uIHN1c3BlbmRlZFN0YXRlQ2hhbmdlQ29uZGl0aW9uOwor
ICAgIHN0YXRpYyBDaGVja2VkTG9jayBzdXNwZW5kZWRTdGF0ZUxvY2s7CisgICAgc3RhdGljIFN0
YXRlIHN1c3BlbmRlZFN0YXRlIFdURl9HVUFSREVEX0JZX0xPQ0soc3VzcGVuZGVkU3RhdGVMb2Nr
KTsKKyAgICBzdGF0aWMgQ2hlY2tlZENvbmRpdGlvbiBzdXNwZW5kZWRTdGF0ZUNoYW5nZUNvbmRp
dGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA0YTI2NzEyZTZiNmEzMWFkMGIxMDJlN2RjOGU4ODk1
ZmFhNmVjZmU1Li4xMGE3NDMyODZlMDZjMTMzMTkwOTU3YTY5YTAyMDgzYjU0NTQwNGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMjc0LDE1ICsyNzQs
MTAgQEAgc3RhdGljIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgQ29ubmVjdGlv
bio+JiBhbGxDb25uZWN0aW9ucygpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIExvY2sm
IGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jaygpCitzdGF0aWMgQ2hlY2tlZExvY2sgYXN5bmNSZXBs
eUhhbmRsZXJNYXBMb2NrOworc3RhdGljIEhhc2hNYXA8dWludHB0cl90LCBIYXNoTWFwPHVpbnQ2
NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqKT4+PiYgYXN5bmNSZXBseUhhbmRs
ZXJNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhhc3luY1JlcGx5SGFuZGxlck1hcExvY2spCiB7Ci0g
ICAgc3RhdGljIExvY2sgbG9jazsKLSAgICByZXR1cm4gbG9jazsKLX0KLQotc3RhdGljIEhhc2hN
YXA8dWludHB0cl90LCBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERl
Y29kZXIqKT4+PiYgYXN5bmNSZXBseUhhbmRsZXJNYXAoY29uc3QgTG9ja0hvbGRlciYpCi17Ci0g
ICAgQVNTRVJUKGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jaygpLmlzSGVsZCgpKTsKKyAgICBBU1NF
UlQoYXN5bmNSZXBseUhhbmRsZXJNYXBMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDx1aW50cHRyX3QsIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRGVjb2RlciopPj4+PiBtYXA7CiAgICAgcmV0dXJuIG1hcC5nZXQoKTsKIH0K
QEAgLTEyMTksOCArMTIxNCw4IEBAIHVpbnQ2NF90IG5leHRBc3luY1JlcGx5SGFuZGxlcklEKCkK
IAogdm9pZCBhZGRBc3luY1JlcGx5SGFuZGxlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihhc3luY1JlcGx5SGFuZGxl
ck1hcExvY2soKSk7Ci0gICAgYXV0byByZXN1bHQgPSBhc3luY1JlcGx5SGFuZGxlck1hcChsb2Nr
ZXIpLmVuc3VyZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmNvbm5lY3Rpb24pLCBbXSB7
CisgICAgTG9ja2VyIGxvY2tlciB7IGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jayB9OworICAgIGF1
dG8gcmVzdWx0ID0gYXN5bmNSZXBseUhhbmRsZXJNYXAoKS5lbnN1cmUocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KCZjb25uZWN0aW9uKSwgW10gewogICAgICAgICByZXR1cm4gSGFzaE1hcDx1
aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVyKik+PigpOwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZS5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC0xMjMw
LDggKzEyMjUsOCBAQCB2b2lkIGNsZWFyQXN5bmNSZXBseUhhbmRsZXJzKGNvbnN0IENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiB7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChEZWNvZGVyKik+PiBtYXA7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihhc3luY1JlcGx5SGFuZGxlck1hcExvY2soKSk7Ci0gICAgICAgIG1hcCA9IGFzeW5jUmVwbHlI
YW5kbGVyTWFwKGxvY2tlcikudGFrZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmNvbm5l
Y3Rpb24pKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9j
ayB9OworICAgICAgICBtYXAgPSBhc3luY1JlcGx5SGFuZGxlck1hcCgpLnRha2UocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KCZjb25uZWN0aW9uKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRv
JiBoYW5kbGVyIDogbWFwLnZhbHVlcygpKSB7CkBAIC0xMjQyLDggKzEyMzcsOCBAQCB2b2lkIGNs
ZWFyQXN5bmNSZXBseUhhbmRsZXJzKGNvbnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlciopPiB0YWtlQXN5bmNSZXBseUhhbmRsZXIoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihhc3luY1JlcGx5SGFuZGxlck1hcExvY2soKSk7Ci0gICAgYXV0byYgbWFwID0g
YXN5bmNSZXBseUhhbmRsZXJNYXAobG9ja2VyKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYXN5bmNS
ZXBseUhhbmRsZXJNYXBMb2NrIH07CisgICAgYXV0byYgbWFwID0gYXN5bmNSZXBseUhhbmRsZXJN
YXAoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQocmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KCZjb25uZWN0aW9uKSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1hcC5lbmQoKSkgewog
ICAgICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS5pc1ZhbGlkS2V5KGlkZW50aWZpZXIpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJl
YW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFt
LmNwcAppbmRleCA3ZDAwNzM2OWI5Y2NlODViOGYwNTQ1N2Q2NjZkMWU0NDUxYjk2YzUyLi42ZmRl
ZDNiOWMzN2FkZGQxNTEyYTlkOGRhNDNjMWZjNmVjZTRhOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTM0LDEz
ICszNCwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJv
eHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIExvY2sgZ2xvYmFsV2Vi
U29ja2V0U3RyZWFtTWFwTG9jazsKLXN0YXRpYyBIYXNoTWFwPFdlYlNvY2tldElkZW50aWZpZXIs
IFdlYlNvY2tldFN0cmVhbSo+JiBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKQorc3RhdGljIENo
ZWNrZWRMb2NrIGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2s7CitzdGF0aWMgSGFzaE1hcDxX
ZWJTb2NrZXRJZGVudGlmaWVyLCBXZWJTb2NrZXRTdHJlYW0qPiYgZ2xvYmFsV2ViU29ja2V0U3Ry
ZWFtTWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jaykK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJTb2NrZXRJZGVudGlmaWVy
LCBXZWJTb2NrZXRTdHJlYW0qPj4gZ2xvYmFsTWFwOwogICAgIHJldHVybiBnbG9iYWxNYXA7CkBA
IC00OCw3ICs0OSw3IEBAIHN0YXRpYyBIYXNoTWFwPFdlYlNvY2tldElkZW50aWZpZXIsIFdlYlNv
Y2tldFN0cmVhbSo+JiBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoCiAKIFdlYlNvY2tldFN0cmVh
bSogV2ViU29ja2V0U3RyZWFtOjpzdHJlYW1XaXRoSWRlbnRpZmllcihXZWJTb2NrZXRJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsV2ViU29ja2V0
U3RyZWFtTWFwTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgZ2xvYmFsV2ViU29ja2V0
U3RyZWFtTWFwTG9jayB9OwogICAgIHJldHVybiBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5n
ZXQoaWRlbnRpZmllcik7CiB9CiAKQEAgLTU2LDcgKzU3LDcgQEAgdm9pZCBXZWJTb2NrZXRTdHJl
YW06Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJTb2Nr
ZXRTdHJlYW0+PiBzb2NrZXRzOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoZ2xv
YmFsV2ViU29ja2V0U3RyZWFtTWFwTG9jayk7CisgICAgICAgIExvY2tlciBzdGF0ZUxvY2tlciB7
IGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2sgfTsKICAgICAgICAgc29ja2V0cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLnNpemUoKSk7CiAgICAg
ICAgIGZvciAoYXV0byYgc3RyZWFtIDogZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwKCkudmFsdWVz
KCkpCiAgICAgICAgICAgICBzb2NrZXRzLnVuY2hlY2tlZEFwcGVuZChzdHJlYW0pOwpAQCAtNzEs
NyArNzIsNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKCkK
ICAgICAgICAgc3RyZWFtID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIg
eyBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrIH07CiAgICAgZ2xvYmFsV2ViU29ja2V0U3Ry
ZWFtTWFwKCkuY2xlYXIoKTsKIH0KIApAQCAtODcsMTQgKzg4LDE0IEBAIFdlYlNvY2tldFN0cmVh
bTo6V2ViU29ja2V0U3RyZWFtKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGVDbGllCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRTdHJlYW0odXJsLCBjYWNoZVBhcnRpdGlv
biwgbV9pZGVudGlmaWVyKSwgMCk7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxXZWJT
b2NrZXRTdHJlYW1NYXBMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBnbG9iYWxXZWJT
b2NrZXRTdHJlYW1NYXBMb2NrIH07CiAgICAgQVNTRVJUKCFnbG9iYWxXZWJTb2NrZXRTdHJlYW1N
YXAoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKICAgICBnbG9iYWxXZWJTb2NrZXRTdHJlYW1N
YXAoKS5zZXQobV9pZGVudGlmaWVyLCB0aGlzKTsKIH0KIAogV2ViU29ja2V0U3RyZWFtOjp+V2Vi
U29ja2V0U3RyZWFtKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxXZWJTb2NrZXRT
dHJlYW1NYXBMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBnbG9iYWxXZWJTb2NrZXRT
dHJlYW1NYXBMb2NrIH07CiAgICAgQVNTRVJUKGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLmNv
bnRhaW5zKG1faWRlbnRpZmllcikpOwogICAgIGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLnJl
bW92ZShtX2lkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTUludGVybmFsLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUlu
dGVybmFsLm1tCmluZGV4IDNhNzA2YzRhOGQ0OWMxZmM0N2Y4ODk0ZmFjNWI0MjVmYzc3NDhmNTYu
LmQzM2E1N2I2MzMxNDgxYjFjY2UxNjFkMTU5NTZmYjBmODJhZTZkMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRlcm5hbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NSW50ZXJuYWwubW0KQEAgLTMyLDggKzMyLDggQEAKICNpbXBv
cnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL3J1bnRpbWVfcm9vdC5oPgorI2lt
cG9ydCA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgotI2ltcG9y
dCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ0LDEwICs0NCwxMSBAQAogLy8gV3JhcHBpbmcgV2ViQ29y
ZSBpbXBsZW1lbnRhdGlvbiBvYmplY3RzCiAKICNpZmRlZiBORUVEU19XUkFQUEVSX0NBQ0hFX0xP
Q0sKLXN0YXRpYyBMb2NrIHdyYXBwZXJDYWNoZUxvY2s7Ci0jZW5kaWYKLQorc3RhdGljIENoZWNr
ZWRMb2NrIHdyYXBwZXJDYWNoZUxvY2s7CitzdGF0aWMgSGFzaE1hcDxET01PYmplY3RJbnRlcm5h
bCosIE5TT2JqZWN0ICo+JiB3cmFwcGVyQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyh3cmFwcGVy
Q2FjaGVMb2NrKQorI2Vsc2UKIHN0YXRpYyBIYXNoTWFwPERPTU9iamVjdEludGVybmFsKiwgTlNP
YmplY3QgKj4mIHdyYXBwZXJDYWNoZSgpCisjZW5kaWYKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxET01PYmplY3RJbnRlcm5hbCosIE5TT2JqZWN0ICo+PiBtYXA7CiAgICAg
cmV0dXJuIG1hcDsKQEAgLTU2LDcgKzU3LDcgQEAgc3RhdGljIEhhc2hNYXA8RE9NT2JqZWN0SW50
ZXJuYWwqLCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkKIE5TT2JqZWN0KiBnZXRET01XcmFw
cGVyKERPTU9iamVjdEludGVybmFsKiBpbXBsKQogewogI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FD
SEVfTE9DSwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hlTG9jayk7Cisg
ICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogI2VuZGlmCiAgICAg
cmV0dXJuIHdyYXBwZXJDYWNoZSgpLmdldChpbXBsKTsKIH0KQEAgLTY0LDcgKzY1LDcgQEAgTlNP
YmplY3QqIGdldERPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB2b2lkIGFkZERP
TVdyYXBwZXIoTlNPYmplY3QqIHdyYXBwZXIsIERPTU9iamVjdEludGVybmFsKiBpbXBsKQogewog
I2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sod3JhcHBlckNhY2hlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgd3JhcHBlckNh
Y2hlTG9jayB9OwogI2VuZGlmCiAgICAgd3JhcHBlckNhY2hlKCkuc2V0KGltcGwsIHdyYXBwZXIp
OwogfQpAQCAtNzIsNyArNzMsNyBAQCB2b2lkIGFkZERPTVdyYXBwZXIoTlNPYmplY3QqIHdyYXBw
ZXIsIERPTU9iamVjdEludGVybmFsKiBpbXBsKQogdm9pZCByZW1vdmVET01XcmFwcGVyKERPTU9i
amVjdEludGVybmFsKiBpbXBsKQogewogI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBlckNhY2hlTG9jayk7CisgICAgTG9ja2Vy
IHN0YXRlTG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogI2VuZGlmCiAgICAgd3JhcHBlckNh
Y2hlKCkucmVtb3ZlKGltcGwpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429256</attachid>
            <date>2021-05-20 18:29:34 -0700</date>
            <delta_ts>2021-05-21 10:50:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226040-20210520182933.patch</filename>
            <type>text/plain</type>
            <size>127336</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI2NDZlYTk2Mjk1ZTg3Njk5OWIxMjZl
OTM1ODk2NmVmMGFlNjM1ODguLmIzNmNmNTBiNjBiNWQyZDM5OGRkYzlhMjA0Yjc0NjFjZTY1MTNk
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hl
Y2tlZExvY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tzIHNvIHRoYXQgd2Ug
Y2FuIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6YWxsVGhyZWFkc0xv
Y2spOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6ZGlkRXhpdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9V
UkwuY3BwOgorICAgICAgICAoV1RGOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXVEY6
OnJlZ2lzdGVyRGVmYXVsdFBvcnRGb3JQcm90b2NvbEZvclRlc3RpbmcpOgorICAgICAgICAoV1RG
OjpjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKFdU
Rjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0Yu
Y3BwOgorICAgICAgICAoV1RGOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXVEY6OnBs
YXRmb3JtTGFuZ3VhZ2VEaWRDaGFuZ2UpOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmdWaWV3OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdURjo6U3RyaW5n
Vmlldzo6YWRvcHRVbmRlcmx5aW5nU3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6
c2V0VW5kZXJseWluZ1N0cmluZyk6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9y
SUNVLmNwcDoKKyAgICAgICAgKFdURjo6Q29sbGF0b3I6OkNvbGxhdG9yKToKKyAgICAgICAgKFdU
Rjo6Q29sbGF0b3I6On5Db2xsYXRvcik6CisKIDIwMjEtMDUtMTkgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTmF2
aWdhdGlvbiBUaW1pbmcgTGV2ZWwgMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1NzdkM2QxNDllN2U1M2UzZjhl
NzRiNGU3ZDY5YTlmNWQ1NGIxYWEuLjVmNmJlNjE0MTk4MTVjOGYxZDBjYmJmODE2MjAzNDQ5YzNk
ZThkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzAgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExv
Y2tzIHdpdGggQ2hlY2tlZExvY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYwNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hlY2tlZExvY2tz
IHNvIHRoYXQgd2UgY2FuIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lz
LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25D
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VyaWFsaXphdGlv
bkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp+SURCU2VyaWFsaXphdGlvbkNv
bnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRGF0YUNoYW5uZWw6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hh
bm5lbDo6cmVtb3ZlRnJvbURhdGFDaGFubmVsTG9jYWxNYXBJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6aGFuZGxlckZyb21JZGVudGlmaWVyKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldU
Rl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmdldENhY2hlZFZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6Omluc3RhbmNl
c0xvY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2aWNlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQ
aXBlbGluZTo6aW5zdGFuY2VzTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQaXBlbGlu
ZTo6V2ViR1BVUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUGlwZWxpbmU6On5X
ZWJHUFVQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6fldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2
ZVdlYlNvY2tldHNMb2NrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Lmg6CisgICAgICAgICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0SlNXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEpTV3JhcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
cmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6
cmVnaXN0ZXJBbGdvcml0aG0pOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeS5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlUG9ydDo6ZGVyZWYgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBv
cnQ6OmlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6Om5vdGlmeU1lc3NhZ2VBdmFpbGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojpjb250ZXh0SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZW1vdmVGcm9tQ29udGV4dHNNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6fkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xQcm9ncmFtOjppbnN0YW5jZXNMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJv
Z3JhbTo6fldlYkdMUHJvZ3JhbSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp+V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0VsZW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhc0FnZW50OjplbmFibGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
d2ViU29ja2V0Rm9yUmVxdWVzdElkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5l
dHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5l
dHdvcmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
TmV0d29ya0FnZW50Lmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6aXNBY2Nlc3NBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWxsb3dBY2Nlc3NUbyk6Cisg
ICAgICAgICogcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKToK
KyAgICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cGVuZGluZ0Rpc3BhdGNoZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6ZGlzcGF0Y2hPbmVUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmg6CisgICAgICAgICogcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsQnVpbHRpblNj
aGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1l
UmVnaXN0ZXJlZEFzTG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVJc0hhbmRsZWRCeVNjaGVtZUhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRy
ZWF0VVJMU2NoZW1lQXNMb2NhbCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNE
aXNwbGF5SXNvbGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNTZWN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmNhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3Np
bmdDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1
cml0eVBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2No
ZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25l
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0
aW9uQ2FjaGVGb3JVUkxTY2hlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9GRlRG
cmFtZU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAg
ICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZmZ0U2V0dXBGb3JTaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVR
VUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjppbnN0YWxsZWRNZWRpYUVuZ2luZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnJlc2V0TWVkaWFFbmdpbmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JF
UVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlUUxQcmV2aWV3Q29udmVydGVy
Rm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxl
Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Lm1tOgorICAgICAgICAoV1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoK1tXZWJE
YXRhYmFzZVRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tDb250cm9sbGVyIHN0YXJ0QmFja2dyb3Vu
ZFRhc2tdKToKKyAgICAgICAgKCtbV2ViRGF0YWJhc2VUcmFuc2FjdGlvbkJhY2tncm91bmRUYXNr
Q29udHJvbGxlciBlbmRCYWNrZ3JvdW5kVGFza10pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1VUSVV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19M
T0NLKToKKyAgICAgICAgKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZSk6CisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldURl9HVUFS
REVEX0JZX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNldElzRGF0
YWJhc2VPcGVuaW5nRm9yYmlkZGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
OjpvcGVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6V1RGX0dVQVJERURf
QllfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OnNldENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmluY3JlbWVu
dFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbkluUHJv
Z3Jlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29y
ZTo6bmV3VGV4dENvZGVjKToKKyAgICAgICAgKFdlYkNvcmU6OmF0b21DYW5vbmljYWxUZXh0RW5j
b2RpbmdOYW1lKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
Oldvcmtlckdsb2JhbFNjb3BlOjpyZWxlYXNlTWVtb3J5SW5Xb3JrZXJzKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6fldvcmtlck9yV29ya2xl
dFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnJlbGVh
c2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcyk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRUaHJlYWQuaDoKKwogMjAyMS0wNS0yMCAgQ2hyaXMgTG9yZCAgPGNsb3Jk
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gU3BhdGlhbCBuYXZpZ2F0aW9uIHRlc3RzIGZh
aWwgd2l0aCBhc3luYyBvdmVyZmxvdyBzY3JvbGxpbmcgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxN2Fj
MWVhZWVlMzRmYzBjMTgzZWZiOWZmZDc2NDg3NDM0YzJiZGU4Li45M2IwZWU2ZDVlZGMzYWE5NDBm
ZjIyMTNhZjcwMDRjMGZlNWJmNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA1
LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBt
b3JlIHN0YXRpYyBMb2NrcyB3aXRoIENoZWNrZWRMb2NrcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MDQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBtb3JlIHN0YXRpYyBMb2NrcyB3aXRo
IENoZWNrZWRMb2NrcyBzbyB0aGF0IHdlIGNhbiBiZW5lZml0IGZyb20gQ2xhbmcgVGhyZWFkIFNh
ZmV0eSBBbmFseXNpcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
dW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKElQQzo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoSVBDOjphZGRB
c3luY1JlcGx5SGFuZGxlcik6CisgICAgICAgIChJUEM6OmNsZWFyQXN5bmNSZXBseUhhbmRsZXJz
KToKKyAgICAgICAgKElQQzo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNvY2tldFN0cmVhbTo6c3RyZWFtV2l0aElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTdHJlYW06Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNvY2tldFN0cmVhbTo6V2ViU29ja2V0U3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U29ja2V0U3RyZWFtOjp+V2ViU29ja2V0U3RyZWFtKToKKwogMjAyMS0wNS0yMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydGluZyByMjc3NjA2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGMzOTM4
ZmE3ZGYyMmYzOGRkNDM2ZDJhN2RkMmM1YWMwZjUwMjQ4MWMuLjE1NzZhN2FmZGI1NjBhMjk3Njhh
YzEzYWM3YzRlMzljN2U1ZWFjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNS0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgbW9yZSBzdGF0aWMgTG9ja3Mgd2l0aCBDaGVja2VkTG9ja3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjA0MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgbW9y
ZSBzdGF0aWMgTG9ja3Mgd2l0aCBDaGVja2VkTG9ja3Mgc28gdGhhdCB3ZSBjYW4gYmVuZWZpdCBm
cm9tIENsYW5nIFRocmVhZCBTYWZldHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiBET00vRE9NSW50
ZXJuYWwubW06CisgICAgICAgIChnZXRET01XcmFwcGVyKToKKyAgICAgICAgKGFkZERPTVdyYXBw
ZXIpOgorICAgICAgICAocmVtb3ZlRE9NV3JhcHBlcik6CisKIDIwMjEtMDUtMjAgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFtXZWJJRExdIFJlbW92
ZSBbSW1wbGljaXRUaGlzXSBhbmQgW0N1c3RvbVByb3h5VG9KU09iamVjdF0gZXh0ZW5kZWQgYXR0
cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggZmYxNjc5MDJmYzdjNDBhNDU0NjQ1MzAzMjE5
MzFmY2EzYzczOTVkNi4uNTcwYjc4YjQ5YjMwOWZmNDhhZDg5MGFkMTUzNGM4YzI3NWMyOWI4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBXVEYgewog
CitDaGVja2VkTG9jayBUaHJlYWQ6OnNfYWxsVGhyZWFkc0xvY2s7CisKIHN0YXRpYyBPcHRpb25h
bDxzaXplX3Q+IHN0YWNrU2l6ZShUaHJlYWRUeXBlIHRocmVhZFR5cGUpCiB7CiAgICAgLy8gUmV0
dXJuIHRoZSBzdGFjayBzaXplIGZvciB0aGUgY3JlYXRlZCB0aHJlYWQgYmFzZWQgb24gaXRzIHR5
cGUuCkBAIC05MSw3ICs5Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogfTsKIAotSGFzaFNldDxUaHJl
YWQqPiYgVGhyZWFkOjphbGxUaHJlYWRzKGNvbnN0IExvY2tIb2xkZXImKQorSGFzaFNldDxUaHJl
YWQqPiYgVGhyZWFkOjphbGxUaHJlYWRzKCkKIHsKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8VGhyZWFkKj4+IGFsbFRocmVhZHM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CkBAIC0xMDEsMTAgKzEwMyw5IEBAIEhhc2hTZXQ8VGhyZWFkKj4mIFRocmVh
ZDo6YWxsVGhyZWFkcyhjb25zdCBMb2NrSG9sZGVyJikKICAgICByZXR1cm4gYWxsVGhyZWFkczsK
IH0KIAotTG9jayYgVGhyZWFkOjphbGxUaHJlYWRzTXV0ZXgoKQorQ2hlY2tlZExvY2smIFRocmVh
ZDo6YWxsVGhyZWFkc0xvY2soKQogewotICAgIHN0YXRpYyBMb2NrIG11dGV4OwotICAgIHJldHVy
biBtdXRleDsKKyAgICByZXR1cm4gc19hbGxUaHJlYWRzTG9jazsKIH0KIAogY29uc3QgY2hhciog
VGhyZWFkOjpub3JtYWxpemVUaHJlYWROYW1lKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpCkBAIC0y
MTgsOSArMjE5LDkgQEAgUmVmPFRocmVhZD4gVGhyZWFkOjpjcmVhdGUoY29uc3QgY2hhciogbmFt
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGVudHJ5UG9pbnQsIFRocmUKICAgICAvLyBjYWxsZWQgVGhy
ZWFkOjpkaWRFeGl0IHRvIHVucmVnaXN0ZXIgaXRzZWxmIGZyb20gYWxsVGhyZWFkcy4gUmVnaXN0
ZXJpbmcgc3VjaCBhIHRocmVhZCB3aWxsIHJlZ2lzdGVyIGEgc3RhbGUgdGhyZWFkIHBvaW50ZXIg
dG8gYWxsVGhyZWFkcywgd2hpY2ggd2lsbCBub3QgYmUgcmVtb3ZlZAogICAgIC8vIGV2ZW4gYWZ0
ZXIgVGhyZWFkIGlzIGRlc3Ryb3llZC4gUmVnaXN0ZXIgYSB0aHJlYWQgb25seSB3aGVuIGl0IGhh
cyBub3QgdW5yZWdpc3RlcmVkIGl0c2VsZiBmcm9tIGFsbFRocmVhZHMgeWV0LgogICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhbGxUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBhbGxUaHJlYWRzTG9jaygpIH07CiAgICAgICAgIGlmICghdGhyZWFk
LT5tX2RpZFVucmVnaXN0ZXJGcm9tQWxsVGhyZWFkcykKLSAgICAgICAgICAgIGFsbFRocmVhZHMo
bG9ja2VyKS5hZGQodGhyZWFkLnB0cigpKTsKKyAgICAgICAgICAgIGFsbFRocmVhZHMoKS5hZGQo
dGhyZWFkLnB0cigpKTsKICAgICB9CiAKICAgICBBU1NFUlQoIXRocmVhZC0+c3RhY2soKS5pc0Vt
cHR5KCkpOwpAQCAtMjQ0LDggKzI0NSw4IEBAIHN0YXRpYyBib29sIHNob3VsZFJlbW92ZVRocmVh
ZEZyb21UaHJlYWRHcm91cCgpCiB2b2lkIFRocmVhZDo6ZGlkRXhpdCgpCiB7CiAgICAgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFsbFRocmVhZHNNdXRleCgpKTsKLSAgICAgICAg
YWxsVGhyZWFkcyhsb2NrZXIpLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGFsbFRocmVhZHNMb2NrKCkgfTsKKyAgICAgICAgYWxsVGhyZWFkcygpLnJlbW92ZSh0aGlzKTsK
ICAgICAgICAgbV9kaWRVbnJlZ2lzdGVyRnJvbUFsbFRocmVhZHMgPSB0cnVlOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaAppbmRleCA5NDk1ZDZjMWIwOGFhNGRjZmM1MGRkMTMwZWEzM2YxMzY0MmJjOTk2
Li5jNDJlMzA0ZjMyYmI0Zjc4MmI2ODIyMTIxZDMwNWI2OTlhMTMyZjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
aApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHN0ZGludC5o
PgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAgLTExNiw4ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCiAgICAgLy8gU2V0IG9mIGFsbCBXVEY6OlRocmVh
ZCBjcmVhdGVkIHRocmVhZHMuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBIYXNoU2V0
PFRocmVhZCo+JiBhbGxUaHJlYWRzKGNvbnN0IExvY2tIb2xkZXImKTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIExvY2smIGFsbFRocmVhZHNNdXRleCgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSGFzaFNldDxUaHJlYWQqPiYgYWxsVGhyZWFkcygpIFdURl9SRVFVSVJF
U19MT0NLKGFsbFRocmVhZHNMb2NrKCkpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Q2hlY2tlZExvY2smIGFsbFRocmVhZHNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2FsbFRocmVh
ZHNMb2NrKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1iZXJPZlRocmVh
ZEdyb3VwcygpOwogCkBAIC0zMjgsNiArMzI5LDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBU
aHJlYWQqIGN1cnJlbnRNYXlCZU51bGwoKTsKICNlbmRpZgogCisgICAgc3RhdGljIENoZWNrZWRM
b2NrIHNfYWxsVGhyZWFkc0xvY2s7CisKICAgICBKb2luYWJsZVN0YXRlIG1fam9pbmFibGVTdGF0
ZSB7IEpvaW5hYmxlIH07CiAgICAgYm9vbCBtX2lzU2h1dHRpbmdEb3duIDogMTsKICAgICBib29s
IG1fZGlkRXhpdCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291
cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCBhNWQ3NGFmZWFlY2VlYTdjZGRmN2JiMTc5ZDQyM2Q5
ZGZjOTUyYzBkLi40ZDZiMGQ1NWMxMGFkYjY3ZDBmMWU3ZWZiM2EzNTRhYTY1NzdkMDlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRlIDxz
dGRpby5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtMjY3LDE2ICsyNjgs
MTYgQEAgc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9jb2xJc0dvb2QoU3RyaW5nVmlldyBwcm90b2Nv
bCkKIAogI2VuZGlmCiAKLXN0YXRpYyBMb2NrIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JU
ZXN0aW5nTG9jazsKK3N0YXRpYyBDaGVja2VkTG9jayBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZ0xvY2s7CiAKIHVzaW5nIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0
aW5nID0gSGFzaE1hcDxTdHJpbmcsIHVpbnQxNl90PjsKLXN0YXRpYyBEZWZhdWx0UG9ydEZvclBy
b3RvY29sTWFwRm9yVGVzdGluZyomIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
KCkKK3N0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyomIGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkgV1RGX1JFUVVJUkVTX0xPQ0soZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKQogewogICAgIHN0YXRpYyBEZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZyogZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKICAg
ICByZXR1cm4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcDsKIH0KIAotc3RhdGljIERlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZygpCitzdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcmIGVuc3VyZURlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkgV1RGX1JFUVVJ
UkVTX0xPQ0soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKQogewogICAg
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKiYgZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CiAgICAgaWYg
KCFkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwKQpAQCAtMjg2LDI1ICsyODcsMjYgQEAgc3RhdGlj
IERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGUKIAogdm9pZCByZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xG
b3JUZXN0aW5nKHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGlu
Z0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9y
VGVzdGluZ0xvY2sgfTsKICAgICBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVz
dGluZygpLmFkZChwcm90b2NvbCwgcG9ydCk7CiB9CiAKIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZv
clByb3RvY29sTWFwRm9yVGVzdGluZygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhk
ZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZ0xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZ0xvY2sgfTsKICAgICBpZiAo
YXV0byogbWFwID0gZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkKICAgICAg
ICAgbWFwLT5jbGVhcigpOwogfQogCiBPcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKQogewotICAgIGlmIChhdXRvKiBvdmVycmlkZU1h
cCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkpIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZ0xv
Y2spOwotICAgICAgICBBU1NFUlQob3ZlcnJpZGVNYXApOyAvLyBObyBuZWVkIHRvIG51bGwgY2hl
Y2sgYWdhaW4gaGVyZSBzaW5jZSBvdmVycmlkZU1hcCBjYW5ub3QgYmVjb21lIG51bGwgYWZ0ZXIg
YmVpbmcgbm9uLW51bGwuCi0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBvdmVycmlkZU1hcC0+Zmlu
ZChwcm90b2NvbC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwotICAgICAgICBpZiAoaXRlcmF0
b3IgIT0gb3ZlcnJpZGVNYXAtPmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52
YWx1ZTsKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZ0xvY2sgfTsKKyAgICAgICAgaWYgKGF1dG8qIG92ZXJyaWRlTWFwID0g
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKSkgeworICAgICAgICAgICAgYXV0
byBpdGVyYXRvciA9IG92ZXJyaWRlTWFwLT5maW5kKHByb3RvY29sLnRvU3RyaW5nV2l0aG91dENv
cHlpbmcoKSk7CisgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0gb3ZlcnJpZGVNYXAtPmVuZCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7CisgICAgICAgIH0KICAg
ICB9CiAgICAgcmV0dXJuIFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChwcm90b2Nv
bCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwCmluZGV4IDUzYzBlZjBkYzAwYjM5NDJkMzli
NjU4YThkY2MwZDZlMDRjZjZkMTMuLmUwNzMxMTU0MjkxYmZkMDdjNGNjMTZkYTA0MmFhYWRiNTlj
OWUzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8dW5pY29kZS91bG9jLmg+CiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmg+CkBAIC0zOCw3
ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1zdGF0aWMgTG9jayBwcmVmZXJyZWRMYW5n
dWFnZXNNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9jayBwcmVmZXJyZWRMYW5ndWFnZXNMb2NrOwog
CiAjaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIHZvaWQgbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENo
YW5nZShDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCosIENGU3RyaW5nUmVmLCBjb25zdCB2
b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmKQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgdm9pZCBsYW5n
dWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwg
Q0ZTdHJpbgogfQogI2VuZGlmCiAKLXN0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFu
Z3VhZ2VzKCkKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2VzKCkgV1RG
X1JFUVVJUkVTX0xPQ0socHJlZmVycmVkTGFuZ3VhZ2VzTG9jaykKIHsKICAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFZlY3RvcjxTdHJpbmc+PiBsYW5ndWFnZXM7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBTdHJpbmcgaHR0
cFN0eWxlTGFuZ3VhZ2VDb2RlKENGU3RyaW5nUmVmIGxhbmd1YWdlKQogdm9pZCBwbGF0Zm9ybUxh
bmd1YWdlRGlkQ2hhbmdlKCkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2socHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJl
ZmVycmVkTGFuZ3VhZ2VzTG9jayB9OwogICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZXMoKS5jbGVh
cigpOwogICAgIH0KIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIGxpc3RlbkZvckxhbmd1YWdl
Q2hhbmdlTm90aWZpY2F0aW9ucygpCiAKIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwcmVmZXJyZWRM
YW5ndWFnZXNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHByZWZlcnJlZExhbmd1YWdlc0xv
Y2sgfTsKICAgICBWZWN0b3I8U3RyaW5nPiYgdXNlclByZWZlcnJlZExhbmd1YWdlcyA9IHByZWZl
cnJlZExhbmd1YWdlcygpOwogCiAgICAgaWYgKHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaXNFbXB0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCAzY2IwMTgzYzgwMTFhZDhk
YTgyYzBlOTQyYjc2OTM4OTgxYmQzZGNlLi4zZTg0NjNmNDkzMDg5ZTM1YWQ5NzQzMGQ1ODMxOWI2
MzFjZDQ1NjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTMwLDggKzMwLDgg
QEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bm9y
bTIuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4K
ICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KQEAgLTM2MCwxNSArMzYwLDExIEBAIFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdTdHJpbmc6OlVu
ZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nKQogewogfQogCi1zdGF0aWMg
TG9jayB1bmRlcmx5aW5nU3RyaW5nc011dGV4Oworc3RhdGljIENoZWNrZWRMb2NrIHVuZGVybHlp
bmdTdHJpbmdzTG9jazsKIAotc3RhdGljIEhhc2hNYXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0cmlu
Z1ZpZXc6OlVuZGVybHlpbmdTdHJpbmcqPiYgdW5kZXJseWluZ1N0cmluZ3MoKQorc3RhdGljIEhh
c2hNYXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdTdHJpbmcqPiYg
dW5kZXJseWluZ1N0cmluZ3MoKSBXVEZfUkVRVUlSRVNfTE9DSyh1bmRlcmx5aW5nU3RyaW5nc0xv
Y2spCiB7Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFN0cmlu
Z0ltcGwqLCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5nU3RyaW5nKj4+IG1hcDsKLSAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
ewotICAgICAgICBtYXAuY29uc3RydWN0KCk7Ci0gICAgfSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8Y29uc3QgU3RyaW5nSW1wbCosIFN0cmluZ1ZpZXc6OlVuZGVybHlpbmdT
dHJpbmcqPj4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKQEAgLTM3Niw3ICszNzIsNyBAQCB2
b2lkIFN0cmluZ1ZpZXc6OmludmFsaWRhdGUoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nVG9CZURl
c3Ryb3llZCkKIHsKICAgICBVbmRlcmx5aW5nU3RyaW5nKiB1bmRlcmx5aW5nU3RyaW5nOwogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh1bmRlcmx5aW5nU3RyaW5nc011dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHVuZGVybHlpbmdTdHJpbmdzTG9jayB9OwogICAg
ICAgICB1bmRlcmx5aW5nU3RyaW5nID0gdW5kZXJseWluZ1N0cmluZ3MoKS50YWtlKCZzdHJpbmdU
b0JlRGVzdHJveWVkKTsKICAgICAgICAgaWYgKCF1bmRlcmx5aW5nU3RyaW5nKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzkzLDcgKzM4OSw3IEBAIGJvb2wgU3RyaW5nVmlldzo6dW5kZXJseWlu
Z1N0cmluZ0lzVmFsaWQoKSBjb25zdAogdm9pZCBTdHJpbmdWaWV3OjphZG9wdFVuZGVybHlpbmdT
dHJpbmcoVW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0cmluZykKIHsKICAgICBpZiAobV91
bmRlcmx5aW5nU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodW5kZXJs
eWluZ1N0cmluZ3NNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB1bmRlcmx5aW5nU3Ry
aW5nc0xvY2sgfTsKICAgICAgICAgaWYgKCEtLW1fdW5kZXJseWluZ1N0cmluZy0+cmVmQ291bnQp
IHsKICAgICAgICAgICAgIGlmIChtX3VuZGVybHlpbmdTdHJpbmctPmlzVmFsaWQpIHsKICAgICAg
ICAgICAgICAgICB1bmRlcmx5aW5nU3RyaW5ncygpLnJlbW92ZSgmbV91bmRlcmx5aW5nU3RyaW5n
LT5zdHJpbmcpOwpAQCAtNDEwLDcgKzQwNiw3IEBAIHZvaWQgU3RyaW5nVmlldzo6c2V0VW5kZXJs
eWluZ1N0cmluZyhjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgaWYgKCFzdHJpbmcpCiAg
ICAgICAgIHVuZGVybHlpbmdTdHJpbmcgPSBudWxscHRyOwogICAgIGVsc2UgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgdW5kZXJseWluZ1N0cmluZ3NMb2NrIH07CiAgICAgICAgIGF1dG8gcmVz
dWx0ID0gdW5kZXJseWluZ1N0cmluZ3MoKS5hZGQoc3RyaW5nLCBudWxscHRyKTsKICAgICAgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG5ldyBVbmRlcmx5aW5nU3RyaW5nKCpzdHJpbmcpOwpAQCAtNDI1LDcgKzQyMSw3IEBAIHZv
aWQgU3RyaW5nVmlldzo6c2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdWaWV3JiBvdGhl
clN0cmluZykKIHsKICAgICBVbmRlcmx5aW5nU3RyaW5nKiB1bmRlcmx5aW5nU3RyaW5nID0gb3Ro
ZXJTdHJpbmcubV91bmRlcmx5aW5nU3RyaW5nOwogICAgIGlmICh1bmRlcmx5aW5nU3RyaW5nKSB7
Ci0gICAgICAgIC8vIEl0J3Mgc2FmZSB0byBpbmMgdGhlIHJlZkNvdW50IGhlcmUgd2l0aG91dCBs
b2NraW5nIHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgKKyAgICAgICAgLy8gSXQncyBzYWZlIHRvIGlu
YyB0aGUgcmVmQ291bnQgaGVyZSB3aXRob3V0IGxvY2tpbmcgdW5kZXJseWluZ1N0cmluZ3NMb2Nr
CiAgICAgICAgIC8vIGJlY2F1c2UgVW5kZXJseWluZ1N0cmluZzo6cmVmQ291bnQgaXMgYSBzdGQ6
OmF0b21pY191aW50LCBhbmQgd2UncmUKICAgICAgICAgLy8gZ3VhcmFudGVlZCB0aGF0IHRoZSBT
dHJpbmdWaWV3IHdlJ3JlIGNvcHlpbmcgaXQgZnJvbSB3aWxsIGF0IGxlYXN0CiAgICAgICAgIC8v
IGhhdmUgMSByZWYgb24gaXQsIHRoZXJlYnkga2VlcGluZyBpdCBhbGl2ZSByZWdhcmRsZXNzIG9m
IHdoYXQgb3RoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxh
dG9ySUNVLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcApp
bmRleCA2NzY2MDczYzlmNmI5Y2UwZmE1NjQxZmE1Y2FiMTVhOWIwMWZjYmFkLi5mMTdlMDI1OWFj
YmFjZDE3MmU2ZWY3MzZhZWM4OTZhNmUyOWJhYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29k
ZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKICNpbmNsdWRlIDxtdXRl
eD4KICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcu
aD4KIAogI2lmIE9TKERBUldJTikgJiYgVVNFKENGKQpAQCAtNDUsMTIgKzQ1LDExIEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi1zdGF0aWMgVUNvbGxhdG9yKiBjYWNoZWRDb2xsYXRvcjsKK3N0YXRp
YyBDaGVja2VkTG9jayBjYWNoZWRDb2xsYXRvckxvY2s7CitzdGF0aWMgVUNvbGxhdG9yKiBjYWNo
ZWRDb2xsYXRvciBXVEZfR1VBUkRFRF9CWV9MT0NLKGNhY2hlZENvbGxhdG9yTG9jayk7CiBzdGF0
aWMgY2hhciogY2FjaGVkQ29sbGF0b3JMb2NhbGU7CiBzdGF0aWMgYm9vbCBjYWNoZWRDb2xsYXRv
clNob3VsZFNvcnRMb3dlcmNhc2VGaXJzdDsKIAotc3RhdGljIExvY2sgY2FjaGVkQ29sbGF0b3JN
dXRleDsKLQogI2lmICEoT1MoREFSV0lOKSAmJiBVU0UoQ0YpKQogCiBzdGF0aWMgaW5saW5lIGNv
bnN0IGNoYXIqIHJlc29sdmVEZWZhdWx0TG9jYWxlKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTEw
Niw3ICsxMDUsNyBAQCBDb2xsYXRvcjo6Q29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxlLCBib29s
IHNob3VsZFNvcnRMb3dlcmNhc2VGaXJzdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjYWNoZWRD
b2xsYXRvck11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGNhY2hlZENvbGxhdG9yTG9j
ayB9OwogICAgICAgICBpZiAoY2FjaGVkQ29sbGF0b3IgJiYgbG9jYWxlc01hdGNoKGNhY2hlZENv
bGxhdG9yTG9jYWxlLCBsb2NhbGUpICYmIGNhY2hlZENvbGxhdG9yU2hvdWxkU29ydExvd2VyY2Fz
ZUZpcnN0ID09IHNob3VsZFNvcnRMb3dlcmNhc2VGaXJzdCkgewogICAgICAgICAgICAgbV9jb2xs
YXRvciA9IGNhY2hlZENvbGxhdG9yOwogICAgICAgICAgICAgbV9sb2NhbGUgPSBjYWNoZWRDb2xs
YXRvckxvY2FsZTsKQEAgLTEzNiw3ICsxMzUsNyBAQCBDb2xsYXRvcjo6Q29sbGF0b3IoY29uc3Qg
Y2hhciogbG9jYWxlLCBib29sIHNob3VsZFNvcnRMb3dlcmNhc2VGaXJzdCkKIAogQ29sbGF0b3I6
On5Db2xsYXRvcigpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjYWNoZWRDb2xsYXRv
ck11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVkQ29sbGF0b3JMb2NrIH07CiAgICAg
aWYgKGNhY2hlZENvbGxhdG9yKSB7CiAgICAgICAgIHVjb2xfY2xvc2UoY2FjaGVkQ29sbGF0b3Ip
OwogICAgICAgICBmYXN0RnJlZShjYWNoZWRDb2xsYXRvckxvY2FsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb25Db250ZXh0LmNwcAppbmRleCA5ZGQ3YWJiNTU1NTk0MmQwYzkxZWY4ODAwN2Ni
NjZkMWE3MDRkNTc4Li41Mzc2ZGQ5MGVmOGNiMjM2NmYzNTZhMGQ2NWZlOGEzY2Y3Y2E3OTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKQEAgLTI5LDE0ICsyOSwxNSBA
QAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdElubGluZXMuaD4KKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1l
c3BhY2UgSURCU2VydmVyIHsKIAotc3RhdGljIExvY2sgc2VyaWFsaXphdGlvbkNvbnRleHRNYXBN
dXRleDsKK3N0YXRpYyBDaGVja2VkTG9jayBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2s7CiAK
LXN0YXRpYyBIYXNoTWFwPFRocmVhZCosIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4mIHNlcmlh
bGl6YXRpb25Db250ZXh0TWFwKExvY2tlcjxMb2NrPiYpCitzdGF0aWMgSGFzaE1hcDxUaHJlYWQq
LCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCo+JiBzZXJpYWxpemF0aW9uQ29udGV4dE1hcCgpIFdU
Rl9SRVFVSVJFU19MT0NLKHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTG9jaykKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxUaHJlYWQqLCBJREJTZXJpYWxpemF0aW9uQ29udGV4
dCo+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKQEAgLTQ1LDggKzQ2LDggQEAgc3RhdGljIEhhc2hN
YXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQqPiYgc2VyaWFsaXphdGlvbkNvbnRl
eHRNYXAoTG9ja2UKIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gSURCU2VyaWFsaXphdGlv
bkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhZCgpCiB7CiAgICAgYXV0byYgdGhy
ZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzZXJpYWxp
emF0aW9uQ29udGV4dE1hcE11dGV4KTsKLSAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gc2Vy
aWFsaXphdGlvbkNvbnRleHRNYXAobG9ja2VyKS5hZGQoJnRocmVhZCwgbnVsbHB0cik7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTG9jayB9OworICAgIGF1dG9b
aXRlciwgaXNOZXdFbnRyeV0gPSBzZXJpYWxpemF0aW9uQ29udGV4dE1hcCgpLmFkZCgmdGhyZWFk
LCBudWxscHRyKTsKICAgICBpZiAoaXNOZXdFbnRyeSkgewogICAgICAgICBSZWY8SURCU2VyaWFs
aXphdGlvbkNvbnRleHQ+IHByb3RlY3RlZENvbnRleHQgPSBhZG9wdFJlZigqbmV3IElEQlNlcmlh
bGl6YXRpb25Db250ZXh0KHRocmVhZCkpOwogICAgICAgICBpdGVyLT52YWx1ZSA9IHByb3RlY3Rl
ZENvbnRleHQucHRyKCk7CkBAIC01OCwxNSArNTksMTUgQEAgUmVmPElEQlNlcmlhbGl6YXRpb25D
b250ZXh0PiBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVGb3JDdXJyZW50VGhy
ZWEKIAogSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6On5JREJTZXJpYWxpemF0aW9uQ29udGV4dCgp
CiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzZXJpYWxpemF0aW9uQ29udGV4dE1hcE11dGV4
KTsKLSAgICBBU1NFUlQodGhpcyA9PSBzZXJpYWxpemF0aW9uQ29udGV4dE1hcChsb2NrZXIpLmdl
dCgmbV90aHJlYWQpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2VyaWFsaXphdGlvbkNvbnRleHRN
YXBMb2NrIH07CisgICAgQVNTRVJUKHRoaXMgPT0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKS5n
ZXQoJm1fdGhyZWFkKSk7CiAKICAgICBpZiAobV92bSkgewogICAgICAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrKCptX3ZtKTsKICAgICAgICAgbV9nbG9iYWxPYmplY3QuY2xlYXIoKTsKICAgICAg
ICAgbV92bSA9IG51bGxwdHI7CiAgICAgfQotICAgIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKGxv
Y2tlcikucmVtb3ZlKCZtX3RocmVhZCk7CisgICAgc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKS5y
ZW1vdmUoJm1fdGhyZWFkKTsKIH0KIAogdm9pZCBJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6aW5p
dGlhbGl6ZVZNKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5jcHAKaW5kZXggOWIwMDE0Y2FhYzNlMjg0YWY4ZDJmYmIyZjY0YzM0
N2QzY2YzYjRhNS4uMTE1MDZmYmNiOTg0NzgyYzY3Yjc1ZmE5Yjk1OWU5ZjRkNzAwYWJlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIApAQCAtMjUyLDggKzI1Myw4IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNjaGVkdWxl
RGlzcGF0Y2hFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgcXVldWVUYXNrVG9EaXNwYXRj
aEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBXVEZNb3ZlKGV2ZW50KSk7CiB9
CiAKLXN0YXRpYyBMb2NrIHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2s7Ci1zdGF0aWMgSGFz
aE1hcDxSVENEYXRhQ2hhbm5lbExvY2FsSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJUQ0Rh
dGFDaGFubmVsSGFuZGxlcj4+JiBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkKK3N0YXRpYyBDaGVj
a2VkTG9jayBzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrOworc3RhdGljIEhhc2hNYXA8UlRD
RGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5l
bEhhbmRsZXI+PiYgcnRjRGF0YUNoYW5uZWxMb2NhbE1hcCgpIFdURl9SRVFVSVJFU19MT0NLKHNf
cnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2spCiB7CiAgICAgQVNTRVJUKHNfcnRjRGF0YUNoYW5u
ZWxMb2NhbE1hcExvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDxSVENEYXRhQ2hhbm5lbExvY2FsSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJU
Q0RhdGFDaGFubmVsSGFuZGxlcj4+PiBtYXA7CkBAIC0yNzksNyArMjgwLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+IFJUQ0RhdGFDaGFubmVsOjpkZXRhY2goKQog
ICAgIG1faXNEZXRhY2hlZCA9IHRydWU7CiAgICAgbV9yZWFkeVN0YXRlID0gUlRDRGF0YUNoYW5u
ZWxTdGF0ZTo6Q2xvc2VkOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX3J0Y0RhdGFD
aGFubmVsTG9jYWxNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19ydGNEYXRhQ2hhbm5l
bExvY2FsTWFwTG9jayB9OwogICAgIHJ0Y0RhdGFDaGFubmVsTG9jYWxNYXAoKS5hZGQoaWRlbnRp
ZmllcigpLmNoYW5uZWxJZGVudGlmaWVyLCBXVEZNb3ZlKG1faGFuZGxlcikpOwogCiAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4oaWRlbnRpZmllcigpLCBsYWJl
bCgpLmlzb2xhdGVkQ29weSgpLCBvcHRpb25zKCksIHN0YXRlKTsKQEAgLTI5MCwxMyArMjkxLDEz
IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnJlbW92ZUZyb21EYXRhQ2hhbm5lbExvY2FsTWFwSWZO
ZWVkZWQoKQogICAgIGlmICghbV9pc0RldGFjaGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrIH07CiAgICAgcnRj
RGF0YUNoYW5uZWxMb2NhbE1hcCgpLnJlbW92ZShpZGVudGlmaWVyKCkuY2hhbm5lbElkZW50aWZp
ZXIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBSVENEYXRh
Q2hhbm5lbDo6aGFuZGxlckZyb21JZGVudGlmaWVyKFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlm
aWVyIGNoYW5uZWxJZGVudGlmaWVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19y
dGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfcnRjRGF0
YUNoYW5uZWxMb2NhbE1hcExvY2sgfTsKICAgICByZXR1cm4gcnRjRGF0YUNoYW5uZWxMb2NhbE1h
cCgpLnRha2UoY2hhbm5lbElkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDExNzRlNmJjZGQwNjBlNjZjNjMz
OTgzMmVjYjhkMWU4MWFkNWQ4MzIuLmMxZGI4ZWZhMGIwMGYzZTMyMWE5MGUyOTY0OWQ3ZTYzMzQx
ODcxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlICJXaW5kb3dFdmVudExvb3AuaCIKKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgpAQCAtMTUyLDE2ICsxNTMsMTUgQEAgc3RhdGljIGJvb2wgcmV0cmlldmVUZXh0UmVzdWx0RnJv
bURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgU3RyaW5nJiBxdWUKIH0KIAogLy8g
RklYTUU6IG1vdmUgYWxsIGd1aWQtcmVsYXRlZCBmdW5jdGlvbnMgdG8gYSBEYXRhYmFzZVZlcnNp
b25UcmFja2VyIGNsYXNzLgotc3RhdGljIExvY2sgZ3VpZE11dGV4Oworc3RhdGljIENoZWNrZWRM
b2NrIGd1aWRMb2NrOwogCi1zdGF0aWMgSGFzaE1hcDxEYXRhYmFzZUdVSUQsIFN0cmluZz4mIGd1
aWRUb1ZlcnNpb25NYXAoKQorc3RhdGljIEhhc2hNYXA8RGF0YWJhc2VHVUlELCBTdHJpbmc+JiBn
dWlkVG9WZXJzaW9uTWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soZ3VpZExvY2spCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8RGF0YWJhc2VHVUlELCBTdHJpbmc+PiBtYXA7CiAg
ICAgcmV0dXJuIG1hcDsKIH0KIAotLy8gTk9URTogQ2FsbGVyIG11c3QgbG9jayBndWlkTXV0ZXgo
KS4KLXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVHVUlEVmVyc2lvbk1hcChEYXRhYmFzZUdVSUQg
Z3VpZCwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uKQorc3RhdGljIGlubGluZSB2b2lkIHVwZGF0
ZUdVSURWZXJzaW9uTWFwKERhdGFiYXNlR1VJRCBndWlkLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNp
b24pIFdURl9SRVFVSVJFU19MT0NLKGd1aWRMb2NrKQogewogICAgIC8vIE5vdGU6IEl0IGlzIG5v
dCBzYWZlIHRvIHB1dCBhbiBlbXB0eSBzdHJpbmcgaW50byB0aGUgZ3VpZFRvVmVyc2lvbk1hcCgp
IG1hcC4KICAgICAvLyBUaGF0J3MgYmVjYXVzZSB0aGUgbWFwIGlzIGNyb3NzLXRocmVhZCwgYnV0
IGVtcHR5IHN0cmluZ3MgYXJlIHBlci10aHJlYWQuCkBAIC0xNzMsMTMgKzE3MywxMyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgdXBkYXRlR1VJRFZlcnNpb25NYXAoRGF0YWJhc2VHVUlEIGd1aWQsIGNv
bnN0IFN0cmluZyYgbmV3VmVycwogICAgIGd1aWRUb1ZlcnNpb25NYXAoKS5zZXQoZ3VpZCwgbmV3
VmVyc2lvbi5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IG5ld1ZlcnNpb24uaXNvbGF0ZWRDb3B5KCkp
OwogfQogCi1zdGF0aWMgSGFzaE1hcDxEYXRhYmFzZUdVSUQsIEhhc2hTZXQ8RGF0YWJhc2UqPj4m
IGd1aWRUb0RhdGFiYXNlTWFwKCkKK3N0YXRpYyBIYXNoTWFwPERhdGFiYXNlR1VJRCwgSGFzaFNl
dDxEYXRhYmFzZSo+PiYgZ3VpZFRvRGF0YWJhc2VNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhndWlk
TG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxEYXRhYmFzZUdVSUQs
IEhhc2hTZXQ8RGF0YWJhc2UqPj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMg
aW5saW5lIERhdGFiYXNlR1VJRCBndWlkRm9yT3JpZ2luQW5kTmFtZShjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQorc3RhdGljIGlubGluZSBEYXRhYmFzZUdVSUQgZ3Vp
ZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFt
ZSkgV1RGX1JFUVVJUkVTX0xPQ0soZ3VpZExvY2spCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8U3RyaW5nLCBEYXRhYmFzZUdVSUQ+PiBtYXA7CiAgICAgcmV0dXJuIG1hcC5n
ZXQoKS5lbnN1cmUobWFrZVN0cmluZyhvcmlnaW4sICcvJywgbmFtZSksIFtdIHsKQEAgLTIwMSw3
ICsyMDEsNyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoRGF0YWJhc2VDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZQogICAgICwgbV9kYXRhYmFzZUF1dGhv
cml6ZXIoRGF0YWJhc2VBdXRob3JpemVyOjpjcmVhdGUodW5xdWFsaWZpZWRJbmZvVGFibGVOYW1l
KSkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ3VpZE11dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGd1aWRMb2NrIH07CiAKICAgICAgICAgbV9ndWlkID0g
Z3VpZEZvck9yaWdpbkFuZE5hbWUoc2VjdXJpdHlPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpLCBuYW1lKTsKICAgICAgICAgZ3VpZFRvRGF0YWJhc2VNYXAoKS5lbnN1cmUobV9n
dWlkLCBbXSB7CkBAIC0zNDgsNyArMzQ4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6
OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWIKIAog
ICAgIFN0cmluZyBjdXJyZW50VmVyc2lvbjsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soZ3VpZE11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGd1aWRMb2NrIH07
CiAKICAgICAgICAgYXV0byBlbnRyeSA9IGd1aWRUb1ZlcnNpb25NYXAoKS5maW5kKG1fZ3VpZCk7
CiAgICAgICAgIGlmIChlbnRyeSAhPSBndWlkVG9WZXJzaW9uTWFwKCkuZW5kKCkpIHsKQEAgLTQz
Nyw3ICs0MzcsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZURhdGFiYXNlKCkKICAgICBEYXRhYmFz
ZVRyYWNrZXI6OnNpbmdsZXRvbigpLnJlbW92ZU9wZW5EYXRhYmFzZSgqdGhpcyk7CiAKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ3VpZE11dGV4KTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IGd1aWRMb2NrIH07CiAKICAgICAgICAgYXV0byBpdCA9IGd1aWRUb0RhdGFi
YXNlTWFwKCkuZmluZChtX2d1aWQpOwogICAgICAgICBBU1NFUlQoaXQgIT0gZ3VpZFRvRGF0YWJh
c2VNYXAoKS5lbmQoKSk7CkBAIC00OTUsMTQgKzQ5NSwxNCBAQCB2b2lkIERhdGFiYXNlOjpzZXRF
eHBlY3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogCiBTdHJpbmcgRGF0YWJhc2U6
OmdldENhY2hlZFZlcnNpb24oKSBjb25zdAogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
Z3VpZE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZ3VpZExvY2sgfTsKIAogICAgIHJldHVy
biBndWlkVG9WZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCkuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIHZv
aWQgRGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24oY29uc3QgU3RyaW5nJiBhY3R1YWxWZXJzaW9u
KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZ3VpZE11dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgZ3VpZExvY2sgfTsKIAogICAgIHVwZGF0ZUdVSURWZXJzaW9uTWFwKG1fZ3VpZCwg
YWN0dWFsVmVyc2lvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVRGV2aWNlLmNwcAppbmRleCBjYTAxYjEwMTVhZDYxY2NjMzlhZDMzOWI5YWRiN2JlNDY5ZjFi
MWM4Li44MjUwZTJiYjNhNjM0OGRjOWI0Y2FiYTY0YWU0OGJjNjNkYTNkOTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTk0LDYgKzk0
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
V2ViR1BVRGV2aWNlKTsKIAorQ2hlY2tlZExvY2sgV2ViR1BVRGV2aWNlOjpzX2luc3RhbmNlc0xv
Y2s7CisKIFJlZlB0cjxXZWJHUFVEZXZpY2U+IFdlYkdQVURldmljZTo6dHJ5Q3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFk
YXB0ZXIpCiB7CiAgICAgaWYgKGF1dG8gZGV2aWNlID0gR1BVRGV2aWNlOjp0cnlDcmVhdGUoYWRh
cHRlci0+b3B0aW9ucygpKSkgewpAQCAtMTA0LDE2ICsxMDYsMTUgQEAgUmVmUHRyPFdlYkdQVURl
dmljZT4gV2ViR1BVRGV2aWNlOjp0cnlDcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUmUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSGFzaFNldDxXZWJHUFVEZXZpY2Uq
PiYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpCitIYXNoU2V0PFdl
YkdQVURldmljZSo+JiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4+IGluc3RhbmNlczsKICAgICByZXR1
cm4gaW5zdGFuY2VzOwogfQogCi1Mb2NrJiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlc011dGV4KCkK
K0NoZWNrZWRMb2NrJiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlc0xvY2soKQogewotICAgIHN0YXRp
YyBMb2NrIG11dGV4OwotICAgIHJldHVybiBtdXRleDsKKyAgICByZXR1cm4gc19pbnN0YW5jZXNM
b2NrOwogfQogCiBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWY8R1BV
RGV2aWNlPiYmIGRldmljZSkKQEAgLTEyOCw4ICsxMjksOCBAQCBXZWJHUFVEZXZpY2U6OldlYkdQ
VURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Y29uc3QgV2ViR1BV
QWRhcAogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaXNEb2N1bWVudCgpKTsK
IAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwotICAg
ICAgICBpbnN0YW5jZXMobG9jaykuYWRkKHRoaXMpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGluc3RhbmNlcygpLmFkZCh0aGlzKTsKICAgICB9
CiB9CiAKQEAgLTEzOCw4ICsxMzksOCBAQCBXZWJHUFVEZXZpY2U6On5XZWJHUFVEZXZpY2UoKQog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHUFVEZXZpY2UoKnRo
aXMpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2ViR1BVUGlwZWxpbmU6Omlu
c3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogV2ViR1BVUGlwZWxp
bmU6Omluc3RhbmNlcyhsb2NrKSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVUGlw
ZWxpbmU6Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogV2Vi
R1BVUGlwZWxpbmU6Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUg
PT0gdGhpcykgewogICAgICAgICAgICAgICAgIC8vIERvbid0IHJlbW92ZSBhbnkgV2ViR1BVUGlw
ZWxpbmUgZnJvbSB0aGUgaW5zdGFuY2VzIGxpc3QsIGFzIHRoZXkgbWF5IHN0aWxsIGV4aXN0Lgog
ICAgICAgICAgICAgICAgIC8vIE9ubHkgcmVtb3ZlIHRoZSBhc3NvY2lhdGlvbiB3aXRoIGEgV2Vi
R1BVIGRldmljZS4KQEAgLTE0OSw5ICsxNTAsOSBAQCBXZWJHUFVEZXZpY2U6On5XZWJHUFVEZXZp
Y2UoKQogICAgIH0KIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011
dGV4KCkpOwotICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKGxvY2spLmNvbnRhaW5zKHRoaXMpKTsK
LSAgICAgICAgaW5zdGFuY2VzKGxvY2spLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKCkuY29u
dGFpbnModGhpcykpOworICAgICAgICBpbnN0YW5jZXMoKS5yZW1vdmUodGhpcyk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCmluZGV4
IGM5Y2MzYzRlNDM1YzkyNjRiMjgxNGQzZDYzYzI0MGZjYjY2NzA2YzMuLjcwZjFiMWRhNzI5M2Rm
ZmExMzFhMjU1ZDViNjc1ZmFjOGEwZjJhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViR1BV
QWRhcHRlci5oIgogI2luY2x1ZGUgIldlYkdQVVF1ZXVlLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3dh
cENoYWluRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgpAQCAtODQsOCArODUsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
UmVmUHRyPFdlYkdQVURldmljZT4gdHJ5Q3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJik7CiAKLSAgICBzdGF0aWMgSGFzaFNldDxXZWJHUFVE
ZXZpY2UqPiYgaW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKTsKLSAgICBzdGF0aWMgTG9jayYg
aW5zdGFuY2VzTXV0ZXgoKTsKKyAgICBzdGF0aWMgSGFzaFNldDxXZWJHUFVEZXZpY2UqPiYgaW5z
dGFuY2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKKyAgICBzdGF0aWMg
Q2hlY2tlZExvY2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNfaW5zdGFuY2Vz
TG9jayk7CiAKICAgICBjb25zdCBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyByZXR1
cm4gbV9hZGFwdGVyLmdldCgpOyB9CiAgICAgR1BVRGV2aWNlJiBkZXZpY2UoKSB7IHJldHVybiBt
X2RldmljZS5nZXQoKTsgfQpAQCAtMTI2LDYgKzEyNyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGRpc3BhdGNoVW5jYXB0dXJlZEVycm9yKEdQVUVycm9yJiYpOwogCisgICAgc3RhdGljIENoZWNr
ZWRMb2NrIHNfaW5zdGFuY2VzTG9jazsKKwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogICAgIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiBt
X2FkYXB0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZS5jcHAKaW5kZXggZWU0YWIxMGFmOGI0MDJlNjEwOWU4MzdmMzNkMGQ1ZjQ3NjliMDhlYi4u
MjA1ZjFlZDFmN2I3YzYzYjc3NTFiMTM0OTEzZGY0ODdmY2UyY2RjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcApAQCAtMzksMTYgKzM5
LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaE1hcDxXZWJHUFVQaXBlbGluZSos
IFdlYkdQVURldmljZSo+JiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xk
ZXImKQorQ2hlY2tlZExvY2sgV2ViR1BVUGlwZWxpbmU6OnNfaW5zdGFuY2VzTG9jazsKKworSGFz
aE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQVURldmljZSo+JiBXZWJHUFVQaXBlbGluZTo6aW5z
dGFuY2VzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJHUFVQaXBl
bGluZSosIFdlYkdQVURldmljZSo+PiBpbnN0YW5jZXM7CiAgICAgcmV0dXJuIGluc3RhbmNlczsK
IH0KIAotTG9jayYgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc011dGV4KCkKK0NoZWNrZWRMb2Nr
JiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTG9jaygpCiB7Ci0gICAgc3RhdGljIExvY2sgbXV0
ZXg7Ci0gICAgcmV0dXJuIG11dGV4OworICAgIHJldHVybiBzX2luc3RhbmNlc0xvY2s7CiB9CiAK
IFdlYkdQVVBpcGVsaW5lOjpXZWJHUFVQaXBlbGluZShXZWJHUFVEZXZpY2UmIGRldmljZSwgR1BV
RXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQpAQCAtNTgsOCArNTksOCBAQCBXZWJHUFVQaXBlbGlu
ZTo6V2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBl
cnJvclNjb3BlcwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soaW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIGlu
c3RhbmNlcyhsb2NrKS5hZGQodGhpcywgJmRldmljZSk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgaW5zdGFuY2VzKCkuYWRkKHRoaXMsICZkZXZp
Y2UpOwogICAgIH0KIH0KIApAQCAtNjgsOSArNjksOSBAQCBXZWJHUFVQaXBlbGluZTo6fldlYkdQ
VVBpcGVsaW5lKCkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2Vi
R1BVUGlwZWxpbmUoKnRoaXMpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soaW5z
dGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZXMobG9jaykuY29udGFpbnMo
dGhpcykpOwotICAgICAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIEFTU0VSVChpbnN0YW5j
ZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZS5oCmluZGV4IGQ3ZjExYTMzNjE0NDIyYjE3NTdmOTA0Zjk1Yzc1NTVmMTNiYTJjMDMuLjk5
OWE5OGFlNTJhNmJiMDlhYjRhZWY2NzRhZDEzNGI2ODkwMjZjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaApAQCAtMzAsOCArMzAsOCBAQAog
I2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiR1BVT2Jq
ZWN0QmFzZS5oIgogI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgorI2luY2x1ZGUgPHd0
Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L0xvY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw4ICs0Myw4IEBAIGNsYXNz
IFdlYkdQVVBpcGVsaW5lIDogcHVibGljIEdQVU9iamVjdEJhc2UsIHB1YmxpYyBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR1BVUGlwZWxpbmUo
KTsKIAotICAgIHN0YXRpYyBIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4m
IGluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNl
c011dGV4KCk7CisgICAgc3RhdGljIEhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZp
Y2UqPiYgaW5zdGFuY2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKKyAg
ICBzdGF0aWMgQ2hlY2tlZExvY2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNf
aW5zdGFuY2VzTG9jayk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJQaXBlbGluZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQ29tcHV0ZVBpcGVsaW5l
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTYzLDYgKzYzLDkgQEAgcHVibGljOgogCiBw
cm90ZWN0ZWQ6CiAgICAgV2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiwgR1BVRXJyb3JTY29w
ZXMmKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2sgc19pbnN0YW5jZXNMb2Nr
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA4ZDM0YzYyODI5ZDcxN2FlMThkNmQ2
OWMwMTVmYjc0YmQxOTU4NmE5Li5mZTgwZDQwMTAwNWU1MTRiOWM5ZjRkNDRjMDdlOTdjMDhkZDE1
ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcApAQCAtNzYsNiArNzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJTb2NrZXQpOwogCitDaGVja2VkTG9jayBXZWJTb2NrZXQ6OnNf
YWxsQWN0aXZlV2ViU29ja2V0c0xvY2s7CisKIGNvbnN0IHNpemVfdCBtYXhSZWFzb25TaXplSW5C
eXRlcyA9IDEyMzsKIAogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRQcm90b2NvbENoYXJhY3Rl
cihVQ2hhciBjaGFyYWN0ZXIpCkBAIC0xNDYsMTcgKzE0OCwxNSBAQCBXZWJTb2NrZXQ6OldlYlNv
Y2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9leHRlbnNpb25z
KGVtcHR5U3RyaW5nKCkpCiAgICAgLCBtX3Jlc3VtZVRpbWVyKCp0aGlzLCAmV2ViU29ja2V0Ojpy
ZXN1bWVUaW1lckZpcmVkKQogewotICAgIExvY2tIb2xkZXIgbG9jayhhbGxBY3RpdmVXZWJTb2Nr
ZXRzTXV0ZXgoKSk7Ci0KLSAgICBhbGxBY3RpdmVXZWJTb2NrZXRzKGxvY2spLmFkZCh0aGlzKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgYWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKSB9OworICAgIGFs
bEFjdGl2ZVdlYlNvY2tldHMoKS5hZGQodGhpcyk7CiB9CiAKIFdlYlNvY2tldDo6fldlYlNvY2tl
dCgpCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soYWxsQWN0aXZlV2ViU29ja2V0
c011dGV4KCkpOwotCi0gICAgICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykucmVtb3ZlKHRo
aXMpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKSB9
OworICAgICAgICBhbGxBY3RpdmVXZWJTb2NrZXRzKCkucmVtb3ZlKHRoaXMpOwogICAgIH0KIAog
ICAgIGlmIChtX2NoYW5uZWwpCkBAIC0xODgsMTYgKzE4OCwxNSBAQCBFeGNlcHRpb25PcjxSZWY8
V2ViU29ja2V0Pj4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgYwogICAgIHJldHVybiBjcmVhdGUoY29udGV4dCwgdXJsLCBWZWN0b3I8U3RyaW5nPiB7
IDEsIHByb3RvY29sIH0pOwogfQogCi1IYXNoU2V0PFdlYlNvY2tldCo+JiBXZWJTb2NrZXQ6OmFs
bEFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpCitIYXNoU2V0PFdlYlNvY2tldCo+
JiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PFdlYlNvY2tldCo+PiBhY3RpdmVXZWJTb2NrZXRzOwogICAgIHJldHVy
biBhY3RpdmVXZWJTb2NrZXRzOwogfQogCi1Mb2NrJiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNv
Y2tldHNNdXRleCgpCitDaGVja2VkTG9jayYgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRz
TG9jaygpCiB7Ci0gICAgc3RhdGljIExvY2sgbXV0ZXg7Ci0gICAgcmV0dXJuIG11dGV4OworICAg
IHJldHVybiBzX2FsbEFjdGl2ZVdlYlNvY2tldHNMb2NrOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggYWJkMjI1YmU1OGZjOThkMjYy
OWQ2Njk3Y2JkZDhkYWVmODU2ZjNiMy4uNzI3MDY5OTcyNTkzZjAxNmVlNDEzNzE4MGFiODc0MGVl
NzY4NzUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC02MCw4ICs2MSw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYlNvY2tldD4+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwcm90b2NvbHMpOwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCi0gICAgc3RhdGljIEhh
c2hTZXQ8V2ViU29ja2V0Kj4mIGFsbEFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYp
OwotICAgIHN0YXRpYyBMb2NrJiBhbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKTsKKyAgICBzdGF0
aWMgSGFzaFNldDxXZWJTb2NrZXQqPiYgYWxsQWN0aXZlV2ViU29ja2V0cygpIFdURl9SRVFVSVJF
U19MT0NLKHNfYWxsQWN0aXZlV2ViU29ja2V0c0xvY2spOworICAgIHN0YXRpYyBDaGVja2VkTG9j
ayYgYWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNfYWxsQWN0aXZl
V2ViU29ja2V0c0xvY2spOwogCiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIENPTk5FQ1RJTkcg
PSAwLApAQCAtMTMxLDYgKzEzMiw3IEBAIHByaXZhdGU6CiAKICAgICBlbnVtIGNsYXNzIEJpbmFy
eVR5cGUgeyBCbG9iLCBBcnJheUJ1ZmZlciB9OwogCisgICAgc3RhdGljIENoZWNrZWRMb2NrIHNf
YWxsQWN0aXZlV2ViU29ja2V0c0xvY2s7CiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsPiBtX2NoYW5uZWw7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgQ09OTkVDVElORyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1t
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGJk
NTJjYjQ5MTg4NmJlZTRjZDYzOTg3ZjIyMDNkNDJiN2I0NWE5Y2UuLjBmNWMyOWE0YWZjNDU2ZmNl
ZGRhMjRiYjRlYWJkYWFiYmI2MTNkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTQ5LDggKzQ5LDggQEAKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0xvY2su
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVJbnRlcm5hbC5oPgorI2ltcG9ydCA8
d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgotI2ltcG9ydCA8d3Rm
L0xvY2suaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1Ro
cmVhZGluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03MCwxMSArNzAs
MTEgQEAgdXNpbmcgSlNDOjptYWtlU291cmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBMb2NrIHNwaW5Mb2NrOworc3RhdGljIENoZWNrZWRMb2NrIHdyYXBwZXJDYWNoZUxvY2s7
CiBzdGF0aWMgQ3JlYXRlV3JhcHBlckZ1bmN0aW9uIGNyZWF0ZURPTVdyYXBwZXJGdW5jdGlvbjsK
IHN0YXRpYyBEaXNjb25uZWN0V2luZG93V3JhcHBlckZ1bmN0aW9uIGRpc2Nvbm5lY3RXaW5kb3dX
cmFwcGVyRnVuY3Rpb247CiAKLXN0YXRpYyBIYXNoTWFwPEpTT2JqZWN0KiwgTlNPYmplY3QgKj4m
IHdyYXBwZXJDYWNoZSgpCitzdGF0aWMgSGFzaE1hcDxKU09iamVjdCosIE5TT2JqZWN0ICo+JiB3
cmFwcGVyQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyh3cmFwcGVyQ2FjaGVMb2NrKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEpTT2JqZWN0KiwgTlNPYmplY3QgKj4+IG1h
cDsKICAgICByZXR1cm4gbWFwOwpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgSGFzaE1hcDxKU09i
amVjdCosIE5TT2JqZWN0ICo+JiB3cmFwcGVyQ2FjaGUoKQogTlNPYmplY3QgKmdldEpTV3JhcHBl
cihKU09iamVjdCogaW1wbCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIExv
Y2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZXJD
YWNoZUxvY2sgfTsKIAogICAgIE5TT2JqZWN0KiB3cmFwcGVyID0gd3JhcHBlckNhY2hlKCkuZ2V0
KGltcGwpOwogICAgIHJldHVybiB3cmFwcGVyID8gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxl
YXNlKCkgOiBuaWw7CkBAIC05MiwyMSArOTIsMjEgQEAgTlNPYmplY3QgKmdldEpTV3JhcHBlcihK
U09iamVjdCogaW1wbCkKIHZvaWQgYWRkSlNXcmFwcGVyKE5TT2JqZWN0ICp3cmFwcGVyLCBKU09i
amVjdCogaW1wbCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tIb2xk
ZXIgaG9sZGVyKCZzcGluTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZXJDYWNoZUxv
Y2sgfTsKIAogICAgIHdyYXBwZXJDYWNoZSgpLnNldChpbXBsLCB3cmFwcGVyKTsKIH0KIAogdm9p
ZCByZW1vdmVKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xk
ZXIoJnNwaW5Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9Owog
CiAgICAgd3JhcHBlckNhY2hlKCkucmVtb3ZlKGltcGwpOwogfQogCiBzdGF0aWMgdm9pZCByZW1v
dmVKU1dyYXBwZXJJZlJldGFpbkNvdW50T25lKE5TT2JqZWN0KiB3cmFwcGVyLCBKU09iamVjdCog
aW1wbCkKIHsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyB3cmFwcGVyQ2FjaGVMb2NrIH07CiAKICAgICBpZiAoW3dyYXBwZXIgcmV0YWluQ291
bnRdID09IDEpCiAgICAgICAgIHdyYXBwZXJDYWNoZSgpLnJlbW92ZShpbXBsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCmluZGV4IDIy
ZjI3N2E4YWQ5NWViMGQ2NDVlNGI0ZDg0MDk0ODUwNTQ2ODQ4MGQuLjM2NDZiNDdjYjUxZjJkMzI1
NGJmMTk4ZDI1ZTE2MTUxYmQ5MzNlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcApAQCAtMjksMTYgKzI5LDE3IEBACiAjaWYgRU5B
QkxFKFdFQl9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG0uaCIKLSNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBMb2NrIHJlZ2lzdHJ5TXV0ZXg7Ci0KIENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5JiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+IHJlZ2lzdHJ5
OworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+
IHJlZ2lzdHJ5OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIHJlZ2lzdHJ5LmNvbnN0cnVjdCgpOwor
ICAgIH0pOwogICAgIHJldHVybiByZWdpc3RyeTsKIH0KIApAQCAtNTIsNyArNTMsNyBAQCBPcHRp
b25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6
aWRlbnRpZmllcihjb25zdCBTdAogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgLy8gRklYTUU6IEhv
dyBpcyBpdCBoZWxwZnVsIHRvIGNhbGwgaXNvbGF0ZWRDb3B5IG9uIHRoZSBhcmd1bWVudCB0byBm
aW5kPwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnMuZmluZChuYW1lLmlzb2xh
dGVkQ29weSgpKTsKQEAgLTY0LDcgKzY1LDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcj4gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3QKIAog
U3RyaW5nIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpuYW1lKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJlZ2lzdHJ5
TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIGF1dG8gY29udHJ1
Y3RvciA9IG1fY29uc3RydWN0b3JzLmZpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50aWZp
ZXIpKTsKICAgICBpZiAoY29udHJ1Y3RvciA9PSBtX2NvbnN0cnVjdG9ycy5lbmQoKSkKQEAgLTc1
LDcgKzc2LDcgQEAgU3RyaW5nIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpuYW1lKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIAogUmVmUHRyPENyeXB0b0FsZ29yaXRobT4g
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWdpc3RyeU11dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBhdXRvIGNvbnRydWN0b3Ig
PSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7
CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCkBAIC04Niw3ICs4
Nyw3IEBAIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5Ojpj
cmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllCiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnk6OnJlZ2lzdGVyQWxnb3JpdGhtKGNvbnN0IFN0cmluZyYgbmFtZSwgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3RvciBjb25z
dHJ1Y3RvcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJlZ2lzdHJ5TXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIEFTU0VSVCghbV9pZGVudGlmaWVy
cy5jb250YWlucyhuYW1lKSk7CiAgICAgQVNTRVJUKCFtX2NvbnN0cnVjdG9ycy5jb250YWlucyhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgKaW5kZXggZmVhM2NjYTkyM2U0NzkxMmE4
NGYwNjg3OTM4ODEwZjM5ODEyNTRjNS4uY2I5MTg2NTEzZTYwMGYwMmY5YWMyZWY1OTdhYTk5NzM0
MjkzN2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTM5LDcgKzQwLDcgQEAgY2xhc3MgQ3J5cHRvQWxn
b3JpdGhtOwogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkpOwotICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxDcnlwdG9BbGdvcml0aG1SZWdpc3RyeT47CisgICAgZnJpZW5kIGNsYXNz
IExhenlOZXZlckRlc3Ryb3llZDxDcnlwdG9BbGdvcml0aG1SZWdpc3RyeT47CiAKIHB1YmxpYzoK
ICAgICBzdGF0aWMgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkmIHNpbmdsZXRvbigpOwpAQCAtNjIs
OCArNjMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWdpc3RlckFsZ29yaXRobShjb25zdCBT
dHJpbmcmIG5hbWUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUNv
bnN0cnVjdG9yKTsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1faWRlbnRpZmllcnM7Ci0gICAgSGFzaE1h
cDx1bnNpZ25lZCwgc3RkOjpwYWlyPFN0cmluZywgQ3J5cHRvQWxnb3JpdGhtQ29uc3RydWN0b3I+
PiBtX2NvbnN0cnVjdG9yczsKKyAgICBDaGVja2VkTG9jayBtX2xvY2s7CisgICAgSGFzaE1hcDxT
dHJpbmcsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4gbV9pZGVudGlmaWVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgSGFzaE1h
cDx1bnNpZ25lZCwgc3RkOjpwYWlyPFN0cmluZywgQ3J5cHRvQWxnb3JpdGhtQ29uc3RydWN0b3I+
PiBtX2NvbnN0cnVjdG9ycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCBiYmMw
ODVhMjlhMzU2YzU1MDA4MGMzNTg0MzY2ZjU4Y2IxMjRhNmU0Li5iNzY1ODYyZTZjNzY1Yzg5ZTFj
YjU5ZWJkOGFmMzFhNjI4ZjEyNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
U2NvcGUuaD4KQEAgLTQzLDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoTWVzc2FnZVBvcnQpOwogCi1zdGF0aWMgTG9jayBhbGxNZXNz
YWdlUG9ydHNMb2NrOwotc3RhdGljIEhhc2hNYXA8TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBNZXNz
YWdlUG9ydCo+JiBhbGxNZXNzYWdlUG9ydHMoKQorc3RhdGljIENoZWNrZWRMb2NrIGFsbE1lc3Nh
Z2VQb3J0c0xvY2s7CitzdGF0aWMgSGFzaE1hcDxNZXNzYWdlUG9ydElkZW50aWZpZXIsIE1lc3Nh
Z2VQb3J0Kj4mIGFsbE1lc3NhZ2VQb3J0cygpIFdURl9SRVFVSVJFU19MT0NLKGFsbE1lc3NhZ2VQ
b3J0c0xvY2spCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8TWVzc2FnZVBv
cnRJZGVudGlmaWVyLCBNZXNzYWdlUG9ydCo+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKQEAgLTYx
LDcgKzYyLDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGVyZWYoKSBjb25zdAogICAgIC8vIFRoaXMg
YWxsb3dzIGlzRXhpc3RpbmdNZXNzYWdlUG9ydExvY2FsbHlSZWFjaGFibGUgYW5kIG5vdGlmeU1l
c3NhZ2VBdmFpbGFibGUgdG8gZWFzaWx5IHF1ZXJ5IHRoZSBtYXAgYW5kIG1hbmlwdWxhdGUgTWVz
c2FnZVBvcnQgaW5zdGFuY2VzLgogCiAgICAgaWYgKCEtLW1fcmVmQ291bnQpIHsKLSAgICAgICAg
TG9ja2VyPExvY2s+IGxvY2tlcihhbGxNZXNzYWdlUG9ydHNMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IGFsbE1lc3NhZ2VQb3J0c0xvY2sgfTsKIAogICAgICAgICBpZiAobV9yZWZDb3Vu
dCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc2LDE0ICs3NywxNCBAQCB2b2lkIE1lc3NhZ2VQ
b3J0OjpkZXJlZigpIGNvbnN0CiAKIGJvb2wgTWVzc2FnZVBvcnQ6OmlzRXhpc3RpbmdNZXNzYWdl
UG9ydExvY2FsbHlSZWFjaGFibGUoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQogewotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsTWVzc2FnZVBvcnRzTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGFsbE1lc3NhZ2VQb3J0c0xvY2sgfTsKICAgICBhdXRvKiBwb3J0
ID0gYWxsTWVzc2FnZVBvcnRzKCkuZ2V0KGlkZW50aWZpZXIpOwogICAgIHJldHVybiBwb3J0ICYm
IHBvcnQtPmlzTG9jYWxseVJlYWNoYWJsZSgpOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0Ojpub3Rp
ZnlNZXNzYWdlQXZhaWxhYmxlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmll
cikKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAgaWYgKGF1dG8qIHBv
cnQgPSBhbGxNZXNzYWdlUG9ydHMoKS5nZXQoaWRlbnRpZmllcikpCiAgICAgICAgIHBvcnQtPm1l
c3NhZ2VBdmFpbGFibGUoKTsKIApAQCAtMTAxLDcgKzEwMiw3IEBAIE1lc3NhZ2VQb3J0OjpNZXNz
YWdlUG9ydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b25zdCBNCiB7CiAgICAgTE9HKE1lc3NhZ2VQb3J0cywgIkNyZWF0ZWQgTWVzc2FnZVBvcnQgJXMg
KCVwKSBpbiBwcm9jZXNzICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLmxvZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHRoaXMsIFByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAotICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsTWVzc2FnZVBvcnRzTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IGFsbE1lc3NhZ2VQb3J0c0xvY2sgfTsKICAgICBhbGxNZXNzYWdlUG9ydHMoKS5zZXQo
bV9pZGVudGlmaWVyLCB0aGlzKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgV2Vha1B0ckZhY3Rv
cnkgZ2V0cyBpbml0aWFsaXplZCBlYWdlcmx5IG9uIHRoZSB0aHJlYWQgdGhlIE1lc3NhZ2VQb3J0
IGdldHMgY29uc3RydWN0ZWQgb24gZm9yIHRocmVhZC1zYWZldHkgcmVhc29ucy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA4OGFhY2YzNTU4
MTViNjM0NGE3YzgwZDE2YTdhZTkxODkxYTRjYTRjLi40YTU4NjZkYTc0ZDIwNTY4OTZlMmE0Njg0
MDdlNTQwYmFiNjI5ODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0
Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAtNzksOCArODAsOCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotc3Rh
dGljIExvY2sgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrOwotc3RhdGljIEhhc2hN
YXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqPiYgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKQorc3RhdGljIENoZWNrZWRMb2Nr
IGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jazsKK3N0YXRpYyBIYXNoTWFwPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4mIGFs
bFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soYWxsU2NyaXB0
RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kj4+IGNvbnRleHRzOwogICAgIEFTU0VSVChhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0
c01hcExvY2suaXNMb2NrZWQoKSk7CkBAIC0xMTMsNyArMTE0LDcgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZp
ZXIoKSBjb24KIHsKICAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwogICAgIGlmICghbV9j
b250ZXh0SWRlbnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKIAogICAgICAgICBtX2NvbnRleHRJZGVu
dGlmaWVyID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAK
QEAgLTEyNiw3ICsxMjcsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Ojpjb250ZXh0SWRlbnRpZmllcigpIGNvbgogdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZW1vdmVGcm9tQ29udGV4dHNNYXAoKQogewogICAgIGlmIChtX2Nv
bnRleHRJZGVudGlmaWVyKSB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsU2NyaXB0
RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFsbFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayB9OwogICAgICAgICBBU1NFUlQoYWxsU2NyaXB0
RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSk7CiAg
ICAgICAgIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkucmVtb3ZlKG1fY29udGV4dElk
ZW50aWZpZXIpOwogICAgIH0KQEAgLTE2Miw3ICsxNjMsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGlmIChtX2NvbnRleHRJZGVudGlmaWVyKSB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
YWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayB9OwogICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLmNvbnRhaW5zKG1f
Y29udGV4dElkZW50aWZpZXIpLAogICAgICAgICAgICAgIkEgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBzdWJjbGFzcyBpbnN0YW5jZSBpbXBsZW1lbnRpbmcgcG9zdFRhc2sgc2hvdWxkIGhhdmUgYWxy
ZWFkeSByZW1vdmVkIGl0c2VsZiBmcm9tIHRoZSBtYXAiKTsKICAgICB9CkBAIC02MjMsNyArNjI0
LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lciogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5z
dXJlU2VydmljZVdvcmtlckNvbnRhaW5lcigpCiAKIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cG9zdFRhc2tUbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBpZGVudGlmaWVy
LCBUYXNrJiYgdGFzaykKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGFsbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRzTWFwTG9jayB9OwogICAgIGF1dG8qIGNvbnRleHQgPSBhbGxTY3JpcHRFeGVj
dXRpb25Db250ZXh0c01hcCgpLmdldChpZGVudGlmaWVyKTsKIAogICAgIGlmICghY29udGV4dCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggNDFmZDQzMDU3ZWViMmZhMzMxN2M2OWFhY2NhMjhiYWUzNzM2MzRhMi4u
YjY2OTFhMjJkY2IzNThkYjY0MDRlZWViZjdjNDc4YTIyNTA3YzNmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTQ2LDMwICs0NiwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChDYW52YXNSZW5kZXJpbmdDb250ZXh0KTsKIAotSGFzaFNldDxDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Kj4mIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcyhjb25zdCBM
b2NrSG9sZGVyJikKK0NoZWNrZWRMb2NrIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnNfaW5zdGFu
Y2VzTG9jazsKKworSGFzaFNldDxDYW52YXNSZW5kZXJpbmdDb250ZXh0Kj4mIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQ6Omluc3RhbmNlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+PiBpbnN0YW5jZXM7CiAgICAgcmV0dXJuIGlu
c3RhbmNlczsKIH0KIAotTG9jayYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTXV0
ZXgoKQorQ2hlY2tlZExvY2smIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2so
KQogewotICAgIHN0YXRpYyBMb2NrIG11dGV4OwotICAgIHJldHVybiBtdXRleDsKKyAgICByZXR1
cm4gc19pbnN0YW5jZXNMb2NrOwogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcykKICAgICA6IG1fY2FudmFzKGNhbnZh
cykKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2soaW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgaW5zdGFu
Y2VzKGxvY2spLmFkZCh0aGlzKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygp
IH07CisgICAgaW5zdGFuY2VzKCkuYWRkKHRoaXMpOwogfQogCiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0Ojp+Q2FudmFzUmVuZGVyaW5nQ29udGV4dCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGlu
c3RhbmNlc011dGV4KCkpOwotICAgIEFTU0VSVChpbnN0YW5jZXMobG9jaykuY29udGFpbnModGhp
cykpOwotICAgIGluc3RhbmNlcyhsb2NrKS5yZW1vdmUodGhpcyk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgIEFTU0VSVChpbnN0YW5jZXMoKS5jb250YWlucyh0
aGlzKSk7CisgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwogfQogCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OnJlZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNmY2ODhkNmVjNGFiODk5NTNjNWJmNDdk
NDE0MWUyYjUzMTMzNWY3OS4uNGQ1OWEzZjBjOGY2ZTUwZmM1MGMxMzcyYzNiNGVlY2Q3ZjkzMmQ4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBA
IC01MSw4ICs1Miw4IEBAIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYW52YXNSZW5kZXJpbmdDb250
ZXh0KCk7CiAKLSAgICBzdGF0aWMgSGFzaFNldDxDYW52YXNSZW5kZXJpbmdDb250ZXh0Kj4mIGlu
c3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNlc011
dGV4KCk7CisgICAgc3RhdGljIEhhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBpbnN0
YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkpOworICAgIHN0YXRpYyBD
aGVja2VkTG9jayYgaW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNM
b2NrKTsKIAogICAgIHZvaWQgcmVmKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXJlZigp
OwpAQCAtMTExLDYgKzExMiw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faGFzQWN0aXZlSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlciB7IGZhbHNlIH07CiAKIHByaXZhdGU6CisgICAgc3RhdGlj
IENoZWNrZWRMb2NrIHNfaW5zdGFuY2VzTG9jazsKKwogICAgIENhbnZhc0Jhc2UmIG1fY2FudmFz
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9n
cmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKaW5k
ZXggZjY1MjUxNDcxOTBkOTFkMzRiMzRiNzE1ZjZkMzAwODMyM2EyMjgwZS4uYTllNjUyYzE0MjFl
YzdlNTJjOTNhNDRlNTJmYmY4MjM0YzA4YjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC00NSwxNiArNDUsMTcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1IYXNoTWFwPFdlYkdMUHJvZ3JhbSosIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqPiYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpCitDaGVja2Vk
TG9jayBXZWJHTFByb2dyYW06OnNfaW5zdGFuY2VzTG9jazsKKworSGFzaE1hcDxXZWJHTFByb2dy
YW0qLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4mIFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2Vz
KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJHTFByb2dyYW0qLCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4+IGluc3RhbmNlczsKICAgICByZXR1cm4gaW5zdGFu
Y2VzOwogfQogCi1Mb2NrJiBXZWJHTFByb2dyYW06Omluc3RhbmNlc011dGV4KCkKK0NoZWNrZWRM
b2NrJiBXZWJHTFByb2dyYW06Omluc3RhbmNlc0xvY2soKQogewotICAgIHN0YXRpYyBMb2NrIG11
dGV4OwotICAgIHJldHVybiBtdXRleDsKKyAgICByZXR1cm4gc19pbnN0YW5jZXNMb2NrOwogfQog
CiBSZWY8V2ViR0xQcm9ncmFtPiBXZWJHTFByb2dyYW06OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjdHgpCkBAIC02OSw4ICs3MCw4IEBAIFdlYkdMUHJvZ3JhbTo6V2ViR0xQcm9n
cmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGluc3Rh
bmNlc011dGV4KCkpOwotICAgICAgICBpbnN0YW5jZXMobG9jaykuYWRkKHRoaXMsICZjdHgpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGluc3Rh
bmNlcygpLmFkZCh0aGlzLCAmY3R4KTsKICAgICB9CiAKICAgICBzZXRPYmplY3QoY3R4LmdyYXBo
aWNzQ29udGV4dEdMKCktPmNyZWF0ZVByb2dyYW0oKSk7CkBAIC04MSw5ICs4Miw5IEBAIFdlYkdM
UHJvZ3JhbTo6fldlYkdMUHJvZ3JhbSgpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRGVzdHJveVdlYkdMUHJvZ3JhbSgqdGhpcyk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlcyhsb2Nr
KS5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcyhsb2NrKS5yZW1vdmUodGhpcyk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgQVNT
RVJUKGluc3RhbmNlcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICAgICAgaW5zdGFuY2VzKCkucmVt
b3ZlKHRoaXMpOwogICAgIH0KIAogICAgIGlmICghaGFzR3JvdXBPckNvbnRleHQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKaW5kZXggNmM5ZTM0ZWRkZTUwZGJj
M2NmZGQyYTExZjkxOTlmMjFjZGRlNDYyNi4uMTAwMGQxODlkMWYzYWZjZTJhMTY5MjlhZmJjMWJk
OGVkMjk0ZDQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQ
cm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgK
QEAgLTI5LDkgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiV2ViR0xTaGFyZWRPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVu
Y3Rpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxXZWJHTFByb2dyYW0+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAg
ICAgdmlydHVhbCB+V2ViR0xQcm9ncmFtKCk7CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxXZWJHTFBy
b2dyYW0qLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4mIGluc3RhbmNlcyhjb25zdCBXVEY6
OkxvY2tIb2xkZXImKTsKLSAgICBzdGF0aWMgTG9jayYgaW5zdGFuY2VzTXV0ZXgoKTsKKyAgICBz
dGF0aWMgSGFzaE1hcDxXZWJHTFByb2dyYW0qLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4m
IGluc3RhbmNlcygpIFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7CisgICAgc3Rh
dGljIENoZWNrZWRMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2luc3Rh
bmNlc0xvY2spOwogCiAgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgZmluYWw7CiAKQEAgLTk4
LDYgKzk4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25z
KEdyYXBoaWNzQ29udGV4dEdMKik7CiAgICAgdm9pZCBjYWNoZUluZm9JZk5lZWRlZCgpOwogCisg
ICAgc3RhdGljIENoZWNrZWRMb2NrIHNfaW5zdGFuY2VzTG9jazsKKwogICAgIFZlY3RvcjxHQ0dM
aW50PiBtX2FjdGl2ZUF0dHJpYkxvY2F0aW9uczsKIAogICAgIEdDR0xpbnQgbV9saW5rU3RhdHVz
IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBjMTBjNDY0Mzc5NTk1YWIwYzc3MTZjZjJlOGY4
ZTI1Y2ZiZTc3MzkxLi5jMjRhODRkYThkMzA2ODdjNjJlZTljNTgyYTRkZGQ5YTI4MGI1MjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcApAQCAtMTA1Miw4ICsxMDUyLDggQEAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6fldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoKQogICAgIH0KIAogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzTXV0ZXgoKSk7Ci0g
ICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJHTFByb2dyYW06Omluc3RhbmNlcyhsb2NrKSkg
eworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXNMb2NrKCkg
fTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKCkp
IHsKICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSA9PSB0aGlzKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgcmVtb3ZlIGFueSBXZWJHTFByb2dyYW0gZnJvbSB0aGUgaW5zdGFuY2VzIGxp
c3QsIGFzIHRoZXkgbWF5IHN0aWxsIGV4aXN0LgogICAgICAgICAgICAgICAgIC8vIE9ubHkgcmVt
b3ZlIHRoZSBhc3NvY2lhdGlvbiB3aXRoIGEgV2ViR0wgY29udGV4dC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggM2Q4MzliNDFhM2Q4ZGY5NWFj
MDdhNWNjNTBiYWFiOTAwMTE3ODcyZC4uMGZlZDFmYjJiYjNkYTVkM2EyMDFjN2ZjYTFiNTA4ZDE3
NDdjODg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKQEAgLTE3MCw4ICsxNzAsOCBAQCBIVE1MQ2FudmFzRWxlbWVudCogSW5zcGVjdG9yQ2FudmFz
OjpjYW52YXNFbGVtZW50KCkgY29uc3QKICAgICAgICAgWyZdIChzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPFdlYkdQVURldmljZT4gZGV2aWNlV3JhcHBlcikgLT4gSFRNTENhbnZhc0VsZW1lbnQqIHsK
ICAgICAgICAgICAgIGF1dG8mIGRldmljZSA9IGRldmljZVdyYXBwZXIuZ2V0KCk7CiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcyhs
b2NrKSkgeworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBDYW52YXNSZW5kZXJpbmdD
b250ZXh0OjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNh
bnZhc1JlbmRlcmluZ0NvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMo
KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IGNhbnZh
c0lmQ29udGV4dE1hdGNoZXNEZXZpY2UoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGRldmljZSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FudmFzRWxlbWVudDsKICAgICAgICAg
ICAgICAgICB9CkBAIC0yNzEsOCArMjcxLDggQEAgSGFzaFNldDxFbGVtZW50Kj4gSW5zcGVjdG9y
Q2FudmFzOjpjbGllbnROb2RlcygpIGNvbnN0CiAKICAgICAgICAgICAgIEhhc2hTZXQ8RWxlbWVu
dCo+IGNhbnZhc0VsZW1lbnRDbGllbnRzOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9jayhDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNNdXRleCgp
KTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygp
IH07CisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDog
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNl
KCpjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBkZXZpY2UpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgY2FudmFzRWxlbWVudENsaWVudHMuYWRkKGNhbnZhc0VsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggNTI2ZDBmNzQxNmM1ZmJjMTlhZjliZjc5ODJhNjA0
YzBhZTkwYmQ3ZC4uYjE2Nzg0ODA5MDgyZTY5YzIxZjNmOTYwZTI2ZTAxY2RlNzY3YTU4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAKQEAgLTE0MCw4ICsxNDAsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKICAgICB9OwogCiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2Vz
TXV0ZXgoKSk7Ci0gICAgICAgIGZvciAoYXV0byogY29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6Omluc3RhbmNlcyhsb2NrKSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGZvciAoYXV0byog
Y29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7CiAjaWYgRU5B
QkxFKFdFQkdQVSkKICAgICAgICAgICAgIC8vIFRoZSBhY3R1YWwgImNvbnRleHQiIGZvciBXZWJH
UFUgaXMgdGhlIGBXZWJHUFVEZXZpY2VgLCBub3QgdGhlIDxjYW52YXM+LgogICAgICAgICAgICAg
aWYgKGlzPEdQVUNhbnZhc0NvbnRleHQ+KGNvbnRleHQpKQpAQCAtMTU1LDggKzE1NSw4IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUo
KQogCiAjaWYgRU5BQkxFKFdFQkdQVSkKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhX
ZWJHUFVEZXZpY2U6Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8qIGRldmlj
ZSA6IFdlYkdQVURldmljZTo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBXZWJHUFVEZXZpY2U6Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8q
IGRldmljZSA6IFdlYkdQVURldmljZTo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgIGlmIChl
eGlzdHNJbkN1cnJlbnRQYWdlKGRldmljZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKICAg
ICAgICAgICAgICAgICBiaW5kQ2FudmFzKCpkZXZpY2UsIGZhbHNlKTsKICAgICAgICAgfQpAQCAt
MTY1LDggKzE2NSw4IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNh
bnZhc0FnZW50OjplbmFibGUoKQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrKFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAg
IGZvciAoYXV0byYgW3Byb2dyYW0sIGNvbnRleHRXZWJHTEJhc2VdIDogV2ViR0xQcm9ncmFtOjpp
bnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdMUHJvZ3JhbTo6
aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGZvciAoYXV0byYgW3Byb2dyYW0sIGNvbnRleHRX
ZWJHTEJhc2VdIDogV2ViR0xQcm9ncmFtOjppbnN0YW5jZXMoKSkgewogICAgICAgICAgICAgaWYg
KGNvbnRleHRXZWJHTEJhc2UgJiYgZXhpc3RzSW5DdXJyZW50UGFnZShjb250ZXh0V2ViR0xCYXNl
LT5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkKICAgICAgICAgICAgICAg
ICBkaWRDcmVhdGVXZWJHTFByb2dyYW0oKmNvbnRleHRXZWJHTEJhc2UsICpwcm9ncmFtKTsKICAg
ICAgICAgfQpAQCAtMTc1LDggKzE3NSw4IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+
IEluc3BlY3RvckNhbnZhc0FnZW50OjplbmFibGUoKQogCiAjaWYgRU5BQkxFKFdFQkdQVSkKICAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzTXV0
ZXgoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgW3BpcGVsaW5lLCBkZXZpY2VdIDogV2ViR1BVUGlw
ZWxpbmU6Omluc3RhbmNlcyhsb2NrKSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BV
UGlwZWxpbmU6Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8mIFtwaXBlbGlu
ZSwgZGV2aWNlXSA6IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoKSkgewogICAgICAgICAgICAg
aWYgKGRldmljZSAmJiBleGlzdHNJbkN1cnJlbnRQYWdlKGRldmljZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSAmJiBwaXBlbGluZS0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIGRpZENy
ZWF0ZVdlYkdQVVBpcGVsaW5lKCpkZXZpY2UsICpwaXBlbGluZSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAppbmRleCBlOWQzNWQzYjIwZTkxZWU5YmExOTJkNDExZDA0Mjk1MzVhNjJlOGQ1
Li40MzAwMTJjNWYxN2FiN2UzMzJkOTIwZTk5Mzg1YjgzMmVkNWFjNWM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCkBAIC04MjYsOSArODI2LDkgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRFbmFibGVkTmV0d29ya0FnZW50KHRoaXMpOwogCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKSk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgfTsK
IAotICAgICAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykp
IHsKKyAgICAgICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQgOiBhY3RpdmVXZWJTb2NrZXRzKCkpIHsK
ICAgICAgICAgICAgIGlmICghaXM8RG9jdW1lbnQ+KHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTAwOSw5ICsxMDA5
LDkgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8U3RyaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmdldFNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSgKIAogV2ViU29ja2V0KiBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OndlYlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBQcm90b2NvbDo6TmV0d29yazo6
UmVxdWVzdElkJiByZXF1ZXN0SWQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKFdlYlNvY2tldDo6
YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBXZWJTb2Nr
ZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgfTsKIAotICAgIGZvciAoYXV0byogd2ViU29j
a2V0IDogYWN0aXZlV2ViU29ja2V0cyhsb2NrKSkgeworICAgIGZvciAoYXV0byogd2ViU29ja2V0
IDogYWN0aXZlV2ViU29ja2V0cygpKSB7CiAgICAgICAgIGlmIChJZGVudGlmaWVyc0ZhY3Rvcnk6
OnJlcXVlc3RJZCh3ZWJTb2NrZXQtPmNoYW5uZWwoKS0+cHJvZ3Jlc3NJZGVudGlmaWVyKCkpID09
IHJlcXVlc3RJZCkKICAgICAgICAgICAgIHJldHVybiB3ZWJTb2NrZXQ7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmgKaW5kZXggOTMzNjAxNzYxNjY3NDE3ZWJlNWRlMzAxNTg2ODY5Y2NjNjRmYzNkYS4uOGIy
ZTI5NjcwNWE1YWQ3YjM3YjU1YTRmYjY2N2ZmMGQ4ZDMyZjk3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdl
bnRCYXNlLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1JlZ3VsYXJFeHByZXNzaW9uLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpMb2FkZXJJZCBsb2Fk
ZXJJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKikgPSAwOwogICAgIHZpcnR1YWwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCBmcmFtZUlkZW50aWZpZXIoRG9jdW1lbnRMb2Fk
ZXIqKSA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8V2ViU29ja2V0Kj4gYWN0aXZlV2ViU29ja2V0
cyhjb25zdCBMb2NrSG9sZGVyJikgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPFdlYlNvY2tldCo+
IGFjdGl2ZVdlYlNvY2tldHMoKSBXVEZfUkVRVUlSRVNfTE9DSyhXZWJTb2NrZXQ6OmFsbEFjdGl2
ZVdlYlNvY2tldHNMb2NrKCkpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWRJbnRlcm5hbChib29sKSA9IDA7CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6RnJhbWVJZCYp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yY2VCdWZmZXJpbmdOZXR3b3JrUmVzb3Vy
Y2VEYXRhKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDY1MmE3OWY1NzE0NTVh
Yzk2Y2QwNGEyNDBlYzRkOWI3NjVjZmNmMzEuLmJiNGY2YmE3YzJjYzYxODU4NTg3MTk2Yzk3M2Ey
YzM4NmY4OGY0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKQEAgLTY1LDExICs2NSwxMSBAQCBQcm90
b2NvbDo6TmV0d29yazo6RnJhbWVJZCBQYWdlTmV0d29ya0FnZW50OjpmcmFtZUlkZW50aWZpZXIo
RG9jdW1lbnRMb2FkZXIqIGxvYQogICAgIHJldHVybiB7IH07CiB9CiAKLVZlY3RvcjxXZWJTb2Nr
ZXQqPiBQYWdlTmV0d29ya0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXIm
IGxvY2spCitWZWN0b3I8V2ViU29ja2V0Kj4gUGFnZU5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29j
a2V0cygpCiB7CiAgICAgVmVjdG9yPFdlYlNvY2tldCo+IHdlYlNvY2tldHM7CiAKLSAgICBmb3Ig
KGF1dG8qIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKSkg
eworICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2Nr
ZXRzKCkpIHsKICAgICAgICAgYXV0byBjaGFubmVsID0gd2ViU29ja2V0LT5jaGFubmVsKCk7CiAg
ICAgICAgIGlmICghY2hhbm5lbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmgK
aW5kZXggYzEyOTk5NmMxYmZiNDUxZDc3ZGQ1MjBmNGEwODlhZmQ1NTgzYzBmMC4uNGI2NmMyZWFh
OTg0MTQ0YWRhMjZkY2EwMzk3MGU4MDFiNDJiMWVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5oCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6TG9hZGVySWQgbG9hZGVySWRlbnRpZmllcihEb2N1bWVudExvYWRlciopOwogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgZnJhbWVJZGVudGlmaWVyKERvY3Vt
ZW50TG9hZGVyKik7Ci0gICAgVmVjdG9yPFdlYlNvY2tldCo+IGFjdGl2ZVdlYlNvY2tldHMoY29u
c3QgTG9ja0hvbGRlciYpOworICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRz
KCkgV1RGX1JFUVVJUkVTX0xPQ0soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygp
KTsKICAgICB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkSW50ZXJuYWwoYm9vbCk7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dChJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OkZyYW1lSWQmKTsKICAgICBib29sIHNob3VsZEZvcmNlQnVmZmVyaW5nTmV0d29ya1Jl
c291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50
LmNwcAppbmRleCBlZjg2ODNmYjYyMjgxOGJiNThmZTkzNzQ1MTBlZDU5NWE4ODU1YWExLi40ZTFh
NjI3ZjA5YjFiYWUwZjcwZDE3Y2VjMTE3M2I5ZTRiNTVlYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgV29y
a2VyTmV0d29ya0FnZW50OjpmcmFtZUlkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqKQogICAgIHJl
dHVybiB7IH07CiB9CiAKLVZlY3RvcjxXZWJTb2NrZXQqPiBXb3JrZXJOZXR3b3JrQWdlbnQ6OmFj
dGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpCitWZWN0b3I8V2ViU29ja2V0Kj4gV29y
a2VyTmV0d29ya0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKCkKIHsKICAgICAvLyBGSVhNRTogPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzE2ODQ3NT4gV2ViIEluc3BlY3RvcjogQ29ycmVjdGx5IGRpc3Bs
YXkgd29ya2VyJ3MgV2ViU29ja2V0cwogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2Vu
dC5oCmluZGV4IGU1ZGZmOWQxYTM0ZDliYzQzY2IyNzMwYTgzMDQ2MGI3NzllNDVhMmIuLmRlMTRk
ZWQyYWJiZTE2YjA3NWE0MmFiYmQ3MDhiN2RkMzgwNWIyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2Vu
dC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6TmV0d29yazo6TG9hZGVySWQgbG9hZGVySWRlbnRpZmllcihEb2N1bWVudExvYWRl
ciopOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgZnJhbWVJZGVu
dGlmaWVyKERvY3VtZW50TG9hZGVyKik7Ci0gICAgVmVjdG9yPFdlYlNvY2tldCo+IGFjdGl2ZVdl
YlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpOworICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3Rp
dmVXZWJTb2NrZXRzKCkgV1RGX1JFUVVJUkVTX0xPQ0soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJT
b2NrZXRzTG9jaygpKTsKICAgICB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkSW50ZXJu
YWwoYm9vbCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKTsKICAgICBib29sIHNob3VsZEZvcmNlQnVmZmVy
aW5nTmV0d29ya1Jlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMTc4MmFhMGEyY2E2YmJiYTcwMTIxNDEx
NWMwZjIyMDA1OWQzNjY3Ny4uNTE4MzM5MzVhYWVlZmFmNTg5MDJlNGI5YzY2YTAyNGE5ZDVkOWRm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJM
UGF0dGVybi5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2su
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NiwxNiArNDcsMTYgQEAgc3Rh
dGljIFNlY3VyaXR5UG9saWN5OjpMb2NhbExvYWRQb2xpY3kgbG9jYWxMb2FkUG9saWN5ID0gU2Vj
dXJpdHlQb2xpY3k6OkFsbG93TG8KIHR5cGVkZWYgVmVjdG9yPE9yaWdpbkFjY2Vzc0VudHJ5PiBP
cmlnaW5BY2Nlc3NBbGxvd2xpc3Q7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1
ZV9wdHI8T3JpZ2luQWNjZXNzQWxsb3dsaXN0Pj4gT3JpZ2luQWNjZXNzTWFwOwogCi1zdGF0aWMg
TG9jayBvcmlnaW5BY2Nlc3NNYXBMb2NrOwotc3RhdGljIE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2lu
QWNjZXNzTWFwKCkKK3N0YXRpYyBDaGVja2VkTG9jayBvcmlnaW5BY2Nlc3NNYXBMb2NrOworc3Rh
dGljIE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0so
b3JpZ2luQWNjZXNzTWFwTG9jaykKIHsKICAgICBBU1NFUlQob3JpZ2luQWNjZXNzTWFwTG9jay5p
c0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9yaWdpbkFjY2Vzc01hcD4gb3Jp
Z2luQWNjZXNzTWFwOwogICAgIHJldHVybiBvcmlnaW5BY2Nlc3NNYXA7CiB9CiAKLXN0YXRpYyBM
b2NrIG9yaWdpbkFjY2Vzc1BhdHRlcm5Mb2NrOwotc3RhdGljIFZlY3RvcjxVc2VyQ29udGVudFVS
TFBhdHRlcm4+JiBvcmlnaW5BY2Nlc3NQYXR0ZXJucygpCitzdGF0aWMgQ2hlY2tlZExvY2sgb3Jp
Z2luQWNjZXNzUGF0dGVybkxvY2s7CitzdGF0aWMgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVy
bj4mIG9yaWdpbkFjY2Vzc1BhdHRlcm5zKCkgV1RGX1JFUVVJUkVTX0xPQ0sob3JpZ2luQWNjZXNz
UGF0dGVybkxvY2spCiB7CiAgICAgQVNTRVJUKG9yaWdpbkFjY2Vzc1BhdHRlcm5Mb2NrLmlzSGVs
ZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFVzZXJDb250ZW50VVJMUGF0
dGVybj4+IG9yaWdpbkFjY2Vzc1BhdHRlcm5zOwpAQCAtMjA1LDcgKzIwNiw3IEBAIGJvb2wgU2Vj
dXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZChjb25zdCBTZWN1cml0eU9yaWdpbiYgYWN0aXZl
T3JpZ2luLCBjb25zdCBTCiB7CiAgICAgQVNTRVJUKHRhcmdldE9yaWdpbi5lcXVhbChTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHRhcmdldFVSTCkucHRyKCkpKTsKICAgICB7Ci0gICAgICAgIExvY2tl
cjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBvcmlnaW5BY2Nlc3NNYXBMb2NrIH07CiAgICAgICAgIGlmIChPcmlnaW5BY2Nlc3NBbGxv
d2xpc3QqIGxpc3QgPSBvcmlnaW5BY2Nlc3NNYXAoKS5nZXQoYWN0aXZlT3JpZ2luLnRvU3RyaW5n
KCkpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKmxpc3QpIHsKICAgICAgICAg
ICAgICAgICBpZiAoZW50cnkubWF0Y2hlc09yaWdpbih0YXJnZXRPcmlnaW4pKQpAQCAtMjEzLDcg
KzIxNCw3IEBAIGJvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZChjb25zdCBTZWN1
cml0eU9yaWdpbiYgYWN0aXZlT3JpZ2luLCBjb25zdCBTCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9yaWdpbkFjY2Vzc1BhdHRlcm5Mb2NrIH07CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBwYXR0ZXJuIDogb3JpZ2luQWNjZXNzUGF0dGVybnMoKSkgewogICAg
ICAgICBpZiAocGF0dGVybi5tYXRjaGVzKHRhcmdldFVSTCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTIzNCw3ICsyMzUsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5B
Y2Nlc3NBbGxvd2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogCiAgICAg
U3RyaW5nIHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwogCi0gICAgTG9j
a2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwog
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8T3JpZ2luQWNjZXNzQWxsb3dsaXN0PigpOwpAQCAtMjUxLDcgKzI1Miw3
IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyCiAKICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0g
c291cmNlT3JpZ2luLnRvU3RyaW5nKCk7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdp
bkFjY2Vzc01hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NNYXBMb2Nr
IH07CiAgICAgT3JpZ2luQWNjZXNzTWFwJiBtYXAgPSBvcmlnaW5BY2Nlc3NNYXAoKTsKICAgICBP
cmlnaW5BY2Nlc3NNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmZpbmQoc291cmNlU3RyaW5nKTsKICAg
ICBpZiAoaXQgPT0gbWFwLmVuZCgpKQpAQCAtMjY4LDEzICsyNjksMTMgQEAgdm9pZCBTZWN1cml0
eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHNvdXIKIAogdm9pZCBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NBbGxv
d2xpc3RzKCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NNYXBMb2NrIH07CiAgICAgb3JpZ2lu
QWNjZXNzTWFwKCkuY2xlYXIoKTsKIH0KIAogdm9pZCBTZWN1cml0eVBvbGljeTo6YWxsb3dBY2Nl
c3NUbyhjb25zdCBVc2VyQ29udGVudFVSTFBhdHRlcm4mIHBhdHRlcm4pCiB7Ci0gICAgTG9ja2Vy
PExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG9yaWdpbkFjY2Vzc1BhdHRlcm5Mb2NrIH07CiAgICAgb3JpZ2luQWNjZXNzUGF0dGVybnMo
KS5hcHBlbmQocGF0dGVybik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0KaW5kZXggOTkzNWFkYzNkM2IwMWMzMGU5
ZmQ2Yzg1YjUyYTZmYmExY2RhNDM3My4uOWJjNmQyOTc3ZWY5MTIzOGVmYTAxNWM2Y2RjMzgzMTUw
YWE4YzM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVz
YWdlVGhyZWFkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlVGhyZWFkQ29jb2EubW0KQEAgLTE2MSw4ICsxNjEsOCBAQCB2b2lkIFJlc291cmNlVXNh
Z2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdENQVURhdGEoSlNDOjpWTSosIFJlc291cmNlVXNhZ2VE
YXRhJiBkYQogCiAgICAgSGFzaFNldDxtYWNoX3BvcnRfdD4ga25vd25XZWJLaXRUaHJlYWRzOwog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhUaHJlYWQ6OmFsbFRocmVhZHNN
dXRleCgpKTsKLSAgICAgICAgZm9yIChhdXRvKiB0aHJlYWQgOiBUaHJlYWQ6OmFsbFRocmVhZHMo
bG9ja2VyKSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgVGhyZWFkOjphbGxUaHJlYWRzTG9j
aygpIH07CisgICAgICAgIGZvciAoYXV0byogdGhyZWFkIDogVGhyZWFkOjphbGxUaHJlYWRzKCkp
IHsKICAgICAgICAgICAgIG1hY2hfcG9ydF90IG1hY2hUaHJlYWQgPSB0aHJlYWQtPm1hY2hUaHJl
YWQoKTsKICAgICAgICAgICAgIGlmIChNQUNIX1BPUlRfVkFMSUQobWFjaFRocmVhZCkpCiAgICAg
ICAgICAgICAgICAga25vd25XZWJLaXRUaHJlYWRzLmFkZChtYWNoVGhyZWFkKTsKQEAgLTE3MSw3
ICsxNzEsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdENQVURh
dGEoSlNDOjpWTSosIFJlc291cmNlVXNhZ2VEYXRhJiBkYQogCiAgICAgSGFzaE1hcDxtYWNoX3Bv
cnRfdCwgU3RyaW5nPiBrbm93bldvcmtlclRocmVhZHM7CiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhy
ZWFkc0xvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvKiB0
aHJlYWQgOiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHMoKSkg
ewogICAgICAgICAgICAgLy8gSWdub3JlIHdvcmtlciB0aHJlYWRzIHRoYXQgaGF2ZSBub3QgYmVl
biBmdWxseSBzdGFydGVkIHlldC4KICAgICAgICAgICAgIGlmICghdGhyZWFkLT50aHJlYWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVh
ZExpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVh
ZExpbnV4LmNwcAppbmRleCBiNjU5Yjc3NGYyNjQwMTNhMTdjZjU2ZTZjMTMxMDI1ZWVjY2JjZTBh
Li4wMmU1ZDQ4OWNhYjQzZjgzOTMzM2Q0OWJkMjRhNTk2OTI5ODk0N2MzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3Bw
CkBAIC0yMzMsOCArMjMzLDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNv
bGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYgZGEKIAogICAgIEhhc2hT
ZXQ8cGlkX3Q+IGtub3duV2ViS2l0VGhyZWFkczsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soVGhyZWFkOjphbGxUaHJlYWRzTXV0ZXgoKSk7Ci0gICAgICAgIGZvciAoYXV0
byogdGhyZWFkIDogVGhyZWFkOjphbGxUaHJlYWRzKGxvY2tlcikpIHsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IFRocmVhZDo6YWxsVGhyZWFkc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8q
IHRocmVhZCA6IFRocmVhZDo6YWxsVGhyZWFkcygpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBp
ZCA9IHRocmVhZC0+aWQoKSkKICAgICAgICAgICAgICAgICBrbm93bldlYktpdFRocmVhZHMuYWRk
KGlkKTsKICAgICAgICAgfQpAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRo
cmVhZDo6cGxhdGZvcm1Db2xsZWN0Q1BVRGF0YShKU0M6OlZNKiwgUmVzb3VyY2VVc2FnZURhdGEm
IGRhCiAKICAgICBIYXNoTWFwPHBpZF90LCBTdHJpbmc+IGtub3duV29ya2VyVGhyZWFkczsKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soV29ya2VyT3JXb3JrbGV0VGhyZWFk
Ojp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSB9Owog
ICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2Vy
T3JXb3JrbGV0VGhyZWFkcygpKSB7CiAgICAgICAgICAgICAvLyBJZ25vcmUgd29ya2VyIHRocmVh
ZHMgdGhhdCBoYXZlIG5vdCBiZWVuIGZ1bGx5IHN0YXJ0ZWQgeWV0LgogICAgICAgICAgICAgaWYg
KCF0aHJlYWQtPnRocmVhZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R2VuZXJpY1Rhc2tRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFz
a1F1ZXVlLmNwcAppbmRleCA1MTY1MzE0Y2ZlYTEyYTAxMDBjODJjMjZiY2NjZjIyMmQwMmM3YTVm
Li4yZjVhZjQ3YzdlMjY5NDZmM2VjMWZmZjQwOGZhN2FhYmMzNzgzZTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmNwcApAQCAtMzIsNiArMzIsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NoZWNrZWRMb2NrIFRhc2tEaXNwYXRjaGVyPFRpbWVy
Pjo6c19zaGFyZWRMb2NrOworCiBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OlRhc2tEaXNwYXRjaGVy
KCkKIHsKIH0KQEAgLTM5LDcgKzQxLDcgQEAgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpUYXNrRGlz
cGF0Y2hlcigpCiB2b2lkIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cG9zdFRhc2soRnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhzaGFyZWRMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19zaGFyZWRMb2Nr
IH07CiAgICAgICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAg
ICAgICAgIHBlbmRpbmdEaXNwYXRjaGVycygpLmFwcGVuZChtYWtlV2Vha1B0cigqdGhpcykpOwog
ICAgIH0KQEAgLTU3LDEyICs1OSw2IEBAIFRpbWVyJiBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNo
YXJlZFRpbWVyKCkKICAgICByZXR1cm4gdGltZXIuZ2V0KCk7CiB9CiAKLUxvY2smIFRhc2tEaXNw
YXRjaGVyPFRpbWVyPjo6c2hhcmVkTG9jaygpCi17Ci0gICAgc3RhdGljIExvY2sgbG9jazsKLSAg
ICByZXR1cm4gbG9jazsKLX0KLQogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNoYXJlZFRp
bWVyRmlyZWQoKQogewogICAgIEFTU0VSVCghc2hhcmVkVGltZXIoKS5pc0FjdGl2ZSgpKTsKQEAg
LTcxLDggKzY3LDggQEAgdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNoYXJlZFRpbWVyRmly
ZWQoKQogICAgIC8vIHF1ZXVlZCBieSB0aGUgSlMgZXZlbnRzIGhhbmRsZXJzIHRoYXQgYXJlIGV4
ZWN1dGVkIGluIHRoZSBsb29wIGJlbG93LgogICAgIERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNo
ZXI8VGltZXI+Pj4gcXVldWVkRGlzcGF0Y2hlcnM7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHNoYXJlZExvY2soKSk7Ci0gICAgICAgIHF1ZXVlZERpc3BhdGNoZXJzID0g
V1RGTW92ZShwZW5kaW5nRGlzcGF0Y2hlcnMoKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBz
X3NoYXJlZExvY2sgfTsKKyAgICAgICAgcXVldWVkRGlzcGF0Y2hlcnMgPSBzdGQ6OmV4Y2hhbmdl
KHBlbmRpbmdEaXNwYXRjaGVycygpLCB7IH0pOwogICAgIH0KICAgICB3aGlsZSAoIXF1ZXVlZERp
c3BhdGNoZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBXZWFrUHRyPFRhc2tEaXNwYXRjaGVyPFRp
bWVyPj4gZGlzcGF0Y2hlciA9IHF1ZXVlZERpc3BhdGNoZXJzLnRha2VGaXJzdCgpOwpAQCAtODUs
MjEgKzgxLDE1IEBAIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZpcmVk
KCkKIAogRGVxdWU8V2Vha1B0cjxUYXNrRGlzcGF0Y2hlcjxUaW1lcj4+PiYgVGFza0Rpc3BhdGNo
ZXI8VGltZXI+OjpwZW5kaW5nRGlzcGF0Y2hlcnMoKQogewotICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8RGVxdWU8V2Vha1B0cjxUYXNrRGlzcGF0Y2hlcjxUaW1lcj4+Pj4gZGlzcGF0Y2hl
cnM7Ci0KLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgZGlzcGF0Y2hlcnMuY29uc3RydWN0KCk7Ci0g
ICAgfSk7Ci0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVxdWU8V2Vha1B0cjxUYXNrRGlz
cGF0Y2hlcjxUaW1lcj4+Pj4gZGlzcGF0Y2hlcnM7CiAgICAgcmV0dXJuIGRpc3BhdGNoZXJzLmdl
dCgpOwogfQogCiB2b2lkIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6ZGlzcGF0Y2hPbmVUYXNrKCkK
IHsKLSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gdGFzazsKKyAgICBGdW5jdGlvbjx2b2lkKCk+
IHRhc2s7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNoYXJlZExvY2so
KSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBzX3NoYXJlZExvY2sgfTsKICAgICAgICAgQVNT
RVJUKCFtX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkpOwogICAgICAgICB0YXNrID0gbV9wZW5kaW5n
VGFza3MudGFrZUZpcnN0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJp
Y1Rhc2tRdWV1ZS5oCmluZGV4IDRlOWI0MGQ5YjUxZTVmMTYxMjAzNjBmNTM1NWJhODQ4YzM0NGJm
YWQuLjUxYzA4MjVjNmI0ZmUwMWQ2NWNhYzQwY2FhOTdiZWMxYzE4ZjE2YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKQEAgLTY2LDEzICs2NiwxMyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIFRpbWVyJiBzaGFyZWRUaW1lcigpOwotICAg
IHN0YXRpYyBXVEY6OkxvY2smIHNoYXJlZExvY2soKTsKICAgICBzdGF0aWMgdm9pZCBzaGFyZWRU
aW1lckZpcmVkKCk7Ci0gICAgc3RhdGljIERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGlt
ZXI+Pj4mIHBlbmRpbmdEaXNwYXRjaGVycygpOworICAgIHN0YXRpYyBEZXF1ZTxXZWFrUHRyPFRh
c2tEaXNwYXRjaGVyPFRpbWVyPj4+JiBwZW5kaW5nRGlzcGF0Y2hlcnMoKSBXVEZfUkVRVUlSRVNf
TE9DSyhzX3NoYXJlZExvY2spOwogCiAgICAgdm9pZCBkaXNwYXRjaE9uZVRhc2soKTsKIAotICAg
IERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1Rhc2tzOworICAgIHN0YXRpYyBDaGVj
a2VkTG9jayBzX3NoYXJlZExvY2s7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5k
aW5nVGFza3MgV1RGX0dVQVJERURfQllfTE9DSyhzX3NoYXJlZExvY2spOwogfTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdh
Y3lTY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hl
bWVSZWdpc3RyeS5jcHAKaW5kZXggYzNmNzU2MDE4NmYyMGFjNWM4OGYzNGE1NDM2ZmNkYWEzYmI1
NzdhZC4uZDViYjA0NTI4YWNiOWIyMGU2OTVkN2IwYzA1NGE3OWIwODEwN2MwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMjcs
OCArMjcsNyBAQAogI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAKICNpbmNsdWRl
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKLSNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2lu
Y2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4KQEAgLTY2LDcgKzY1LDcgQEAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChjb25z
dCBWZWN0b3I8U3QKICAgICByZXR1cm4gc2V0OwogfQogCi1zdGF0aWMgTG9jayBzY2hlbWVSZWdp
c3RyeUxvY2s7CitzdGF0aWMgQ2hlY2tlZExvY2sgc2NoZW1lUmVnaXN0cnlMb2NrOwogCiBzdGF0
aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYWxsQnVpbHRpblNjaGVtZXMoKQogewpAQCAtOTUsNyAr
OTQsNyBAQCBzdGF0aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYWxsQnVpbHRpblNjaGVtZXMoKQog
CiAgICAgICAgIFVSTFNjaGVtZXNNYXAgc2V0OwogICAgICAgICB7Ci0gICAgICAgICAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHNj
aGVtZSA6IGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKSkKICAgICAgICAgICAgICAgICBzZXQuYWRk
KHNjaGVtZSk7CiAKQEAgLTEwOSw3ICsxMDgsNyBAQCBzdGF0aWMgY29uc3QgVVJMU2NoZW1lc01h
cCYgYWxsQnVpbHRpblNjaGVtZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1zdGF0aWMg
Y29uc3QgVVJMU2NoZW1lc01hcCYgYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpCitzdGF0aWMgY29u
c3QgVVJMU2NoZW1lc01hcCYgYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpIFdURl9SRVFVSVJFU19M
T0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2Nr
LmlzSGVsZCgpKTsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVz
dHJveWVkKFVSTFNjaGVtZXNNYXAgewpAQCAtMTIxLDIxICsxMjAsMjEgQEAgc3RhdGljIGNvbnN0
IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQogICAgIHJldHVybiBzY2hl
bWVzOwogfQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKK3N0YXRp
YyBVUkxTY2hlbWVzTWFwJiBsb2NhbFVSTFNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hl
bWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQo
KSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGxvY2FsU2NoZW1l
cyA9IGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKTsKICAgICByZXR1cm4gbG9jYWxTY2hlbWVzOwog
fQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1lcygpCitz
dGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1lcygpIFdURl9SRVFV
SVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0
cnlMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01h
cD4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsKICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2No
ZW1lczsKIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkK
K2NvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpIFdURl9SRVFVSVJF
U19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlM
b2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsKQEAgLTE1MCwxNCArMTQ5LDE0IEBAIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpCiAgICAgcmV0dXJuIHNjaGVtZXM7
CiB9CiAKLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzZWN1cmVTY2hlbWVzKCkKK3N0YXRpYyBVUkxT
Y2hlbWVzTWFwJiBzZWN1cmVTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0
cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAg
IHN0YXRpYyBhdXRvIHNlY3VyZVNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQo
YnVpbHRpblNlY3VyZVNjaGVtZXMpOwogICAgIHJldHVybiBzZWN1cmVTY2hlbWVzOwogfQogCi1j
b25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCitz
dGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJU
KHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2No
ZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CkBAIC0xNzAsNyArMTY5
LDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgc2No
ZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKK3N0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0
aFVuaXF1ZU9yaWdpbnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7
CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGF1
dG8gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0
KGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMpOwpAQCAtMTk4LDE0ICsxOTcsMTQgQEAg
c3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYXhhdGlv
bigpCiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWls
dGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKK2NvbnN0IFZlY3RvcjxTdHJp
bmc+JiBidWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkgV1RGX1JFUVVJ
UkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3Ry
eUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAiYmxvYiJfcyB9KTsKICAgICByZXR1cm4gc2No
ZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0U2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3RTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewog
ICAgIEFTU0VSVCghaXNJbk5ldHdvcmtQcm9jZXNzKCkpOwogICAgIEFTU0VSVChzY2hlbWVSZWdp
c3RyeUxvY2suaXNIZWxkKCkpOwpAQCAtMjI1LDIwICsyMjQsMjAgQEAgdm9pZCBMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tl
cjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
c2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgbG9jYWxVUkxTY2hlbWVzKCkuYWRkKHNjaGVtZSk7
CiB9CiAKIHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVy
ZWRBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0
cnlMb2NrIH07CiAgICAgaWYgKGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hl
bWUpKQogICAgICAgICByZXR1cm47CiAKICAgICBsb2NhbFVSTFNjaGVtZXMoKS5yZW1vdmUoc2No
ZW1lKTsKIH0KIAotc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgc2NoZW1lc0hhbmRsZWRCeVNjaGVt
ZUhhbmRsZXIoKQorc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgc2NoZW1lc0hhbmRsZWRCeVNjaGVt
ZUhhbmRsZXIoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAg
QVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gc2V0OwpAQCAtMjQ3LDEzICsyNDYsMTMgQEAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiYgc2NoZW1lc0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoKQogCiB2b2lk
IExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzSGFuZGxlZEJ5U2NoZW1l
SGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5
TG9jayB9OwogICAgIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKCkuYWRkKHNjaGVtZSk7
CiB9CiAKIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZUlzSGFuZGxlZEJ5U2NoZW1l
SGFuZGxlcihTdHJpbmdWaWV3IHNjaGVtZSkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNj
aGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9j
ayB9OwogICAgIHJldHVybiBzY2hlbWVzSGFuZGxlZEJ5U2NoZW1lSGFuZGxlcigpLmNvbnRhaW5z
KHNjaGVtZS50b1N0cmluZygpKTsKIH0KIApAQCAtMjc5LDE0ICsyNzgsMTQgQEAgc3RhdGljIFVS
TFNjaGVtZXNNYXAmIENPUlNFbmFibGVkU2NoZW1lcygpCiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9
CiAKLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdT
Y2hlbWVzKCkKK3N0YXRpYyBVUkxTY2hlbWVzTWFwJiBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBh
c3NpbmdTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewog
ICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwogICAgIHJldHVybiBzY2hlbWVzOwog
fQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkKK3N0
YXRpYyBVUkxTY2hlbWVzTWFwJiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMoKSBXVEZfUkVRVUlS
RVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5
TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IHNjaGVtZXM7CkBAIC0zMDUsNyArMzA0LDcgQEAgYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlm
IChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2No
ZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0dXJuIGxvY2FsVVJMU2NoZW1lcygpLmNvbnRhaW5z
KHNjaGVtZSk7CiB9CiAKQEAgLTMxNCw3ICszMTMsNyBAQCB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAg
ICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hl
bWVSZWdpc3RyeUxvY2sgfTsKICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKS5hZGQoc2No
ZW1lKTsKIH0KIApAQCAtMzIzLDcgKzMyMiw3IEBAIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAg
ICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC0zMzIsNyArMzMxLDcgQEAgdm9pZCBMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25z
dCBTdHJpbmcmIHNjaGUKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGRpc3BsYXlJc29sYXRlZFVS
TFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtMzQxLDcgKzM0MCw3IEBAIGJvb2wgTGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQo
Y29uc3QgU3RyaW5nJiBzCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gZGlz
cGxheUlzb2xhdGVkVVJMU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKQEAgLTM1MCw3
ICszNDksNyBAQCB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
U2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgc2Vj
dXJlU2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCkBAIC0zNTksNyArMzU4LDcgQEAgYm9vbCBM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc1NlY3VyZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBzZWN1
cmVTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIApAQCAtMzk3LDcgKzM5Niw3IEBAIGJv
b2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0
IFN0cmluZyYgc2NoZW1lKQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0dXJuIGNh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAK
QEAgLTQwNyw3ICs0MDYsNyBAQCB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlckFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzYwogICAgIGlmIChzY2hl
bWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
c2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlM
b2NrIH07CiAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkuYWRkKHNjaGVt
ZSk7CiB9CiAKQEAgLTQ2MCw3ICs0NTksNyBAQCB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojpy
ZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbgogICAg
IGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1l
UmVnaXN0cnlMb2NrIH07CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1l
cygpLmFkZChzY2hlbWUpOwogfQogCkBAIC00NjksNyArNDY4LDcgQEAgdm9pZCBMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNl
Y3VyaXR5UG8KICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5
cGFzc2luZ1NjaGVtZXMoKS5yZW1vdmUoc2NoZW1lKTsKIH0KIApAQCAtNDc4LDcgKzQ3Nyw3IEBA
IGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1
cml0eVBvbGljeShjb25zdCBTdHJpbmcmCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3Ry
eUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBy
ZXR1cm4gQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpLmNvbnRhaW5zKHNj
aGVtZSk7CiB9CiAKQEAgLTQ5OSw3ICs0OTgsNyBAQCB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpyZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmIHNjaAog
ICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2No
ZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkuYWRkKHNj
aGVtZSk7CiB9CiAKQEAgLTUwOCw3ICs1MDcsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRQYXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZQog
ICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0dXJuIGNhY2hlUGFydGl0aW9uaW5nU2No
ZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCmluZGV4IDgxYThiZWQ2YmZjZjdhNGJiYjFj
ODAzODU2ZDY3ZGUxYTFiNDE1MGIuLmVhNGRlZDI2NDFmNTQ2NTQxMjM5YWU3NWZmYTZhYjMwNzY5
N2Y3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRG
cmFtZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZy
YW1lTWFjLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkZGVEZyYW1lLmgiCiAKICNp
bmNsdWRlICJWZWN0b3JNYXRoLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ2LDkgKzQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY29uc3RleHByIHVuc2lnbmVkIGtNaW5GRlRQb3cyU2l6ZSA9IDI7CiBjb25zdGV4cHIgdW5z
aWduZWQga01heEZGVFBvdzJTaXplID0gMjQ7CiAKLXN0YXRpYyBMb2NrIGZmdFNldHVwc0xvY2s7
CitzdGF0aWMgQ2hlY2tlZExvY2sgZmZ0U2V0dXBzTG9jazsKIAotc3RhdGljIFZlY3RvcjxGRlRT
ZXR1cD4mIGZmdFNldHVwcygpCitzdGF0aWMgVmVjdG9yPEZGVFNldHVwPiYgZmZ0U2V0dXBzKCkg
V1RGX1JFUVVJUkVTX0xPQ0soZmZ0U2V0dXBzTG9jaykKIHsKICAgICBBU1NFUlQoZmZ0U2V0dXBz
TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxGRlRTZXR1
cD4+IGZmdFNldHVwcyhrTWF4RkZUUG93MlNpemUsIG51bGxwdHIpOwpAQCAtMTM2LDcgKzEzNiw3
IEBAIEZGVFNldHVwIEZGVEZyYW1lOjpmZnRTZXR1cEZvclNpemUodW5zaWduZWQgZmZ0U2l6ZSkK
ICAgICBhdXRvIHBvdzJzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2cyKGZmdFNpemUpKTsK
ICAgICBBU1NFUlQocG93MnNpemUgPCBrTWF4RkZUUG93MlNpemUpOwogCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhmZnRTZXR1cHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZmZ0U2V0
dXBzTG9jayB9OwogICAgIGF1dG8mIGZmdFNldHVwID0gZmZ0U2V0dXBzKCkuYXQocG93MnNpemUp
OwogICAgIGlmICghZmZ0U2V0dXApCiAgICAgICAgIGZmdFNldHVwID0gdkRTUF9jcmVhdGVfZmZ0
c2V0dXAocG93MnNpemUsIEZGVF9SQURJWDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDFkMGJlODM0NmZmYjI0YWM3M2FjNGU5
MmMxYWExYzM0ZTVjZTY0ODkuLjhhMDM3MDY5OGNkYjA5ZTE3NGJjMmQzZTEzMjNkODczNGY5NDJk
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFu
Z2VzLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgIklu
YmFuZFRleHRUcmFja1ByaXZhdGUuaCIKQEAgLTIwMyw5ICsyMDQsOSBAQCBzdGF0aWMgTWVkaWFQ
bGF5ZXJDbGllbnQmIG51bGxNZWRpYVBsYXllckNsaWVudCgpCiAKIHN0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllckZhY3Rvcnk+JiYpOwogCi1zdGF0
aWMgTG9jayBtZWRpYUVuZ2luZVZlY3RvckxvY2s7CitzdGF0aWMgQ2hlY2tlZExvY2sgbWVkaWFF
bmdpbmVWZWN0b3JMb2NrOwogCi1zdGF0aWMgYm9vbCYgaGF2ZU1lZGlhRW5naW5lc1ZlY3Rvcigp
CitzdGF0aWMgYm9vbCYgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcigpIFdURl9SRVFVSVJFU19MT0NL
KG1lZGlhRW5naW5lVmVjdG9yTG9jaykKIHsKICAgICBzdGF0aWMgYm9vbCBoYXZlVmVjdG9yOwog
ICAgIHJldHVybiBoYXZlVmVjdG9yOwpAQCAtMjI4LDcgKzIyOSw3IEBAIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJTdXBwb3J0OjpzZXRSZWdpc3RlclJlbW90ZVBsYXllckNhbGxiYWNrKFJlZ2lzdGVy
UmVtb3RlUGxhCiAgICAgcmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjaygpID0gV1RGTW92ZShj
YWxsYmFjayk7CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkTWVkaWFFbmdpbmVzVmVjdG9yKCkKK3N0
YXRpYyB2b2lkIGJ1aWxkTWVkaWFFbmdpbmVzVmVjdG9yKCkgV1RGX1JFUVVJUkVTX0xPQ0sobWVk
aWFFbmdpbmVWZWN0b3JMb2NrKQogewogICAgIEFTU0VSVChtZWRpYUVuZ2luZVZlY3RvckxvY2su
aXNMb2NrZWQoKSk7CiAKQEAgLTI4Miw3ICsyODMsNyBAQCBzdGF0aWMgdm9pZCBidWlsZE1lZGlh
RW5naW5lc1ZlY3RvcigpCiBzdGF0aWMgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVBsYXllckZhY3Rvcnk+PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKIHsKICAgICB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobWVkaWFFbmdpbmVWZWN0b3JMb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1lZGlhRW5naW5lVmVjdG9yTG9jayB9OwogICAgICAgICBpZiAo
IWhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSkKICAgICAgICAgICAgIGJ1aWxkTWVkaWFFbmdpbmVz
VmVjdG9yKCk7CiAgICAgfQpAQCAtMTUwMSw3ICsxNTAyLDcgQEAgVmVjdG9yPFJlZlB0cjxQbGF0
Zm9ybVRleHRUcmFjaz4+IE1lZGlhUGxheWVyOjpvdXRPZkJhbmRUcmFja1NvdXJjZXMoKQogCiB2
b2lkIE1lZGlhUGxheWVyOjpyZXNldE1lZGlhRW5naW5lcygpCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtZWRpYUVuZ2luZVZlY3RvckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
ZWRpYUVuZ2luZVZlY3RvckxvY2sgfTsKIAogICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2lu
ZXNWZWN0b3IoKS5jbGVhcigpOwogICAgIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggYTVkMmY3MzZj
MmVkODMwZWRjMGQzZGJhNzNkYmJhODAzZjFlMWUyMy4uYmU4N2FkMmQzZGRkZWU2NTZlZDgyYTRk
NDJlNmVhYzRjZGRjYjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
Lm1tCkBAIC0yOSwxMiArMjksMTQgQEAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIAogI2ltcG9ydCAi
UmVzb3VyY2VSZXF1ZXN0LmgiCi0jaW1wb3J0IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TRmlsZU1hbmFnZXJTUEkuaD4KKyNpbXBvcnQgPHd0
Zi9DaGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2ltcG9ydCA8cGFs
L2lvcy9RdWlja0xvb2tTb2Z0TGluay5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0
IGNoYXIqIFFMUHJldmlld1Byb3RvY29sID0gIngtYXBwbGUtcWwtaWQiOwpAQCAtNDUsOSArNDcs
OSBAQCBOU1NldCAqUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkKICAgICByZXR1
cm4gc2V0LmdldCgpLmdldCgpOwogfQogCi1zdGF0aWMgTG9jayBxbFByZXZpZXdDb252ZXJ0ZXJE
aWN0aW9uYXJ5TG9jazsKK3N0YXRpYyBDaGVja2VkTG9jayBxbFByZXZpZXdDb252ZXJ0ZXJEaWN0
aW9uYXJ5TG9jazsKIAotc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkgKlFMUHJldmlld0NvbnZl
cnRlckRpY3Rpb25hcnkoKQorc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkgKlFMUHJldmlld0Nv
bnZlcnRlckRpY3Rpb25hcnkoKSBXVEZfUkVRVUlSRVNfTE9DSyhxbFByZXZpZXdDb252ZXJ0ZXJE
aWN0aW9uYXJ5TG9jaykKIHsKICAgICBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlv
bmFyeSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CiAgICAgcmV0dXJuIGRp
Y3Rpb25hcnk7CkBAIC02MSw3ICs2Myw3IEBAIHN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpR
TENvbnRlbnREaWN0aW9uYXJ5KCkKIAogdm9pZCByZW1vdmVRTFByZXZpZXdDb252ZXJ0ZXJGb3JV
UkwoTlNVUkwgKnVybCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHFsUHJldmlld0Nv
bnZlcnRlckRpY3Rpb25hcnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcWxQcmV2aWV3Q29u
dmVydGVyRGljdGlvbmFyeUxvY2sgfTsKICAgICBbUUxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFy
eSgpIHJlbW92ZU9iamVjdEZvcktleTp1cmxdOwogICAgIFtRTENvbnRlbnREaWN0aW9uYXJ5KCkg
cmVtb3ZlT2JqZWN0Rm9yS2V5OnVybF07CiB9CkBAIC03MCw3ICs3Miw3IEBAIHN0YXRpYyB2b2lk
IGFkZFFMUHJldmlld0NvbnZlcnRlcldpdGhGaWxlRm9yVVJMKE5TVVJMICp1cmwsIGlkIGNvbnZl
cnRlciwgTlNTdHJpCiB7CiAgICAgQVNTRVJUKHVybCk7CiAgICAgQVNTRVJUKGNvbnZlcnRlcik7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlM
b2NrIH07CiAgICAgW1FMUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnkoKSBzZXRPYmplY3Q6Y29u
dmVydGVyIGZvcktleTp1cmxdOwogICAgIFtRTENvbnRlbnREaWN0aW9uYXJ5KCkgc2V0T2JqZWN0
OihmaWxlTmFtZSA/IGZpbGVOYW1lIDogQCIiKSBmb3JLZXk6dXJsXTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Lm1tCmluZGV4IGJhMGUxOGU5Mjk4ZTBjMzEyZjMxYTc2MDkzOTFiZDU0MjE5NDYy
MzYuLjcwNzIyYTk2OWM2OWI3YmY3MWUwMzc0OGE0MzNiZmYzOWY3NWQ2NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlckNsaWVudC5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiV2ViQmFja2dyb3Vu
ZFRhc2tDb250cm9sbGVyLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCkBAIC04NCwxNiArODUsMTYgQEAgdm9pZCBXZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXJDbGllbnQ6Omh5c3RlcmVzaXNVcGRhdGVkKFBBTDo6SHlzdGVyZXNpc1N0YXRl
IHN0YXQKIAogfQogCi1zdGF0aWMgTG9jayB0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRp
ZmllckxvY2s7CitzdGF0aWMgQ2hlY2tlZExvY2sgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lk
ZW50aWZpZXJMb2NrOwogCi1zdGF0aWMgTlNVSW50ZWdlciB0cmFuc2FjdGlvbkJhY2tncm91bmRU
YXNrSWRlbnRpZmllcjsKK3N0YXRpYyBOU1VJbnRlZ2VyIHRyYW5zYWN0aW9uQmFja2dyb3VuZFRh
c2tJZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFz
a0lkZW50aWZpZXJMb2NrKTsKIAotc3RhdGljIHZvaWQgc2V0VHJhbnNhY3Rpb25CYWNrZ3JvdW5k
VGFza0lkZW50aWZpZXIoTlNVSW50ZWdlciBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgc2V0VHJh
bnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoTlNVSW50ZWdlciBpZGVudGlmaWVyKSBX
VEZfUkVRVUlSRVNfTE9DSyh0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2sp
CiB7CiAgICAgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIgPSBpZGVudGlmaWVy
OwogfQogCi1zdGF0aWMgTlNVSW50ZWdlciBnZXRUcmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRl
bnRpZmllcigpCitzdGF0aWMgTlNVSW50ZWdlciBnZXRUcmFuc2FjdGlvbkJhY2tncm91bmRUYXNr
SWRlbnRpZmllcigpIFdURl9SRVFVSVJFU19MT0NLKHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJ
ZGVudGlmaWVyTG9jaykKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7CiAgICAg
ZGlzcGF0Y2hfb25jZSgmcHJlZCwgXiB7CkBAIC0xMDcsNyArMTA4LDcgQEAgQGltcGxlbWVudGF0
aW9uIFdlYkRhdGFiYXNlVHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIKIAogKyAo
dm9pZClzdGFydEJhY2tncm91bmRUYXNrCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0
cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyB0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2sgfTsKIAogICAgIC8v
IElmIHRoZXJlJ3MgYWxyZWFkeSBhbiBleGlzdGluZyBiYWNrZ3JvdW5kIHRhc2sgZ29pbmcgb24s
IHRoZXJlJ3Mgbm8gbmVlZCB0byBzdGFydCBhIG5ldyBvbmUuCiAgICAgV2ViQmFja2dyb3VuZFRh
c2tDb250cm9sbGVyICpiYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIgPSBbV2ViQmFja2dyb3VuZFRh
c2tDb250cm9sbGVyIHNoYXJlZENvbnRyb2xsZXJdOwpAQCAtMTIyLDcgKzEyMyw3IEBAICsgKHZv
aWQpc3RhcnRCYWNrZ3JvdW5kVGFzawogCiArICh2b2lkKWVuZEJhY2tncm91bmRUYXNrCiB7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRp
ZmllckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNr
SWRlbnRpZmllckxvY2sgfTsKIAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2Ugd2VyZSB1
bmFibGUgdG8gc3RhcnQgdGhlIGJhY2tncm91bmQgdGFzayB3aGVuIHRoZSBmaXJzdCB0cmFuc2Fj
dGlvbiBiZWdhbi4KICAgICAvLyBEb24ndCB0cnkgdG8gZW5kIHRoZSB0YXNrIGluIHRoYXQgY2Fz
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0
aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxp
dGllcy5tbQppbmRleCA2ZDVkNWM1N2VlMGJjYTVjNjEwZDJkYjBlODJjNGU2ZjQ5MWFmZjllLi42
NmUyN2VhNTIyNGFmOGRiMTljMmE5ZjE2OWE5MWMxYzNkODM4YmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgog
Ci0jaW1wb3J0IDx3dGYvTG9jay5oPgorI2ltcG9ydCA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CiAj
aW1wb3J0IDx3dGYvVGlueUxSVUNhY2hlLmg+CkBAIC0xMTIsNyArMTEyLDggQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVLZXlGb3JT
dG9yYWdlKGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiBrZXkuaXNvbGF0ZWRDb3B5KCk7IH0K
IH07CiAKLXN0YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZyb21NaW1lVHlwZSgp
CitzdGF0aWMgQ2hlY2tlZExvY2sgY2FjaGVVVElGcm9tTUlNRVR5cGVMb2NrOworc3RhdGljIFRp
bnlMUlVDYWNoZTxTdHJpbmcsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4sIDE2LCBVVElGcm9tTUlN
RVR5cGVDYWNoZVBvbGljeT4mIGNhY2hlVVRJRnJvbU1JTUVUeXBlKCkgV1RGX1JFUVVJUkVTX0xP
Q0soY2FjaGVVVElGcm9tTUlNRVR5cGVMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJv
bU1JTUVUeXBlQ2FjaGVQb2xpY3k+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CkBAIC0xMjAs
OSArMTIxLDggQEAgc3RhdGljIFRpbnlMUlVDYWNoZTxTdHJpbmcsIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4sIDE2LCBVVElGcm9tTUlNRVR5cGVDYWNoZVBvbGkKIAogU3RyaW5nIFVUSUZyb21NSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIHN0YXRpYyBMb2NrIGxvY2s7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKLSAgICByZXR1cm4gY2FjaGVVVElGcm9t
TWltZVR5cGUoKS5nZXQobWltZVR5cGUpLmdldCgpOworICAgIExvY2tlciBsb2NrZXIgeyBjYWNo
ZVVUSUZyb21NSU1FVHlwZUxvY2sgfTsKKyAgICByZXR1cm4gY2FjaGVVVElGcm9tTUlNRVR5cGUo
KS5nZXQobWltZVR5cGUpLmdldCgpOwogfQogCiBib29sIGlzRGVjbGFyZWRVVEkoY29uc3QgU3Ry
aW5nJiBVVEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAppbmRleCAzNGRhZjRlZDI5ZWY4MzJmM2FlMDUyY2IyZTU0NTNlMjVkMjI4ZTI5Li5lYTQ1
MzExMGExODM5NzM3ZDk3NWZiMzVlMWU4MjA5YzhlYTIwMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDxzcWxpdGUzLmg+CiAjaW5jbHVkZSA8dGhyZWFkPgor
I2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KQEAgLTcxLDEyICs3MiwxMiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU1FMaXRlSWZOZWNl
c3NhcnkoKQogICAgIH0pOwogfQogCi1zdGF0aWMgYm9vbCBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJp
ZGRlbiA9IGZhbHNlOwotc3RhdGljIExvY2sgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW5NdXRl
eDsKK3N0YXRpYyBDaGVja2VkTG9jayBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbkxvY2s7Citz
dGF0aWMgYm9vbCBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbiBXVEZfR1VBUkRFRF9CWV9MT0NL
KGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTG9jaykgeyBmYWxzZSB9OwogCiB2b2lkIFNRTGl0
ZURhdGFiYXNlOjpzZXRJc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbihib29sIGlzRm9yYmlkZGVu
KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRk
ZW5NdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVu
TG9jayB9OwogICAgIGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuID0gaXNGb3JiaWRkZW47CiB9
CiAKQEAgLTk0LDcgKzk1LDcgQEAgYm9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKICAgICBjbG9zZSgpOwogCiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVu
TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRk
ZW5Mb2NrIH07CiAgICAgICAgIGlmIChpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbikgewogICAg
ICAgICAgICAgbV9vcGVuRXJyb3JNZXNzYWdlID0gIm9wZW5pbmcgZGF0YWJhc2UgaXMgZm9yYmlk
ZGVuIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggNmEyOGUxOWJl
OTQ2OTMwMzVhNTZiNjQwOTRlNDE1N2VjOTVhN2Q3MC4uM2Y4ZTNjOTdlZGU4MGU0MjkxNTg0NGU3
ZmJjYTVhNjJmMTQ5ZDc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTI3LDI2ICsyNywyNSBAQAogI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogCiAjaW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVk
ZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBuYW1lc3BhY2UgU1FMaXRlRGF0YWJhc2VUcmFja2VyIHsKIAotc3RhdGlj
IFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCogc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnQgPSBudWxscHRyOwotc3RhdGljIHVuc2lnbmVkIHNfdHJhbnNhY3Rpb25JblByb2dy
ZXNzQ291bnRlciA9IDA7Ci0KLXN0YXRpYyBMb2NrIHRyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4
Oworc3RhdGljIENoZWNrZWRMb2NrIHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2s7CitzdGF0aWMg
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tl
ckNsaWVudCBXVEZfR1VBUkRFRF9CWV9MT0NLKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2spIHsg
bnVsbHB0ciB9Oworc3RhdGljIHVuc2lnbmVkIHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRl
ciBXVEZfR1VBUkRFRF9CWV9MT0NLKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2spIHsgMCB9Owog
CiB2b2lkIHNldENsaWVudChTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIHNf
c3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID0gY2xpZW50OwogfQogCiB2b2lkIGlu
Y3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCkKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgdHJhbnNhY3Rpb25JblByb2dyZXNzTG9jayB9OwogICAgIGlmICghc19zdGF0aWNTUUxpdGVE
YXRhYmFzZVRyYWNrZXJDbGllbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTcsNyArNTYsNyBA
QCB2b2lkIGluY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCkKIAogdm9pZCBkZWNy
ZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7
IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsKICAgICBpZiAoIXNfc3RhdGljU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTcwLDcgKzY5LDcgQEAg
dm9pZCBkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpCiAKIGJvb2wgaGFzVHJh
bnNhY3Rpb25JblByb2dyZXNzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25J
blByb2dyZXNzTG9jayB9OwogICAgIHJldHVybiAhc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnQgfHwgc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudGVyID4gMDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5
LmNwcAppbmRleCAwNmRmZjZjZDliMjA3YzU2ZjhkNzAxYjc4ODJkY2NlYmYyZTZiODVjLi5lMWJj
NTM2Y2M2YTA0ODU3Nzg2MmNmZDFjMzE3NGNkNjc0NzE2ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcApAQCAtMzks
OSArMzksOSBAQAogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpAQCAtOTEsMTAgKzkxLDEwIEBAIHN0cnVjdCBUZXh0RW5jb2RpbmdOYW1lSGFzaCB7CiB1
c2luZyBUZXh0RW5jb2RpbmdOYW1lTWFwID0gSGFzaE1hcDxjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciosIFRleHRFbmNvZGluZ05hbWVIYXNoPjsKIHVzaW5nIFRleHRDb2RlY01hcCA9IEhhc2hNYXA8
Y29uc3QgY2hhciosIE5ld1RleHRDb2RlY0Z1bmN0aW9uPjsKIAotc3RhdGljIExvY2sgZW5jb2Rp
bmdSZWdpc3RyeU11dGV4Oworc3RhdGljIENoZWNrZWRMb2NrIGVuY29kaW5nUmVnaXN0cnlMb2Nr
OwogCi1zdGF0aWMgVGV4dEVuY29kaW5nTmFtZU1hcCogdGV4dEVuY29kaW5nTmFtZU1hcDsKLXN0
YXRpYyBUZXh0Q29kZWNNYXAqIHRleHRDb2RlY01hcDsKK3N0YXRpYyBUZXh0RW5jb2RpbmdOYW1l
TWFwKiB0ZXh0RW5jb2RpbmdOYW1lTWFwIFdURl9HVUFSREVEX0JZX0xPQ0soZW5jb2RpbmdSZWdp
c3RyeUxvY2spOworc3RhdGljIFRleHRDb2RlY01hcCogdGV4dENvZGVjTWFwIFdURl9HVUFSREVE
X0JZX0xPQ0soZW5jb2RpbmdSZWdpc3RyeUxvY2spOwogc3RhdGljIGJvb2wgZGlkRXh0ZW5kVGV4
dENvZGVjTWFwczsKIHN0YXRpYyBIYXNoU2V0PGNvbnN0IGNoYXIqPiogamFwYW5lc2VFbmNvZGlu
Z3M7CiBzdGF0aWMgSGFzaFNldDxjb25zdCBjaGFyKj4qIG5vbkJhY2tzbGFzaEVuY29kaW5nczsK
QEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgYm9vbCBpc1VuZGVzaXJlZEFsaWFzKGNvbnN0IGNo
YXIqIGFsaWFzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgYWRkVG9UZXh0
RW5jb2RpbmdOYW1lTWFwKGNvbnN0IGNoYXIqIGFsaWFzLCBjb25zdCBjaGFyKiBuYW1lKQorc3Rh
dGljIHZvaWQgYWRkVG9UZXh0RW5jb2RpbmdOYW1lTWFwKGNvbnN0IGNoYXIqIGFsaWFzLCBjb25z
dCBjaGFyKiBuYW1lKSBXVEZfUkVRVUlSRVNfTE9DSyhlbmNvZGluZ1JlZ2lzdHJ5TG9jaykKIHsK
ICAgICBBU1NFUlQoc3RybGVuKGFsaWFzKSA8PSBtYXhFbmNvZGluZ05hbWVMZW5ndGgpOwogICAg
IGlmIChpc1VuZGVzaXJlZEFsaWFzKGFsaWFzKSkKQEAgLTEzMCwxNCArMTMwLDE0IEBAIHN0YXRp
YyB2b2lkIGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcChjb25zdCBjaGFyKiBhbGlhcywgY29uc3Qg
Y2hhciogbmFtZSkKICAgICB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5hZGQoYWxpYXMsIGF0b21OYW1l
KTsKIH0KIAotc3RhdGljIHZvaWQgYWRkVG9UZXh0Q29kZWNNYXAoY29uc3QgY2hhciogbmFtZSwg
TmV3VGV4dENvZGVjRnVuY3Rpb24mJiBmdW5jdGlvbikKK3N0YXRpYyB2b2lkIGFkZFRvVGV4dENv
ZGVjTWFwKGNvbnN0IGNoYXIqIG5hbWUsIE5ld1RleHRDb2RlY0Z1bmN0aW9uJiYgZnVuY3Rpb24p
IFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIGNvbnN0IGNo
YXIqIGF0b21OYW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWUpOwogICAgIEFTU0VS
VChhdG9tTmFtZSk7CiAgICAgdGV4dENvZGVjTWFwLT5hZGQoYXRvbU5hbWUsIFdURk1vdmUoZnVu
Y3Rpb24pKTsKIH0KIAotc3RhdGljIHZvaWQgcHJ1bmVCbG9ja2xpc3RlZENvZGVjcygpCitzdGF0
aWMgdm9pZCBwcnVuZUJsb2NrbGlzdGVkQ29kZWNzKCkgV1RGX1JFUVVJUkVTX0xPQ0soZW5jb2Rp
bmdSZWdpc3RyeUxvY2spCiB7CiAgICAgZm9yIChhdXRvJiBuYW1lRnJvbUJsb2NrbGlzdCA6IHRl
eHRFbmNvZGluZ05hbWVCbG9ja2xpc3QpIHsKICAgICAgICAgYXV0byogYXRvbU5hbWUgPSB0ZXh0
RW5jb2RpbmdOYW1lTWFwLT5nZXQobmFtZUZyb21CbG9ja2xpc3QpOwpAQCAtMTU3LDcgKzE1Nyw3
IEBAIHN0YXRpYyB2b2lkIHBydW5lQmxvY2tsaXN0ZWRDb2RlY3MoKQogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcyhjb25zdCBBYnN0cmFjdExvY2tlciYpCitz
dGF0aWMgdm9pZCBidWlsZEJhc2VUZXh0Q29kZWNNYXBzKCkgV1RGX1JFUVVJUkVTX0xPQ0soZW5j
b2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKCF0ZXh0Q29kZWNNYXApOwogICAgIEFT
U0VSVCghdGV4dEVuY29kaW5nTmFtZU1hcCk7CkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIHZv
aWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcyhjb25zdCBBYnN0cmFjdExvY2tlciYpCiAgICAgVGV4
dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKGFkZFRvVGV4dENvZGVjTWFwKTsKIH0K
IAotc3RhdGljIHZvaWQgYWRkRW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXQs
IGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgdm9pZCBhZGRFbmNvZGluZ05hbWUoSGFzaFNldDxj
b25zdCBjaGFyKj4qIHNldCwgY29uc3QgY2hhciogbmFtZSkgV1RGX1JFUVVJUkVTX0xPQ0soZW5j
b2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgLy8gV2UgbXVzdCBub3QgdXNlIGF0b21DYW5vbmlj
YWxUZXh0RW5jb2RpbmdOYW1lKCkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBp
dC4KICAgICBjb25zdCBjaGFyKiBhdG9tTmFtZSA9IHRleHRFbmNvZGluZ05hbWVNYXAtPmdldChu
YW1lKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMgdm9pZCBhZGRFbmNvZGluZ05hbWUoSGFz
aFNldDxjb25zdCBjaGFyKj4qIHNldCwgY29uc3QgY2hhciogbmFtZSkKICAgICAgICAgc2V0LT5h
ZGQoYXRvbU5hbWUpOwogfQogCi1zdGF0aWMgdm9pZCBidWlsZFF1aXJrc1NldHMoKQorc3RhdGlj
IHZvaWQgYnVpbGRRdWlya3NTZXRzKCkgV1RGX1JFUVVJUkVTX0xPQ0soZW5jb2RpbmdSZWdpc3Ry
eUxvY2spCiB7CiAgICAgLy8gRklYTUU6IEhhdmluZyBpc0phcGFuZXNlRW5jb2RpbmcoKSBhbmQg
c2hvdWxkU2hvd0JhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2xJbigpCiAgICAgLy8gYW5kIGluaXRp
YWxpemluZyB0aGUgc2V0cyBmb3IgdGhlbSBpbiBUZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAgbG9v
ayBzdHJhbmdlLgpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgc2hvdWxkU2hvd0JhY2tzbGFzaEFz
Q3VycmVuY3lTeW1ib2xJbihjb25zdCBjaGFyKiBjYW5vbmljYWxFbmNvZGluZ05hbWUpCiAgICAg
cmV0dXJuIGNhbm9uaWNhbEVuY29kaW5nTmFtZSAmJiBub25CYWNrc2xhc2hFbmNvZGluZ3MgJiYg
bm9uQmFja3NsYXNoRW5jb2RpbmdzLT5jb250YWlucyhjYW5vbmljYWxFbmNvZGluZ05hbWUpOwog
fQogCi1zdGF0aWMgdm9pZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkKK3N0YXRpYyB2b2lkIGV4dGVu
ZFRleHRDb2RlY01hcHMoKSBXVEZfUkVRVUlSRVNfTE9DSyhlbmNvZGluZ1JlZ2lzdHJ5TG9jaykK
IHsKICAgICBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKGFkZFRv
VGV4dEVuY29kaW5nTmFtZU1hcCk7CiAgICAgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVy
Q29kZWNzKGFkZFRvVGV4dENvZGVjTWFwKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgdm9p
ZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkKIAogc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3
VGV4dENvZGVjKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhlbmNvZGluZ1JlZ2lzdHJ5TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBlbmNvZGluZ1JlZ2lzdHJ5TG9jayB9OwogCiAgICAgQVNTRVJUKHRleHRDb2RlY01hcCk7CiAg
ICAgYXV0byByZXN1bHQgPSB0ZXh0Q29kZWNNYXAtPmZpbmQoZW5jb2RpbmcubmFtZSgpKTsKQEAg
LTI2NCwxMCArMjY0LDEwIEBAIGNvbnN0IGNoYXIqIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdO
YW1lKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgaWYgKCFuYW1lIHx8ICFuYW1lWzBdKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZW5jb2RpbmdS
ZWdpc3RyeU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZW5jb2RpbmdSZWdpc3RyeUxvY2sg
fTsKIAogICAgIGlmICghdGV4dEVuY29kaW5nTmFtZU1hcCkKLSAgICAgICAgYnVpbGRCYXNlVGV4
dENvZGVjTWFwcyhsb2NrZXIpOworICAgICAgICBidWlsZEJhc2VUZXh0Q29kZWNNYXBzKCk7CiAK
ICAgICBpZiAoY29uc3QgY2hhciogYXRvbU5hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5nZXQo
bmFtZSkpCiAgICAgICAgIHJldHVybiBhdG9tTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMDE3ZGY1YmI3Y2M0NTVkMDlkYTEzNTQxNTI0
ZjZkY2Y0M2RkMzUzMy4uMDdmNGU3NjkzMDM2MTFiOGUxMWUyY2QzNjQ3MjMyOWI5MTFkMWJkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTU2
LDE2ICs1NiwxNSBAQAogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1NjcmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLXN0YXRpYyBMb2NrIGFsbFdvcmtlckdsb2JhbFNj
b3BlSWRlbnRpZmllcnNMb2NrOwotc3RhdGljIEhhc2hTZXQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+JiBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKExvY2tIb2xkZXIm
IGhvbGRlcikKK3N0YXRpYyBDaGVja2VkTG9jayBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZp
ZXJzTG9jazsKK3N0YXRpYyBIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiYgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycygpIFdURl9SRVFVSVJFU19MT0NLKGFs
bFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrKQogewotICAgIFVOVVNFRF9QQVJBTSho
b2xkZXIpOwotCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+PiBpZGVudGlmaWVyczsKICAgICBBU1NFUlQoYWxsV29ya2Vy
R2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2suaXNMb2NrZWQoKSk7CiAgICAgcmV0dXJuIGlkZW50
aWZpZXJzOwpAQCAtOTAsOCArODksOCBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFs
U2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZQogICAgICwg
bV9jcmVkZW50aWFscyhwYXJhbXMuY3JlZGVudGlhbHMpCiB7CiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrKTsK
LSAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycyhsb2NrZXIpLmFkZChjb250
ZXh0SWRlbnRpZmllcigpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFsbFdvcmtlckdsb2Jh
bFNjb3BlSWRlbnRpZmllcnNMb2NrIH07CisgICAgICAgIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRl
bnRpZmllcnMoKS5hZGQoY29udGV4dElkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgaWYgKG1f
dG9wT3JpZ2luLT5oYXNVbml2ZXJzYWxBY2Nlc3MoKSkKQEAgLTExMCw4ICsxMDksOCBAQCBXb3Jr
ZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKICAgICByZW1vdmVGcm9tQ29udGV4
dHNNYXAoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhbGxXb3Jr
ZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayk7Ci0gICAgICAgIGFsbFdvcmtlckdsb2JhbFNj
b3BlSWRlbnRpZmllcnMobG9ja2VyKS5yZW1vdmUoY29udGV4dElkZW50aWZpZXIoKSk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayB9
OworICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKCkucmVtb3ZlKGNvbnRl
eHRJZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIG1fcGVyZm9ybWFuY2UgPSBudWxscHRyOwpA
QCAtNTg2LDggKzU4NSw4IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmRlbGV0ZUpTQ29kZUFu
ZEdDKFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogCiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpy
ZWxlYXNlTWVtb3J5SW5Xb3JrZXJzKFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2sp
OwotICAgIGZvciAoYXV0byYgZ2xvYmFsU2NvcGVJZGVudGlmaWVyIDogYWxsV29ya2VyR2xvYmFs
U2NvcGVJZGVudGlmaWVycyhsb2NrZXIpKSB7CisgICAgTG9ja2VyIGxvY2tlciB7IGFsbFdvcmtl
ckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrIH07CisgICAgZm9yIChhdXRvJiBnbG9iYWxTY29w
ZUlkZW50aWZpZXIgOiBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKCkpIHsKICAgICAg
ICAgcG9zdFRhc2tUbyhnbG9iYWxTY29wZUlkZW50aWZpZXIsIFtzeW5jaHJvbm91c10oYXV0byYg
Y29udGV4dCkgewogICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLnJlbGVhc2VNZW1vcnkoc3luY2hyb25vdXMpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcAppbmRleCAwMDc1YTRl
NTA0OGRhMmI5NmJmZjAyY2E4YzZiMjMzNmVmYTgyMjI2Li5hOGVhOTliYzVmZmVkMWEzY2NkODYy
OGVmOWM3YTA1MTZmYWJiYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRUaHJlYWQuY3BwCkBAIC00MCwxMCArNDAsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Mb2NrJiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRo
cmVhZHNMb2NrKCkKK0NoZWNrZWRMb2NrIFdvcmtlck9yV29ya2xldFRocmVhZDo6c193b3JrZXJP
cldvcmtsZXRUaHJlYWRzTG9jazsKKworQ2hlY2tlZExvY2smIFdvcmtlck9yV29ya2xldFRocmVh
ZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKQogewotICAgIHN0YXRpYyBMb2NrIG11dGV4
OwotICAgIHJldHVybiBtdXRleDsKKyAgICByZXR1cm4gc193b3JrZXJPcldvcmtsZXRUaHJlYWRz
TG9jazsKIH0KIAogSGFzaFNldDxXb3JrZXJPcldvcmtsZXRUaHJlYWQqPiYgV29ya2VyT3JXb3Jr
bGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkKQEAgLTU2LDEzICs1NywxMyBAQCBI
YXNoU2V0PFdvcmtlck9yV29ya2xldFRocmVhZCo+JiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondv
cmtlck9yV29ya2xldFRocmVhZHMoKQogV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpXb3JrZXJPcldv
cmtsZXRUaHJlYWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3b3JrZXJPcldvcmts
ZXRUaHJlYWRzTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd29ya2VyT3JXb3JrbGV0VGhy
ZWFkc0xvY2soKSB9OwogICAgIHdvcmtlck9yV29ya2xldFRocmVhZHMoKS5hZGQodGhpcyk7CiB9
CiAKIFdvcmtlck9yV29ya2xldFRocmVhZDo6fldvcmtlck9yV29ya2xldFRocmVhZCgpCiB7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgd29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSB9OwogICAg
IEFTU0VSVCh3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkuY29udGFpbnModGhpcykpOwogICAgIHdv
cmtlck9yV29ya2xldFRocmVhZHMoKS5yZW1vdmUodGhpcyk7CiB9CkBAIC0yNjksNyArMjcwLDcg
QEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnJlc3VtZSgpCiAKIHZvaWQgV29ya2VyT3JX
b3JrbGV0VGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKQog
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsK
ICAgICBmb3IgKGF1dG8qIHdvcmtlck9yV29ya2xldFRocmVhZCA6IHdvcmtlck9yV29ya2xldFRo
cmVhZHMoKSkgewogICAgICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAgIFdURjo6cmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRUaHJlYWQuaAppbmRleCA0ZjIxYWViNDUwYzVmNTVjODJmMjllMzc0ZDBl
M2M2Njg2NzdjOThjLi45NzNmYzcxMDRjNjNmZDFhM2Q3ZTU4ZjA1NjJmMTJiMzYxYTdjYjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKQEAg
LTI2LDkgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5o
IgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KIApAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAot
ICAgIHN0YXRpYyBIYXNoU2V0PFdvcmtlck9yV29ya2xldFRocmVhZCo+JiB3b3JrZXJPcldvcmts
ZXRUaHJlYWRzKCk7Ci0gICAgc3RhdGljIExvY2smIHdvcmtlck9yV29ya2xldFRocmVhZHNMb2Nr
KCk7CisgICAgc3RhdGljIEhhc2hTZXQ8V29ya2VyT3JXb3JrbGV0VGhyZWFkKj4mIHdvcmtlck9y
V29ya2xldFRocmVhZHMoKSBXVEZfUkVRVUlSRVNfTE9DSyh3b3JrZXJPcldvcmtsZXRUaHJlYWRz
TG9jaygpKTsKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2smIHdvcmtlck9yV29ya2xldFRocmVhZHNM
b2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX3dvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKTsKICAg
ICBzdGF0aWMgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsK
IAogcHJvdGVjdGVkOgpAQCAtODIsNiArODIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRXYWl0Rm9yV2ViSW5zcGVjdG9yT25TdGFydHVwKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX3dvcmtlck9yV29ya2xldFRocmVhZHNM
b2NrOworCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBMb2NrIG1fdGhyZWFkQ3JlYXRp
b25BbmRHbG9iYWxTY29wZUxvY2s7CiAgICAgUmVmUHRyPFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlPiBtX2dsb2JhbFNjb3BlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAppbmRleCA1ZWYyYjZlYzA5NmI0ZmUwYTBmYTM1MDdiM2MyNzExNDA3M2Rm
YWRiLi5lNDNjZTQyMmJjMWMyZWIzMTk2NTdiMmY5MWRkYWRhYmU1ZjljZWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNjAsOCArNjAs
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlN0YXRlIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c3VzcGVuZGVkU3RhdGUgeyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlN0YXRlOjpSdW5uaW5nIH07Ci1Mb2NrIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c3VzcGVuZGVkU3RhdGVMb2NrOwotQ29uZGl0aW9uIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c3VzcGVuZGVkU3RhdGVDaGFuZ2VDb25kaXRpb247CitDaGVja2VkTG9jayBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmRlZFN0YXRlTG9jazsKK0NoZWNrZWRDb25k
aXRpb24gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kZWRTdGF0ZUNoYW5n
ZUNvbmRpdGlvbjsKIAogY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bW9uaXRvcmVkRGF0YVR5cGVzKCkKIHsKQEAgLTM0OSw3
ICszNDksMTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXIKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIEFTU0VSVChzdXNwZW5kZWRTdGF0ZSAhPSBTdGF0ZTo6U3Vz
cGVuZGVkKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICB7CisgICAgICAgICAgICBMb2Nr
ZXIgc3RhdGVMb2NrZXIgeyBzdXNwZW5kZWRTdGF0ZUxvY2sgfTsKKyAgICAgICAgICAgIEFTU0VS
VChzdXNwZW5kZWRTdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICAgICAgfQorI2VuZGlm
CisKICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPm1lcmdlU3RhdGlzdGljcyhXVEZNb3ZlKHN0
YXRpc3RpY3MpKTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgICAgIC8vIFdlIGNhbiBjYW5jZWwgYW55IHBlbmRpbmcgcmVxdWVzdCB0byBw
cm9jZXNzIHN0YXRpc3RpY3Mgc2luY2Ugd2UncmUgZG9pbmcgaXQgc3luY2hyb25vdXNseSBiZWxv
dy4KQEAgLTE0NDQsNyArMTQ1MCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8CiB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxs
aW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihzdXNwZW5kZWRTdGF0ZUxvY2spOwor
ICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IHN1c3BlbmRlZFN0YXRlTG9jayB9OwogICAgIGlmIChz
dXNwZW5kZWRTdGF0ZSAhPSBTdGF0ZTo6UnVubmluZykKICAgICAgICAgcmV0dXJuOwogICAgIHN1
c3BlbmRlZFN0YXRlID0gU3RhdGU6OldpbGxTdXNwZW5kOwpAQCAtMTQ1NCw3ICsxNDYwLDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXQKICAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZVN0b3Jl
IDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmFsbFN0b3JlcygpKQogICAg
ICAgICAgICAgZGF0YWJhc2VTdG9yZS0+aW50ZXJydXB0KCk7CiAgICAgICAgIAotICAgICAgICBM
b2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIoc3VzcGVuZGVkU3RhdGVMb2NrKTsKKyAgICAgICAgTG9j
a2VyIHN0YXRlTG9ja2VyIHsgc3VzcGVuZGVkU3RhdGVMb2NrIH07CiAgICAgICAgIEFTU0VSVChz
dXNwZW5kZWRTdGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKIAogICAgICAgICBpZiAoc3VzcGVu
ZGVkU3RhdGUgIT0gU3RhdGU6OldpbGxTdXNwZW5kKSB7CkBAIC0xNDczLDcgKzE0NzksNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldAogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzdW1lKCkKIHsKLSAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIoc3VzcGVuZGVk
U3RhdGVMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyBzdXNwZW5kZWRTdGF0ZUxvY2sg
fTsKICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBzdXNwZW5kZWRTdGF0ZTsKICAgICBzdXNwZW5k
ZWRTdGF0ZSA9IFN0YXRlOjpSdW5uaW5nOwogICAgIGlmIChwcmV2aW91c1N0YXRlID09IFN0YXRl
OjpTdXNwZW5kZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKaW5kZXggMWZhM2JlMzg0N2ZmODA0YzI2NzAzMTg5NGIyMTIzMWQ2ZmU3MDRjNi4uOTYzZWE0
NzNkMzI4ODk3NjY1YWYyZTg5OTk3ZWJjZDJhYjZiNWQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
QEAgLTM2MSw5ICszNjMsOSBAQCBwcml2YXRlOgogICAgICAgICBXaWxsU3VzcGVuZCwKICAgICAg
ICAgU3VzcGVuZGVkCiAgICAgfTsKLSAgICBzdGF0aWMgU3RhdGUgc3VzcGVuZGVkU3RhdGU7Ci0g
ICAgc3RhdGljIExvY2sgc3VzcGVuZGVkU3RhdGVMb2NrOwotICAgIHN0YXRpYyBDb25kaXRpb24g
c3VzcGVuZGVkU3RhdGVDaGFuZ2VDb25kaXRpb247CisgICAgc3RhdGljIENoZWNrZWRMb2NrIHN1
c3BlbmRlZFN0YXRlTG9jazsKKyAgICBzdGF0aWMgU3RhdGUgc3VzcGVuZGVkU3RhdGUgV1RGX0dV
QVJERURfQllfTE9DSyhzdXNwZW5kZWRTdGF0ZUxvY2spOworICAgIHN0YXRpYyBDaGVja2VkQ29u
ZGl0aW9uIHN1c3BlbmRlZFN0YXRlQ2hhbmdlQ29uZGl0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDRhMjY3MTJlNmI2YTMxYWQwYjEwMmU3ZGM4ZTg4OTVmYWE2ZWNmZTUuLjEwYTc0MzI4NmUwNmMx
MzMxOTA5NTdhNjlhMDIwODNiNTQ1NDA0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzQsMTUgKzI3NCwxMCBAQCBzdGF0aWMgSGFzaE1hcDxJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBDb25uZWN0aW9uKj4mIGFsbENvbm5lY3Rpb25zKCkKICAg
ICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMgTG9jayYgYXN5bmNSZXBseUhhbmRsZXJNYXBMb2Nr
KCkKK3N0YXRpYyBDaGVja2VkTG9jayBhc3luY1JlcGx5SGFuZGxlck1hcExvY2s7CitzdGF0aWMg
SGFzaE1hcDx1aW50cHRyX3QsIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRGVjb2RlciopPj4+JiBhc3luY1JlcGx5SGFuZGxlck1hcCgpIFdURl9SRVFVSVJFU19MT0NL
KGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jaykKIHsKLSAgICBzdGF0aWMgTG9jayBsb2NrOwotICAg
IHJldHVybiBsb2NrOwotfQotCi1zdGF0aWMgSGFzaE1hcDx1aW50cHRyX3QsIEhhc2hNYXA8dWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRGVjb2RlciopPj4+JiBhc3luY1JlcGx5SGFu
ZGxlck1hcChjb25zdCBMb2NrSG9sZGVyJikKLXsKLSAgICBBU1NFUlQoYXN5bmNSZXBseUhhbmRs
ZXJNYXBMb2NrKCkuaXNIZWxkKCkpOworICAgIEFTU0VSVChhc3luY1JlcGx5SGFuZGxlck1hcExv
Y2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVpbnRwdHJf
dCwgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVyKik+Pj4+
IG1hcDsKICAgICByZXR1cm4gbWFwLmdldCgpOwogfQpAQCAtMTIxOSw4ICsxMjE0LDggQEAgdWlu
dDY0X3QgbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKQogCiB2b2lkIGFkZEFzeW5jUmVwbHlIYW5k
bGVyKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRGVjb2RlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9jaygpKTsKLSAgICBhdXRvIHJl
c3VsdCA9IGFzeW5jUmVwbHlIYW5kbGVyTWFwKGxvY2tlcikuZW5zdXJlKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PigmY29ubmVjdGlvbiksIFtdIHsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYXN5
bmNSZXBseUhhbmRsZXJNYXBMb2NrIH07CisgICAgYXV0byByZXN1bHQgPSBhc3luY1JlcGx5SGFu
ZGxlck1hcCgpLmVuc3VyZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmNvbm5lY3Rpb24p
LCBbXSB7CiAgICAgICAgIHJldHVybiBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKERlY29kZXIqKT4+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZChpZGVudGlm
aWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTEyMzAsOCArMTIyNSw4IEBAIHZvaWQgY2xlYXJB
c3luY1JlcGx5SGFuZGxlcnMoY29uc3QgQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29kZXIqKT4+IG1hcDsK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKGFzeW5jUmVwbHlIYW5kbGVyTWFwTG9j
aygpKTsKLSAgICAgICAgbWFwID0gYXN5bmNSZXBseUhhbmRsZXJNYXAobG9ja2VyKS50YWtlKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmY29ubmVjdGlvbikpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgYXN5bmNSZXBseUhhbmRsZXJNYXBMb2NrIH07CisgICAgICAgIG1hcCA9IGFzeW5j
UmVwbHlIYW5kbGVyTWFwKCkudGFrZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmNvbm5l
Y3Rpb24pKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGhhbmRsZXIgOiBtYXAudmFsdWVzKCkp
IHsKQEAgLTEyNDIsOCArMTIzNyw4IEBAIHZvaWQgY2xlYXJBc3luY1JlcGx5SGFuZGxlcnMoY29u
c3QgQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNv
ZGVyKik+IHRha2VBc3luY1JlcGx5SGFuZGxlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50
NjRfdCBpZGVudGlmaWVyKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKGFzeW5jUmVwbHlIYW5k
bGVyTWFwTG9jaygpKTsKLSAgICBhdXRvJiBtYXAgPSBhc3luY1JlcGx5SGFuZGxlck1hcChsb2Nr
ZXIpOworICAgIExvY2tlciBsb2NrZXIgeyBhc3luY1JlcGx5SGFuZGxlck1hcExvY2sgfTsKKyAg
ICBhdXRvJiBtYXAgPSBhc3luY1JlcGx5SGFuZGxlck1hcCgpOwogICAgIGF1dG8gaXRlcmF0b3Ig
PSBtYXAuZmluZChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmNvbm5lY3Rpb24pKTsKICAg
ICBpZiAoaXRlcmF0b3IgIT0gbWFwLmVuZCgpKSB7CiAgICAgICAgIGlmICghaXRlcmF0b3ItPnZh
bHVlLmlzVmFsaWRLZXkoaWRlbnRpZmllcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDdkMDA3MzY5YjljY2U4
NWI4ZjA1NDU3ZDY2NmQxZTQ0NTFiOTZjNTIuLjZmZGVkM2I5YzM3YWRkZDE1MTJhOWQ4ZGE0M2Mx
ZmM2ZWNlNGE5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtMzQsMTMgKzM0LDE0IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U29ja2V0U3RyZWFtRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1zdGF0aWMgTG9jayBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrOwotc3Rh
dGljIEhhc2hNYXA8V2ViU29ja2V0SWRlbnRpZmllciwgV2ViU29ja2V0U3RyZWFtKj4mIGdsb2Jh
bFdlYlNvY2tldFN0cmVhbU1hcCgpCitzdGF0aWMgQ2hlY2tlZExvY2sgZ2xvYmFsV2ViU29ja2V0
U3RyZWFtTWFwTG9jazsKK3N0YXRpYyBIYXNoTWFwPFdlYlNvY2tldElkZW50aWZpZXIsIFdlYlNv
Y2tldFN0cmVhbSo+JiBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKSBXVEZfUkVRVUlSRVNfTE9D
SyhnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPFdlYlNvY2tldElkZW50aWZpZXIsIFdlYlNvY2tldFN0cmVhbSo+PiBnbG9i
YWxNYXA7CiAgICAgcmV0dXJuIGdsb2JhbE1hcDsKQEAgLTQ4LDcgKzQ5LDcgQEAgc3RhdGljIEhh
c2hNYXA8V2ViU29ja2V0SWRlbnRpZmllciwgV2ViU29ja2V0U3RyZWFtKj4mIGdsb2JhbFdlYlNv
Y2tldFN0cmVhbU1hcCgKIAogV2ViU29ja2V0U3RyZWFtKiBXZWJTb2NrZXRTdHJlYW06OnN0cmVh
bVdpdGhJZGVudGlmaWVyKFdlYlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrKTsKKyAgICBMb2Nr
ZXIgc3RhdGVMb2NrZXIgeyBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2NrIH07CiAgICAgcmV0
dXJuIGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLmdldChpZGVudGlmaWVyKTsKIH0KIApAQCAt
NTYsNyArNTcsNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6bmV0d29ya1Byb2Nlc3NDcmFzaGVk
KCkKIHsKICAgICBWZWN0b3I8UmVmUHRyPFdlYlNvY2tldFN0cmVhbT4+IHNvY2tldHM7CiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXBMb2Nr
KTsKKyAgICAgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFw
TG9jayB9OwogICAgICAgICBzb2NrZXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZ2xvYmFsV2Vi
U29ja2V0U3RyZWFtTWFwKCkuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBzdHJlYW0gOiBn
bG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS52YWx1ZXMoKSkKICAgICAgICAgICAgIHNvY2tldHMu
dW5jaGVja2VkQXBwZW5kKHN0cmVhbSk7CkBAIC03MSw3ICs3Miw3IEBAIHZvaWQgV2ViU29ja2V0
U3RyZWFtOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKQogICAgICAgICBzdHJlYW0gPSBudWxscHRy
OwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFdlYlNvY2tldFN0cmVhbU1h
cExvY2spOworICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IGdsb2JhbFdlYlNvY2tldFN0cmVhbU1h
cExvY2sgfTsKICAgICBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5jbGVhcigpOwogfQogCkBA
IC04NywxNCArODgsMTQgQEAgV2ViU29ja2V0U3RyZWFtOjpXZWJTb2NrZXRTdHJlYW0oY29uc3Qg
VVJMJiB1cmwsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWUKIHsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0
ZVNvY2tldFN0cmVhbSh1cmwsIGNhY2hlUGFydGl0aW9uLCBtX2lkZW50aWZpZXIpLCAwKTsKIAot
ICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2spOworICAg
IExvY2tlciBzdGF0ZUxvY2tlciB7IGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2sgfTsKICAg
ICBBU1NFUlQoIWdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLmNvbnRhaW5zKG1faWRlbnRpZmll
cikpOwogICAgIGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcCgpLnNldChtX2lkZW50aWZpZXIsIHRo
aXMpOwogfQogCiBXZWJTb2NrZXRTdHJlYW06On5XZWJTb2NrZXRTdHJlYW0oKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2spOworICAgIExvY2tl
ciBzdGF0ZUxvY2tlciB7IGdsb2JhbFdlYlNvY2tldFN0cmVhbU1hcExvY2sgfTsKICAgICBBU1NF
UlQoZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7CiAg
ICAgZ2xvYmFsV2ViU29ja2V0U3RyZWFtTWFwKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSW50ZXJuYWwubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSW50ZXJuYWwubW0KaW5kZXggM2E3MDZjNGE4
ZDQ5YzFmYzQ3Zjg4OTRmYWM1YjQyNWZjNzc0OGY1Ni4uZDMzYTU3YjYzMzE0ODFiMWNjZTE2MWQx
NTk1NmZiMGY4MmFlNmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTUludGVybmFsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01JbnRl
cm5hbC5tbQpAQCAtMzIsOCArMzIsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9s
bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvcnVudGltZV9yb290Lmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+Ci0jaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDQs
MTAgKzQ0LDExIEBACiAvLyBXcmFwcGluZyBXZWJDb3JlIGltcGxlbWVudGF0aW9uIG9iamVjdHMK
IAogI2lmZGVmIE5FRURTX1dSQVBQRVJfQ0FDSEVfTE9DSwotc3RhdGljIExvY2sgd3JhcHBlckNh
Y2hlTG9jazsKLSNlbmRpZgotCitzdGF0aWMgQ2hlY2tlZExvY2sgd3JhcHBlckNhY2hlTG9jazsK
K3N0YXRpYyBIYXNoTWFwPERPTU9iamVjdEludGVybmFsKiwgTlNPYmplY3QgKj4mIHdyYXBwZXJD
YWNoZSgpIFdURl9SRVFVSVJFU19MT0NLKHdyYXBwZXJDYWNoZUxvY2spCisjZWxzZQogc3RhdGlj
IEhhc2hNYXA8RE9NT2JqZWN0SW50ZXJuYWwqLCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkK
KyNlbmRpZgogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPERPTU9iamVjdElu
dGVybmFsKiwgTlNPYmplY3QgKj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwpAQCAtNTYsNyArNTcs
NyBAQCBzdGF0aWMgSGFzaE1hcDxET01PYmplY3RJbnRlcm5hbCosIE5TT2JqZWN0ICo+JiB3cmFw
cGVyQ2FjaGUoKQogTlNPYmplY3QqIGdldERPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGlt
cGwpCiB7CiAjaWZkZWYgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NLCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayh3cmFwcGVyQ2FjaGVMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyB3
cmFwcGVyQ2FjaGVMb2NrIH07CiAjZW5kaWYKICAgICByZXR1cm4gd3JhcHBlckNhY2hlKCkuZ2V0
KGltcGwpOwogfQpAQCAtNjQsNyArNjUsNyBAQCBOU09iamVjdCogZ2V0RE9NV3JhcHBlcihET01P
YmplY3RJbnRlcm5hbCogaW1wbCkKIHZvaWQgYWRkRE9NV3JhcHBlcihOU09iamVjdCogd3JhcHBl
ciwgRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB7CiAjaWZkZWYgTkVFRFNfV1JBUFBFUl9DQUNI
RV9MT0NLCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVyQ2FjaGVMb2NrKTsKKyAg
ICBMb2NrZXIgc3RhdGVMb2NrZXIgeyB3cmFwcGVyQ2FjaGVMb2NrIH07CiAjZW5kaWYKICAgICB3
cmFwcGVyQ2FjaGUoKS5zZXQoaW1wbCwgd3JhcHBlcik7CiB9CkBAIC03Miw3ICs3Myw3IEBAIHZv
aWQgYWRkRE9NV3JhcHBlcihOU09iamVjdCogd3JhcHBlciwgRE9NT2JqZWN0SW50ZXJuYWwqIGlt
cGwpCiB2b2lkIHJlbW92ZURPTVdyYXBwZXIoRE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB7CiAj
aWZkZWYgTkVFRFNfV1JBUFBFUl9DQUNIRV9MT0NLCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayh3cmFwcGVyQ2FjaGVMb2NrKTsKKyAgICBMb2NrZXIgc3RhdGVMb2NrZXIgeyB3cmFwcGVyQ2Fj
aGVMb2NrIH07CiAjZW5kaWYKICAgICB3cmFwcGVyQ2FjaGUoKS5yZW1vdmUoaW1wbCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429308</attachid>
            <date>2021-05-21 10:21:45 -0700</date>
            <delta_ts>2021-05-21 10:48:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226040-20210521102144.patch</filename>
            <type>text/plain</type>
            <size>99183</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI4YzE5ZWY4ZThlODky
NDQ1ZmI3ZWMxZTQ3MTBkMWUzNGU2MmRiMy4uMmJkZGI1Njc5ZDljNDJiNzFlMGJkZjQ4NjQzZWJh
MzM0ZDNmYjNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MCBAQAorMjAyMS0wNS0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgbW9yZSBzdGF0
aWMgTG9ja3Mgd2l0aCBDaGVja2VkTG9ja3MgaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MDQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBtb3JlIHN0YXRpYyBMb2NrcyB3
aXRoIENoZWNrZWRMb2NrcyBzbyB0aGF0IHdlIGNhbiBiZW5lZml0IGZyb20gQ2xhbmcgVGhyZWFk
IFNhZmV0eSBBbmFseXNpcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRPckNyZWF0ZUZvckN1cnJlbnRUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6fklE
QlNlcmlhbGl6YXRpb25Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkZXRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRGF0YUNoYW5uZWw6OnJlbW92ZUZyb21EYXRhQ2hhbm5lbExvY2FsTWFwSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmhhbmRsZXJGcm9tSWRlbnRp
Zmllcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnBlcmZvcm1PcGVu
QW5kVmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZURhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
RGV2aWNlOjppbnN0YW5jZXNMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6
fldlYkdQVURldmljZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc0xvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVUGlwZWxpbmU6OldlYkdQVVBpcGVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdQVVBpcGVsaW5lOjp+V2ViR1BVUGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OldlYlNvY2tldCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6On5XZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jayk6CisgICAgICAgICogTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVj
dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTV3JhcHBlcik6CisgICAgICAgIChXZWJDb3Jl
OjphZGRKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlSlNXcmFwcGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlbW92ZUpTV3JhcHBlcklmUmV0YWluQ291bnRPbmUpOgorICAgICAg
ICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnk6OnJlZ2lzdGVyQWxnb3JpdGhtKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRlcmVmIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Ojppc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpub3RpZnlNZXNzYWdlQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRp
b25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBv
c3RUYXNrVG8pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2Vz
TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQ6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzTG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OldlYkdMUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFByb2dyYW06On5XZWJHTFByb2dyYW0pOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6fldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpj
YW52YXNFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OndlYlNvY2tldEZvclJlcXVlc3RJZCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQ
b2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzQWxsb3dlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93
bGlzdEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdp
bkFjY2Vzc0FsbG93bGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFs
bG93QWNjZXNzVG8pOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1D
b2xsZWN0Q1BVRGF0YSk6CisgICAgICAgICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFk
TGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZv
cm1Db2xsZWN0Q1BVRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6c2hhcmVkVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBlbmRpbmdEaXNw
YXRjaGVycyk6CisgICAgICAgIChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OmRpc3Bh
dGNoT25lVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFsbEJ1aWx0aW5TY2hlbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19M
T0NLKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6
OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzSGFuZGxlZEJ5U2NoZW1lSGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2NoZW1lSXNI
YW5kbGVkQnlTY2hlbWVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVB
c05vQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdp
c3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVt
ZUFzU2VjdXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzU2VjdXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBh
c3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2No
ZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0NhY2hlUGFydGl0aW9uZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnNob3VsZFBhcnRpdGlvbkNhY2hlRm9yVVJMU2NoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJ
UkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmZmdFNldHVwRm9yU2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6aW5zdGFsbGVk
TWVkaWFFbmdpbmVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpyZXNldE1lZGlh
RW5naW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAg
KFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVFM
UHJldmlld0NvbnZlcnRlckZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjphZGRRTFByZXZpZXdD
b252ZXJ0ZXJXaXRoRmlsZUZvclVSTCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKFdURl9SRVFVSVJFU19MT0NLKToK
KyAgICAgICAgKCtbV2ViRGF0YWJhc2VUcmFuc2FjdGlvbkJhY2tncm91bmRUYXNrQ29udHJvbGxl
ciBzdGFydEJhY2tncm91bmRUYXNrXSk6CisgICAgICAgICgrW1dlYkRhdGFiYXNlVHJhbnNhY3Rp
b25CYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIgZW5kQmFja2dyb3VuZFRhc2tdKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3Jl
OjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlOjpzZXRJc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbik6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6b3Blbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNr
ZXI6OldURl9HVUFSREVEX0JZX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VUcmFja2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VU
cmFja2VyOjppbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFz
VHJhbnNhY3Rpb25JblByb2dyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNv
ZGluZ1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToK
KyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlYyk6CisgICAgICAgIChXZWJDb3JlOjphdG9t
Q2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2Vy
cyk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRz
TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Oldvcmtlck9y
V29ya2xldFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6
On5Xb3JrZXJPcldvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3Jr
bGV0VGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6CisKIDIwMjEtMDUtMjEgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBMYXN0IGZl
dyBzZWNvbmRzIG9mICdhdWRpby93ZWJtOyBjb2RlY3M9dm9yYmlzJyBhcHBlbmRlZCB0byBhIFNh
bXBsZUJ1ZmZlciBhcmUgbm90IHBsYXllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4
dC5jcHAKaW5kZXggOWRkN2FiYjU1NTU5NDJkMGM5MWVmODgwMDdjYjY2ZDFhNzA0ZDU3OC4uNTM3
NmRkOTBlZjhjYjIzNjZmMzU2YTBkNjVmZThhM2NmN2NhNzk3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbkNvbnRleHQuY3BwCkBAIC0yOSwxNCArMjksMTUgQEAKICNpbmNsdWRlICJET01X
cmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRMb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7
CiAKLXN0YXRpYyBMb2NrIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTXV0ZXg7CitzdGF0aWMgQ2hl
Y2tlZExvY2sgc2VyaWFsaXphdGlvbkNvbnRleHRNYXBMb2NrOwogCi1zdGF0aWMgSGFzaE1hcDxU
aHJlYWQqLCBJREJTZXJpYWxpemF0aW9uQ29udGV4dCo+JiBzZXJpYWxpemF0aW9uQ29udGV4dE1h
cChMb2NrZXI8TG9jaz4mKQorc3RhdGljIEhhc2hNYXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlv
bkNvbnRleHQqPiYgc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhz
ZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2spCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hNYXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQqPj4gbWFwOwogICAgIHJl
dHVybiBtYXA7CkBAIC00NSw4ICs0Niw4IEBAIHN0YXRpYyBIYXNoTWFwPFRocmVhZCosIElEQlNl
cmlhbGl6YXRpb25Db250ZXh0Kj4mIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKExvY2tlCiBSZWY8
SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IElEQlNlcmlhbGl6YXRpb25Db250ZXh0OjpnZXRPckNy
ZWF0ZUZvckN1cnJlbnRUaHJlYWQoKQogewogICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3Vy
cmVudCgpOwotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2VyaWFsaXphdGlvbkNvbnRleHRNYXBN
dXRleCk7Ci0gICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9IHNlcmlhbGl6YXRpb25Db250ZXh0
TWFwKGxvY2tlcikuYWRkKCZ0aHJlYWQsIG51bGxwdHIpOworICAgIExvY2tlciBsb2NrZXIgeyBz
ZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2sgfTsKKyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnld
ID0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKS5hZGQoJnRocmVhZCwgbnVsbHB0cik7CiAgICAg
aWYgKGlzTmV3RW50cnkpIHsKICAgICAgICAgUmVmPElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBw
cm90ZWN0ZWRDb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBJREJTZXJpYWxpemF0aW9uQ29udGV4dCh0
aHJlYWQpKTsKICAgICAgICAgaXRlci0+dmFsdWUgPSBwcm90ZWN0ZWRDb250ZXh0LnB0cigpOwpA
QCAtNTgsMTUgKzU5LDE1IEBAIFJlZjxJREJTZXJpYWxpemF0aW9uQ29udGV4dD4gSURCU2VyaWFs
aXphdGlvbkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9yQ3VycmVudFRocmVhCiAKIElEQlNlcmlhbGl6
YXRpb25Db250ZXh0Ojp+SURCU2VyaWFsaXphdGlvbkNvbnRleHQoKQogewotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoc2VyaWFsaXphdGlvbkNvbnRleHRNYXBNdXRleCk7Ci0gICAgQVNTRVJUKHRo
aXMgPT0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAobG9ja2VyKS5nZXQoJm1fdGhyZWFkKSk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwTG9jayB9OworICAgIEFT
U0VSVCh0aGlzID09IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkuZ2V0KCZtX3RocmVhZCkpOwog
CiAgICAgaWYgKG1fdm0pIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jaygqbV92bSk7
CiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LmNsZWFyKCk7CiAgICAgICAgIG1fdm0gPSBudWxscHRy
OwogICAgIH0KLSAgICBzZXJpYWxpemF0aW9uQ29udGV4dE1hcChsb2NrZXIpLnJlbW92ZSgmbV90
aHJlYWQpOworICAgIHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKCkucmVtb3ZlKCZtX3RocmVhZCk7
CiB9CiAKIHZvaWQgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmluaXRpYWxpemVWTSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
Y3BwCmluZGV4IDliMDAxNGNhYWMzZTI4NGFmOGQyZmJiMmY2NGMzNDdkM2NmM2I0YTUuLjExNTA2
ZmJjYjk4NDc4MmM2N2I3NWZhOWI5NTllOWY0ZDcwMGFiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmll
dy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTI1Miw4
ICsyNTMsOCBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQoUmVm
PEV2ZW50PiYmIGV2ZW50KQogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFz
a1NvdXJjZTo6TmV0d29ya2luZywgV1RGTW92ZShldmVudCkpOwogfQogCi1zdGF0aWMgTG9jayBz
X3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrOwotc3RhdGljIEhhc2hNYXA8UlRDRGF0YUNoYW5u
ZWxMb2NhbElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+
PiYgcnRjRGF0YUNoYW5uZWxMb2NhbE1hcCgpCitzdGF0aWMgQ2hlY2tlZExvY2sgc19ydGNEYXRh
Q2hhbm5lbExvY2FsTWFwTG9jazsKK3N0YXRpYyBIYXNoTWFwPFJUQ0RhdGFDaGFubmVsTG9jYWxJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPj4mIHJ0Y0Rh
dGFDaGFubmVsTG9jYWxNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX3J0Y0RhdGFDaGFubmVsTG9j
YWxNYXBMb2NrKQogewogICAgIEFTU0VSVChzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrLmlz
SGVsZCgpKTsKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UlRDRGF0YUNo
YW5uZWxMb2NhbElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI+Pj4gbWFwOwpAQCAtMjc5LDcgKzI4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJU
Q0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6ZGV0YWNoKCkKICAgICBtX2lzRGV0YWNoZWQg
PSB0cnVlOwogICAgIG1fcmVhZHlTdGF0ZSA9IFJUQ0RhdGFDaGFubmVsU3RhdGU6OkNsb3NlZDsK
IAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2sgfTsK
ICAgICBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCkuYWRkKGlkZW50aWZpZXIoKS5jaGFubmVsSWRl
bnRpZmllciwgV1RGTW92ZShtX2hhbmRsZXIpKTsKIAogICAgIHJldHVybiBtYWtlVW5pcXVlPERl
dGFjaGVkUlRDRGF0YUNoYW5uZWw+KGlkZW50aWZpZXIoKSwgbGFiZWwoKS5pc29sYXRlZENvcHko
KSwgb3B0aW9ucygpLCBzdGF0ZSk7CkBAIC0yOTAsMTMgKzI5MSwxMyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpyZW1vdmVGcm9tRGF0YUNoYW5uZWxMb2NhbE1hcElmTmVlZGVkKCkKICAgICBpZiAo
IW1faXNEZXRhY2hlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
c19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayB9OwogICAgIHJ0Y0RhdGFDaGFubmVsTG9jYWxN
YXAoKS5yZW1vdmUoaWRlbnRpZmllcigpLmNoYW5uZWxJZGVudGlmaWVyKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gUlRDRGF0YUNoYW5uZWw6OmhhbmRsZXJG
cm9tSWRlbnRpZmllcihSVENEYXRhQ2hhbm5lbExvY2FsSWRlbnRpZmllciBjaGFubmVsSWRlbnRp
ZmllcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfcnRjRGF0YUNoYW5uZWxMb2Nh
bE1hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBM
b2NrIH07CiAgICAgcmV0dXJuIHJ0Y0RhdGFDaGFubmVsTG9jYWxNYXAoKS50YWtlKGNoYW5uZWxJ
ZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcAppbmRleCAxMTc0ZTZiY2RkMDYwZTY2YzYzMzk4MzJlY2I4ZDFlODFhZDVk
ODMyLi5jMWRiOGVmYTBiMDBmM2UzMjFhOTBlMjk2NDlkN2U2MzM0MTg3MTE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtNTMsNiAr
NTMsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiV2luZG93RXZlbnRMb29wLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTE1MiwxNiArMTUz
LDE1IEBAIHN0YXRpYyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVE
YXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVlCiB9CiAKIC8vIEZJWE1FOiBtb3ZlIGFsbCBn
dWlkLXJlbGF0ZWQgZnVuY3Rpb25zIHRvIGEgRGF0YWJhc2VWZXJzaW9uVHJhY2tlciBjbGFzcy4K
LXN0YXRpYyBMb2NrIGd1aWRNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9jayBndWlkTG9jazsKIAot
c3RhdGljIEhhc2hNYXA8RGF0YWJhc2VHVUlELCBTdHJpbmc+JiBndWlkVG9WZXJzaW9uTWFwKCkK
K3N0YXRpYyBIYXNoTWFwPERhdGFiYXNlR1VJRCwgU3RyaW5nPiYgZ3VpZFRvVmVyc2lvbk1hcCgp
IFdURl9SRVFVSVJFU19MT0NLKGd1aWRMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPERhdGFiYXNlR1VJRCwgU3RyaW5nPj4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKLS8vIE5PVEU6IENhbGxlciBtdXN0IGxvY2sgZ3VpZE11dGV4KCkuCi1zdGF0aWMgaW5saW5l
IHZvaWQgdXBkYXRlR1VJRFZlcnNpb25NYXAoRGF0YWJhc2VHVUlEIGd1aWQsIGNvbnN0IFN0cmlu
ZyYgbmV3VmVyc2lvbikKK3N0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVHVUlEVmVyc2lvbk1hcChE
YXRhYmFzZUdVSUQgZ3VpZCwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uKSBXVEZfUkVRVUlSRVNf
TE9DSyhndWlkTG9jaykKIHsKICAgICAvLyBOb3RlOiBJdCBpcyBub3Qgc2FmZSB0byBwdXQgYW4g
ZW1wdHkgc3RyaW5nIGludG8gdGhlIGd1aWRUb1ZlcnNpb25NYXAoKSBtYXAuCiAgICAgLy8gVGhh
dCdzIGJlY2F1c2UgdGhlIG1hcCBpcyBjcm9zcy10aHJlYWQsIGJ1dCBlbXB0eSBzdHJpbmdzIGFy
ZSBwZXItdGhyZWFkLgpAQCAtMTczLDEzICsxNzMsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHVw
ZGF0ZUdVSURWZXJzaW9uTWFwKERhdGFiYXNlR1VJRCBndWlkLCBjb25zdCBTdHJpbmcmIG5ld1Zl
cnMKICAgICBndWlkVG9WZXJzaW9uTWFwKCkuc2V0KGd1aWQsIG5ld1ZlcnNpb24uaXNFbXB0eSgp
ID8gU3RyaW5nKCkgOiBuZXdWZXJzaW9uLmlzb2xhdGVkQ29weSgpKTsKIH0KIAotc3RhdGljIEhh
c2hNYXA8RGF0YWJhc2VHVUlELCBIYXNoU2V0PERhdGFiYXNlKj4+JiBndWlkVG9EYXRhYmFzZU1h
cCgpCitzdGF0aWMgSGFzaE1hcDxEYXRhYmFzZUdVSUQsIEhhc2hTZXQ8RGF0YWJhc2UqPj4mIGd1
aWRUb0RhdGFiYXNlTWFwKCkgV1RGX1JFUVVJUkVTX0xPQ0soZ3VpZExvY2spCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8RGF0YWJhc2VHVUlELCBIYXNoU2V0PERhdGFiYXNl
Kj4+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIGlubGluZSBEYXRhYmFzZUdV
SUQgZ3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3N0YXRpYyBpbmxpbmUgRGF0YWJhc2VHVUlEIGd1aWRGb3JPcmlnaW5BbmROYW1l
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpIFdURl9SRVFVSVJFU19M
T0NLKGd1aWRMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmlu
ZywgRGF0YWJhc2VHVUlEPj4gbWFwOwogICAgIHJldHVybiBtYXAuZ2V0KCkuZW5zdXJlKG1ha2VT
dHJpbmcob3JpZ2luLCAnLycsIG5hbWUpLCBbXSB7CkBAIC0yMDEsNyArMjAxLDcgQEAgRGF0YWJh
c2U6OkRhdGFiYXNlKERhdGFiYXNlQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGUKICAgICAsIG1fZGF0YWJhc2VBdXRob3JpemVyKERhdGFiYXNlQXV0
aG9yaXplcjo6Y3JlYXRlKHVucXVhbGlmaWVkSW5mb1RhYmxlTmFtZSkpCiB7CiAgICAgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAgICAgIG1fZ3VpZCA9IGd1aWRGb3JPcmlnaW5BbmRO
YW1lKHNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7
CiAgICAgICAgIGd1aWRUb0RhdGFiYXNlTWFwKCkuZW5zdXJlKG1fZ3VpZCwgW10gewpAQCAtMzQ4
LDcgKzM0OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZl
cmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAKICAgICBTdHJpbmcgY3VycmVu
dFZlcnNpb247CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRl
eCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAgICAgIGF1dG8g
ZW50cnkgPSBndWlkVG9WZXJzaW9uTWFwKCkuZmluZChtX2d1aWQpOwogICAgICAgICBpZiAoZW50
cnkgIT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmVuZCgpKSB7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9p
ZCBEYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZSgpCiAgICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0
b24oKS5yZW1vdmVPcGVuRGF0YWJhc2UoKnRoaXMpOwogCiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBndWlk
TG9jayB9OwogCiAgICAgICAgIGF1dG8gaXQgPSBndWlkVG9EYXRhYmFzZU1hcCgpLmZpbmQobV9n
dWlkKTsKICAgICAgICAgQVNTRVJUKGl0ICE9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZW5kKCkpOwpA
QCAtNDk1LDE0ICs0OTUsMTQgQEAgdm9pZCBEYXRhYmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKGNv
bnN0IFN0cmluZyYgdmVyc2lvbikKIAogU3RyaW5nIERhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9u
KCkgY29uc3QKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IGd1aWRMb2NrIH07CiAKICAgICByZXR1cm4gZ3VpZFRvVmVyc2lvbk1h
cCgpLmdldChtX2d1aWQpLmlzb2xhdGVkQ29weSgpOwogfQogCiB2b2lkIERhdGFiYXNlOjpzZXRD
YWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgYWN0dWFsVmVyc2lvbikKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGd1aWRMb2Nr
IH07CiAKICAgICB1cGRhdGVHVUlEVmVyc2lvbk1hcChtX2d1aWQsIGFjdHVhbFZlcnNpb24pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKaW5k
ZXggY2EwMWIxMDE1YWQ2MWNjYzM5YWQzMzliOWFkYjdiZTQ2OWYxYjFjOC4uODI1MGUyYmIzYTYz
NDhkYzliNGNhYmE2NGFlNDhiYzYzZGEzZDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCkBAIC05NCw2ICs5NCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdQVURldmljZSk7CiAK
K0NoZWNrZWRMb2NrIFdlYkdQVURldmljZTo6c19pbnN0YW5jZXNMb2NrOworCiBSZWZQdHI8V2Vi
R1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OnRyeUNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewogICAgIGlm
IChhdXRvIGRldmljZSA9IEdQVURldmljZTo6dHJ5Q3JlYXRlKGFkYXB0ZXItPm9wdGlvbnMoKSkp
IHsKQEAgLTEwNCwxNiArMTA2LDE1IEBAIFJlZlB0cjxXZWJHUFVEZXZpY2U+IFdlYkdQVURldmlj
ZTo6dHJ5Q3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLUhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4mIFdlYkdQVURldmljZTo6
aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKQorSGFzaFNldDxXZWJHUFVEZXZpY2UqPiYgV2Vi
R1BVRGV2aWNlOjppbnN0YW5jZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PFdlYkdQVURldmljZSo+PiBpbnN0YW5jZXM7CiAgICAgcmV0dXJuIGluc3RhbmNlczsKIH0K
IAotTG9jayYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNNdXRleCgpCitDaGVja2VkTG9jayYgV2Vi
R1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAg
ICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsKIH0KIAogV2ViR1BV
RGV2aWNlOjpXZWJHUFVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVm
PGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlciwgUmVmPEdQVURldmljZT4mJiBkZXZpY2Up
CkBAIC0xMjgsOCArMTI5LDggQEAgV2ViR1BVRGV2aWNlOjpXZWJHUFVEZXZpY2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNvbnN0IFdlYkdQVUFkYXAKICAgICBBU1NFUlQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSk7CiAKICAgICB7Ci0gICAgICAg
IExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxv
Y2spLmFkZCh0aGlzKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9
OworICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcyk7CiAgICAgfQogfQogCkBAIC0xMzgsOCAr
MTM5LDggQEAgV2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2aWNlKCkKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BVRGV2aWNlKCp0aGlzKTsKIAogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNNdXRleCgpKTsK
LSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMobG9j
aykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNM
b2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IFdlYkdQVVBpcGVsaW5lOjppbnN0
YW5jZXMoKSkgewogICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlID09IHRoaXMpIHsKICAgICAg
ICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgYW55IFdlYkdQVVBpcGVsaW5lIGZyb20gdGhlIGlu
c3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBzdGlsbCBleGlzdC4KICAgICAgICAgICAgICAgICAv
LyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRpb24gd2l0aCBhIFdlYkdQVSBkZXZpY2UuCkBAIC0x
NDksOSArMTUwLDkgQEAgV2ViR1BVRGV2aWNlOjp+V2ViR1BVRGV2aWNlKCkKICAgICB9CiAKICAg
ICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAg
QVNTRVJUKGluc3RhbmNlcyhsb2NrKS5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNl
cyhsb2NrKS5yZW1vdmUodGhpcyk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNM
b2NrKCkgfTsKKyAgICAgICAgQVNTRVJUKGluc3RhbmNlcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAg
ICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRleCBjOWNjM2M0ZTQzNWM5MjY0
YjI4MTRkM2Q2M2MyNDBmY2I2NjcwNmMzLi43MGYxYjFkYTcyOTNkZmZhMTMxYTI1NWQ1YjY3NWZh
YzhhMGYyYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIuaCIKICNpbmNs
dWRlICJXZWJHUFVRdWV1ZS5oIgogI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
QEAgLTg0LDggKzg1LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVEZXZp
Y2U+IHRyeUNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPGNvbnN0IFdlYkdQVUFk
YXB0ZXI+JiYpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4mIGluc3RhbmNl
cyhjb25zdCBMb2NrSG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNlc011dGV4KCk7
CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViR1BVRGV2aWNlKj4mIGluc3RhbmNlcygpIFdURl9SRVFV
SVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7CisgICAgc3RhdGljIENoZWNrZWRMb2NrJiBpbnN0
YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2luc3RhbmNlc0xvY2spOwogCiAgICAgY29u
c3QgV2ViR1BVQWRhcHRlciYgYWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQo
KTsgfQogICAgIEdQVURldmljZSYgZGV2aWNlKCkgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0K
QEAgLTEyNiw2ICsxMjcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaFVuY2FwdHVy
ZWRFcnJvcihHUFVFcnJvciYmKTsKIAorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNl
c0xvY2s7CisKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKICAgICBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4gbV9hZGFwdGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwCmluZGV4IGVl
NGFiMTBhZjhiNDAyZTYxMDllODM3ZjMzZDBkNWY0NzY5YjA4ZWIuLjIwNWYxZWQxZjdiN2M2M2I3
NzUxYjEzNDkxM2RmNDg3ZmNlMmNkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHAKQEAgLTM5LDE2ICszOSwxNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPiYg
V2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJikKK0NoZWNrZWRMb2Nr
IFdlYkdQVVBpcGVsaW5lOjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hNYXA8V2ViR1BVUGlwZWxp
bmUqLCBXZWJHUFVEZXZpY2UqPiYgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcygpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZp
Y2UqPj4gaW5zdGFuY2VzOwogICAgIHJldHVybiBpbnN0YW5jZXM7CiB9CiAKLUxvY2smIFdlYkdQ
VVBpcGVsaW5lOjppbnN0YW5jZXNNdXRleCgpCitDaGVja2VkTG9jayYgV2ViR1BVUGlwZWxpbmU6
Omluc3RhbmNlc0xvY2soKQogewotICAgIHN0YXRpYyBMb2NrIG11dGV4OwotICAgIHJldHVybiBt
dXRleDsKKyAgICByZXR1cm4gc19pbnN0YW5jZXNMb2NrOwogfQogCiBXZWJHUFVQaXBlbGluZTo6
V2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBkZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJv
clNjb3BlcykKQEAgLTU4LDggKzU5LDggQEAgV2ViR1BVUGlwZWxpbmU6OldlYkdQVVBpcGVsaW5l
KFdlYkdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMKICAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hv
bGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBpbnN0YW5jZXMobG9jaykuYWRk
KHRoaXMsICZkZXZpY2UpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygp
IH07CisgICAgICAgIGluc3RhbmNlcygpLmFkZCh0aGlzLCAmZGV2aWNlKTsKICAgICB9CiB9CiAK
QEAgLTY4LDkgKzY5LDkgQEAgV2ViR1BVUGlwZWxpbmU6On5XZWJHUFVQaXBlbGluZSgpCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdQVVBpcGVsaW5lKCp0aGlz
KTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwot
ICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKGxvY2spLmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAg
aW5zdGFuY2VzKGxvY2spLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGlu
c3RhbmNlc0xvY2soKSB9OworICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKCkuY29udGFpbnModGhp
cykpOworICAgICAgICBpbnN0YW5jZXMoKS5yZW1vdmUodGhpcyk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmUuaAppbmRleCBkN2Yx
MWEzMzYxNDQyMmIxNzU3ZjkwNGY5NWM3NTU1ZjEzYmEyYzAzLi45OTlhOThhZTUyYTZiYjA5YWI0
YWVmNjc0YWQxMzRiNjg5MDI2YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lLmgKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkdQVU9iamVjdEJhc2UuaCIKICNpbmNs
dWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsOCArNDMsOCBAQCBjbGFzcyBXZWJHUFVQaXBlbGluZSA6
IHB1YmxpYyBHUFVPYmplY3RCYXNlLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdQVVBpcGVsaW5lKCk7CiAKLSAgICBzdGF0aWMg
SGFzaE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQVURldmljZSo+JiBpbnN0YW5jZXMoY29uc3Qg
TG9ja0hvbGRlciYpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNNdXRleCgpOworICAgIHN0
YXRpYyBIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwgV2ViR1BVRGV2aWNlKj4mIGluc3RhbmNlcygp
IFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7CisgICAgc3RhdGljIENoZWNrZWRM
b2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2luc3RhbmNlc0xvY2spOwog
CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbXB1dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdl
YkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIEdQVUVycm9yU2NvcGVzJik7CisKK3ByaXZhdGU6
CisgICAgc3RhdGljIENoZWNrZWRMb2NrIHNfaW5zdGFuY2VzTG9jazsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKaW5kZXggOGQzNGM2MjgyOWQ3MTdhZTE4ZDZkNjljMDE1ZmI3NGJkMTk1ODZh
OS4uZmU4MGQ0MDEwMDVlNTE0YjljOWY0ZDQ0YzA3ZTk3YzA4ZGQxNTg0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTc2LDYgKzc2
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
V2ViU29ja2V0KTsKIAorQ2hlY2tlZExvY2sgV2ViU29ja2V0OjpzX2FsbEFjdGl2ZVdlYlNvY2tl
dHNMb2NrOworCiBjb25zdCBzaXplX3QgbWF4UmVhc29uU2l6ZUluQnl0ZXMgPSAxMjM7CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkUHJvdG9jb2xDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVy
KQpAQCAtMTQ2LDE3ICsxNDgsMTUgQEAgV2ViU29ja2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fZXh0ZW5zaW9ucyhlbXB0eVN0cmluZygpKQog
ICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJldlYlNvY2tldDo6cmVzdW1lVGltZXJGaXJlZCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2soYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOwotCi0g
ICAgYWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKS5hZGQodGhpcyk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IGFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgfTsKKyAgICBhbGxBY3RpdmVXZWJTb2NrZXRz
KCkuYWRkKHRoaXMpOwogfQogCiBXZWJTb2NrZXQ6On5XZWJTb2NrZXQoKQogewogICAgIHsKLSAg
ICAgICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKLQotICAg
ICAgICBhbGxBY3RpdmVXZWJTb2NrZXRzKGxvY2spLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IGFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgfTsKKyAgICAgICAgYWxsQWN0
aXZlV2ViU29ja2V0cygpLnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFubmVs
KQpAQCAtMTg4LDE2ICsxODgsMTUgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlNvY2tldD4+IFdlYlNv
Y2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGMKICAgICByZXR1
cm4gY3JlYXRlKGNvbnRleHQsIHVybCwgVmVjdG9yPFN0cmluZz4geyAxLCBwcm90b2NvbCB9KTsK
IH0KIAotSGFzaFNldDxXZWJTb2NrZXQqPiYgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRz
KGNvbnN0IExvY2tIb2xkZXImKQorSGFzaFNldDxXZWJTb2NrZXQqPiYgV2ViU29ja2V0OjphbGxB
Y3RpdmVXZWJTb2NrZXRzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxX
ZWJTb2NrZXQqPj4gYWN0aXZlV2ViU29ja2V0czsKICAgICByZXR1cm4gYWN0aXZlV2ViU29ja2V0
czsKIH0KIAotTG9jayYgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKQorQ2hl
Y2tlZExvY2smIFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKQogewotICAgIHN0
YXRpYyBMb2NrIG11dGV4OwotICAgIHJldHVybiBtdXRleDsKKyAgICByZXR1cm4gc19hbGxBY3Rp
dmVXZWJTb2NrZXRzTG9jazsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gV2ViU29ja2V0Ojpjb25u
ZWN0KGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCmluZGV4IGFiZDIyNWJlNThmYzk4ZDI2MjlkNjY5N2NiZGQ4ZGFlZjg1
NmYzYjMuLjcyNzA2OTk3MjU5M2YwMTZlZTQxMzcxODBhYjg3NDBlZTc2ODc1MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRl
ICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTG9jay5oPgpAQCAtNjAsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzKTsKICAg
ICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAotICAgIHN0YXRpYyBIYXNoU2V0PFdlYlNvY2tldCo+
JiBhbGxBY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKLSAgICBzdGF0aWMgTG9j
ayYgYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCk7CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViU29j
a2V0Kj4mIGFsbEFjdGl2ZVdlYlNvY2tldHMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX2FsbEFjdGl2
ZVdlYlNvY2tldHNMb2NrKTsKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2smIGFsbEFjdGl2ZVdlYlNv
Y2tldHNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhzX2FsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKTsK
IAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBDT05ORUNUSU5HID0gMCwKQEAgLTEzMSw2ICsx
MzIsNyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBjbGFzcyBCaW5hcnlUeXBlIHsgQmxvYiwgQXJy
YXlCdWZmZXIgfTsKIAorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2FsbEFjdGl2ZVdlYlNvY2tl
dHNMb2NrOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVs
OwogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IENPTk5FQ1RJTkcgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCBiZDUyY2I0OTE4ODZiZWU0Y2Q2
Mzk4N2YyMjAzZDQyYjdiNDVhOWNlLi4wZjVjMjlhNGFmYzQ1NmZjZWRkYTI0YmI0ZWFiZGFhYmJi
NjEzZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRP
YmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tCkBAIC00OSw4ICs0OSw4IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9i
amVjdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9KU1ZhbHVlSW50ZXJuYWwuaD4KKyNpbXBvcnQgPHd0Zi9DaGVja2VkTG9jay5o
PgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzAsMTEgKzcwLDExIEBAIHVzaW5nIEpTQzo6
bWFrZVNvdXJjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgTG9jayBzcGluTG9j
azsKK3N0YXRpYyBDaGVja2VkTG9jayB3cmFwcGVyQ2FjaGVMb2NrOwogc3RhdGljIENyZWF0ZVdy
YXBwZXJGdW5jdGlvbiBjcmVhdGVET01XcmFwcGVyRnVuY3Rpb247CiBzdGF0aWMgRGlzY29ubmVj
dFdpbmRvd1dyYXBwZXJGdW5jdGlvbiBkaXNjb25uZWN0V2luZG93V3JhcHBlckZ1bmN0aW9uOwog
Ci1zdGF0aWMgSGFzaE1hcDxKU09iamVjdCosIE5TT2JqZWN0ICo+JiB3cmFwcGVyQ2FjaGUoKQor
c3RhdGljIEhhc2hNYXA8SlNPYmplY3QqLCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkgV1RG
X1JFUVVJUkVTX0xPQ0sod3JhcHBlckNhY2hlTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxKU09iamVjdCosIE5TT2JqZWN0ICo+PiBtYXA7CiAgICAgcmV0dXJuIG1h
cDsKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIEhhc2hNYXA8SlNPYmplY3QqLCBOU09iamVjdCAq
PiYgd3JhcHBlckNhY2hlKCkKIE5TT2JqZWN0ICpnZXRKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcigm
c3BpbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB3cmFwcGVyQ2FjaGVMb2NrIH07CiAKICAg
ICBOU09iamVjdCogd3JhcHBlciA9IHdyYXBwZXJDYWNoZSgpLmdldChpbXBsKTsKICAgICByZXR1
cm4gd3JhcHBlciA/IHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpIDogbmlsOwpAQCAt
OTIsMjEgKzkyLDIxIEBAIE5TT2JqZWN0ICpnZXRKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiB2
b2lkIGFkZEpTV3JhcHBlcihOU09iamVjdCAqd3JhcHBlciwgSlNPYmplY3QqIGltcGwpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcigmc3Bpbkxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyB3cmFwcGVyQ2FjaGVMb2NrIH07CiAKICAgICB3cmFw
cGVyQ2FjaGUoKS5zZXQoaW1wbCwgd3JhcHBlcik7CiB9CiAKIHZvaWQgcmVtb3ZlSlNXcmFwcGVy
KEpTT2JqZWN0KiBpbXBsKQogewotICAgIExvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZXJDYWNoZUxvY2sgfTsKIAogICAgIHdyYXBwZXJDYWNo
ZSgpLnJlbW92ZShpbXBsKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlSlNXcmFwcGVySWZSZXRh
aW5Db3VudE9uZShOU09iamVjdCogd3JhcHBlciwgSlNPYmplY3QqIGltcGwpCiB7Ci0gICAgTG9j
a0hvbGRlciBob2xkZXIoJnNwaW5Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd3JhcHBlckNh
Y2hlTG9jayB9OwogCiAgICAgaWYgKFt3cmFwcGVyIHJldGFpbkNvdW50XSA9PSAxKQogICAgICAg
ICB3cmFwcGVyQ2FjaGUoKS5yZW1vdmUoaW1wbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAppbmRleCAyMmYyNzdhOGFkOTVlYjBkNjQ1
ZTRiNGQ4NDA5NDg1MDU0Njg0ODBkLi4zNjQ2YjQ3Y2I1MWYyZDMyNTRiZjE5OGQyNWUxNjE1MWJk
OTMzZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeS5jcHAKQEAgLTI5LDE2ICsyOSwxNyBAQAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQog
CiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgTG9jayByZWdpc3RyeU11dGV4OwotCiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSYgQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5PiByZWdpc3RyeTsKKyAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5PiByZWdpc3RyeTsKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geworICAgICAgICByZWdpc3RyeS5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1
cm4gcmVnaXN0cnk7CiB9CiAKQEAgLTUyLDcgKzUzLDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3Qg
U3QKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJlZ2lzdHJ5TXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIC8vIEZJWE1FOiBIb3cgaXMgaXQgaGVscGZ1bCB0
byBjYWxsIGlzb2xhdGVkQ29weSBvbiB0aGUgYXJndW1lbnQgdG8gZmluZD8KICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzLmZpbmQobmFtZS5pc29sYXRlZENvcHkoKSk7CkBAIC02
NCw3ICs2NSw3IEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKGNvbnN0IFN0CiAKIFN0cmluZyBDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeTo6bmFtZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWdpc3RyeU11dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBhdXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVj
dG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZGVudGlmaWVyKSk7CiAgICAgaWYgKGNv
bnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMuZW5kKCkpCkBAIC03NSw3ICs3Niw3IEBAIFN0cmlu
ZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAKIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVnaXN0cnlNdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OwogCiAgICAgYXV0byBjb250cnVjdG9yID0gbV9jb25zdHJ1Y3RvcnMu
ZmluZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRlbnRpZmllcikpOwogICAgIGlmIChjb250cnVj
dG9yID09IG1fY29uc3RydWN0b3JzLmVuZCgpKQpAQCAtODYsNyArODcsNyBAQCBSZWZQdHI8Q3J5
cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Y3JlYXRlKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFs
Z29yaXRobShjb25zdCBTdHJpbmcmIG5hbWUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRl
bnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtQ29uc3RydWN0b3IgY29uc3RydWN0b3IpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWdpc3RyeU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CiAKICAgICBBU1NFUlQoIW1faWRlbnRpZmllcnMuY29udGFpbnMobmFtZSkp
OwogICAgIEFTU0VSVCghbV9jb25zdHJ1Y3RvcnMuY29udGFpbnMoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGlkZW50aWZpZXIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oCmluZGV4IGZlYTNjY2E5MjNlNDc5MTJhODRmMDY4NzkzODgxMGYzOTgx
MjU0YzUuLmNiOTE4NjUxM2U2MDBmMDJmOWFjMmVmNTk3YWE5OTczNDI5MzdhZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIENyeXB0b0FsZ29yaXRobTsKIAogY2xhc3Mg
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5KTsKLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Q3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnk+OworICAgIGZyaWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIENyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaW5nbGV0b24oKTsKQEAgLTYyLDggKzYzLDkgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJBbGdvcml0aG0oY29uc3QgU3RyaW5nJiBuYW1lLCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1Db25zdHJ1Y3Rvcik7CiAKLSAg
ICBIYXNoTWFwPFN0cmluZywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiBtX2lkZW50aWZpZXJzOwotICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6
cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUNvbnN0cnVjdG9yPj4gbV9jb25zdHJ1Y3RvcnM7
CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOworICAgIEhhc2hNYXA8U3RyaW5nLCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1faWRlbnRpZmllcnMg
V1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6
cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUNvbnN0cnVjdG9yPj4gbV9jb25zdHJ1Y3RvcnMg
V1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggYmJjMDg1YTI5YTM1NmM1NTAwODBj
MzU4NDM2NmY1OGNiMTI0YTZlNC4uYjc2NTg2MmU2Yzc2NWM4OWUxY2I1OWViZDhhZjMxYTYyOGYx
MjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CkBAIC00Myw4
ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKE1lc3NhZ2VQb3J0KTsKIAotc3RhdGljIExvY2sgYWxsTWVzc2FnZVBvcnRzTG9jazsKLXN0
YXRpYyBIYXNoTWFwPE1lc3NhZ2VQb3J0SWRlbnRpZmllciwgTWVzc2FnZVBvcnQqPiYgYWxsTWVz
c2FnZVBvcnRzKCkKK3N0YXRpYyBDaGVja2VkTG9jayBhbGxNZXNzYWdlUG9ydHNMb2NrOworc3Rh
dGljIEhhc2hNYXA8TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBNZXNzYWdlUG9ydCo+JiBhbGxNZXNz
YWdlUG9ydHMoKSBXVEZfUkVRVUlSRVNfTE9DSyhhbGxNZXNzYWdlUG9ydHNMb2NrKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPE1lc3NhZ2VQb3J0SWRlbnRpZmllciwgTWVz
c2FnZVBvcnQqPj4gbWFwOwogICAgIHJldHVybiBtYXA7CkBAIC02MSw3ICs2Miw3IEBAIHZvaWQg
TWVzc2FnZVBvcnQ6OmRlcmVmKCkgY29uc3QKICAgICAvLyBUaGlzIGFsbG93cyBpc0V4aXN0aW5n
TWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlIGFuZCBub3RpZnlNZXNzYWdlQXZhaWxhYmxlIHRv
IGVhc2lseSBxdWVyeSB0aGUgbWFwIGFuZCBtYW5pcHVsYXRlIE1lc3NhZ2VQb3J0IGluc3RhbmNl
cy4KIAogICAgIGlmICghLS1tX3JlZkNvdW50KSB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIoYWxsTWVzc2FnZVBvcnRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxNZXNz
YWdlUG9ydHNMb2NrIH07CiAKICAgICAgICAgaWYgKG1fcmVmQ291bnQpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC03NiwxNCArNzcsMTQgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGVyZWYoKSBjb25z
dAogCiBib29sIE1lc3NhZ2VQb3J0Ojppc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hh
YmxlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAgYXV0byogcG9ydCA9IGFsbE1lc3NhZ2VQb3J0
cygpLmdldChpZGVudGlmaWVyKTsKICAgICByZXR1cm4gcG9ydCAmJiBwb3J0LT5pc0xvY2FsbHlS
ZWFjaGFibGUoKTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydDo6bm90aWZ5TWVzc2FnZUF2YWlsYWJs
ZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgTG9ja2Vy
PExvY2s+IGxvY2tlcihhbGxNZXNzYWdlUG9ydHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
YWxsTWVzc2FnZVBvcnRzTG9jayB9OwogICAgIGlmIChhdXRvKiBwb3J0ID0gYWxsTWVzc2FnZVBv
cnRzKCkuZ2V0KGlkZW50aWZpZXIpKQogICAgICAgICBwb3J0LT5tZXNzYWdlQXZhaWxhYmxlKCk7
CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBNZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgTQogewogICAgIExP
RyhNZXNzYWdlUG9ydHMsICJDcmVhdGVkIE1lc3NhZ2VQb3J0ICVzICglcCkgaW4gcHJvY2VzcyAl
IiBQUkl1NjQsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzLCBQ
cm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdl
UG9ydHNMb2NrIH07CiAgICAgYWxsTWVzc2FnZVBvcnRzKCkuc2V0KG1faWRlbnRpZmllciwgdGhp
cyk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFdlYWtQdHJGYWN0b3J5IGdldHMgaW5pdGlhbGl6
ZWQgZWFnZXJseSBvbiB0aGUgdGhyZWFkIHRoZSBNZXNzYWdlUG9ydCBnZXRzIGNvbnN0cnVjdGVk
IG9uIGZvciB0aHJlYWQtc2FmZXR5IHJlYXNvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggODhhYWNmMzU1ODE1YjYzNDRhN2M4MGQxNmE3
YWU5MTg5MWE0Y2E0Yy4uNGE1ODY2ZGE3NGQyMDU2ODk2ZTJhNDY4NDA3ZTU0MGJhYjYyOTgxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAt
NzIsNiArNzIsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJvbWlzZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KQEAgLTc5LDggKzgwLDggQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLXN0YXRpYyBMb2NrIGFsbFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jazsKLXN0YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3N0YXRpYyBDaGVja2VkTG9jayBhbGxTY3JpcHRFeGVjdXRp
b25Db250ZXh0c01hcExvY2s7CitzdGF0aWMgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+JiBhbGxTY3JpcHRFeGVjdXRpb25D
b250ZXh0c01hcCgpIFdURl9SRVFVSVJFU19MT0NLKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRz
TWFwTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+PiBjb250ZXh0
czsKICAgICBBU1NFUlQoYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrLmlzTG9ja2Vk
KCkpOwpAQCAtMTEzLDcgKzExNCw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyKCkgY29uCiB7CiAgICAg
QVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKICAgICBpZiAoIW1fY29udGV4dElkZW50aWZpZXIp
IHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0
c01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dHNNYXBMb2NrIH07CiAKICAgICAgICAgbV9jb250ZXh0SWRlbnRpZmllciA9IFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogCkBAIC0xMjYsNyArMTI3LDcg
QEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Y29udGV4dElkZW50aWZpZXIoKSBjb24KIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVtb3ZlRnJvbUNvbnRleHRzTWFwKCkKIHsKICAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikg
ewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRz
TWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250
ZXh0c01hcExvY2sgfTsKICAgICAgICAgQVNTRVJUKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRz
TWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllcikpOwogICAgICAgICBhbGxTY3JpcHRF
eGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZShtX2NvbnRleHRJZGVudGlmaWVyKTsKICAgICB9
CkBAIC0xNjIsNyArMTYzLDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAobV9jb250ZXh0SWRl
bnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVj
dXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYWxs
U2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5jb250YWlucyhtX2NvbnRleHRJZGVudGlmaWVy
KSwKICAgICAgICAgICAgICJBIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgc3ViY2xhc3MgaW5zdGFu
Y2UgaW1wbGVtZW50aW5nIHBvc3RUYXNrIHNob3VsZCBoYXZlIGFscmVhZHkgcmVtb3ZlZCBpdHNl
bGYgZnJvbSB0aGUgbWFwIik7CiAgICAgfQpAQCAtNjIzLDcgKzYyNCw3IEBAIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVuc3VyZVNlcnZpY2VXb3JrZXJD
b250YWluZXIoKQogCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRlbnRpZmllciwgVGFzayYmIHRhc2spCiB7
Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExv
Y2sgfTsKICAgICBhdXRvKiBjb250ZXh0ID0gYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAo
KS5nZXQoaWRlbnRpZmllcik7CiAKICAgICBpZiAoIWNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDQx
ZmQ0MzA1N2VlYjJmYTMzMTdjNjlhYWNjYTI4YmFlMzczNjM0YTIuLmI2NjkxYTIyZGNiMzU4ZGI2
NDA0ZWVlYmY3YzQ3OGEyMjUwN2MzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00NiwzMCArNDYsMzEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCk7CiAKLUhhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpCitDaGVj
a2VkTG9jayBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hT
ZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0
YW5jZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PENhbnZhc1JlbmRl
cmluZ0NvbnRleHQqPj4gaW5zdGFuY2VzOwogICAgIHJldHVybiBpbnN0YW5jZXM7CiB9CiAKLUxv
Y2smIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc011dGV4KCkKK0NoZWNrZWRMb2Nr
JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMg
TG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9j
azsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dChD
YW52YXNCYXNlJiBjYW52YXMpCiAgICAgOiBtX2NhbnZhcyhjYW52YXMpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwotICAgIGluc3RhbmNlcyhsb2NrKS5hZGQodGhp
cyk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgIGluc3RhbmNl
cygpLmFkZCh0aGlzKTsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6fkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsK
LSAgICBBU1NFUlQoaW5zdGFuY2VzKGxvY2spLmNvbnRhaW5zKHRoaXMpKTsKLSAgICBpbnN0YW5j
ZXMobG9jaykucmVtb3ZlKHRoaXMpOworICAgIExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2Nr
KCkgfTsKKyAgICBBU1NFUlQoaW5zdGFuY2VzKCkuY29udGFpbnModGhpcykpOworICAgIGluc3Rh
bmNlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpy
ZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCmluZGV4IDZmNjg4ZDZlYzRhYjg5OTUzYzViZjQ3ZDQxNDFlMmI1MzEzMzVmNzku
LjRkNTlhM2YwYzhmNmU1MGZjNTBjMTM3MmMzYjRlZWNkN2Y5MzJkOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYW52YXNCYXNlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTEsOCArNTIsOCBAQCBj
bGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q2FudmFzUmVuZGVyaW5nQ29udGV4dCgpOwogCi0gICAgc3Rh
dGljIEhhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBpbnN0YW5jZXMoY29uc3QgTG9j
a0hvbGRlciYpOwotICAgIHN0YXRpYyBMb2NrJiBpbnN0YW5jZXNNdXRleCgpOworICAgIHN0YXRp
YyBIYXNoU2V0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQqPiYgaW5zdGFuY2VzKCkgV1RGX1JFUVVJ
UkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2smIGluc3Rh
bmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNfaW5zdGFuY2VzTG9jayk7CiAKICAgICB2b2lk
IHJlZigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVyZWYoKTsKQEAgLTExMSw2ICsxMTIs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXIgeyBmYWxzZSB9OwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2lu
c3RhbmNlc0xvY2s7CisKICAgICBDYW52YXNCYXNlJiBtX2NhbnZhczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCmluZGV4IGY2NTI1MTQ3MTkwZDkx
ZDM0YjM0YjcxNWY2ZDMwMDgzMjNhMjI4MGUuLmE5ZTY1MmMxNDIxZWM3ZTUyYzkzYTQ0ZTUyZmJm
ODIzNGMwOGIwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmNwcApAQCAtNDUsMTYgKzQ1LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaE1h
cDxXZWJHTFByb2dyYW0qLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKj4mIFdlYkdMUHJvZ3Jh
bTo6aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKQorQ2hlY2tlZExvY2sgV2ViR0xQcm9ncmFt
OjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSo+JiBXZWJHTFByb2dyYW06Omluc3RhbmNlcygpCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSo+PiBpbnN0YW5jZXM7CiAgICAgcmV0dXJuIGluc3RhbmNlczsKIH0KIAotTG9jayYg
V2ViR0xQcm9ncmFtOjppbnN0YW5jZXNNdXRleCgpCitDaGVja2VkTG9jayYgV2ViR0xQcm9ncmFt
OjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4g
bXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsKIH0KIAogUmVmPFdlYkdMUHJvZ3Jh
bT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQpA
QCAtNjksOCArNzAsOCBAQCBXZWJHTFByb2dyYW06OldlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjdHgpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAg
ICAgICAgaW5zdGFuY2VzKGxvY2spLmFkZCh0aGlzLCAmY3R4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcywg
JmN0eCk7CiAgICAgfQogCiAgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHRHTCgpLT5j
cmVhdGVQcm9ncmFtKCkpOwpAQCAtODEsOSArODIsOSBAQCBXZWJHTFByb2dyYW06On5XZWJHTFBy
b2dyYW0oKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHTFBy
b2dyYW0oKnRoaXMpOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soaW5zdGFuY2Vz
TXV0ZXgoKSk7Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZXMobG9jaykuY29udGFpbnModGhpcykp
OwotICAgICAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIEFTU0VSVChpbnN0YW5jZXMoKS5j
b250YWlucyh0aGlzKSk7CisgICAgICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKICAgICB9
CiAKICAgICBpZiAoIWhhc0dyb3VwT3JDb250ZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IDZjOWUzNGVkZGU1MGRiYzNjZmRkMmExMWY5MTk5ZjIx
Y2RkZTQ2MjYuLjEwMDBkMTg5ZDFmM2FmY2UyYTE2OTI5YWZiYzFiZDhlZDI5NGQ0NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCkBAIC0yOSw5ICsyOSw5IEBA
CiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIldl
YkdMU2hhcmVkT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgotI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9ncmFt
PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdM
UHJvZ3JhbSgpOwogCi0gICAgc3RhdGljIEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSo+JiBpbnN0YW5jZXMoY29uc3QgV1RGOjpMb2NrSG9sZGVyJik7Ci0g
ICAgc3RhdGljIExvY2smIGluc3RhbmNlc011dGV4KCk7CisgICAgc3RhdGljIEhhc2hNYXA8V2Vi
R0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBpbnN0YW5jZXMoKSBXVEZf
UkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkpOworICAgIHN0YXRpYyBDaGVja2VkTG9jayYg
aW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc19pbnN0YW5jZXNMb2NrKTsKIAogICAg
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogCkBAIC05OCw2ICs5OCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRH
TCopOwogICAgIHZvaWQgY2FjaGVJbmZvSWZOZWVkZWQoKTsKIAorICAgIHN0YXRpYyBDaGVja2Vk
TG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBWZWN0b3I8R0NHTGludD4gbV9hY3RpdmVBdHRy
aWJMb2NhdGlvbnM7CiAKICAgICBHQ0dMaW50IG1fbGlua1N0YXR1cyB7IDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKaW5kZXggYzEwYzQ2NDM3OTU5NWFiMGM3NzE2Y2YyZThmOGUyNWNmYmU3NzM5MS4uYzI0
YTg0ZGE4ZDMwNjg3YzYyZWU5YzU4MmE0ZGRkOWEyODBiNTIxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
QEAgLTEwNTIsOCArMTA1Miw4IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6On5XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKCkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9jayhXZWJHTFByb2dyYW06Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogV2ViR0xQcm9ncmFtOjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBXZWJHTFByb2dyYW06Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICBp
ZiAoZW50cnkudmFsdWUgPT0gdGhpcykgewogICAgICAgICAgICAgICAgIC8vIERvbid0IHJlbW92
ZSBhbnkgV2ViR0xQcm9ncmFtIGZyb20gdGhlIGluc3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBz
dGlsbCBleGlzdC4KICAgICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRp
b24gd2l0aCBhIFdlYkdMIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwCmluZGV4IDNkODM5YjQxYTNkOGRmOTVhYzA3YTVjYzUwYmFhYjkwMDEx
Nzg3MmQuLjBmZWQxZmIyYmIzZGE1ZDNhMjAxYzdmY2ExYjUwOGQxNzQ3Yzg4OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xNzAsOCArMTcw
LDggQEAgSFRNTENhbnZhc0VsZW1lbnQqIEluc3BlY3RvckNhbnZhczo6Y2FudmFzRWxlbWVudCgp
IGNvbnN0CiAgICAgICAgIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+
IGRldmljZVdyYXBwZXIpIC0+IEhUTUxDYW52YXNFbGVtZW50KiB7CiAgICAgICAgICAgICBhdXRv
JiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgpOwogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9jayhDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNN
dXRleCgpKTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2Vz
TG9jaygpIH07CisgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250
ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVz
RGV2aWNlKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBkZXZpY2UpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1lbnQ7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjcx
LDggKzI3MSw4IEBAIEhhc2hTZXQ8RWxlbWVudCo+IEluc3BlY3RvckNhbnZhczo6Y2xpZW50Tm9k
ZXMoKSBjb25zdAogCiAgICAgICAgICAgICBIYXNoU2V0PEVsZW1lbnQqPiBjYW52YXNFbGVtZW50
Q2xpZW50czsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2so
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgICAgICAg
ICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICAgICAg
ICAgIGZvciAoYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYW52
YXNFbGVtZW50ID0gY2FudmFzSWZDb250ZXh0TWF0Y2hlc0RldmljZSgqY2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgZGV2aWNlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnRD
bGllbnRzLmFkZChjYW52YXNFbGVtZW50KTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCmluZGV4IDUyNmQwZjc0MTZjNWZiYzE5YWY5YmY3OTgyYTYwNGMwYWU5MGJkN2QuLmIxNjc4
NDgwOTA4MmU2OWMyMWYzZjk2MGUyNmUwMWNkZTc2N2E1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBA
IC0xNDAsOCArMTQwLDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgfTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc011dGV4KCkpOwotICAgICAg
ICBmb3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMo
bG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKSkgewogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAg
ICAgICAgICAvLyBUaGUgYWN0dWFsICJjb250ZXh0IiBmb3IgV2ViR1BVIGlzIHRoZSBgV2ViR1BV
RGV2aWNlYCwgbm90IHRoZSA8Y2FudmFzPi4KICAgICAgICAgICAgIGlmIChpczxHUFVDYW52YXND
b250ZXh0Pihjb250ZXh0KSkKQEAgLTE1NSw4ICsxNTUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2ViR1BVRGV2aWNlOjppbnN0
YW5jZXNNdXRleCgpKTsKLSAgICAgICAgZm9yIChhdXRvKiBkZXZpY2UgOiBXZWJHUFVEZXZpY2U6
Omluc3RhbmNlcyhsb2NrKSkgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViR1BVRGV2aWNl
OjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvKiBkZXZpY2UgOiBXZWJHUFVE
ZXZpY2U6Omluc3RhbmNlcygpKSB7CiAgICAgICAgICAgICBpZiAoZXhpc3RzSW5DdXJyZW50UGFn
ZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICAgICAgYmlu
ZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7CiAgICAgICAgIH0KQEAgLTE2NSw4ICsxNjUsOCBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxl
KCkKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhX
ZWJHTFByb2dyYW06Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8mIFtwcm9n
cmFtLCBjb250ZXh0V2ViR0xCYXNlXSA6IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKGxvY2spKSB7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJHTFByb2dyYW06Omluc3RhbmNlc0xvY2soKSB9
OworICAgICAgICBmb3IgKGF1dG8mIFtwcm9ncmFtLCBjb250ZXh0V2ViR0xCYXNlXSA6IFdlYkdM
UHJvZ3JhbTo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgIGlmIChjb250ZXh0V2ViR0xCYXNl
ICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoY29udGV4dFdlYkdMQmFzZS0+Y2FudmFzQmFzZSgpLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICAgICAgZGlkQ3JlYXRlV2ViR0xQ
cm9ncmFtKCpjb250ZXh0V2ViR0xCYXNlLCAqcHJvZ3JhbSk7CiAgICAgICAgIH0KQEAgLTE3NSw4
ICsxNzUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgewotICAgICAgICBMb2Nr
SG9sZGVyIGxvY2soV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBm
b3IgKGF1dG8mIFtwaXBlbGluZSwgZGV2aWNlXSA6IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMo
bG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5j
ZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvJiBbcGlwZWxpbmUsIGRldmljZV0gOiBXZWJH
UFVQaXBlbGluZTo6aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgIGlmIChkZXZpY2UgJiYgZXhp
c3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgJiYgcGlw
ZWxpbmUtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBkaWRDcmVhdGVXZWJHUFVQaXBlbGlu
ZSgqZGV2aWNlLCAqcGlwZWxpbmUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXgg
ZTlkMzVkM2IyMGU5MWVlOWJhMTkyZDQxMWQwNDI5NTM1YTYyZThkNS4uNDMwMDEyYzVmMTdhYjdl
MzMyZDkyMGU5OTM4NWI4MzJlZDVhYzVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtODI2LDkg
KzgyNiw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZW5hYmxlKCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZE5ldHdv
cmtBZ2VudCh0aGlzKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKFdlYlNvY2tl
dDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
V2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07CiAKLSAgICAgICAgZm9yIChh
dXRvKiB3ZWJTb2NrZXQgOiBhY3RpdmVXZWJTb2NrZXRzKGxvY2spKSB7CisgICAgICAgIGZvciAo
YXV0byogd2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cygpKSB7CiAgICAgICAgICAgICBpZiAo
IWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEwMDksOSArMTAwOSw5IEBAIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpnZXRTZXJpYWxpemVk
Q2VydGlmaWNhdGUoCiAKIFdlYlNvY2tldCogSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3ZWJTb2Nr
ZXRGb3JSZXF1ZXN0SWQoY29uc3QgUHJvdG9jb2w6Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVz
dElkKQogewotICAgIExvY2tIb2xkZXIgbG9jayhXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tl
dHNNdXRleCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJT
b2NrZXRzTG9jaygpIH07CiAKLSAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNv
Y2tldHMobG9jaykpIHsKKyAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tl
dHMoKSkgewogICAgICAgICBpZiAoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQod2ViU29j
a2V0LT5jaGFubmVsKCktPnByb2dyZXNzSWRlbnRpZmllcigpKSA9PSByZXF1ZXN0SWQpCiAgICAg
ICAgICAgICByZXR1cm4gd2ViU29ja2V0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDkzMzYw
MTc2MTY2NzQxN2ViZTVkZTMwMTU4Njg2OWNjYzY0ZmMzZGEuLjhiMmUyOTY3MDVhNWFkN2IzN2I1
NWE0ZmI2NjdmZjBkOGQzMmY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1
ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250
ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZWd1bGFyRXhwcmVz
c2lvbi5oPgpAQCAtMTMzLDcgKzEzNCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TG9hZGVySWQgbG9hZGVySWRlbnRpZmllcihEb2N1
bWVudExvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdv
cms6OkZyYW1lSWQgZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKikgPSAwOwotICAgIHZp
cnR1YWwgVmVjdG9yPFdlYlNvY2tldCo+IGFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRl
ciYpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRz
KCkgV1RGX1JFUVVJUkVTX0xPQ0soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygp
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkSW50ZXJu
YWwoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQmKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHNob3VsZEZvcmNlQnVmZmVyaW5nTmV0d29ya1Jlc291cmNlRGF0YSgpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
TmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlTmV0d29ya0FnZW50LmNwcAppbmRleCA2NTJhNzlmNTcxNDU1YWM5NmNkMDRhMjQwZWM0ZDli
NzY1Y2ZjZjMxLi5iYjRmNmJhN2MyY2M2MTg1ODU4NzE5NmM5NzNhMmMzODZmODhmNGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VO
ZXR3b3JrQWdlbnQuY3BwCkBAIC02NSwxMSArNjUsMTEgQEAgUHJvdG9jb2w6Ok5ldHdvcms6OkZy
YW1lSWQgUGFnZU5ldHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKiBs
b2EKICAgICByZXR1cm4geyB9OwogfQogCi1WZWN0b3I8V2ViU29ja2V0Kj4gUGFnZU5ldHdvcmtB
Z2VudDo6YWN0aXZlV2ViU29ja2V0cyhjb25zdCBMb2NrSG9sZGVyJiBsb2NrKQorVmVjdG9yPFdl
YlNvY2tldCo+IFBhZ2VOZXR3b3JrQWdlbnQ6OmFjdGl2ZVdlYlNvY2tldHMoKQogewogICAgIFZl
Y3RvcjxXZWJTb2NrZXQqPiB3ZWJTb2NrZXRzOwogCi0gICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQg
OiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKKyAgICBmb3IgKGF1dG8q
IHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cygpKSB7CiAgICAgICAg
IGF1dG8gY2hhbm5lbCA9IHdlYlNvY2tldC0+Y2hhbm5lbCgpOwogICAgICAgICBpZiAoIWNoYW5u
ZWwpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5oCmluZGV4IGMxMjk5OTZjMWJm
YjQ1MWQ3N2RkNTIwZjRhMDg5YWZkNTU4M2MwZjAuLjRiNjZjMmVhYTk4NDE0NGFkYTI2ZGNhMDM5
NzBlODAxYjQyYjFlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkxvYWRlcklkIGxv
YWRlcklkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29s
OjpOZXR3b3JrOjpGcmFtZUlkIGZyYW1lSWRlbnRpZmllcihEb2N1bWVudExvYWRlciopOwotICAg
IFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsK
KyAgICBWZWN0b3I8V2ViU29ja2V0Kj4gYWN0aXZlV2ViU29ja2V0cygpIFdURl9SRVFVSVJFU19M
T0NLKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKSk7CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJvb2wpOwogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJik7
CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmluZ05ldHdvcmtSZXNvdXJjZURhdGEoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZWY4Njgz
ZmI2MjI4MThiYjU4ZmU5Mzc0NTEwZWQ1OTVhODg1NWFhMS4uNGUxYTYyN2YwOWIxYmFlMGY3MGQx
N2NlYzExNzNiOWU0YjU1ZWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIFByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIFdvcmtlck5ldHdvcmtBZ2VudDo6
ZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKikKICAgICByZXR1cm4geyB9OwogfQogCi1W
ZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29ya0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKGNv
bnN0IExvY2tIb2xkZXImKQorVmVjdG9yPFdlYlNvY2tldCo+IFdvcmtlck5ldHdvcmtBZ2VudDo6
YWN0aXZlV2ViU29ja2V0cygpCiB7CiAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJlY3RseSBkaXNwbGF5IHdvcmtlcidzIFdlYlNv
Y2tldHMKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaAppbmRleCBlNWRmZjlk
MWEzNGQ5YmM0M2NiMjczMGE4MzA0NjBiNzc5ZTQ1YTJiLi5kZTE0ZGVkMmFiYmUxNmIwNzVhNDJh
YmJkNzA4YjdkZDM4MDViMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdlbnQuaApAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
OkxvYWRlcklkIGxvYWRlcklkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIqKTsKICAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIGZyYW1lSWRlbnRpZmllcihEb2N1bWVudExv
YWRlciopOwotICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExv
Y2tIb2xkZXImKTsKKyAgICBWZWN0b3I8V2ViU29ja2V0Kj4gYWN0aXZlV2ViU29ja2V0cygpIFdU
Rl9SRVFVSVJFU19MT0NLKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c0xvY2soKSk7CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFsKGJvb2wpOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpGcmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmluZ05ldHdvcmtSZXNvdXJj
ZURhdGEoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQ
b2xpY3kuY3BwCmluZGV4IDE3ODJhYTBhMmNhNmJiYmE3MDEyMTQxMTVjMGYyMjAwNTlkMzY2Nzcu
LjUxODMzOTM1YWFlZWZhZjU4OTAyZTRiOWM2NmEwMjRhOWQ1ZDlkZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKICNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgpAQCAtNDYsMTYgKzQ3LDE2IEBAIHN0YXRpYyBTZWN1cml0eVBvbGlj
eTo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9IFNlY3VyaXR5UG9saWN5OjpBbGxv
d0xvCiB0eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nlc3NFbnRyeT4gT3JpZ2luQWNjZXNzQWxsb3ds
aXN0OwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFjY2Vz
c0FsbG93bGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAotc3RhdGljIExvY2sgb3JpZ2luQWNjZXNz
TWFwTG9jazsKLXN0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpCitzdGF0
aWMgQ2hlY2tlZExvY2sgb3JpZ2luQWNjZXNzTWFwTG9jazsKK3N0YXRpYyBPcmlnaW5BY2Nlc3NN
YXAmIG9yaWdpbkFjY2Vzc01hcCgpIFdURl9SRVFVSVJFU19MT0NLKG9yaWdpbkFjY2Vzc01hcExv
Y2spCiB7CiAgICAgQVNTRVJUKG9yaWdpbkFjY2Vzc01hcExvY2suaXNIZWxkKCkpOwogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxPcmlnaW5BY2Nlc3NNYXA+IG9yaWdpbkFjY2Vzc01hcDsKICAg
ICByZXR1cm4gb3JpZ2luQWNjZXNzTWFwOwogfQogCi1zdGF0aWMgTG9jayBvcmlnaW5BY2Nlc3NQ
YXR0ZXJuTG9jazsKLXN0YXRpYyBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiYgb3JpZ2lu
QWNjZXNzUGF0dGVybnMoKQorc3RhdGljIENoZWNrZWRMb2NrIG9yaWdpbkFjY2Vzc1BhdHRlcm5M
b2NrOworc3RhdGljIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+JiBvcmlnaW5BY2Nlc3NQ
YXR0ZXJucygpIFdURl9SRVFVSVJFU19MT0NLKG9yaWdpbkFjY2Vzc1BhdHRlcm5Mb2NrKQogewog
ICAgIEFTU0VSVChvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+PiBvcmlnaW5BY2Nl
c3NQYXR0ZXJuczsKQEAgLTIwNSw3ICsyMDYsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0Fj
Y2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgUwog
ewogICAgIEFTU0VSVCh0YXJnZXRPcmlnaW4uZXF1YWwoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0
YXJnZXRVUkwpLnB0cigpKSk7CiAgICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9y
aWdpbkFjY2Vzc01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNz
TWFwTG9jayB9OwogICAgICAgICBpZiAoT3JpZ2luQWNjZXNzQWxsb3dsaXN0KiBsaXN0ID0gb3Jp
Z2luQWNjZXNzTWFwKCkuZ2V0KGFjdGl2ZU9yaWdpbi50b1N0cmluZygpKSkgewogICAgICAgICAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6ICpsaXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5
Lm1hdGNoZXNPcmlnaW4odGFyZ2V0T3JpZ2luKSkKQEAgLTIxMyw3ICsyMTQsNyBAQCBib29sIFNl
Y3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2
ZU9yaWdpbiwgY29uc3QgUwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzUGF0dGVybkxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jayB9OwogICAgIGZvciAoY29uc3QgYXV0byYg
cGF0dGVybiA6IG9yaWdpbkFjY2Vzc1BhdHRlcm5zKCkpIHsKICAgICAgICAgaWYgKHBhdHRlcm4u
bWF0Y2hlcyh0YXJnZXRVUkwpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMzQsNyAr
MjM1LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50
cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KIAogICAgIFN0cmluZyBzb3VyY2VTdHJp
bmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
b3JpZ2luQWNjZXNzTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9yaWdpbkFjY2Vzc01h
cExvY2sgfTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5B
Y2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9y
aWdpbkFjY2Vzc0FsbG93bGlzdD4oKTsKQEAgLTI1MSw3ICsyNTIsNyBAQCB2b2lkIFNlY3VyaXR5
UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9y
aWdpbiYgc291cgogCiAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0
cmluZygpOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgIE9yaWdpbkFj
Y2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFwKCk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjpp
dGVyYXRvciBpdCA9IG1hcC5maW5kKHNvdXJjZVN0cmluZyk7CiAgICAgaWYgKGl0ID09IG1hcC5l
bmQoKSkKQEAgLTI2OCwxMyArMjY5LDEzIEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9y
aWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyCiAKIHZv
aWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dsaXN0cygpCiB7Ci0gICAg
TG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgIG9yaWdpbkFjY2Vzc01hcCgpLmNsZWFy
KCk7CiB9CiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFsbG93QWNjZXNzVG8oY29uc3QgVXNlckNv
bnRlbnRVUkxQYXR0ZXJuJiBwYXR0ZXJuKQogewotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3Jp
Z2luQWNjZXNzUGF0dGVybkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NQ
YXR0ZXJuTG9jayB9OwogICAgIG9yaWdpbkFjY2Vzc1BhdHRlcm5zKCkuYXBwZW5kKHBhdHRlcm4p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNh
Z2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2Fn
ZVRocmVhZENvY29hLm1tCmluZGV4IDk5MzVhZGMzZDNiMDFjMzBlOWZkNmM4NWI1MmE2ZmJhMWNk
YTQzNzMuLjliYzZkMjk3N2VmOTEyMzhlZmEwMTVjNmNkYzM4MzE1MGFhOGMzNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29h
Lm1tCkBAIC0xNjEsOCArMTYxLDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9y
bUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYgZGEKIAogICAgIEhh
c2hTZXQ8bWFjaF9wb3J0X3Q+IGtub3duV2ViS2l0VGhyZWFkczsKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soVGhyZWFkOjphbGxUaHJlYWRzTXV0ZXgoKSk7Ci0gICAgICAg
IGZvciAoYXV0byogdGhyZWFkIDogVGhyZWFkOjphbGxUaHJlYWRzKGxvY2tlcikpIHsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IFRocmVhZDo6YWxsVGhyZWFkc0xvY2soKSB9OworICAgICAgICBm
b3IgKGF1dG8qIHRocmVhZCA6IFRocmVhZDo6YWxsVGhyZWFkcygpKSB7CiAgICAgICAgICAgICBt
YWNoX3BvcnRfdCBtYWNoVGhyZWFkID0gdGhyZWFkLT5tYWNoVGhyZWFkKCk7CiAgICAgICAgICAg
ICBpZiAoTUFDSF9QT1JUX1ZBTElEKG1hY2hUaHJlYWQpKQogICAgICAgICAgICAgICAgIGtub3du
V2ViS2l0VGhyZWFkcy5hZGQobWFjaFRocmVhZCk7CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBS
ZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNv
dXJjZVVzYWdlRGF0YSYgZGEKIAogICAgIEhhc2hNYXA8bWFjaF9wb3J0X3QsIFN0cmluZz4ga25v
d25Xb3JrZXJUaHJlYWRzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhX
b3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmts
ZXRUaHJlYWRzTG9jaygpIH07CiAgICAgICAgIGZvciAoYXV0byogdGhyZWFkIDogV29ya2VyT3JX
b3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkpIHsKICAgICAgICAgICAgIC8v
IElnbm9yZSB3b3JrZXIgdGhyZWFkcyB0aGF0IGhhdmUgbm90IGJlZW4gZnVsbHkgc3RhcnRlZCB5
ZXQuCiAgICAgICAgICAgICBpZiAoIXRocmVhZC0+dGhyZWFkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAKaW5kZXgg
YjY1OWI3NzRmMjY0MDEzYTE3Y2Y1NmU2YzEzMTAyNWVlY2NiY2UwYS4uMDJlNWQ0ODljYWI0M2Y4
MzkzMzNkNDliZDI0YTU5NjkyOTg5NDdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcApAQCAtMjMzLDggKzIzMyw4
IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1Db2xsZWN0Q1BVRGF0YShKU0M6
OlZNKiwgUmVzb3VyY2VVc2FnZURhdGEmIGRhCiAKICAgICBIYXNoU2V0PHBpZF90PiBrbm93bldl
YktpdFRocmVhZHM7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFRocmVh
ZDo6YWxsVGhyZWFkc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IFRocmVh
ZDo6YWxsVGhyZWFkcyhsb2NrZXIpKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBUaHJlYWQ6
OmFsbFRocmVhZHNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvKiB0aHJlYWQgOiBUaHJlYWQ6
OmFsbFRocmVhZHMoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gaWQgPSB0aHJlYWQtPmlkKCkp
CiAgICAgICAgICAgICAgICAga25vd25XZWJLaXRUaHJlYWRzLmFkZChpZCk7CiAgICAgICAgIH0K
QEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29s
bGVjdENQVURhdGEoSlNDOjpWTSosIFJlc291cmNlVXNhZ2VEYXRhJiBkYQogCiAgICAgSGFzaE1h
cDxwaWRfdCwgU3RyaW5nPiBrbm93bldvcmtlclRocmVhZHM7CiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0
VGhyZWFkc0xvY2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBXb3JrZXJPcldvcmtsZXRU
aHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRv
KiB0aHJlYWQgOiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHMo
KSkgewogICAgICAgICAgICAgLy8gSWdub3JlIHdvcmtlciB0aHJlYWRzIHRoYXQgaGF2ZSBub3Qg
YmVlbiBmdWxseSBzdGFydGVkIHlldC4KICAgICAgICAgICAgIGlmICghdGhyZWFkLT50aHJlYWQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKaW5kZXgg
NTE2NTMxNGNmZWExMmEwMTAwYzgyYzI2YmNjY2YyMjJkMDJjN2E1Zi4uMmY1YWY0N2M3ZTI2OTQ2
ZjNlYzFmZmY0MDhmYTdhYWJjMzc4M2U1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTMyLDYgKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitDaGVja2VkTG9jayBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNfc2hhcmVkTG9jazsK
KwogVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpUYXNrRGlzcGF0Y2hlcigpCiB7CiB9CkBAIC0zOSw3
ICs0MSw3IEBAIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6VGFza0Rpc3BhdGNoZXIoKQogdm9pZCBU
YXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlv
bikKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc2hhcmVkTG9jaygp
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNfc2hhcmVkTG9jayB9OwogICAgICAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogICAgICAgICBwZW5kaW5nRGlz
cGF0Y2hlcnMoKS5hcHBlbmQobWFrZVdlYWtQdHIoKnRoaXMpKTsKICAgICB9CkBAIC01NywxMiAr
NTksNiBAQCBUaW1lciYgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lcigpCiAgICAg
cmV0dXJuIHRpbWVyLmdldCgpOwogfQogCi1Mb2NrJiBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNo
YXJlZExvY2soKQotewotICAgIHN0YXRpYyBMb2NrIGxvY2s7Ci0gICAgcmV0dXJuIGxvY2s7Ci19
Ci0KIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZpcmVkKCkKIHsKICAg
ICBBU1NFUlQoIXNoYXJlZFRpbWVyKCkuaXNBY3RpdmUoKSk7CkBAIC03MSw4ICs2Nyw4IEBAIHZv
aWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFyZWRUaW1lckZpcmVkKCkKICAgICAvLyBxdWV1
ZWQgYnkgdGhlIEpTIGV2ZW50cyBoYW5kbGVycyB0aGF0IGFyZSBleGVjdXRlZCBpbiB0aGUgbG9v
cCBiZWxvdy4KICAgICBEZXF1ZTxXZWFrUHRyPFRhc2tEaXNwYXRjaGVyPFRpbWVyPj4+IHF1ZXVl
ZERpc3BhdGNoZXJzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzaGFy
ZWRMb2NrKCkpOwotICAgICAgICBxdWV1ZWREaXNwYXRjaGVycyA9IFdURk1vdmUocGVuZGluZ0Rp
c3BhdGNoZXJzKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19zaGFyZWRMb2NrIH07Cisg
ICAgICAgIHF1ZXVlZERpc3BhdGNoZXJzID0gc3RkOjpleGNoYW5nZShwZW5kaW5nRGlzcGF0Y2hl
cnMoKSwgeyB9KTsKICAgICB9CiAgICAgd2hpbGUgKCFxdWV1ZWREaXNwYXRjaGVycy5pc0VtcHR5
KCkpIHsKICAgICAgICAgV2Vha1B0cjxUYXNrRGlzcGF0Y2hlcjxUaW1lcj4+IGRpc3BhdGNoZXIg
PSBxdWV1ZWREaXNwYXRjaGVycy50YWtlRmlyc3QoKTsKQEAgLTg1LDIxICs4MSwxNSBAQCB2b2lk
IFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6c2hhcmVkVGltZXJGaXJlZCgpCiAKIERlcXVlPFdlYWtQ
dHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4mIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6cGVuZGlu
Z0Rpc3BhdGNoZXJzKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPERlcXVlPFdl
YWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4+IGRpc3BhdGNoZXJzOwotCi0gICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7Ci0gICAgICAgIGRpc3BhdGNoZXJzLmNvbnN0cnVjdCgpOwotICAgIH0pOwotCisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4+
IGRpc3BhdGNoZXJzOwogICAgIHJldHVybiBkaXNwYXRjaGVycy5nZXQoKTsKIH0KIAogdm9pZCBU
YXNrRGlzcGF0Y2hlcjxUaW1lcj46OmRpc3BhdGNoT25lVGFzaygpCiB7Ci0gICAgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+IHRhc2s7CisgICAgRnVuY3Rpb248dm9pZCgpPiB0YXNrOwogICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzaGFyZWRMb2NrKCkpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgc19zaGFyZWRMb2NrIH07CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nVGFz
a3MuaXNFbXB0eSgpKTsKICAgICAgICAgdGFzayA9IG1fcGVuZGluZ1Rhc2tzLnRha2VGaXJzdCgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNr
UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaAppbmRl
eCA0ZTliNDBkOWI1MWU1ZjE2MTIwMzYwZjUzNTViYTg0OGMzNDRiZmFkLi41MWMwODI1YzZiNGZl
MDFkNjVjYWM0MGNhYTk3YmVjMWMxOGYxNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R2VuZXJpY1Rhc2tRdWV1ZS5oCkBAIC02NiwxMyArNjYsMTMgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIHN0YXRpYyBUaW1lciYgc2hhcmVkVGltZXIoKTsKLSAgICBzdGF0aWMgV1RGOjpMb2Nr
JiBzaGFyZWRMb2NrKCk7CiAgICAgc3RhdGljIHZvaWQgc2hhcmVkVGltZXJGaXJlZCgpOwotICAg
IHN0YXRpYyBEZXF1ZTxXZWFrUHRyPFRhc2tEaXNwYXRjaGVyPFRpbWVyPj4+JiBwZW5kaW5nRGlz
cGF0Y2hlcnMoKTsKKyAgICBzdGF0aWMgRGVxdWU8V2Vha1B0cjxUYXNrRGlzcGF0Y2hlcjxUaW1l
cj4+PiYgcGVuZGluZ0Rpc3BhdGNoZXJzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19zaGFyZWRMb2Nr
KTsKIAogICAgIHZvaWQgZGlzcGF0Y2hPbmVUYXNrKCk7CiAKLSAgICBEZXF1ZTxGdW5jdGlvbjx2
b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2sgc19zaGFyZWRM
b2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1Rhc2tzIFdURl9HVUFS
REVEX0JZX0xPQ0soc19zaGFyZWRMb2NrKTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCmlu
ZGV4IGMzZjc1NjAxODZmMjBhYzVjODhmMzRhNTQzNmZjZGFhM2JiNTc3YWQuLmQ1YmIwNDUyOGFj
YjliMjBlNjk1ZDdiMGMwNTRhNzliMDgxMDdjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKQEAgLTI3LDggKzI3LDcgQEAKICNpbmNs
dWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTG9ja2Vy
Lmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJM
UGFyc2VyLmg+CkBAIC02Niw3ICs2NSw3IEBAIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hl
bWVzTWFwPiBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQoY29uc3QgVmVjdG9yPFN0CiAgICAg
cmV0dXJuIHNldDsKIH0KIAotc3RhdGljIExvY2sgc2NoZW1lUmVnaXN0cnlMb2NrOworc3RhdGlj
IENoZWNrZWRMb2NrIHNjaGVtZVJlZ2lzdHJ5TG9jazsKIAogc3RhdGljIGNvbnN0IFVSTFNjaGVt
ZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIHsKQEAgLTk1LDcgKzk0LDcgQEAgc3RhdGljIGNv
bnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIAogICAgICAgICBVUkxTY2hl
bWVzTWFwIHNldDsKICAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihz
Y2hlbWVSZWdpc3RyeUxvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJl
Z2lzdHJ5TG9jayB9OwogICAgICAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9j
YWxVUkxTY2hlbWVzKCkpCiAgICAgICAgICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwogCkBAIC0x
MDksNyArMTA4LDcgQEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hl
bWVzKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNN
YXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQorc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAm
IGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3Ry
eUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAg
c3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChVUkxTY2hlbWVz
TWFwIHsKQEAgLTEyMSwyMSArMTIwLDIxIEBAIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBi
dWlsdGluTG9jYWxVUkxTY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGlj
IFVSTFNjaGVtZXNNYXAmIGxvY2FsVVJMU2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYg
bG9jYWxVUkxTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQog
ewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBsb2NhbFNjaGVtZXMgPSBidWlsdGluTG9jYWxV
UkxTY2hlbWVzKCk7CiAgICAgcmV0dXJuIGxvY2FsU2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNj
aGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKQorc3RhdGljIFVSTFNjaGVtZXNN
YXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVS
ZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGRpc3BsYXlJc29sYXRl
ZFNjaGVtZXM7CiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiB9CiAKLWNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpCitjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdp
c3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAg
ICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8
U3RyaW5nPiB7CkBAIC0xNTAsMTQgKzE0OSwxNCBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVp
bHRpblNlY3VyZVNjaGVtZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1zdGF0aWMgVVJM
U2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJl
U2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBB
U1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgYXV0byBzZWN1
cmVTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGJ1aWx0aW5TZWN1cmVTY2hl
bWVzKTsKICAgICByZXR1cm4gc2VjdXJlU2NoZW1lczsKIH0KIAotY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQorc3RhdGljIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVT
X0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxv
Y2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4gewpAQCAtMTcwLDcgKzE2OSw3IEBAIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKICAgICByZXR1cm4g
c2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3Jp
Z2lucygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkg
V1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hl
bWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBhdXRvIHNjaGVtZXNXaXRoVW5p
cXVlT3JpZ2lucyA9IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChidWlsdGluU2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zKTsKQEAgLTE5OCwxNCArMTk3LDE0IEBAIHN0YXRpYyBVUkxTY2hlbWVz
TWFwJiBzY2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGF4YXRpb24oKQogICAgIHJldHVybiBz
Y2hlbWVzOwogfQogCi1jb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0U2NoZW1lcygpCitjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJl
Z2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsK
ICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3Rv
cjxTdHJpbmc+IHsgImJsb2IiX3MgfSk7CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKLXN0YXRp
YyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQorc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpIFdU
Rl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoIWlzSW5O
ZXR3b3JrUHJvY2VzcygpKTsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgp
KTsKQEAgLTIyNSwyMCArMjI0LDIwIEBAIHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1l
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNj
aGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9j
ayB9OwogICAgIGxvY2FsVVJMU2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCiB2b2lkIExlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNMb2NhbChjb25zdCBT
dHJpbmcmIHNjaGVtZSkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGlm
IChidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbG9jYWxVUkxTY2hlbWVzKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKLXN0YXRp
YyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKCkKK3N0YXRp
YyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKCkgV1RGX1JF
UVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdp
c3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0
cmluZz4+IHNldDsKQEAgLTI0NywxMyArMjQ2LDEzIEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4m
IHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVyKCkKIAogdm9pZCBMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBzY2hl
bWVzSGFuZGxlZEJ5U2NoZW1lSGFuZGxlcigpLmFkZChzY2hlbWUpOwogfQogCiBib29sIExlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVJc0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoU3RyaW5nVmll
dyBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4g
c2NoZW1lc0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIoKS5jb250YWlucyhzY2hlbWUudG9TdHJpbmco
KSk7CiB9CiAKQEAgLTI3OSwxNCArMjc4LDE0IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JT
RW5hYmxlZFNjaGVtZXMoKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1zdGF0aWMgVVJMU2No
ZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpCitzdGF0aWMg
VVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpIFdU
Rl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1l
UmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2No
ZW1lc01hcD4gc2NoZW1lczsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNj
aGVtZXNNYXAmIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01h
cCYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVn
aXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwpAQCAtMzA1
LDcgKzMwNCw3IEBAIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2No
ZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVt
ZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9
OwogICAgIHJldHVybiBsb2NhbFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBA
IC0zMTQsNyArMzEzLDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxT
Y2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlmIChzY2hlbWUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1l
UmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07
CiAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkuYWRkKHNjaGVtZSk7CiB9CiAKQEAgLTMy
Myw3ICszMjIsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihz
Y2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxv
Y2sgfTsKICAgICByZXR1cm4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkuY29udGFpbnMoc2No
ZW1lKTsKIH0KIApAQCAtMzMyLDcgKzMzMSw3IEBAIHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6
OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlCiAg
ICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hl
bWVSZWdpc3RyeUxvY2sgfTsKICAgICBkaXNwbGF5SXNvbGF0ZWRVUkxTY2hlbWVzKCkuYWRkKHNj
aGVtZSk7CiB9CiAKQEAgLTM0MSw3ICszNDAsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYgcwog
ICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFVSTFNj
aGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC0zNTAsNyArMzQ5LDcgQEAgdm9pZCBM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHNlY3VyZVNjaGVtZXMoKS5hZGQo
c2NoZW1lKTsKIH0KIApAQCAtMzU5LDcgKzM1OCw3IEBAIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAg
ICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9j
a2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2VjdXJlU2NoZW1lcygpLmNvbnRh
aW5zKHNjaGVtZSk7CiB9CiAKQEAgLTM5Nyw3ICszOTYsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmIHNjaGVtZSkK
ICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBjYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC00MDcsNyArNDA2LDcg
QEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZD
YW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2MKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGNhbkRp
c3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCkBAIC00NjAs
NyArNDU5LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb24KICAgICBpZiAoc2NoZW1lLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJl
Z2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9Owog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5hZGQoc2NoZW1lKTsK
IH0KIApAQCAtNDY5LDcgKzQ2OCw3IEBAIHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlbW92
ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvCiAgICAgaWYg
KHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdp
c3RyeUxvY2sgfTsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCku
cmVtb3ZlKHNjaGVtZSk7CiB9CiAKQEAgLTQ3OCw3ICs0NzcsNyBAQCBib29sIExlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3Qg
U3RyaW5nJgogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgcmV0dXJuIENvbnRlbnRTZWN1
cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC00
OTksNyArNDk4LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3RyaW5nJiBzY2gKICAgICBpZiAoc2NoZW1lLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVt
ZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9
OwogICAgIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCkBAIC01
MDgsNyArNTA3LDcgQEAgYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9u
Q2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUKICAgICBpZiAoc2NoZW1lLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5
TG9jayB9OwogICAgIHJldHVybiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMoKS5jb250YWlucyhz
Y2hlbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvRkZURnJhbWVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZG
VEZyYW1lTWFjLmNwcAppbmRleCA4MWE4YmVkNmJmY2Y3YTRiYmIxYzgwMzg1NmQ2N2RlMWExYjQx
NTBiLi5lYTRkZWQyNjQxZjU0NjU0MTIzOWFlNzVmZmE2YWIzMDc2OTdmNzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAKICNpbmNsdWRlICJGRlRGcmFtZS5oIgogCiAjaW5jbHVkZSAiVmVjdG9yTWF0
aC5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCkBAIC00Niw5ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0ZXhwciB1bnNp
Z25lZCBrTWluRkZUUG93MlNpemUgPSAyOwogY29uc3RleHByIHVuc2lnbmVkIGtNYXhGRlRQb3cy
U2l6ZSA9IDI0OwogCi1zdGF0aWMgTG9jayBmZnRTZXR1cHNMb2NrOworc3RhdGljIENoZWNrZWRM
b2NrIGZmdFNldHVwc0xvY2s7CiAKLXN0YXRpYyBWZWN0b3I8RkZUU2V0dXA+JiBmZnRTZXR1cHMo
KQorc3RhdGljIFZlY3RvcjxGRlRTZXR1cD4mIGZmdFNldHVwcygpIFdURl9SRVFVSVJFU19MT0NL
KGZmdFNldHVwc0xvY2spCiB7CiAgICAgQVNTRVJUKGZmdFNldHVwc0xvY2suaXNIZWxkKCkpOwog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8RkZUU2V0dXA+PiBmZnRTZXR1cHMoa01h
eEZGVFBvdzJTaXplLCBudWxscHRyKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBGRlRTZXR1cCBGRlRG
cmFtZTo6ZmZ0U2V0dXBGb3JTaXplKHVuc2lnbmVkIGZmdFNpemUpCiAgICAgYXV0byBwb3cyc2l6
ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obG9nMihmZnRTaXplKSk7CiAgICAgQVNTRVJUKHBvdzJz
aXplIDwga01heEZGVFBvdzJTaXplKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmZ0
U2V0dXBzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGZmdFNldHVwc0xvY2sgfTsKICAgICBh
dXRvJiBmZnRTZXR1cCA9IGZmdFNldHVwcygpLmF0KHBvdzJzaXplKTsKICAgICBpZiAoIWZmdFNl
dHVwKQogICAgICAgICBmZnRTZXR1cCA9IHZEU1BfY3JlYXRlX2ZmdHNldHVwKHBvdzJzaXplLCBG
RlRfUkFESVgyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAppbmRleCAxZDBiZTgzNDZmZmIyNGFjNzNhYzRlOTJjMWFhMWMzNGU1Y2U2NDg5
Li44YTAzNzA2OThjZGIwOWUxNzRiYzJkM2UxMzIzZDg3MzRmOTQyZDU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2
YXRlLmgiCkBAIC0yMDMsOSArMjA0LDkgQEAgc3RhdGljIE1lZGlhUGxheWVyQ2xpZW50JiBudWxs
TWVkaWFQbGF5ZXJDbGllbnQoKQogCiBzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5PiYmKTsKIAotc3RhdGljIExvY2sgbWVkaWFFbmdp
bmVWZWN0b3JMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIG1lZGlhRW5naW5lVmVjdG9yTG9jazsK
IAotc3RhdGljIGJvb2wmIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKQorc3RhdGljIGJvb2wmIGhh
dmVNZWRpYUVuZ2luZXNWZWN0b3IoKSBXVEZfUkVRVUlSRVNfTE9DSyhtZWRpYUVuZ2luZVZlY3Rv
ckxvY2spCiB7CiAgICAgc3RhdGljIGJvb2wgaGF2ZVZlY3RvcjsKICAgICByZXR1cm4gaGF2ZVZl
Y3RvcjsKQEAgLTIyOCw3ICsyMjksNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6
c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFjayhSZWdpc3RlclJlbW90ZVBsYQogICAgIHJl
Z2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9IFdURk1vdmUoY2FsbGJhY2spOwogfQogCi1z
dGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpCitzdGF0aWMgdm9pZCBidWlsZE1l
ZGlhRW5naW5lc1ZlY3RvcigpIFdURl9SRVFVSVJFU19MT0NLKG1lZGlhRW5naW5lVmVjdG9yTG9j
aykKIHsKICAgICBBU1NFUlQobWVkaWFFbmdpbmVWZWN0b3JMb2NrLmlzTG9ja2VkKCkpOwogCkBA
IC0yODIsNyArMjgzLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQog
c3RhdGljIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4m
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1lZGlhRW5naW5lVmVjdG9yTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtZWRpYUVuZ2luZVZlY3RvckxvY2sgfTsKICAgICAgICAgaWYgKCFoYXZlTWVkaWFFbmdpbmVz
VmVjdG9yKCkpCiAgICAgICAgICAgICBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpOwogICAgIH0K
QEAgLTE1MDEsNyArMTUwMiw3IEBAIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBN
ZWRpYVBsYXllcjo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKIAogdm9pZCBNZWRpYVBsYXllcjo6
cmVzZXRNZWRpYUVuZ2luZXMoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobWVkaWFF
bmdpbmVWZWN0b3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbWVkaWFFbmdpbmVWZWN0b3JM
b2NrIH07CiAKICAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuY2xlYXIo
KTsKICAgICBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE1ZDJmNzM2YzJlZDgzMGVkYzBkM2RiYTcz
ZGJiYTgwM2YxZTFlMjMuLmJlODdhZDJkM2RkZGVlNjU2ZWQ4MmE0ZDQyZTZlYWM0Y2RkY2IyODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMjksMTIgKzI5
LDE0IEBACiAjaWYgVVNFKFFVSUNLX0xPT0spCiAKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5o
IgotI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9OU0ZpbGVNYW5hZ2VyU1BJLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9y
dCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29m
dExpbmsuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBRTFByZXZpZXdQ
cm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKQEAgLTQ1LDkgKzQ3LDkgQEAgTlNTZXQgKlFMUHJl
dmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpCiAgICAgcmV0dXJuIHNldC5nZXQoKS5nZXQo
KTsKIH0KIAotc3RhdGljIExvY2sgcWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2s7Citz
dGF0aWMgQ2hlY2tlZExvY2sgcWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2s7CiAKLXN0
YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkK
K3N0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5
KCkgV1RGX1JFUVVJUkVTX0xPQ0socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2spCiB7
CiAgICAgc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAgIHJldHVybiBkaWN0aW9uYXJ5OwpAQCAtNjEs
NyArNjMsNyBAQCBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqUUxDb250ZW50RGljdGlvbmFy
eSgpCiAKIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29udmVydGVyRm9yVVJMKE5TVVJMICp1cmwpCiB7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHFsUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlM
b2NrIH07CiAgICAgW1FMUHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnkoKSByZW1vdmVPYmplY3RG
b3JLZXk6dXJsXTsKICAgICBbUUxDb250ZW50RGljdGlvbmFyeSgpIHJlbW92ZU9iamVjdEZvcktl
eTp1cmxdOwogfQpAQCAtNzAsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBhZGRRTFByZXZpZXdDb252
ZXJ0ZXJXaXRoRmlsZUZvclVSTChOU1VSTCAqdXJsLCBpZCBjb252ZXJ0ZXIsIE5TU3RyaQogewog
ICAgIEFTU0VSVCh1cmwpOwogICAgIEFTU0VSVChjb252ZXJ0ZXIpOwotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2socWxQcmV2aWV3Q29udmVydGVyRGljdGlvbmFyeUxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBxbFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jayB9OwogICAgIFtRTFBy
ZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgc2V0T2JqZWN0OmNvbnZlcnRlciBmb3JLZXk6dXJs
XTsKICAgICBbUUxDb250ZW50RGljdGlvbmFyeSgpIHNldE9iamVjdDooZmlsZU5hbWUgPyBmaWxl
TmFtZSA6IEAiIikgZm9yS2V5OnVybF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQppbmRl
eCBiYTBlMThlOTI5OGUwYzMxMmYzMWE3NjA5MzkxYmQ1NDIxOTQ2MjM2Li43MDcyMmE5NjljNjli
N2JmNzFlMDM3NDhhNDMzYmZmMzlmNzVkNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0K
QEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5o
IgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4KICNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IApAQCAtODQsMTYgKzg1LDE2IEBAIHZvaWQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50
OjpoeXN0ZXJlc2lzVXBkYXRlZChQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0CiAKIH0KIAotc3Rh
dGljIExvY2sgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrOworc3RhdGlj
IENoZWNrZWRMb2NrIHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jazsKIAot
c3RhdGljIE5TVUludGVnZXIgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXI7Citz
dGF0aWMgTlNVSW50ZWdlciB0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllciBXVEZf
R1VBUkRFRF9CWV9MT0NLKHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jayk7
CiAKLXN0YXRpYyB2b2lkIHNldFRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyKE5T
VUludGVnZXIgaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIHNldFRyYW5zYWN0aW9uQmFja2dyb3Vu
ZFRhc2tJZGVudGlmaWVyKE5TVUludGVnZXIgaWRlbnRpZmllcikgV1RGX1JFUVVJUkVTX0xPQ0so
dHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKQogewogICAgIHRyYW5zYWN0
aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKIH0KIAotc3RhdGljIE5T
VUludGVnZXIgZ2V0VHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKQorc3RhdGlj
IE5TVUludGVnZXIgZ2V0VHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXIoKSBXVEZf
UkVRVUlSRVNfTE9DSyh0cmFuc2FjdGlvbkJhY2tncm91bmRUYXNrSWRlbnRpZmllckxvY2spCiB7
CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBwcmVkOwogICAgIGRpc3BhdGNoX29uY2UoJnBy
ZWQsIF4gewpAQCAtMTA3LDcgKzEwOCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJEYXRhYmFzZVRy
YW5zYWN0aW9uQmFja2dyb3VuZFRhc2tDb250cm9sbGVyCiAKICsgKHZvaWQpc3RhcnRCYWNrZ3Jv
dW5kVGFzawogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25CYWNrZ3Jv
dW5kVGFza0lkZW50aWZpZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25C
YWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrIH07CiAKICAgICAvLyBJZiB0aGVyZSdzIGFscmVh
ZHkgYW4gZXhpc3RpbmcgYmFja2dyb3VuZCB0YXNrIGdvaW5nIG9uLCB0aGVyZSdzIG5vIG5lZWQg
dG8gc3RhcnQgYSBuZXcgb25lLgogICAgIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciAqYmFj
a2dyb3VuZFRhc2tDb250cm9sbGVyID0gW1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlciBzaGFy
ZWRDb250cm9sbGVyXTsKQEAgLTEyMiw3ICsxMjMsNyBAQCArICh2b2lkKXN0YXJ0QmFja2dyb3Vu
ZFRhc2sKIAogKyAodm9pZCllbmRCYWNrZ3JvdW5kVGFzawogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrIH07
CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHN0YXJ0IHRo
ZSBiYWNrZ3JvdW5kIHRhc2sgd2hlbiB0aGUgZmlyc3QgdHJhbnNhY3Rpb24gYmVnYW4uCiAgICAg
Ly8gRG9uJ3QgdHJ5IHRvIGVuZCB0aGUgdGFzayBpbiB0aGF0IGNhc2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KaW5kZXggNmQ1
ZDVjNTdlZTBiY2E1YzYxMGQyZGIwZTgyYzRlNmY0OTFhZmY5ZS4uNjZlMjdlYTUyMjRhZjhkYjE5
YzJhOWYxNjlhOTFjMWMzZDgzOGJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKIAotI2ltcG9ydCA8d3RmL0xv
Y2suaD4KKyNpbXBvcnQgPHd0Zi9DaGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KICNpbXBvcnQgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2ltcG9ydCA8d3RmL1RpbnlM
UlVDYWNoZS5oPgpAQCAtMTEyLDcgKzExMiw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlS2V5Rm9yU3RvcmFnZShjb25zdCBTdHJp
bmcmIGtleSkgeyByZXR1cm4ga2V5Lmlzb2xhdGVkQ29weSgpOyB9CiB9OwogCi1zdGF0aWMgVGlu
eUxSVUNhY2hlPFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1F
VHlwZUNhY2hlUG9saWN5PiYgY2FjaGVVVElGcm9tTWltZVR5cGUoKQorc3RhdGljIENoZWNrZWRM
b2NrIGNhY2hlVVRJRnJvbU1JTUVUeXBlTG9jazsKK3N0YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5n
LCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+
JiBjYWNoZVVUSUZyb21NSU1FVHlwZSgpIFdURl9SRVFVSVJFU19MT0NLKGNhY2hlVVRJRnJvbU1J
TUVUeXBlTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPFN0
cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9s
aWN5Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlOwpAQCAtMTIwLDkgKzEyMSw4IEBAIHN0YXRp
YyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJv
bU1JTUVUeXBlQ2FjaGVQb2xpCiAKIFN0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIHsKLSAgICBzdGF0aWMgTG9jayBsb2NrOwotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobG9jayk7Ci0gICAgcmV0dXJuIGNhY2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0KG1p
bWVUeXBlKS5nZXQoKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVVVElGcm9tTUlNRVR5cGVM
b2NrIH07CisgICAgcmV0dXJuIGNhY2hlVVRJRnJvbU1JTUVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5n
ZXQoKTsKIH0KIAogYm9vbCBpc0RlY2xhcmVkVVRJKGNvbnN0IFN0cmluZyYgVVRJKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggMzRkYWY0
ZWQyOWVmODMyZjNhZTA1MmNiMmU1NDUzZTI1ZDIyOGUyOS4uZWE0NTMxMTBhMTgzOTczN2Q5NzVm
YjM1ZTFlODIwOWM4ZWEyMDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8bXV0ZXg+CiAj
aW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHRocmVhZD4KKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC03MSwxMiArNzIs
MTIgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNRTGl0ZUlmTmVjZXNzYXJ5KCkKICAgICB9KTsK
IH0KIAotc3RhdGljIGJvb2wgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4gPSBmYWxzZTsKLXN0
YXRpYyBMb2NrIGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXg7CitzdGF0aWMgQ2hlY2tl
ZExvY2sgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW5Mb2NrOworc3RhdGljIGJvb2wgaXNEYXRh
YmFzZU9wZW5pbmdGb3JiaWRkZW4gV1RGX0dVQVJERURfQllfTE9DSyhpc0RhdGFiYXNlT3Blbmlu
Z0ZvcmJpZGRlbkxvY2spIHsgZmFsc2UgfTsKIAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNE
YXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4oYm9vbCBpc0ZvcmJpZGRlbikKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbkxvY2sgfTsKICAgICBpc0Rh
dGFiYXNlT3BlbmluZ0ZvcmJpZGRlbiA9IGlzRm9yYmlkZGVuOwogfQogCkBAIC05NCw3ICs5NSw3
IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Bl
bk1vZGUgb3Blbk1vZGUpCiAgICAgY2xvc2UoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbk11dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTG9jayB9OwogICAgICAg
ICBpZiAoaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4pIHsKICAgICAgICAgICAgIG1fb3BlbkVy
cm9yTWVzc2FnZSA9ICJvcGVuaW5nIGRhdGFiYXNlIGlzIGZvcmJpZGRlbiI7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDZhMjhlMTliZTk0NjkzMDM1YTU2YjY0MDk0
ZTQxNTdlYzk1YTdkNzAuLjNmOGUzYzk3ZWRlODBlNDI5MTU4NDRlN2ZiY2E1YTYyZjE0OWQ3NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuY3BwCkBAIC0yNywyNiArMjcsMjUgQEAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCIKIAogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFt
ZXNwYWNlIFNRTGl0ZURhdGFiYXNlVHJhY2tlciB7CiAKLXN0YXRpYyBTUUxpdGVEYXRhYmFzZVRy
YWNrZXJDbGllbnQqIHNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50ID0gbnVsbHB0
cjsKLXN0YXRpYyB1bnNpZ25lZCBzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIgPSAwOwot
Ci1zdGF0aWMgTG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKK3N0YXRpYyBDaGVja2Vk
TG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrOworc3RhdGljIFNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudCogc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgV1RGX0dVQVJE
RURfQllfTE9DSyh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IG51bGxwdHIgfTsKK3N0YXRp
YyB1bnNpZ25lZCBzX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50ZXIgV1RGX0dVQVJERURfQllf
TE9DSyh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrKSB7IDAgfTsKIAogdm9pZCBzZXRDbGllbnQo
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsKICAgICBzX3N0YXRpY1NRTGl0ZURhdGFi
YXNlVHJhY2tlckNsaWVudCA9IGNsaWVudDsKIH0KIAogdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlv
bkluUHJvZ3Jlc3NDb3VudCgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2Fj
dGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0xvY2sgfTsKICAgICBpZiAoIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTU3LDcgKzU2LDcgQEAgdm9pZCBpbmNyZW1lbnRU
cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpCiAKIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25J
blByb2dyZXNzQ291bnQoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rp
b25JblByb2dyZXNzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyB0cmFuc2FjdGlvbkluUHJv
Z3Jlc3NMb2NrIH07CiAgICAgaWYgKCFzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dCkKICAgICAgICAgcmV0dXJuOwogCkBAIC03MCw3ICs2OSw3IEBAIHZvaWQgZGVjcmVtZW50VHJh
bnNhY3Rpb25JblByb2dyZXNzQ291bnQoKQogCiBib29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVz
cygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsK
ICAgICByZXR1cm4gIXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50IHx8IHNfdHJh
bnNhY3Rpb25JblByb2dyZXNzQ291bnRlciA+IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggMDZkZmY2
Y2Q5YjIwN2M1NmY4ZDcwMWI3ODgyZGNjZWJmMmU2Yjg1Yy4uZTFiYzUzNmNjNmEwNDg1Nzc4NjJj
ZmQxYzMxNzRjZDY3NDcxNmY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNs
dWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTkxLDEwICs5
MSwxMCBAQCBzdHJ1Y3QgVGV4dEVuY29kaW5nTmFtZUhhc2ggewogdXNpbmcgVGV4dEVuY29kaW5n
TmFtZU1hcCA9IEhhc2hNYXA8Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBUZXh0RW5jb2RpbmdO
YW1lSGFzaD47CiB1c2luZyBUZXh0Q29kZWNNYXAgPSBIYXNoTWFwPGNvbnN0IGNoYXIqLCBOZXdU
ZXh0Q29kZWNGdW5jdGlvbj47CiAKLXN0YXRpYyBMb2NrIGVuY29kaW5nUmVnaXN0cnlNdXRleDsK
K3N0YXRpYyBDaGVja2VkTG9jayBlbmNvZGluZ1JlZ2lzdHJ5TG9jazsKIAotc3RhdGljIFRleHRF
bmNvZGluZ05hbWVNYXAqIHRleHRFbmNvZGluZ05hbWVNYXA7Ci1zdGF0aWMgVGV4dENvZGVjTWFw
KiB0ZXh0Q29kZWNNYXA7CitzdGF0aWMgVGV4dEVuY29kaW5nTmFtZU1hcCogdGV4dEVuY29kaW5n
TmFtZU1hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKTsKK3N0YXRp
YyBUZXh0Q29kZWNNYXAqIHRleHRDb2RlY01hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kaW5n
UmVnaXN0cnlMb2NrKTsKIHN0YXRpYyBib29sIGRpZEV4dGVuZFRleHRDb2RlY01hcHM7CiBzdGF0
aWMgSGFzaFNldDxjb25zdCBjaGFyKj4qIGphcGFuZXNlRW5jb2RpbmdzOwogc3RhdGljIEhhc2hT
ZXQ8Y29uc3QgY2hhcio+KiBub25CYWNrc2xhc2hFbmNvZGluZ3M7CkBAIC0xMTUsNyArMTE1LDcg
QEAgc3RhdGljIGJvb2wgaXNVbmRlc2lyZWRBbGlhcyhjb25zdCBjaGFyKiBhbGlhcykKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcChj
b25zdCBjaGFyKiBhbGlhcywgY29uc3QgY2hhciogbmFtZSkKK3N0YXRpYyB2b2lkIGFkZFRvVGV4
dEVuY29kaW5nTmFtZU1hcChjb25zdCBjaGFyKiBhbGlhcywgY29uc3QgY2hhciogbmFtZSkgV1RG
X1JFUVVJUkVTX0xPQ0soZW5jb2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHN0cmxl
bihhbGlhcykgPD0gbWF4RW5jb2RpbmdOYW1lTGVuZ3RoKTsKICAgICBpZiAoaXNVbmRlc2lyZWRB
bGlhcyhhbGlhcykpCkBAIC0xMzAsMTQgKzEzMCwxNCBAQCBzdGF0aWMgdm9pZCBhZGRUb1RleHRF
bmNvZGluZ05hbWVNYXAoY29uc3QgY2hhciogYWxpYXMsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAg
dGV4dEVuY29kaW5nTmFtZU1hcC0+YWRkKGFsaWFzLCBhdG9tTmFtZSk7CiB9CiAKLXN0YXRpYyB2
b2lkIGFkZFRvVGV4dENvZGVjTWFwKGNvbnN0IGNoYXIqIG5hbWUsIE5ld1RleHRDb2RlY0Z1bmN0
aW9uJiYgZnVuY3Rpb24pCitzdGF0aWMgdm9pZCBhZGRUb1RleHRDb2RlY01hcChjb25zdCBjaGFy
KiBuYW1lLCBOZXdUZXh0Q29kZWNGdW5jdGlvbiYmIGZ1bmN0aW9uKSBXVEZfUkVRVUlSRVNfTE9D
SyhlbmNvZGluZ1JlZ2lzdHJ5TG9jaykKIHsKICAgICBjb25zdCBjaGFyKiBhdG9tTmFtZSA9IHRl
eHRFbmNvZGluZ05hbWVNYXAtPmdldChuYW1lKTsKICAgICBBU1NFUlQoYXRvbU5hbWUpOwogICAg
IHRleHRDb2RlY01hcC0+YWRkKGF0b21OYW1lLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXN0
YXRpYyB2b2lkIHBydW5lQmxvY2tsaXN0ZWRDb2RlY3MoKQorc3RhdGljIHZvaWQgcHJ1bmVCbG9j
a2xpc3RlZENvZGVjcygpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQog
ewogICAgIGZvciAoYXV0byYgbmFtZUZyb21CbG9ja2xpc3QgOiB0ZXh0RW5jb2RpbmdOYW1lQmxv
Y2tsaXN0KSB7CiAgICAgICAgIGF1dG8qIGF0b21OYW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+
Z2V0KG5hbWVGcm9tQmxvY2tsaXN0KTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCBw
cnVuZUJsb2NrbGlzdGVkQ29kZWNzKCkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkQmFz
ZVRleHRDb2RlY01hcHMoY29uc3QgQWJzdHJhY3RMb2NrZXImKQorc3RhdGljIHZvaWQgYnVpbGRC
YXNlVGV4dENvZGVjTWFwcygpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2Nr
KQogewogICAgIEFTU0VSVCghdGV4dENvZGVjTWFwKTsKICAgICBBU1NFUlQoIXRleHRFbmNvZGlu
Z05hbWVNYXApOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRD
b2RlY01hcHMoY29uc3QgQWJzdHJhY3RMb2NrZXImKQogICAgIFRleHRDb2RlY1VzZXJEZWZpbmVk
OjpyZWdpc3RlckNvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFk
ZEVuY29kaW5nTmFtZShIYXNoU2V0PGNvbnN0IGNoYXIqPiogc2V0LCBjb25zdCBjaGFyKiBuYW1l
KQorc3RhdGljIHZvaWQgYWRkRW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXQs
IGNvbnN0IGNoYXIqIG5hbWUpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2Nr
KQogewogICAgIC8vIFdlIG11c3Qgbm90IHVzZSBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFt
ZSgpIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gaXQuCiAgICAgY29uc3QgY2hh
ciogYXRvbU5hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5nZXQobmFtZSk7CkBAIC0xODYsNyAr
MTg2LDcgQEAgc3RhdGljIHZvaWQgYWRkRW5jb2RpbmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+
KiBzZXQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIHNldC0+YWRkKGF0b21OYW1lKTsKIH0K
IAotc3RhdGljIHZvaWQgYnVpbGRRdWlya3NTZXRzKCkKK3N0YXRpYyB2b2lkIGJ1aWxkUXVpcmtz
U2V0cygpIFdURl9SRVFVSVJFU19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIC8v
IEZJWE1FOiBIYXZpbmcgaXNKYXBhbmVzZUVuY29kaW5nKCkgYW5kIHNob3VsZFNob3dCYWNrc2xh
c2hBc0N1cnJlbmN5U3ltYm9sSW4oKQogICAgIC8vIGFuZCBpbml0aWFsaXppbmcgdGhlIHNldHMg
Zm9yIHRoZW0gaW4gVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGxvb2sgc3RyYW5nZS4KQEAgLTIz
MSw3ICsyMzEsNyBAQCBib29sIHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sSW4o
Y29uc3QgY2hhciogY2Fub25pY2FsRW5jb2RpbmdOYW1lKQogICAgIHJldHVybiBjYW5vbmljYWxF
bmNvZGluZ05hbWUgJiYgbm9uQmFja3NsYXNoRW5jb2RpbmdzICYmIG5vbkJhY2tzbGFzaEVuY29k
aW5ncy0+Y29udGFpbnMoY2Fub25pY2FsRW5jb2RpbmdOYW1lKTsKIH0KIAotc3RhdGljIHZvaWQg
ZXh0ZW5kVGV4dENvZGVjTWFwcygpCitzdGF0aWMgdm9pZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkg
V1RGX1JFUVVJUkVTX0xPQ0soZW5jb2RpbmdSZWdpc3RyeUxvY2spCiB7CiAgICAgVGV4dENvZGVj
UmVwbGFjZW1lbnQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhhZGRUb1RleHRFbmNvZGluZ05hbWVN
YXApOwogICAgIFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhhZGRUb1RleHRD
b2RlY01hcCk7CkBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVj
TWFwcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlYyhjb25zdCBU
ZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZW5j
b2RpbmdSZWdpc3RyeU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZW5jb2RpbmdSZWdpc3Ry
eUxvY2sgfTsKIAogICAgIEFTU0VSVCh0ZXh0Q29kZWNNYXApOwogICAgIGF1dG8gcmVzdWx0ID0g
dGV4dENvZGVjTWFwLT5maW5kKGVuY29kaW5nLm5hbWUoKSk7CkBAIC0yNjQsMTAgKzI2NCwxMCBA
QCBjb25zdCBjaGFyKiBhdG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBu
YW1lKQogICAgIGlmICghbmFtZSB8fCAhbmFtZVswXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGVuY29kaW5nUmVnaXN0cnlNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGVuY29kaW5nUmVnaXN0cnlMb2NrIH07CiAKICAgICBpZiAoIXRl
eHRFbmNvZGluZ05hbWVNYXApCi0gICAgICAgIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMobG9ja2Vy
KTsKKyAgICAgICAgYnVpbGRCYXNlVGV4dENvZGVjTWFwcygpOwogCiAgICAgaWYgKGNvbnN0IGNo
YXIqIGF0b21OYW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWUpKQogICAgICAgICBy
ZXR1cm4gYXRvbU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCmluZGV4IGUyNmQ0N2EzODc0Mjc5ODZiMDI2ZmZkYzBmMmM1NTBiZTc1N2ZmMWYuLjBk
NjE0OTFkZDFhYWUwZTNiNDc3N2EyZTk0ZWU2NWE2MjQ4YTAwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01NywxNiArNTcsMTUgQEAKICNp
bmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3Rh
Y2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCi1zdGF0aWMgTG9jayBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9j
azsKLXN0YXRpYyBIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYgYWxs
V29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycyhMb2NrSG9sZGVyJiBob2xkZXIpCitzdGF0aWMg
Q2hlY2tlZExvY2sgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2s7CitzdGF0aWMg
SGFzaFNldDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mIGFsbFdvcmtlckdsb2Jh
bFNjb3BlSWRlbnRpZmllcnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhhbGxXb3JrZXJHbG9iYWxTY29w
ZUlkZW50aWZpZXJzTG9jaykKIHsKLSAgICBVTlVTRURfUEFSQU0oaG9sZGVyKTsKLQogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyPj4gaWRlbnRpZmllcnM7CiAgICAgQVNTRVJUKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRp
ZmllcnNMb2NrLmlzTG9ja2VkKCkpOwogICAgIHJldHVybiBpZGVudGlmaWVyczsKQEAgLTkxLDgg
KzkwLDggQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVh
ZFR5cGUgdHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGUKICAgICAsIG1fY3JlZGVudGlhbHMocGFy
YW1zLmNyZWRlbnRpYWxzKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayk7Ci0gICAgICAgIGFsbFdvcmtl
ckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2VyKS5hZGQoY29udGV4dElkZW50aWZpZXIoKSk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJz
TG9jayB9OworICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKCkuYWRkKGNv
bnRleHRJZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIGlmIChtX3RvcE9yaWdpbi0+aGFzVW5p
dmVyc2FsQWNjZXNzKCkpCkBAIC0xMTEsOCArMTEwLDggQEAgV29ya2VyR2xvYmFsU2NvcGU6On5X
b3JrZXJHbG9iYWxTY29wZSgpCiAgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7CiAKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVu
dGlmaWVyc0xvY2spOwotICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKGxv
Y2tlcikucmVtb3ZlKGNvbnRleHRJZGVudGlmaWVyKCkpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2sgfTsKKyAgICAgICAgYWxsV29y
a2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycygpLnJlbW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsK
ICAgICB9CiAKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKQEAgLTU4Nyw4ICs1ODYsOCBA
QCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpkZWxldGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91cyBz
eW5jaHJvbm91cykKIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29y
a2VycyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrKTsKLSAgICBmb3IgKGF1dG8m
IGdsb2JhbFNjb3BlSWRlbnRpZmllciA6IGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMo
bG9ja2VyKSkgeworICAgIExvY2tlciBsb2NrZXIgeyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50
aWZpZXJzTG9jayB9OworICAgIGZvciAoYXV0byYgZ2xvYmFsU2NvcGVJZGVudGlmaWVyIDogYWxs
V29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycygpKSB7CiAgICAgICAgIHBvc3RUYXNrVG8oZ2xv
YmFsU2NvcGVJZGVudGlmaWVyLCBbc3luY2hyb25vdXNdKGF1dG8mIGNvbnRleHQpIHsKICAgICAg
ICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5yZWxlYXNlTWVtb3J5
KHN5bmNocm9ub3VzKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKaW5kZXggMDA3NWE0ZTUwNDhkYTJiOTZiZmYwMmNh
OGM2YjIzMzZlZmE4MjIyNi4uYThlYTk5YmM1ZmZlZDFhM2NjZDg2MjhlZjljN2EwNTE2ZmFiYmEy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFk
LmNwcApAQCAtNDAsMTAgKzQwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9jayYg
V29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpCitDaGVj
a2VkTG9jayBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnNfd29ya2VyT3JXb3JrbGV0VGhyZWFkc0xv
Y2s7CisKK0NoZWNrZWRMb2NrJiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xl
dFRocmVhZHNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0
ZXg7CisgICAgcmV0dXJuIHNfd29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2s7CiB9CiAKIEhhc2hT
ZXQ8V29ya2VyT3JXb3JrbGV0VGhyZWFkKj4mIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2Vy
T3JXb3JrbGV0VGhyZWFkcygpCkBAIC01NiwxMyArNTcsMTMgQEAgSGFzaFNldDxXb3JrZXJPcldv
cmtsZXRUaHJlYWQqPiYgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJl
YWRzKCkKIFdvcmtlck9yV29ya2xldFRocmVhZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7
CisgICAgTG9ja2VyIGxvY2tlciB7IHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAg
ICB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkuYWRkKHRoaXMpOwogfQogCiBXb3JrZXJPcldvcmts
ZXRUaHJlYWQ6On5Xb3JrZXJPcldvcmtsZXRUaHJlYWQoKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICBBU1NFUlQod29ya2VyT3JX
b3JrbGV0VGhyZWFkcygpLmNvbnRhaW5zKHRoaXMpKTsKICAgICB3b3JrZXJPcldvcmtsZXRUaHJl
YWRzKCkucmVtb3ZlKHRoaXMpOwogfQpAQCAtMjY5LDcgKzI3MCw3IEBAIHZvaWQgV29ya2VyT3JX
b3JrbGV0VGhyZWFkOjpyZXN1bWUoKQogCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6cmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCkKIHsKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHdvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkpOworICAgIExvY2tlciBs
b2NrZXIgeyB3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIH07CiAgICAgZm9yIChhdXRvKiB3
b3JrZXJPcldvcmtsZXRUaHJlYWQgOiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkpIHsKICAgICAg
ICAgd29ya2VyT3JXb3JrbGV0VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soW10gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJl
ZU1lbW9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhy
ZWFkLmgKaW5kZXggNGYyMWFlYjQ1MGM1ZjU1YzgyZjI5ZTM3NGQwZTNjNjY4Njc3Yzk4Yy4uOTcz
ZmM3MTA0YzYzZmQxYTNkN2U1OGYwNTYyZjEyYjM2MWE3Y2I1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCkBAIC0yNiw5ICsyNiw5IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CiAKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBzdGF0aWMgSGFzaFNl
dDxXb3JrZXJPcldvcmtsZXRUaHJlYWQqPiYgd29ya2VyT3JXb3JrbGV0VGhyZWFkcygpOwotICAg
IHN0YXRpYyBMb2NrJiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpOworICAgIHN0YXRpYyBI
YXNoU2V0PFdvcmtlck9yV29ya2xldFRocmVhZCo+JiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkg
V1RGX1JFUVVJUkVTX0xPQ0sod29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgc3Rh
dGljIENoZWNrZWRMb2NrJiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIFdURl9SRVRVUk5T
X0xPQ0soc193b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jayk7CiAgICAgc3RhdGljIHZvaWQgcmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKIHByb3RlY3RlZDoKQEAg
LTgyLDYgKzgyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGVTY3JpcHRJ
Zk5lY2Vzc2FyeShTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkV2FpdEZvcldl
Ykluc3BlY3Rvck9uU3RhcnR1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBzdGF0
aWMgQ2hlY2tlZExvY2sgc193b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jazsKKwogICAgIFN0cmlu
ZyBtX2lkZW50aWZpZXI7CiAgICAgTG9jayBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVM
b2NrOwogICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gbV9nbG9iYWxTY29w
ZTsK
</data>
<flag name="commit-queue"
          id="450454"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429311</attachid>
            <date>2021-05-21 10:51:03 -0700</date>
            <delta_ts>2021-05-21 13:19:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226040-20210521105102.patch</filename>
            <type>text/plain</type>
            <size>113460</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIwMjFhZTU5YzdkMzE3MmQ0OTYzOWEw
OTZmYTU0NGY0NDZhODY1YmYuLjFkMGNkNzM5NjI5NGM1YmFhNDE4MzhiM2RiMzM0YTZiMmNjYmIy
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGggQ2hl
Y2tlZExvY2tzIGluIFdURiAvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgbW9yZSBzdGF0aWMgTG9ja3Mgd2l0aCBDaGVja2Vk
TG9ja3Mgc28gdGhhdCB3ZSBjYW4gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZldHkgQW5h
bHlzaXMuCisKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhy
ZWFkOjphbGxUaHJlYWRzTG9jayk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdURjo6VGhyZWFkOjpkaWRFeGl0KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6
CisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChXVEY6OldURl9SRVFVSVJFU19MT0NL
KToKKyAgICAgICAgKFdURjo6cmVnaXN0ZXJEZWZhdWx0UG9ydEZvclByb3RvY29sRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXVEY6OmNsZWFyRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rp
bmcpOgorICAgICAgICAoV1RGOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKToKKyAgICAgICAgKiB3
dGYvY2YvTGFuZ3VhZ2VDRi5jcHA6CisgICAgICAgIChXVEY6OldURl9SRVFVSVJFU19MT0NLKToK
KyAgICAgICAgKFdURjo6cGxhdGZvcm1MYW5ndWFnZURpZENoYW5nZSk6CisgICAgICAgIChXVEY6
OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6CisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmludmFsaWRhdGUpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdWaWV3OjphZG9wdFVuZGVybHlpbmdTdHJpbmcpOgorICAgICAgICAo
V1RGOjpTdHJpbmdWaWV3OjpzZXRVbmRlcmx5aW5nU3RyaW5nKToKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwOgorICAgICAgICAoV1RGOjpDb2xsYXRvcjo6Q29sbGF0
b3IpOgorICAgICAgICAoV1RGOjpDb2xsYXRvcjo6fkNvbGxhdG9yKToKKwogMjAyMS0wNS0yMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBDaGVja2VkTG9j
ayBtb3JlIGluIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIyOGMxOWVmOGU4ZTg5MjQ0NWZiN2VjMWU0NzEw
ZDFlMzRlNjJkYjMuLmU0ZjI5NmIxY2UzOTk5ZGZhODY2NmE3NzEzNDA3NTdkYTEyZjJlMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNzAgQEAKKzIwMjEtMDUtMjAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIG1vcmUgc3RhdGljIExvY2tzIHdpdGgg
Q2hlY2tlZExvY2tzIGluIFdURiAvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgbW9yZSBzdGF0aWMgTG9ja3Mgd2l0aCBDaGVj
a2VkTG9ja3Mgc28gdGhhdCB3ZSBjYW4gYmVuZWZpdCBmcm9tIENsYW5nIFRocmVhZCBTYWZldHkg
QW5hbHlzaXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJp
YWxpemF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVGb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VyaWFsaXphdGlvbkNvbnRleHQ6On5JREJTZXJpYWxp
emF0aW9uQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsOjpyZW1vdmVGcm9tRGF0YUNoYW5uZWxMb2NhbE1hcElmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpoYW5kbGVyRnJvbUlkZW50aWZpZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZTo6Z2V0Q2FjaGVkVmVyc2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZTo6c2V0Q2FjaGVkVmVyc2lvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6
aW5zdGFuY2VzTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6On5XZWJHUFVE
ZXZpY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQ
VVBpcGVsaW5lOjpXZWJHUFVQaXBlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQaXBl
bGluZTo6fldlYkdQVVBpcGVsaW5lKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQ
aXBlbGluZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpXZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Ojp+V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
YWxsQWN0aXZlV2ViU29ja2V0c0xvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSlNX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUpTV3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpyZW1vdmVKU1dyYXBwZXJJZlJldGFpbkNvdW50T25lKToKKyAgICAgICAgKiBjcnlw
dG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeTo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1SZWdpc3RyeTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobSk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkZXJlZiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydDo6aXNFeGlzdGluZ01lc3NhZ2VQb3J0TG9jYWxseVJlYWNoYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6bm90aWZ5TWVzc2FnZUF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQpOgorICAgICAgICAqIGRvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmNvbnRleHRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlbW92ZUZyb21Db250ZXh0c01hcCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1Rv
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp+Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06Omluc3RhbmNlc0xvY2spOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpXZWJHTFByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xQcm9ncmFtOjp+V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFByb2dyYW0uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6On5X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6Y2FudmFzRWxl
bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50Ojp3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd2xpc3RFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NB
bGxvd2xpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphbGxvd0FjY2Vz
c1RvKToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdENQ
VURhdGEpOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVj
dENQVURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGFza0Rpc3BhdGNoZXI8VGltZXI+Ojpwb3N0VGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNoYXJlZFRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGFza0Rpc3BhdGNoZXI8VGltZXI+OjpwZW5kaW5nRGlzcGF0Y2hlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6VGFza0Rpc3BhdGNoZXI8VGltZXI+OjpkaXNwYXRjaE9uZVRh
c2spOgorICAgICAgICAqIHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbGxC
dWlsdGluU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVV
UkxTY2hlbWVSZWdpc3RlcmVkQXNMb2NhbCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZUlzSGFuZGxlZEJ5
U2NoZW1lSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxT
Y2hlbWVBc0Rpc3BsYXlJc29sYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc1NlY3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVB
c0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29u
dGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lz
dHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBh
cnRpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRQYXJ0aXRpb25DYWNoZUZvclVSTFNjaGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
bWFjL0ZGVEZyYW1lTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldURl9SRVFVSVJFU19MT0NL
KToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpmZnRTZXR1cEZvclNpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldURl9SRVFVSVJFU19MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6Omluc3RhbGxlZE1lZGlhRW5n
aW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cmVzZXRNZWRpYUVuZ2luZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChXZWJDb3Jl
OjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVRTFByZXZpZXdD
b252ZXJ0ZXJGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6YWRkUUxQcmV2aWV3Q29udmVydGVy
V2l0aEZpbGVGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXJDbGllbnQubW06CisgICAgICAgIChXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAg
ICgrW1dlYkRhdGFiYXNlVHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0NvbnRyb2xsZXIgc3RhcnRC
YWNrZ3JvdW5kVGFza10pOgorICAgICAgICAoK1tXZWJEYXRhYmFzZVRyYW5zYWN0aW9uQmFja2dy
b3VuZFRhc2tDb250cm9sbGVyIGVuZEJhY2tncm91bmRUYXNrXSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JF
UVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
c2V0SXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpXVEZf
R1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6
aW5jcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6Omhhc1RyYW5zYWN0
aW9uSW5Qcm9ncmVzcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXVEZfUkVRVUlSRVNfTE9DSyk6CisgICAgICAg
IChXZWJDb3JlOjpuZXdUZXh0Q29kZWMpOgorICAgICAgICAoV2ViQ29yZTo6YXRvbUNhbm9uaWNh
bFRleHRFbmNvZGluZ05hbWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OnJlbGVhc2VNZW1vcnlJbldvcmtlcnMpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjpXb3JrZXJPcldvcmtsZXRU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjp+V29ya2Vy
T3JXb3JrbGV0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVh
ZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oOgorCiAyMDIxLTA1LTIxICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTGFzdCBmZXcgc2Vjb25k
cyBvZiAnYXVkaW8vd2VibTsgY29kZWNzPXZvcmJpcycgYXBwZW5kZWQgdG8gYSBTYW1wbGVCdWZm
ZXIgYXJlIG5vdCBwbGF5ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IGZmMTY3OTAyZmM3YzQwYTQ1
NDY0NTMwMzIxOTMxZmNhM2M3Mzk1ZDYuLjU3MGI3OGI0OWIzMDlmZjQ4YWQ4OTBhZDE1MzRjOGMy
NzVjMjliOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcApAQCAtNDEsNiArNDEsOCBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAorQ2hlY2tlZExvY2sgVGhyZWFkOjpzX2FsbFRocmVhZHNMb2NrOworCiBzdGF0
aWMgT3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUoVGhyZWFkVHlwZSB0aHJlYWRUeXBlKQogewog
ICAgIC8vIFJldHVybiB0aGUgc3RhY2sgc2l6ZSBmb3IgdGhlIGNyZWF0ZWQgdGhyZWFkIGJhc2Vk
IG9uIGl0cyB0eXBlLgpAQCAtOTEsNyArOTMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIH07CiAKLUhh
c2hTZXQ8VGhyZWFkKj4mIFRocmVhZDo6YWxsVGhyZWFkcyhjb25zdCBMb2NrSG9sZGVyJikKK0hh
c2hTZXQ8VGhyZWFkKj4mIFRocmVhZDo6YWxsVGhyZWFkcygpCiB7CiAgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxIYXNoU2V0PFRocmVhZCo+PiBhbGxUaHJlYWRzOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwpAQCAtMTAxLDEwICsxMDMsOSBAQCBIYXNoU2V0PFRocmVh
ZCo+JiBUaHJlYWQ6OmFsbFRocmVhZHMoY29uc3QgTG9ja0hvbGRlciYpCiAgICAgcmV0dXJuIGFs
bFRocmVhZHM7CiB9CiAKLUxvY2smIFRocmVhZDo6YWxsVGhyZWFkc011dGV4KCkKK0NoZWNrZWRM
b2NrJiBUaHJlYWQ6OmFsbFRocmVhZHNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsK
LSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfYWxsVGhyZWFkc0xvY2s7CiB9CiAKIGNv
bnN0IGNoYXIqIFRocmVhZDo6bm9ybWFsaXplVGhyZWFkTmFtZShjb25zdCBjaGFyKiB0aHJlYWRO
YW1lKQpAQCAtMjE4LDkgKzIxOSw5IEBAIFJlZjxUaHJlYWQ+IFRocmVhZDo6Y3JlYXRlKGNvbnN0
IGNoYXIqIG5hbWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBlbnRyeVBvaW50LCBUaHJlCiAgICAgLy8g
Y2FsbGVkIFRocmVhZDo6ZGlkRXhpdCB0byB1bnJlZ2lzdGVyIGl0c2VsZiBmcm9tIGFsbFRocmVh
ZHMuIFJlZ2lzdGVyaW5nIHN1Y2ggYSB0aHJlYWQgd2lsbCByZWdpc3RlciBhIHN0YWxlIHRocmVh
ZCBwb2ludGVyIHRvIGFsbFRocmVhZHMsIHdoaWNoIHdpbGwgbm90IGJlIHJlbW92ZWQKICAgICAv
LyBldmVuIGFmdGVyIFRocmVhZCBpcyBkZXN0cm95ZWQuIFJlZ2lzdGVyIGEgdGhyZWFkIG9ubHkg
d2hlbiBpdCBoYXMgbm90IHVucmVnaXN0ZXJlZCBpdHNlbGYgZnJvbSBhbGxUaHJlYWRzIHlldC4K
ICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxsVGhyZWFkc011dGV4KCkp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsVGhyZWFkc0xvY2soKSB9OwogICAgICAgICBp
ZiAoIXRocmVhZC0+bV9kaWRVbnJlZ2lzdGVyRnJvbUFsbFRocmVhZHMpCi0gICAgICAgICAgICBh
bGxUaHJlYWRzKGxvY2tlcikuYWRkKHRocmVhZC5wdHIoKSk7CisgICAgICAgICAgICBhbGxUaHJl
YWRzKCkuYWRkKHRocmVhZC5wdHIoKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKCF0aHJlYWQtPnN0
YWNrKCkuaXNFbXB0eSgpKTsKQEAgLTI0NCw4ICsyNDUsOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRS
ZW1vdmVUaHJlYWRGcm9tVGhyZWFkR3JvdXAoKQogdm9pZCBUaHJlYWQ6OmRpZEV4aXQoKQogewog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhbGxUaHJlYWRzTXV0ZXgoKSk7
Ci0gICAgICAgIGFsbFRocmVhZHMobG9ja2VyKS5yZW1vdmUodGhpcyk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBhbGxUaHJlYWRzTG9jaygpIH07CisgICAgICAgIGFsbFRocmVhZHMoKS5yZW1v
dmUodGhpcyk7CiAgICAgICAgIG1fZGlkVW5yZWdpc3RlckZyb21BbGxUaHJlYWRzID0gdHJ1ZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggOTQ5NWQ2YzFiMDhhYTRkY2ZjNTBkZDEzMGVhMzNm
MTM2NDJiYzk5Ni4uYzQyZTMwNGYzMmJiNGY3ODJiNjgyMjEyMWQzMDViNjk5YTEzMmY0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRl
IDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
VExTLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC0xMTYsOCArMTE3LDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBUaHJlYWQmIGN1cnJlbnQoKTsKIAogICAgIC8vIFNldCBvZiBhbGwg
V1RGOjpUaHJlYWQgY3JlYXRlZCB0aHJlYWRzLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSGFzaFNldDxUaHJlYWQqPiYgYWxsVGhyZWFkcyhjb25zdCBMb2NrSG9sZGVyJik7Ci0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBMb2NrJiBhbGxUaHJlYWRzTXV0ZXgoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEhhc2hTZXQ8VGhyZWFkKj4mIGFsbFRocmVhZHMoKSBX
VEZfUkVRVUlSRVNfTE9DSyhhbGxUaHJlYWRzTG9jaygpKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIENoZWNrZWRMb2NrJiBhbGxUaHJlYWRzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0so
c19hbGxUaHJlYWRzTG9jayk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVt
YmVyT2ZUaHJlYWRHcm91cHMoKTsKIApAQCAtMzI4LDYgKzMyOSw4IEBAIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgVGhyZWFkKiBjdXJyZW50TWF5QmVOdWxsKCk7CiAjZW5kaWYKIAorICAgIHN0YXRp
YyBDaGVja2VkTG9jayBzX2FsbFRocmVhZHNMb2NrOworCiAgICAgSm9pbmFibGVTdGF0ZSBtX2pv
aW5hYmxlU3RhdGUgeyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9pc1NodXR0aW5nRG93biA6IDE7
CiAgICAgYm9vbCBtX2RpZEV4aXQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJM
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggYTVkNzRhZmVhZWNlZWE3Y2RkZjdi
YjE3OWQ0MjNkOWRmYzk1MmMwZC4uNGQ2YjBkNTVjMTBhZGI2N2QwZjFlN2VmYjNhMzU0YWE2NTc3
ZDA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAj
aW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+CisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTI2
NywxNiArMjY4LDE2IEBAIHN0YXRpYyB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKFN0cmluZ1Zp
ZXcgcHJvdG9jb2wpCiAKICNlbmRpZgogCi1zdGF0aWMgTG9jayBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZ0xvY2s7CitzdGF0aWMgQ2hlY2tlZExvY2sgZGVmYXVsdFBvcnRGb3JQ
cm90b2NvbE1hcEZvclRlc3RpbmdMb2NrOwogCiB1c2luZyBEZWZhdWx0UG9ydEZvclByb3RvY29s
TWFwRm9yVGVzdGluZyA9IEhhc2hNYXA8U3RyaW5nLCB1aW50MTZfdD47Ci1zdGF0aWMgRGVmYXVs
dFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqJiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFw
Rm9yVGVzdGluZygpCitzdGF0aWMgRGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3Rpbmcq
JiBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpIFdURl9SRVFVSVJFU19MT0NL
KGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9jaykKIHsKICAgICBzdGF0aWMg
RGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcqIGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2xNYXA7CiAgICAgcmV0dXJuIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXA7CiB9CiAKLXN0YXRp
YyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyYgZW5zdXJlRGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQorc3RhdGljIERlZmF1bHRQb3J0Rm9yUHJvdG9jb2xN
YXBGb3JUZXN0aW5nJiBlbnN1cmVEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygp
IFdURl9SRVFVSVJFU19MT0NLKGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nTG9j
aykKIHsKICAgICBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyomIGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2xNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygp
OwogICAgIGlmICghZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcCkKQEAgLTI4NiwyNSArMjg3LDI2
IEBAIHN0YXRpYyBEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZyYgZW5zdXJlRGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlCiAKIHZvaWQgcmVnaXN0ZXJEZWZhdWx0UG9ydEZv
clByb3RvY29sRm9yVGVzdGluZyh1aW50MTZfdCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmdMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZGVmYXVsdFBvcnRGb3JQcm90
b2NvbE1hcEZvclRlc3RpbmdMb2NrIH07CiAgICAgZW5zdXJlRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bE1hcEZvclRlc3RpbmcoKS5hZGQocHJvdG9jb2wsIHBvcnQpOwogfQogCiB2b2lkIGNsZWFyRGVm
YXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrIH07
CiAgICAgaWYgKGF1dG8qIG1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5n
KCkpCiAgICAgICAgIG1hcC0+Y2xlYXIoKTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCkKIHsKLSAgICBpZiAoYXV0byog
b3ZlcnJpZGVNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpKSB7Ci0g
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZv
clRlc3RpbmdMb2NrKTsKLSAgICAgICAgQVNTRVJUKG92ZXJyaWRlTWFwKTsgLy8gTm8gbmVlZCB0
byBudWxsIGNoZWNrIGFnYWluIGhlcmUgc2luY2Ugb3ZlcnJpZGVNYXAgY2Fubm90IGJlY29tZSBu
dWxsIGFmdGVyIGJlaW5nIG5vbi1udWxsLgotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gb3ZlcnJp
ZGVNYXAtPmZpbmQocHJvdG9jb2wudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKLSAgICAgICAg
aWYgKGl0ZXJhdG9yICE9IG92ZXJyaWRlTWFwLT5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBp
dGVyYXRvci0+dmFsdWU7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZGVmYXVsdFBv
cnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmdMb2NrIH07CisgICAgICAgIGlmIChhdXRvKiBvdmVy
cmlkZU1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gaXRlcmF0b3IgPSBvdmVycmlkZU1hcC0+ZmluZChwcm90b2NvbC50b1N0cmlu
Z1dpdGhvdXRDb3B5aW5nKCkpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG92ZXJyaWRl
TWFwLT5lbmQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wocHJvdG9jb2wpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VD
Ri5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAppbmRleCA1M2MwZWYwZGMw
MGIzOTQyZDM5YjY1OGE4ZGNjMGQ2ZTA0Y2Y2ZDEzLi5lMDczMTE1NDI5MWJmZDA3YzRjYzE2ZGEw
NDJhYWFkYjU5YzllM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNG
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcApAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9jZi9DRkJ1bmRsZVNQSS5o
PgpAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotc3RhdGljIExvY2sgcHJl
ZmVycmVkTGFuZ3VhZ2VzTXV0ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgcHJlZmVycmVkTGFuZ3Vh
Z2VzTG9jazsKIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyB2b2lkIGxhbmd1YWdlUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqLCBDRlN0cmluZ1Jl
ZiwgY29uc3Qgdm9pZCosIENGRGljdGlvbmFyeVJlZikKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGlj
IHZvaWQgbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoYW5nZShDRk5vdGlmaWNhdGlvbkNlbnRlclJl
Ziwgdm9pZCosIENGU3RyaW4KIH0KICNlbmRpZgogCi1zdGF0aWMgVmVjdG9yPFN0cmluZz4mIHBy
ZWZlcnJlZExhbmd1YWdlcygpCitzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1
YWdlcygpIFdURl9SRVFVSVJFU19MT0NLKHByZWZlcnJlZExhbmd1YWdlc0xvY2spCiB7CiAgICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxWZWN0b3I8U3RyaW5nPj4gbGFuZ3VhZ2VzOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMg
U3RyaW5nIGh0dHBTdHlsZUxhbmd1YWdlQ29kZShDRlN0cmluZ1JlZiBsYW5ndWFnZSkKIHZvaWQg
cGxhdGZvcm1MYW5ndWFnZURpZENoYW5nZSgpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHByZWZlcnJlZExhbmd1YWdlc011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IHByZWZlcnJlZExhbmd1YWdlc0xvY2sgfTsKICAgICAgICAgcHJlZmVycmVkTGFuZ3Vh
Z2VzKCkuY2xlYXIoKTsKICAgICB9CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBsaXN0ZW5G
b3JMYW5ndWFnZUNoYW5nZU5vdGlmaWNhdGlvbnMoKQogCiBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
cHJlZmVycmVkTGFuZ3VhZ2VzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBwcmVmZXJyZWRM
YW5ndWFnZXNMb2NrIH07CiAgICAgVmVjdG9yPFN0cmluZz4mIHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXMoKTsKIAogICAgIGlmICh1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggM2NiMDE4
M2M4MDExYWQ4ZGE4MmMwZTk0MmI3NjkzODk4MWJkM2RjZS4uM2U4NDYzZjQ5MzA4OWUzNWFkOTc0
MzBkNTgzMTliNjMxY2Q0NTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0z
MCw4ICszMCw4IEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHVu
aWNvZGUvdW5vcm0yLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9yLmg+CkBAIC0zNjAsMTUgKzM2MCwxMSBAQCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5n
U3RyaW5nOjpVbmRlcmx5aW5nU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykKIHsKIH0K
IAotc3RhdGljIExvY2sgdW5kZXJseWluZ1N0cmluZ3NNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9j
ayB1bmRlcmx5aW5nU3RyaW5nc0xvY2s7CiAKLXN0YXRpYyBIYXNoTWFwPGNvbnN0IFN0cmluZ0lt
cGwqLCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5nU3RyaW5nKj4mIHVuZGVybHlpbmdTdHJpbmdzKCkK
K3N0YXRpYyBIYXNoTWFwPGNvbnN0IFN0cmluZ0ltcGwqLCBTdHJpbmdWaWV3OjpVbmRlcmx5aW5n
U3RyaW5nKj4mIHVuZGVybHlpbmdTdHJpbmdzKCkgV1RGX1JFUVVJUkVTX0xPQ0sodW5kZXJseWlu
Z1N0cmluZ3NMb2NrKQogewotICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxj
b25zdCBTdHJpbmdJbXBsKiwgU3RyaW5nVmlldzo6VW5kZXJseWluZ1N0cmluZyo+PiBtYXA7Ci0g
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKLSAgICAgICAgbWFwLmNvbnN0cnVjdCgpOwotICAgIH0pOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IFN0cmluZ0ltcGwqLCBTdHJpbmdWaWV3OjpV
bmRlcmx5aW5nU3RyaW5nKj4+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC0zNzYsNyAr
MzcyLDcgQEAgdm9pZCBTdHJpbmdWaWV3OjppbnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmIHN0
cmluZ1RvQmVEZXN0cm95ZWQpCiB7CiAgICAgVW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0
cmluZzsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodW5kZXJseWluZ1N0
cmluZ3NNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB1bmRlcmx5aW5nU3RyaW5nc0xv
Y2sgfTsKICAgICAgICAgdW5kZXJseWluZ1N0cmluZyA9IHVuZGVybHlpbmdTdHJpbmdzKCkudGFr
ZSgmc3RyaW5nVG9CZURlc3Ryb3llZCk7CiAgICAgICAgIGlmICghdW5kZXJseWluZ1N0cmluZykK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5Myw3ICszODksNyBAQCBib29sIFN0cmluZ1ZpZXc6
OnVuZGVybHlpbmdTdHJpbmdJc1ZhbGlkKCkgY29uc3QKIHZvaWQgU3RyaW5nVmlldzo6YWRvcHRV
bmRlcmx5aW5nU3RyaW5nKFVuZGVybHlpbmdTdHJpbmcqIHVuZGVybHlpbmdTdHJpbmcpCiB7CiAg
ICAgaWYgKG1fdW5kZXJseWluZ1N0cmluZykgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKHVuZGVybHlpbmdTdHJpbmdzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdW5k
ZXJseWluZ1N0cmluZ3NMb2NrIH07CiAgICAgICAgIGlmICghLS1tX3VuZGVybHlpbmdTdHJpbmct
PnJlZkNvdW50KSB7CiAgICAgICAgICAgICBpZiAobV91bmRlcmx5aW5nU3RyaW5nLT5pc1ZhbGlk
KSB7CiAgICAgICAgICAgICAgICAgdW5kZXJseWluZ1N0cmluZ3MoKS5yZW1vdmUoJm1fdW5kZXJs
eWluZ1N0cmluZy0+c3RyaW5nKTsKQEAgLTQxMCw3ICs0MDYsNyBAQCB2b2lkIFN0cmluZ1ZpZXc6
OnNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKQogICAgIGlmICgh
c3RyaW5nKQogICAgICAgICB1bmRlcmx5aW5nU3RyaW5nID0gbnVsbHB0cjsKICAgICBlbHNlIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh1bmRlcmx5aW5nU3RyaW5nc011dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHVuZGVybHlpbmdTdHJpbmdzTG9jayB9OwogICAgICAg
ICBhdXRvIHJlc3VsdCA9IHVuZGVybHlpbmdTdHJpbmdzKCkuYWRkKHN0cmluZywgbnVsbHB0cik7
CiAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBuZXcgVW5kZXJseWluZ1N0cmluZygqc3RyaW5nKTsKQEAgLTQyNSw3ICs0
MjEsNyBAQCB2b2lkIFN0cmluZ1ZpZXc6OnNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5n
VmlldyYgb3RoZXJTdHJpbmcpCiB7CiAgICAgVW5kZXJseWluZ1N0cmluZyogdW5kZXJseWluZ1N0
cmluZyA9IG90aGVyU3RyaW5nLm1fdW5kZXJseWluZ1N0cmluZzsKICAgICBpZiAodW5kZXJseWlu
Z1N0cmluZykgewotICAgICAgICAvLyBJdCdzIHNhZmUgdG8gaW5jIHRoZSByZWZDb3VudCBoZXJl
IHdpdGhvdXQgbG9ja2luZyB1bmRlcmx5aW5nU3RyaW5nc011dGV4CisgICAgICAgIC8vIEl0J3Mg
c2FmZSB0byBpbmMgdGhlIHJlZkNvdW50IGhlcmUgd2l0aG91dCBsb2NraW5nIHVuZGVybHlpbmdT
dHJpbmdzTG9jawogICAgICAgICAvLyBiZWNhdXNlIFVuZGVybHlpbmdTdHJpbmc6OnJlZkNvdW50
IGlzIGEgc3RkOjphdG9taWNfdWludCwgYW5kIHdlJ3JlCiAgICAgICAgIC8vIGd1YXJhbnRlZWQg
dGhhdCB0aGUgU3RyaW5nVmlldyB3ZSdyZSBjb3B5aW5nIGl0IGZyb20gd2lsbCBhdCBsZWFzdAog
ICAgICAgICAvLyBoYXZlIDEgcmVmIG9uIGl0LCB0aGVyZWJ5IGtlZXBpbmcgaXQgYWxpdmUgcmVn
YXJkbGVzcyBvZiB3aGF0IG90aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2Rl
L2ljdS9Db2xsYXRvcklDVS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRv
cklDVS5jcHAKaW5kZXggNjc2NjA3M2M5ZjZiOWNlMGZhNTY0MWZhNWNhYjE1YTliMDFmY2JhZC4u
ZjE3ZTAyNTlhY2JhY2QxNzJlNmVmNzM2YWVjODk2YTZlMjliYWEwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5j
bHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8dW5pY29kZS91Y29sLmg+Ci0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdWaWV3Lmg+CiAKICNpZiBPUyhEQVJXSU4pICYmIFVTRShDRikKQEAgLTQ1LDEyICs0NSwx
MSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotc3RhdGljIFVDb2xsYXRvciogY2FjaGVkQ29sbGF0
b3I7CitzdGF0aWMgQ2hlY2tlZExvY2sgY2FjaGVkQ29sbGF0b3JMb2NrOworc3RhdGljIFVDb2xs
YXRvciogY2FjaGVkQ29sbGF0b3IgV1RGX0dVQVJERURfQllfTE9DSyhjYWNoZWRDb2xsYXRvckxv
Y2spOwogc3RhdGljIGNoYXIqIGNhY2hlZENvbGxhdG9yTG9jYWxlOwogc3RhdGljIGJvb2wgY2Fj
aGVkQ29sbGF0b3JTaG91bGRTb3J0TG93ZXJjYXNlRmlyc3Q7CiAKLXN0YXRpYyBMb2NrIGNhY2hl
ZENvbGxhdG9yTXV0ZXg7Ci0KICNpZiAhKE9TKERBUldJTikgJiYgVVNFKENGKSkKIAogc3RhdGlj
IGlubGluZSBjb25zdCBjaGFyKiByZXNvbHZlRGVmYXVsdExvY2FsZShjb25zdCBjaGFyKiBsb2Nh
bGUpCkBAIC0xMDYsNyArMTA1LDcgQEAgQ29sbGF0b3I6OkNvbGxhdG9yKGNvbnN0IGNoYXIqIGxv
Y2FsZSwgYm9vbCBzaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpCiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soY2FjaGVkQ29sbGF0b3JNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBjYWNoZWRD
b2xsYXRvckxvY2sgfTsKICAgICAgICAgaWYgKGNhY2hlZENvbGxhdG9yICYmIGxvY2FsZXNNYXRj
aChjYWNoZWRDb2xsYXRvckxvY2FsZSwgbG9jYWxlKSAmJiBjYWNoZWRDb2xsYXRvclNob3VsZFNv
cnRMb3dlcmNhc2VGaXJzdCA9PSBzaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpIHsKICAgICAgICAg
ICAgIG1fY29sbGF0b3IgPSBjYWNoZWRDb2xsYXRvcjsKICAgICAgICAgICAgIG1fbG9jYWxlID0g
Y2FjaGVkQ29sbGF0b3JMb2NhbGU7CkBAIC0xMzYsNyArMTM1LDcgQEAgQ29sbGF0b3I6OkNvbGxh
dG9yKGNvbnN0IGNoYXIqIGxvY2FsZSwgYm9vbCBzaG91bGRTb3J0TG93ZXJjYXNlRmlyc3QpCiAK
IENvbGxhdG9yOjp+Q29sbGF0b3IoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2Fj
aGVkQ29sbGF0b3JNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNhY2hlZENvbGxhdG9yTG9j
ayB9OwogICAgIGlmIChjYWNoZWRDb2xsYXRvcikgewogICAgICAgICB1Y29sX2Nsb3NlKGNhY2hl
ZENvbGxhdG9yKTsKICAgICAgICAgZmFzdEZyZWUoY2FjaGVkQ29sbGF0b3JMb2NhbGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlh
bGl6YXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uQ29udGV4dC5jcHAKaW5kZXggOWRkN2FiYjU1NTU5NDJkMGM5
MWVmODgwMDdjYjY2ZDFhNzA0ZDU3OC4uNTM3NmRkOTBlZjhjYjIzNjZmMzU2YTBkNjVmZThhM2Nm
N2NhNzk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbkNvbnRleHQuY3BwCkBAIC0yOSwx
NCArMjksMTUgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RJbmxp
bmVzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLXN0YXRpYyBMb2NrIHNlcmlhbGl6YXRpb25D
b250ZXh0TWFwTXV0ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgc2VyaWFsaXphdGlvbkNvbnRleHRN
YXBMb2NrOwogCi1zdGF0aWMgSGFzaE1hcDxUaHJlYWQqLCBJREJTZXJpYWxpemF0aW9uQ29udGV4
dCo+JiBzZXJpYWxpemF0aW9uQ29udGV4dE1hcChMb2NrZXI8TG9jaz4mKQorc3RhdGljIEhhc2hN
YXA8VGhyZWFkKiwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQqPiYgc2VyaWFsaXphdGlvbkNvbnRl
eHRNYXAoKSBXVEZfUkVRVUlSRVNfTE9DSyhzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2spCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VGhyZWFkKiwgSURCU2VyaWFsaXph
dGlvbkNvbnRleHQqPj4gbWFwOwogICAgIHJldHVybiBtYXA7CkBAIC00NSw4ICs0Niw4IEBAIHN0
YXRpYyBIYXNoTWFwPFRocmVhZCosIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Kj4mIHNlcmlhbGl6
YXRpb25Db250ZXh0TWFwKExvY2tlCiBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IElEQlNl
cmlhbGl6YXRpb25Db250ZXh0OjpnZXRPckNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKQogewogICAg
IGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwotICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIoc2VyaWFsaXphdGlvbkNvbnRleHRNYXBNdXRleCk7Ci0gICAgYXV0b1tpdGVyLCBpc05ld0Vu
dHJ5XSA9IHNlcmlhbGl6YXRpb25Db250ZXh0TWFwKGxvY2tlcikuYWRkKCZ0aHJlYWQsIG51bGxw
dHIpOworICAgIExvY2tlciBsb2NrZXIgeyBzZXJpYWxpemF0aW9uQ29udGV4dE1hcExvY2sgfTsK
KyAgICBhdXRvW2l0ZXIsIGlzTmV3RW50cnldID0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAoKS5h
ZGQoJnRocmVhZCwgbnVsbHB0cik7CiAgICAgaWYgKGlzTmV3RW50cnkpIHsKICAgICAgICAgUmVm
PElEQlNlcmlhbGl6YXRpb25Db250ZXh0PiBwcm90ZWN0ZWRDb250ZXh0ID0gYWRvcHRSZWYoKm5l
dyBJREJTZXJpYWxpemF0aW9uQ29udGV4dCh0aHJlYWQpKTsKICAgICAgICAgaXRlci0+dmFsdWUg
PSBwcm90ZWN0ZWRDb250ZXh0LnB0cigpOwpAQCAtNTgsMTUgKzU5LDE1IEBAIFJlZjxJREJTZXJp
YWxpemF0aW9uQ29udGV4dD4gSURCU2VyaWFsaXphdGlvbkNvbnRleHQ6OmdldE9yQ3JlYXRlRm9y
Q3VycmVudFRocmVhCiAKIElEQlNlcmlhbGl6YXRpb25Db250ZXh0Ojp+SURCU2VyaWFsaXphdGlv
bkNvbnRleHQoKQogewotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2VyaWFsaXphdGlvbkNvbnRl
eHRNYXBNdXRleCk7Ci0gICAgQVNTRVJUKHRoaXMgPT0gc2VyaWFsaXphdGlvbkNvbnRleHRNYXAo
bG9ja2VyKS5nZXQoJm1fdGhyZWFkKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNlcmlhbGl6YXRp
b25Db250ZXh0TWFwTG9jayB9OworICAgIEFTU0VSVCh0aGlzID09IHNlcmlhbGl6YXRpb25Db250
ZXh0TWFwKCkuZ2V0KCZtX3RocmVhZCkpOwogCiAgICAgaWYgKG1fdm0pIHsKICAgICAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jaygqbV92bSk7CiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LmNsZWFy
KCk7CiAgICAgICAgIG1fdm0gPSBudWxscHRyOwogICAgIH0KLSAgICBzZXJpYWxpemF0aW9uQ29u
dGV4dE1hcChsb2NrZXIpLnJlbW92ZSgmbV90aHJlYWQpOworICAgIHNlcmlhbGl6YXRpb25Db250
ZXh0TWFwKCkucmVtb3ZlKCZtX3RocmVhZCk7CiB9CiAKIHZvaWQgSURCU2VyaWFsaXphdGlvbkNv
bnRleHQ6OmluaXRpYWxpemVWTSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDliMDAxNGNhYWMzZTI4NGFmOGQy
ZmJiMmY2NGMzNDdkM2NmM2I0YTUuLjExNTA2ZmJjYjk4NDc4MmM2N2I3NWZhOWI5NTllOWY0ZDcw
MGFiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKQEAgLTI1Miw4ICsyNTMsOCBAQCB2b2lkIFJUQ0RhdGFDaGFubmVs
OjpzY2hlZHVsZURpc3BhdGNoRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgIHF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgV1RGTW92ZShl
dmVudCkpOwogfQogCi1zdGF0aWMgTG9jayBzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrOwot
c3RhdGljIEhhc2hNYXA8UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+PiYgcnRjRGF0YUNoYW5uZWxMb2NhbE1hcCgpCitz
dGF0aWMgQ2hlY2tlZExvY2sgc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jazsKK3N0YXRpYyBI
YXNoTWFwPFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyPj4mIHJ0Y0RhdGFDaGFubmVsTG9jYWxNYXAoKSBXVEZfUkVRVUlS
RVNfTE9DSyhzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrKQogewogICAgIEFTU0VSVChzX3J0
Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPEhhc2hNYXA8UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+Pj4gbWFwOwpAQCAtMjc5LDcgKzI4MCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6
ZGV0YWNoKCkKICAgICBtX2lzRGV0YWNoZWQgPSB0cnVlOwogICAgIG1fcmVhZHlTdGF0ZSA9IFJU
Q0RhdGFDaGFubmVsU3RhdGU6OkNsb3NlZDsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
c19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfcnRj
RGF0YUNoYW5uZWxMb2NhbE1hcExvY2sgfTsKICAgICBydGNEYXRhQ2hhbm5lbExvY2FsTWFwKCku
YWRkKGlkZW50aWZpZXIoKS5jaGFubmVsSWRlbnRpZmllciwgV1RGTW92ZShtX2hhbmRsZXIpKTsK
IAogICAgIHJldHVybiBtYWtlVW5pcXVlPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+KGlkZW50aWZp
ZXIoKSwgbGFiZWwoKS5pc29sYXRlZENvcHkoKSwgb3B0aW9ucygpLCBzdGF0ZSk7CkBAIC0yOTAs
MTMgKzI5MSwxMyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpyZW1vdmVGcm9tRGF0YUNoYW5uZWxM
b2NhbE1hcElmTmVlZGVkKCkKICAgICBpZiAoIW1faXNEZXRhY2hlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19ydGNEYXRhQ2hhbm5lbExvY2FsTWFwTG9jayB9
OwogICAgIHJ0Y0RhdGFDaGFubmVsTG9jYWxNYXAoKS5yZW1vdmUoaWRlbnRpZmllcigpLmNoYW5u
ZWxJZGVudGlmaWVyKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxl
cj4gUlRDRGF0YUNoYW5uZWw6OmhhbmRsZXJGcm9tSWRlbnRpZmllcihSVENEYXRhQ2hhbm5lbExv
Y2FsSWRlbnRpZmllciBjaGFubmVsSWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKHNfcnRjRGF0YUNoYW5uZWxMb2NhbE1hcExvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBzX3J0Y0RhdGFDaGFubmVsTG9jYWxNYXBMb2NrIH07CiAgICAgcmV0dXJuIHJ0Y0RhdGFDaGFu
bmVsTG9jYWxNYXAoKS50YWtlKGNoYW5uZWxJZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCAxMTc0ZTZiY2Rk
MDYwZTY2YzYzMzk4MzJlY2I4ZDFlODFhZDVkODMyLi5jMWRiOGVmYTBiMDBmM2UzMjFhOTBlMjk2
NDlkN2U2MzM0MTg3MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV2luZG93RXZlbnRM
b29wLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KQEAgLTE1MiwxNiArMTUzLDE1IEBAIHN0YXRpYyBib29sIHJldHJpZXZlVGV4
dFJlc3VsdEZyb21EYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGIsIGNvbnN0IFN0cmluZyYgcXVl
CiB9CiAKIC8vIEZJWE1FOiBtb3ZlIGFsbCBndWlkLXJlbGF0ZWQgZnVuY3Rpb25zIHRvIGEgRGF0
YWJhc2VWZXJzaW9uVHJhY2tlciBjbGFzcy4KLXN0YXRpYyBMb2NrIGd1aWRNdXRleDsKK3N0YXRp
YyBDaGVja2VkTG9jayBndWlkTG9jazsKIAotc3RhdGljIEhhc2hNYXA8RGF0YWJhc2VHVUlELCBT
dHJpbmc+JiBndWlkVG9WZXJzaW9uTWFwKCkKK3N0YXRpYyBIYXNoTWFwPERhdGFiYXNlR1VJRCwg
U3RyaW5nPiYgZ3VpZFRvVmVyc2lvbk1hcCgpIFdURl9SRVFVSVJFU19MT0NLKGd1aWRMb2NrKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPERhdGFiYXNlR1VJRCwgU3RyaW5n
Pj4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKLS8vIE5PVEU6IENhbGxlciBtdXN0IGxvY2sg
Z3VpZE11dGV4KCkuCi1zdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlR1VJRFZlcnNpb25NYXAoRGF0
YWJhc2VHVUlEIGd1aWQsIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbikKK3N0YXRpYyBpbmxpbmUg
dm9pZCB1cGRhdGVHVUlEVmVyc2lvbk1hcChEYXRhYmFzZUdVSUQgZ3VpZCwgY29uc3QgU3RyaW5n
JiBuZXdWZXJzaW9uKSBXVEZfUkVRVUlSRVNfTE9DSyhndWlkTG9jaykKIHsKICAgICAvLyBOb3Rl
OiBJdCBpcyBub3Qgc2FmZSB0byBwdXQgYW4gZW1wdHkgc3RyaW5nIGludG8gdGhlIGd1aWRUb1Zl
cnNpb25NYXAoKSBtYXAuCiAgICAgLy8gVGhhdCdzIGJlY2F1c2UgdGhlIG1hcCBpcyBjcm9zcy10
aHJlYWQsIGJ1dCBlbXB0eSBzdHJpbmdzIGFyZSBwZXItdGhyZWFkLgpAQCAtMTczLDEzICsxNzMs
MTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUdVSURWZXJzaW9uTWFwKERhdGFiYXNlR1VJ
RCBndWlkLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnMKICAgICBndWlkVG9WZXJzaW9uTWFwKCkuc2V0
KGd1aWQsIG5ld1ZlcnNpb24uaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBuZXdWZXJzaW9uLmlzb2xh
dGVkQ29weSgpKTsKIH0KIAotc3RhdGljIEhhc2hNYXA8RGF0YWJhc2VHVUlELCBIYXNoU2V0PERh
dGFiYXNlKj4+JiBndWlkVG9EYXRhYmFzZU1hcCgpCitzdGF0aWMgSGFzaE1hcDxEYXRhYmFzZUdV
SUQsIEhhc2hTZXQ8RGF0YWJhc2UqPj4mIGd1aWRUb0RhdGFiYXNlTWFwKCkgV1RGX1JFUVVJUkVT
X0xPQ0soZ3VpZExvY2spCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8RGF0
YWJhc2VHVUlELCBIYXNoU2V0PERhdGFiYXNlKj4+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0K
IAotc3RhdGljIGlubGluZSBEYXRhYmFzZUdVSUQgZ3VpZEZvck9yaWdpbkFuZE5hbWUoY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBpbmxpbmUgRGF0YWJh
c2VHVUlEIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIG5hbWUpIFdURl9SRVFVSVJFU19MT0NLKGd1aWRMb2NrKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VHVUlEPj4gbWFwOwogICAgIHJl
dHVybiBtYXAuZ2V0KCkuZW5zdXJlKG1ha2VTdHJpbmcob3JpZ2luLCAnLycsIG5hbWUpLCBbXSB7
CkBAIC0yMDEsNyArMjAxLDcgQEAgRGF0YWJhc2U6OkRhdGFiYXNlKERhdGFiYXNlQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGUKICAgICAsIG1fZGF0
YWJhc2VBdXRob3JpemVyKERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKHVucXVhbGlmaWVkSW5m
b1RhYmxlTmFtZSkpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1
aWRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAgICAg
IG1fZ3VpZCA9IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5T3JpZ2luKCkuc2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSwgbmFtZSk7CiAgICAgICAgIGd1aWRUb0RhdGFiYXNlTWFwKCku
ZW5zdXJlKG1fZ3VpZCwgW10gewpAQCAtMzQ4LDcgKzM0OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5l
d0RhdGFiCiAKICAgICBTdHJpbmcgY3VycmVudFZlcnNpb247CiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBn
dWlkTG9jayB9OwogCiAgICAgICAgIGF1dG8gZW50cnkgPSBndWlkVG9WZXJzaW9uTWFwKCkuZmlu
ZChtX2d1aWQpOwogICAgICAgICBpZiAoZW50cnkgIT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmVuZCgp
KSB7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZSgpCiAg
ICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5yZW1vdmVPcGVuRGF0YWJhc2UoKnRoaXMp
OwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBndWlkTG9jayB9OwogCiAgICAgICAgIGF1dG8gaXQgPSBn
dWlkVG9EYXRhYmFzZU1hcCgpLmZpbmQobV9ndWlkKTsKICAgICAgICAgQVNTRVJUKGl0ICE9IGd1
aWRUb0RhdGFiYXNlTWFwKCkuZW5kKCkpOwpAQCAtNDk1LDE0ICs0OTUsMTQgQEAgdm9pZCBEYXRh
YmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIAogU3RyaW5n
IERhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9uKCkgY29uc3QKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGd1aWRNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGd1aWRMb2NrIH07CiAK
ICAgICByZXR1cm4gZ3VpZFRvVmVyc2lvbk1hcCgpLmdldChtX2d1aWQpLmlzb2xhdGVkQ29weSgp
OwogfQogCiB2b2lkIERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgYWN0
dWFsVmVyc2lvbikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGd1aWRNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IGd1aWRMb2NrIH07CiAKICAgICB1cGRhdGVHVUlEVmVyc2lvbk1h
cChtX2d1aWQsIGFjdHVhbFZlcnNpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5jcHAKaW5kZXggY2EwMWIxMDE1YWQ2MWNjYzM5YWQzMzliOWFk
YjdiZTQ2OWYxYjFjOC4uODI1MGUyYmIzYTYzNDhkYzliNGNhYmE2NGFlNDhiYzYzZGEzZDkyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCkBA
IC05NCw2ICs5NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdlYkdQVURldmljZSk7CiAKK0NoZWNrZWRMb2NrIFdlYkdQVURldmljZTo6c19p
bnN0YW5jZXNMb2NrOworCiBSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OnRyeUNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Y29uc3QgV2ViR1BVQWRh
cHRlcj4mJiBhZGFwdGVyKQogewogICAgIGlmIChhdXRvIGRldmljZSA9IEdQVURldmljZTo6dHJ5
Q3JlYXRlKGFkYXB0ZXItPm9wdGlvbnMoKSkpIHsKQEAgLTEwNCwxNiArMTA2LDE1IEBAIFJlZlB0
cjxXZWJHUFVEZXZpY2U+IFdlYkdQVURldmljZTo6dHJ5Q3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFJlCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUhhc2hTZXQ8V2Vi
R1BVRGV2aWNlKj4mIFdlYkdQVURldmljZTo6aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXImKQor
SGFzaFNldDxXZWJHUFVEZXZpY2UqPiYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXMoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFdlYkdQVURldmljZSo+PiBpbnN0YW5jZXM7
CiAgICAgcmV0dXJuIGluc3RhbmNlczsKIH0KIAotTG9jayYgV2ViR1BVRGV2aWNlOjppbnN0YW5j
ZXNNdXRleCgpCitDaGVja2VkTG9jayYgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkKIHsK
LSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNf
aW5zdGFuY2VzTG9jazsKIH0KIAogV2ViR1BVRGV2aWNlOjpXZWJHUFVEZXZpY2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRl
ciwgUmVmPEdQVURldmljZT4mJiBkZXZpY2UpCkBAIC0xMjgsOCArMTI5LDggQEAgV2ViR1BVRGV2
aWNlOjpXZWJHUFVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPGNv
bnN0IFdlYkdQVUFkYXAKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9j
dW1lbnQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhpbnN0YW5jZXNNdXRl
eCgpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxvY2spLmFkZCh0aGlzKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBpbnN0YW5jZXMoKS5hZGQodGhp
cyk7CiAgICAgfQogfQogCkBAIC0xMzgsOCArMTM5LDggQEAgV2ViR1BVRGV2aWNlOjp+V2ViR1BV
RGV2aWNlKCkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95V2ViR1BV
RGV2aWNlKCp0aGlzKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKFdlYkdQVVBp
cGVsaW5lOjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IFdl
YkdQVVBpcGVsaW5lOjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMoKSkgewogICAgICAgICAgICAgaWYgKGVu
dHJ5LnZhbHVlID09IHRoaXMpIHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUgYW55
IFdlYkdQVVBpcGVsaW5lIGZyb20gdGhlIGluc3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBzdGls
bCBleGlzdC4KICAgICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRpb24g
d2l0aCBhIFdlYkdQVSBkZXZpY2UuCkBAIC0xNDksOSArMTUwLDkgQEAgV2ViR1BVRGV2aWNlOjp+
V2ViR1BVRGV2aWNlKCkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhp
bnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlcyhsb2NrKS5jb250YWlu
cyh0aGlzKSk7Ci0gICAgICAgIGluc3RhbmNlcyhsb2NrKS5yZW1vdmUodGhpcyk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgQVNTRVJUKGluc3Rh
bmNlcygpLmNvbnRhaW5zKHRoaXMpKTsKKyAgICAgICAgaW5zdGFuY2VzKCkucmVtb3ZlKHRoaXMp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuaAppbmRleCBjOWNjM2M0ZTQzNWM5MjY0YjI4MTRkM2Q2M2MyNDBmY2I2NjcwNmMzLi43MGYx
YjFkYTcyOTNkZmZhMTMxYTI1NWQ1YjY3NWZhYzhhMGYyYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIldlYkdQVUFkYXB0ZXIuaCIKICNpbmNsdWRlICJXZWJHUFVRdWV1ZS5oIgogI2luY2x1ZGUg
IldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2su
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTg0LDggKzg1LDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFJlZlB0cjxXZWJHUFVEZXZpY2U+IHRyeUNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgUmVmPGNvbnN0IFdlYkdQVUFkYXB0ZXI+JiYpOwogCi0gICAgc3RhdGljIEhhc2hT
ZXQ8V2ViR1BVRGV2aWNlKj4mIGluc3RhbmNlcyhjb25zdCBMb2NrSG9sZGVyJik7Ci0gICAgc3Rh
dGljIExvY2smIGluc3RhbmNlc011dGV4KCk7CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViR1BVRGV2
aWNlKj4mIGluc3RhbmNlcygpIFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xvY2soKSk7Cisg
ICAgc3RhdGljIENoZWNrZWRMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhz
X2luc3RhbmNlc0xvY2spOwogCiAgICAgY29uc3QgV2ViR1BVQWRhcHRlciYgYWRhcHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQoKTsgfQogICAgIEdQVURldmljZSYgZGV2aWNlKCkg
eyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KQEAgLTEyNiw2ICsxMjcsOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaXNwYXRjaFVuY2FwdHVyZWRFcnJvcihHUFVFcnJvciYmKTsKIAorICAgIHN0
YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKICAgICBSZWY8Y29uc3QgV2ViR1BV
QWRhcHRlcj4gbV9hZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmUuY3BwCmluZGV4IGVlNGFiMTBhZjhiNDAyZTYxMDllODM3ZjMzZDBkNWY0
NzY5YjA4ZWIuLjIwNWYxZWQxZjdiN2M2M2I3NzUxYjEzNDkxM2RmNDg3ZmNlMmNkYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5jcHAKQEAg
LTM5LDE2ICszOSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUhhc2hNYXA8V2ViR1BV
UGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPiYgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlcyhjb25z
dCBMb2NrSG9sZGVyJikKK0NoZWNrZWRMb2NrIFdlYkdQVVBpcGVsaW5lOjpzX2luc3RhbmNlc0xv
Y2s7CisKK0hhc2hNYXA8V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPiYgV2ViR1BVUGlw
ZWxpbmU6Omluc3RhbmNlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
V2ViR1BVUGlwZWxpbmUqLCBXZWJHUFVEZXZpY2UqPj4gaW5zdGFuY2VzOwogICAgIHJldHVybiBp
bnN0YW5jZXM7CiB9CiAKLUxvY2smIFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNNdXRleCgpCitD
aGVja2VkTG9jayYgV2ViR1BVUGlwZWxpbmU6Omluc3RhbmNlc0xvY2soKQogewotICAgIHN0YXRp
YyBMb2NrIG11dGV4OwotICAgIHJldHVybiBtdXRleDsKKyAgICByZXR1cm4gc19pbnN0YW5jZXNM
b2NrOwogfQogCiBXZWJHUFVQaXBlbGluZTo6V2ViR1BVUGlwZWxpbmUoV2ViR1BVRGV2aWNlJiBk
ZXZpY2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKQEAgLTU4LDggKzU5LDggQEAgV2Vi
R1BVUGlwZWxpbmU6OldlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwot
ICAgICAgICBpbnN0YW5jZXMobG9jaykuYWRkKHRoaXMsICZkZXZpY2UpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgIGluc3RhbmNlcygpLmFkZCh0
aGlzLCAmZGV2aWNlKTsKICAgICB9CiB9CiAKQEAgLTY4LDkgKzY5LDkgQEAgV2ViR1BVUGlwZWxp
bmU6On5XZWJHUFVQaXBlbGluZSgpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGVzdHJveVdlYkdQVVBpcGVsaW5lKCp0aGlzKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBBU1NFUlQoaW5zdGFuY2VzKGxvY2sp
LmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxvY2spLnJlbW92ZSh0aGlzKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBBU1NF
UlQoaW5zdGFuY2VzKCkuY29udGFpbnModGhpcykpOworICAgICAgICBpbnN0YW5jZXMoKS5yZW1v
dmUodGhpcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmUuaAppbmRleCBkN2YxMWEzMzYxNDQyMmIxNzU3ZjkwNGY5NWM3NTU1ZjEz
YmEyYzAzLi45OTlhOThhZTUyYTZiYjA5YWI0YWVmNjc0YWQxMzRiNjg5MDI2YzhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lLmgKQEAgLTMwLDgg
KzMwLDggQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1
ZGUgIkdQVU9iamVjdEJhc2UuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsOCArNDMs
OCBAQCBjbGFzcyBXZWJHUFVQaXBlbGluZSA6IHB1YmxpYyBHUFVPYmplY3RCYXNlLCBwdWJsaWMg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdQ
VVBpcGVsaW5lKCk7CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxXZWJHUFVQaXBlbGluZSosIFdlYkdQ
VURldmljZSo+JiBpbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpOwotICAgIHN0YXRpYyBMb2Nr
JiBpbnN0YW5jZXNNdXRleCgpOworICAgIHN0YXRpYyBIYXNoTWFwPFdlYkdQVVBpcGVsaW5lKiwg
V2ViR1BVRGV2aWNlKj4mIGluc3RhbmNlcygpIFdURl9SRVFVSVJFU19MT0NLKGluc3RhbmNlc0xv
Y2soKSk7CisgICAgc3RhdGljIENoZWNrZWRMb2NrJiBpbnN0YW5jZXNMb2NrKCkgV1RGX1JFVFVS
TlNfTE9DSyhzX2luc3RhbmNlc0xvY2spOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGlw
ZWxpbmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbXB1
dGVQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02Myw2ICs2Myw5IEBAIHB1
YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdlYkdQVVBpcGVsaW5lKFdlYkdQVURldmljZSYsIEdQ
VUVycm9yU2NvcGVzJik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIENoZWNrZWRMb2NrIHNfaW5z
dGFuY2VzTG9jazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOGQzNGM2MjgyOWQ3
MTdhZTE4ZDZkNjljMDE1ZmI3NGJkMTk1ODZhOS4uZmU4MGQ0MDEwMDVlNTE0YjljOWY0ZDQ0YzA3
ZTk3YzA4ZGQxNTg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKQEAgLTc2LDYgKzc2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViU29ja2V0KTsKIAorQ2hlY2tlZExvY2sgV2Vi
U29ja2V0OjpzX2FsbEFjdGl2ZVdlYlNvY2tldHNMb2NrOworCiBjb25zdCBzaXplX3QgbWF4UmVh
c29uU2l6ZUluQnl0ZXMgPSAxMjM7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkUHJvdG9j
b2xDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQpAQCAtMTQ2LDE3ICsxNDgsMTUgQEAgV2ViU29j
a2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1f
ZXh0ZW5zaW9ucyhlbXB0eVN0cmluZygpKQogICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJldl
YlNvY2tldDo6cmVzdW1lVGltZXJGaXJlZCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2soYWxsQWN0
aXZlV2ViU29ja2V0c011dGV4KCkpOwotCi0gICAgYWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKS5h
ZGQodGhpcyk7CisgICAgTG9ja2VyIGxvY2tlciB7IGFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkg
fTsKKyAgICBhbGxBY3RpdmVXZWJTb2NrZXRzKCkuYWRkKHRoaXMpOwogfQogCiBXZWJTb2NrZXQ6
On5XZWJTb2NrZXQoKQogewogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2
ZVdlYlNvY2tldHNNdXRleCgpKTsKLQotICAgICAgICBhbGxBY3RpdmVXZWJTb2NrZXRzKGxvY2sp
LnJlbW92ZSh0aGlzKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGFsbEFjdGl2ZVdlYlNvY2tl
dHNMb2NrKCkgfTsKKyAgICAgICAgYWxsQWN0aXZlV2ViU29ja2V0cygpLnJlbW92ZSh0aGlzKTsK
ICAgICB9CiAKICAgICBpZiAobV9jaGFubmVsKQpAQCAtMTg4LDE2ICsxODgsMTUgQEAgRXhjZXB0
aW9uT3I8UmVmPFdlYlNvY2tldD4+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGMKICAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIHVybCwgVmVjdG9y
PFN0cmluZz4geyAxLCBwcm90b2NvbCB9KTsKIH0KIAotSGFzaFNldDxXZWJTb2NrZXQqPiYgV2Vi
U29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQorSGFzaFNldDxX
ZWJTb2NrZXQqPiYgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJTb2NrZXQqPj4gYWN0aXZlV2ViU29ja2V0czsK
ICAgICByZXR1cm4gYWN0aXZlV2ViU29ja2V0czsKIH0KIAotTG9jayYgV2ViU29ja2V0OjphbGxB
Y3RpdmVXZWJTb2NrZXRzTXV0ZXgoKQorQ2hlY2tlZExvY2smIFdlYlNvY2tldDo6YWxsQWN0aXZl
V2ViU29ja2V0c0xvY2soKQogewotICAgIHN0YXRpYyBMb2NrIG11dGV4OwotICAgIHJldHVybiBt
dXRleDsKKyAgICByZXR1cm4gc19hbGxBY3RpdmVXZWJTb2NrZXRzTG9jazsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGFiZDIyNWJl
NThmYzk4ZDI2MjlkNjY5N2NiZGQ4ZGFlZjg1NmYzYjMuLjcyNzA2OTk3MjU5M2YwMTZlZTQxMzcx
ODBhYjg3NDBlZTc2ODc1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNjAsOCArNjEs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcHJvdG9jb2xzKTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAotICAg
IHN0YXRpYyBIYXNoU2V0PFdlYlNvY2tldCo+JiBhbGxBY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExv
Y2tIb2xkZXImKTsKLSAgICBzdGF0aWMgTG9jayYgYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCk7
CisgICAgc3RhdGljIEhhc2hTZXQ8V2ViU29ja2V0Kj4mIGFsbEFjdGl2ZVdlYlNvY2tldHMoKSBX
VEZfUkVRVUlSRVNfTE9DSyhzX2FsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKTsKKyAgICBzdGF0aWMg
Q2hlY2tlZExvY2smIGFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgV1RGX1JFVFVSTlNfTE9DSyhz
X2FsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKTsKIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBD
T05ORUNUSU5HID0gMCwKQEAgLTEzMSw2ICsxMzIsNyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBj
bGFzcyBCaW5hcnlUeXBlIHsgQmxvYiwgQXJyYXlCdWZmZXIgfTsKIAorICAgIHN0YXRpYyBDaGVj
a2VkTG9jayBzX2FsbEFjdGl2ZVdlYlNvY2tldHNMb2NrOwogICAgIFJlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVsOwogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IENPTk5F
Q1RJTkcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQppbmRleCBiZDUyY2I0OTE4ODZiZWU0Y2Q2Mzk4N2YyMjAzZDQyYjdiNDVhOWNlLi4wZjVjMjlh
NGFmYzQ1NmZjZWRkYTI0YmI0ZWFiZGFhYmJiNjEzZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC00OSw4ICs0OSw4IEBACiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNMb2NrLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlSW50ZXJuYWwuaD4K
KyNpbXBvcnQgPHd0Zi9DaGVja2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KLSNp
bXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBv
cnQgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
NzAsMTEgKzcwLDExIEBAIHVzaW5nIEpTQzo6bWFrZVNvdXJjZTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgTG9jayBzcGluTG9jazsKK3N0YXRpYyBDaGVja2VkTG9jayB3cmFwcGVy
Q2FjaGVMb2NrOwogc3RhdGljIENyZWF0ZVdyYXBwZXJGdW5jdGlvbiBjcmVhdGVET01XcmFwcGVy
RnVuY3Rpb247CiBzdGF0aWMgRGlzY29ubmVjdFdpbmRvd1dyYXBwZXJGdW5jdGlvbiBkaXNjb25u
ZWN0V2luZG93V3JhcHBlckZ1bmN0aW9uOwogCi1zdGF0aWMgSGFzaE1hcDxKU09iamVjdCosIE5T
T2JqZWN0ICo+JiB3cmFwcGVyQ2FjaGUoKQorc3RhdGljIEhhc2hNYXA8SlNPYmplY3QqLCBOU09i
amVjdCAqPiYgd3JhcHBlckNhY2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0sod3JhcHBlckNhY2hlTG9j
aykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxKU09iamVjdCosIE5TT2Jq
ZWN0ICo+PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIEhh
c2hNYXA8SlNPYmplY3QqLCBOU09iamVjdCAqPiYgd3JhcHBlckNhY2hlKCkKIE5TT2JqZWN0ICpn
ZXRKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBMb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyB3cmFwcGVyQ2FjaGVMb2NrIH07CiAKICAgICBOU09iamVjdCogd3JhcHBlciA9IHdyYXBwZXJD
YWNoZSgpLmdldChpbXBsKTsKICAgICByZXR1cm4gd3JhcHBlciA/IHJldGFpblB0cih3cmFwcGVy
KS5hdXRvcmVsZWFzZSgpIDogbmlsOwpAQCAtOTIsMjEgKzkyLDIxIEBAIE5TT2JqZWN0ICpnZXRK
U1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiB2b2lkIGFkZEpTV3JhcHBlcihOU09iamVjdCAqd3Jh
cHBlciwgSlNPYmplY3QqIGltcGwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBMb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB3cmFw
cGVyQ2FjaGVMb2NrIH07CiAKICAgICB3cmFwcGVyQ2FjaGUoKS5zZXQoaW1wbCwgd3JhcHBlcik7
CiB9CiAKIHZvaWQgcmVtb3ZlSlNXcmFwcGVyKEpTT2JqZWN0KiBpbXBsKQogewotICAgIExvY2tI
b2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZXJDYWNo
ZUxvY2sgfTsKIAogICAgIHdyYXBwZXJDYWNoZSgpLnJlbW92ZShpbXBsKTsKIH0KIAogc3RhdGlj
IHZvaWQgcmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZShOU09iamVjdCogd3JhcHBlciwg
SlNPYmplY3QqIGltcGwpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIoJnNwaW5Mb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgd3JhcHBlckNhY2hlTG9jayB9OwogCiAgICAgaWYgKFt3cmFwcGVy
IHJldGFpbkNvdW50XSA9PSAxKQogICAgICAgICB3cmFwcGVyQ2FjaGUoKS5yZW1vdmUoaW1wbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNw
cAppbmRleCAyMmYyNzdhOGFkOTVlYjBkNjQ1ZTRiNGQ4NDA5NDg1MDU0Njg0ODBkLi4zNjQ2YjQ3
Y2I1MWYyZDMyNTRiZjE5OGQyNWUxNjE1MWJkOTMzZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKQEAgLTI5LDE2ICsyOSwxNyBA
QAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtLmgi
Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgTG9jayByZWdpc3RyeU11dGV4OwotCiBD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeSYgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRv
bigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
PiByZWdpc3RyeTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5PiByZWdpc3RyeTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
KyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICByZWdpc3RyeS5jb25z
dHJ1Y3QoKTsKKyAgICB9KTsKICAgICByZXR1cm4gcmVnaXN0cnk7CiB9CiAKQEAgLTUyLDcgKzUz
LDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3QKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHJlZ2lzdHJ5TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIC8v
IEZJWE1FOiBIb3cgaXMgaXQgaGVscGZ1bCB0byBjYWxsIGlzb2xhdGVkQ29weSBvbiB0aGUgYXJn
dW1lbnQgdG8gZmluZD8KICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzLmZpbmQo
bmFtZS5pc29sYXRlZENvcHkoKSk7CkBAIC02NCw3ICs2NSw3IEBAIE9wdGlvbmFsPENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKGNv
bnN0IFN0CiAKIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFtZShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhyZWdpc3RyeU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBh
dXRvIGNvbnRydWN0b3IgPSBtX2NvbnN0cnVjdG9ycy5maW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihpZGVudGlmaWVyKSk7CiAgICAgaWYgKGNvbnRydWN0b3IgPT0gbV9jb25zdHJ1Y3RvcnMuZW5k
KCkpCkBAIC03NSw3ICs3Niw3IEBAIFN0cmluZyBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6bmFt
ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKIFJlZlB0cjxDcnlwdG9B
bGdvcml0aG0+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socmVn
aXN0cnlNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgYXV0byBj
b250cnVjdG9yID0gbV9jb25zdHJ1Y3RvcnMuZmluZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWRl
bnRpZmllcikpOwogICAgIGlmIChjb250cnVjdG9yID09IG1fY29uc3RydWN0b3JzLmVuZCgpKQpA
QCAtODYsNyArODcsNyBAQCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBDcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZQogCiB2b2lkIENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpyZWdpc3RlckFsZ29yaXRobShjb25zdCBTdHJpbmcmIG5hbWUsIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtQ29uc3Ry
dWN0b3IgY29uc3RydWN0b3IpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhyZWdpc3Ry
eU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBBU1NFUlQoIW1f
aWRlbnRpZmllcnMuY29udGFpbnMobmFtZSkpOwogICAgIEFTU0VSVCghbV9jb25zdHJ1Y3RvcnMu
Y29udGFpbnMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlkZW50aWZpZXIpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCmluZGV4IGZlYTNjY2E5
MjNlNDc5MTJhODRmMDY4NzkzODgxMGYzOTgxMjU0YzUuLmNiOTE4NjUxM2U2MDBmMDJmOWFjMmVm
NTk3YWE5OTczNDI5MzdhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9B
bGdvcml0aG1SZWdpc3RyeS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNz
IENyeXB0b0FsZ29yaXRobTsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5KTsKLSAgICBmcmll
bmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+OworICAgIGZy
aWVuZCBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ8Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk+Owog
CiBwdWJsaWM6CiAgICAgc3RhdGljIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5JiBzaW5nbGV0b24o
KTsKQEAgLTYyLDggKzYzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJBbGdvcml0
aG0oY29uc3QgU3RyaW5nJiBuYW1lLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9B
bGdvcml0aG1Db25zdHJ1Y3Rvcik7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX2lkZW50aWZpZXJzOwot
ICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUNv
bnN0cnVjdG9yPj4gbV9jb25zdHJ1Y3RvcnM7CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOworICAg
IEhhc2hNYXA8U3RyaW5nLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IG1faWRlbnRpZmllcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwor
ICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6cGFpcjxTdHJpbmcsIENyeXB0b0FsZ29yaXRobUNv
bnN0cnVjdG9yPj4gbV9jb25zdHJ1Y3RvcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAK
aW5kZXggYmJjMDg1YTI5YTM1NmM1NTAwODBjMzU4NDM2NmY1OGNiMTI0YTZlNC4uYjc2NTg2MmU2
Yzc2NWM4OWUxY2I1OWViZDhhZjMxYTYyOGYxMjVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL1Njb3BlLmg+CkBAIC00Myw4ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lc3NhZ2VQb3J0KTsKIAotc3RhdGljIExv
Y2sgYWxsTWVzc2FnZVBvcnRzTG9jazsKLXN0YXRpYyBIYXNoTWFwPE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciwgTWVzc2FnZVBvcnQqPiYgYWxsTWVzc2FnZVBvcnRzKCkKK3N0YXRpYyBDaGVja2VkTG9j
ayBhbGxNZXNzYWdlUG9ydHNMb2NrOworc3RhdGljIEhhc2hNYXA8TWVzc2FnZVBvcnRJZGVudGlm
aWVyLCBNZXNzYWdlUG9ydCo+JiBhbGxNZXNzYWdlUG9ydHMoKSBXVEZfUkVRVUlSRVNfTE9DSyhh
bGxNZXNzYWdlUG9ydHNMb2NrKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PE1lc3NhZ2VQb3J0SWRlbnRpZmllciwgTWVzc2FnZVBvcnQqPj4gbWFwOwogICAgIHJldHVybiBt
YXA7CkBAIC02MSw3ICs2Miw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRlcmVmKCkgY29uc3QKICAg
ICAvLyBUaGlzIGFsbG93cyBpc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlIGFu
ZCBub3RpZnlNZXNzYWdlQXZhaWxhYmxlIHRvIGVhc2lseSBxdWVyeSB0aGUgbWFwIGFuZCBtYW5p
cHVsYXRlIE1lc3NhZ2VQb3J0IGluc3RhbmNlcy4KIAogICAgIGlmICghLS1tX3JlZkNvdW50KSB7
Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoYWxsTWVzc2FnZVBvcnRzTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAKICAgICAgICAgaWYg
KG1fcmVmQ291bnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NiwxNCArNzcsMTQgQEAgdm9p
ZCBNZXNzYWdlUG9ydDo6ZGVyZWYoKSBjb25zdAogCiBib29sIE1lc3NhZ2VQb3J0Ojppc0V4aXN0
aW5nTWVzc2FnZVBvcnRMb2NhbGx5UmVhY2hhYmxlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgaWRlbnRpZmllcikKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0
c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAg
YXV0byogcG9ydCA9IGFsbE1lc3NhZ2VQb3J0cygpLmdldChpZGVudGlmaWVyKTsKICAgICByZXR1
cm4gcG9ydCAmJiBwb3J0LT5pc0xvY2FsbHlSZWFjaGFibGUoKTsKIH0KIAogdm9pZCBNZXNzYWdl
UG9ydDo6bm90aWZ5TWVzc2FnZUF2YWlsYWJsZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxNZXNzYWdlUG9ydHNM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgYWxsTWVzc2FnZVBvcnRzTG9jayB9OwogICAgIGlm
IChhdXRvKiBwb3J0ID0gYWxsTWVzc2FnZVBvcnRzKCkuZ2V0KGlkZW50aWZpZXIpKQogICAgICAg
ICBwb3J0LT5tZXNzYWdlQXZhaWxhYmxlKCk7CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBNZXNzYWdl
UG9ydDo6TWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgTQogewogICAgIExPRyhNZXNzYWdlUG9ydHMsICJDcmVhdGVkIE1lc3Nh
Z2VQb3J0ICVzICglcCkgaW4gcHJvY2VzcyAlIiBQUkl1NjQsIG1faWRlbnRpZmllci5sb2dTdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzLCBQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbE1lc3NhZ2VQb3J0c0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBhbGxNZXNzYWdlUG9ydHNMb2NrIH07CiAgICAgYWxsTWVzc2FnZVBv
cnRzKCkuc2V0KG1faWRlbnRpZmllciwgdGhpcyk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFdl
YWtQdHJGYWN0b3J5IGdldHMgaW5pdGlhbGl6ZWQgZWFnZXJseSBvbiB0aGUgdGhyZWFkIHRoZSBN
ZXNzYWdlUG9ydCBnZXRzIGNvbnN0cnVjdGVkIG9uIGZvciB0aHJlYWQtc2FmZXR5IHJlYXNvbnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXgg
ODhhYWNmMzU1ODE1YjYzNDRhN2M4MGQxNmE3YWU5MTg5MWE0Y2E0Yy4uNGE1ODY2ZGE3NGQyMDU2
ODk2ZTJhNDY4NDA3ZTU0MGJhYjYyOTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTUHJvbWlzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKyNp
bmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KQEAgLTc5
LDggKzgwLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKLXN0YXRpYyBMb2NrIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jazsKLXN0
YXRpYyBIYXNoTWFwPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kj4mIGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkKK3N0YXRpYyBD
aGVja2VkTG9jayBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2s7CitzdGF0aWMgSGFz
aE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCo+JiBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpIFdURl9SRVFVSVJFU19MT0NL
KGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jaykKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCo+PiBjb250ZXh0czsKICAgICBBU1NFUlQoYWxsU2NyaXB0RXhlY3V0
aW9uQ29udGV4dHNNYXBMb2NrLmlzTG9ja2VkKCkpOwpAQCAtMTEzLDcgKzExNCw3IEBAIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNvbnRl
eHRJZGVudGlmaWVyKCkgY29uCiB7CiAgICAgQVNTRVJUKGlzQ29udGV4dFRocmVhZCgpKTsKICAg
ICBpZiAoIW1fY29udGV4dElkZW50aWZpZXIpIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXBMb2NrIH07CiAKICAgICAgICAgbV9j
b250ZXh0SWRlbnRpZmllciA9IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwogCkBAIC0xMjYsNyArMTI3LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y29udGV4dElkZW50aWZpZXIoKSBjb24KIHZv
aWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVtb3ZlRnJvbUNvbnRleHRzTWFwKCkKIHsKICAg
ICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICAgICAgQVNTRVJU
KGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRp
ZmllcikpOwogICAgICAgICBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcCgpLnJlbW92ZSht
X2NvbnRleHRJZGVudGlmaWVyKTsKICAgICB9CkBAIC0xNjIsNyArMTYzLDcgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogCiAjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewotICAgICAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBhbGxTY3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghYWxsU2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5j
b250YWlucyhtX2NvbnRleHRJZGVudGlmaWVyKSwKICAgICAgICAgICAgICJBIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgc3ViY2xhc3MgaW5zdGFuY2UgaW1wbGVtZW50aW5nIHBvc3RUYXNrIHNob3Vs
ZCBoYXZlIGFscmVhZHkgcmVtb3ZlZCBpdHNlbGYgZnJvbSB0aGUgbWFwIik7CiAgICAgfQpAQCAt
NjIzLDcgKzYyNCw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXIqIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmVuc3VyZVNlcnZpY2VXb3JrZXJDb250YWluZXIoKQogCiBib29sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIg
aWRlbnRpZmllciwgVGFzayYmIHRhc2spCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBhbGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0c01hcExvY2sgfTsKICAgICBhdXRvKiBjb250ZXh0ID0gYWxs
U2NyaXB0RXhlY3V0aW9uQ29udGV4dHNNYXAoKS5nZXQoaWRlbnRpZmllcik7CiAKICAgICBpZiAo
IWNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDQxZmQ0MzA1N2VlYjJmYTMzMTdjNjlhYWNjYTI4YmFl
MzczNjM0YTIuLmI2NjkxYTIyZGNiMzU4ZGI2NDA0ZWVlYmY3YzQ3OGEyMjUwN2MzZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC00NiwzMCArNDYsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCk7CiAKLUhhc2hTZXQ8
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5j
ZXMoY29uc3QgTG9ja0hvbGRlciYpCitDaGVja2VkTG9jayBDYW52YXNSZW5kZXJpbmdDb250ZXh0
OjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29udGV4dCo+JiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQqPj4gaW5zdGFuY2VzOwogICAg
IHJldHVybiBpbnN0YW5jZXM7CiB9CiAKLUxvY2smIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omlu
c3RhbmNlc011dGV4KCkKK0NoZWNrZWRMb2NrJiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0
YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7
CisgICAgcmV0dXJuIHNfaW5zdGFuY2VzTG9jazsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiBjYW52YXMpCiAgICAgOiBtX2Nh
bnZhcyhjYW52YXMpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKGluc3RhbmNlc011dGV4KCkpOwot
ICAgIGluc3RhbmNlcyhsb2NrKS5hZGQodGhpcyk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluc3Rh
bmNlc0xvY2soKSB9OworICAgIGluc3RhbmNlcygpLmFkZCh0aGlzKTsKIH0KIAogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6fkNhbnZhc1JlbmRlcmluZ0NvbnRleHQoKQogewotICAgIExvY2tIb2xk
ZXIgbG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICBBU1NFUlQoaW5zdGFuY2VzKGxvY2spLmNv
bnRhaW5zKHRoaXMpKTsKLSAgICBpbnN0YW5jZXMobG9jaykucmVtb3ZlKHRoaXMpOworICAgIExv
Y2tlciBsb2NrZXIgeyBpbnN0YW5jZXNMb2NrKCkgfTsKKyAgICBBU1NFUlQoaW5zdGFuY2VzKCku
Y29udGFpbnModGhpcykpOworICAgIGluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAogdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpyZWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDZmNjg4ZDZlYzRhYjg5
OTUzYzViZjQ3ZDQxNDFlMmI1MzEzMzVmNzkuLjRkNTlhM2YwYzhmNmU1MGZjNTBjMTM3MmMzYjRl
ZWNkN2Y5MzJkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYW52YXNC
YXNlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBw
YWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgpAQCAtNTEsOCArNTIsOCBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDog
cHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dCgpOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dCo+JiBpbnN0YW5jZXMoY29uc3QgTG9ja0hvbGRlciYpOwotICAgIHN0YXRpYyBMb2NrJiBp
bnN0YW5jZXNNdXRleCgpOworICAgIHN0YXRpYyBIYXNoU2V0PENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQqPiYgaW5zdGFuY2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0soaW5zdGFuY2VzTG9jaygpKTsKKyAg
ICBzdGF0aWMgQ2hlY2tlZExvY2smIGluc3RhbmNlc0xvY2soKSBXVEZfUkVUVVJOU19MT0NLKHNf
aW5zdGFuY2VzTG9jayk7CiAKICAgICB2b2lkIHJlZigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGVyZWYoKTsKQEAgLTExMSw2ICsxMTIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2hh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgeyBmYWxzZSB9OwogCiBwcml2YXRlOgor
ICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBDYW52YXNCYXNl
JiBtX2NhbnZhczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwCmluZGV4IGY2NTI1MTQ3MTkwZDkxZDM0YjM0YjcxNWY2ZDMwMDgzMjNhMjI4MGUuLmE5
ZTY1MmMxNDIxZWM3ZTUyYzkzYTQ0ZTUyZmJmODIzNGMwOGIwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcApAQCAtNDUsMTYgKzQ1LDE3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotSGFzaE1hcDxXZWJHTFByb2dyYW0qLCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKj4mIFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKGNvbnN0IExvY2tIb2xkZXIm
KQorQ2hlY2tlZExvY2sgV2ViR0xQcm9ncmFtOjpzX2luc3RhbmNlc0xvY2s7CisKK0hhc2hNYXA8
V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBXZWJHTFByb2dyYW06
Omluc3RhbmNlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8V2ViR0xQ
cm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+PiBpbnN0YW5jZXM7CiAgICAgcmV0
dXJuIGluc3RhbmNlczsKIH0KIAotTG9jayYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXNNdXRleCgp
CitDaGVja2VkTG9jayYgV2ViR0xQcm9ncmFtOjppbnN0YW5jZXNMb2NrKCkKIHsKLSAgICBzdGF0
aWMgTG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfaW5zdGFuY2Vz
TG9jazsKIH0KIAogUmVmPFdlYkdMUHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQpAQCAtNjksOCArNzAsOCBAQCBXZWJHTFByb2dyYW06
OldlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIg
bG9jayhpbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgaW5zdGFuY2VzKGxvY2spLmFkZCh0aGlz
LCAmY3R4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGluc3RhbmNlc0xvY2soKSB9OworICAg
ICAgICBpbnN0YW5jZXMoKS5hZGQodGhpcywgJmN0eCk7CiAgICAgfQogCiAgICAgc2V0T2JqZWN0
KGN0eC5ncmFwaGljc0NvbnRleHRHTCgpLT5jcmVhdGVQcm9ncmFtKCkpOwpAQCAtODEsOSArODIs
OSBAQCBXZWJHTFByb2dyYW06On5XZWJHTFByb2dyYW0oKQogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbERlc3Ryb3lXZWJHTFByb2dyYW0oKnRoaXMpOwogCiAgICAgewotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2soaW5zdGFuY2VzTXV0ZXgoKSk7Ci0gICAgICAgIEFTU0VSVChpbnN0
YW5jZXMobG9jaykuY29udGFpbnModGhpcykpOwotICAgICAgICBpbnN0YW5jZXMobG9jaykucmVt
b3ZlKHRoaXMpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgaW5zdGFuY2VzTG9jaygpIH07Cisg
ICAgICAgIEFTU0VSVChpbnN0YW5jZXMoKS5jb250YWlucyh0aGlzKSk7CisgICAgICAgIGluc3Rh
bmNlcygpLnJlbW92ZSh0aGlzKTsKICAgICB9CiAKICAgICBpZiAoIWhhc0dyb3VwT3JDb250ZXh0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IDZjOWUz
NGVkZGU1MGRiYzNjZmRkMmExMWY5MTk5ZjIxY2RkZTQ2MjYuLjEwMDBkMTg5ZDFmM2FmY2UyYTE2
OTI5YWZiYzFiZDhlZDI5NGQ0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UHJvZ3JhbS5oCkBAIC0yOSw5ICsyOSw5IEBACiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYkdMU2hhcmVkT2JqZWN0LmgiCisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaEZ1bmN0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9ncmFtPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMUHJvZ3JhbSgpOwogCi0gICAgc3RhdGljIEhhc2hN
YXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+JiBpbnN0YW5jZXMo
Y29uc3QgV1RGOjpMb2NrSG9sZGVyJik7Ci0gICAgc3RhdGljIExvY2smIGluc3RhbmNlc011dGV4
KCk7CisgICAgc3RhdGljIEhhc2hNYXA8V2ViR0xQcm9ncmFtKiwgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSo+JiBpbnN0YW5jZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhpbnN0YW5jZXNMb2NrKCkp
OworICAgIHN0YXRpYyBDaGVja2VkTG9jayYgaW5zdGFuY2VzTG9jaygpIFdURl9SRVRVUk5TX0xP
Q0soc19pbnN0YW5jZXNMb2NrKTsKIAogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFs
OwogCkBAIC05OCw2ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYWNoZUFjdGl2ZUF0dHJp
YkxvY2F0aW9ucyhHcmFwaGljc0NvbnRleHRHTCopOwogICAgIHZvaWQgY2FjaGVJbmZvSWZOZWVk
ZWQoKTsKIAorICAgIHN0YXRpYyBDaGVja2VkTG9jayBzX2luc3RhbmNlc0xvY2s7CisKICAgICBW
ZWN0b3I8R0NHTGludD4gbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnM7CiAKICAgICBHQ0dMaW50IG1f
bGlua1N0YXR1cyB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYzEwYzQ2NDM3OTU5NWFiMGM3
NzE2Y2YyZThmOGUyNWNmYmU3NzM5MS4uYzI0YTg0ZGE4ZDMwNjg3YzYyZWU5YzU4MmE0ZGRkOWEy
ODBiNTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEwNTIsOCArMTA1Miw4IEBAIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6On5XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKCkKICAgICB9CiAK
ICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhXZWJHTFByb2dyYW06Omluc3RhbmNlc011
dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogV2ViR0xQcm9ncmFtOjppbnN0YW5j
ZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFdlYkdMUHJvZ3JhbTo6aW5zdGFu
Y2VzTG9jaygpIH07CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBXZWJHTFByb2dyYW06Omlu
c3RhbmNlcygpKSB7CiAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUgPT0gdGhpcykgewogICAg
ICAgICAgICAgICAgIC8vIERvbid0IHJlbW92ZSBhbnkgV2ViR0xQcm9ncmFtIGZyb20gdGhlIGlu
c3RhbmNlcyBsaXN0LCBhcyB0aGV5IG1heSBzdGlsbCBleGlzdC4KICAgICAgICAgICAgICAgICAv
LyBPbmx5IHJlbW92ZSB0aGUgYXNzb2NpYXRpb24gd2l0aCBhIFdlYkdMIGNvbnRleHQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDNkODM5YjQx
YTNkOGRmOTVhYzA3YTVjYzUwYmFhYjkwMDExNzg3MmQuLjBmZWQxZmIyYmIzZGE1ZDNhMjAxYzdm
Y2ExYjUwOGQxNzQ3Yzg4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCkBAIC0xNzAsOCArMTcwLDggQEAgSFRNTENhbnZhc0VsZW1lbnQqIEluc3Bl
Y3RvckNhbnZhczo6Y2FudmFzRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIFsmXSAoc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxXZWJHUFVEZXZpY2U+IGRldmljZVdyYXBwZXIpIC0+IEhUTUxDYW52YXNF
bGVtZW50KiB7CiAgICAgICAgICAgICBhdXRvJiBkZXZpY2UgPSBkZXZpY2VXcmFwcGVyLmdldCgp
OwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpp
bnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzTG9jaygpIH07CisgICAgICAgICAgICAgICAgZm9y
IChhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
aW5zdGFuY2VzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1l
bnQgPSBjYW52YXNJZkNvbnRleHRNYXRjaGVzRGV2aWNlKCpjYW52YXNSZW5kZXJpbmdDb250ZXh0
LCBkZXZpY2UpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbnZhc0VsZW1lbnQ7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMjcxLDggKzI3MSw4IEBAIEhhc2hTZXQ8RWxlbWVudCo+
IEluc3BlY3RvckNhbnZhczo6Y2xpZW50Tm9kZXMoKSBjb25zdAogCiAgICAgICAgICAgICBIYXNo
U2V0PEVsZW1lbnQqPiBjYW52YXNFbGVtZW50Q2xpZW50czsKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFu
Y2VzTXV0ZXgoKSk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvKiBjYW52YXNSZW5kZXJpbmdD
b250ZXh0IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAg
ICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3Rh
bmNlc0xvY2soKSB9OworICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2FudmFzUmVuZGVyaW5n
Q29udGV4dCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlcygpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVtZW50ID0gY2FudmFzSWZDb250ZXh0TWF0
Y2hlc0RldmljZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgZGV2aWNlKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnRDbGllbnRzLmFkZChjYW52YXNFbGVtZW50KTsKICAg
ICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDUyNmQwZjc0MTZjNWZiYzE5YWY5
YmY3OTgyYTYwNGMwYWU5MGJkN2QuLmIxNjc4NDgwOTA4MmU2OWMyMWYzZjk2MGUyNmUwMWNkZTc2
N2E1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC0xNDAsOCArMTQwLDggQEAgUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmVuYWJsZSgpCiAgICAgfTsK
IAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
Omluc3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBm
b3IgKGF1dG8qIGNvbnRleHQgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjppbnN0YW5jZXMoKSkg
ewogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgICAgICAgICAvLyBUaGUgYWN0dWFsICJjb250ZXh0
IiBmb3IgV2ViR1BVIGlzIHRoZSBgV2ViR1BVRGV2aWNlYCwgbm90IHRoZSA8Y2FudmFzPi4KICAg
ICAgICAgICAgIGlmIChpczxHUFVDYW52YXNDb250ZXh0Pihjb250ZXh0KSkKQEAgLTE1NSw4ICsx
NTUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2soV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNNdXRleCgpKTsKLSAgICAgICAgZm9yIChh
dXRvKiBkZXZpY2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcyhsb2NrKSkgeworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgV2ViR1BVRGV2aWNlOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAg
Zm9yIChhdXRvKiBkZXZpY2UgOiBXZWJHUFVEZXZpY2U6Omluc3RhbmNlcygpKSB7CiAgICAgICAg
ICAgICBpZiAoZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkpCiAgICAgICAgICAgICAgICAgYmluZENhbnZhcygqZGV2aWNlLCBmYWxzZSk7CiAgICAg
ICAgIH0KQEAgLTE2NSw4ICsxNjUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9jayhXZWJHTFByb2dyYW06Omluc3RhbmNlc011dGV4KCkp
OwotICAgICAgICBmb3IgKGF1dG8mIFtwcm9ncmFtLCBjb250ZXh0V2ViR0xCYXNlXSA6IFdlYkdM
UHJvZ3JhbTo6aW5zdGFuY2VzKGxvY2spKSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBXZWJH
TFByb2dyYW06Omluc3RhbmNlc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8mIFtwcm9ncmFt
LCBjb250ZXh0V2ViR0xCYXNlXSA6IFdlYkdMUHJvZ3JhbTo6aW5zdGFuY2VzKCkpIHsKICAgICAg
ICAgICAgIGlmIChjb250ZXh0V2ViR0xCYXNlICYmIGV4aXN0c0luQ3VycmVudFBhZ2UoY29udGV4
dFdlYkdMQmFzZS0+Y2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAg
ICAgICAgICAgICAgZGlkQ3JlYXRlV2ViR0xQcm9ncmFtKCpjb250ZXh0V2ViR0xCYXNlLCAqcHJv
Z3JhbSk7CiAgICAgICAgIH0KQEAgLTE3NSw4ICsxNzUsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZW5hYmxlKCkKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2soV2ViR1BVUGlwZWxpbmU6Omlu
c3RhbmNlc011dGV4KCkpOwotICAgICAgICBmb3IgKGF1dG8mIFtwaXBlbGluZSwgZGV2aWNlXSA6
IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXMobG9jaykpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IFdlYkdQVVBpcGVsaW5lOjppbnN0YW5jZXNMb2NrKCkgfTsKKyAgICAgICAgZm9yIChhdXRv
JiBbcGlwZWxpbmUsIGRldmljZV0gOiBXZWJHUFVQaXBlbGluZTo6aW5zdGFuY2VzKCkpIHsKICAg
ICAgICAgICAgIGlmIChkZXZpY2UgJiYgZXhpc3RzSW5DdXJyZW50UGFnZShkZXZpY2UtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkgJiYgcGlwZWxpbmUtPmlzVmFsaWQoKSkKICAgICAgICAgICAg
ICAgICBkaWRDcmVhdGVXZWJHUFVQaXBlbGluZSgqZGV2aWNlLCAqcGlwZWxpbmUpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZTlkMzVkM2IyMGU5MWVlOWJhMTkyZDQxMWQwNDI5
NTM1YTYyZThkNS4uNDMwMDEyYzVmMTdhYjdlMzMyZDkyMGU5OTM4NWI4MzJlZDVhYzVjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcApAQCAtODI2LDkgKzgyNiw5IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKCkKICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMuc2V0RW5hYmxlZE5ldHdvcmtBZ2VudCh0aGlzKTsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRz
TG9jaygpIH07CiAKLSAgICAgICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQgOiBhY3RpdmVXZWJTb2Nr
ZXRzKGxvY2spKSB7CisgICAgICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogYWN0aXZlV2ViU29j
a2V0cygpKSB7CiAgICAgICAgICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEw
MDksOSArMTAwOSw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpnZXRTZXJpYWxpemVkQ2VydGlmaWNhdGUoCiAKIFdlYlNvY2tldCogSW5z
cGVjdG9yTmV0d29ya0FnZW50Ojp3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQoY29uc3QgUHJvdG9jb2w6
Ok5ldHdvcms6OlJlcXVlc3RJZCYgcmVxdWVzdElkKQogewotICAgIExvY2tIb2xkZXIgbG9jayhX
ZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpIH07CiAKLSAgICBmb3IgKGF1
dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKKyAgICBmb3IgKGF1dG8q
IHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMoKSkgewogICAgICAgICBpZiAoSWRlbnRpZmll
cnNGYWN0b3J5OjpyZXF1ZXN0SWQod2ViU29ja2V0LT5jaGFubmVsKCktPnByb2dyZXNzSWRlbnRp
ZmllcigpKSA9PSByZXF1ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm4gd2ViU29ja2V0OwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCmluZGV4IDkzMzYwMTc2MTY2NzQxN2ViZTVkZTMwMTU4Njg2OWNjYzY0
ZmMzZGEuLjhiMmUyOTY3MDVhNWFkN2IzN2I1NWE0ZmI2NjdmZjBkOGQzMmY5NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9SZWd1bGFyRXhwcmVzc2lvbi5oPgpAQCAtMTMzLDcgKzEzNCw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6TG9h
ZGVySWQgbG9hZGVySWRlbnRpZmllcihEb2N1bWVudExvYWRlciopID0gMDsKICAgICB2aXJ0dWFs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgZnJhbWVJZGVudGlmaWVyKERv
Y3VtZW50TG9hZGVyKikgPSAwOwotICAgIHZpcnR1YWwgVmVjdG9yPFdlYlNvY2tldCo+IGFjdGl2
ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxX
ZWJTb2NrZXQqPiBhY3RpdmVXZWJTb2NrZXRzKCkgV1RGX1JFUVVJUkVTX0xPQ0soV2ViU29ja2V0
OjphbGxBY3RpdmVXZWJTb2NrZXRzTG9jaygpKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJl
c291cmNlQ2FjaGluZ0Rpc2FibGVkSW50ZXJuYWwoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dChJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
OkZyYW1lSWQmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEZvcmNlQnVmZmVyaW5nTmV0
d29ya1Jlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAppbmRleCA2NTJh
NzlmNTcxNDU1YWM5NmNkMDRhMjQwZWM0ZDliNzY1Y2ZjZjMxLi5iYjRmNmJhN2MyY2M2MTg1ODU4
NzE5NmM5NzNhMmMzODZmODhmNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCkBAIC02NSwxMSArNjUs
MTEgQEAgUHJvdG9jb2w6Ok5ldHdvcms6OkZyYW1lSWQgUGFnZU5ldHdvcmtBZ2VudDo6ZnJhbWVJ
ZGVudGlmaWVyKERvY3VtZW50TG9hZGVyKiBsb2EKICAgICByZXR1cm4geyB9OwogfQogCi1WZWN0
b3I8V2ViU29ja2V0Kj4gUGFnZU5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cyhjb25zdCBM
b2NrSG9sZGVyJiBsb2NrKQorVmVjdG9yPFdlYlNvY2tldCo+IFBhZ2VOZXR3b3JrQWdlbnQ6OmFj
dGl2ZVdlYlNvY2tldHMoKQogewogICAgIFZlY3RvcjxXZWJTb2NrZXQqPiB3ZWJTb2NrZXRzOwog
Ci0gICAgZm9yIChhdXRvKiB3ZWJTb2NrZXQgOiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tl
dHMobG9jaykpIHsKKyAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0
aXZlV2ViU29ja2V0cygpKSB7CiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IHdlYlNvY2tldC0+Y2hh
bm5lbCgpOwogICAgICAgICBpZiAoIWNoYW5uZWwpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29y
a0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdv
cmtBZ2VudC5oCmluZGV4IGMxMjk5OTZjMWJmYjQ1MWQ3N2RkNTIwZjRhMDg5YWZkNTU4M2MwZjAu
LjRiNjZjMmVhYTk4NDE0NGFkYTI2ZGNhMDM5NzBlODAxYjQyYjFlYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQu
aApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok5ldHdvcms6OkxvYWRlcklkIGxvYWRlcklkZW50aWZpZXIoRG9jdW1lbnRMb2FkZXIq
KTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkIGZyYW1lSWRlbnRp
ZmllcihEb2N1bWVudExvYWRlciopOwotICAgIFZlY3RvcjxXZWJTb2NrZXQqPiBhY3RpdmVXZWJT
b2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBWZWN0b3I8V2ViU29ja2V0Kj4gYWN0aXZl
V2ViU29ja2V0cygpIFdURl9SRVFVSVJFU19MT0NLKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29j
a2V0c0xvY2soKSk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZEludGVybmFs
KGJvb2wpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRGb3JjZUJ1ZmZlcmlu
Z05ldHdvcmtSZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggZWY4NjgzZmI2MjI4MThiYjU4ZmU5Mzc0NTEwZWQ1OTVhODg1
NWFhMS4uNGUxYTYyN2YwOWIxYmFlMGY3MGQxN2NlYzExNzNiOWU0YjU1ZWM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29ya0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJOZXR3b3JrQWdlbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFByb3RvY29sOjpOZXR3b3JrOjpG
cmFtZUlkIFdvcmtlck5ldHdvcmtBZ2VudDo6ZnJhbWVJZGVudGlmaWVyKERvY3VtZW50TG9hZGVy
KikKICAgICByZXR1cm4geyB9OwogfQogCi1WZWN0b3I8V2ViU29ja2V0Kj4gV29ya2VyTmV0d29y
a0FnZW50OjphY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQorVmVjdG9yPFdlYlNv
Y2tldCo+IFdvcmtlck5ldHdvcmtBZ2VudDo6YWN0aXZlV2ViU29ja2V0cygpCiB7CiAgICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJl
Y3RseSBkaXNwbGF5IHdvcmtlcidzIFdlYlNvY2tldHMKICAgICByZXR1cm4geyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyTmV0d29y
a0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJO
ZXR3b3JrQWdlbnQuaAppbmRleCBlNWRmZjlkMWEzNGQ5YmM0M2NiMjczMGE4MzA0NjBiNzc5ZTQ1
YTJiLi5kZTE0ZGVkMmFiYmUxNmIwNzVhNDJhYmJkNzA4YjdkZDM4MDViMjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJOZXR3b3JrQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJO
ZXR3b3JrQWdlbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkxvYWRlcklkIGxvYWRlcklkZW50aWZpZXIoRG9j
dW1lbnRMb2FkZXIqKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlk
IGZyYW1lSWRlbnRpZmllcihEb2N1bWVudExvYWRlciopOwotICAgIFZlY3RvcjxXZWJTb2NrZXQq
PiBhY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBWZWN0b3I8V2ViU29j
a2V0Kj4gYWN0aXZlV2ViU29ja2V0cygpIFdURl9SRVFVSVJFU19MT0NLKFdlYlNvY2tldDo6YWxs
QWN0aXZlV2ViU29ja2V0c0xvY2soKSk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNh
YmxlZEludGVybmFsKGJvb2wpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpGcmFtZUlkJik7CiAgICAgYm9vbCBzaG91bGRG
b3JjZUJ1ZmZlcmluZ05ldHdvcmtSZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDE3ODJhYTBhMmNhNmJi
YmE3MDEyMTQxMTVjMGYyMjAwNTlkMzY2NzcuLjUxODMzOTM1YWFlZWZhZjU4OTAyZTRiOWM2NmEw
MjRhOWQ1ZDlkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2Vy
Q29udGVudFVSTFBhdHRlcm4uaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDYsMTYgKzQ3
LDE2IEBAIHN0YXRpYyBTZWN1cml0eVBvbGljeTo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBv
bGljeSA9IFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvCiB0eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nl
c3NFbnRyeT4gT3JpZ2luQWNjZXNzQWxsb3dsaXN0OwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsK
IAotc3RhdGljIExvY2sgb3JpZ2luQWNjZXNzTWFwTG9jazsKLXN0YXRpYyBPcmlnaW5BY2Nlc3NN
YXAmIG9yaWdpbkFjY2Vzc01hcCgpCitzdGF0aWMgQ2hlY2tlZExvY2sgb3JpZ2luQWNjZXNzTWFw
TG9jazsKK3N0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpIFdURl9SRVFV
SVJFU19MT0NLKG9yaWdpbkFjY2Vzc01hcExvY2spCiB7CiAgICAgQVNTRVJUKG9yaWdpbkFjY2Vz
c01hcExvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcmlnaW5BY2Nl
c3NNYXA+IG9yaWdpbkFjY2Vzc01hcDsKICAgICByZXR1cm4gb3JpZ2luQWNjZXNzTWFwOwogfQog
Ci1zdGF0aWMgTG9jayBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jazsKLXN0YXRpYyBWZWN0b3I8VXNl
ckNvbnRlbnRVUkxQYXR0ZXJuPiYgb3JpZ2luQWNjZXNzUGF0dGVybnMoKQorc3RhdGljIENoZWNr
ZWRMb2NrIG9yaWdpbkFjY2Vzc1BhdHRlcm5Mb2NrOworc3RhdGljIFZlY3RvcjxVc2VyQ29udGVu
dFVSTFBhdHRlcm4+JiBvcmlnaW5BY2Nlc3NQYXR0ZXJucygpIFdURl9SRVFVSVJFU19MT0NLKG9y
aWdpbkFjY2Vzc1BhdHRlcm5Mb2NrKQogewogICAgIEFTU0VSVChvcmlnaW5BY2Nlc3NQYXR0ZXJu
TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxVc2VyQ29u
dGVudFVSTFBhdHRlcm4+PiBvcmlnaW5BY2Nlc3NQYXR0ZXJuczsKQEAgLTIwNSw3ICsyMDYsNyBA
QCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQoY29uc3QgU2VjdXJpdHlPcmln
aW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgUwogewogICAgIEFTU0VSVCh0YXJnZXRPcmlnaW4uZXF1
YWwoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0YXJnZXRVUkwpLnB0cigpKSk7CiAgICAgewotICAg
ICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9OwogICAgICAgICBpZiAoT3JpZ2lu
QWNjZXNzQWxsb3dsaXN0KiBsaXN0ID0gb3JpZ2luQWNjZXNzTWFwKCkuZ2V0KGFjdGl2ZU9yaWdp
bi50b1N0cmluZygpKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICpsaXN0KSB7
CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5Lm1hdGNoZXNPcmlnaW4odGFyZ2V0T3JpZ2luKSkK
QEAgLTIxMyw3ICsyMTQsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc0FsbG93ZWQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIGFjdGl2ZU9yaWdpbiwgY29uc3QgUwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNz
UGF0dGVybkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9j
ayB9OwogICAgIGZvciAoY29uc3QgYXV0byYgcGF0dGVybiA6IG9yaWdpbkFjY2Vzc1BhdHRlcm5z
KCkpIHsKICAgICAgICAgaWYgKHBhdHRlcm4ubWF0Y2hlcyh0YXJnZXRVUkwpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6
YWRkT3JpZ2luQWNjZXNzQWxsb3dsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJj
ZU8KIAogICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsK
IAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG9yaWdpbkFjY2Vzc01hcExvY2sgfTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBu
dWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9yaWdpbkFjY2Vzc0FsbG93bGlzdD4oKTsKQEAgLTI1
MSw3ICsyNTIsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NBbGxv
d2xpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cgogCiAgICAgU3RyaW5nIHNvdXJj
ZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwogCi0gICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNj
ZXNzTWFwTG9jayB9OwogICAgIE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFw
KCk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjppdGVyYXRvciBpdCA9IG1hcC5maW5kKHNvdXJjZVN0
cmluZyk7CiAgICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKQEAgLTI2OCwxMyArMjY5LDEzIEBAIHZv
aWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc0FsbG93bGlzdEVudHJ5KGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBzb3VyCiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2lu
QWNjZXNzQWxsb3dsaXN0cygpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nl
c3NNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb3JpZ2luQWNjZXNzTWFwTG9jayB9Owog
ICAgIG9yaWdpbkFjY2Vzc01hcCgpLmNsZWFyKCk7CiB9CiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6
OmFsbG93QWNjZXNzVG8oY29uc3QgVXNlckNvbnRlbnRVUkxQYXR0ZXJuJiBwYXR0ZXJuKQogewot
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzUGF0dGVybkxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBvcmlnaW5BY2Nlc3NQYXR0ZXJuTG9jayB9OwogICAgIG9yaWdpbkFjY2Vz
c1BhdHRlcm5zKCkuYXBwZW5kKHBhdHRlcm4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDk5MzVhZGMz
ZDNiMDFjMzBlOWZkNmM4NWI1MmE2ZmJhMWNkYTQzNzMuLjliYzZkMjk3N2VmOTEyMzhlZmEwMTVj
NmNkYzM4MzE1MGFhOGMzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCkBAIC0xNjEsOCArMTYxLDggQEAgdm9pZCBS
ZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNv
dXJjZVVzYWdlRGF0YSYgZGEKIAogICAgIEhhc2hTZXQ8bWFjaF9wb3J0X3Q+IGtub3duV2ViS2l0
VGhyZWFkczsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soVGhyZWFkOjph
bGxUaHJlYWRzTXV0ZXgoKSk7Ci0gICAgICAgIGZvciAoYXV0byogdGhyZWFkIDogVGhyZWFkOjph
bGxUaHJlYWRzKGxvY2tlcikpIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IFRocmVhZDo6YWxs
VGhyZWFkc0xvY2soKSB9OworICAgICAgICBmb3IgKGF1dG8qIHRocmVhZCA6IFRocmVhZDo6YWxs
VGhyZWFkcygpKSB7CiAgICAgICAgICAgICBtYWNoX3BvcnRfdCBtYWNoVGhyZWFkID0gdGhyZWFk
LT5tYWNoVGhyZWFkKCk7CiAgICAgICAgICAgICBpZiAoTUFDSF9QT1JUX1ZBTElEKG1hY2hUaHJl
YWQpKQogICAgICAgICAgICAgICAgIGtub3duV2ViS2l0VGhyZWFkcy5hZGQobWFjaFRocmVhZCk7
CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNv
bGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYgZGEKIAogICAgIEhhc2hN
YXA8bWFjaF9wb3J0X3QsIFN0cmluZz4ga25vd25Xb3JrZXJUaHJlYWRzOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9y
V29ya2xldFRocmVhZHNMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgV29ya2VyT3JX
b3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygpIH07CiAgICAgICAgIGZv
ciAoYXV0byogdGhyZWFkIDogV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRU
aHJlYWRzKCkpIHsKICAgICAgICAgICAgIC8vIElnbm9yZSB3b3JrZXIgdGhyZWFkcyB0aGF0IGhh
dmUgbm90IGJlZW4gZnVsbHkgc3RhcnRlZCB5ZXQuCiAgICAgICAgICAgICBpZiAoIXRocmVhZC0+
dGhyZWFkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNl
VXNhZ2VUaHJlYWRMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNl
VXNhZ2VUaHJlYWRMaW51eC5jcHAKaW5kZXggYjY1OWI3NzRmMjY0MDEzYTE3Y2Y1NmU2YzEzMTAy
NWVlY2NiY2UwYS4uMDJlNWQ0ODljYWI0M2Y4MzkzMzNkNDliZDI0YTU5NjkyOTg5NDdjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGlu
dXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVh
ZExpbnV4LmNwcApAQCAtMjMzLDggKzIzMyw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6
cGxhdGZvcm1Db2xsZWN0Q1BVRGF0YShKU0M6OlZNKiwgUmVzb3VyY2VVc2FnZURhdGEmIGRhCiAK
ICAgICBIYXNoU2V0PHBpZF90PiBrbm93bldlYktpdFRocmVhZHM7CiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKFRocmVhZDo6YWxsVGhyZWFkc011dGV4KCkpOwotICAgICAg
ICBmb3IgKGF1dG8qIHRocmVhZCA6IFRocmVhZDo6YWxsVGhyZWFkcyhsb2NrZXIpKSB7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBUaHJlYWQ6OmFsbFRocmVhZHNMb2NrKCkgfTsKKyAgICAgICAg
Zm9yIChhdXRvKiB0aHJlYWQgOiBUaHJlYWQ6OmFsbFRocmVhZHMoKSkgewogICAgICAgICAgICAg
aWYgKGF1dG8gaWQgPSB0aHJlYWQtPmlkKCkpCiAgICAgICAgICAgICAgICAga25vd25XZWJLaXRU
aHJlYWRzLmFkZChpZCk7CiAgICAgICAgIH0KQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIFJlc291
cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdENQVURhdGEoSlNDOjpWTSosIFJlc291cmNl
VXNhZ2VEYXRhJiBkYQogCiAgICAgSGFzaE1hcDxwaWRfdCwgU3RyaW5nPiBrbm93bldvcmtlclRo
cmVhZHM7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKFdvcmtlck9yV29y
a2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNM
b2NrKCkgfTsKICAgICAgICAgZm9yIChhdXRvKiB0aHJlYWQgOiBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHMoKSkgewogICAgICAgICAgICAgLy8gSWdub3JlIHdv
cmtlciB0aHJlYWRzIHRoYXQgaGF2ZSBub3QgYmVlbiBmdWxseSBzdGFydGVkIHlldC4KICAgICAg
ICAgICAgIGlmICghdGhyZWFkLT50aHJlYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
R2VuZXJpY1Rhc2tRdWV1ZS5jcHAKaW5kZXggNTE2NTMxNGNmZWExMmEwMTAwYzgyYzI2YmNjY2Yy
MjJkMDJjN2E1Zi4uMmY1YWY0N2M3ZTI2OTQ2ZjNlYzFmZmY0MDhmYTdhYWJjMzc4M2U1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5jcHAKQEAgLTMyLDYg
KzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDaGVja2VkTG9jayBUYXNrRGlzcGF0
Y2hlcjxUaW1lcj46OnNfc2hhcmVkTG9jazsKKwogVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpUYXNr
RGlzcGF0Y2hlcigpCiB7CiB9CkBAIC0zOSw3ICs0MSw3IEBAIFRhc2tEaXNwYXRjaGVyPFRpbWVy
Pjo6VGFza0Rpc3BhdGNoZXIoKQogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnBvc3RUYXNr
KEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soc2hhcmVkTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNf
c2hhcmVkTG9jayB9OwogICAgICAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoV1RGTW92ZShmdW5j
dGlvbikpOwogICAgICAgICBwZW5kaW5nRGlzcGF0Y2hlcnMoKS5hcHBlbmQobWFrZVdlYWtQdHIo
KnRoaXMpKTsKICAgICB9CkBAIC01NywxMiArNTksNiBAQCBUaW1lciYgVGFza0Rpc3BhdGNoZXI8
VGltZXI+OjpzaGFyZWRUaW1lcigpCiAgICAgcmV0dXJuIHRpbWVyLmdldCgpOwogfQogCi1Mb2Nr
JiBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OnNoYXJlZExvY2soKQotewotICAgIHN0YXRpYyBMb2Nr
IGxvY2s7Ci0gICAgcmV0dXJuIGxvY2s7Ci19Ci0KIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+
OjpzaGFyZWRUaW1lckZpcmVkKCkKIHsKICAgICBBU1NFUlQoIXNoYXJlZFRpbWVyKCkuaXNBY3Rp
dmUoKSk7CkBAIC03MSw4ICs2Nyw4IEBAIHZvaWQgVGFza0Rpc3BhdGNoZXI8VGltZXI+OjpzaGFy
ZWRUaW1lckZpcmVkKCkKICAgICAvLyBxdWV1ZWQgYnkgdGhlIEpTIGV2ZW50cyBoYW5kbGVycyB0
aGF0IGFyZSBleGVjdXRlZCBpbiB0aGUgbG9vcCBiZWxvdy4KICAgICBEZXF1ZTxXZWFrUHRyPFRh
c2tEaXNwYXRjaGVyPFRpbWVyPj4+IHF1ZXVlZERpc3BhdGNoZXJzOwogICAgIHsKLSAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhzaGFyZWRMb2NrKCkpOwotICAgICAgICBxdWV1ZWREaXNw
YXRjaGVycyA9IFdURk1vdmUocGVuZGluZ0Rpc3BhdGNoZXJzKCkpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgc19zaGFyZWRMb2NrIH07CisgICAgICAgIHF1ZXVlZERpc3BhdGNoZXJzID0gc3Rk
OjpleGNoYW5nZShwZW5kaW5nRGlzcGF0Y2hlcnMoKSwgeyB9KTsKICAgICB9CiAgICAgd2hpbGUg
KCFxdWV1ZWREaXNwYXRjaGVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgV2Vha1B0cjxUYXNrRGlz
cGF0Y2hlcjxUaW1lcj4+IGRpc3BhdGNoZXIgPSBxdWV1ZWREaXNwYXRjaGVycy50YWtlRmlyc3Qo
KTsKQEAgLTg1LDIxICs4MSwxNSBAQCB2b2lkIFRhc2tEaXNwYXRjaGVyPFRpbWVyPjo6c2hhcmVk
VGltZXJGaXJlZCgpCiAKIERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4mIFRh
c2tEaXNwYXRjaGVyPFRpbWVyPjo6cGVuZGluZ0Rpc3BhdGNoZXJzKCkKIHsKLSAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPERlcXVlPFdlYWtQdHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4+
IGRpc3BhdGNoZXJzOwotCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGRpc3BhdGNoZXJzLmNvbnN0
cnVjdCgpOwotICAgIH0pOwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERlcXVlPFdlYWtQ
dHI8VGFza0Rpc3BhdGNoZXI8VGltZXI+Pj4+IGRpc3BhdGNoZXJzOwogICAgIHJldHVybiBkaXNw
YXRjaGVycy5nZXQoKTsKIH0KIAogdm9pZCBUYXNrRGlzcGF0Y2hlcjxUaW1lcj46OmRpc3BhdGNo
T25lVGFzaygpCiB7Ci0gICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IHRhc2s7CisgICAgRnVuY3Rp
b248dm9pZCgpPiB0YXNrOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhz
aGFyZWRMb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgc19zaGFyZWRMb2NrIH07CiAg
ICAgICAgIEFTU0VSVCghbV9wZW5kaW5nVGFza3MuaXNFbXB0eSgpKTsKICAgICAgICAgdGFzayA9
IG1fcGVuZGluZ1Rhc2tzLnRha2VGaXJzdCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0dlbmVyaWNUYXNrUXVldWUuaAppbmRleCA0ZTliNDBkOWI1MWU1ZjE2MTIwMzYwZjUzNTVi
YTg0OGMzNDRiZmFkLi41MWMwODI1YzZiNGZlMDFkNjVjYWM0MGNhYTk3YmVjMWMxOGYxNmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HZW5lcmljVGFza1F1ZXVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2VuZXJpY1Rhc2tRdWV1ZS5oCkBAIC02NiwxMyAr
NjYsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBUaW1lciYgc2hhcmVkVGlt
ZXIoKTsKLSAgICBzdGF0aWMgV1RGOjpMb2NrJiBzaGFyZWRMb2NrKCk7CiAgICAgc3RhdGljIHZv
aWQgc2hhcmVkVGltZXJGaXJlZCgpOwotICAgIHN0YXRpYyBEZXF1ZTxXZWFrUHRyPFRhc2tEaXNw
YXRjaGVyPFRpbWVyPj4+JiBwZW5kaW5nRGlzcGF0Y2hlcnMoKTsKKyAgICBzdGF0aWMgRGVxdWU8
V2Vha1B0cjxUYXNrRGlzcGF0Y2hlcjxUaW1lcj4+PiYgcGVuZGluZ0Rpc3BhdGNoZXJzKCkgV1RG
X1JFUVVJUkVTX0xPQ0soc19zaGFyZWRMb2NrKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hPbmVUYXNr
KCk7CiAKLSAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdUYXNrczsKKyAgICBz
dGF0aWMgQ2hlY2tlZExvY2sgc19zaGFyZWRMb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+IG1fcGVuZGluZ1Rhc2tzIFdURl9HVUFSREVEX0JZX0xPQ0soc19zaGFyZWRMb2NrKTsKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IGMzZjc1NjAxODZmMjBhYzVjODhmMzRhNTQz
NmZjZGFhM2JiNTc3YWQuLmQ1YmIwNDUyOGFjYjliMjBlNjk1ZDdiMGMwNTRhNzliMDgxMDdjMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5j
cHAKQEAgLTI3LDggKzI3LDcgQEAKICNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgog
CiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CkBAIC02Niw3ICs2NSw3IEBAIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hl
bWVTZXQoY29uc3QgVmVjdG9yPFN0CiAgICAgcmV0dXJuIHNldDsKIH0KIAotc3RhdGljIExvY2sg
c2NoZW1lUmVnaXN0cnlMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIHNjaGVtZVJlZ2lzdHJ5TG9j
azsKIAogc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKIHsK
QEAgLTk1LDcgKzk0LDcgQEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5T
Y2hlbWVzKCkKIAogICAgICAgICBVUkxTY2hlbWVzTWFwIHNldDsKICAgICAgICAgewotICAgICAg
ICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgICAgICAgICAgZm9y
IChhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkpCiAgICAgICAgICAgICAg
ICAgc2V0LmFkZChzY2hlbWUpOwogCkBAIC0xMDksNyArMTA4LDcgQEAgc3RhdGljIGNvbnN0IFVS
TFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0K
IAotc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQor
c3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKSBXVEZf
UkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVtZVJl
Z2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1h
a2VOZXZlckRlc3Ryb3llZChVUkxTY2hlbWVzTWFwIHsKQEAgLTEyMSwyMSArMTIwLDIxIEBAIHN0
YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkKICAgICBy
ZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGxvY2FsVVJMU2NoZW1l
cygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkgV1RGX1JFUVVJUkVT
X0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxv
Y2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBs
b2NhbFNjaGVtZXMgPSBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCk7CiAgICAgcmV0dXJuIGxvY2Fs
U2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNj
aGVtZXMoKQorc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMo
KSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNj
aGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVS
TFNjaGVtZXNNYXA+IGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiAgICAgcmV0dXJuIGRpc3BsYXlJ
c29sYXRlZFNjaGVtZXM7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJl
U2NoZW1lcygpCitjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKSBX
VEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNjaGVt
ZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9
IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CkBAIC0xNTAsMTQgKzE0OSwxNCBA
QCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNlY3VyZVNjaGVtZXMoKQogICAgIHJldHVy
biBzY2hlbWVzOwogfQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCitz
dGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNj
aGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVs
ZCgpKTsKICAgICBzdGF0aWMgYXV0byBzZWN1cmVTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVk
U2NoZW1lU2V0KGJ1aWx0aW5TZWN1cmVTY2hlbWVzKTsKICAgICByZXR1cm4gc2VjdXJlU2NoZW1l
czsKIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9y
aWdpbnMoKQorc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhV
bmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewog
ICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBjb25z
dCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4gewpAQCAt
MTcwLDcgKzE2OSw3IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhV
bmlxdWVPcmlnaW5zKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYg
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0
cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAg
IHN0YXRpYyBhdXRvIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyA9IG1ha2VOZXZlckRlc3Ryb3ll
ZFNjaGVtZVNldChidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTsKQEAgLTE5OCwxNCAr
MTk3LDE0IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzRm9yYmlkZGVuRnJvbURvbWFp
blJlbGF4YXRpb24oKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1jb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCitjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygp
IFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIHsKICAgICBBU1NFUlQoc2No
ZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgImJsb2IiX3MgfSk7CiAgICAg
cmV0dXJuIHNjaGVtZXM7CiB9CiAKLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBjYW5EaXNwbGF5T25s
eUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQorc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhbkRpc3BsYXlP
bmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5
TG9jaykKIHsKICAgICBBU1NFUlQoIWlzSW5OZXR3b3JrUHJvY2VzcygpKTsKICAgICBBU1NFUlQo
c2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKQEAgLTIyNSwyMCArMjI0LDIwIEBAIHZvaWQg
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJp
bmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGxvY2FsVVJMU2NoZW1lcygpLmFk
ZChzY2hlbWUpOwogfQogCiB2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hl
bWVSZWdpc3RlcmVkQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNj
aGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGlmIChidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkuY29u
dGFpbnMoc2NoZW1lKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbG9jYWxVUkxTY2hlbWVzKCku
cmVtb3ZlKHNjaGVtZSk7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5k
bGVkQnlTY2hlbWVIYW5kbGVyKCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5k
bGVkQnlTY2hlbWVIYW5kbGVyKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2Nr
KQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IHNldDsKQEAgLTI0NywxMyArMjQ2LDEz
IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHNjaGVtZXNIYW5kbGVkQnlTY2hlbWVIYW5kbGVy
KCkKIAogdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0hhbmRs
ZWRCeVNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hl
bWVSZWdpc3RyeUxvY2sgfTsKICAgICBzY2hlbWVzSGFuZGxlZEJ5U2NoZW1lSGFuZGxlcigpLmFk
ZChzY2hlbWUpOwogfQogCiBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVJc0hhbmRs
ZWRCeVNjaGVtZUhhbmRsZXIoU3RyaW5nVmlldyBzY2hlbWUpCiB7Ci0gICAgTG9ja2VyPExvY2s+
IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVS
ZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2NoZW1lc0hhbmRsZWRCeVNjaGVtZUhhbmRsZXIo
KS5jb250YWlucyhzY2hlbWUudG9TdHJpbmcoKSk7CiB9CiAKQEAgLTI3OSwxNCArMjc4LDE0IEBA
IHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMoKQogICAgIHJldHVybiBz
Y2hlbWVzOwogfQogCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5UG9saWN5
QnlwYXNzaW5nU2NoZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ29udGVudFNlY3VyaXR5
UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5
TG9jaykKIHsKICAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2NoZW1lczsKICAgICByZXR1cm4g
c2NoZW1lczsKIH0KIAotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhY2hlUGFydGl0aW9uaW5nU2No
ZW1lcygpCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkg
V1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hl
bWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxT
Y2hlbWVzTWFwPiBzY2hlbWVzOwpAQCAtMzA1LDcgKzMwNCw3IEBAIGJvb2wgTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBsb2NhbFVSTFNjaGVtZXMo
KS5jb250YWlucyhzY2hlbWUpOwogfQogCkBAIC0zMTQsNyArMzEzLDcgQEAgdm9pZCBMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkuYWRkKHNjaGVtZSk7CiB9CiAKQEAgLTMyMyw3ICszMjIsNyBAQCBib29sIExlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICByZXR1cm4gc2NoZW1lc1dpdGhV
bmlxdWVPcmlnaW5zKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIApAQCAtMzMyLDcgKzMzMSw3IEBA
IHZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNv
bGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBkaXNwbGF5
SXNvbGF0ZWRVUkxTY2hlbWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKQEAgLTM0MSw3ICszNDAsNyBA
QCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxh
eUlzb2xhdGVkKGNvbnN0IFN0cmluZyYgcwogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0
cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2NrIH07CiAgICAg
cmV0dXJuIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQog
CkBAIC0zNTAsNyArMzQ5LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJV
UkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVt
ZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9
OwogICAgIHNlY3VyZVNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtMzU5LDcgKzM1OCw3
IEBAIGJvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1
cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3Ry
eUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBy
ZXR1cm4gc2VjdXJlU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKQEAgLTM5Nyw3ICsz
OTYsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2FuUmVx
dWVzdChjb25zdCBTdHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lz
dHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAg
IHJldHVybiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKS5jb250YWlucyhzY2hl
bWUpOwogfQogCkBAIC00MDcsNyArNDA2LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2MKICAg
ICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVt
ZVJlZ2lzdHJ5TG9jayB9OwogICAgIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygp
LmFkZChzY2hlbWUpOwogfQogCkBAIC00NjAsNyArNDU5LDcgQEAgdm9pZCBMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGlj
eShjb24KICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFz
c2luZ1NjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIApAQCAtNDY5LDcgKzQ2OCw3IEBAIHZvaWQg
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2lu
Z0NvbnRlbnRTZWN1cml0eVBvCiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKQEAgLTQ3OCw3
ICs0NzcsNyBAQCBib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3ND
b250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJgogICAgIGlmIChzY2hlbWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2No
ZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2NoZW1lUmVnaXN0cnlMb2Nr
IH07CiAgICAgcmV0dXJuIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5j
b250YWlucyhzY2hlbWUpOwogfQogCkBAIC00OTksNyArNDk4LDcgQEAgdm9pZCBMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3Ry
aW5nJiBzY2gKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1l
cygpLmFkZChzY2hlbWUpOwogfQogCkBAIC01MDgsNyArNTA3LDcgQEAgYm9vbCBMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5n
JiBzY2hlbWUKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9OwogICAgIHJldHVybiBjYWNoZVBhcnRp
dGlvbmluZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAppbmRleCA4MWE4YmVkNmJm
Y2Y3YTRiYmIxYzgwMzg1NmQ2N2RlMWExYjQxNTBiLi5lYTRkZWQyNjQxZjU0NjU0MTIzOWFlNzVm
ZmE2YWIzMDc2OTdmNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvRkZURnJhbWVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9GRlRGcmFtZU1hYy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJGRlRGcmFt
ZS5oIgogCiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Niw5ICs0Niw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNvbnN0ZXhwciB1bnNpZ25lZCBrTWluRkZUUG93MlNpemUgPSAyOwogY29u
c3RleHByIHVuc2lnbmVkIGtNYXhGRlRQb3cyU2l6ZSA9IDI0OwogCi1zdGF0aWMgTG9jayBmZnRT
ZXR1cHNMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIGZmdFNldHVwc0xvY2s7CiAKLXN0YXRpYyBW
ZWN0b3I8RkZUU2V0dXA+JiBmZnRTZXR1cHMoKQorc3RhdGljIFZlY3RvcjxGRlRTZXR1cD4mIGZm
dFNldHVwcygpIFdURl9SRVFVSVJFU19MT0NLKGZmdFNldHVwc0xvY2spCiB7CiAgICAgQVNTRVJU
KGZmdFNldHVwc0xvY2suaXNIZWxkKCkpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0
b3I8RkZUU2V0dXA+PiBmZnRTZXR1cHMoa01heEZGVFBvdzJTaXplLCBudWxscHRyKTsKQEAgLTEz
Niw3ICsxMzYsNyBAQCBGRlRTZXR1cCBGRlRGcmFtZTo6ZmZ0U2V0dXBGb3JTaXplKHVuc2lnbmVk
IGZmdFNpemUpCiAgICAgYXV0byBwb3cyc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obG9nMihm
ZnRTaXplKSk7CiAgICAgQVNTRVJUKHBvdzJzaXplIDwga01heEZGVFBvdzJTaXplKTsKIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soZmZ0U2V0dXBzTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IGZmdFNldHVwc0xvY2sgfTsKICAgICBhdXRvJiBmZnRTZXR1cCA9IGZmdFNldHVwcygpLmF0
KHBvdzJzaXplKTsKICAgICBpZiAoIWZmdFNldHVwKQogICAgICAgICBmZnRTZXR1cCA9IHZEU1Bf
Y3JlYXRlX2ZmdHNldHVwKHBvdzJzaXplLCBGRlRfUkFESVgyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCAxZDBiZTgzNDZmZmIy
NGFjNzNhYzRlOTJjMWFhMWMzNGU1Y2U2NDg5Li44YTAzNzA2OThjZGIwOWUxNzRiYzJkM2UxMzIz
ZDg3MzRmOTQyZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtVGltZVJhbmdlcy5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCkBAIC0yMDMsOSArMjA0LDkgQEAgc3Rh
dGljIE1lZGlhUGxheWVyQ2xpZW50JiBudWxsTWVkaWFQbGF5ZXJDbGllbnQoKQogCiBzdGF0aWMg
dm9pZCBhZGRNZWRpYUVuZ2luZShzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5PiYm
KTsKIAotc3RhdGljIExvY2sgbWVkaWFFbmdpbmVWZWN0b3JMb2NrOworc3RhdGljIENoZWNrZWRM
b2NrIG1lZGlhRW5naW5lVmVjdG9yTG9jazsKIAotc3RhdGljIGJvb2wmIGhhdmVNZWRpYUVuZ2lu
ZXNWZWN0b3IoKQorc3RhdGljIGJvb2wmIGhhdmVNZWRpYUVuZ2luZXNWZWN0b3IoKSBXVEZfUkVR
VUlSRVNfTE9DSyhtZWRpYUVuZ2luZVZlY3RvckxvY2spCiB7CiAgICAgc3RhdGljIGJvb2wgaGF2
ZVZlY3RvcjsKICAgICByZXR1cm4gaGF2ZVZlY3RvcjsKQEAgLTIyOCw3ICsyMjksNyBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyU3VwcG9ydDo6c2V0UmVnaXN0ZXJSZW1vdGVQbGF5ZXJDYWxsYmFj
ayhSZWdpc3RlclJlbW90ZVBsYQogICAgIHJlZ2lzdGVyUmVtb3RlUGxheWVyQ2FsbGJhY2soKSA9
IFdURk1vdmUoY2FsbGJhY2spOwogfQogCi1zdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1Zl
Y3RvcigpCitzdGF0aWMgdm9pZCBidWlsZE1lZGlhRW5naW5lc1ZlY3RvcigpIFdURl9SRVFVSVJF
U19MT0NLKG1lZGlhRW5naW5lVmVjdG9yTG9jaykKIHsKICAgICBBU1NFUlQobWVkaWFFbmdpbmVW
ZWN0b3JMb2NrLmlzTG9ja2VkKCkpOwogCkBAIC0yODIsNyArMjgzLDcgQEAgc3RhdGljIHZvaWQg
YnVpbGRNZWRpYUVuZ2luZXNWZWN0b3IoKQogc3RhdGljIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFQbGF5ZXJGYWN0b3J5Pj4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiB7CiAg
ICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1lZGlhRW5naW5lVmVjdG9yTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtZWRpYUVuZ2luZVZlY3RvckxvY2sgfTsKICAg
ICAgICAgaWYgKCFoYXZlTWVkaWFFbmdpbmVzVmVjdG9yKCkpCiAgICAgICAgICAgICBidWlsZE1l
ZGlhRW5naW5lc1ZlY3RvcigpOwogICAgIH0KQEAgLTE1MDEsNyArMTUwMiw3IEBAIFZlY3RvcjxS
ZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBNZWRpYVBsYXllcjo6b3V0T2ZCYW5kVHJhY2tTb3Vy
Y2VzKCkKIAogdm9pZCBNZWRpYVBsYXllcjo6cmVzZXRNZWRpYUVuZ2luZXMoKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobWVkaWFFbmdpbmVWZWN0b3JMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbWVkaWFFbmdpbmVWZWN0b3JMb2NrIH07CiAKICAgICBtdXRhYmxlSW5zdGFsbGVk
TWVkaWFFbmdpbmVzVmVjdG9yKCkuY2xlYXIoKTsKICAgICBoYXZlTWVkaWFFbmdpbmVzVmVjdG9y
KCkgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4
IGE1ZDJmNzM2YzJlZDgzMGVkYzBkM2RiYTczZGJiYTgwM2YxZTFlMjMuLmJlODdhZDJkM2RkZGVl
NjU2ZWQ4MmE0ZDQyZTZlYWM0Y2RkY2IyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1F1aWNrTG9vay5tbQpAQCAtMjksMTIgKzI5LDE0IEBACiAjaWYgVVNFKFFVSUNLX0xPT0spCiAK
ICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotI2ltcG9ydCA8cGFsL2lvcy9RdWlja0xvb2tT
b2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0ZpbGVNYW5hZ2VyU1BJLmg+Cisj
aW1wb3J0IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDx3dGYvTG9jay5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNp
bXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjb25zdCBjaGFyKiBRTFByZXZpZXdQcm90b2NvbCA9ICJ4LWFwcGxlLXFsLWlkIjsKQEAg
LTQ1LDkgKzQ3LDkgQEAgTlNTZXQgKlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgp
CiAgICAgcmV0dXJuIHNldC5nZXQoKS5nZXQoKTsKIH0KIAotc3RhdGljIExvY2sgcWxQcmV2aWV3
Q29udmVydGVyRGljdGlvbmFyeUxvY2s7CitzdGF0aWMgQ2hlY2tlZExvY2sgcWxQcmV2aWV3Q29u
dmVydGVyRGljdGlvbmFyeUxvY2s7CiAKLXN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpRTFBy
ZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkKK3N0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpR
TFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgV1RGX1JFUVVJUkVTX0xPQ0socWxQcmV2aWV3
Q29udmVydGVyRGljdGlvbmFyeUxvY2spCiB7CiAgICAgc3RhdGljIE5TTXV0YWJsZURpY3Rpb25h
cnkgKmRpY3Rpb25hcnkgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAg
IHJldHVybiBkaWN0aW9uYXJ5OwpAQCAtNjEsNyArNjMsNyBAQCBzdGF0aWMgTlNNdXRhYmxlRGlj
dGlvbmFyeSAqUUxDb250ZW50RGljdGlvbmFyeSgpCiAKIHZvaWQgcmVtb3ZlUUxQcmV2aWV3Q29u
dmVydGVyRm9yVVJMKE5TVVJMICp1cmwpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhx
bFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHFs
UHJldmlld0NvbnZlcnRlckRpY3Rpb25hcnlMb2NrIH07CiAgICAgW1FMUHJldmlld0NvbnZlcnRl
ckRpY3Rpb25hcnkoKSByZW1vdmVPYmplY3RGb3JLZXk6dXJsXTsKICAgICBbUUxDb250ZW50RGlj
dGlvbmFyeSgpIHJlbW92ZU9iamVjdEZvcktleTp1cmxdOwogfQpAQCAtNzAsNyArNzIsNyBAQCBz
dGF0aWMgdm9pZCBhZGRRTFByZXZpZXdDb252ZXJ0ZXJXaXRoRmlsZUZvclVSTChOU1VSTCAqdXJs
LCBpZCBjb252ZXJ0ZXIsIE5TU3RyaQogewogICAgIEFTU0VSVCh1cmwpOwogICAgIEFTU0VSVChj
b252ZXJ0ZXIpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socWxQcmV2aWV3Q29udmVydGVy
RGljdGlvbmFyeUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBxbFByZXZpZXdDb252ZXJ0ZXJE
aWN0aW9uYXJ5TG9jayB9OwogICAgIFtRTFByZXZpZXdDb252ZXJ0ZXJEaWN0aW9uYXJ5KCkgc2V0
T2JqZWN0OmNvbnZlcnRlciBmb3JLZXk6dXJsXTsKICAgICBbUUxDb250ZW50RGljdGlvbmFyeSgp
IHNldE9iamVjdDooZmlsZU5hbWUgPyBmaWxlTmFtZSA6IEAiIikgZm9yS2V5OnVybF07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlckNsaWVudC5tbQppbmRleCBiYTBlMThlOTI5OGUwYzMxMmYzMWE3NjA5Mzkx
YmQ1NDIxOTQ2MjM2Li43MDcyMmE5NjljNjliN2JmNzFlMDM3NDhhNDMzYmZmMzlmNzVkNjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldl
YkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRy
YWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CisjaW1w
b3J0IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtODQsMTYgKzg1LDE2IEBAIHZvaWQgV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpoeXN0ZXJlc2lzVXBkYXRlZChQQUw6Okh5c3Rl
cmVzaXNTdGF0ZSBzdGF0CiAKIH0KIAotc3RhdGljIExvY2sgdHJhbnNhY3Rpb25CYWNrZ3JvdW5k
VGFza0lkZW50aWZpZXJMb2NrOworc3RhdGljIENoZWNrZWRMb2NrIHRyYW5zYWN0aW9uQmFja2dy
b3VuZFRhc2tJZGVudGlmaWVyTG9jazsKIAotc3RhdGljIE5TVUludGVnZXIgdHJhbnNhY3Rpb25C
YWNrZ3JvdW5kVGFza0lkZW50aWZpZXI7CitzdGF0aWMgTlNVSW50ZWdlciB0cmFuc2FjdGlvbkJh
Y2tncm91bmRUYXNrSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NLKHRyYW5zYWN0aW9uQmFj
a2dyb3VuZFRhc2tJZGVudGlmaWVyTG9jayk7CiAKLXN0YXRpYyB2b2lkIHNldFRyYW5zYWN0aW9u
QmFja2dyb3VuZFRhc2tJZGVudGlmaWVyKE5TVUludGVnZXIgaWRlbnRpZmllcikKK3N0YXRpYyB2
b2lkIHNldFRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyKE5TVUludGVnZXIgaWRl
bnRpZmllcikgV1RGX1JFUVVJUkVTX0xPQ0sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50
aWZpZXJMb2NrKQogewogICAgIHRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tJZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKIH0KIAotc3RhdGljIE5TVUludGVnZXIgZ2V0VHJhbnNhY3Rpb25CYWNrZ3Jv
dW5kVGFza0lkZW50aWZpZXIoKQorc3RhdGljIE5TVUludGVnZXIgZ2V0VHJhbnNhY3Rpb25CYWNr
Z3JvdW5kVGFza0lkZW50aWZpZXIoKSBXVEZfUkVRVUlSRVNfTE9DSyh0cmFuc2FjdGlvbkJhY2tn
cm91bmRUYXNrSWRlbnRpZmllckxvY2spCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBw
cmVkOwogICAgIGRpc3BhdGNoX29uY2UoJnByZWQsIF4gewpAQCAtMTA3LDcgKzEwOCw3IEBAIEBp
bXBsZW1lbnRhdGlvbiBXZWJEYXRhYmFzZVRyYW5zYWN0aW9uQmFja2dyb3VuZFRhc2tDb250cm9s
bGVyCiAKICsgKHZvaWQpc3RhcnRCYWNrZ3JvdW5kVGFzawogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25CYWNrZ3JvdW5kVGFza0lkZW50aWZpZXJMb2NrIH07
CiAKICAgICAvLyBJZiB0aGVyZSdzIGFscmVhZHkgYW4gZXhpc3RpbmcgYmFja2dyb3VuZCB0YXNr
IGdvaW5nIG9uLCB0aGVyZSdzIG5vIG5lZWQgdG8gc3RhcnQgYSBuZXcgb25lLgogICAgIFdlYkJh
Y2tncm91bmRUYXNrQ29udHJvbGxlciAqYmFja2dyb3VuZFRhc2tDb250cm9sbGVyID0gW1dlYkJh
Y2tncm91bmRUYXNrQ29udHJvbGxlciBzaGFyZWRDb250cm9sbGVyXTsKQEAgLTEyMiw3ICsxMjMs
NyBAQCArICh2b2lkKXN0YXJ0QmFja2dyb3VuZFRhc2sKIAogKyAodm9pZCllbmRCYWNrZ3JvdW5k
VGFzawogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25CYWNrZ3JvdW5k
VGFza0lkZW50aWZpZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdHJhbnNhY3Rpb25CYWNr
Z3JvdW5kVGFza0lkZW50aWZpZXJMb2NrIH07CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0
IHdlIHdlcmUgdW5hYmxlIHRvIHN0YXJ0IHRoZSBiYWNrZ3JvdW5kIHRhc2sgd2hlbiB0aGUgZmly
c3QgdHJhbnNhY3Rpb24gYmVnYW4uCiAgICAgLy8gRG9uJ3QgdHJ5IHRvIGVuZCB0aGUgdGFzayBp
biB0aGF0IGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9VVElVdGlsaXRpZXMubW0KaW5kZXggNmQ1ZDVjNTdlZTBiY2E1YzYxMGQyZGIwZTgyYzRlNmY0
OTFhZmY5ZS4uNjZlMjdlYTUyMjRhZjhkYjE5YzJhOWYxNjlhOTFjMWMzZDgzOGJhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5t
bQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVVElVdGls
aXRpZXMuaCIKIAotI2ltcG9ydCA8d3RmL0xvY2suaD4KKyNpbXBvcnQgPHd0Zi9DaGVja2VkTG9j
ay5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9Tb3J0ZWRBcnJh
eU1hcC5oPgogI2ltcG9ydCA8d3RmL1RpbnlMUlVDYWNoZS5oPgpAQCAtMTEyLDcgKzExMiw4IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHN0YXRpYyBTdHJpbmcgY3Jl
YXRlS2V5Rm9yU3RvcmFnZShjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4ga2V5Lmlzb2xhdGVk
Q29weSgpOyB9CiB9OwogCi1zdGF0aWMgVGlueUxSVUNhY2hlPFN0cmluZywgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiwgMTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5PiYgY2FjaGVVVElGcm9t
TWltZVR5cGUoKQorc3RhdGljIENoZWNrZWRMb2NrIGNhY2hlVVRJRnJvbU1JTUVUeXBlTG9jazsK
K3N0YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LCAxNiwg
VVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpY3k+JiBjYWNoZVVUSUZyb21NSU1FVHlwZSgpIFdURl9S
RVFVSVJFU19MT0NLKGNhY2hlVVRJRnJvbU1JTUVUeXBlTG9jaykKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPFN0cmluZywgUmV0YWluUHRyPENGU3RyaW5nUmVmPiwg
MTYsIFVUSUZyb21NSU1FVHlwZUNhY2hlUG9saWN5Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hl
OwpAQCAtMTIwLDkgKzEyMSw4IEBAIHN0YXRpYyBUaW55TFJVQ2FjaGU8U3RyaW5nLCBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+LCAxNiwgVVRJRnJvbU1JTUVUeXBlQ2FjaGVQb2xpCiAKIFN0cmluZyBV
VElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBzdGF0aWMgTG9j
ayBsb2NrOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7Ci0gICAgcmV0dXJuIGNh
Y2hlVVRJRnJvbU1pbWVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5nZXQoKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgY2FjaGVVVElGcm9tTUlNRVR5cGVMb2NrIH07CisgICAgcmV0dXJuIGNhY2hlVVRJRnJv
bU1JTUVUeXBlKCkuZ2V0KG1pbWVUeXBlKS5nZXQoKTsKIH0KIAogYm9vbCBpc0RlY2xhcmVkVVRJ
KGNvbnN0IFN0cmluZyYgVVRJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5jcHAKaW5kZXggMzRkYWY0ZWQyOWVmODMyZjNhZTA1MmNiMmU1NDUzZTI1ZDIy
OGUyOS4uZWE0NTMxMTBhMTgzOTczN2Q5NzVmYjM1ZTFlODIwOWM4ZWEyMDI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUg
PHRocmVhZD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC03MSwxMiArNzIsMTIgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNR
TGl0ZUlmTmVjZXNzYXJ5KCkKICAgICB9KTsKIH0KIAotc3RhdGljIGJvb2wgaXNEYXRhYmFzZU9w
ZW5pbmdGb3JiaWRkZW4gPSBmYWxzZTsKLXN0YXRpYyBMb2NrIGlzRGF0YWJhc2VPcGVuaW5nRm9y
YmlkZGVuTXV0ZXg7CitzdGF0aWMgQ2hlY2tlZExvY2sgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRk
ZW5Mb2NrOworc3RhdGljIGJvb2wgaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4gV1RGX0dVQVJE
RURfQllfTE9DSyhpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbkxvY2spIHsgZmFsc2UgfTsKIAog
dm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4oYm9vbCBp
c0ZvcmJpZGRlbikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGlzRGF0YWJhc2VPcGVu
aW5nRm9yYmlkZGVuTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBpc0RhdGFiYXNlT3Blbmlu
Z0ZvcmJpZGRlbkxvY2sgfTsKICAgICBpc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbiA9IGlzRm9y
YmlkZGVuOwogfQogCkBAIC05NCw3ICs5NSw3IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgY2xvc2UoKTsK
IAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpc0RhdGFiYXNlT3Blbmlu
Z0ZvcmJpZGRlbk11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGlzRGF0YWJhc2VPcGVu
aW5nRm9yYmlkZGVuTG9jayB9OwogICAgICAgICBpZiAoaXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRk
ZW4pIHsKICAgICAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9ICJvcGVuaW5nIGRhdGFiYXNl
IGlzIGZvcmJpZGRlbiI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4
IDZhMjhlMTliZTk0NjkzMDM1YTU2YjY0MDk0ZTQxNTdlYzk1YTdkNzAuLjNmOGUzYzk3ZWRlODBl
NDI5MTU4NDRlN2ZiY2E1YTYyZjE0OWQ3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0yNywyNiArMjcsMjUg
QEAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKIAogI2luY2x1ZGUgPG11dGV4
PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFNRTGl0ZURhdGFiYXNlVHJhY2tlciB7
CiAKLXN0YXRpYyBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNfc3RhdGljU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50ID0gbnVsbHB0cjsKLXN0YXRpYyB1bnNpZ25lZCBzX3RyYW5zYWN0
aW9uSW5Qcm9ncmVzc0NvdW50ZXIgPSAwOwotCi1zdGF0aWMgTG9jayB0cmFuc2FjdGlvbkluUHJv
Z3Jlc3NNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9jayB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2Nr
Oworc3RhdGljIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCogc19zdGF0aWNTUUxpdGVEYXRh
YmFzZVRyYWNrZXJDbGllbnQgV1RGX0dVQVJERURfQllfTE9DSyh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NMb2NrKSB7IG51bGxwdHIgfTsKK3N0YXRpYyB1bnNpZ25lZCBzX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzc0NvdW50ZXIgV1RGX0dVQVJERURfQllfTE9DSyh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2Nr
KSB7IDAgfTsKIAogdm9pZCBzZXRDbGllbnQoU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBj
bGllbnQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jl
c3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sg
fTsKICAgICBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCA9IGNsaWVudDsKIH0K
IAogdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IHRyYW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsKICAgICBpZiAoIXNfc3Rh
dGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTU3
LDcgKzU2LDcgQEAgdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3VudCgpCiAK
IHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sodHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyB0cmFuc2FjdGlvbkluUHJvZ3Jlc3NMb2NrIH07CiAgICAgaWYgKCFzX3N0YXRp
Y1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC03MCw3
ICs2OSw3IEBAIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKQogCiBi
b29sIGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayh0cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRy
YW5zYWN0aW9uSW5Qcm9ncmVzc0xvY2sgfTsKICAgICByZXR1cm4gIXNfc3RhdGljU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50IHx8IHNfdHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnRlciA+IDA7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29k
aW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmdSZWdpc3RyeS5jcHAKaW5kZXggMDZkZmY2Y2Q5YjIwN2M1NmY4ZDcwMWI3ODgyZGNjZWJmMmU2
Yjg1Yy4uZTFiYzUzNmNjNmEwNDg1Nzc4NjJjZmQxYzMxNzRjZDY3NDcxNmY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5j
cHAKQEAgLTM5LDkgKzM5LDkgQEAKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvQVND
SUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KQEAgLTkxLDEwICs5MSwxMCBAQCBzdHJ1Y3QgVGV4dEVuY29kaW5nTmFt
ZUhhc2ggewogdXNpbmcgVGV4dEVuY29kaW5nTmFtZU1hcCA9IEhhc2hNYXA8Y29uc3QgY2hhcios
IGNvbnN0IGNoYXIqLCBUZXh0RW5jb2RpbmdOYW1lSGFzaD47CiB1c2luZyBUZXh0Q29kZWNNYXAg
PSBIYXNoTWFwPGNvbnN0IGNoYXIqLCBOZXdUZXh0Q29kZWNGdW5jdGlvbj47CiAKLXN0YXRpYyBM
b2NrIGVuY29kaW5nUmVnaXN0cnlNdXRleDsKK3N0YXRpYyBDaGVja2VkTG9jayBlbmNvZGluZ1Jl
Z2lzdHJ5TG9jazsKIAotc3RhdGljIFRleHRFbmNvZGluZ05hbWVNYXAqIHRleHRFbmNvZGluZ05h
bWVNYXA7Ci1zdGF0aWMgVGV4dENvZGVjTWFwKiB0ZXh0Q29kZWNNYXA7CitzdGF0aWMgVGV4dEVu
Y29kaW5nTmFtZU1hcCogdGV4dEVuY29kaW5nTmFtZU1hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKGVu
Y29kaW5nUmVnaXN0cnlMb2NrKTsKK3N0YXRpYyBUZXh0Q29kZWNNYXAqIHRleHRDb2RlY01hcCBX
VEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKTsKIHN0YXRpYyBib29sIGRp
ZEV4dGVuZFRleHRDb2RlY01hcHM7CiBzdGF0aWMgSGFzaFNldDxjb25zdCBjaGFyKj4qIGphcGFu
ZXNlRW5jb2RpbmdzOwogc3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBub25CYWNrc2xhc2hF
bmNvZGluZ3M7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGJvb2wgaXNVbmRlc2lyZWRBbGlh
cyhjb25zdCBjaGFyKiBhbGlhcykKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lk
IGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcChjb25zdCBjaGFyKiBhbGlhcywgY29uc3QgY2hhciog
bmFtZSkKK3N0YXRpYyB2b2lkIGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcChjb25zdCBjaGFyKiBh
bGlhcywgY29uc3QgY2hhciogbmFtZSkgV1RGX1JFUVVJUkVTX0xPQ0soZW5jb2RpbmdSZWdpc3Ry
eUxvY2spCiB7CiAgICAgQVNTRVJUKHN0cmxlbihhbGlhcykgPD0gbWF4RW5jb2RpbmdOYW1lTGVu
Z3RoKTsKICAgICBpZiAoaXNVbmRlc2lyZWRBbGlhcyhhbGlhcykpCkBAIC0xMzAsMTQgKzEzMCwx
NCBAQCBzdGF0aWMgdm9pZCBhZGRUb1RleHRFbmNvZGluZ05hbWVNYXAoY29uc3QgY2hhciogYWxp
YXMsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgdGV4dEVuY29kaW5nTmFtZU1hcC0+YWRkKGFsaWFz
LCBhdG9tTmFtZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFRvVGV4dENvZGVjTWFwKGNvbnN0IGNo
YXIqIG5hbWUsIE5ld1RleHRDb2RlY0Z1bmN0aW9uJiYgZnVuY3Rpb24pCitzdGF0aWMgdm9pZCBh
ZGRUb1RleHRDb2RlY01hcChjb25zdCBjaGFyKiBuYW1lLCBOZXdUZXh0Q29kZWNGdW5jdGlvbiYm
IGZ1bmN0aW9uKSBXVEZfUkVRVUlSRVNfTE9DSyhlbmNvZGluZ1JlZ2lzdHJ5TG9jaykKIHsKICAg
ICBjb25zdCBjaGFyKiBhdG9tTmFtZSA9IHRleHRFbmNvZGluZ05hbWVNYXAtPmdldChuYW1lKTsK
ICAgICBBU1NFUlQoYXRvbU5hbWUpOwogICAgIHRleHRDb2RlY01hcC0+YWRkKGF0b21OYW1lLCBX
VEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBydW5lQmxvY2tsaXN0ZWRDb2Rl
Y3MoKQorc3RhdGljIHZvaWQgcHJ1bmVCbG9ja2xpc3RlZENvZGVjcygpIFdURl9SRVFVSVJFU19M
T0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIGZvciAoYXV0byYgbmFtZUZyb21CbG9j
a2xpc3QgOiB0ZXh0RW5jb2RpbmdOYW1lQmxvY2tsaXN0KSB7CiAgICAgICAgIGF1dG8qIGF0b21O
YW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWVGcm9tQmxvY2tsaXN0KTsKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCBwcnVuZUJsb2NrbGlzdGVkQ29kZWNzKCkKICAgICB9
CiB9CiAKLXN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMoY29uc3QgQWJzdHJhY3RM
b2NrZXImKQorc3RhdGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcygpIFdURl9SRVFVSVJF
U19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVCghdGV4dENvZGVjTWFw
KTsKICAgICBBU1NFUlQoIXRleHRFbmNvZGluZ05hbWVNYXApOwpAQCAtMTc4LDcgKzE3OCw3IEBA
IHN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMoY29uc3QgQWJzdHJhY3RMb2NrZXIm
KQogICAgIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhhZGRUb1RleHRDb2Rl
Y01hcCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZEVuY29kaW5nTmFtZShIYXNoU2V0PGNvbnN0IGNo
YXIqPiogc2V0LCBjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQgYWRkRW5jb2RpbmdOYW1l
KEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXQsIGNvbnN0IGNoYXIqIG5hbWUpIFdURl9SRVFVSVJF
U19MT0NLKGVuY29kaW5nUmVnaXN0cnlMb2NrKQogewogICAgIC8vIFdlIG11c3Qgbm90IHVzZSBh
dG9tQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZSgpIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQgaW4gaXQuCiAgICAgY29uc3QgY2hhciogYXRvbU5hbWUgPSB0ZXh0RW5jb2RpbmdOYW1l
TWFwLT5nZXQobmFtZSk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIHZvaWQgYWRkRW5jb2Rp
bmdOYW1lKEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAg
ICAgIHNldC0+YWRkKGF0b21OYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgYnVpbGRRdWlya3NTZXRz
KCkKK3N0YXRpYyB2b2lkIGJ1aWxkUXVpcmtzU2V0cygpIFdURl9SRVFVSVJFU19MT0NLKGVuY29k
aW5nUmVnaXN0cnlMb2NrKQogewogICAgIC8vIEZJWE1FOiBIYXZpbmcgaXNKYXBhbmVzZUVuY29k
aW5nKCkgYW5kIHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sSW4oKQogICAgIC8v
IGFuZCBpbml0aWFsaXppbmcgdGhlIHNldHMgZm9yIHRoZW0gaW4gVGV4dEVuY29kaW5nUmVnaXN0
cnkuY3BwIGxvb2sgc3RyYW5nZS4KQEAgLTIzMSw3ICsyMzEsNyBAQCBib29sIHNob3VsZFNob3dC
YWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sSW4oY29uc3QgY2hhciogY2Fub25pY2FsRW5jb2RpbmdO
YW1lKQogICAgIHJldHVybiBjYW5vbmljYWxFbmNvZGluZ05hbWUgJiYgbm9uQmFja3NsYXNoRW5j
b2RpbmdzICYmIG5vbkJhY2tzbGFzaEVuY29kaW5ncy0+Y29udGFpbnMoY2Fub25pY2FsRW5jb2Rp
bmdOYW1lKTsKIH0KIAotc3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVjTWFwcygpCitzdGF0aWMg
dm9pZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkgV1RGX1JFUVVJUkVTX0xPQ0soZW5jb2RpbmdSZWdp
c3RyeUxvY2spCiB7CiAgICAgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyRW5jb2RpbmdO
YW1lcyhhZGRUb1RleHRFbmNvZGluZ05hbWVNYXApOwogICAgIFRleHRDb2RlY1JlcGxhY2VtZW50
OjpyZWdpc3RlckNvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CkBAIC0yNTEsNyArMjUxLDcgQEAg
c3RhdGljIHZvaWQgZXh0ZW5kVGV4dENvZGVjTWFwcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
Q29kZWM+IG5ld1RleHRDb2RlYyhjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soZW5jb2RpbmdSZWdpc3RyeU11dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgZW5jb2RpbmdSZWdpc3RyeUxvY2sgfTsKIAogICAgIEFTU0VSVCh0ZXh0Q29k
ZWNNYXApOwogICAgIGF1dG8gcmVzdWx0ID0gdGV4dENvZGVjTWFwLT5maW5kKGVuY29kaW5nLm5h
bWUoKSk7CkBAIC0yNjQsMTAgKzI2NCwxMCBAQCBjb25zdCBjaGFyKiBhdG9tQ2Fub25pY2FsVGV4
dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBuYW1lKQogICAgIGlmICghbmFtZSB8fCAhbmFtZVsw
XSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGVuY29kaW5nUmVnaXN0cnlNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGVuY29kaW5nUmVn
aXN0cnlMb2NrIH07CiAKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWVNYXApCi0gICAgICAgIGJ1
aWxkQmFzZVRleHRDb2RlY01hcHMobG9ja2VyKTsKKyAgICAgICAgYnVpbGRCYXNlVGV4dENvZGVj
TWFwcygpOwogCiAgICAgaWYgKGNvbnN0IGNoYXIqIGF0b21OYW1lID0gdGV4dEVuY29kaW5nTmFt
ZU1hcC0+Z2V0KG5hbWUpKQogICAgICAgICByZXR1cm4gYXRvbU5hbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGUyNmQ0N2EzODc0Mjc5ODZi
MDI2ZmZkYzBmMmM1NTBiZTc1N2ZmMWYuLjBkNjE0OTFkZDFhYWUwZTNiNDc3N2EyZTk0ZWU2NWE2
MjQ4YTAwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCkBAIC01NywxNiArNTcsMTUgQEAKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExv
Y2suaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1zdGF0aWMgTG9jayBhbGxXb3Jr
ZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jazsKLXN0YXRpYyBIYXNoU2V0PFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyPiYgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycyhM
b2NrSG9sZGVyJiBob2xkZXIpCitzdGF0aWMgQ2hlY2tlZExvY2sgYWxsV29ya2VyR2xvYmFsU2Nv
cGVJZGVudGlmaWVyc0xvY2s7CitzdGF0aWMgSGFzaFNldDxTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4mIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMoKSBXVEZfUkVRVUlS
RVNfTE9DSyhhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jaykKIHsKLSAgICBVTlVT
RURfUEFSQU0oaG9sZGVyKTsKLQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPj4gaWRlbnRpZmllcnM7CiAgICAgQVNTRVJU
KGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrLmlzTG9ja2VkKCkpOwogICAgIHJl
dHVybiBpZGVudGlmaWVyczsKQEAgLTkxLDggKzkwLDggQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldv
cmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUgdHlwZSwgY29uc3QgV29ya2VyUGFyYW1l
dGUKICAgICAsIG1fY3JlZGVudGlhbHMocGFyYW1zLmNyZWRlbnRpYWxzKQogewogICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZp
ZXJzTG9jayk7Ci0gICAgICAgIGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2Vy
KS5hZGQoY29udGV4dElkZW50aWZpZXIoKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBhbGxX
b3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayB9OworICAgICAgICBhbGxXb3JrZXJHbG9i
YWxTY29wZUlkZW50aWZpZXJzKCkuYWRkKGNvbnRleHRJZGVudGlmaWVyKCkpOwogICAgIH0KIAog
ICAgIGlmIChtX3RvcE9yaWdpbi0+aGFzVW5pdmVyc2FsQWNjZXNzKCkpCkBAIC0xMTEsOCArMTEw
LDggQEAgV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiAgICAgcmVtb3Zl
RnJvbUNvbnRleHRzTWFwKCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2spOwotICAgICAgICBhbGxXb3Jr
ZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKGxvY2tlcikucmVtb3ZlKGNvbnRleHRJZGVudGlmaWVy
KCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlm
aWVyc0xvY2sgfTsKKyAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycygpLnJl
bW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBtX3BlcmZvcm1hbmNlID0g
bnVsbHB0cjsKQEAgLTU4Nyw4ICs1ODYsOCBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpkZWxl
dGVKU0NvZGVBbmRHQyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIAogdm9pZCBXb3JrZXJHbG9i
YWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2VycyhTeW5jaHJvbm91cyBzeW5jaHJvbm91cykK
IHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRp
ZmllcnNMb2NrKTsKLSAgICBmb3IgKGF1dG8mIGdsb2JhbFNjb3BlSWRlbnRpZmllciA6IGFsbFdv
cmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2VyKSkgeworICAgIExvY2tlciBsb2NrZXIg
eyBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jayB9OworICAgIGZvciAoYXV0byYg
Z2xvYmFsU2NvcGVJZGVudGlmaWVyIDogYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycygp
KSB7CiAgICAgICAgIHBvc3RUYXNrVG8oZ2xvYmFsU2NvcGVJZGVudGlmaWVyLCBbc3luY2hyb25v
dXNdKGF1dG8mIGNvbnRleHQpIHsKICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KS5yZWxlYXNlTWVtb3J5KHN5bmNocm9ub3VzKTsKICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKaW5k
ZXggMDA3NWE0ZTUwNDhkYTJiOTZiZmYwMmNhOGM2YjIzMzZlZmE4MjIyNi4uYThlYTk5YmM1ZmZl
ZDFhM2NjZDg2MjhlZjljN2EwNTE2ZmFiYmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcApAQCAtNDAsMTAgKzQwLDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotTG9jayYgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJP
cldvcmtsZXRUaHJlYWRzTG9jaygpCitDaGVja2VkTG9jayBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6
OnNfd29ya2VyT3JXb3JrbGV0VGhyZWFkc0xvY2s7CisKK0NoZWNrZWRMb2NrJiBXb3JrZXJPcldv
cmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkKIHsKLSAgICBzdGF0aWMg
TG9jayBtdXRleDsKLSAgICByZXR1cm4gbXV0ZXg7CisgICAgcmV0dXJuIHNfd29ya2VyT3JXb3Jr
bGV0VGhyZWFkc0xvY2s7CiB9CiAKIEhhc2hTZXQ8V29ya2VyT3JXb3JrbGV0VGhyZWFkKj4mIFdv
cmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkcygpCkBAIC01NiwxMyAr
NTcsMTMgQEAgSGFzaFNldDxXb3JrZXJPcldvcmtsZXRUaHJlYWQqPiYgV29ya2VyT3JXb3JrbGV0
VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkKIFdvcmtlck9yV29ya2xldFRocmVhZDo6
V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod29y
a2VyT3JXb3JrbGV0VGhyZWFkc0xvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdvcmtlck9y
V29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkuYWRk
KHRoaXMpOwogfQogCiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6On5Xb3JrZXJPcldvcmtsZXRUaHJl
YWQoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod29ya2VyT3JXb3JrbGV0VGhyZWFk
c0xvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdvcmtlck9yV29ya2xldFRocmVhZHNMb2Nr
KCkgfTsKICAgICBBU1NFUlQod29ya2VyT3JXb3JrbGV0VGhyZWFkcygpLmNvbnRhaW5zKHRoaXMp
KTsKICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkucmVtb3ZlKHRoaXMpOwogfQpAQCAtMjY5
LDcgKzI3MCw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpyZXN1bWUoKQogCiB2b2lk
IFdvcmtlck9yV29ya2xldFRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxU
aHJlYWRzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdvcmtlck9yV29ya2xldFRo
cmVhZHNMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyB3b3JrZXJPcldvcmtsZXRUaHJlYWRz
TG9jaygpIH07CiAgICAgZm9yIChhdXRvKiB3b3JrZXJPcldvcmtsZXRUaHJlYWQgOiB3b3JrZXJP
cldvcmtsZXRUaHJlYWRzKCkpIHsKICAgICAgICAgd29ya2VyT3JXb3JrbGV0VGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAg
ICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgKaW5kZXggNGYyMWFlYjQ1MGM1ZjU1Yzgy
ZjI5ZTM3NGQwZTNjNjY4Njc3Yzk4Yy4uOTczZmM3MTA0YzYzZmQxYTNkN2U1OGYwNTYyZjEyYjM2
MWE3Y2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRo
cmVhZC5oCkBAIC0yNiw5ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldvcmtl
clJ1bkxvb3AuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKQEAgLTY1LDggKzY1LDggQEAgcHVibGljOgog
CiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CiAKLSAgICBzdGF0aWMgSGFzaFNldDxXb3JrZXJPcldvcmtsZXRUaHJlYWQqPiYgd29y
a2VyT3JXb3JrbGV0VGhyZWFkcygpOwotICAgIHN0YXRpYyBMb2NrJiB3b3JrZXJPcldvcmtsZXRU
aHJlYWRzTG9jaygpOworICAgIHN0YXRpYyBIYXNoU2V0PFdvcmtlck9yV29ya2xldFRocmVhZCo+
JiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkgV1RGX1JFUVVJUkVTX0xPQ0sod29ya2VyT3JXb3Jr
bGV0VGhyZWFkc0xvY2soKSk7CisgICAgc3RhdGljIENoZWNrZWRMb2NrJiB3b3JrZXJPcldvcmts
ZXRUaHJlYWRzTG9jaygpIFdURl9SRVRVUk5TX0xPQ0soc193b3JrZXJPcldvcmtsZXRUaHJlYWRz
TG9jayk7CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxU
aHJlYWRzKCk7CiAKIHByb3RlY3RlZDoKQEAgLTgyLDYgKzgyLDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkV2FpdEZvcldlYkluc3BlY3Rvck9uU3RhcnR1cCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKKyAgICBzdGF0aWMgQ2hlY2tlZExvY2sgc193b3JrZXJPcldvcmts
ZXRUaHJlYWRzTG9jazsKKwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgTG9jayBtX3Ro
cmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrOwogICAgIFJlZlB0cjxXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZT4gbV9nbG9iYWxTY29wZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>