<?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>180913</bug_id>
          
          <creation_ts>2017-12-17 07:18:28 -0800</creation_ts>
          <short_desc>[GTK] Fix compilation failures for a Release build with assertions turned on</short_desc>
          <delta_ts>2022-03-12 21:01:53 -0800</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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=177459</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>enometh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1382593</commentid>
    <comment_count>0</comment_count>
      <attachid>329602</attachid>
    <who name="">enometh</who>
    <bug_when>2017-12-17 07:18:28 -0800</bug_when>
    <thetext>Created attachment 329602
fix NDEBUG conditionals for a Release build with assertions turned on

A Release build (-DNDEBUG) with assertions turned on     
(i.e. -DASSERT_DISABLED=0 -DASSERT_MSG_DISABLED=0 etc. see Source/WTF/wtf/Assertions.h) currently fails at various places. 

These failures typically stem from the use of variables in ASSERTS where
the variable itself was defined inside an #ifndef NDEBUG ... #endif block.
The failures can be fixed by putting the asserts within #ifndef NDEBUG ..#endif blocks.  (And there are a few cases where the blocks seem to be conditionalized on ASSERT_DISABLED instead of NDEBUG)


Attached is a patch against webkitgtk-2.19.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433277</commentid>
    <comment_count>1</comment_count>
      <attachid>342799</attachid>
    <who name="">enometh</who>
    <bug_when>2018-06-15 03:07:04 -0700</bug_when>
    <thetext>Created attachment 342799
tentative patch - against 2.21.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433304</commentid>
    <comment_count>2</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-06-15 05:26:51 -0700</bug_when>
    <thetext>This is kind of related to bug #177459, I&apos;ve CC&apos;d Carlos
and Michael to make them aware of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433343</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-06-15 08:02:17 -0700</bug_when>
    <thetext>I&apos;ve actually wanted to do this for a while.

For us to review the patch, be sure to include a proper ChangeLog entry created with prepare-ChangeLog, make sure the patch builds against current trunk, and set the r? flag (for review) and also the cq? flag (for commit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608911</commentid>
    <comment_count>4</comment_count>
      <attachid>388272</attachid>
    <who name="">enometh</who>
    <bug_when>2020-01-20 19:36:43 -0800</bug_when>
    <thetext>Created attachment 388272
updated patch 2.27.4

(maybe some of these should actually test for ASSERT_ENABLED #205776)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609117</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-01-21 10:12:44 -0800</bug_when>
    <thetext>Yes, they should test ASSERT_ENABLED.

Also:

(In reply to Michael Catanzaro from comment #3)
&gt; For us to review the patch, be sure to include a proper ChangeLog entry
&gt; created with prepare-ChangeLog, make sure the patch builds against current
&gt; trunk, and set the r? flag (for review) and also the cq? flag (for commit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611138</commentid>
    <comment_count>6</comment_count>
    <who name="">enometh</who>
    <bug_when>2020-01-25 22:14:42 -0800</bug_when>
    <thetext>*some* of the tests have to be for NDEBUG (and not ASSERT_ENABLED) - see my first comment #1 for why.
I&apos;m adding mark.lam to the CC list as I think he would be in a position
to fix the problem (I&apos;m assuming he was the one who fixed the other issues
related to NDEBUG/ASSERT_ENABLED) in the codebase.

[I&apos;m still building webkit from the tarball releases on a low end machine
(though I can  looking at the git repo
on a guest machine). I am not in a position to use the prepare-ChangeLog and
other developer tools. So I&apos;m hoping that someone with access to
those developer resources could act on this report.]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611143</commentid>
    <comment_count>7</comment_count>
      <attachid>329602</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-25 23:44:37 -0800</bug_when>
    <thetext>Comment on attachment 329602
fix NDEBUG conditionals for a Release build with assertions turned on

This is exactly the wrong thing to do.  The right thing to do is to find those fields which are needed for the ASSERT but are guarded by #if !NDEBUGand change them to be guarded by #if ASSERT_ENABLED because they are relevant to the assertion, and not a debug build per se.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611219</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-26 14:14:34 -0800</bug_when>
    <thetext>I agree with Mark, but want to go a little further:

Now that we have more clarity about ASSERT_ENABLED, we have almost no use for NDEBUG; off hand I can’t think of anything we chose to do besides assertions in debug but not release builds. I’m sure there are some things, but it seems that any places we have different behavior in debug builds for something other than assertions, we should discuss with the rest of the WebKit contributors to see if we want to keep it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612437</commentid>
    <comment_count>9</comment_count>
    <who name="">enometh</who>
    <bug_when>2020-01-29 07:35:33 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)

I think NDEBUG is a CMake concept: It may be legit to have debug
variables and assertions enabled only in a &quot;Debug&quot; build and I think
CMAKE turns on NDEBUG  (Gowever &quot;Debug&quot; also turns on -g and
bloats the build)

NDEBUG may still make sense in other contexts:  LOG_DISABLED is toggled
by ASSERT_ENABLED, but logging and assertions ought to be independent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612446</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-01-29 07:59:32 -0800</bug_when>
    <thetext>(In reply to enometh from comment #9)
&gt; (In reply to Darin Adler from comment #8)
&gt; 
&gt; I think NDEBUG is a CMake concept:

Of course not, it&apos;s regularly used in Autotools build systems, and meson supports it as well, and glibc checks for it to modify the behavior of its assert() function....

Anyway, WebKit asserts should usually depend on ASSERT_ENABLED, not NDEBUG. But I think an exception might be appropriate for asserts that are particularly slow. Those asserts should -- arguably -- be guarded by NDEBUG instead, because there exists a hypothetical wonderful future where WebKit is less buggy and we can get rid of the RELEASE_ASSERT() macros and use ASSERT_ENABLED for release builds to run all non-slow asserts in production. (I&apos;m convinced having asserts enabled in production is essential to improve quality.) But stuff like asserts that require loops, though, or asserts that show up in profiling, will usually not ever be OK for production.

Anyway, it doesn&apos;t matter too much, because that future is not today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612954</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-30 07:58:10 -0800</bug_when>
    <thetext>I know where NDEBUG is *from*. It comes from the C standard. It’s how you can turn off the assertions from the &lt;assert.h&gt; header.

I don’t see any reason to mix NDEBUG and ASSERT_ENABLED in the WebKit project. If we’re moving to ASSERT_ENABLED we should move off NDEBUG.

(In reply to Michael Catanzaro from comment #10)
&gt; Anyway, WebKit asserts should usually depend on ASSERT_ENABLED, not NDEBUG.
&gt; But I think an exception might be appropriate for asserts that are
&gt; particularly slow. Those asserts should -- arguably -- be guarded by NDEBUG
&gt; instead, because there exists a hypothetical wonderful future where WebKit
&gt; is less buggy and we can get rid of the RELEASE_ASSERT() macros and use
&gt; ASSERT_ENABLED for release builds to run all non-slow asserts in production.
&gt; (I&apos;m convinced having asserts enabled in production is essential to improve
&gt; quality.) But stuff like asserts that require loops, though, or asserts that
&gt; show up in profiling, will usually not ever be OK for production.

Yes, I think it might be interesting to move to a model where we write assertions with production in mind, renaming ASSERT to something like SLOW_ASSERT and RELEASE_ASSERT to ASSERT.

But I’ve written hundreds if not thoughts assertions for WebKit knowing as I wrote them that they are inappropriately slow. So we’re not going to do this by just turning all the existing assertions into fast assertions. Someone at Apple proposed this recently so I’ve thought it through recently.

If we do this, I don’t think it should have anything to do with NDEBUG.

I think there are some really confusing things going on. For example, I think people want to build optimized builds with assertions on. At least on the Apple ports, our &quot;debug&quot; configuration turns off most optimizations and I think in a lot of people&apos;s minds NDEBUG is somehow tied to that configuration. They want those optimizations back on but want to keep all the assertions, even the slow ones.

I propose that on the WebKit project we aim to stop using NDEBUG entirely, except if we have a reason to use it to disable &lt;assert.h&gt; assertions, find out where NDEBUG is used for any purpose other than ASSERT_ENABLED. Once we find those purposes, we can figure out what to use to control each of those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612958</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-01-30 08:09:42 -0800</bug_when>
    <thetext>FWIW I&apos;m fine with that proposal too. It&apos;s simpler than mine, and that means harder for developers to mess up. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613035</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-30 10:44:14 -0800</bug_when>
    <thetext>I meant hundreds if not thousands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850740</commentid>
    <comment_count>14</comment_count>
      <attachid>454546</attachid>
    <who name="">enometh</who>
    <bug_when>2022-03-12 21:01:53 -0800</bug_when>
    <thetext>Created attachment 454546
updated patch 2.35.90</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329602</attachid>
            <date>2017-12-17 07:18:28 -0800</date>
            <delta_ts>2022-03-12 21:01:53 -0800</delta_ts>
            <desc>fix NDEBUG conditionals for a Release build with assertions turned on</desc>
            <filename>1.diff</filename>
            <type>text/plain</type>
            <size>37328</size>
            <attacher>enometh</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVm
ZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5o
CmluZGV4IDczNDA5NTJkLi4wMGM4MWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCkBAIC0yMjQsOSArMjI0LDExIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgICAgICB+TG9jYWxXcml0ZXIoKQogICAgICAgICAgICAgewor
I2lmICFkZWZpbmVkKE5ERUJVRykKICAgICAgICAgICAgICAgICBBU1NFUlQobV9pbmRleCAtIG1f
aW5pdGlhbEluZGV4IDw9IG1fcmVxdWlyZWRTcGFjZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KG1fYnVmZmVyLm1faW5kZXggPT0gbV9pbml0aWFsSW5kZXgpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChtX3N0b3JhZ2VCdWZmZXIgPT0gbV9idWZmZXIubV9zdG9yYWdlLmJ1ZmZlcigpKTsKKyNl
bmRpZgogICAgICAgICAgICAgICAgIG1fYnVmZmVyLm1faW5kZXggPSBtX2luZGV4OwogICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L1JlZ2lzdGVySUQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0
ZXJJRC5oCmluZGV4IGNjODBmNWViLi40NjdmM2ExMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmgKQEAgLTgyLDcgKzgyLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgaW50IGluZGV4KCkgY29uc3QKICAgICAgICAgeworI2lmbmRl
ZiBOREVCVUcKICAgICAgICAgICAgIEFTU0VSVChtX2RpZFNldEluZGV4KTsKKyNlbmRpZgogICAg
ICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5oCmluZGV4IGRjMTQ4NjQxLi4x
NTdlN2M3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3Rh
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5oCkBAIC0x
MTUsNyArMTE1LDkgQEAgaW5saW5lIHZvaWQgSGFuZGxlU3RhY2s6OmxlYXZlU2NvcGUoRnJhbWUm
IGxhc3RGcmFtZSkKIAogaW5saW5lIEhhbmRsZVNsb3QgSGFuZGxlU3RhY2s6OnB1c2goKQogewor
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9zY29wZURlcHRoKTsgLy8gQ3JlYXRpbmcgYSBM
b2NhbCBvdXRzaWRlIG9mIGEgTG9jYWxTY29wZSBpcyBhIG1lbW9yeSBsZWFrLgorI2VuZGlmCiAg
ICAgaWYgKG1fZnJhbWUubV9uZXh0ID09IG1fZnJhbWUubV9lbmQpCiAgICAgICAgIGdyb3coKTsK
ICAgICByZXR1cm4gbV9mcmFtZS5tX25leHQrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAppbmRleCBiYWE5OTI0OC4uMTdhNWE2
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURl
ZmVycmVkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VE
ZWZlcnJlZC5jcHAKQEAgLTEwNiwxNCArMTA2LDE4IEBAIHZvaWQgSlNQcm9taXNlRGVmZXJyZWQ6
OnJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGNhbGxGdW5j
dGlvbihleGVjLCBtX3Jlc29sdmUuZ2V0KCksIHZhbHVlKTsKICAgICBib29sIHdhc1BlbmRpbmcg
PSBleGVjLT52bSgpLnByb21pc2VEZWZlcnJlZFRpbWVyLT5jYW5jZWxQZW5kaW5nUHJvbWlzZSh0
aGlzKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUX1VOVVNFRCh3YXNQZW5kaW5nLCB3YXNQ
ZW5kaW5nID09IG1fcHJvbWlzZUlzQXN5bmNQZW5kaW5nKTsKKyNlbmRpZgogfQogCiB2b2lkIEpT
UHJvbWlzZURlZmVycmVkOjpyZWplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJlYXNvbikK
IHsKICAgICBjYWxsRnVuY3Rpb24oZXhlYywgbV9yZWplY3QuZ2V0KCksIHJlYXNvbik7CiAgICAg
Ym9vbCB3YXNQZW5kaW5nID0gZXhlYy0+dm0oKS5wcm9taXNlRGVmZXJyZWRUaW1lci0+Y2FuY2Vs
UGVuZGluZ1Byb21pc2UodGhpcyk7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVF9VTlVTRUQo
d2FzUGVuZGluZywgd2FzUGVuZGluZyA9PSBtX3Byb21pc2VJc0FzeW5jUGVuZGluZyk7CisjZW5k
aWYKIH0KIAogdm9pZCBKU1Byb21pc2VEZWZlcnJlZDo6cmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
RXhjZXB0aW9uKiByZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9kdG9hL2JpZ251
bS5jYyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EvYmlnbnVtLmNjCmluZGV4IDhmNmY3M2E4Li5jNjAw
YjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZHRvYS9iaWdudW0uY2MKKysrIGIvU291
cmNlL1dURi93dGYvZHRvYS9iaWdudW0uY2MKQEAgLTc2MSw3ICs3NjEsOSBAQCBuYW1lc3BhY2Ug
ZG91YmxlX2NvbnZlcnNpb24gewogICAgICAgICAgICAgYm9ycm93ID0gZGlmZmVyZW5jZSA+PiAo
a0NodW5rU2l6ZSAtIDEpOwogICAgICAgICB9CiAgICAgICAgIENsYW1wKCk7CisjaWZuZGVmIE5E
RUJVRwogICAgICAgICBBU1NFUlQoQmlnbnVtOjpFcXVhbChhLCAqdGhpcykpOworI2VuZGlmCiAg
ICAgfQogICAgIAogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IGI0YWRjNjYyLi45NjE1ODEwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw5IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1h
bmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjCiAg
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrIHsgbV9wcm9wb3NlZERhdGFiYXNlc011
dGV4IH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJvcG9zZWRE
YXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRhaWxzKCku
bmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwoJm9yaWdp
bikpIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICAgICAgQVNTRVJUKCZwcm9wb3NlZERh
dGFiYXNlLT5kZXRhaWxzKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8IGlzTWFp
blRocmVhZCgpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIHJldHVybiBwcm9wb3NlZERhdGFi
YXNlLT5kZXRhaWxzKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCmluZGV4IDFkYTFiMWNl
Li4wZWFhNWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGFzay5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIERhdGFiYXNl
JiBkYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2U7IH0KIAotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBoYXNTeW5jaHJvbml6ZXIoKSBjb25z
dCB7IHJldHVybiBtX3N5bmNocm9uaXplcjsgfQogICAgIGJvb2wgaGFzQ2hlY2tlZEZvclRlcm1p
bmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zeW5jaHJvbml6ZXItPmhhc0NoZWNrZWRGb3JUZXJt
aW5hdGlvbigpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggMDA3ODAwYzkuLjc2NTk1Yjg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmNwcApAQCAtMTU0LDEzICsxNTQsMTcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVj
b3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNlVGhy
ZWFkOjpzY2hlZHVsZVRhc2soc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFzaz4mJiB0YXNrKQog
eworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIXRhc2stPmhhc1N5bmNocm9uaXplcigpIHx8
IHRhc2stPmhhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpKTsKKyNlbmRpZgogICAgIG1fcXVldWUu
YXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpzY2hlZHVs
ZUltbWVkaWF0ZVRhc2soc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFzaz4mJiB0YXNrKQogewor
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIXRhc2stPmhhc1N5bmNocm9uaXplcigpIHx8IHRh
c2stPmhhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpKTsKKyNlbmRpZgogICAgIG1fcXVldWUucHJl
cGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmgKaW5kZXggNTU0NGZiYmUuLmQxZTZmNDRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTU2LDggKzU2LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICAKICAgICB+SlNDYWxsYmFja0RhdGEoKQogICAgIHsKKyNpZm5kZWYgTkRFQlVH
CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgQVNTRVJUKG1fdGhyZWFkLnB0cigpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CisjZW5kaWYKICNlbmRpZgogICAgIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IDk2MTRkODc0
Li5mMGRmMWNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29y
aXRobXMuY3BwCkBAIC0xNjMsNyArMTYzLDkgQEAgdm9pZCBhZGRDaGlsZE5vZGVzVG9EZWxldGlv
blF1ZXVlKE5vZGUqJiBoZWFkLCBOb2RlKiYgdGFpbCwgQ29udGFpbmVyTm9kZSYgY29udGEKICAg
ICAvLyBXZSBoYXZlIHRvIHRlbGwgYWxsIGNoaWxkcmVuIHRoYXQgdGhlaXIgcGFyZW50IGhhcyBk
aWVkLgogICAgIFJlZlB0cjxOb2RlPiBuZXh0ID0gbnVsbHB0cjsKICAgICBmb3IgKFJlZlB0cjxO
b2RlPiBub2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5leHQpIHsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEFTU0VSVCghbm9kZS0+bV9kZWxldGlvbkhhc0JlZ3Vu
KTsKKyNlbmRpZgogCiAgICAgICAgIG5leHQgPSBub2RlLT5uZXh0U2libGluZygpOwogICAgICAg
ICBub2RlLT5zZXROZXh0U2libGluZyhudWxscHRyKTsKQEAgLTIwNiw3ICsyMDgsOSBAQCB2b2lk
IHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lcihDb250YWluZXJOb2RlJiBjb250YWlu
ZXIpCiAgICAgTm9kZSogbm9kZTsKICAgICBOb2RlKiBuZXh0OwogICAgIHdoaWxlICgobm9kZSA9
IGhlYWQpKSB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICBBU1NFUlQobm9kZS0+bV9kZWxldGlv
bkhhc0JlZ3VuKTsKKyNlbmRpZgogCiAgICAgICAgIG5leHQgPSBub2RlLT5uZXh0U2libGluZygp
OwogICAgICAgICBub2RlLT5zZXROZXh0U2libGluZyhudWxscHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IDZmZGExYTBhLi44MzgxNjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC02NDEsNyArNjQxLDkgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAKIHZvaWQgRG9jdW1l
bnQ6OnJlbW92ZWRMYXN0UmVmKCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2Rl
bGV0aW9uSGFzQmVndW4pOworI2VuZGlmCiAgICAgaWYgKG1fcmVmZXJlbmNpbmdOb2RlQ291bnQp
IHsKICAgICAgICAgLy8gSWYgcmVtb3ZpbmcgYSBjaGlsZCByZW1vdmVzIHRoZSBsYXN0IG5vZGUg
cmVmZXJlbmNlLCB3ZSBkb24ndCB3YW50IHRoZSBzY29wZSB0byBiZSBkZXN0cm95ZWQKICAgICAg
ICAgLy8gdW50aWwgYWZ0ZXIgcmVtb3ZlRGV0YWNoZWRDaGlsZHJlbiByZXR1cm5zLCBzbyB3ZSBw
cm90ZWN0IG91cnNlbHZlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2M2ZGU0ZTkuLjk5N2I1
ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzM1LDE2ICszMzUsMjAgQEAgcHVibGljOgog
ICAgIC8vIHBvaW50ZXIgd2l0aG91dCBpbnRyb2R1Y2luZyByZWZlcmVuY2UgY3ljbGVzLgogICAg
IHZvaWQgaW5jcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKQogICAgIHsKKyNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyNlbmRpZgogICAgICAg
ICArK21fcmVmZXJlbmNpbmdOb2RlQ291bnQ7CiAgICAgfQogCiAgICAgdm9pZCBkZWNyZW1lbnRS
ZWZlcmVuY2luZ05vZGVDb3VudCgpCiAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNT
RVJUKCFtX2RlbGV0aW9uSGFzQmVndW4gfHwgIW1fcmVmZXJlbmNpbmdOb2RlQ291bnQpOworI2Vu
ZGlmCiAgICAgICAgIC0tbV9yZWZlcmVuY2luZ05vZGVDb3VudDsKICAgICAgICAgaWYgKCFtX3Jl
ZmVyZW5jaW5nTm9kZUNvdW50ICYmICFyZWZDb3VudCgpKSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7
CiAjZW5kaWYKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
MjE1Yzk1ZjYuLjhlM2VjNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTY5OSwxMyArNjk5LDE3
IEBAIGlubGluZSBjb25zdCBFbGVtZW50KiBFbGVtZW50Ojpyb290RWxlbWVudCgpIGNvbnN0CiAK
IGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAg
QVNTRVJUKGZhc3RBdHRyaWJ1dGVMb29rdXBBbGxvd2VkKG5hbWUpKTsKKyNlbmRpZgogICAgIHJl
dHVybiBlbGVtZW50RGF0YSgpICYmIGZpbmRBdHRyaWJ1dGVCeU5hbWUobmFtZSk7CiB9CiAKIGlu
bGluZSBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKKyNpZm5kZWYgTkRF
QlVHCiAgICAgQVNTRVJUKGZhc3RBdHRyaWJ1dGVMb29rdXBBbGxvd2VkKG5hbWUpKTsKKyNlbmRp
ZgogICAgIGlmIChlbGVtZW50RGF0YSgpKSB7CiAgICAgICAgIGlmIChjb25zdCBBdHRyaWJ1dGUq
IGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUobmFtZSkpCiAgICAgICAgICAgICByZXR1
cm4gYXR0cmlidXRlLT52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGUwODZjOWZlLi4wMjUw
OGJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjczLDEwICsyNzMsMTAgQEAgTm9kZTo6fk5vZGUo
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3JlZkNvdW50
KTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAg
QVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgaWYg
KCFpZ25vcmVTZXQoKS5yZW1vdmUodGhpcykpCiAgICAgICAgIG5vZGVDb3VudGVyLmRlY3JlbWVu
dCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBlYjg1N2ZlYi4uZjRkOWUxZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaApAQCAtNzA1LDkgKzcwNSwxMSBAQCBpbmxpbmUgdm9pZCBhZG9wdGVkKE5vZGUqIG5vZGUp
CiBBTFdBWVNfSU5MSU5FIHZvaWQgTm9kZTo6cmVmKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7
CiAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CiAgICAgQVNTRVJUKCFt
X2Fkb3B0aW9uSXNSZXF1aXJlZCk7CisjZW5kaWYKICAgICArK21fcmVmQ291bnQ7CiB9CiAKQEAg
LTcxNSw5ICs3MTcsMTEgQEAgQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OmRlcmVmKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3JlZkNvdW50ID49IDApOwor
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgQVNT
RVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CiAgICAgQVNTRVJUKCFtX2Fkb3B0aW9u
SXNSZXF1aXJlZCk7CisjZW5kaWYKICAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDAgJiYgIXBhcmVu
dE5vZGUoKSkgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVu
Y3Rpb24gPSB0cnVlOwpAQCAtNzI4LDggKzczMiwxMCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTm9k
ZTo6ZGVyZWYoKQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgTm9kZTo6aGFzT25lUmVmKCkgY29uc3QK
IHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAg
IEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOworI2VuZGlmCiAgICAgcmV0dXJu
IG1fcmVmQ291bnQgPT0gMTsKIH0KIApAQCAtNzkxLDcgKzc5Nyw5IEBAIGlubGluZSB2b2lkIE5v
ZGU6OnNldEhhc1ZhbGlkU3R5bGUoKQogaW5saW5lIHZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlUmVj
dXJzaXZlbHkoVHJlZVNjb3BlJiBuZXdUcmVlU2NvcGUpCiB7CiAgICAgQVNTRVJUKCFpc0RvY3Vt
ZW50Tm9kZSgpKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVn
dW4pOworI2VuZGlmCiAgICAgaWYgKG1fdHJlZVNjb3BlICE9ICZuZXdUcmVlU2NvcGUpCiAgICAg
ICAgIG1vdmVUcmVlVG9OZXdTY29wZSgqdGhpcywgKm1fdHJlZVNjb3BlLCBuZXdUcmVlU2NvcGUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggZDUyYTVlZGEuLjFk
YzkyYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAgLTEyMCw3ICsx
MjAsOSBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjpyZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIEhUTUxTbG90RQogICAgICAgICBtX25lZWRzVG9SZXNvbHZl
U2xvdEVsZW1lbnRzID0gdHJ1ZTsKICNlbmRpZgogICAgIH0KKyNpZm5kZWYgTkRFQlVHCiAgICAg
QVNTRVJUKHNsb3RJbmZvLmVsZW1lbnQgfHwgbV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50cyk7
CisjZW5kaWYKIH0KIAogdm9pZCBTbG90QXNzaWdubWVudDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBB
dG9taWNTdHJpbmcmIHNsb3RBdHRyVmFsdWUsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAppbmRleCBjMzk2YjNhNC4uNDkzZmJh
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtMjQsNyAr
MjQsNyBAQAogICovCiAKICNwcmFnbWEgb25jZQotCisjaWYgRU5BQkxFKFdFQkdMKQogI2luY2x1
ZGUgIldlYkdMU2hhcmVkT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAt
OTksMyArOTksNCBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA2MjcyNzFmMy4uNzQ4
NGY1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApAQCAtMTA2LDE1ICsx
MDYsMjEgQEAgSW1hZ2VMb2FkZXI6On5JbWFnZUxvYWRlcigpCiAgICAgaWYgKG1faW1hZ2UpCiAg
ICAgICAgIG1faW1hZ2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKKyNpZm5kZWYgTkRFQlVHCiAg
ICAgQVNTRVJUKG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCB8fCAhYmVmb3JlTG9hZEV2ZW50
U2VuZGVyKCkuaGFzUGVuZGluZ0V2ZW50cygqdGhpcykpOworI2VuZGlmCiAgICAgaWYgKG1faGFz
UGVuZGluZ0JlZm9yZUxvYWRFdmVudCkKICAgICAgICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCku
Y2FuY2VsRXZlbnQoKnRoaXMpOwogCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2hhc1Bl
bmRpbmdMb2FkRXZlbnQgfHwgIWxvYWRFdmVudFNlbmRlcigpLmhhc1BlbmRpbmdFdmVudHMoKnRo
aXMpKTsKKyNlbmRpZgogICAgIGlmIChtX2hhc1BlbmRpbmdMb2FkRXZlbnQpCiAgICAgICAgIGxv
YWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KCp0aGlzKTsKIAorI2lmbmRlZiBOREVCVUcKICAg
ICBBU1NFUlQobV9oYXNQZW5kaW5nRXJyb3JFdmVudCB8fCAhZXJyb3JFdmVudFNlbmRlcigpLmhh
c1BlbmRpbmdFdmVudHMoKnRoaXMpKTsKKyNlbmRpZgogICAgIGlmIChtX2hhc1BlbmRpbmdFcnJv
ckV2ZW50KQogICAgICAgICBlcnJvckV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQoKnRoaXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMTIyMTQyZmEu
LmFlZGM3YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTExOSw3ICsxMTksOSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVz
dCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIEFTU0VSVCghbV9o
YW5kbGUpOwogICAgIEFTU0VSVChtX3JlcXVlc3QuaXNOdWxsKCkpOwogICAgIEFTU0VSVChtX2Rl
ZmVycmVkUmVxdWVzdC5pc051bGwoKSk7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9k
b2N1bWVudExvYWRlci0+aXNTdWJzdGl0dXRlTG9hZFBlbmRpbmcodGhpcykpOworI2VuZGlmCiAg
ICAgCiAgICAgbV9sb2FkVGltaW5nLm1hcmtTdGFydFRpbWVBbmRGZXRjaFN0YXJ0KCk7CiAKQEAg
LTI5NCw3ICsyOTYsMTAgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1Bv
bGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKIHsKKworI2lmbmRlZiBO
REVCVUcKICAgICBBU1NFUlQoIW1fZG9jdW1lbnRMb2FkZXItPmlzU3Vic3RpdHV0ZUxvYWRQZW5k
aW5nKHRoaXMpKTsKKyNlbmRpZgogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJh
dGVneSgpLT5yZW1vdmUodGhpcyk7CiAgICAgaWYgKG1faGFuZGxlKQogICAgICAgICBtX2hhbmRs
ZS0+Y2FuY2VsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcAppbmRleCBiZWNiOThhOC4uMjcwMTVhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMTcxLDcgKzE3MSw5IEBAIENhY2hl
ZFJlc291cmNlOjp+Q2FjaGVkUmVzb3VyY2UoKQogICAgIEFTU0VSVCghbV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZSk7IC8vIFNob3VsZCBiZSB0cnVlIGJlY2F1c2UgY2FuRGVsZXRlKCkgY2hlY2tzIHRo
aXMuCiAgICAgQVNTRVJUKGNhbkRlbGV0ZSgpKTsKICAgICBBU1NFUlQoIWluQ2FjaGUoKSk7Cisj
aWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9kZWxldGVkKTsKKyNlbmRpZgogICAgIEFTU0VS
VCh1cmwoKS5pc051bGwoKSB8fCAhYWxsb3dzQ2FjaGluZygpIHx8IE1lbW9yeUNhY2hlOjpzaW5n
bGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Npb25JRCgp
KSAhPSB0aGlzKTsKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDRmNjVmNDAzLi4yMDYzZTUwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0xNTQsNyArMTU0LDkgQEAg
dm9pZCBNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlJiBy
ZXZhbGlkYXRpbmdSZXNvdXJjZSwgY28KICAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS5oYXND
bGllbnRzKCksIGRlbHRhKTsKIAogICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLnN3aXRjaENsaWVu
dHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFy
ZXZhbGlkYXRpbmdSZXNvdXJjZS5tX2RlbGV0ZWQpOworI2VuZGlmCiAgICAgLy8gdGhpcyBkZWxl
dGVzIHRoZSByZXZhbGlkYXRpbmcgcmVzb3VyY2UKICAgICByZXZhbGlkYXRpbmdSZXNvdXJjZS5j
bGVhclJlc291cmNlVG9SZXZhbGlkYXRlKCk7CiB9CkBAIC00NjEsMTQgKzQ2MywxNyBAQCB2b2lk
IE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
CiAgICAgaWYgKCFyZXNvdXJjZS5hY2Nlc3NDb3VudCgpKQogICAgICAgICByZXR1cm47CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWZuZGVmIE5ERUJVRwogICAgIHVuc2lnbmVkIG9sZExpc3RJ
bmRleCA9IHJlc291cmNlLm1fbHJ1SW5kZXg7CiAjZW5kaWYKIAogICAgIExSVUxpc3QmIGxpc3Qg
PSBscnVMaXN0Rm9yKHJlc291cmNlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBsaXN0IHdl
IGdvdCBpcyB0aGUgbGlzdCB3ZSB3YW50LgorCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChy
ZXNvdXJjZS5tX2xydUluZGV4ID09IG9sZExpc3RJbmRleCk7CisjZW5kaWYKIAogICAgIGJvb2wg
cmVtb3ZlZCA9IGxpc3QucmVtb3ZlKCZyZXNvdXJjZSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1v
dmVkLCByZW1vdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAppbmRleCA4N2Q0ZTY5MC4u
Yzg5YzE0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKQEAgLTIwMCw3ICsyMDAsOSBA
QCBUaW1lckJhc2U6On5UaW1lckJhc2UoKQogCiB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25k
cyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogeworI2lmbmRlZiBO
REVCVUcKICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhy
ZWFkLmdldCgpKSk7CisjZW5kaWYKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRl
cnZhbDsKICAgICBzZXROZXh0RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBuZXh0Rmly
ZUludGVydmFsKTsKQEAgLTIwOCw3ICsyMTAsOSBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vj
b25kcyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogCiB2b2lkIFRp
bWVyQmFzZTo6c3RvcCgpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChjYW5BY2Nlc3NU
aHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKKyNlbmRpZgogCiAgICAg
bV9yZXBlYXRJbnRlcnZhbCA9IDBfczsKICAgICBzZXROZXh0RmlyZVRpbWUoTW9ub3RvbmljVGlt
ZSB7IH0pOwpAQCAtMzUzLDE0ICszNTcsMTggQEAgdm9pZCBUaW1lckJhc2U6OnVwZGF0ZUhlYXBJ
Zk5lZWRlZChNb25vdG9uaWNUaW1lIG9sZFRpbWUpCiAgICAgICAgIGhlYXBEZWNyZWFzZUtleSgp
OwogICAgIGVsc2UKICAgICAgICAgaGVhcEluY3JlYXNlS2V5KCk7CisjaWZuZGVmIE5ERUJVRwog
ICAgIEFTU0VSVChtX2hlYXBJbmRleCAhPSBvbGRIZWFwSW5kZXgpOworI2VuZGlmCiAgICAgQVNT
RVJUKCFpbkhlYXAoKSB8fCBoYXNWYWxpZEhlYXBQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBUaW1l
ckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIG5ld1RpbWUpCiB7CisjaWZuZGVm
IE5ERUJVRwogICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90
aHJlYWQuZ2V0KCkpKTsKICAgICBBU1NFUlQoIW1fd2FzRGVsZXRlZCk7CisjZW5kaWYKIAogICAg
IGlmIChtX3VuYWxpZ25lZE5leHRGaXJlVGltZSAhPSBuZXdUaW1lKQogICAgICAgICBtX3VuYWxp
Z25lZE5leHRGaXJlVGltZSA9IG5ld1RpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAppbmRleCA1
MmM3Mzk4NC4uNGY2NTcxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMTM5LDExICsx
MzksMTMgQEAgcHJpdmF0ZToKIGlubGluZSBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25z
dAogewogICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlzIGluIHRlcm1zIG9mIFVTRShXRUJfVEhSRUFE
KSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPUykuCisjaWZuZGVmIE5ERUJVRwogI2lmICFQTEFURk9S
TShJT1MpCiAgICAgQVNTRVJUKG1fdGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAjZWxzZQogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBwdGhyZWFkX21haW5f
bnAoKSB8fCBtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKKyNlbmRpZgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX25l
eHRGaXJlVGltZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmgKaW5kZXggZGViYjdjOGMuLmE5ZDBjY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtMTAyLDggKzEwMiwxMCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgc3FsaXRlMyogc3FsaXRlM0hhbmRsZSgpIGNvbnN0CiAgICAgeworI2lmbmRl
ZiBOREVCVUcKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8
fCBtX29wZW5pbmdUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8ICFtX2RiKTsKKyNlbmRp
ZgogI2VuZGlmCiAgICAgICAgIHJldHVybiBtX2RiOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggYzhmMzBiYTUuLjZiYjQx
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcApAQCAtNTgsNyArNTgsOSBAQCBTUUxpdGVTdGF0ZW1lbnQ6On5TUUxpdGVTdGF0ZW1lbnQo
KQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpwcmVwYXJlKCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAg
ICAgQVNTRVJUKCFtX2lzUHJlcGFyZWQpOworI2VuZGlmCiAKICAgICBMb2NrSG9sZGVyIGRhdGFi
YXNlTG9jayhtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSk7CiAKQEAgLTEyMSw3ICsxMjMsOSBA
QCBpbnQgU1FMaXRlU3RhdGVtZW50OjpmaW5hbGl6ZSgpCiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6
OnJlc2V0KCkgCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2lzUHJlcGFyZWQpOwor
I2VuZGlmCiAgICAgaWYgKCFtX3N0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIFNRTElURV9PSzsK
ICAgICBMT0coU1FMRGF0YWJhc2UsICJTUUwgLSByZXNldCAtICVzIiwgbV9xdWVyeS5hc2NpaSgp
LmRhdGEoKSk7CkBAIC0xMzIsNyArMTM2LDEwIEBAIGJvb2wgU1FMaXRlU3RhdGVtZW50OjpleGVj
dXRlQ29tbWFuZCgpCiB7CiAgICAgaWYgKCFtX3N0YXRlbWVudCAmJiBwcmVwYXJlKCkgIT0gU1FM
SVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNT
RVJUKG1faXNQcmVwYXJlZCk7CisjZW5kaWYKICAgICBpZiAoc3RlcCgpICE9IFNRTElURV9ET05F
KSB7CiAgICAgICAgIGZpbmFsaXplKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0NSw3
ICsxNTIsMTAgQEAgYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6OnJldHVybnNBdExlYXN0T25lUmVzdWx0
KCkKIHsKICAgICBpZiAoIW1fc3RhdGVtZW50ICYmIHByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9pc1By
ZXBhcmVkKTsKKyNlbmRpZgogICAgIGlmIChzdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAg
ICBmaW5hbGl6ZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTcsNyArMTY3LDkgQEAg
Ym9vbCBTUUxpdGVTdGF0ZW1lbnQ6OnJldHVybnNBdExlYXN0T25lUmVzdWx0KCkKIAogaW50IFNR
TGl0ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LCBjb25zdCB2b2lkKiBibG9iLCBpbnQg
c2l6ZSkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faXNQcmVwYXJlZCk7CisjZW5k
aWYKICAgICBBU1NFUlQoaW5kZXggPiAwKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluZGV4KSA8PSBiaW5kUGFyYW1ldGVyQ291bnQoKSk7CiAgICAgQVNTRVJUKGJsb2IpOwpA
QCAtMTg2LDcgKzE5OCw5IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4dChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNT
RVJUKG1faXNQcmVwYXJlZCk7CisjZW5kaWYKICAgICBBU1NFUlQoaW5kZXggPiAwKTsKICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSA8PSBiaW5kUGFyYW1ldGVyQ291bnQo
KSk7CiAKQEAgLTIwNSw3ICsyMTksOSBAQCBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVGV4dChp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6Ymlu
ZEludChpbnQgaW5kZXgsIGludCBpbnRlZ2VyKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NF
UlQobV9pc1ByZXBhcmVkKTsKKyNlbmRpZgogICAgIEFTU0VSVChpbmRleCA+IDApOwogICAgIEFT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0ZXJDb3VudCgp
KTsKIApAQCAtMjE0LDcgKzIzMCw5IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRJbnQoaW50
IGluZGV4LCBpbnQgaW50ZWdlcikKIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEludDY0KGlu
dCBpbmRleCwgaW50NjRfdCBpbnRlZ2VyKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQo
bV9pc1ByZXBhcmVkKTsKKyNlbmRpZgogICAgIEFTU0VSVChpbmRleCA+IDApOwogICAgIEFTU0VS
VChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsK
IApAQCAtMjIzLDcgKzI0MSw5IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRJbnQ2NChpbnQg
aW5kZXgsIGludDY0X3QgaW50ZWdlcikKIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZERvdWJs
ZShpbnQgaW5kZXgsIGRvdWJsZSBudW1iZXIpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VChtX2lzUHJlcGFyZWQpOworI2VuZGlmCiAgICAgQVNTRVJUKGluZGV4ID4gMCk7CiAgICAgQVNT
RVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkgPD0gYmluZFBhcmFtZXRlckNvdW50KCkp
OwogCkBAIC0yMzIsNyArMjUyLDkgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZERvdWJsZShp
bnQgaW5kZXgsIGRvdWJsZSBudW1iZXIpCiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmROdWxs
KGludCBpbmRleCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faXNQcmVwYXJlZCk7
CisjZW5kaWYKICAgICBBU1NFUlQoaW5kZXggPiAwKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGluZGV4KSA8PSBiaW5kUGFyYW1ldGVyQ291bnQoKSk7CiAKQEAgLTI1MCw3ICsy
NzIsOSBAQCBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kVmFsdWUoaW50IGluZGV4LCBjb25zdCBT
UUxWYWx1ZSYgdmFsdWUpCiAKIHVuc2lnbmVkIFNRTGl0ZVN0YXRlbWVudDo6YmluZFBhcmFtZXRl
ckNvdW50KCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faXNQcmVwYXJl
ZCk7CisjZW5kaWYKICAgICBpZiAoIW1fc3RhdGVtZW50KQogICAgICAgICByZXR1cm4gMDsKICAg
ICByZXR1cm4gc3FsaXRlM19iaW5kX3BhcmFtZXRlcl9jb3VudChtX3N0YXRlbWVudCk7CkBAIC0y
NTgsNyArMjgyLDkgQEAgdW5zaWduZWQgU1FMaXRlU3RhdGVtZW50OjpiaW5kUGFyYW1ldGVyQ291
bnQoKSBjb25zdAogCiBpbnQgU1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5Db3VudCgpCiB7CisjaWZu
ZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2lzUHJlcGFyZWQpOworI2VuZGlmCiAgICAgaWYgKCFt
X3N0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHNxbGl0ZTNfZGF0YV9j
b3VudChtX3N0YXRlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09i
amVjdHMuY3BwCmluZGV4IGY1NzZkY2YwLi41MWRhNGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKQEAgLTMxMiw3ICszMTIsOSBAQCBGbG9hdGlu
Z09iamVjdEludGVydmFsIEZsb2F0aW5nT2JqZWN0czo6aW50ZXJ2YWxGb3JGbG9hdGluZ09iamVj
dChGbG9hdGluZ09iamVjdAogCiB2b2lkIEZsb2F0aW5nT2JqZWN0czo6YWRkUGxhY2VkT2JqZWN0
KEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAg
QVNTRVJUKCFmbG9hdGluZ09iamVjdC0+aXNJblBsYWNlZFRyZWUoKSk7CisjZW5kaWYKIAogICAg
IGZsb2F0aW5nT2JqZWN0LT5zZXRJc1BsYWNlZCh0cnVlKTsKICAgICBpZiAobV9wbGFjZWRGbG9h
dHNUcmVlKQpAQCAtMzI1LDcgKzMyNyw5IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjphZGRQbGFj
ZWRPYmplY3QoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQogCiB2b2lkIEZsb2F0aW5n
T2JqZWN0czo6cmVtb3ZlUGxhY2VkT2JqZWN0KEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVj
dCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNl
ZCgpICYmIGZsb2F0aW5nT2JqZWN0LT5pc0luUGxhY2VkVHJlZSgpKTsKKyNlbmRpZgogCiAgICAg
aWYgKG1fcGxhY2VkRmxvYXRzVHJlZSkgewogICAgICAgICBib29sIHJlbW92ZWQgPSBtX3BsYWNl
ZEZsb2F0c1RyZWUtPnJlbW92ZShpbnRlcnZhbEZvckZsb2F0aW5nT2JqZWN0KGZsb2F0aW5nT2Jq
ZWN0KSk7CkBAIC0zNTAsNyArMzU0LDkgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OnJlbW92ZShG
bG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCiB7CiAgICAgQVNTRVJUKChtX3NldC5jb250
YWluczxGbG9hdGluZ09iamVjdCYsIEZsb2F0aW5nT2JqZWN0SGFzaFRyYW5zbGF0b3I+KCpmbG9h
dGluZ09iamVjdCkpKTsKICAgICBkZWNyZWFzZU9iamVjdHNDb3VudChmbG9hdGluZ09iamVjdC0+
dHlwZSgpKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGZsb2F0aW5nT2JqZWN0LT5pc1Bs
YWNlZCgpIHx8ICFmbG9hdGluZ09iamVjdC0+aXNJblBsYWNlZFRyZWUoKSk7CisjZW5kaWYKICAg
ICBpZiAoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkpCiAgICAgICAgIHJlbW92ZVBsYWNlZE9i
amVjdChmbG9hdGluZ09iamVjdCk7CiAgICAgQVNTRVJUKCFmbG9hdGluZ09iamVjdC0+b3JpZ2lu
YXRpbmdMaW5lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0
aW5nT2JqZWN0cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5o
CmluZGV4IDY2NjE5Mjg0Li5iMGE1NjhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
bG9hdGluZ09iamVjdHMuaApAQCAtNTksMTUgKzU5LDQ0IEBAIHB1YmxpYzoKICAgICBMYXlvdXRV
bml0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Qud2lkdGgoKTsgfQogICAgIExh
eW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3QuaGVpZ2h0KCk7IH0K
IAotICAgIHZvaWQgc2V0WChMYXlvdXRVbml0IHgpIHsgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgp
KTsgbV9mcmFtZVJlY3Quc2V0WCh4KTsgfQotICAgIHZvaWQgc2V0WShMYXlvdXRVbml0IHkpIHsg
QVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsgbV9mcmFtZVJlY3Quc2V0WSh5KTsgfQotICAgIHZv
aWQgc2V0V2lkdGgoTGF5b3V0VW5pdCB3aWR0aCkgeyBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkp
OyBtX2ZyYW1lUmVjdC5zZXRXaWR0aCh3aWR0aCk7IH0KLSAgICB2b2lkIHNldEhlaWdodChMYXlv
dXRVbml0IGhlaWdodCkgeyBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOyBtX2ZyYW1lUmVjdC5z
ZXRIZWlnaHQoaGVpZ2h0KTsgfQotCi0gICAgdm9pZCBzZXRNYXJnaW5PZmZzZXQoTGF5b3V0U2l6
ZSBvZmZzZXQpIHsgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsgbV9tYXJnaW5PZmZzZXQgPSBv
ZmZzZXQ7IH0KKyAgICB2b2lkIHNldFgoTGF5b3V0VW5pdCB4KSB7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsKKyNlbmRpZgorICAgICAgbV9mcmFtZVJl
Y3Quc2V0WCh4KTsKKyAgICB9CisgICAgdm9pZCBzZXRZKExheW91dFVuaXQgeSkgeworI2lmbmRl
ZiBOREVCVUcKKyAgICAgIEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7CisjZW5kaWYKKyAgICAg
IG1fZnJhbWVSZWN0LnNldFkoeSk7CisgICAgfQorICAgIHZvaWQgc2V0V2lkdGgoTGF5b3V0VW5p
dCB3aWR0aCkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgIEFTU0VSVCghaXNJblBsYWNlZFRyZWUo
KSk7CisjZW5kaWYKKyAgICAgIG1fZnJhbWVSZWN0LnNldFdpZHRoKHdpZHRoKTsKKyAgICB9Cisg
ICAgdm9pZCBzZXRIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQpIHsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOworI2VuZGlmCisgICAgICBtX2ZyYW1lUmVj
dC5zZXRIZWlnaHQoaGVpZ2h0KTsKKyAgICB9CisgICAgdm9pZCBzZXRNYXJnaW5PZmZzZXQoTGF5
b3V0U2l6ZSBvZmZzZXQpIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICBBU1NFUlQoIWlzSW5QbGFj
ZWRUcmVlKCkpOworI2VuZGlmCisgICAgICBtX21hcmdpbk9mZnNldCA9IG9mZnNldDsKKyAgICB9
CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBmcmFtZVJlY3QoKSBjb25zdCB7IEFTU0VSVChpc1Bs
YWNlZCgpKTsgcmV0dXJuIG1fZnJhbWVSZWN0OyB9Ci0gICAgdm9pZCBzZXRGcmFtZVJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1f
ZnJhbWVSZWN0ID0gZnJhbWVSZWN0OyB9CisgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgZnJhbWVSZWN0KSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgQVNTRVJUKCFpc0lu
UGxhY2VkVHJlZSgpKTsKKyNlbmRpZgorIG1fZnJhbWVSZWN0ID0gZnJhbWVSZWN0OworICAgIH0K
IAogICAgIExheW91dFVuaXQgcGFnaW5hdGlvblN0cnV0KCkgY29uc3QgeyByZXR1cm4gbV9wYWdp
bmF0aW9uU3RydXQ7IH0KICAgICB2b2lkIHNldFBhZ2luYXRpb25TdHJ1dChMYXlvdXRVbml0IHN0
cnV0KSB7IG1fcGFnaW5hdGlvblN0cnV0ID0gc3RydXQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGY0OTJmMTgwLi4zY2NmMzNiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMzE2LDcgKzMzMTYsOSBAQCBMYXlv
dXRVbml0IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIGZyYWdtZW50ZWRGbG93LT5vZmZzZXRGcm9tTG9naWNhbFRvcE9m
Rmlyc3RGcmFnbWVudCh0aGlzKTsKIAogICAgIGlmIChsYXlvdXRTdGF0ZSkgeworI2lmbmRlZiBO
REVCVUcKICAgICAgICAgQVNTRVJUKGxheW91dFN0YXRlLT5yZW5kZXJlcigpID09IHRoaXMpOwor
I2VuZGlmCiAKICAgICAgICAgTGF5b3V0U2l6ZSBvZmZzZXREZWx0YSA9IGxheW91dFN0YXRlLT5s
YXlvdXRPZmZzZXQoKSAtIGxheW91dFN0YXRlLT5wYWdlT2Zmc2V0KCk7CiAgICAgICAgIHJldHVy
biBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gb2Zmc2V0RGVsdGEuaGVpZ2h0KCkgOiBvZmZz
ZXREZWx0YS53aWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwCmluZGV4IDlkMjJkNTdlLi5kMmQ2NmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTE0OSw3ICsxMTQ5LDkgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50Ojp3aWxsQmVEZXN0cm95ZWQoKQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldE5lZWRzUG9z
aXRpb25lZE1vdmVtZW50TGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKKyNp
Zm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFpc1NldE5lZWRzTGF5b3V0Rm9yYmlkZGVuKCkpOwor
I2VuZGlmCiAgICAgaWYgKG5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dEJpdCh0cnVlKTsK
QEAgLTExNzMsNyArMTE3NSw5IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6Y2xlYXJDaGlsZE5lZWRz
TGF5b3V0KCkKIAogdm9pZCBSZW5kZXJFbGVtZW50OjpzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxG
bG93TGF5b3V0KCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFpc1NldE5lZWRzTGF5
b3V0Rm9yYmlkZGVuKCkpOworI2VuZGlmCiAgICAgaWYgKG5lZWRzU2ltcGxpZmllZE5vcm1hbEZs
b3dMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNldE5lZWRzU2ltcGxpZmllZE5vcm1h
bEZsb3dMYXlvdXRCaXQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAppbmRleCBhODY3ZDJkOC4uMmM4MTY3NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaApAQCAtMzcyLDcgKzM3Miw5IEBAIGlubGluZSB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnNldEFuY2VzdG9yTGluZUJveERpcnR5KGJvb2wgZikKIAogaW5saW5lIHZvaWQgUmVu
ZGVyRWxlbWVudDo6c2V0Q2hpbGROZWVkc0xheW91dChNYXJraW5nQmVoYXZpb3IgbWFya1BhcmVu
dHMpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91dEZvcmJp
ZGRlbigpKTsKKyNlbmRpZgogICAgIGlmIChub3JtYWxDaGlsZE5lZWRzTGF5b3V0KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBzZXROb3JtYWxDaGlsZE5lZWRzTGF5b3V0Qml0KHRydWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGMxZWM5MTVlLi44ZmM3MjRm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTk3LDcgKzE5
Nyw5IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVRyYWNrU2l6ZXNGb3JEZWZpbml0ZVNpemUo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAgICAgbV90cmFja1NpemluZ0FsZ29yaXRo
bS5zZXR1cChkaXJlY3Rpb24sIG51bVRyYWNrcyhkaXJlY3Rpb24sIG1fZ3JpZCksIFRyYWNrU2l6
aW5nLCBhdmFpbGFibGVTcGFjZSwgZnJlZVNwYWNlKTsKICAgICBtX3RyYWNrU2l6aW5nQWxnb3Jp
dGhtLnJ1bigpOwogCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX3RyYWNrU2l6aW5nQWxn
b3JpdGhtLnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCgpKTsKKyNlbmRpZgogfQog
CiB2b2lkIFJlbmRlckdyaWQ6OnJlcGVhdFRyYWNrc1NpemluZ0lmTmVlZGVkKExheW91dFVuaXQg
YXZhaWxhYmxlU3BhY2VGb3JDb2x1bW5zLCBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlRm9yUm93
cykKQEAgLTQ0Niw3ICs0NDgsOSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVUcmFja1NpemVz
Rm9ySW5kZWZpbml0ZVNpemUoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbAogICAgIG1pbklu
dHJpbnNpY1NpemUgPSBhbGdvcml0aG0ubWluQ29udGVudFNpemUoKSArIHRvdGFsR3V0dGVyc1Np
emU7CiAgICAgbWF4SW50cmluc2ljU2l6ZSA9IGFsZ29yaXRobS5tYXhDb250ZW50U2l6ZSgpICsg
dG90YWxHdXR0ZXJzU2l6ZTsKIAorI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoYWxnb3JpdGht
LnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCgpKTsKKyNlbmRpZgogfQogCiBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
Q29udGVudEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IGludHJpbnNpY0xvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgYm9yZGVy
QW5kUGFkZGluZykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CmluZGV4IGU1ZTQyY2M2Li4wMGMwZGIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC01NDAyLDkgKzU0MDIsMTEgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVy
TGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHND
b24KICAgICBBU1NFUlQoY2xpcFJlY3RzVHlwZSA8IE51bUNhY2hlZENsaXBSZWN0c1R5cGVzKTsK
ICAgICBpZiAobV9jbGlwUmVjdHNDYWNoZSkgewogICAgICAgICBpZiAoYXV0byogY2xpcFJlY3Rz
ID0gbV9jbGlwUmVjdHNDYWNoZS0+Z2V0Q2xpcFJlY3RzKGNsaXBSZWN0c1R5cGUsIGNsaXBSZWN0
c0NvbnRleHQucmVzcGVjdE92ZXJmbG93Q2xpcCkpIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAg
ICAgICBBU1NFUlQoY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXIgPT0gbV9jbGlwUmVjdHNDYWNo
ZS0+bV9jbGlwUmVjdHNSb290W2NsaXBSZWN0c1R5cGVdKTsKICAgICAgICAgICAgIEFTU0VSVCht
X2NsaXBSZWN0c0NhY2hlLT5tX3Njcm9sbGJhclJlbGV2YW5jeVtjbGlwUmVjdHNUeXBlXSA9PSBj
bGlwUmVjdHNDb250ZXh0Lm92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5KTsKLSAgICAgICAg
CisjZW5kaWYKKwogI2lmZGVmIENIRUNLX0NBQ0hFRF9DTElQX1JFQ1RTCiAgICAgICAgICAgICAv
LyBUaGlzIGNvZGUgaXMgdXNlZnVsIHRvIGNoZWNrIGNhY2hlZCBjbGlwIHJlY3RzLCBidXQgaXMg
dG9vIGV4cGVuc2l2ZSB0byBsZWF2ZSBlbmFibGVkIGluIGRlYnVnIGJ1aWxkcyBieSBkZWZhdWx0
LgogICAgICAgICAgICAgQ2xpcFJlY3RzQ29udGV4dCB0ZW1wQ29udGV4dChjbGlwUmVjdHNDb250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNzlj
MDk4Y2UuLjZhM2JmZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtNDk2LDcgKzQ5Niw5IEBAIHN0YXRpYyB2b2lkIHNjaGVkdWxlUmVsYXlvdXRGb3JT
dWJ0cmVlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogdm9pZCBSZW5kZXJPYmplY3Q6Om1hcmtD
b250YWluaW5nQmxvY2tzRm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlvdXQgc2NoZWR1bGVSZWxheW91
dCwgUmVuZGVyRWxlbWVudCogbmV3Um9vdCkKIHsKICAgICBBU1NFUlQoc2NoZWR1bGVSZWxheW91
dCA9PSBTY2hlZHVsZVJlbGF5b3V0OjpObyB8fCAhbmV3Um9vdCk7CisjaWZuZGVmIE5ERUJVRwog
ICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91dEZvcmJpZGRlbigpKTsKKyNlbmRpZgogCiAgICAg
YXV0byBhbmNlc3RvciA9IGNvbnRhaW5lcigpOwogCkBAIC01MzQsNyArNTM2LDkgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlv
dXQgc2NoZWR1bGVSZWxheW8KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBh
bmNlc3Rvci0+c2V0Tm9ybWFsQ2hpbGROZWVkc0xheW91dEJpdCh0cnVlKTsKICAgICAgICAgfQor
I2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKCFhbmNlc3Rvci0+aXNTZXROZWVkc0xheW91
dEZvcmJpZGRlbigpKTsKKyNlbmRpZgogCiAgICAgICAgIGlmIChhbmNlc3RvciA9PSBuZXdSb290
KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCmluZGV4IGZjMDQ3YzVjLi5jYzM2YmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaApAQCAtMTAzNSw3ICsxMDM1LDkgQEAgaW5saW5lIGJvb2wgUmVuZGVyT2Jq
ZWN0Ojppc0JlZm9yZU9yQWZ0ZXJDb250ZW50KCkgY29uc3QKIAogaW5saW5lIHZvaWQgUmVuZGVy
T2JqZWN0OjpzZXROZWVkc0xheW91dChNYXJraW5nQmVoYXZpb3IgbWFya1BhcmVudHMpCiB7Cisj
aWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91dEZvcmJpZGRlbigpKTsK
KyNlbmRpZgogICAgIGlmIChtX2JpdGZpZWxkcy5uZWVkc0xheW91dCgpKQogICAgICAgICByZXR1
cm47CiAgICAgbV9iaXRmaWVsZHMuc2V0TmVlZHNMYXlvdXQodHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBiMjNlMTYyMC4uYWY5MDhjYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTU4Niw3ICsxNTg2LDkg
QEAgUmVuZGVyUHRyPFJlbmRlclRhYmxlPiBSZW5kZXJUYWJsZTo6Y3JlYXRlQW5vbnltb3VzV2l0
aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJlbmQKIAogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRh
YmxlOjp0YWJsZVN0YXJ0Qm9yZGVyQWRqb2luaW5nQ2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwm
IGNlbGwpIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChjZWxsLmlzRmlyc3RP
ckxhc3RDZWxsSW5Sb3coKSk7CisjZW5kaWYKICAgICBpZiAoaXNEaXJlY3Rpb25TYW1lKHRoaXMs
IGNlbGwucm93KCkpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS5ib3JkZXJTdGFydCgpOwogCkBA
IC0xNTk1LDcgKzE1OTcsOSBAQCBjb25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGU6OnRhYmxl
U3RhcnRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0IFJlbmRlclRhYmxlQwogCiBjb25zdCBCb3Jk
ZXJWYWx1ZSYgUmVuZGVyVGFibGU6OnRhYmxlRW5kQm9yZGVyQWRqb2luaW5nQ2VsbChjb25zdCBS
ZW5kZXJUYWJsZUNlbGwmIGNlbGwpIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VChjZWxsLmlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7CisjZW5kaWYKICAgICBpZiAoaXNEaXJl
Y3Rpb25TYW1lKHRoaXMsIGNlbGwucm93KCkpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS5ib3Jk
ZXJFbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmlu
ZGV4IDM4OTRjNGJmLi5kM2FkOGYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuaApAQCAtMzA0LDcgKzMwNCw5IEBAIGlubGluZSBib29sIFJlbmRlclRhYmxl
Q2VsbDo6aXNCYXNlbGluZUFsaWduZWQoKSBjb25zdAogCiBpbmxpbmUgY29uc3QgQm9yZGVyVmFs
dWUmIFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyQWRqb2luaW5nVGFibGVTdGFydCgpIGNvbnN0CiB7
CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChpc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOwor
I2VuZGlmCiAgICAgaWYgKGlzRGlyZWN0aW9uU2FtZShzZWN0aW9uKCksIHRhYmxlKCkpKQogICAg
ICAgICByZXR1cm4gc3R5bGUoKS5ib3JkZXJTdGFydCgpOwogCkBAIC0zMTMsNyArMzE1LDkgQEAg
aW5saW5lIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckFkam9pbmlu
Z1RhYmxlU3RhcnQoKSBjb25zdAogCiBpbmxpbmUgY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRh
YmxlQ2VsbDo6Ym9yZGVyQWRqb2luaW5nVGFibGVFbmQoKSBjb25zdAogeworI2lmbmRlZiBOREVC
VUcKICAgICBBU1NFUlQoaXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsKKyNlbmRpZgogICAgIGlm
IChpc0RpcmVjdGlvblNhbWUoc2VjdGlvbigpLCB0YWJsZSgpKSkKICAgICAgICAgcmV0dXJuIHN0
eWxlKCkuYm9yZGVyRW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuY3BwCmluZGV4IGVmMjIzNzkyLi43MTNjZGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCkBAIC05OCwxNCArOTgsMTggQEAgdm9pZCBSZW5k
ZXJUYWJsZVJvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGQKIAogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlUm93Ojpib3Jk
ZXJBZGpvaW5pbmdTdGFydENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsJiBjZWxsKSBjb25zdAog
eworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlRfVU5VU0VEKGNlbGwsIGNlbGwuaXNGaXJzdE9y
TGFzdENlbGxJblJvdygpKTsKKyNlbmRpZgogICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5v
cmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0IGZvciBtaXhlZCBkaXJlY3Rpb25hbGl0eSBhdCB0aGUg
Y2VsbCBsZXZlbC4KICAgICByZXR1cm4gc3R5bGUoKS5ib3JkZXJTdGFydCgpOwogfQogCiBjb25z
dCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGVSb3c6OmJvcmRlckFkam9pbmluZ0VuZENlbGwoY29u
c3QgUmVuZGVyVGFibGVDZWxsJiBjZWxsKSBjb25zdAogeworI2lmbmRlZiBOREVCVUcKICAgICBB
U1NFUlRfVU5VU0VEKGNlbGwsIGNlbGwuaXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsKKyNlbmRp
ZgogICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0
IGZvciBtaXhlZCBkaXJlY3Rpb25hbGl0eSBhdCB0aGUgY2VsbCBsZXZlbC4KICAgICByZXR1cm4g
c3R5bGUoKS5ib3JkZXJFbmQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZDcxZDQ3MzkuLjZlYTAzNzk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtNzE3LDcg
KzcxNyw5IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpjb21wdXRlT3ZlcmZsb3dGcm9tQ2Vs
bHModW5zaWduZWQgdG90YWxSb3dzLCB1bnNpZ25lZCBuCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChoYXNPdmVyZmxvd2luZ0NlbGwg
PT0gdGhpcy0+aGFzT3ZlcmZsb3dpbmdDZWxsKCkpOworI2VuZGlmCiB9CiAKIExheW91dFVuaXQg
UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjT3V0ZXJCb3JkZXJCZWZvcmUoKSBjb25zdApAQCAtMTQy
NiwxMyArMTQyOCwxNyBAQCB1bnNpZ25lZCBSZW5kZXJUYWJsZVNlY3Rpb246Om51bUNvbHVtbnMo
KSBjb25zdAogCiBjb25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGVTZWN0aW9uOjpib3JkZXJB
ZGpvaW5pbmdTdGFydENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsJiBjZWxsKSBjb25zdAogewor
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoY2VsbC5pc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkp
OworI2VuZGlmCiAgICAgcmV0dXJuIGlzRGlyZWN0aW9uU2FtZSh0aGlzLCAmY2VsbCkgPyBzdHls
ZSgpLmJvcmRlclN0YXJ0KCkgOiBzdHlsZSgpLmJvcmRlckVuZCgpOwogfQogCiBjb25zdCBCb3Jk
ZXJWYWx1ZSYgUmVuZGVyVGFibGVTZWN0aW9uOjpib3JkZXJBZGpvaW5pbmdFbmRDZWxsKGNvbnN0
IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNT
RVJUKGNlbGwuaXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsKKyNlbmRpZgogICAgIHJldHVybiBp
c0RpcmVjdGlvblNhbWUodGhpcywgJmNlbGwpID8gc3R5bGUoKS5ib3JkZXJFbmQoKSA6IHN0eWxl
KCkuYm9yZGVyU3RhcnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcAppbmRleCBjYjMzNjJmZC4uOWI5ZWRjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0yMDIsNyArMjAyLDkgQEAgdm9p
ZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnJlc2V0QW5pbWF0ZWRUeXBlKCkKICAgICAgICAgaWYg
KG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAor
I2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKHByb3BlcnR5VHlwZXNBcmVDb25zaXN0ZW50
KG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKSk7CisjZW5kaWYK
ICAgICAgICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKICAgICAgICAgICAgIG1fYW5pbWF0ZWRUeXBl
ID0gYW5pbWF0b3ItPnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihtX2FuaW1hdGVkUHJvcGVydGllcyk7
CiAgICAgICAgIGVsc2UgewpAQCAtMjI5LDcgKzIzMSw5IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSgpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUNT
U1Byb3BlcnR5VG9UYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgQ1NTUHJvcGVydHlJ
RCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJU
KCF0YXJnZXRFbGVtZW50Lm1fZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYKIAogICAgIGlmICgh
dGFyZ2V0RWxlbWVudC5lbnN1cmVBbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMoKS5zZXRQcm9w
ZXJ0eShpZCwgdmFsdWUsIGZhbHNlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM5LDcgKzI0Myw5
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUNTU1Byb3BlcnR5VG9UYXJnZXQoU1ZHRWxlbWVu
dCYgdGFyZ2V0RWxlbWVudCwgQ1NTUHJvcGVyCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVD
U1NQcm9wZXJ0eUZyb21UYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgQ1NTUHJvcGVy
dHlJRCBpZCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCF0YXJnZXRFbGVtZW50Lm1f
ZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYKICAgICB0YXJnZXRFbGVtZW50LmVuc3VyZUFuaW1h
dGVkU01JTFN0eWxlUHJvcGVydGllcygpLnJlbW92ZVByb3BlcnR5KGlkKTsKICAgICB0YXJnZXRF
bGVtZW50LmludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKIH0KQEAgLTI3OCw3
ICsyODQsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlQ1NTUHJvcGVydHlGcm9tVGFyZ2V0
QW5kSW5zdGFuY2VzKFNWR0VsZW1lbnQmIHRhcmdldEVsZQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
bm90aWZ5VGFyZ2V0QWJvdXRBbmltVmFsQ2hhbmdlKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7CisjaWZuZGVmIE5ERUJVRwog
ICAgIEFTU0VSVCghdGFyZ2V0RWxlbWVudC5tX2RlbGV0aW9uSGFzQmVndW4pOworI2VuZGlmCiAg
ICAgdGFyZ2V0RWxlbWVudC5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZU5hbWUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHkuY3BwCmluZGV4IGYyNGE4ZDg3Li41OWJmNjgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAKQEAgLTUxLDcg
KzUxLDkgQEAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6flNWR0FuaW1hdGVkUHJvcGVydHkoKQogdm9p
ZCBTVkdBbmltYXRlZFByb3BlcnR5Ojpjb21taXRDaGFuZ2UoKQogewogICAgIEFTU0VSVChtX2Nv
bnRleHRFbGVtZW50KTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2NvbnRleHRFbGVt
ZW50LT5tX2RlbGV0aW9uSGFzQmVndW4pOworI2VuZGlmCiAgICAgbV9jb250ZXh0RWxlbWVudC0+
aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKICAgICBtX2NvbnRleHRFbGVtZW50LT5zdmdBdHRy
aWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlTmFtZSk7CiAgICAgLy8gTmVlZGVkIHRvIHN5bmNocm9u
aXplIHdpdGggQ1NTT00gZm9yIHByZXNlbnRhdGlvbiBhdHRyaWJ1dGVzIHdpdGggU1ZHIERPTS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggYmFjNmRjYTQu
LjM3Njk2NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2Fs
bGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApA
QCAtOTQsMTMgKzk0LDE3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkdlbmVyaWNDYWxsYmFj
aygpCiAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFk
LnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisjZW5kaWYKICAgICAgICAgQVNTRVJUKCFt
X2NhbGxiYWNrKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShULi4uIHJldHVyblZhbHVlKQogICAgIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEFT
U0VSVChtX29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworI2VuZGlm
CiAKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE3
LDcgKzEyMSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZShFcnJvciBlcnJvciA9
IEVycm9yOjpVbmtub3duKSBmaW5hbAogICAgIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEFT
U0VSVChtX29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworI2VuZGlm
CiAKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwo=
</data>
<flag name="review"
          id="404503"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342799</attachid>
            <date>2018-06-15 03:07:04 -0700</date>
            <delta_ts>2022-03-12 21:01:53 -0800</delta_ts>
            <desc>tentative patch - against 2.21.4</desc>
            <filename>ndebug.diff</filename>
            <type>text/plain</type>
            <size>36454</size>
            <attacher>enometh</attacher>
            
              <data encoding="base64">Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaApA
QCAtMjI0LDkgKzIyNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAgICAgfkxvY2Fs
V3JpdGVyKCkKICAgICAgICAgICAgIHsKKyNpZiAhZGVmaW5lZChOREVCVUcpCiAgICAgICAgICAg
ICAgICAgQVNTRVJUKG1faW5kZXggLSBtX2luaXRpYWxJbmRleCA8PSBtX3JlcXVpcmVkU3BhY2Up
OwogICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlci5tX2luZGV4ID09IG1faW5pdGlhbElu
ZGV4KTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9zdG9yYWdlQnVmZmVyID09IG1fYnVmZmVy
Lm1fc3RvcmFnZS5idWZmZXIoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBtX2J1ZmZlci5t
X2luZGV4ID0gbV9pbmRleDsKICAgICAgICAgICAgIH0KIAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC00MjU0
LDcgKzQyNTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogI2VuZGlmIC8vIE9TKE1BQ19PU19YKQot
I2VsaWYgIWRlZmluZWQoTkRFQlVHKSAvLyBDUFUoWDg2KQorI2Vsc2UgLy9mYWlsZWQgYXNzdW1w
dGlvbiBlbGlmICFkZWZpbmVkKE5ERUJVRykgLy8gQ1BVKFg4NikKIAogICAgIC8vIE9uIHg4Ni02
NCB3ZSBzaG91bGQgbmV2ZXIgYmUgY2hlY2tpbmcgZm9yIFNTRTIgaW4gYSBub24tZGVidWcgYnVp
bGQsCiAgICAgLy8gYnV0IG5vbiBkZWJ1ZyBhZGQgdGhpcyBtZXRob2QgdG8ga2VlcCB0aGUgYXNz
ZXJ0cyBhYm92ZSBoYXBweS4KLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9SZWdpc3RlcklELmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9S
ZWdpc3RlcklELmgKQEAgLTgyLDcgKzgyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
aW50IGluZGV4KCkgY29uc3QKICAgICAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAg
IEFTU0VSVChtX2RpZFNldEluZGV4KTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG1fdmly
dHVhbFJlZ2lzdGVyLm9mZnNldCgpOwogICAgICAgICB9CiAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcApAQCAtMTA2LDE0ICsxMDYsMTgg
QEAgdm9pZCBKU1Byb21pc2VEZWZlcnJlZDo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgY2FsbEZ1bmN0aW9uKGV4ZWMsIG1fcmVzb2x2ZS5nZXQoKSwgdmFs
dWUpOwogICAgIGJvb2wgd2FzUGVuZGluZyA9IGV4ZWMtPnZtKCkucHJvbWlzZURlZmVycmVkVGlt
ZXItPmNhbmNlbFBlbmRpbmdQcm9taXNlKHRoaXMpOworI2lmbmRlZiBOREVCVUcKICAgICBBU1NF
UlRfVU5VU0VEKHdhc1BlbmRpbmcsIHdhc1BlbmRpbmcgPT0gbV9wcm9taXNlSXNBc3luY1BlbmRp
bmcpOworI2VuZGlmCiB9CiAKIHZvaWQgSlNQcm9taXNlRGVmZXJyZWQ6OnJlamVjdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgcmVhc29uKQogewogICAgIGNhbGxGdW5jdGlvbihleGVjLCBtX3Jl
amVjdC5nZXQoKSwgcmVhc29uKTsKICAgICBib29sIHdhc1BlbmRpbmcgPSBleGVjLT52bSgpLnBy
b21pc2VEZWZlcnJlZFRpbWVyLT5jYW5jZWxQZW5kaW5nUHJvbWlzZSh0aGlzKTsKKyNpZm5kZWYg
TkRFQlVHCiAgICAgQVNTRVJUX1VOVVNFRCh3YXNQZW5kaW5nLCB3YXNQZW5kaW5nID09IG1fcHJv
bWlzZUlzQXN5bmNQZW5kaW5nKTsKKyNlbmRpZgogfQogCiB2b2lkIEpTUHJvbWlzZURlZmVycmVk
OjpyZWplY3QoRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIHJlYXNvbikKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21NZW1vcnkuaApAQCAtODYsNyArODYsMTEgQEAgcHVibGljOgogICAgIEV4
cGVjdGVkPFBhZ2VDb3VudCwgR3Jvd0ZhaWxSZWFzb24+IGdyb3coUGFnZUNvdW50KTsKICAgICB2
b2lkIHJlZ2lzdGVySW5zdGFuY2UoSW5zdGFuY2UqKTsKIAotICAgIHZvaWQgY2hlY2soKSB7ICBB
U1NFUlQoIWRlbGV0aW9uSGFzQmVndW4oKSk7IH0KKyAgICB2b2lkIGNoZWNrKCkgeworI2lmbmRl
ZiBOREVCVUcKKyAgQVNTRVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOworI2VuZGlmCisgICAgfQog
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihNZW1vcnksIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwgbV9zaXplKTsgfQotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9kdG9hL2JpZ251bS5jYworKysgYi9Tb3VyY2UvV1RGL3d0Zi9kdG9h
L2JpZ251bS5jYwpAQCAtNzYxLDcgKzc2MSw5IEBAIG5hbWVzcGFjZSBkb3VibGVfY29udmVyc2lv
biB7CiAgICAgICAgICAgICBib3Jyb3cgPSBkaWZmZXJlbmNlID4+IChrQ2h1bmtTaXplIC0gMSk7
CiAgICAgICAgIH0KICAgICAgICAgQ2xhbXAoKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEFT
U0VSVChCaWdudW06OkVxdWFsKGEsICp0aGlzKSk7CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAg
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5jcHAKQEAgLTI1Nyw3ICsyNTcsOSBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5h
Z2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwogICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRl
eCB9OwogICAgICAgICBmb3IgKGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0
YWJhc2VzKSB7CiAgICAgICAgICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5h
bWUoKSA9PSBuYW1lICYmIHByb3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4p
KSB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgICAgIEFTU0VSVCgmcHJvcG9zZWREYXRh
YmFzZS0+ZGV0YWlscygpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSB8fCBpc01haW5U
aHJlYWQoKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcG9zZWREYXRhYmFz
ZS0+ZGV0YWlscygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaApAQCAtNzQsNyArNzQsNyBAQCBw
dWJsaWM6CiAKICAgICBEYXRhYmFzZSYgZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGFi
YXNlOyB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wg
aGFzU3luY2hyb25pemVyKCkgY29uc3QgeyByZXR1cm4gbV9zeW5jaHJvbml6ZXI7IH0KICAgICBi
b29sIGhhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3luY2hyb25p
emVyLT5oYXNDaGVja2VkRm9yVGVybWluYXRpb24oKTsgfQogI2VuZGlmCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBAIC0xNTIs
MTMgKzE1MiwxNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChE
YXRhYmFzZSYgZGF0YWJhc2UpCiAKIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnNjaGVkdWxlVGFzayhz
dGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYXNrPiYmIHRhc2spCiB7CisjaWZuZGVmIE5ERUJVRwog
ICAgIEFTU0VSVCghdGFzay0+aGFzU3luY2hyb25pemVyKCkgfHwgdGFzay0+aGFzQ2hlY2tlZEZv
clRlcm1pbmF0aW9uKCkpOworI2VuZGlmCiAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNr
KSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnNjaGVkdWxlSW1tZWRpYXRlVGFzayhzdGQ6
OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYXNrPiYmIHRhc2spCiB7CisjaWZuZGVmIE5ERUJVRwogICAg
IEFTU0VSVCghdGFzay0+aGFzU3luY2hyb25pemVyKCkgfHwgdGFzay0+aGFzQ2hlY2tlZEZvclRl
cm1pbmF0aW9uKCkpOworI2VuZGlmCiAgICAgbV9xdWV1ZS5wcmVwZW5kKFdURk1vdmUodGFzaykp
OwogfQogCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaApAQCAtNTYs
OCArNTYsMTAgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIH5KU0NhbGxiYWNrRGF0YSgpCiAgICAg
eworI2lmbmRlZiBOREVCVUcKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBBU1NFUlQobV90
aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyNlbmRpZgogI2VuZGlmCiAgICAg
fQogICAgIAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAK
QEAgLTE2OCw3ICsxNjgsOSBAQCB2b2lkIGFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUoTm9k
ZSomIGhlYWQsIE5vZGUqJiB0YWlsLCBDb250YWluZXJOb2RlJiBjb250YQogICAgIC8vIFdlIGhh
dmUgdG8gdGVsbCBhbGwgY2hpbGRyZW4gdGhhdCB0aGVpciBwYXJlbnQgaGFzIGRpZWQuCiAgICAg
UmVmUHRyPE5vZGU+IG5leHQgPSBudWxscHRyOwogICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUg
PSBjb250YWluZXIuZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbmV4dCkgeworI2lmbmRlZiBO
REVCVUcKICAgICAgICAgQVNTRVJUKCFub2RlLT5tX2RlbGV0aW9uSGFzQmVndW4pOworI2VuZGlm
CiAKICAgICAgICAgbmV4dCA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgIG5vZGUtPnNl
dE5leHRTaWJsaW5nKG51bGxwdHIpOwpAQCAtMjExLDcgKzIxMyw5IEBAIHZvaWQgcmVtb3ZlRGV0
YWNoZWRDaGlsZHJlbkluQ29udGFpbmVyKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lcikKICAgICBO
b2RlKiBub2RlOwogICAgIE5vZGUqIG5leHQ7CiAgICAgd2hpbGUgKChub2RlID0gaGVhZCkpIHsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEFTU0VSVChub2RlLT5tX2RlbGV0aW9uSGFzQmVndW4p
OworI2VuZGlmCiAKICAgICAgICAgbmV4dCA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgICAg
IG5vZGUtPnNldE5leHRTaWJsaW5nKG51bGxwdHIpOwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTY1
NCw3ICs2NTQsOSBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKIAogdm9pZCBEb2N1bWVudDo6cmVt
b3ZlZExhc3RSZWYoKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIW1fZGVsZXRpb25I
YXNCZWd1bik7CisjZW5kaWYKICAgICBpZiAobV9yZWZlcmVuY2luZ05vZGVDb3VudCkgewogICAg
ICAgICAvLyBJZiByZW1vdmluZyBhIGNoaWxkIHJlbW92ZXMgdGhlIGxhc3Qgbm9kZSByZWZlcmVu
Y2UsIHdlIGRvbid0IHdhbnQgdGhlIHNjb3BlIHRvIGJlIGRlc3Ryb3llZAogICAgICAgICAvLyB1
bnRpbCBhZnRlciByZW1vdmVEZXRhY2hlZENoaWxkcmVuIHJldHVybnMsIHNvIHdlIHByb3RlY3Qg
b3Vyc2VsdmVzLgotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ3LDE2ICszNDcsMjAgQEAgcHVibGljOgog
ICAgIC8vIHBvaW50ZXIgd2l0aG91dCBpbnRyb2R1Y2luZyByZWZlcmVuY2UgY3ljbGVzLgogICAg
IHZvaWQgaW5jcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKQogICAgIHsKKyNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyNlbmRpZgogICAgICAg
ICArK21fcmVmZXJlbmNpbmdOb2RlQ291bnQ7CiAgICAgfQogCiAgICAgdm9pZCBkZWNyZW1lbnRS
ZWZlcmVuY2luZ05vZGVDb3VudCgpCiAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNT
RVJUKCFtX2RlbGV0aW9uSGFzQmVndW4gfHwgIW1fcmVmZXJlbmNpbmdOb2RlQ291bnQpOworI2Vu
ZGlmCiAgICAgICAgIC0tbV9yZWZlcmVuY2luZ05vZGVDb3VudDsKICAgICAgICAgaWYgKCFtX3Jl
ZmVyZW5jaW5nTm9kZUNvdW50ICYmICFyZWZDb3VudCgpKSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7
CiAjZW5kaWYKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzOwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTcxMiw3
ICs3MTIsOSBAQCBpbmxpbmUgY29uc3QgRWxlbWVudCogRWxlbWVudDo6cm9vdEVsZW1lbnQoKSBj
b25zdAogCiBpbmxpbmUgYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJV
RwogICAgIEFTU0VSVChmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChuYW1lKSk7CisjZW5kaWYK
ICAgICByZXR1cm4gZWxlbWVudERhdGEoKSAmJiBmaW5kQXR0cmlidXRlQnlOYW1lKG5hbWUpOwog
fQogCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTI3NywxMCArMjc3LDEwIEBAIE5vZGU6On5Ob2RlKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9yZWZDb3VudCk7CisjaWZu
ZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIEFTU0VSVCgh
bV9hZG9wdGlvbklzUmVxdWlyZWQpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIGlmICghaWdub3Jl
U2V0KCkucmVtb3ZlKHRoaXMpKQogICAgICAgICBub2RlQ291bnRlci5kZWNyZW1lbnQoKTsKICNl
bmRpZgotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTY5NCw5ICs2OTQsMTEgQEAgaW5saW5lIHZvaWQgYWRvcHRlZChOb2Rl
KiBub2RlKQogQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OnJlZigpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFz
QmVndW4pOwogICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgIEFT
U0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOworI2VuZGlmCiAgICAgKyttX3JlZkNvdW50Owog
fQogCkBAIC03MDQsOSArNzA2LDExIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBOb2RlOjpkZXJlZigp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9yZWZDb3VudCA+
PSAwKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwog
ICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgIEFTU0VSVCghbV9h
ZG9wdGlvbklzUmVxdWlyZWQpOworI2VuZGlmCiAgICAgaWYgKC0tbV9yZWZDb3VudCA8PSAwICYm
ICFwYXJlbnROb2RlKCkpIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1faW5SZW1vdmVkTGFz
dFJlZkZ1bmN0aW9uID0gdHJ1ZTsKQEAgLTcxNyw4ICs3MjEsMTAgQEAgQUxXQVlTX0lOTElORSB2
b2lkIE5vZGU6OmRlcmVmKCkKIAogQUxXQVlTX0lOTElORSBib29sIE5vZGU6Omhhc09uZVJlZigp
IGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3Vu
KTsKICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyNlbmRpZgogICAg
IHJldHVybiBtX3JlZkNvdW50ID09IDE7CiB9CiAKQEAgLTc4MCw3ICs3ODYsOSBAQCBpbmxpbmUg
dm9pZCBOb2RlOjpzZXRIYXNWYWxpZFN0eWxlKCkKIGlubGluZSB2b2lkIE5vZGU6OnNldFRyZWVT
Y29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSYgbmV3VHJlZVNjb3BlKQogewogICAgIEFTU0VSVCgh
aXNEb2N1bWVudE5vZGUoKSk7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9kZWxldGlv
bkhhc0JlZ3VuKTsKKyNlbmRpZgogICAgIGlmIChtX3RyZWVTY29wZSAhPSAmbmV3VHJlZVNjb3Bl
KQogICAgICAgICBtb3ZlVHJlZVRvTmV3U2NvcGUoKnRoaXMsICptX3RyZWVTY29wZSwgbmV3VHJl
ZVNjb3BlKTsKIH0KLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0xMjAsNyArMTIw
LDkgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEUKICAgICAgICAgbV9uZWVkc1RvUmVzb2x2ZVNs
b3RFbGVtZW50cyA9IHRydWU7CiAjZW5kaWYKICAgICB9CisjaWZuZGVmIE5ERUJVRwogICAgIEFT
U0VSVChzbG90SW5mby5lbGVtZW50IHx8IG1fbmVlZHNUb1Jlc29sdmVTbG90RWxlbWVudHMpOwor
I2VuZGlmCiB9CiAKIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3QoY29uc3QgQXRv
bWljU3RyaW5nJiBzbG90QXR0clZhbHVlLCBTaGFkb3dSb290JiBzaGFkb3dSb290KQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAj
cHJhZ21hIG9uY2UKLQorI2lmIEVOQUJMRShXRUJHTCkKICNpbmNsdWRlICJXZWJHTFNoYXJlZE9i
amVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTk5LDMgKzk5LDQgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKQEAgLTEwNywxNSArMTA3LDIxIEBAIEltYWdlTG9hZGVyOjp+SW1h
Z2VMb2FkZXIoKQogICAgIGlmIChtX2ltYWdlKQogICAgICAgICBtX2ltYWdlLT5yZW1vdmVDbGll
bnQoKnRoaXMpOwogCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2hhc1BlbmRpbmdCZWZv
cmVMb2FkRXZlbnQgfHwgIWJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmhhc1BlbmRpbmdFdmVudHMo
KnRoaXMpKTsKKyNlbmRpZgogICAgIGlmIChtX2hhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQpCiAg
ICAgICAgIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KCp0aGlzKTsKIAorI2lm
bmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9oYXNQZW5kaW5nTG9hZEV2ZW50IHx8ICFsb2FkRXZl
bnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZlbnRzKCp0aGlzKSk7CisjZW5kaWYKICAgICBpZiAobV9o
YXNQZW5kaW5nTG9hZEV2ZW50KQogICAgICAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVu
dCgqdGhpcyk7CiAKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faGFzUGVuZGluZ0Vycm9y
RXZlbnQgfHwgIWVycm9yRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZlbnRzKCp0aGlzKSk7Cisj
ZW5kaWYKICAgICBpZiAobV9oYXNQZW5kaW5nRXJyb3JFdmVudCkKICAgICAgICAgZXJyb3JFdmVu
dFNlbmRlcigpLmNhbmNlbEV2ZW50KCp0aGlzKTsKIH0KLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0xMTYsNyArMTE2LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5p
dChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kK
ICAgICBBU1NFUlQoIW1faGFuZGxlKTsKICAgICBBU1NFUlQobV9yZXF1ZXN0LmlzTnVsbCgpKTsK
ICAgICBBU1NFUlQobV9kZWZlcnJlZFJlcXVlc3QuaXNOdWxsKCkpOworI2lmbmRlZiBOREVCVUcK
ICAgICBBU1NFUlQoIW1fZG9jdW1lbnRMb2FkZXItPmlzU3Vic3RpdHV0ZUxvYWRQZW5kaW5nKHRo
aXMpKTsKKyNlbmRpZgogICAgIAogICAgIG1fbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lQW5kRmV0
Y2hTdGFydCgpOwogCkBAIC0yOTcsNyArMjk5LDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnNl
dERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9s
CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgp
CiB7CisKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RvY3VtZW50TG9hZGVyLT5pc1N1
YnN0aXR1dGVMb2FkUGVuZGluZyh0aGlzKSk7CisjZW5kaWYKICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cmVtb3ZlKHRoaXMpOwogICAgIGlmIChtX2hhbmRsZSkK
ICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTE2Niw3ICsxNjYsOSBAQCBDYWNoZWRSZXNvdXJjZTo6
fkNhY2hlZFJlc291cmNlKCkKICAgICBBU1NFUlQoIW1fcmVzb3VyY2VUb1JldmFsaWRhdGUpOyAv
LyBTaG91bGQgYmUgdHJ1ZSBiZWNhdXNlIGNhbkRlbGV0ZSgpIGNoZWNrcyB0aGlzLgogICAgIEFT
U0VSVChjYW5EZWxldGUoKSk7CiAgICAgQVNTRVJUKCFpbkNhY2hlKCkpOworI2lmbmRlZiBOREVC
VUcKICAgICBBU1NFUlQoIW1fZGVsZXRlZCk7CisjZW5kaWYKICAgICBBU1NFUlQodXJsKCkuaXNO
dWxsKCkgfHwgIWFsbG93c0NhY2hpbmcoKSB8fCBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KHJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSkgIT0gdGhpcyk7
CiAKICNpZm5kZWYgTkRFQlVHCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcApAQCAtMTU3LDcgKzE1Nyw5IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvblN1
Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSYgcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvCiAgICAgICAg
IGFkanVzdFNpemUocmVzb3VyY2UuaGFzQ2xpZW50cygpLCBkZWx0YSk7CiAKICAgICByZXZhbGlk
YXRpbmdSZXNvdXJjZS5zd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCk7CisjaWZu
ZGVmIE5ERUJVRwogICAgIEFTU0VSVCghcmV2YWxpZGF0aW5nUmVzb3VyY2UubV9kZWxldGVkKTsK
KyNlbmRpZgogICAgIC8vIHRoaXMgZGVsZXRlcyB0aGUgcmV2YWxpZGF0aW5nIHJlc291cmNlCiAg
ICAgcmV2YWxpZGF0aW5nUmVzb3VyY2UuY2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwogfQpA
QCAtNDY0LDE0ICs0NjYsMTcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJvbUxSVUxpc3Qo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIGlmICghcmVzb3VyY2UuYWNjZXNzQ291bnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmbmRlZiBOREVC
VUcKICAgICB1bnNpZ25lZCBvbGRMaXN0SW5kZXggPSByZXNvdXJjZS5tX2xydUluZGV4OwogI2Vu
ZGlmCiAKICAgICBMUlVMaXN0JiBsaXN0ID0gbHJ1TGlzdEZvcihyZXNvdXJjZSk7CiAKICAgICAv
LyBWZXJpZnkgdGhhdCB0aGUgbGlzdCB3ZSBnb3QgaXMgdGhlIGxpc3Qgd2Ugd2FudC4KKworI2lm
bmRlZiBOREVCVUcKICAgICBBU1NFUlQocmVzb3VyY2UubV9scnVJbmRleCA9PSBvbGRMaXN0SW5k
ZXgpOworI2VuZGlmCiAKICAgICBib29sIHJlbW92ZWQgPSBsaXN0LnJlbW92ZSgmcmVzb3VyY2Up
OwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5jcHAKQEAgLTE5OCw3ICsxOTgsOSBAQCBUaW1lckJhc2U6On5UaW1lckJhc2UoKQogCiB2b2lk
IFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJlcGVh
dEludGVydmFsKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFk
TG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSk7CisjZW5kaWYKIAogICAgIG1fcmVw
ZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZhbDsKICAgICBzZXROZXh0RmlyZVRpbWUoTW9ub3Rv
bmljVGltZTo6bm93KCkgKyBuZXh0RmlyZUludGVydmFsKTsKQEAgLTIwNiw3ICsyMDgsOSBAQCB2
b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJl
cGVhdEludGVydmFsKQogCiB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiB7CisjaWZuZGVmIE5ERUJV
RwogICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQu
Z2V0KCkpKTsKKyNlbmRpZgogCiAgICAgbV9yZXBlYXRJbnRlcnZhbCA9IDBfczsKICAgICBzZXRO
ZXh0RmlyZVRpbWUoTW9ub3RvbmljVGltZSB7IH0pOwpAQCAtMzUxLDE0ICszNTUsMTggQEAgdm9p
ZCBUaW1lckJhc2U6OnVwZGF0ZUhlYXBJZk5lZWRlZChNb25vdG9uaWNUaW1lIG9sZFRpbWUpCiAg
ICAgICAgIGhlYXBEZWNyZWFzZUtleSgpOwogICAgIGVsc2UKICAgICAgICAgaGVhcEluY3JlYXNl
S2V5KCk7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2hlYXBJbmRleCAhPSBvbGRIZWFw
SW5kZXgpOworI2VuZGlmCiAgICAgQVNTRVJUKCFpbkhlYXAoKSB8fCBoYXNWYWxpZEhlYXBQb3Np
dGlvbigpKTsKIH0KIAogdm9pZCBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9uaWNU
aW1lIG5ld1RpbWUpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJl
YWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX3dhc0RlbGV0ZWQpOworI2VuZGlmCiAKICAg
ICBpZiAobV91bmFsaWduZWROZXh0RmlyZVRpbWUgIT0gbmV3VGltZSkKICAgICAgICAgbV91bmFs
aWduZWROZXh0RmlyZVRpbWUgPSBuZXdUaW1lOwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKQEAgLTEzNywx
MSArMTM3LDEzIEBAIHByaXZhdGU6CiBpbmxpbmUgYm9vbCBUaW1lckJhc2U6OmlzQWN0aXZlKCkg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogV3JpdGUgdGhpcyBpbiB0ZXJtcyBvZiBVU0UoV0VCX1RI
UkVBRCkgaW5zdGVhZCBvZiBQTEFURk9STShJT1MpLgorI2lmbmRlZiBOREVCVUcKICNpZiAhUExB
VEZPUk0oSU9TKQogICAgIEFTU0VSVChtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogI2Vsc2UKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9t
YWluX25wKCkgfHwgbV90aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4o
bV9uZXh0RmlyZVRpbWUpOwogfQogCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWlu
dGluZ0NvbnRleHRDYWlyby5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgUGFpbnRpbmdDb250ZXh0Q2Fp
cm86OkZvclBhaW50aW5nOjpGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZlcikKIAogICAgICAgICAg
ICAgLy8gRGVyZWYgdGhlIEJ1ZmZlciBvYmplY3QuCiAgICAgICAgICAgICB1c2VyRGF0YS0+Zmly
c3QtPmRlcmVmKCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgICAgIC8vIE1hcmsgdGhlIGRlbGV0aW9uIG9mIHRoZSBjYWlyb19zdXJmYWNlX3Qgb2JqZWN0
IGFzc29jaWF0ZWQgd2l0aCB0aGlzCiAgICAgICAgICAgICAvLyBQYWludGluZ0NvbnRleHRDYWly
byBhcyBjb21wbGV0ZS4gVGhpcyB3YXkgd2UgY2hlY2sgdGhhdCB0aGUgY2Fpcm9fc3VyZmFjZV90
CiAgICAgICAgICAgICAvLyBvYmplY3QgZG9lc24ndCBvdXRsaXZlIHRoZSBQYWludGluZ0NvbnRl
eHRDYWlybyB0aHJvdWdoIHdoaWNoIGl0IHdhcyB1c2VkLgpAQCAtODcsNyArODcsOSBAQCBQYWlu
dGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6On5Gb3JQYWludGluZygpCiAgICAgLy8gYXMg
d2VsbC4gVGhpcyBpcyBjaGVja2VkIGJ5IGFzc2VydGluZyB0aGF0IG1fZGVsZXRpb25Db21wbGV0
ZSBpcyB0cnVlLCB3aGljaCBzaG91bGQKICAgICAvLyBiZSB0aGUgY2FzZSBpZiB0aGUgc19idWZm
ZXJLZXkgdXNlciBkYXRhIGRlc3Ryb3kgY2FsbGJhY2sgaGFzIGJlZW4gaW52b2tlZCB1cG9uIHRo
ZQogICAgIC8vIGNhaXJvX3N1cmZhY2VfdCBkZXN0cnVjdGlvbi4KKyNpZm5kZWYgTkRFQlVHCiAg
ICAgQVNTRVJUKG1fZGVsZXRpb25Db21wbGV0ZSk7CisjZW5kaWYKIH0KIAogV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OmdyYXBoaWNz
Q29udGV4dCgpCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5j
cHAKQEAgLTYwLDggKzYwLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY28KICNpZm5kZWYgTkRF
QlVHCiAgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWQpCiAgICAgICAgIG1fY29tcG9zaXRvclRo
cmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKLSNlbmRpZgogICAgIEFTU0VSVChtX2NvbXBvc2l0
b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyNlbmRpZgogICAgIEFTU0VSVChjb21w
b3NpdG9yKTsKICAgICBBU1NFUlQodGFyZ2V0TGF5ZXIpOwogICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CkBAIC04MSw3ICs4MSw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAKIHZv
aWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0ZSgpCiB7CisjaWZu
ZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKKyNlbmRpZgogICAgIEZ1bmN0aW9uPHZvaWQoKT4gdXBkYXRlRnVuY3Rpb247CiAg
ICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwpAQCAtMTIxLDcgKzEyMyw5
IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cHVzaE5leHRCdWZmZXIo
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6Omdl
dEF2YWlsYWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBHTGludCBpbnRlcm5hbEZvcm1h
dCkKIHsKICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAg
QVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworI2VuZGlm
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBh
dmFpbGFibGVCdWZmZXI7CiAKICAgICBhdXRvIGJ1ZmZlcnMgPSBXVEZNb3ZlKG1fdXNlZEJ1ZmZl
cnMpOwpAQCAtMTQ1LDcgKzE0OSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94CiB2b2lkIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFwcGVuZFRvVW51c2VkQnVmZmVycyhzdGQ6
OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGJ1ZmZlcikKIHsK
ICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJU
KG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworI2VuZGlmCiAgICAg
bV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICBzY2hlZHVsZVJlbGVh
c2VVbnVzZWRCdWZmZXJzKCk7CiB9CkBAIC0xNzMsNyArMTc5LDkgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQoKQog
CiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQogewor
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CisjZW5kaWYKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAg
IGlmICghbV90YXJnZXRMYXllciB8fCAhbV9wZW5kaW5nQnVmZmVyKQogICAgICAgICByZXR1cm47
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC04NzksNyArODc5LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVw
ZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW4KIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkKIHsKICAg
ICBBU1NFUlQobV9jb29yZGluYXRvcik7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2Nv
b3JkaW5hdG9yLT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkgfHwgbV9pc1B1cmdpbmcpOworI2Vu
ZGlmCiAgICAgbV9sYXllclN0YXRlLnRpbGVzVG9SZW1vdmUuYXBwZW5kKHRpbGVJRCk7CiB9CiAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTEwMiw4ICsx
MDIsMTAgQEAgcHVibGljOgogICAgIAogICAgIHNxbGl0ZTMqIHNxbGl0ZTNIYW5kbGUoKSBjb25z
dAogICAgIHsKKyNpZm5kZWYgTkRFQlVHCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgQVNT
RVJUKG1fc2hhcmFibGUgfHwgbV9vcGVuaW5nVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSB8
fCAhbV9kYik7CisjZW5kaWYKICNlbmRpZgogICAgICAgICByZXR1cm4gbV9kYjsKICAgICB9Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC01OCw3
ICs1OCw5IEBAIFNRTGl0ZVN0YXRlbWVudDo6flNRTGl0ZVN0YXRlbWVudCgpCiAKIGludCBTUUxp
dGVTdGF0ZW1lbnQ6OnByZXBhcmUoKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIW1f
aXNQcmVwYXJlZCk7CisjZW5kaWYKIAogICAgIExvY2tIb2xkZXIgZGF0YWJhc2VMb2NrKG1fZGF0
YWJhc2UuZGF0YWJhc2VNdXRleCgpKTsKIApAQCAtMTIxLDcgKzEyMyw5IEBAIGludCBTUUxpdGVT
dGF0ZW1lbnQ6OmZpbmFsaXplKCkKIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6cmVzZXQoKSAKIHsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faXNQcmVwYXJlZCk7CisjZW5kaWYKICAgICBp
ZiAoIW1fc3RhdGVtZW50KQogICAgICAgICByZXR1cm4gU1FMSVRFX09LOwogICAgIExPRyhTUUxE
YXRhYmFzZSwgIlNRTCAtIHJlc2V0IC0gJXMiLCBtX3F1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKQEAg
LTEzMiw3ICsxMzYsMTAgQEAgYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6OmV4ZWN1dGVDb21tYW5kKCkK
IHsKICAgICBpZiAoIW1fc3RhdGVtZW50ICYmIHByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9pc1ByZXBh
cmVkKTsKKyNlbmRpZgogICAgIGlmIChzdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAg
ZmluYWxpemUoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ1LDcgKzE1MiwxMCBAQCBi
b29sIFNRTGl0ZVN0YXRlbWVudDo6cmV0dXJuc0F0TGVhc3RPbmVSZXN1bHQoKQogewogICAgIGlm
ICghbV9zdGF0ZW1lbnQgJiYgcHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2lzUHJlcGFyZWQpOworI2Vu
ZGlmCiAgICAgaWYgKHN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIGZpbmFsaXplKCk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1Nyw3ICsxNjcsOSBAQCBib29sIFNRTGl0ZVN0
YXRlbWVudDo6cmV0dXJuc0F0TGVhc3RPbmVSZXN1bHQoKQogCiBpbnQgU1FMaXRlU3RhdGVtZW50
OjpiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IHZvaWQqIGJsb2IsIGludCBzaXplKQogeworI2lm
bmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9pc1ByZXBhcmVkKTsKKyNlbmRpZgogICAgIEFTU0VS
VChpbmRleCA+IDApOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9
IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsKICAgICBBU1NFUlQoYmxvYik7CkBAIC0xODYsNyArMTk4
LDkgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHRleHQpCiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0ZXh0KQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9pc1ByZXBh
cmVkKTsKKyNlbmRpZgogICAgIEFTU0VSVChpbmRleCA+IDApOwogICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsKIApAQCAtMjA1
LDcgKzIxOSw5IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0ZXh0KQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kSW50KGludCBpbmRl
eCwgaW50IGludGVnZXIpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2lzUHJlcGFy
ZWQpOworI2VuZGlmCiAgICAgQVNTRVJUKGluZGV4ID4gMCk7CiAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbmRleCkgPD0gYmluZFBhcmFtZXRlckNvdW50KCkpOwogCkBAIC0yMTQs
NyArMjMwLDkgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEludChpbnQgaW5kZXgsIGludCBp
bnRlZ2VyKQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kSW50NjQoaW50IGluZGV4LCBpbnQ2
NF90IGludGVnZXIpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2lzUHJlcGFyZWQp
OworI2VuZGlmCiAgICAgQVNTRVJUKGluZGV4ID4gMCk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmRleCkgPD0gYmluZFBhcmFtZXRlckNvdW50KCkpOwogCkBAIC0yMjMsNyAr
MjQxLDkgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEludDY0KGludCBpbmRleCwgaW50NjRf
dCBpbnRlZ2VyKQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kRG91YmxlKGludCBpbmRleCwg
ZG91YmxlIG51bWJlcikKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faXNQcmVwYXJl
ZCk7CisjZW5kaWYKICAgICBBU1NFUlQoaW5kZXggPiAwKTsKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGluZGV4KSA8PSBiaW5kUGFyYW1ldGVyQ291bnQoKSk7CiAKQEAgLTIzMiw3
ICsyNTIsOSBAQCBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kRG91YmxlKGludCBpbmRleCwgZG91
YmxlIG51bWJlcikKIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZE51bGwoaW50IGluZGV4KQog
eworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9pc1ByZXBhcmVkKTsKKyNlbmRpZgogICAg
IEFTU0VSVChpbmRleCA+IDApOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5k
ZXgpIDw9IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsKIApAQCAtMjUwLDcgKzI3Miw5IEBAIGludCBT
UUxpdGVTdGF0ZW1lbnQ6OmJpbmRWYWx1ZShpbnQgaW5kZXgsIGNvbnN0IFNRTFZhbHVlJiB2YWx1
ZSkKIAogdW5zaWduZWQgU1FMaXRlU3RhdGVtZW50OjpiaW5kUGFyYW1ldGVyQ291bnQoKSBjb25z
dAogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9pc1ByZXBhcmVkKTsKKyNlbmRpZgog
ICAgIGlmICghbV9zdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzcWxp
dGUzX2JpbmRfcGFyYW1ldGVyX2NvdW50KG1fc3RhdGVtZW50KTsKQEAgLTI1OCw3ICsyODIsOSBA
QCB1bnNpZ25lZCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0CiAK
IGludCBTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkNvdW50KCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAg
ICAgQVNTRVJUKG1faXNQcmVwYXJlZCk7CisjZW5kaWYKICAgICBpZiAoIW1fc3RhdGVtZW50KQog
ICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gc3FsaXRlM19kYXRhX2NvdW50KG1fc3RhdGVt
ZW50KTsKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKQEAgLTMx
Miw3ICszMTIsOSBAQCBGbG9hdGluZ09iamVjdEludGVydmFsIEZsb2F0aW5nT2JqZWN0czo6aW50
ZXJ2YWxGb3JGbG9hdGluZ09iamVjdChGbG9hdGluZ09iamVjdAogCiB2b2lkIEZsb2F0aW5nT2Jq
ZWN0czo6YWRkUGxhY2VkT2JqZWN0KEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKIHsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFmbG9hdGluZ09iamVjdC0+aXNJblBsYWNlZFRy
ZWUoKSk7CisjZW5kaWYKIAogICAgIGZsb2F0aW5nT2JqZWN0LT5zZXRJc1BsYWNlZCh0cnVlKTsK
ICAgICBpZiAobV9wbGFjZWRGbG9hdHNUcmVlKQpAQCAtMzI1LDcgKzMyNyw5IEBAIHZvaWQgRmxv
YXRpbmdPYmplY3RzOjphZGRQbGFjZWRPYmplY3QoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2Jq
ZWN0KQogCiB2b2lkIEZsb2F0aW5nT2JqZWN0czo6cmVtb3ZlUGxhY2VkT2JqZWN0KEZsb2F0aW5n
T2JqZWN0KiBmbG9hdGluZ09iamVjdCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGZs
b2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpICYmIGZsb2F0aW5nT2JqZWN0LT5pc0luUGxhY2VkVHJl
ZSgpKTsKKyNlbmRpZgogCiAgICAgaWYgKG1fcGxhY2VkRmxvYXRzVHJlZSkgewogICAgICAgICBi
b29sIHJlbW92ZWQgPSBtX3BsYWNlZEZsb2F0c1RyZWUtPnJlbW92ZShpbnRlcnZhbEZvckZsb2F0
aW5nT2JqZWN0KGZsb2F0aW5nT2JqZWN0KSk7CkBAIC0zNTAsNyArMzU0LDkgQEAgdm9pZCBGbG9h
dGluZ09iamVjdHM6OnJlbW92ZShGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCiB7CiAg
ICAgQVNTRVJUKChtX3NldC5jb250YWluczxGbG9hdGluZ09iamVjdCYsIEZsb2F0aW5nT2JqZWN0
SGFzaFRyYW5zbGF0b3I+KCpmbG9hdGluZ09iamVjdCkpKTsKICAgICBkZWNyZWFzZU9iamVjdHND
b3VudChmbG9hdGluZ09iamVjdC0+dHlwZSgpKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJU
KGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpIHx8ICFmbG9hdGluZ09iamVjdC0+aXNJblBsYWNl
ZFRyZWUoKSk7CisjZW5kaWYKICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkpCiAg
ICAgICAgIHJlbW92ZVBsYWNlZE9iamVjdChmbG9hdGluZ09iamVjdCk7CiAgICAgQVNTRVJUKCFm
bG9hdGluZ09iamVjdC0+b3JpZ2luYXRpbmdMaW5lKCkpOwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb2F0aW5nT2JqZWN0cy5oCkBAIC01OSwxNSArNTksNDQgQEAgcHVibGljOgogICAgIExheW91
dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC53aWR0aCgpOyB9CiAgICAg
TGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC5oZWlnaHQoKTsg
fQogCi0gICAgdm9pZCBzZXRYKExheW91dFVuaXQgeCkgeyBBU1NFUlQoIWlzSW5QbGFjZWRUcmVl
KCkpOyBtX2ZyYW1lUmVjdC5zZXRYKHgpOyB9Ci0gICAgdm9pZCBzZXRZKExheW91dFVuaXQgeSkg
eyBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOyBtX2ZyYW1lUmVjdC5zZXRZKHkpOyB9Ci0gICAg
dm9pZCBzZXRXaWR0aChMYXlvdXRVbml0IHdpZHRoKSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUo
KSk7IG1fZnJhbWVSZWN0LnNldFdpZHRoKHdpZHRoKTsgfQotICAgIHZvaWQgc2V0SGVpZ2h0KExh
eW91dFVuaXQgaGVpZ2h0KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1fZnJhbWVSZWN0
LnNldEhlaWdodChoZWlnaHQpOyB9Ci0KLSAgICB2b2lkIHNldE1hcmdpbk9mZnNldChMYXlvdXRT
aXplIG9mZnNldCkgeyBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOyBtX21hcmdpbk9mZnNldCA9
IG9mZnNldDsgfQorICAgIHZvaWQgc2V0WChMYXlvdXRVbml0IHgpIHsKKyNpZm5kZWYgTkRFQlVH
CisgICAgICBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOworI2VuZGlmCisgICAgICBtX2ZyYW1l
UmVjdC5zZXRYKHgpOworICAgIH0KKyAgICB2b2lkIHNldFkoTGF5b3V0VW5pdCB5KSB7CisjaWZu
ZGVmIE5ERUJVRworICAgICAgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsKKyNlbmRpZgorICAg
ICAgbV9mcmFtZVJlY3Quc2V0WSh5KTsKKyAgICB9CisgICAgdm9pZCBzZXRXaWR0aChMYXlvdXRV
bml0IHdpZHRoKSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgQVNTRVJUKCFpc0luUGxhY2VkVHJl
ZSgpKTsKKyNlbmRpZgorICAgICAgbV9mcmFtZVJlY3Quc2V0V2lkdGgod2lkdGgpOworICAgIH0K
KyAgICB2b2lkIHNldEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkgeworI2lmbmRlZiBOREVCVUcK
KyAgICAgIEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7CisjZW5kaWYKKyAgICAgIG1fZnJhbWVS
ZWN0LnNldEhlaWdodChoZWlnaHQpOworICAgIH0KKyAgICB2b2lkIHNldE1hcmdpbk9mZnNldChM
YXlvdXRTaXplIG9mZnNldCkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgIEFTU0VSVCghaXNJblBs
YWNlZFRyZWUoKSk7CisjZW5kaWYKKyAgICAgIG1fbWFyZ2luT2Zmc2V0ID0gb2Zmc2V0OworICAg
IH0KIAogICAgIGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCgpIGNvbnN0IHsgQVNTRVJUKGlz
UGxhY2VkKCkpOyByZXR1cm4gbV9mcmFtZVJlY3Q7IH0KLSAgICB2b2lkIHNldEZyYW1lUmVjdChj
b25zdCBMYXlvdXRSZWN0JiBmcmFtZVJlY3QpIHsgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsg
bV9mcmFtZVJlY3QgPSBmcmFtZVJlY3Q7IH0KKyAgICB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBM
YXlvdXRSZWN0JiBmcmFtZVJlY3QpIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICBBU1NFUlQoIWlz
SW5QbGFjZWRUcmVlKCkpOworI2VuZGlmCisgbV9mcmFtZVJlY3QgPSBmcmFtZVJlY3Q7CisgICAg
fQogCiAgICAgTGF5b3V0VW5pdCBwYWdpbmF0aW9uU3RydXQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2luYXRpb25TdHJ1dDsgfQogICAgIHZvaWQgc2V0UGFnaW5hdGlvblN0cnV0KExheW91dFVuaXQg
c3RydXQpIHsgbV9wYWdpbmF0aW9uU3RydXQgPSBzdHJ1dDsgfQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKQEAgLTI4OTIsNyArMjg5Miw5IEBAIExheW91dFVuaXQgUmVuZGVy
QmxvY2s6Om9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gZnJhZ21lbnRlZEZsb3ctPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdEZyYWdtZW50
KHRoaXMpOwogCiAgICAgaWYgKGxheW91dFN0YXRlKSB7CisjaWZuZGVmIE5ERUJVRwogICAgICAg
ICBBU1NFUlQobGF5b3V0U3RhdGUtPnJlbmRlcmVyKCkgPT0gdGhpcyk7CisjZW5kaWYKIAogICAg
ICAgICBMYXlvdXRTaXplIG9mZnNldERlbHRhID0gbGF5b3V0U3RhdGUtPmxheW91dE9mZnNldCgp
IC0gbGF5b3V0U3RhdGUtPnBhZ2VPZmZzZXQoKTsKICAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBvZmZzZXREZWx0YS5oZWlnaHQoKSA6IG9mZnNldERlbHRhLndpZHRo
KCk7Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTk0MCw3ICs5
NDAsOSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZURlc3Ryb3llZCgpCiAKIHZvaWQgUmVu
ZGVyRWxlbWVudDo6c2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIWlzU2V0TmVl
ZHNMYXlvdXRGb3JiaWRkZW4oKSk7CisjZW5kaWYKICAgICBpZiAobmVlZHNQb3NpdGlvbmVkTW92
ZW1lbnRMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNldE5lZWRzUG9zaXRpb25lZE1v
dmVtZW50TGF5b3V0Qml0KHRydWUpOwpAQCAtOTY0LDcgKzk2Niw5IEBAIHZvaWQgUmVuZGVyRWxl
bWVudDo6Y2xlYXJDaGlsZE5lZWRzTGF5b3V0KCkKIAogdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRO
ZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAg
QVNTRVJUKCFpc1NldE5lZWRzTGF5b3V0Rm9yYmlkZGVuKCkpOworI2VuZGlmCiAgICAgaWYgKG5l
ZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNl
dE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXRCaXQodHJ1ZSk7Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMzU4LDcgKzM1OCw5IEBAIGlubGluZSB2b2lkIFJl
bmRlckVsZW1lbnQ6OnNldEFuY2VzdG9yTGluZUJveERpcnR5KGJvb2wgZikKIAogaW5saW5lIHZv
aWQgUmVuZGVyRWxlbWVudDo6c2V0Q2hpbGROZWVkc0xheW91dChNYXJraW5nQmVoYXZpb3IgbWFy
a1BhcmVudHMpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91
dEZvcmJpZGRlbigpKTsKKyNlbmRpZgogICAgIGlmIChub3JtYWxDaGlsZE5lZWRzTGF5b3V0KCkp
CiAgICAgICAgIHJldHVybjsKICAgICBzZXROb3JtYWxDaGlsZE5lZWRzTGF5b3V0Qml0KHRydWUp
OwotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xNjgsNyArMTY4LDkgQEAg
dm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlVHJhY2tTaXplc0ZvckRlZmluaXRlU2l6ZShHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKICAgICBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLnNldHVw
KGRpcmVjdGlvbiwgbnVtVHJhY2tzKGRpcmVjdGlvbiwgbV9ncmlkKSwgVHJhY2tTaXppbmcsIGF2
YWlsYWJsZVNwYWNlLCBmcmVlU3BhY2UpOwogICAgIG1fdHJhY2tTaXppbmdBbGdvcml0aG0ucnVu
KCk7CiAKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fdHJhY2tTaXppbmdBbGdvcml0aG0u
dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkpOworI2VuZGlmCiB9CiAKIHZvaWQg
UmVuZGVyR3JpZDo6cmVwZWF0VHJhY2tzU2l6aW5nSWZOZWVkZWQoTGF5b3V0VW5pdCBhdmFpbGFi
bGVTcGFjZUZvckNvbHVtbnMsIExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2VGb3JSb3dzKQpAQCAt
NDIwLDcgKzQyMiw5IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVRyYWNrU2l6ZXNGb3JJbmRl
ZmluaXRlU2l6ZShHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsCiAgICAgbWluSW50cmluc2lj
U2l6ZSA9IGFsZ29yaXRobS5taW5Db250ZW50U2l6ZSgpICsgdG90YWxHdXR0ZXJzU2l6ZTsKICAg
ICBtYXhJbnRyaW5zaWNTaXplID0gYWxnb3JpdGhtLm1heENvbnRlbnRTaXplKCkgKyB0b3RhbEd1
dHRlcnNTaXplOwogCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChhbGdvcml0aG0udHJhY2tz
QXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkpOworI2VuZGlmCiB9CiAKIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50
SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gaW50cmluc2ljTG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRk
aW5nKSBjb25zdAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTUzNjMs
OSArNTM2MywxMSBAQCBSZWY8Q2xpcFJlY3RzPiBSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3Rz
KGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbgogICAgIEFTU0VSVChjbGlwUmVj
dHNUeXBlIDwgTnVtQ2FjaGVkQ2xpcFJlY3RzVHlwZXMpOwogICAgIGlmIChtX2NsaXBSZWN0c0Nh
Y2hlKSB7CiAgICAgICAgIGlmIChhdXRvKiBjbGlwUmVjdHMgPSBtX2NsaXBSZWN0c0NhY2hlLT5n
ZXRDbGlwUmVjdHMoY2xpcFJlY3RzVHlwZSwgY2xpcFJlY3RzQ29udGV4dC5yZXNwZWN0T3ZlcmZs
b3dDbGlwKSkgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIEFTU0VSVChjbGlwUmVjdHND
b250ZXh0LnJvb3RMYXllciA9PSBtX2NsaXBSZWN0c0NhY2hlLT5tX2NsaXBSZWN0c1Jvb3RbY2xp
cFJlY3RzVHlwZV0pOwogICAgICAgICAgICAgQVNTRVJUKG1fY2xpcFJlY3RzQ2FjaGUtPm1fc2Ny
b2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID09IGNsaXBSZWN0c0NvbnRleHQub3Zlcmxh
eVNjcm9sbGJhclNpemVSZWxldmFuY3kpOwotICAgICAgICAKKyNlbmRpZgorCiAjaWZkZWYgQ0hF
Q0tfQ0FDSEVEX0NMSVBfUkVDVFMKICAgICAgICAgICAgIC8vIFRoaXMgY29kZSBpcyB1c2VmdWwg
dG8gY2hlY2sgY2FjaGVkIGNsaXAgcmVjdHMsIGJ1dCBpcyB0b28gZXhwZW5zaXZlIHRvIGxlYXZl
IGVuYWJsZWQgaW4gZGVidWcgYnVpbGRzIGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICBDbGlwUmVj
dHNDb250ZXh0IHRlbXBDb250ZXh0KGNsaXBSZWN0c0NvbnRleHQpOwotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNDk2LDcgKzQ5Niw5IEBAIHN0YXRpYyB2b2lkIHNj
aGVkdWxlUmVsYXlvdXRGb3JTdWJ0cmVlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogdm9pZCBS
ZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlv
dXQgc2NoZWR1bGVSZWxheW91dCwgUmVuZGVyRWxlbWVudCogbmV3Um9vdCkKIHsKICAgICBBU1NF
UlQoc2NoZWR1bGVSZWxheW91dCA9PSBTY2hlZHVsZVJlbGF5b3V0OjpObyB8fCAhbmV3Um9vdCk7
CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91dEZvcmJpZGRlbigp
KTsKKyNlbmRpZgogCiAgICAgYXV0byBhbmNlc3RvciA9IGNvbnRhaW5lcigpOwogCkBAIC01MzQs
NyArNTM2LDkgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5
b3V0KFNjaGVkdWxlUmVsYXlvdXQgc2NoZWR1bGVSZWxheW8KICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBhbmNlc3Rvci0+c2V0Tm9ybWFsQ2hpbGROZWVkc0xheW91dEJpdCh0
cnVlKTsKICAgICAgICAgfQorI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKCFhbmNlc3Rv
ci0+aXNTZXROZWVkc0xheW91dEZvcmJpZGRlbigpKTsKKyNlbmRpZgogCiAgICAgICAgIGlmIChh
bmNlc3RvciA9PSBuZXdSb290KQogICAgICAgICAgICAgcmV0dXJuOwotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCkBAIC0xMDQyLDcgKzEwNDIsOSBAQCBpbmxpbmUgYm9vbCBSZW5k
ZXJPYmplY3Q6OmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKSBjb25zdAogCiBpbmxpbmUgdm9pZCBS
ZW5kZXJPYmplY3Q6OnNldE5lZWRzTGF5b3V0KE1hcmtpbmdCZWhhdmlvciBtYXJrUGFyZW50cykK
IHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFpc1NldE5lZWRzTGF5b3V0Rm9yYmlkZGVu
KCkpOworI2VuZGlmCiAgICAgaWYgKG1fYml0ZmllbGRzLm5lZWRzTGF5b3V0KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2JpdGZpZWxkcy5zZXROZWVkc0xheW91dCh0cnVlKTsKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xNTQwLDcgKzE1NDAsOSBAQCBSZW5kZXJQ
dHI8UmVuZGVyVGFibGU+IFJlbmRlclRhYmxlOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVu
ZGVyZXIoY29uc3QgUmVuZAogCiBjb25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGU6OnRhYmxl
U3RhcnRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCkgY29u
c3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGNlbGwuaXNGaXJzdE9yTGFzdENlbGxJ
blJvdygpKTsKKyNlbmRpZgogICAgIGlmIChpc0RpcmVjdGlvblNhbWUodGhpcywgY2VsbC5yb3co
KSkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLmJvcmRlclN0YXJ0KCk7CiAKQEAgLTE1NDksNyAr
MTU1MSw5IEBAIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZTo6dGFibGVTdGFydEJvcmRl
ckFkam9pbmluZ0NlbGwoY29uc3QgUmVuZGVyVGFibGVDCiAKIGNvbnN0IEJvcmRlclZhbHVlJiBS
ZW5kZXJUYWJsZTo6dGFibGVFbmRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0IFJlbmRlclRhYmxl
Q2VsbCYgY2VsbCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGNlbGwuaXNG
aXJzdE9yTGFzdENlbGxJblJvdygpKTsKKyNlbmRpZgogICAgIGlmIChpc0RpcmVjdGlvblNhbWUo
dGhpcywgY2VsbC5yb3coKSkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLmJvcmRlckVuZCgpOwog
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTMwNiw3ICszMDYs
OSBAQCBpbmxpbmUgYm9vbCBSZW5kZXJUYWJsZUNlbGw6OmlzQmFzZWxpbmVBbGlnbmVkKCkgY29u
c3QKIAogaW5saW5lIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckFk
am9pbmluZ1RhYmxlU3RhcnQoKSBjb25zdAogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQo
aXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsKKyNlbmRpZgogICAgIGlmIChpc0RpcmVjdGlvblNh
bWUoc2VjdGlvbigpLCB0YWJsZSgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCkuYm9yZGVyU3Rh
cnQoKTsKIApAQCAtMzE1LDcgKzMxNyw5IEBAIGlubGluZSBjb25zdCBCb3JkZXJWYWx1ZSYgUmVu
ZGVyVGFibGVDZWxsOjpib3JkZXJBZGpvaW5pbmdUYWJsZVN0YXJ0KCkgY29uc3QKIAogaW5saW5l
IGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckFkam9pbmluZ1RhYmxl
RW5kKCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGlzRmlyc3RPckxhc3RD
ZWxsSW5Sb3coKSk7CisjZW5kaWYKICAgICBpZiAoaXNEaXJlY3Rpb25TYW1lKHNlY3Rpb24oKSwg
dGFibGUoKSkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLmJvcmRlckVuZCgpOwogCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtOTksMTQgKzk5LDE4IEBAIHZv
aWQgUmVuZGVyVGFibGVSb3c6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkCiAKIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZVJv
dzo6Ym9yZGVyQWRqb2luaW5nU3RhcnRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCkg
Y29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUX1VOVVNFRChjZWxsLCBjZWxsLmlz
Rmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7CisjZW5kaWYKICAgICAvLyBGSVhNRTogaHR0cHM6Ly93
ZWJraXQub3JnL2IvNzkyNzIgLSBBZGQgc3VwcG9ydCBmb3IgbWl4ZWQgZGlyZWN0aW9uYWxpdHkg
YXQgdGhlIGNlbGwgbGV2ZWwuCiAgICAgcmV0dXJuIHN0eWxlKCkuYm9yZGVyU3RhcnQoKTsKIH0K
IAogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlUm93Ojpib3JkZXJBZGpvaW5pbmdFbmRD
ZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVH
CiAgICAgQVNTRVJUX1VOVVNFRChjZWxsLCBjZWxsLmlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7
CisjZW5kaWYKICAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2IvNzkyNzIgLSBBZGQg
c3VwcG9ydCBmb3IgbWl4ZWQgZGlyZWN0aW9uYWxpdHkgYXQgdGhlIGNlbGwgbGV2ZWwuCiAgICAg
cmV0dXJuIHN0eWxlKCkuYm9yZGVyRW5kKCk7CiB9Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC02NzQsNyArNjc0LDkgQEAgdm9pZCBSZW5kZXJU
YWJsZVNlY3Rpb246OmNvbXB1dGVPdmVyZmxvd0Zyb21DZWxscyh1bnNpZ25lZCB0b3RhbFJvd3Ms
IHVuc2lnbmVkIG4KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyNpZm5kZWYgTkRF
QlVHCiAgICAgQVNTRVJUKGhhc092ZXJmbG93aW5nQ2VsbCA9PSB0aGlzLT5oYXNPdmVyZmxvd2lu
Z0NlbGwoKSk7CisjZW5kaWYKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNh
bGNPdXRlckJvcmRlckJlZm9yZSgpIGNvbnN0CkBAIC0xMzkzLDEzICsxMzk1LDE3IEBAIHVuc2ln
bmVkIFJlbmRlclRhYmxlU2VjdGlvbjo6bnVtQ29sdW1ucygpIGNvbnN0CiAKIGNvbnN0IEJvcmRl
clZhbHVlJiBSZW5kZXJUYWJsZVNlY3Rpb246OmJvcmRlckFkam9pbmluZ1N0YXJ0Q2VsbChjb25z
dCBSZW5kZXJUYWJsZUNlbGwmIGNlbGwpIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFT
U0VSVChjZWxsLmlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7CisjZW5kaWYKICAgICByZXR1cm4g
aXNEaXJlY3Rpb25TYW1lKHRoaXMsICZjZWxsKSA/IHN0eWxlKCkuYm9yZGVyU3RhcnQoKSA6IHN0
eWxlKCkuYm9yZGVyRW5kKCk7CiB9CiAKIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZVNl
Y3Rpb246OmJvcmRlckFkam9pbmluZ0VuZENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsJiBjZWxs
KSBjb25zdAogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoY2VsbC5pc0ZpcnN0T3JMYXN0
Q2VsbEluUm93KCkpOworI2VuZGlmCiAgICAgcmV0dXJuIGlzRGlyZWN0aW9uU2FtZSh0aGlzLCAm
Y2VsbCkgPyBzdHlsZSgpLmJvcmRlckVuZCgpIDogc3R5bGUoKS5ib3JkZXJTdGFydCgpOwogfQog
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0yMDUsNyAr
MjA1LDkgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnJlc2V0QW5pbWF0ZWRUeXBlKCkK
ICAgICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAorI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKHByb3BlcnR5VHlwZXNB
cmVDb25zaXN0ZW50KG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIG1fYW5pbWF0ZWRQcm9wZXJ0aWVz
KSk7CisjZW5kaWYKICAgICAgICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKICAgICAgICAgICAgIG1f
YW5pbWF0ZWRUeXBlID0gYW5pbWF0b3ItPnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihtX2FuaW1hdGVk
UHJvcGVydGllcyk7CiAgICAgICAgIGVsc2UgewpAQCAtMjMyLDcgKzIzNCw5IEBAIHZvaWQgU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSgpCiAKIHN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBseUNTU1Byb3BlcnR5VG9UYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwg
Q1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKKyNpZm5kZWYgTkRFQlVH
CiAgICAgQVNTRVJUKCF0YXJnZXRFbGVtZW50Lm1fZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYK
IAogICAgIGlmICghdGFyZ2V0RWxlbWVudC5lbnN1cmVBbmltYXRlZFNNSUxTdHlsZVByb3BlcnRp
ZXMoKS5zZXRQcm9wZXJ0eShpZCwgdmFsdWUsIGZhbHNlKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjQyLDcgKzI0Niw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUNTU1Byb3BlcnR5VG9UYXJn
ZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgQ1NTUHJvcGVyCiAKIHN0YXRpYyBpbmxpbmUg
dm9pZCByZW1vdmVDU1NQcm9wZXJ0eUZyb21UYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVu
dCwgQ1NTUHJvcGVydHlJRCBpZCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCF0YXJn
ZXRFbGVtZW50Lm1fZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYKICAgICB0YXJnZXRFbGVtZW50
LmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpLnJlbW92ZVByb3BlcnR5KGlkKTsK
ICAgICB0YXJnZXRFbGVtZW50LmludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsK
IH0KQEAgLTI4MSw3ICsyODcsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlQ1NTUHJvcGVy
dHlGcm9tVGFyZ2V0QW5kSW5zdGFuY2VzKFNWR0VsZW1lbnQmIHRhcmdldEVsZQogCiBzdGF0aWMg
aW5saW5lIHZvaWQgbm90aWZ5VGFyZ2V0QWJvdXRBbmltVmFsQ2hhbmdlKFNWR0VsZW1lbnQmIHRh
cmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7CisjaWZu
ZGVmIE5ERUJVRwogICAgIEFTU0VSVCghdGFyZ2V0RWxlbWVudC5tX2RlbGV0aW9uSGFzQmVndW4p
OworI2VuZGlmCiAgICAgdGFyZ2V0RWxlbWVudC5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0
ZU5hbWUpOwogfQogCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHkuY3BwCkBAIC01MSw3ICs1MSw5IEBAIFNWR0FuaW1hdGVkUHJvcGVydHk6
On5TVkdBbmltYXRlZFByb3BlcnR5KCkKIHZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0
Q2hhbmdlKCkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisjaWZuZGVmIE5ERUJV
RwogICAgIEFTU0VSVCghbV9jb250ZXh0RWxlbWVudC0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKKyNl
bmRpZgogICAgIG1fY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CiAg
ICAgbV9jb250ZXh0RWxlbWVudC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0ZU5hbWUp
OwogICAgIC8vIE5lZWRlZCB0byBzeW5jaHJvbml6ZSB3aXRoIENTU09NIGZvciBwcmVzZW50YXRp
b24gYXR0cmlidXRlcyB3aXRoIFNWRyBET00uCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oCkBAIC05NCwxMyArOTQsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+R2Vu
ZXJpY0NhbGxiYWNrKCkKICAgICB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICBBU1NFUlQobV9v
cmlnaW5UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyNlbmRpZgogICAgICAg
ICBBU1NFUlQoIW1fY2FsbGJhY2spOwogICAgIH0KIAogICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNr
V2l0aFJldHVyblZhbHVlKFQuLi4gcmV0dXJuVmFsdWUpCiAgICAgeworI2lmbmRlZiBOREVCVUcK
ICAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CisjZW5kaWYKIAogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMTcsNyArMTIxLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKEVy
cm9yIGVycm9yID0gRXJyb3I6OlVua25vd24pIGZpbmFsCiAgICAgeworI2lmbmRlZiBOREVCVUcK
ICAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CisjZW5kaWYKIAogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1
cm47Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNjU2LDcgKzY1Niw5IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoTGF5
b3V0TWlsZXN0b25lcyBtaWxlCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGFyZSBkaXNwYXRjaGVkIG9uIHRo
ZSBtYWluIGZyYW1lIGJ5IHRoZSB0aW1lIHRoZSBmaXJzdCBsYXlvdXQgaGFwcGVucy4KKyNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIEFTU0VSVCghd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKSB8fCBt
X2ZyYW1lICE9IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgfHwgbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPmRvY3VtZW50KCktPmRpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdl
ZCgpKTsKKyNlbmRpZgogI2VuZGlmCiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388272</attachid>
            <date>2020-01-20 19:36:43 -0800</date>
            <delta_ts>2022-03-12 21:01:53 -0800</delta_ts>
            <desc>updated patch 2.27.4</desc>
            <filename>1</filename>
            <type>text/plain</type>
            <size>40219</size>
            <attacher>enometh</attacher>
            
              <data encoding="base64">LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCkBA
IC0yNTUsOSArMjU1LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgICAgICB+TG9jYWxX
cml0ZXIoKQogICAgICAgICAgICAgeworI2lmICFkZWZpbmVkKE5ERUJVRykKICAgICAgICAgICAg
ICAgICBBU1NFUlQobV9pbmRleCAtIG1faW5pdGlhbEluZGV4IDw9IG1fcmVxdWlyZWRTcGFjZSk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyLm1faW5kZXggPT0gbV9pbml0aWFsSW5k
ZXgpOwogICAgICAgICAgICAgICAgIEFTU0VSVChtX3N0b3JhZ2VCdWZmZXIgPT0gbV9idWZmZXIu
bV9zdG9yYWdlLmJ1ZmZlcigpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIG1fYnVmZmVyLm1f
aW5kZXggPSBtX2luZGV4OwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVySUQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0ZXJJRC5oCmluZGV4IDczYjQzMjA2My4uYjIwNGVmYTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVy
SUQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVySUQu
aApAQCAtODQsNyArODQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpbnQgaW5kZXgo
KSBjb25zdAogICAgICAgICB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgQVNTRVJUKG1f
ZGlkU2V0SW5kZXgpOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0
ZXIub2Zmc2V0KCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDliNWQ3NjgxYy4uYTFhNTFkM2Nh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwCkBAIC00MzgsOCArNDM4LDEwIEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bj
b2RlSUQgZW50cnlPcGNvZGVJRCwgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3MsIFZNKiB2bSwKIAog
ICAgICAgICBPRkZMSU5FX0FTTV9HTFVFX0xBQkVMKGxsaW50X3JldHVybl90b19ob3N0KQogICAg
ICAgICB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgQVNTRVJUKHN0YXJ0U1AgPT0gc3Au
dnAoKSk7CiAgICAgICAgICAgICBBU1NFUlQoc3RhcnRDRlIgPT0gY2ZyLmNhbGxGcmFtZSgpKTsK
KyNlbmRpZgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSh0MS5pKCksIHQwLmkoKSk7IC8vIHJldHVybmluZyBKU1ZhbHVlKHRhZywgcGF5bG9hZCk7CiAj
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCmluZGV4IDk2NzA4Mzhm
MS4uOGNkNGMyYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oCkBA
IC04Nyw3ICs4NywxMSBAQCBwdWJsaWM6CiAgICAgRXhwZWN0ZWQ8UGFnZUNvdW50LCBHcm93RmFp
bFJlYXNvbj4gZ3JvdyhQYWdlQ291bnQpOwogICAgIHZvaWQgcmVnaXN0ZXJJbnN0YW5jZShJbnN0
YW5jZSopOwogCi0gICAgdm9pZCBjaGVjaygpIHsgIEFTU0VSVCghZGVsZXRpb25IYXNCZWd1bigp
KTsgfQorICAgIHZvaWQgY2hlY2soKSB7CisjaWZuZGVmIE5ERUJVRworICBBU1NFUlQoIWRlbGV0
aW9uSGFzQmVndW4oKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9m
ZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lbW9yeSwgbV9tZW1vcnkp
OyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoTWVtb3J5LCBtX3NpemUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keVNvdXJjZS5jcHAKaW5kZXggOTQxZGE2YjhkLi40MmY3MzE0NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5jcHAK
QEAgLTY5LDcgKzY5LDkgQEAgdm9pZCBGZXRjaEJvZHlTb3VyY2U6OmRvUHVsbCgpCiB2b2lkIEZl
dGNoQm9keVNvdXJjZTo6ZG9DYW5jZWwoKQogewogICAgIG1faXNDYW5jZWxsaW5nID0gdHJ1ZTsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fYm9keU93bmVyIHx8IG1faXNDbG9zZWQpOwor
I2VuZGlmCiAgICAgaWYgKCFtX2JvZHlPd25lcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAKaW5kZXggNzE2ZjUwNzMxLi4xNzJmMTAzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTI1Miw3ICsy
NTIsOSBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFu
ZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OwogICAgICAgICBmb3IgKGF1
dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAg
ICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bv
c2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKSB7CisjaWZuZGVmIE5ERUJVRwog
ICAgICAgICAgICAgICAgIEFTU0VSVCgmcHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLnRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7CisjZW5kaWYKICAg
ICAgICAgICAgICAgICByZXR1cm4gcHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IGZjZmYxMDRjNS4uZjkyMDg2YzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmNwcApAQCAtMTUyLDEzICsxNTIsMTcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVj
b3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIERhdGFiYXNlVGhy
ZWFkOjpzY2hlZHVsZVRhc2soc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFzaz4mJiB0YXNrKQog
eworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIXRhc2stPmhhc1N5bmNocm9uaXplcigpIHx8
IHRhc2stPmhhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpKTsKKyNlbmRpZgogICAgIG1fcXVldWUu
YXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpzY2hlZHVs
ZUltbWVkaWF0ZVRhc2soc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVGFzaz4mJiB0YXNrKQogewor
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIXRhc2stPmhhc1N5bmNocm9uaXplcigpIHx8IHRh
c2stPmhhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpKTsKKyNlbmRpZgogICAgIG1fcXVldWUucHJl
cGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmgKaW5kZXggM2ViM2MxYjQ4Li45NWJiNTZkZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaApAQCAtNTYsOCArNTYsMTAgQEAgcHJv
dGVjdGVkOgogICAgIAogICAgIH5KU0NhbGxiYWNrRGF0YSgpCiAgICAgewotI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQorI2lmbmRlZiBOREVCVUcKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgICAg
ICBBU1NFUlQobV90aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyNlbmRpZgog
I2VuZGlmCiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5jcHAKaW5kZXggMmFmMjc2MTg3Li5iNzAyMzhiYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApAQCAtMTY4LDcgKzE2OCw5
IEBAIHZvaWQgYWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShOb2RlKiYgaGVhZCwgTm9kZSom
IHRhaWwsIENvbnRhaW5lck5vZGUmIGNvbnRhCiAgICAgLy8gV2UgaGF2ZSB0byB0ZWxsIGFsbCBj
aGlsZHJlbiB0aGF0IHRoZWlyIHBhcmVudCBoYXMgZGllZC4KICAgICBSZWZQdHI8Tm9kZT4gbmV4
dCA9IG51bGxwdHI7CiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGNvbnRhaW5lci5maXJz
dENoaWxkKCk7IG5vZGU7IG5vZGUgPSBuZXh0KSB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICBB
U1NFUlQoIW5vZGUtPm1fZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYKIAogICAgICAgICBuZXh0
ID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgbm9kZS0+c2V0TmV4dFNpYmxpbmcobnVs
bHB0cik7CkBAIC0yMTEsNyArMjEzLDkgQEAgdm9pZCByZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5D
b250YWluZXIoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyKQogICAgIE5vZGUqIG5vZGU7CiAgICAg
Tm9kZSogbmV4dDsKICAgICB3aGlsZSAoKG5vZGUgPSBoZWFkKSkgeworI2lmbmRlZiBOREVCVUcK
ICAgICAgICAgQVNTRVJUKG5vZGUtPm1fZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYKIAogICAg
ICAgICBuZXh0ID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgbm9kZS0+c2V0TmV4dFNp
YmxpbmcobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmZGU1ZWYyYjIuLjU3
YzRlNTFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03MDgsNyArNzA4LDkgQEAgRG9j
dW1lbnQ6On5Eb2N1bWVudCgpCiAKIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKIHsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOworI2VuZGlm
CiAgICAgaWYgKG1fcmVmZXJlbmNpbmdOb2RlQ291bnQpIHsKICAgICAgICAgLy8gTm9kZTo6cmVt
b3ZlZExhc3RSZWYgZG9lc24ndCBzZXQgcmVmQ291bnQoKSB0byB6ZXJvIGJlY2F1c2UgaXQncyBu
b3Qgb2JzZXJ2YWJsZS4KICAgICAgICAgLy8gQnV0IHdlIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBv
dXIgcmVmQ291bnQgcmVhY2hlZCB6ZXJvIGluIHN1YnNlcXVlbnQgY2FsbHMgdG8gZGVjcmVtZW50
UmVmZXJlbmNpbmdOb2RlQ291bnQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMmY5YmJjNzdi
Li4xMjBlYmJlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNjYsMTMgKzM2NiwxNyBAQCBw
dWJsaWM6CiAgICAgLy8gcG9pbnRlciB3aXRob3V0IGludHJvZHVjaW5nIHJlZmVyZW5jZSBjeWNs
ZXMuCiAgICAgdm9pZCBpbmNyZW1lbnRSZWZlcmVuY2luZ05vZGVDb3VudCgpCiAgICAgeworI2lm
bmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOworI2VuZGlm
CiAgICAgICAgICsrbV9yZWZlcmVuY2luZ05vZGVDb3VudDsKICAgICB9CiAKICAgICB2b2lkIGRl
Y3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCkKICAgICB7CisjaWZuZGVmIE5ERUJVRwogICAg
ICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1biB8fCAhbV9yZWZlcmVuY2luZ05vZGVDb3Vu
dCk7CisjZW5kaWYKICAgICAgICAgLS1tX3JlZmVyZW5jaW5nTm9kZUNvdW50OwogICAgICAgICBp
ZiAoIW1fcmVmZXJlbmNpbmdOb2RlQ291bnQgJiYgIXJlZkNvdW50KCkpIHsKICNpZiBBU1NFUlRf
RU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggN2VjOWQ5NjljLi40MTFjZTQ0ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtNzQ3LDcgKzc0Nyw5IEBAIGlubGluZSBjb25zdCBFbGVtZW50KiBF
bGVtZW50Ojpyb290RWxlbWVudCgpIGNvbnN0CiAKIGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0F0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkg
Y29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGZhc3RBdHRyaWJ1dGVMb29rdXBB
bGxvd2VkKG5hbWUpKTsKKyNlbmRpZgogICAgIHJldHVybiBlbGVtZW50RGF0YSgpICYmIGZpbmRB
dHRyaWJ1dGVCeU5hbWUobmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA5ODIxMjQ0ZGMu
LmJiNTc3MTNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzM2LDEwICszMzYsMTAgQEAgTm9kZTo6
fk5vZGUoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcmVm
Q291bnRBbmRQYXJlbnRCaXQgPT0gc19yZWZDb3VudEluY3JlbWVudCk7CisjaWZuZGVmIE5ERUJV
RwogICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIEFTU0VSVCghbV9hZG9wdGlv
bklzUmVxdWlyZWQpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIGlmICghaWdub3JlU2V0KCkucmVt
b3ZlKHRoaXMpKQogICAgICAgICBub2RlQ291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKaW5kZXggOWZlM2FmYTQ3Li41YWM1MTQ4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNjkzLDE5
ICs2OTMsMjMgQEAgaW5saW5lIHZvaWQgYWRvcHRlZChOb2RlKiBub2RlKQogQUxXQVlTX0lOTElO
RSB2b2lkIE5vZGU6OnJlZigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIEFT
U0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgIEFTU0VSVCghbV9hZG9wdGlv
bklzUmVxdWlyZWQpOworI2VuZGlmCiAgICAgbV9yZWZDb3VudEFuZFBhcmVudEJpdCArPSBzX3Jl
ZkNvdW50SW5jcmVtZW50OwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgTm9kZTo6ZGVyZWYoKSBj
b25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjaWZuZGVmIE5ERUJVRwogICAg
IEFTU0VSVChyZWZDb3VudCgpKTsKICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAg
ICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CiAgICAgQVNTRVJUKCFtX2Fk
b3B0aW9uSXNSZXF1aXJlZCk7CisjZW5kaWYKICAgICBhdXRvIHVwZGF0ZWRSZWZDb3VudCA9IG1f
cmVmQ291bnRBbmRQYXJlbnRCaXQgLSBzX3JlZkNvdW50SW5jcmVtZW50OwogICAgIGlmICghdXBk
YXRlZFJlZkNvdW50KSB7CiAgICAgICAgIC8vIERvbid0IHVwZGF0ZSBtX3JlZkNvdW50QW5kUGFy
ZW50Qml0IHRvIGF2b2lkIGRvdWJsZSBkZXN0cnVjdGlvbiB0aHJvdWdoIHVzZSBvZiBSZWY8VD4v
UmVmUHRyPFQ+LgpAQCAtNzIxLDggKzcyNSwxMCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTm9kZTo6
ZGVyZWYoKSBjb25zdAogCiBBTFdBWVNfSU5MSU5FIGJvb2wgTm9kZTo6aGFzT25lUmVmKCkgY29u
c3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwog
ICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOworI2VuZGlmCiAgICAgcmV0
dXJuIHJlZkNvdW50KCkgPT0gMTsKIH0KIApAQCAtNzg1LDcgKzc5MSw5IEBAIGlubGluZSB2b2lk
IE5vZGU6OnNldEhhc1ZhbGlkU3R5bGUoKQogaW5saW5lIHZvaWQgTm9kZTo6c2V0VHJlZVNjb3Bl
UmVjdXJzaXZlbHkoVHJlZVNjb3BlJiBuZXdUcmVlU2NvcGUpCiB7CiAgICAgQVNTRVJUKCFpc0Rv
Y3VtZW50Tm9kZSgpKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFz
QmVndW4pOworI2VuZGlmCiAgICAgaWYgKG1fdHJlZVNjb3BlICE9ICZuZXdUcmVlU2NvcGUpCiAg
ICAgICAgIG1vdmVUcmVlVG9OZXdTY29wZSgqdGhpcywgKm1fdHJlZVNjb3BlLCBuZXdUcmVlU2Nv
cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggNGQzZTYxOTQ3
Li5lYTE1ZDM4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcApAQCAtOTYs
NyArOTYsOSBAQCBpbmxpbmUgYm9vbCBTbG90QXNzaWdubWVudDo6aGFzQXNzaWduZWROb2RlcyhT
aGFkb3dSb290JiBzaGFkb3dSb290LCBTbG90JiBzbG90KQogCiB2b2lkIFNsb3RBc3NpZ25tZW50
OjpyZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBjb25zdCBB
dG9tU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdOYW1lLCBTaGFkb3dSb290
JiBzaGFkb3dSb290KQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9zbG90RWxlbWVu
dHNGb3JDb25zaXN0ZW5jeUNoZWNrLmNvbnRhaW5zKCZzbG90RWxlbWVudCkpOworI2VuZGlmCiAK
ICAgICBtX3Nsb3RNdXRhdGlvblZlcnNpb24rKzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9DYW52YXNCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5j
cHAKaW5kZXggZDJhZDQxZTg3Li43OWEyYTkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FudmFzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNl
LmNwcApAQCAtNTUsNyArNTUsOSBAQCBDYW52YXNCYXNlOjpDYW52YXNCYXNlKEludFNpemUgc2l6
ZSkKIAogQ2FudmFzQmFzZTo6fkNhbnZhc0Jhc2UoKQogeworI2lmbmRlZiBOREVCVUcKICAgICBB
U1NFUlQobV9kaWROb3RpZnlPYnNlcnZlcnNDYW52YXNEZXN0cm95ZWQpOworI2VuZGlmCiAgICAg
QVNTRVJUKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2ltYWdlQnVmZmVy
KTsKIH0KQEAgLTE0OCw3ICsxNTAsOSBAQCB2b2lkIENhbnZhc0Jhc2U6Om5vdGlmeU9ic2VydmVy
c0NhbnZhc1Jlc2l6ZWQoKQogCiB2b2lkIENhbnZhc0Jhc2U6Om5vdGlmeU9ic2VydmVyc0NhbnZh
c0Rlc3Ryb3llZCgpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9kaWROb3RpZnlP
YnNlcnZlcnNDYW52YXNEZXN0cm95ZWQpOworI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyIDogY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJzKSkKICAgICAgICAgb2JzZXJ2ZXItPmNhbnZh
c0Rlc3Ryb3llZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRl
eCBhYTg0YzBiNzUuLjQxN2I2YTc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwCkBAIC0xMDksMTUgKzEwOSwyMSBAQCBJbWFnZUxvYWRlcjo6fkltYWdlTG9hZGVyKCkKICAg
ICBpZiAobV9pbWFnZSkKICAgICAgICAgbV9pbWFnZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIAor
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50IHx8
ICFiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZlbnRzKCp0aGlzKSk7CisjZW5k
aWYKICAgICBpZiAobV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KQogICAgICAgICBiZWZvcmVM
b2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCgqdGhpcyk7CiAKKyNpZm5kZWYgTkRFQlVHCiAg
ICAgQVNTRVJUKG1faGFzUGVuZGluZ0xvYWRFdmVudCB8fCAhbG9hZEV2ZW50U2VuZGVyKCkuaGFz
UGVuZGluZ0V2ZW50cygqdGhpcykpOworI2VuZGlmCiAgICAgaWYgKG1faGFzUGVuZGluZ0xvYWRF
dmVudCkKICAgICAgICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQoKnRoaXMpOwogCisj
aWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2hhc1BlbmRpbmdFcnJvckV2ZW50IHx8ICFlcnJv
ckV2ZW50U2VuZGVyKCkuaGFzUGVuZGluZ0V2ZW50cygqdGhpcykpOworI2VuZGlmCiAgICAgaWYg
KG1faGFzUGVuZGluZ0Vycm9yRXZlbnQpCiAgICAgICAgIGVycm9yRXZlbnRTZW5kZXIoKS5jYW5j
ZWxFdmVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCBkZjdlNTcxNTEuLmMzNGY5MWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xMzIsNyArMTMyLDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2kKICAgICBBU1NFUlQoIW1faGFuZGxlKTsKICAgICBBU1NFUlQobV9yZXF1ZXN0LmlzTnVsbCgp
KTsKICAgICBBU1NFUlQobV9kZWZlcnJlZFJlcXVlc3QuaXNOdWxsKCkpOworI2lmbmRlZiBOREVC
VUcKICAgICBBU1NFUlQoIW1fZG9jdW1lbnRMb2FkZXItPmlzU3Vic3RpdHV0ZUxvYWRQZW5kaW5n
KHRoaXMpKTsKKyNlbmRpZgogICAgIAogICAgIG1fbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lQW5k
RmV0Y2hTdGFydCgpOwogCkBAIC0zMDksNyArMzExLDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5n
UG9sCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJj
ZSgpCiB7CisKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RvY3VtZW50TG9hZGVyLT5p
c1N1YnN0aXR1dGVMb2FkUGVuZGluZyh0aGlzKSk7CisjZW5kaWYKICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+cmVtb3ZlKHRoaXMpOwogICAgIGlmIChtX2hhbmRs
ZSkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggYzc1YjNkYzBiLi45ZDI2MTYxYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAt
MTcxLDcgKzE3MSw5IEBAIENhY2hlZFJlc291cmNlOjp+Q2FjaGVkUmVzb3VyY2UoKQogICAgIEFT
U0VSVCghbV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSk7IC8vIFNob3VsZCBiZSB0cnVlIGJlY2F1c2Ug
Y2FuRGVsZXRlKCkgY2hlY2tzIHRoaXMuCiAgICAgQVNTRVJUKGNhbkRlbGV0ZSgpKTsKICAgICBB
U1NFUlQoIWluQ2FjaGUoKSk7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9kZWxldGVk
KTsKKyNlbmRpZgogICAgIEFTU0VSVCh1cmwoKS5pc051bGwoKSB8fCAhYWxsb3dzQ2FjaGluZygp
IHx8IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVzb3VyY2VS
ZXF1ZXN0KCksIHNlc3Npb25JRCgpKSAhPSB0aGlzKTsKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDBiNmU0MTZmMS4u
MjM1ZWI1NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAKQEAgLTE1Nyw3ICsxNTcsOSBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZXZhbGlkYXRpb25TdWNj
ZWVkZWQoQ2FjaGVkUmVzb3VyY2UmIHJldmFsaWRhdGluZ1Jlc291cmNlLCBjbwogICAgICAgICBh
ZGp1c3RTaXplKHJlc291cmNlLmhhc0NsaWVudHMoKSwgZGVsdGEpOwogCiAgICAgcmV2YWxpZGF0
aW5nUmVzb3VyY2Uuc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpOworI2lmbmRl
ZiBOREVCVUcKICAgICBBU1NFUlQoIXJldmFsaWRhdGluZ1Jlc291cmNlLm1fZGVsZXRlZCk7Cisj
ZW5kaWYKICAgICAvLyB0aGlzIGRlbGV0ZXMgdGhlIHJldmFsaWRhdGluZyByZXNvdXJjZQogICAg
IHJldmFsaWRhdGluZ1Jlc291cmNlLmNsZWFyUmVzb3VyY2VUb1JldmFsaWRhdGUoKTsKIH0KQEAg
LTQ0Niw3ICs0NDgsMTAgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJvbUxSVUxpc3QoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIExSVUxpc3QmIGxpc3QgPSBscnVMaXN0Rm9yKHJl
c291cmNlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBsaXN0IHdlIGdvdCBpcyB0aGUgbGlz
dCB3ZSB3YW50LgorCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChyZXNvdXJjZS5tX2xydUlu
ZGV4ID09IG9sZExpc3RJbmRleCk7CisjZW5kaWYKIAogICAgIGJvb2wgcmVtb3ZlZCA9IGxpc3Qu
cmVtb3ZlKCZyZXNvdXJjZSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAppbmRleCA4MzYzYzE3OWEuLjBhYzE0MzgyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcApAQCAtMjY5LDcgKzI2OSw5IEBAIFRpbWVyQmFzZTo6
flRpbWVyQmFzZSgpCiAKIHZvaWQgVGltZXJCYXNlOjpzdGFydChTZWNvbmRzIG5leHRGaXJlSW50
ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpCiB7Ci0gICAgQVNTRVJUKGNhbkN1cnJlbnRU
aHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90aHJlYWQpKTsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOwor
I2VuZGlmCiAKICAgICBtX3JlcGVhdEludGVydmFsID0gcmVwZWF0SW50ZXJ2YWw7CiAgICAgc2V0
TmV4dEZpcmVUaW1lKE1vbm90b25pY1RpbWU6Om5vdygpICsgbmV4dEZpcmVJbnRlcnZhbCk7CkBA
IC0yNzcsNyArMjc5LDkgQEAgdm9pZCBUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgbmV4dEZpcmVJ
bnRlcnZhbCwgU2Vjb25kcyByZXBlYXRJbnRlcnZhbCkKIAogdm9pZCBUaW1lckJhc2U6OnN0b3Ao
KQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1Ro
cmVhZExvY2FsRGF0YShtX3RocmVhZCkpOworI2VuZGlmCiAKICAgICBtX3JlcGVhdEludGVydmFs
ID0gMF9zOwogICAgIHNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIHsgfSk7CkBAIC00NjEs
MTAgKzQ2NSwxMiBAQCB2b2lkIFRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25p
Y1RpbWUgb2xkVGltZSkKIAogdm9pZCBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9u
aWNUaW1lIG5ld1RpbWUpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fdGhyZWFkKSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RocmVhZCkgfHwgc2hv
dWxkU3VwcHJlc3NUaHJlYWRTYWZldHlDaGVjaygpKTsKICAgICBib29sIHRpbWVySGFzQmVlbkRl
bGV0ZWQgPSBzdGQ6OmlzbmFuKG1fdW5hbGlnbmVkTmV4dEZpcmVUaW1lKTsKICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCF0aW1lckhhc0JlZW5EZWxldGVkKTsK
KyNlbmRpZgogCiAgICAgaWYgKG1fdW5hbGlnbmVkTmV4dEZpcmVUaW1lICE9IG5ld1RpbWUpIHsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXN0ZDo6aXNuYW4obmV3VGltZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RpbWVyLmgKaW5kZXggZTcwODE1NjdmLi4yNTk4OGZhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGltZXIuaApAQCAtMTMyLDExICsxMzIsMTMgQEAgcHJpdmF0ZToKIGlubGluZSBib29sIFRpbWVy
QmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlzIGluIHRl
cm1zIG9mIFVTRShXRUJfVEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPU19GQU1JTFkpLgor
I2lmbmRlZiBOREVCVUcKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV90
aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbHNlCiAgICAgQVNTRVJUKFdl
YlRocmVhZElzQ3VycmVudCgpIHx8IHB0aHJlYWRfbWFpbl9ucCgpIHx8IG1fdGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNlbmRpZgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihuZXh0RmlyZVRpbWUoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmlu
ZGV4IDdmY2FhNDRkNS4uZThiZTlhYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTM2OSw3ICszNjksOSBAQCB2b2lkIEZvbnRDYWNo
ZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKHVuc2lnbmVkIHB1cmdlQ291bnQpCiAgICAgd2hpbGUg
KHB1cmdlQ291bnQpIHsKICAgICAgICAgVmVjdG9yPFJlZjxGb250PiwgMjA+IGZvbnRzVG9EZWxl
dGU7CiAgICAgICAgIGZvciAoYXV0byYgZm9udCA6IGNhY2hlZEZvbnRzKCkudmFsdWVzKCkpIHsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBMT0coRm9udHMsICIgdHJ5aW5nIHRvIHB1cmdl
IGZvbnQgJXMgKGhhcyBvbmUgcmVmICVkKSIsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLmRlc2NyaXB0
aW9uKCkudXRmOCgpLmRhdGEoKSwgZm9udC0+aGFzT25lUmVmKCkpOworI2VuZGlmCiAgICAgICAg
ICAgICBpZiAoIWZvbnQtPmhhc09uZVJlZigpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgZm9udHNUb0RlbGV0ZS5hcHBlbmQoZm9udC5jb3B5UmVmKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IDAwMTEwMGY3Ny4uNGI2N2Q0MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw5IEBAIFBhaW50aW5nQ29u
dGV4dENhaXJvOjpGb3JQYWludGluZzo6fkZvclBhaW50aW5nKCkKICAgICAvLyBhcyB3ZWxsLiBU
aGlzIGlzIGNoZWNrZWQgYnkgYXNzZXJ0aW5nIHRoYXQgbV9kZWxldGlvbkNvbXBsZXRlIGlzIHRy
dWUsIHdoaWNoIHNob3VsZAogICAgIC8vIGJlIHRoZSBjYXNlIGlmIHRoZSBzX2J1ZmZlcktleSB1
c2VyIGRhdGEgZGVzdHJveSBjYWxsYmFjayBoYXMgYmVlbiBpbnZva2VkIHVwb24gdGhlCiAgICAg
Ly8gY2Fpcm9fc3VyZmFjZV90IGRlc3RydWN0aW9uLgorI2lmbmRlZiBOREVCVUcKICAgICBBU1NF
UlQobV9kZWxldGlvbkNvbXBsZXRlKTsKKyNlbmRpZgogfQogCiBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Z3JhcGhpY3NDb250ZXh0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApp
bmRleCAzODE0ZjY4YWUuLjI3NDg3MDViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtNjEsOCArNjEsOCBAQCB2b2lkIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21w
b3NpdG9yKiBjbwogI2lmbmRlZiBOREVCVUcKICAgICBpZiAoIW1fY29tcG9zaXRvclRocmVhZCkK
ICAgICAgICAgbV9jb21wb3NpdG9yVGhyZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOwotI2VuZGlm
CiAgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwor
I2VuZGlmCiAgICAgQVNTRVJUKGNvbXBvc2l0b3IpOwogICAgIEFTU0VSVCh0YXJnZXRMYXllcik7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKQEAgLTgyLDcgKzgyLDkgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJl
YWQoQ29tcG9zaXRvciogY28KIAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
OjppbnZhbGlkYXRlKCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fY29tcG9zaXRv
clRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworI2VuZGlmCiAgICAgRnVuY3Rpb248dm9p
ZCgpPiB1cGRhdGVGdW5jdGlvbjsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CkBAIC0xMjksNyArMTMxLDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5OjpwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHAKIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUsIEdMaW50IGludGVybmFsRm9ybWF0KQogewogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkp
OworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CisjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWlsYWJsZUJ1ZmZlcjsKIAogICAgIGF1dG8gYnVmZmVy
cyA9IFdURk1vdmUobV91c2VkQnVmZmVycyk7CkBAIC0xNTMsNyArMTU3LDkgQEAgc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3gKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YXBw
ZW5kVG9VbnVzZWRCdWZmZXJzKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4gYnVmZmVyKQogewogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOworI2lm
bmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CisjZW5kaWYKICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgIHNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKIH0KQEAgLTE4MSw3ICsx
ODcsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVz
ZWRCdWZmZXJzVGltZXJGaXJlZCgpCiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eTo6c3dhcEJ1ZmZlcigpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NvbXBv
c2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyNlbmRpZgogICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgaWYgKCFtX3RhcmdldExheWVyIHx8ICFtX3BlbmRpbmdC
dWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmgKaW5kZXggN2QzMGQ3YTZjLi4yYmY3MjdlMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC0xMDQsOCArMTA0LDEwIEBA
IHB1YmxpYzoKICAgICAKICAgICBzcWxpdGUzKiBzcWxpdGUzSGFuZGxlKCkgY29uc3QKICAgICB7
CisjaWZuZGVmIE5ERUJVRwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBBU1NF
UlQobV9zaGFyYWJsZSB8fCBtX29wZW5pbmdUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8
ICFtX2RiKTsKKyNlbmRpZgogI2VuZGlmCiAgICAgICAgIHJldHVybiBtX2RiOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXgg
MGU0NGEyMjVmLi4wYjQ3OWQ5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC01NSw3ICs1NSw5IEBAIFNRTGl0ZVN0YXRlbWVudDo6
flNRTGl0ZVN0YXRlbWVudCgpCiAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnByZXBhcmUoKQogewor
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIW1faXNQcmVwYXJlZCk7CisjZW5kaWYKIAogICAg
IExvY2tIb2xkZXIgZGF0YWJhc2VMb2NrKG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpKTsKIApA
QCAtMTE4LDcgKzEyMCw5IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmZpbmFsaXplKCkKIAogaW50
IFNRTGl0ZVN0YXRlbWVudDo6cmVzZXQoKSAKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJU
KG1faXNQcmVwYXJlZCk7CisjZW5kaWYKICAgICBpZiAoIW1fc3RhdGVtZW50KQogICAgICAgICBy
ZXR1cm4gU1FMSVRFX09LOwogICAgIExPRyhTUUxEYXRhYmFzZSwgIlNRTCAtIHJlc2V0IC0gJXMi
LCBtX3F1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTEyOSw3ICsxMzMsMTAgQEAgYm9vbCBTUUxp
dGVTdGF0ZW1lbnQ6OmV4ZWN1dGVDb21tYW5kKCkKIHsKICAgICBpZiAoIW1fc3RhdGVtZW50ICYm
IHByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmbmRl
ZiBOREVCVUcKICAgICBBU1NFUlQobV9pc1ByZXBhcmVkKTsKKyNlbmRpZgogICAgIGlmIChzdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgZmluYWxpemUoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTQyLDcgKzE0OSwxMCBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6cmV0dXJu
c0F0TGVhc3RPbmVSZXN1bHQoKQogewogICAgIGlmICghbV9zdGF0ZW1lbnQgJiYgcHJlcGFyZSgp
ICE9IFNRTElURV9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWZuZGVmIE5ERUJVRwog
ICAgIEFTU0VSVChtX2lzUHJlcGFyZWQpOworI2VuZGlmCiAgICAgaWYgKHN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7CiAgICAgICAgIGZpbmFsaXplKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE1NCw3ICsxNjQsOSBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6cmV0dXJuc0F0TGVhc3RPbmVS
ZXN1bHQoKQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0
IHZvaWQqIGJsb2IsIGludCBzaXplKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9p
c1ByZXBhcmVkKTsKKyNlbmRpZgogICAgIEFTU0VSVChpbmRleCA+IDApOwogICAgIEFTU0VSVChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsKICAg
ICBBU1NFUlQoYmxvYiB8fCAhc2l6ZSk7CkBAIC0xODMsNyArMTk1LDkgQEAgaW50IFNRTGl0ZVN0
YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIGludCBT
UUxpdGVTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQog
eworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9pc1ByZXBhcmVkKTsKKyNlbmRpZgogICAg
IEFTU0VSVChpbmRleCA+IDApOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5k
ZXgpIDw9IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsKIApAQCAtMjAyLDcgKzIxNiw5IEBAIGludCBT
UUxpdGVTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQog
CiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kSW50KGludCBpbmRleCwgaW50IGludGVnZXIpCiB7
CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2lzUHJlcGFyZWQpOworI2VuZGlmCiAgICAg
QVNTRVJUKGluZGV4ID4gMCk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRl
eCkgPD0gYmluZFBhcmFtZXRlckNvdW50KCkpOwogCkBAIC0yMTEsNyArMjI3LDkgQEAgaW50IFNR
TGl0ZVN0YXRlbWVudDo6YmluZEludChpbnQgaW5kZXgsIGludCBpbnRlZ2VyKQogCiBpbnQgU1FM
aXRlU3RhdGVtZW50OjpiaW5kSW50NjQoaW50IGluZGV4LCBpbnQ2NF90IGludGVnZXIpCiB7Cisj
aWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2lzUHJlcGFyZWQpOworI2VuZGlmCiAgICAgQVNT
RVJUKGluZGV4ID4gMCk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkg
PD0gYmluZFBhcmFtZXRlckNvdW50KCkpOwogCkBAIC0yMjAsNyArMjM4LDkgQEAgaW50IFNRTGl0
ZVN0YXRlbWVudDo6YmluZEludDY0KGludCBpbmRleCwgaW50NjRfdCBpbnRlZ2VyKQogCiBpbnQg
U1FMaXRlU3RhdGVtZW50OjpiaW5kRG91YmxlKGludCBpbmRleCwgZG91YmxlIG51bWJlcikKIHsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faXNQcmVwYXJlZCk7CisjZW5kaWYKICAgICBB
U1NFUlQoaW5kZXggPiAwKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4
KSA8PSBiaW5kUGFyYW1ldGVyQ291bnQoKSk7CiAKQEAgLTIyOSw3ICsyNDksOSBAQCBpbnQgU1FM
aXRlU3RhdGVtZW50OjpiaW5kRG91YmxlKGludCBpbmRleCwgZG91YmxlIG51bWJlcikKIAogaW50
IFNRTGl0ZVN0YXRlbWVudDo6YmluZE51bGwoaW50IGluZGV4KQogeworI2lmbmRlZiBOREVCVUcK
ICAgICBBU1NFUlQobV9pc1ByZXBhcmVkKTsKKyNlbmRpZgogICAgIEFTU0VSVChpbmRleCA+IDAp
OwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9IGJpbmRQYXJhbWV0
ZXJDb3VudCgpKTsKIApAQCAtMjQ3LDcgKzI2OSw5IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJp
bmRWYWx1ZShpbnQgaW5kZXgsIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSkKIAogdW5zaWduZWQgU1FM
aXRlU3RhdGVtZW50OjpiaW5kUGFyYW1ldGVyQ291bnQoKSBjb25zdAogeworI2lmbmRlZiBOREVC
VUcKICAgICBBU1NFUlQobV9pc1ByZXBhcmVkKTsKKyNlbmRpZgogICAgIGlmICghbV9zdGF0ZW1l
bnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBzcWxpdGUzX2JpbmRfcGFyYW1ldGVy
X2NvdW50KG1fc3RhdGVtZW50KTsKQEAgLTI1NSw3ICsyNzksOSBAQCB1bnNpZ25lZCBTUUxpdGVT
dGF0ZW1lbnQ6OmJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0CiAKIGludCBTUUxpdGVTdGF0ZW1l
bnQ6OmNvbHVtbkNvdW50KCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faXNQcmVw
YXJlZCk7CisjZW5kaWYKICAgICBpZiAoIW1fc3RhdGVtZW50KQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gc3FsaXRlM19kYXRhX2NvdW50KG1fc3RhdGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKaW5kZXggMzVmN2Q1MTQ2Li4xMTJl
MDI0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVj
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3Bw
CkBAIC0zMjIsNyArMzIyLDkgQEAgRmxvYXRpbmdPYmplY3RJbnRlcnZhbCBGbG9hdGluZ09iamVj
dHM6OmludGVydmFsRm9yRmxvYXRpbmdPYmplY3QoRmxvYXRpbmdPYmplY3QKIAogdm9pZCBGbG9h
dGluZ09iamVjdHM6OmFkZFBsYWNlZE9iamVjdChGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmpl
Y3QpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghZmxvYXRpbmdPYmplY3QtPmlzSW5Q
bGFjZWRUcmVlKCkpOworI2VuZGlmCiAKICAgICBmbG9hdGluZ09iamVjdC0+c2V0SXNQbGFjZWQo
dHJ1ZSk7CiAgICAgaWYgKG1fcGxhY2VkRmxvYXRzVHJlZSkKQEAgLTMzNSw3ICszMzcsOSBAQCB2
b2lkIEZsb2F0aW5nT2JqZWN0czo6YWRkUGxhY2VkT2JqZWN0KEZsb2F0aW5nT2JqZWN0KiBmbG9h
dGluZ09iamVjdCkKIAogdm9pZCBGbG9hdGluZ09iamVjdHM6OnJlbW92ZVBsYWNlZE9iamVjdChG
bG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFT
U0VSVChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSAmJiBmbG9hdGluZ09iamVjdC0+aXNJblBs
YWNlZFRyZWUoKSk7CisjZW5kaWYKIAogICAgIGlmIChtX3BsYWNlZEZsb2F0c1RyZWUpIHsKICAg
ICAgICAgYm9vbCByZW1vdmVkID0gbV9wbGFjZWRGbG9hdHNUcmVlLT5yZW1vdmUoaW50ZXJ2YWxG
b3JGbG9hdGluZ09iamVjdChmbG9hdGluZ09iamVjdCkpOwpAQCAtMzYwLDcgKzM2NCw5IEBAIHZv
aWQgRmxvYXRpbmdPYmplY3RzOjpyZW1vdmUoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0
KQogewogICAgIEFTU0VSVCgobV9zZXQuY29udGFpbnMoZmxvYXRpbmdPYmplY3QpKSk7CiAgICAg
ZGVjcmVhc2VPYmplY3RzQ291bnQoZmxvYXRpbmdPYmplY3QtPnR5cGUoKSk7CisjaWZuZGVmIE5E
RUJVRwogICAgIEFTU0VSVChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSB8fCAhZmxvYXRpbmdP
YmplY3QtPmlzSW5QbGFjZWRUcmVlKCkpOworI2VuZGlmCiAgICAgaWYgKGZsb2F0aW5nT2JqZWN0
LT5pc1BsYWNlZCgpKQogICAgICAgICByZW1vdmVQbGFjZWRPYmplY3QoZmxvYXRpbmdPYmplY3Qp
OwogICAgIEFTU0VSVCghZmxvYXRpbmdPYmplY3QtPm9yaWdpbmF0aW5nTGluZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAppbmRleCBlYjczOGZiYmQuLmI3
ODg4ODY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2Jq
ZWN0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaApA
QCAtNjEsMTUgKzYxLDQ0IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZVJlY3Qud2lkdGgoKTsgfQogICAgIExheW91dFVuaXQgaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3QuaGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgc2V0WChM
YXlvdXRVbml0IHgpIHsgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsgbV9mcmFtZVJlY3Quc2V0
WCh4KTsgfQotICAgIHZvaWQgc2V0WShMYXlvdXRVbml0IHkpIHsgQVNTRVJUKCFpc0luUGxhY2Vk
VHJlZSgpKTsgbV9mcmFtZVJlY3Quc2V0WSh5KTsgfQotICAgIHZvaWQgc2V0V2lkdGgoTGF5b3V0
VW5pdCB3aWR0aCkgeyBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOyBtX2ZyYW1lUmVjdC5zZXRX
aWR0aCh3aWR0aCk7IH0KLSAgICB2b2lkIHNldEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkgeyBB
U1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOyBtX2ZyYW1lUmVjdC5zZXRIZWlnaHQoaGVpZ2h0KTsg
fQotCi0gICAgdm9pZCBzZXRNYXJnaW5PZmZzZXQoTGF5b3V0U2l6ZSBvZmZzZXQpIHsgQVNTRVJU
KCFpc0luUGxhY2VkVHJlZSgpKTsgbV9tYXJnaW5PZmZzZXQgPSBvZmZzZXQ7IH0KKyAgICB2b2lk
IHNldFgoTGF5b3V0VW5pdCB4KSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgQVNTRVJUKCFpc0lu
UGxhY2VkVHJlZSgpKTsKKyNlbmRpZgorICAgICAgbV9mcmFtZVJlY3Quc2V0WCh4KTsKKyAgICB9
CisgICAgdm9pZCBzZXRZKExheW91dFVuaXQgeSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgIEFT
U0VSVCghaXNJblBsYWNlZFRyZWUoKSk7CisjZW5kaWYKKyAgICAgIG1fZnJhbWVSZWN0LnNldFko
eSk7CisgICAgfQorICAgIHZvaWQgc2V0V2lkdGgoTGF5b3V0VW5pdCB3aWR0aCkgeworI2lmbmRl
ZiBOREVCVUcKKyAgICAgIEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7CisjZW5kaWYKKyAgICAg
IG1fZnJhbWVSZWN0LnNldFdpZHRoKHdpZHRoKTsKKyAgICB9CisgICAgdm9pZCBzZXRIZWlnaHQo
TGF5b3V0VW5pdCBoZWlnaHQpIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICBBU1NFUlQoIWlzSW5Q
bGFjZWRUcmVlKCkpOworI2VuZGlmCisgICAgICBtX2ZyYW1lUmVjdC5zZXRIZWlnaHQoaGVpZ2h0
KTsKKyAgICB9CisgICAgdm9pZCBzZXRNYXJnaW5PZmZzZXQoTGF5b3V0U2l6ZSBvZmZzZXQpIHsK
KyNpZm5kZWYgTkRFQlVHCisgICAgICBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOworI2VuZGlm
CisgICAgICBtX21hcmdpbk9mZnNldCA9IG9mZnNldDsKKyAgICB9CiAKICAgICBjb25zdCBMYXlv
dXRSZWN0JiBmcmFtZVJlY3QoKSBjb25zdCB7IEFTU0VSVChpc1BsYWNlZCgpKTsgcmV0dXJuIG1f
ZnJhbWVSZWN0OyB9Ci0gICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZnJh
bWVSZWN0KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1fZnJhbWVSZWN0ID0gZnJhbWVS
ZWN0OyB9CisgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0
KSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsKKyNl
bmRpZgorIG1fZnJhbWVSZWN0ID0gZnJhbWVSZWN0OworICAgIH0KIAogICAgIExheW91dFVuaXQg
cGFnaW5hdGlvblN0cnV0KCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0aW9uU3RydXQ7IH0KICAg
ICB2b2lkIHNldFBhZ2luYXRpb25TdHJ1dChMYXlvdXRVbml0IHN0cnV0KSB7IG1fcGFnaW5hdGlv
blN0cnV0ID0gc3RydXQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IGRmOWVmZDMxYy4uMzU0YTU3YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKQEAgLTI5MTksNyArMjkxOSw5IEBAIExheW91dFVuaXQgUmVuZGVyQmxv
Y2s6Om9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25zdAogICAgICAgICByZXR1
cm4gZnJhZ21lbnRlZEZsb3ctPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdEZyYWdtZW50KHRo
aXMpOwogCiAgICAgaWYgKGxheW91dFN0YXRlKSB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICBB
U1NFUlQobGF5b3V0U3RhdGUtPnJlbmRlcmVyKCkgPT0gdGhpcyk7CisjZW5kaWYKIAogICAgICAg
ICBMYXlvdXRTaXplIG9mZnNldERlbHRhID0gbGF5b3V0U3RhdGUtPmxheW91dE9mZnNldCgpIC0g
bGF5b3V0U3RhdGUtPnBhZ2VPZmZzZXQoKTsKICAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBvZmZzZXREZWx0YS5oZWlnaHQoKSA6IG9mZnNldERlbHRhLndpZHRoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMjc4MzFm
YzVlLi5jMzEwNzJiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAKQEAgLTk3NSw3ICs5NzUsOSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZURlc3Ry
b3llZCgpCiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRM
YXlvdXQoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogeworI2lmbmRlZiBOREVCVUcKICAg
ICBBU1NFUlQoIWlzU2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oKSk7CisjZW5kaWYKICAgICBpZiAo
bmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNl
dE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0Qml0KHRydWUpOwpAQCAtOTk5LDcgKzEwMDEs
OSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmNsZWFyQ2hpbGROZWVkc0xheW91dCgpCiAKIHZvaWQg
UmVuZGVyRWxlbWVudDo6c2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpCiB7Cisj
aWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91dEZvcmJpZGRlbigpKTsK
KyNlbmRpZgogICAgIGlmIChuZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBzZXROZWVkc1NpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0Qml0KHRy
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggNTcyYTVh
NDM3Li43MjFlNjQ5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aApAQCAtMzY1LDcgKzM2NSw5IEBAIGlubGluZSB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldEFuY2Vz
dG9yTGluZUJveERpcnR5KGJvb2wgZikKIAogaW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0
Q2hpbGROZWVkc0xheW91dChNYXJraW5nQmVoYXZpb3IgbWFya1BhcmVudHMpCiB7CisjaWZuZGVm
IE5ERUJVRwogICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91dEZvcmJpZGRlbigpKTsKKyNlbmRp
ZgogICAgIGlmIChub3JtYWxDaGlsZE5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBzZXROb3JtYWxDaGlsZE5lZWRzTGF5b3V0Qml0KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDFjM2Y2MjZlNi4uYzJiMDJiOTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xNDUsNyArMTQ1LDkgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpjb21wdXRlVHJhY2tTaXplc0ZvckRlZmluaXRlU2l6ZShHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWMKICAgICBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLnNldHVwKGRpcmVj
dGlvbiwgbnVtVHJhY2tzKGRpcmVjdGlvbiwgbV9ncmlkKSwgVHJhY2tTaXppbmcsIGF2YWlsYWJs
ZVNwYWNlLCBmcmVlU3BhY2UpOwogICAgIG1fdHJhY2tTaXppbmdBbGdvcml0aG0ucnVuKCk7CiAK
KyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fdHJhY2tTaXppbmdBbGdvcml0aG0udHJhY2tz
QXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgUmVuZGVy
R3JpZDo6cmVwZWF0VHJhY2tzU2l6aW5nSWZOZWVkZWQoTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFj
ZUZvckNvbHVtbnMsIExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2VGb3JSb3dzKQpAQCAtNDQzLDcg
KzQ0NSw5IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVRyYWNrU2l6ZXNGb3JJbmRlZmluaXRl
U2l6ZShHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsCiAgICAgaWYgKG1heEludHJpbnNpY1Np
emUpCiAgICAgICAgICptYXhJbnRyaW5zaWNTaXplID0gYWxnb3JpdGhtLm1heENvbnRlbnRTaXpl
KCkgKyB0b3RhbEd1dHRlcnNTaXplOwogCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChhbGdv
cml0aG0udHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkpOworI2VuZGlmCiB9CiAK
IHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxh
YmxlU2l6ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IGQ1YjkxYjI2OC4uYTJjMDNmZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTU2NDIsOSArNTY0MiwxMiBAQCBSZWY8Q2xpcFJlY3RzPiBSZW5kZXJM
YXllcjo6dXBkYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0Nv
bgogICAgIEFTU0VSVChjbGlwUmVjdHNUeXBlIDwgTnVtQ2FjaGVkQ2xpcFJlY3RzVHlwZXMpOwog
ICAgIGlmIChtX2NsaXBSZWN0c0NhY2hlKSB7CiAgICAgICAgIGlmIChhdXRvKiBjbGlwUmVjdHMg
PSBtX2NsaXBSZWN0c0NhY2hlLT5nZXRDbGlwUmVjdHMoY2xpcFJlY3RzVHlwZSwgY2xpcFJlY3Rz
Q29udGV4dC5yZXNwZWN0T3ZlcmZsb3dDbGlwKSkgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAg
ICAgIEFTU0VSVChjbGlwUmVjdHNDb250ZXh0LnJvb3RMYXllciA9PSBtX2NsaXBSZWN0c0NhY2hl
LT5tX2NsaXBSZWN0c1Jvb3RbY2xpcFJlY3RzVHlwZV0pOwogICAgICAgICAgICAgQVNTRVJUKG1f
Y2xpcFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID09IGNs
aXBSZWN0c0NvbnRleHQub3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kpOwotICAgICAgICAK
KworI2VuZGlmCisKICNpZmRlZiBDSEVDS19DQUNIRURfQ0xJUF9SRUNUUwogICAgICAgICAgICAg
Ly8gVGhpcyBjb2RlIGlzIHVzZWZ1bCB0byBjaGVjayBjYWNoZWQgY2xpcCByZWN0cywgYnV0IGlz
IHRvbyBleHBlbnNpdmUgdG8gbGVhdmUgZW5hYmxlZCBpbiBkZWJ1ZyBidWlsZHMgYnkgZGVmYXVs
dC4KICAgICAgICAgICAgIENsaXBSZWN0c0NvbnRleHQgdGVtcENvbnRleHQoY2xpcFJlY3RzQ29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDk4
Y2RkOGJlZi4uMzg1Y2ZiZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtNTEzLDcgKzUxMyw5IEBAIHN0YXRpYyB2b2lkIHNjaGVkdWxlUmVsYXlvdXRG
b3JTdWJ0cmVlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogdm9pZCBSZW5kZXJPYmplY3Q6Om1h
cmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KFNjaGVkdWxlUmVsYXlvdXQgc2NoZWR1bGVSZWxh
eW91dCwgUmVuZGVyRWxlbWVudCogbmV3Um9vdCkKIHsKICAgICBBU1NFUlQoc2NoZWR1bGVSZWxh
eW91dCA9PSBTY2hlZHVsZVJlbGF5b3V0OjpObyB8fCAhbmV3Um9vdCk7CisjaWZuZGVmIE5ERUJV
RwogICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91dEZvcmJpZGRlbigpKTsKKyNlbmRpZgogCiAg
ICAgYXV0byBhbmNlc3RvciA9IGNvbnRhaW5lcigpOwogCkBAIC01NTEsNyArNTUzLDkgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6Om1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KFNjaGVkdWxlUmVs
YXlvdXQgc2NoZWR1bGVSZWxheW8KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBhbmNlc3Rvci0+c2V0Tm9ybWFsQ2hpbGROZWVkc0xheW91dEJpdCh0cnVlKTsKICAgICAgICAg
fQorI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKCFhbmNlc3Rvci0+aXNTZXROZWVkc0xh
eW91dEZvcmJpZGRlbigpKTsKKyNlbmRpZgogCiAgICAgICAgIGlmIChhbmNlc3RvciA9PSBuZXdS
b290KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCmluZGV4IGY1ZDY5ZTkzYi4uN2MxMWU4NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCkBAIC0xMDQ5LDcgKzEwNDksOSBAQCBpbmxpbmUgYm9vbCBSZW5k
ZXJPYmplY3Q6OmlzQmVmb3JlT3JBZnRlckNvbnRlbnQoKSBjb25zdAogCiBpbmxpbmUgdm9pZCBS
ZW5kZXJPYmplY3Q6OnNldE5lZWRzTGF5b3V0KE1hcmtpbmdCZWhhdmlvciBtYXJrUGFyZW50cykK
IHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFpc1NldE5lZWRzTGF5b3V0Rm9yYmlkZGVu
KCkpOworI2VuZGlmCiAgICAgaWYgKG1fYml0ZmllbGRzLm5lZWRzTGF5b3V0KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2JpdGZpZWxkcy5zZXROZWVkc0xheW91dCh0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IGYzMTEzYWZmOC4uYjdjYmY0MGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTE1NjUsNyAr
MTU2NSw5IEBAIFJlbmRlclB0cjxSZW5kZXJUYWJsZT4gUmVuZGVyVGFibGU6OmNyZWF0ZUFub255
bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kCiAKIGNvbnN0IEJvcmRlclZhbHVlJiBS
ZW5kZXJUYWJsZTo6dGFibGVTdGFydEJvcmRlckFkam9pbmluZ0NlbGwoY29uc3QgUmVuZGVyVGFi
bGVDZWxsJiBjZWxsKSBjb25zdAogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoY2VsbC5p
c0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOworI2VuZGlmCiAgICAgaWYgKGlzRGlyZWN0aW9uU2Ft
ZSh0aGlzLCBjZWxsLnJvdygpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCkuYm9yZGVyU3RhcnQo
KTsKIApAQCAtMTU3NCw3ICsxNTc2LDkgQEAgY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxl
Ojp0YWJsZVN0YXJ0Qm9yZGVyQWRqb2luaW5nQ2VsbChjb25zdCBSZW5kZXJUYWJsZUMKIAogY29u
c3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlOjp0YWJsZUVuZEJvcmRlckFkam9pbmluZ0NlbGwo
Y29uc3QgUmVuZGVyVGFibGVDZWxsJiBjZWxsKSBjb25zdAogeworI2lmbmRlZiBOREVCVUcKICAg
ICBBU1NFUlQoY2VsbC5pc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOworI2VuZGlmCiAgICAgaWYg
KGlzRGlyZWN0aW9uU2FtZSh0aGlzLCBjZWxsLnJvdygpKSkKICAgICAgICAgcmV0dXJuIHN0eWxl
KCkuYm9yZGVyRW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuaAppbmRleCAyNWFiNjM1MWYuLmU2YmRlMjM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMzA2LDcgKzMwNiw5IEBAIGlubGluZSBib29sIFJl
bmRlclRhYmxlQ2VsbDo6aXNCYXNlbGluZUFsaWduZWQoKSBjb25zdAogCiBpbmxpbmUgY29uc3Qg
Qm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyQWRqb2luaW5nVGFibGVTdGFydCgp
IGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChpc0ZpcnN0T3JMYXN0Q2VsbElu
Um93KCkpOworI2VuZGlmCiAgICAgaWYgKGlzRGlyZWN0aW9uU2FtZShzZWN0aW9uKCksIHRhYmxl
KCkpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS5ib3JkZXJTdGFydCgpOwogCkBAIC0zMTUsNyAr
MzE3LDkgQEAgaW5saW5lIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZUNlbGw6OmJvcmRl
ckFkam9pbmluZ1RhYmxlU3RhcnQoKSBjb25zdAogCiBpbmxpbmUgY29uc3QgQm9yZGVyVmFsdWUm
IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyQWRqb2luaW5nVGFibGVFbmQoKSBjb25zdAogeworI2lm
bmRlZiBOREVCVUcKICAgICBBU1NFUlQoaXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsKKyNlbmRp
ZgogICAgIGlmIChpc0RpcmVjdGlvblNhbWUoc2VjdGlvbigpLCB0YWJsZSgpKSkKICAgICAgICAg
cmV0dXJuIHN0eWxlKCkuYm9yZGVyRW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuY3BwCmluZGV4IDAyZDAzZWFhZi4uNjYwMmUyMTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKQEAgLTk5LDE0ICs5OSwxOCBA
QCB2b2lkIFJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogCiBjb25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFi
bGVSb3c6OmJvcmRlckFkam9pbmluZ1N0YXJ0Q2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwmIGNl
bGwpIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwgY2Vs
bC5pc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOworI2VuZGlmCiAgICAgLy8gRklYTUU6IGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzc5MjcyIC0gQWRkIHN1cHBvcnQgZm9yIG1peGVkIGRpcmVjdGlvbmFs
aXR5IGF0IHRoZSBjZWxsIGxldmVsLgogICAgIHJldHVybiBzdHlsZSgpLmJvcmRlclN0YXJ0KCk7
CiB9CiAKIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRqb2luaW5n
RW5kQ2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwmIGNlbGwpIGNvbnN0CiB7CisjaWZuZGVmIE5E
RUJVRwogICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwgY2VsbC5pc0ZpcnN0T3JMYXN0Q2VsbEluUm93
KCkpOworI2VuZGlmCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzc5MjcyIC0g
QWRkIHN1cHBvcnQgZm9yIG1peGVkIGRpcmVjdGlvbmFsaXR5IGF0IHRoZSBjZWxsIGxldmVsLgog
ICAgIHJldHVybiBzdHlsZSgpLmJvcmRlckVuZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBiYmM5ZDBmMzYuLjZhMTdiYTI4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKQEAgLTY3NCw3ICs2NzQsOSBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6Y29tcHV0ZU92
ZXJmbG93RnJvbUNlbGxzKHVuc2lnbmVkIHRvdGFsUm93cywgdW5zaWduZWQgbgogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQorI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoaGFzT3Zl
cmZsb3dpbmdDZWxsID09IHRoaXMtPmhhc092ZXJmbG93aW5nQ2VsbCgpKTsKKyNlbmRpZgogfQog
CiBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQmVmb3JlKCkg
Y29uc3QKQEAgLTEzOTMsMTMgKzEzOTUsMTcgQEAgdW5zaWduZWQgUmVuZGVyVGFibGVTZWN0aW9u
OjpudW1Db2x1bW5zKCkgY29uc3QKIAogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlU2Vj
dGlvbjo6Ym9yZGVyQWRqb2luaW5nU3RhcnRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2Vs
bCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGNlbGwuaXNGaXJzdE9yTGFz
dENlbGxJblJvdygpKTsKKyNlbmRpZgogICAgIHJldHVybiBpc0RpcmVjdGlvblNhbWUodGhpcywg
JmNlbGwpID8gc3R5bGUoKS5ib3JkZXJTdGFydCgpIDogc3R5bGUoKS5ib3JkZXJFbmQoKTsKIH0K
IAogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlU2VjdGlvbjo6Ym9yZGVyQWRqb2luaW5n
RW5kQ2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwmIGNlbGwpIGNvbnN0CiB7CisjaWZuZGVmIE5E
RUJVRwogICAgIEFTU0VSVChjZWxsLmlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7CisjZW5kaWYK
ICAgICByZXR1cm4gaXNEaXJlY3Rpb25TYW1lKHRoaXMsICZjZWxsKSA/IHN0eWxlKCkuYm9yZGVy
RW5kKCkgOiBzdHlsZSgpLmJvcmRlclN0YXJ0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAppbmRleCAwNDM5
NWUzYzAuLjY4YTliMGFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcApAQCAtNDYsOCArNDYsMTAgQEAgdm9pZCBT
VkdBdHRyaWJ1dGVBbmltYXRvcjo6aW52YWxpZGF0ZVN0eWxlKFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQpCiB2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjphcHBseUFuaW1hdGVkU3R5bGVQcm9w
ZXJ0eUNoYW5nZShTVkdFbGVtZW50KiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIEFTU0VSVChlbGVtZW50KTsKKyNpZm5kZWYgTkRFQlVHCiAg
ICAgQVNTRVJUKCFlbGVtZW50LT5tX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIEFTU0VSVChpZCAh
PSBDU1NQcm9wZXJ0eUludmFsaWQpOworI2VuZGlmCiAgICAgCiAgICAgaWYgKCFlbGVtZW50LT5l
bnN1cmVBbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMoKS5zZXRQcm9wZXJ0eShpZCwgdmFsdWUs
IGZhbHNlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzYsOCArNzgsMTAgQEAgdm9pZCBTVkdBdHRy
aWJ1dGVBbmltYXRvcjo6YXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UoU1ZHRWxlbWVu
dCogdGFyZ2V0RWwKIHZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OnJlbW92ZUFuaW1hdGVkU3R5
bGVQcm9wZXJ0eShTVkdFbGVtZW50KiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIGlkKQogewogICAg
IEFTU0VSVChlbGVtZW50KTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFlbGVtZW50LT5t
X2RlbGV0aW9uSGFzQmVndW4pOwogICAgIEFTU0VSVChpZCAhPSBDU1NQcm9wZXJ0eUludmFsaWQp
OworI2VuZGlmCiAKICAgICBlbGVtZW50LT5lbnN1cmVBbmltYXRlZFNNSUxTdHlsZVByb3BlcnRp
ZXMoKS5yZW1vdmVQcm9wZXJ0eShpZCk7CiAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlKCk7
CkBAIC0xMDQsNyArMTA4LDkgQEAgdm9pZCBTVkdBdHRyaWJ1dGVBbmltYXRvcjo6cmVtb3ZlQW5p
bWF0ZWRTdHlsZVByb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQKICAgICAKIHZvaWQg
U1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRQcm9wZXJ0eUNoYW5nZShTVkdFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogeworI2lm
bmRlZiBOREVCVUcKICAgICBBU1NFUlQoIWVsZW1lbnQtPm1fZGVsZXRpb25IYXNCZWd1bik7Cisj
ZW5kaWYKICAgICBlbGVtZW50LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZU5hbWUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCmluZGV4IGMzMDk2
YzAyZS4uM2ZmMGQ1ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJh
Y2suaApAQCAtOTQsMTMgKzk0LDE3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkdlbmVyaWND
YWxsYmFjaygpCiAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKG1fb3JpZ2lu
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisjZW5kaWYKICAgICAgICAgQVNT
RVJUKCFtX2NhbGxiYWNrKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShULi4uIHJldHVyblZhbHVlKQogICAgIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIEFTU0VSVChtX29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwor
I2VuZGlmCiAKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTE2LDcgKzEyMCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZShFcnJvciBl
cnJvciA9IEVycm9yOjpVbmtub3duKSBmaW5hbAogICAgIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIEFTU0VSVChtX29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwor
I2VuZGlmCiAKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZTAxZTgyY2MzLi4xYTJlODFiNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNzA1LDcgKzcwNSw5IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUo
T3B0aW9uU2V0PFdlYkNvcmU6OkxhCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGFyZSBkaXNwYXRjaGVkIG9u
IHRoZSBtYWluIGZyYW1lIGJ5IHRoZSB0aW1lIHRoZSBmaXJzdCBsYXlvdXQgaGFwcGVucy4KKyNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgIEFTU0VSVCghd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKSB8
fCBtX2ZyYW1lICE9IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgfHwgbV9mcmFtZS0+
Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmRpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hh
bmdlZCgpKTsKKyNlbmRpZgogI2VuZGlmCiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454546</attachid>
            <date>2022-03-12 21:01:53 -0800</date>
            <delta_ts>2022-03-12 21:01:53 -0800</delta_ts>
            <desc>updated patch 2.35.90</desc>
            <filename>0001-fix-NDEBUG-conditionals-for-a-Release-build-with-ass.patch</filename>
            <type>text/plain</type>
            <size>38971</size>
            <attacher>enometh</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVm
ZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5o
CmluZGV4IDlhMzZkMTRmMy4uMDFiMjY5Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKQEAgLTQwNiw5ICs0MDYsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgICAgIH5Mb2NhbFdyaXRlcigpCiAgICAgICAgICAgICB7
CisjaWYgIWRlZmluZWQoTkRFQlVHKQogICAgICAgICAgICAgICAgIEFTU0VSVChtX2luZGV4IC0g
bV9pbml0aWFsSW5kZXggPD0gbV9yZXF1aXJlZFNwYWNlKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQobV9idWZmZXIubV9pbmRleCA9PSBtX2luaXRpYWxJbmRleCk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fc3RvcmFnZUJ1ZmZlciA9PSBtX2J1ZmZlci5tX3N0b3JhZ2UuYnVmZmVyKCkpOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgbV9idWZmZXIubV9pbmRleCA9IG1faW5kZXg7CiAgICAg
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAzMGNjNGU0YmMuLmU0M2YzYzUzOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaApAQCAtNDI1Miw2ICs0MjUyLDM5IEBAIHByaXZhdGU6CiAgICAg
fQogI2VuZGlmCiAKKyNpZiBDUFUoWDg2KQorI2lmIE9TKE1BQ19PU19YKQorCisgICAgLy8gQWxs
IFg4NiBNYWNzIGFyZSBndWFyYW50ZWVkIHRvIHN1cHBvcnQgYXQgbGVhc3QgU1NFMiwKKyAgICBz
dGF0aWMgYm9vbCBpc1NTRTJQcmVzZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworI2Vsc2UgLy8gT1MoTUFDX09TX1gpCisgICAgc3RhdGljIGJvb2wgaXNTU0UyUHJl
c2VudCgpCisgICAgeworICAgICAgICBpZiAoc19zc2UyQ2hlY2tTdGF0ZSA9PSBDUFVJRENoZWNr
U3RhdGU6Ok5vdENoZWNrZWQpCisgICAgICAgICAgICBjb2xsZWN0Q1BVRmVhdHVyZXMoKTsKKyAg
ICAgICAgcmV0dXJuIHNfc3NlMkNoZWNrU3RhdGUgPT0gQ1BVSURDaGVja1N0YXRlOjpTZXQ7Cisg
ICAgfQorCisjZW5kaWYgLy8gT1MoTUFDX09TX1gpCisjZWxpZiAhZGVmaW5lZChOREVCVUcpIC8v
IENQVShYODYpCisjd2FybiB3cm9uZyBhc3N1bXB0aW9uCisvLyBOREVCVUcgd2l0aCBESVNBQkxF
X0FTU0VSVFNfREVGQVVMVD0wIGhpdCBhbGwgQVNTRVJUUyB0aGF0IGFyZW4ndAorLy8gd2l0aGlu
IGFuIGlmbmRlZiBOREVCVUcgYmxvY2ssIHN1Y2ggYXMgaW4gdGhpcyBmaWxlCisjZWxzZQorCisg
ICAgLy8gT24geDg2LTY0IHdlIHNob3VsZCBuZXZlciBiZSBjaGVja2luZyBmb3IgU1NFMiBpbiBh
IG5vbi1kZWJ1ZyBidWlsZCwKKyAgICAvLyBidXQgbm9uIGRlYnVnIGFkZCB0aGlzIG1ldGhvZCB0
byBrZWVwIHRoZSBhc3NlcnRzIGFib3ZlIGhhcHB5LgorICAgIHN0YXRpYyBib29sIGlzU1NFMlBy
ZXNlbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisjZW5kaWYKKwog
ICAgIHVzaW5nIENQVUlEID0gc3RkOjphcnJheTx1bnNpZ25lZCwgND47CiAgICAgc3RhdGljIENQ
VUlEIGdldENQVUlEKHVuc2lnbmVkIGxldmVsKTsKICAgICBzdGF0aWMgQ1BVSUQgZ2V0Q1BVSURF
eCh1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVySUQuaAppbmRleCA3M2I0MzIwNjMuLmIyMDRlZmEz
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3Rl
cklELmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklE
LmgKQEAgLTg0LDcgKzg0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgaW50IGluZGV4
KCkgY29uc3QKICAgICAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIEFTU0VSVCht
X2RpZFNldEluZGV4KTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lz
dGVyLm9mZnNldCgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAppbmRleCA5ODc2ZWY2ZWYuLmI4Y2RiNDNl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcApAQCAtNDM0LDggKzQzNCwxMCBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9w
Y29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNzLCBWTSogdm0sCiAK
ICAgICAgICAgT0ZGTElORV9BU01fR0xVRV9MQUJFTChsbGludF9yZXR1cm5fdG9faG9zdCkKICAg
ICAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIEFTU0VSVChzdGFydFNQID09IHNw
LnZwKCkpOwogICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Q0ZSID09IGNmci5jYWxsRnJhbWUoKSk7
CisjZW5kaWYKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUodDEuaSgpLCB0MC5pKCkpOyAvLyByZXR1cm5pbmcgSlNWYWx1ZSh0YWcsIHBheWxvYWQpOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0
YWJsZS5jcHAKaW5kZXggNjRmOWQxZmQ2Li41MTc2YjQzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCkBAIC03NSw3ICs3NSw5
IEBAIE5hdGl2ZUV4ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUoVk0mIHZtLCBUYWdnZWROYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbiwgVGFnZ2VkCiAKIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBO
YXRpdmVFeGVjdXRhYmxlOjpzaWduYXR1cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KSBjb25zdAogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoaGFzSklUQ29kZUZvcihraW5k
KSk7CisjZW5kaWYKICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+c2lnbmF0
dXJlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAppbmRleCBm
NWM1OGZjZjkuLmFkMmM1MTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuaApAQCAtMTM0LDcgKzEzNCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVySW5z
dGFuY2UoSW5zdGFuY2UqKTsKIAotICAgIHZvaWQgY2hlY2soKSB7ICBBU1NFUlQoIWRlbGV0aW9u
SGFzQmVndW4oKSk7IH0KKyAgICB2b2lkIGNoZWNrKCkgeworI2lmbmRlZiBOREVCVUcKKyAgQVNT
RVJUKCFkZWxldGlvbkhhc0JlZ3VuKCkpOworI2VuZGlmCisgICAgfQogCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkhhbmRsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNZW1vcnks
IG1faGFuZGxlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNWNjYjA5NDIwLi42ODk4NjZlODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5jcHAKQEAgLTI1OCw3ICsyNTgsOSBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwog
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc0xvY2sgfTsKICAgICAg
ICAgZm9yIChhdXRvKiBwcm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERhdGFiYXNlcykgewog
ICAgICAgICAgICAgaWYgKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5uYW1lKCkgPT0gbmFt
ZSAmJiBwcm9wb3NlZERhdGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2luKSkgeworI2lmbmRl
ZiBOREVCVUcKICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRldGFp
bHMoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkpOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCBlMDcwMzNhYzUuLmNi
YzgxNTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTE1MiwxMyArMTUyLDE3IEBAIHZvaWQgRGF0YWJhc2VU
aHJlYWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlJiBkYXRhYmFzZSkKIAogdm9pZCBE
YXRhYmFzZVRocmVhZDo6c2NoZWR1bGVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+
JiYgdGFzaykKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCF0YXNrLT5oYXNTeW5jaHJv
bml6ZXIoKSB8fCB0YXNrLT5oYXNDaGVja2VkRm9yVGVybWluYXRpb24oKSk7CisjZW5kaWYKICAg
ICBtX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBEYXRhYmFzZVRocmVh
ZDo6c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+JiYg
dGFzaykKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCF0YXNrLT5oYXNTeW5jaHJvbml6
ZXIoKSB8fCB0YXNrLT5oYXNDaGVja2VkRm9yVGVybWluYXRpb24oKSk7CisjZW5kaWYKICAgICBt
X3F1ZXVlLnByZXBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDgyNzcwYTdm
Mi4uZjg1ZjgzYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTYyNSw3ICs2MjUsOSBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKEFYQ29yZU9iamVjdCogbmV3Q2hpbGQsIHVuc2lnbmVk
IGluZGV4LCBEZQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRhYmxlIGNvbXBvbmVudCBjaGls
ZC1wYXJlbnQgcmVsYXRpb25zaGlwcyBvZnRlbiBkb24ndCBsaW5lIHVwIHByb3Blcmx5LCBoZW5j
ZSB0aGUgbmVlZCBmb3IgbWV0aG9kcwogICAgICAgICAvLyBsaWtlIHBhcmVudFRhYmxlKCkgYW5k
IHBhcmVudFJvdygpLiBFeGNsdWRlIHRoZW0gZnJvbSB0aGlzIEFTU0VSVC4KKyNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIEFTU0VSVCgoIWlzVGFibGVDb21wb25lbnQoKmNoaWxkKSAmJiAhaXNUYWJs
ZUNvbXBvbmVudCgqdGhpcykpID8gY2hpbGQtPnBhcmVudE9iamVjdCgpID09IHRoaXMgOiB0cnVl
KTsKKyNlbmRpZgogICAgICAgICBtX2NoaWxkcmVuLmluc2VydChpbmRleCwgY2hpbGQpOwogICAg
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJh
Y2tEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCmlu
ZGV4IGI0YmFmYzQyNC4uY2FhM2JkMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTUzLDggKzUzLDEwIEBAIHByb3RlY3RlZDoKICAgICAKICAg
ICB+SlNDYWxsYmFja0RhdGEoKQogICAgIHsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNp
Zm5kZWYgTkRFQlVHCisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgQVNTRVJUKG1fdGhyZWFk
LnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisjZW5kaWYKICNlbmRpZgogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXgg
MzY5OTk3ZTBiLi40M2M1Y2U0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmNwcApAQCAtMTg0LDcgKzE4NCw5IEBAIHZvaWQgYWRkQ2hpbGROb2Rl
c1RvRGVsZXRpb25RdWV1ZShOb2RlKiYgaGVhZCwgTm9kZSomIHRhaWwsIENvbnRhaW5lck5vZGUm
IGNvbnRhCiAgICAgLy8gV2UgaGF2ZSB0byB0ZWxsIGFsbCBjaGlsZHJlbiB0aGF0IHRoZWlyIHBh
cmVudCBoYXMgZGllZC4KICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IG51bGxwdHI7CiAgICAgZm9y
IChSZWZQdHI8Tm9kZT4gbm9kZSA9IGNvbnRhaW5lci5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUg
PSBuZXh0KSB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICBBU1NFUlQoIW5vZGUtPm1fZGVsZXRp
b25IYXNCZWd1bik7CisjZW5kaWYKIAogICAgICAgICBuZXh0ID0gbm9kZS0+bmV4dFNpYmxpbmco
KTsKICAgICAgICAgbm9kZS0+c2V0TmV4dFNpYmxpbmcobnVsbHB0cik7CkBAIC0yMjcsNyArMjI5
LDkgQEAgdm9pZCByZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5Db250YWluZXIoQ29udGFpbmVyTm9k
ZSYgY29udGFpbmVyKQogICAgIE5vZGUqIG5vZGU7CiAgICAgTm9kZSogbmV4dDsKICAgICB3aGls
ZSAoKG5vZGUgPSBoZWFkKSkgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKG5vZGUt
Pm1fZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYKIAogICAgICAgICBuZXh0ID0gbm9kZS0+bmV4
dFNpYmxpbmcoKTsKICAgICAgICAgbm9kZS0+c2V0TmV4dFNpYmxpbmcobnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAxNjE0ODJiMzIuLmI1MGRjYThlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC03NDAsOCArNzQwLDEwIEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQog
CiB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiB7CisjaWZuZGVmIE5ERUJVRwogICAg
IFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29w
ZTsKICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYKICAgICBpZiAobV9y
ZWZlcmVuY2luZ05vZGVDb3VudCkgewogICAgICAgICAvLyBOb2RlOjpyZW1vdmVkTGFzdFJlZiBk
b2Vzbid0IHNldCByZWZDb3VudCgpIHRvIHplcm8gYmVjYXVzZSBpdCdzIG5vdCBvYnNlcnZhYmxl
LgogICAgICAgICAvLyBCdXQgd2UgbmVlZCB0byByZW1lbWJlciB0aGF0IG91ciByZWZDb3VudCBy
ZWFjaGVkIHplcm8gaW4gc3Vic2VxdWVudCBjYWxscyB0byBkZWNyZW1lbnRSZWZlcmVuY2luZ05v
ZGVDb3VudCgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjMWJlY2NkMjEuLmIyODhiZjRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM2NiwxMyArMzY2LDE3IEBAIHB1YmxpYzoKICAgICAv
LyBwb2ludGVyIHdpdGhvdXQgaW50cm9kdWNpbmcgcmVmZXJlbmNlIGN5Y2xlcy4KICAgICB2b2lk
IGluY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCkKICAgICB7CisjaWZuZGVmIE5ERUJVRwog
ICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisjZW5kaWYKICAgICAgICAgKytt
X3JlZmVyZW5jaW5nTm9kZUNvdW50OwogICAgIH0KIAogICAgIHZvaWQgZGVjcmVtZW50UmVmZXJl
bmNpbmdOb2RlQ291bnQoKQogICAgIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIEFTU0VSVCgh
bV9kZWxldGlvbkhhc0JlZ3VuIHx8ICFtX3JlZmVyZW5jaW5nTm9kZUNvdW50KTsKKyNlbmRpZgog
ICAgICAgICAtLW1fcmVmZXJlbmNpbmdOb2RlQ291bnQ7CiAgICAgICAgIGlmICghbV9yZWZlcmVu
Y2luZ05vZGVDb3VudCAmJiAhcmVmQ291bnQoKSkgewogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKaW5kZXggYTViYjZmNjYzLi5kOTdkM2Q1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTM0OSw3ICszNDksOSBAQCBOb2RlOjp+Tm9kZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBBU1NFUlQobV9yZWZDb3VudEFuZFBhcmVudEJpdCA9PSBzX3JlZkNvdW50SW5j
cmVtZW50KTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7
CisjZW5kaWYKICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKIAogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lET01Ob2RlKCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CmluZGV4IDljZTg4MWZjMS4uY2ZmZjQxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTc4NSwxOSArNzg1
LDIzIEBAIGlubGluZSB2b2lkIGFkb3B0ZWQoTm9kZSogbm9kZSkKIEFMV0FZU19JTkxJTkUgdm9p
ZCBOb2RlOjpyZWYoKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjaWZu
ZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICBBU1NFUlQo
IW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1Jl
cXVpcmVkKTsKKyNlbmRpZgogICAgIG1fcmVmQ291bnRBbmRQYXJlbnRCaXQgKz0gc19yZWZDb3Vu
dEluY3JlbWVudDsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OmRlcmVmKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmbmRlZiBOREVCVUcKICAgICBBU1NF
UlQocmVmQ291bnQoKSk7CiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIEFT
U0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgIEFTU0VSVCghbV9hZG9wdGlv
bklzUmVxdWlyZWQpOworI2VuZGlmCiAgICAgYXV0byB1cGRhdGVkUmVmQ291bnQgPSBtX3JlZkNv
dW50QW5kUGFyZW50Qml0IC0gc19yZWZDb3VudEluY3JlbWVudDsKICAgICBpZiAoIXVwZGF0ZWRS
ZWZDb3VudCkgewogICAgICAgICAvLyBEb24ndCB1cGRhdGUgbV9yZWZDb3VudEFuZFBhcmVudEJp
dCB0byBhdm9pZCBkb3VibGUgZGVzdHJ1Y3Rpb24gdGhyb3VnaCB1c2Ugb2YgUmVmPFQ+L1JlZlB0
cjxUPi4KQEAgLTgxMyw4ICs4MTcsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OmRlcmVm
KCkgY29uc3QKIAogQUxXQVlTX0lOTElORSBib29sIE5vZGU6Omhhc09uZVJlZigpIGNvbnN0CiB7
CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICBB
U1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyNlbmRpZgogICAgIHJldHVybiBy
ZWZDb3VudCgpID09IDE7CiB9CiAKQEAgLTg5MSw3ICs4OTcsOSBAQCBpbmxpbmUgdm9pZCBOb2Rl
OjpzZXRIYXNWYWxpZFN0eWxlKCkKIGlubGluZSB2b2lkIE5vZGU6OnNldFRyZWVTY29wZVJlY3Vy
c2l2ZWx5KFRyZWVTY29wZSYgbmV3VHJlZVNjb3BlKQogewogICAgIEFTU0VSVCghaXNEb2N1bWVu
dE5vZGUoKSk7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3Vu
KTsKKyNlbmRpZgogICAgIGlmIChtX3RyZWVTY29wZSAhPSAmbmV3VHJlZVNjb3BlKQogICAgICAg
ICBtb3ZlVHJlZVRvTmV3U2NvcGUoKnRoaXMsICptX3RyZWVTY29wZSwgbmV3VHJlZVNjb3BlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCmluZGV4IGEzNTQ5ZWYyOC4uNmY1
OTAyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAgLTk2LDcgKzk2
LDkgQEAgaW5saW5lIGJvb2wgU2xvdEFzc2lnbm1lbnQ6Omhhc0Fzc2lnbmVkTm9kZXMoU2hhZG93
Um9vdCYgc2hhZG93Um9vdCwgU2xvdCYgc2xvdCkKIAogdm9pZCBTbG90QXNzaWdubWVudDo6cmVu
YW1lU2xvdEVsZW1lbnQoSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgY29uc3QgQXRvbVN0
cmluZyYgb2xkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3TmFtZSwgU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fc2xvdEVsZW1lbnRzRm9y
Q29uc2lzdGVuY3lDaGVjay5jb250YWlucygmc2xvdEVsZW1lbnQpKTsKKyNlbmRpZgogCiAgICAg
bV9zbG90TXV0YXRpb25WZXJzaW9uKys7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ2FudmFzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCmlu
ZGV4IDhlMWY5N2M5Mi4uZWIxYjI5NWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAK
QEAgLTU3LDcgKzU3LDkgQEAgQ2FudmFzQmFzZTo6Q2FudmFzQmFzZShJbnRTaXplIHNpemUpCiAK
IENhbnZhc0Jhc2U6On5DYW52YXNCYXNlKCkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJU
KG1fZGlkTm90aWZ5T2JzZXJ2ZXJzQ2FudmFzRGVzdHJveWVkKTsKKyNlbmRpZgogICAgIEFTU0VS
VChtX29ic2VydmVycy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9pbWFnZUJ1ZmZlcik7CiB9
CkBAIC0xNTAsNyArMTUyLDkgQEAgdm9pZCBDYW52YXNCYXNlOjpub3RpZnlPYnNlcnZlcnNDYW52
YXNSZXNpemVkKCkKIAogdm9pZCBDYW52YXNCYXNlOjpub3RpZnlPYnNlcnZlcnNDYW52YXNEZXN0
cm95ZWQoKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIW1fZGlkTm90aWZ5T2JzZXJ2
ZXJzQ2FudmFzRGVzdHJveWVkKTsKKyNlbmRpZgogCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6
IGNvcHlUb1ZlY3RvcihtX29ic2VydmVycykpCiAgICAgICAgIG9ic2VydmVyLT5jYW52YXNEZXN0
cm95ZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggNjVm
ZjcwMTVmLi5hYzBjMTc0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcApA
QCAtMTE0LDE1ICsxMTQsMjEgQEAgSW1hZ2VMb2FkZXI6On5JbWFnZUxvYWRlcigpCiAgICAgaWYg
KG1faW1hZ2UpCiAgICAgICAgIG1faW1hZ2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAKKyNpZm5k
ZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCB8fCAhYmVm
b3JlTG9hZEV2ZW50U2VuZGVyKCkuaGFzUGVuZGluZ0V2ZW50cygqdGhpcykpOworI2VuZGlmCiAg
ICAgaWYgKG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCkKICAgICAgICAgYmVmb3JlTG9hZEV2
ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQoKnRoaXMpOwogCisjaWZuZGVmIE5ERUJVRwogICAgIEFT
U0VSVChtX2hhc1BlbmRpbmdMb2FkRXZlbnQgfHwgIWxvYWRFdmVudFNlbmRlcigpLmhhc1BlbmRp
bmdFdmVudHMoKnRoaXMpKTsKKyNlbmRpZgogICAgIGlmIChtX2hhc1BlbmRpbmdMb2FkRXZlbnQp
CiAgICAgICAgIGxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KCp0aGlzKTsKIAorI2lmbmRl
ZiBOREVCVUcKICAgICBBU1NFUlQobV9oYXNQZW5kaW5nRXJyb3JFdmVudCB8fCAhZXJyb3JFdmVu
dFNlbmRlcigpLmhhc1BlbmRpbmdFdmVudHMoKnRoaXMpKTsKKyNlbmRpZgogICAgIGlmIChtX2hh
c1BlbmRpbmdFcnJvckV2ZW50KQogICAgICAgICBlcnJvckV2ZW50U2VuZGVyKCkuY2FuY2VsRXZl
bnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMWFkYzNjM2NkLi5lMjNmZWYwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtMTQwLDcgKzE0MCw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQo
UmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAg
ICAgQVNTRVJUKCFtX2hhbmRsZSk7CiAgICAgQVNTRVJUKG1fcmVxdWVzdC5pc051bGwoKSk7CiAg
ICAgQVNTRVJUKG1fZGVmZXJyZWRSZXF1ZXN0LmlzTnVsbCgpKTsKKyNpZm5kZWYgTkRFQlVHCiAg
ICAgQVNTRVJUKCFtX2RvY3VtZW50TG9hZGVyLT5pc1N1YnN0aXR1dGVMb2FkUGVuZGluZyh0aGlz
KSk7CisjZW5kaWYKICAgICAKICAgICBtX2xvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCkBA
IC0zMzQsNyArMzM2LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1Bv
bGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKIHsKKyNpZm5kZWYgTkRF
QlVHCiAgICAgQVNTRVJUKG1fZG9jdW1lbnRMb2FkZXIgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmlz
U3Vic3RpdHV0ZUxvYWRQZW5kaW5nKHRoaXMpKTsKKyNlbmRpZgogICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5yZW1vdmUodGhpcyk7CiAgICAgaWYgKG1faGFuZGxl
KQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBiYmMxYjMwNTkuLjM3N2E0YzkyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0x
NTEsNyArMTUxLDkgQEAgQ2FjaGVkUmVzb3VyY2U6On5DYWNoZWRSZXNvdXJjZSgpCiAgICAgQVNT
RVJUKCFtX3Jlc291cmNlVG9SZXZhbGlkYXRlKTsgLy8gU2hvdWxkIGJlIHRydWUgYmVjYXVzZSBj
YW5EZWxldGUoKSBjaGVja3MgdGhpcy4KICAgICBBU1NFUlQoY2FuRGVsZXRlKCkpOwogICAgIEFT
U0VSVCghaW5DYWNoZSgpKTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2RlbGV0ZWQp
OworI2VuZGlmCiAgICAgQVNTRVJUKHVybCgpLmlzTnVsbCgpIHx8ICFhbGxvd3NDYWNoaW5nKCkg
fHwgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChyZXNvdXJjZVJl
cXVlc3QoKSwgc2Vzc2lvbklEKCkpICE9IHRoaXMpOwogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggY2U4YTA5MzlhLi43
ZGI3Yzg3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cApAQCAtMTYwLDcgKzE2MCw5IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvblN1Y2Nl
ZWRlZChDYWNoZWRSZXNvdXJjZSYgcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvCiAgICAgICAgIGFk
anVzdFNpemUocmVzb3VyY2UuaGFzQ2xpZW50cygpLCBkZWx0YSk7CiAKICAgICByZXZhbGlkYXRp
bmdSZXNvdXJjZS5zd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCk7CisjaWZuZGVm
IE5ERUJVRwogICAgIEFTU0VSVCghcmV2YWxpZGF0aW5nUmVzb3VyY2UubV9kZWxldGVkKTsKKyNl
bmRpZgogICAgIC8vIHRoaXMgZGVsZXRlcyB0aGUgcmV2YWxpZGF0aW5nIHJlc291cmNlCiAgICAg
cmV2YWxpZGF0aW5nUmVzb3VyY2UuY2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwogfQpAQCAt
NDUwLDcgKzQ1MiwxMCBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgTFJVTGlzdCYgbGlzdCA9IGxydUxpc3RGb3IocmVz
b3VyY2UpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGxpc3Qgd2UgZ290IGlzIHRoZSBsaXN0
IHdlIHdhbnQuCisKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKHJlc291cmNlLm1fbHJ1SW5k
ZXggPT0gb2xkTGlzdEluZGV4KTsKKyNlbmRpZgogCiAgICAgYm9vbCByZW1vdmVkID0gbGlzdC5y
ZW1vdmUoJnJlc291cmNlKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCmluZGV4IDE4OTA1M2Y5Mi4uMjBkNWRhNzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCkBAIC0yNzUsNyArMjc1LDkgQEAgVGltZXJCYXNlOjp+
VGltZXJCYXNlKCkKIAogdm9pZCBUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgbmV4dEZpcmVJbnRl
cnZhbCwgU2Vjb25kcyByZXBlYXRJbnRlcnZhbCkKIHsKLSAgICBBU1NFUlQoY2FuQ3VycmVudFRo
cmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX3RocmVhZCkpOworI2lmbmRlZiBOREVCVUcKKyAg
ICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkKSk7Cisj
ZW5kaWYKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZhbDsKICAgICBzZXRO
ZXh0RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBuZXh0RmlyZUludGVydmFsKTsKQEAg
LTI4Myw3ICsyODUsOSBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUlu
dGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogCiB2b2lkIFRpbWVyQmFzZTo6c3RvcCgp
CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhy
ZWFkTG9jYWxEYXRhKG1fdGhyZWFkKSk7CisjZW5kaWYKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwg
PSAwX3M7CiAgICAgc2V0TmV4dEZpcmVUaW1lKE1vbm90b25pY1RpbWUgeyB9KTsKQEAgLTQ2Nywx
MCArNDcxLDEyIEBAIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQoTW9ub3Rvbmlj
VGltZSBvbGRUaW1lKQogCiB2b2lkIFRpbWVyQmFzZTo6c2V0TmV4dEZpcmVUaW1lKE1vbm90b25p
Y1RpbWUgbmV3VGltZSkKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGNhbkN1cnJlbnRU
aHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV90aHJlYWQpKTsKICAgICBSRUxFQVNFX0FTU0VS
VChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fdGhyZWFkKSB8fCBzaG91
bGRTdXBwcmVzc1RocmVhZFNhZmV0eUNoZWNrKCkpOwogICAgIGJvb2wgdGltZXJIYXNCZWVuRGVs
ZXRlZCA9IHN0ZDo6aXNuYW4obV91bmFsaWduZWROZXh0RmlyZVRpbWUpOwogICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXRpbWVySGFzQmVlbkRlbGV0ZWQpOwor
I2VuZGlmCiAKICAgICBpZiAobV91bmFsaWduZWROZXh0RmlyZVRpbWUgIT0gbmV3VGltZSkgewog
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghc3RkOjppc25hbihuZXdUaW1lKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGltZXIuaAppbmRleCA1OWJhY2FkN2QuLjVlZDU2YWFhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aW1lci5oCkBAIC0xNDEsMTEgKzE0MSwxMyBAQCBwcml2YXRlOgogaW5saW5lIGJvb2wgVGltZXJC
YXNlOjppc0FjdGl2ZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdyaXRlIHRoaXMgaW4gdGVy
bXMgb2YgVVNFKFdFQl9USFJFQUQpIGluc3RlYWQgb2YgUExBVEZPUk0oSU9TX0ZBTUlMWSkuCisj
aWZuZGVmIE5ERUJVRwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX3Ro
cmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vsc2UKICAgICBBU1NFUlQoV2Vi
VGhyZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9tYWluX25wKCkgfHwgbV90aHJlYWQucHRyKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQor
I2VuZGlmCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG5leHRGaXJlVGltZSgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5k
ZXggYjI1ZTdkZmI5Li5iNjc3Y2E0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMzIwLDcgKzMyMCw5IEBAIHZvaWQgRm9udENhY2hl
OjpwdXJnZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICB3aGlsZSAo
cHVyZ2VDb3VudCkgewogICAgICAgICBWZWN0b3I8UmVmPEZvbnQ+LCAyMD4gZm9udHNUb0RlbGV0
ZTsKICAgICAgICAgZm9yIChhdXRvJiBmb250IDogbV9mb250RGF0YUNhY2hlcy0+ZGF0YS52YWx1
ZXMoKSkgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIExPRyhGb250cywgIiB0cnlpbmcg
dG8gcHVyZ2UgZm9udCAlcyAoaGFzIG9uZSByZWYgJWQpIiwgZm9udC0+cGxhdGZvcm1EYXRhKCku
ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpLCBmb250LT5oYXNPbmVSZWYoKSk7CisjZW5kaWYK
ICAgICAgICAgICAgIGlmICghZm9udC0+aGFzT25lUmVmKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBmb250c1RvRGVsZXRlLmFwcGVuZChmb250LmNvcHlSZWYoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5j
cHAKaW5kZXggNDE3MGYxZTI5Li5lNjI4NjkwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKQEAgLTYzLDcgKzYzLDkgQEAgUGFp
bnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZl
cikKICAgICAgICAgICAgIC8vIE1hcmsgdGhlIGRlbGV0aW9uIG9mIHRoZSBjYWlyb19zdXJmYWNl
X3Qgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzCiAgICAgICAgICAgICAvLyBQYWludGluZ0Nv
bnRleHRDYWlybyBhcyBjb21wbGV0ZS4gVGhpcyB3YXkgd2UgY2hlY2sgdGhhdCB0aGUgY2Fpcm9f
c3VyZmFjZV90CiAgICAgICAgICAgICAvLyBvYmplY3QgZG9lc24ndCBvdXRsaXZlIHRoZSBQYWlu
dGluZ0NvbnRleHRDYWlybyB0aHJvdWdoIHdoaWNoIGl0IHdhcyB1c2VkLgorI2lmbmRlZiBOREVC
VUcKICAgICAgICAgICAgIHVzZXJEYXRhLT5zZWNvbmQtPm1fZGVsZXRpb25Db21wbGV0ZSA9IHRy
dWU7CisjZW5kaWYKICNlbmRpZgogICAgICAgICAgICAgZGVsZXRlIHVzZXJEYXRhOwogICAgICAg
ICB9KTsKQEAgLTgyLDcgKzg0LDkgQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5n
Ojp+Rm9yUGFpbnRpbmcoKQogICAgIC8vIGFzIHdlbGwuIFRoaXMgaXMgY2hlY2tlZCBieSBhc3Nl
cnRpbmcgdGhhdCBtX2RlbGV0aW9uQ29tcGxldGUgaXMgdHJ1ZSwgd2hpY2ggc2hvdWxkCiAgICAg
Ly8gYmUgdGhlIGNhc2UgaWYgdGhlIHNfYnVmZmVyS2V5IHVzZXIgZGF0YSBkZXN0cm95IGNhbGxi
YWNrIGhhcyBiZWVuIGludm9rZWQgdXBvbiB0aGUKICAgICAvLyBjYWlyb19zdXJmYWNlX3QgZGVz
dHJ1Y3Rpb24uCisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2RlbGV0aW9uQ29tcGxldGUp
OworI2VuZGlmCiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgUGFpbnRpbmdDb250ZXh0
Q2Fpcm86OkZvclBhaW50aW5nOjpncmFwaGljc0NvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMLmNwcAppbmRleCA5YmU5MDJiNzYuLmE2
MjQyOTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHlHTC5jcHAKQEAgLTU3LDggKzU3LDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5R0w6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKgogI2lm
bmRlZiBOREVCVUcKICAgICBpZiAoIW1fY29tcG9zaXRvclRocmVhZCkKICAgICAgICAgbV9jb21w
b3NpdG9yVGhyZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOwotI2VuZGlmCiAgICAgQVNTRVJUKG1f
Y29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworI2VuZGlmCiAgICAgQVNT
RVJUKGNvbXBvc2l0b3IpOwogICAgIEFTU0VSVCh0YXJnZXRMYXllcik7CiAgICAgRnVuY3Rpb248
dm9pZCgpPiB1cGRhdGVGdW5jdGlvbjsKQEAgLTg2LDcgKzg2LDkgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5R0w6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21w
b3NpdG9yKgogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTDo6aW52YWxp
ZGF0ZSgpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWQg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyNlbmRpZgogICAgIEZ1bmN0aW9uPHZvaWQoKT4gdXBk
YXRlRnVuY3Rpb247CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CkBA
IC0xMjcsNyArMTI5LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w6
OnB1c2hOZXh0QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWEKIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eUdMOjpnZXRBdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0xp
bnQgaW50ZXJuYWxGb3JtYXQpCiB7CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CisjaWZu
ZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKKyNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4gYXZhaWxhYmxlQnVmZmVyOwogCiAgICAgYXV0byBidWZmZXJzID0gV1RG
TW92ZShtX3VzZWRCdWZmZXJzKTsKQEAgLTE1MSw3ICsxNTUsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5R0w6OmFwcGVuZFRv
VW51c2VkQnVmZmVycyhzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+IGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKyNpZm5kZWYg
TkRFQlVHCiAgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOworI2VuZGlmCiAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
ICAgICBzY2hlZHVsZVJlbGVhc2VVbnVzZWRCdWZmZXJzKCk7CiB9CkBAIC0xNzksOCArMTg1LDEw
IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMOjpyZWxlYXNlVW51c2Vk
QnVmZmVyc1RpbWVyRmlyZWQoKQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHlHTDo6c3dhcEJ1ZmZlcigpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NvbXBv
c2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CisjZW5kaWYKKy8vICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBp
ZiAoIW1fdGFyZ2V0TGF5ZXIgfHwgIW1fcGVuZGluZ0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IGM1
YjViMjM5Zi4uZmYzYjhmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuaApAQCAtMTI1LDggKzEyNSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3Fs
aXRlMyogc3FsaXRlM0hhbmRsZSgpIGNvbnN0CiAgICAgeworI2lmbmRlZiBOREVCVUcKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgQVNTRVJUKG1fc2hhcmFibGUgfHwgbV9vcGVu
aW5nVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSB8fCAhbV9kYik7CisjZW5kaWYKICNlbmRp
ZgogICAgICAgICByZXR1cm4gbV9kYjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GbG9hdGluZ09iamVjdHMuY3BwCmluZGV4IGE4MmM2Y2QyOC4uMDU2ZWU2OTQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMzM3LDcgKzMz
Nyw5IEBAIEZsb2F0aW5nT2JqZWN0SW50ZXJ2YWwgRmxvYXRpbmdPYmplY3RzOjppbnRlcnZhbEZv
ckZsb2F0aW5nT2JqZWN0KEZsb2F0aW5nT2JqZWN0CiAKIHZvaWQgRmxvYXRpbmdPYmplY3RzOjph
ZGRQbGFjZWRPYmplY3QoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQogeworI2lmbmRl
ZiBOREVCVUcKICAgICBBU1NFUlQoIWZsb2F0aW5nT2JqZWN0LT5pc0luUGxhY2VkVHJlZSgpKTsK
KyNlbmRpZgogCiAgICAgZmxvYXRpbmdPYmplY3QtPnNldElzUGxhY2VkKHRydWUpOwogICAgIGlm
IChtX3BsYWNlZEZsb2F0c1RyZWUpCkBAIC0zNTAsNyArMzUyLDkgQEAgdm9pZCBGbG9hdGluZ09i
amVjdHM6OmFkZFBsYWNlZE9iamVjdChGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCiAK
IHZvaWQgRmxvYXRpbmdPYmplY3RzOjpyZW1vdmVQbGFjZWRPYmplY3QoRmxvYXRpbmdPYmplY3Qq
IGZsb2F0aW5nT2JqZWN0KQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoZmxvYXRpbmdP
YmplY3QtPmlzUGxhY2VkKCkgJiYgZmxvYXRpbmdPYmplY3QtPmlzSW5QbGFjZWRUcmVlKCkpOwor
I2VuZGlmCiAKICAgICBpZiAobV9wbGFjZWRGbG9hdHNUcmVlKSB7CiAgICAgICAgIGJvb2wgcmVt
b3ZlZCA9IG1fcGxhY2VkRmxvYXRzVHJlZS0+cmVtb3ZlKGludGVydmFsRm9yRmxvYXRpbmdPYmpl
Y3QoZmxvYXRpbmdPYmplY3QpKTsKQEAgLTM3NSw3ICszNzksOSBAQCB2b2lkIEZsb2F0aW5nT2Jq
ZWN0czo6cmVtb3ZlKEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKIHsKICAgICBBU1NF
UlQoKG1fc2V0LmNvbnRhaW5zKGZsb2F0aW5nT2JqZWN0KSkpOwogICAgIGRlY3JlYXNlT2JqZWN0
c0NvdW50KGZsb2F0aW5nT2JqZWN0LT50eXBlKCkpOworI2lmbmRlZiBOREVCVUcKICAgICBBU1NF
UlQoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkgfHwgIWZsb2F0aW5nT2JqZWN0LT5pc0luUGxh
Y2VkVHJlZSgpKTsKKyNlbmRpZgogICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkK
ICAgICAgICAgcmVtb3ZlUGxhY2VkT2JqZWN0KGZsb2F0aW5nT2JqZWN0KTsKICAgICBBU1NFUlQo
IWZsb2F0aW5nT2JqZWN0LT5vcmlnaW5hdGluZ0xpbmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKaW5kZXggMjBmMzA3MzkzLi5iNjZjZmM1MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmgKQEAgLTYxLDE1ICs2MSw0
NCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWVSZWN0LndpZHRoKCk7IH0KICAgICBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVSZWN0LmhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHNldFgoTGF5b3V0VW5pdCB4KSB7
IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1fZnJhbWVSZWN0LnNldFgoeCk7IH0KLSAgICB2
b2lkIHNldFkoTGF5b3V0VW5pdCB5KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7IG1fZnJh
bWVSZWN0LnNldFkoeSk7IH0KLSAgICB2b2lkIHNldFdpZHRoKExheW91dFVuaXQgd2lkdGgpIHsg
QVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsgbV9mcmFtZVJlY3Quc2V0V2lkdGgod2lkdGgpOyB9
Ci0gICAgdm9pZCBzZXRIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQpIHsgQVNTRVJUKCFpc0luUGxh
Y2VkVHJlZSgpKTsgbV9mcmFtZVJlY3Quc2V0SGVpZ2h0KGhlaWdodCk7IH0KLQotICAgIHZvaWQg
c2V0TWFyZ2luT2Zmc2V0KExheW91dFNpemUgb2Zmc2V0KSB7IEFTU0VSVCghaXNJblBsYWNlZFRy
ZWUoKSk7IG1fbWFyZ2luT2Zmc2V0ID0gb2Zmc2V0OyB9CisgICAgdm9pZCBzZXRYKExheW91dFVu
aXQgeCkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgIEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7
CisjZW5kaWYKKyAgICAgIG1fZnJhbWVSZWN0LnNldFgoeCk7CisgICAgfQorICAgIHZvaWQgc2V0
WShMYXlvdXRVbml0IHkpIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICBBU1NFUlQoIWlzSW5QbGFj
ZWRUcmVlKCkpOworI2VuZGlmCisgICAgICBtX2ZyYW1lUmVjdC5zZXRZKHkpOworICAgIH0KKyAg
ICB2b2lkIHNldFdpZHRoKExheW91dFVuaXQgd2lkdGgpIHsKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOworI2VuZGlmCisgICAgICBtX2ZyYW1lUmVjdC5z
ZXRXaWR0aCh3aWR0aCk7CisgICAgfQorICAgIHZvaWQgc2V0SGVpZ2h0KExheW91dFVuaXQgaGVp
Z2h0KSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsK
KyNlbmRpZgorICAgICAgbV9mcmFtZVJlY3Quc2V0SGVpZ2h0KGhlaWdodCk7CisgICAgfQorICAg
IHZvaWQgc2V0TWFyZ2luT2Zmc2V0KExheW91dFNpemUgb2Zmc2V0KSB7CisjaWZuZGVmIE5ERUJV
RworICAgICAgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsKKyNlbmRpZgorICAgICAgbV9tYXJn
aW5PZmZzZXQgPSBvZmZzZXQ7CisgICAgfQogCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVS
ZWN0KCkgY29uc3QgeyBBU1NFUlQoaXNQbGFjZWQoKSk7IHJldHVybiBtX2ZyYW1lUmVjdDsgfQot
ICAgIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCkgeyBBU1NF
UlQoIWlzSW5QbGFjZWRUcmVlKCkpOyBtX2ZyYW1lUmVjdCA9IGZyYW1lUmVjdDsgfQorICAgIHZv
aWQgc2V0RnJhbWVSZWN0KGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCkgeworI2lmbmRlZiBO
REVCVUcKKyAgICAgIEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7CisjZW5kaWYKKyBtX2ZyYW1l
UmVjdCA9IGZyYW1lUmVjdDsKKyAgICB9CiAKICAgICBMYXlvdXRVbml0IHBhZ2luYXRpb25TdHJ1
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnaW5hdGlvblN0cnV0OyB9CiAgICAgdm9pZCBzZXRQYWdp
bmF0aW9uU3RydXQoTGF5b3V0VW5pdCBzdHJ1dCkgeyBtX3BhZ2luYXRpb25TdHJ1dCA9IHN0cnV0
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBlYzlkZWI5
ZTcuLjU3MTc2ZjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CkBAIC0yODkwLDcgKzI4OTAsOSBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZyYWdtZW50ZWRG
bG93LT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RGcmFnbWVudCh0aGlzKTsKIAogICAgIGlm
IChsYXlvdXRTdGF0ZSkgeworI2lmbmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKGxheW91dFN0
YXRlLT5yZW5kZXJlcigpID09IHRoaXMpOworI2VuZGlmCiAKICAgICAgICAgTGF5b3V0U2l6ZSBv
ZmZzZXREZWx0YSA9IGxheW91dFN0YXRlLT5sYXlvdXRPZmZzZXQoKSAtIGxheW91dFN0YXRlLT5w
YWdlT2Zmc2V0KCk7CiAgICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
b2Zmc2V0RGVsdGEuaGVpZ2h0KCkgOiBvZmZzZXREZWx0YS53aWR0aCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGZiYjhiODZlMy4uYzViZjRjZGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMDkz
LDcgKzEwOTMsOSBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZURlc3Ryb3llZCgpCiAKIHZv
aWQgUmVuZGVyRWxlbWVudDo6c2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogeworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIWlz
U2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oKSk7CisjZW5kaWYKICAgICBpZiAobmVlZHNQb3NpdGlv
bmVkTW92ZW1lbnRMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNldE5lZWRzUG9zaXRp
b25lZE1vdmVtZW50TGF5b3V0Qml0KHRydWUpOwpAQCAtMTExNyw3ICsxMTE5LDkgQEAgdm9pZCBS
ZW5kZXJFbGVtZW50OjpjbGVhckNoaWxkTmVlZHNMYXlvdXQoKQogCiB2b2lkIFJlbmRlckVsZW1l
bnQ6OnNldE5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKQogeworI2lmbmRlZiBOREVC
VUcKICAgICBBU1NFUlQoIWlzU2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oKSk7CisjZW5kaWYKICAg
ICBpZiAobmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpKQogICAgICAgICByZXR1cm47
CiAgICAgc2V0TmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dEJpdCh0cnVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IGYzNzZjZWNiOS4uODJmMTFl
OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTQxMiw3
ICs0MTIsOSBAQCBpbmxpbmUgdm9pZCBSZW5kZXJFbGVtZW50OjpzZXRBbmNlc3RvckxpbmVCb3hE
aXJ0eShib29sIGYpCiAKIGlubGluZSB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldENoaWxkTmVlZHNM
YXlvdXQoTWFya2luZ0JlaGF2aW9yIG1hcmtQYXJlbnRzKQogeworI2lmbmRlZiBOREVCVUcKICAg
ICBBU1NFUlQoIWlzU2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oKSk7CisjZW5kaWYKICAgICBpZiAo
bm9ybWFsQ2hpbGROZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm47CiAgICAgc2V0Tm9ybWFs
Q2hpbGROZWVkc0xheW91dEJpdCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAppbmRleCA3MTQ2N2NhODkuLjg4ODgxZjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTU0LDcgKzE1NCw5IEBAIHZvaWQgUmVuZGVyR3JpZDo6
Y29tcHV0ZVRyYWNrU2l6ZXNGb3JEZWZpbml0ZVNpemUoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjCiAgICAgbV90cmFja1NpemluZ0FsZ29yaXRobS5zZXR1cChkaXJlY3Rpb24sIG51bVRy
YWNrcyhkaXJlY3Rpb24sIG1fZ3JpZCksIFRyYWNrU2l6aW5nLCBhdmFpbGFibGVTcGFjZSk7CiAg
ICAgbV90cmFja1NpemluZ0FsZ29yaXRobS5ydW4oKTsKIAorI2lmbmRlZiBOREVCVUcKICAgICBB
U1NFUlQobV90cmFja1NpemluZ0FsZ29yaXRobS50cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0Jy
ZWFkdGgoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpyZXBlYXRUcmFja3NTaXpp
bmdJZk5lZWRlZChMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlRm9yQ29sdW1ucywgTGF5b3V0VW5p
dCBhdmFpbGFibGVTcGFjZUZvclJvd3MpCkBAIC01MDEsNyArNTAzLDkgQEAgdm9pZCBSZW5kZXJH
cmlkOjpjb21wdXRlVHJhY2tTaXplc0ZvckluZGVmaW5pdGVTaXplKEdyaWRUcmFja1NpemluZ0Fs
Z29yaXRobSYgYWwKICAgICBpZiAobWF4SW50cmluc2ljU2l6ZSkKICAgICAgICAgKm1heEludHJp
bnNpY1NpemUgPSBhbGdvcml0aG0ubWF4Q29udGVudFNpemUoKSArIHRvdGFsR3V0dGVyc1NpemU7
CiAKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGFsZ29yaXRobS50cmFja3NBcmVXaWRlclRo
YW5NaW5UcmFja0JyZWFkdGgoKSk7CisjZW5kaWYKIH0KIAogdW5zaWduZWQgUmVuZGVyR3JpZDo6
Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAzMGI0YThjMjguLmQ4
ZjY5YjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00
NTIxLDkgKzQ1MjEsMTIgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBS
ZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb24KICAgICBBU1NFUlQoY2xp
cFJlY3RzVHlwZSA8IE51bUNhY2hlZENsaXBSZWN0c1R5cGVzKTsKICAgICBpZiAobV9jbGlwUmVj
dHNDYWNoZSkgewogICAgICAgICBpZiAoYXV0byogY2xpcFJlY3RzID0gbV9jbGlwUmVjdHNDYWNo
ZS0+Z2V0Q2xpcFJlY3RzKGNsaXBSZWN0c1R5cGUsIGNsaXBSZWN0c0NvbnRleHQucmVzcGVjdE92
ZXJmbG93Q2xpcCkpIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBBU1NFUlQoY2xpcFJl
Y3RzQ29udGV4dC5yb290TGF5ZXIgPT0gbV9jbGlwUmVjdHNDYWNoZS0+bV9jbGlwUmVjdHNSb290
W2NsaXBSZWN0c1R5cGVdKTsKICAgICAgICAgICAgIEFTU0VSVChtX2NsaXBSZWN0c0NhY2hlLT5t
X3Njcm9sbGJhclJlbGV2YW5jeVtjbGlwUmVjdHNUeXBlXSA9PSBjbGlwUmVjdHNDb250ZXh0Lm92
ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5KTsKLSAgICAgICAgCisKKyNlbmRpZgorCiAjaWZk
ZWYgQ0hFQ0tfQ0FDSEVEX0NMSVBfUkVDVFMKICAgICAgICAgICAgIC8vIFRoaXMgY29kZSBpcyB1
c2VmdWwgdG8gY2hlY2sgY2FjaGVkIGNsaXAgcmVjdHMsIGJ1dCBpcyB0b28gZXhwZW5zaXZlIHRv
IGxlYXZlIGVuYWJsZWQgaW4gZGVidWcgYnVpbGRzIGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICBD
bGlwUmVjdHNDb250ZXh0IHRlbXBDb250ZXh0KGNsaXBSZWN0c0NvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBiNGI2NzEwMmQuLmYzNWJkMDMz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTU1Myw3
ICs1NTMsOSBAQCBzdGF0aWMgdm9pZCBzY2hlZHVsZVJlbGF5b3V0Rm9yU3VidHJlZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlcikKIHZvaWQgUmVuZGVyT2JqZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nr
c0ZvckxheW91dChTY2hlZHVsZVJlbGF5b3V0IHNjaGVkdWxlUmVsYXlvdXQsIFJlbmRlckVsZW1l
bnQqIG5ld1Jvb3QpCiB7CiAgICAgQVNTRVJUKHNjaGVkdWxlUmVsYXlvdXQgPT0gU2NoZWR1bGVS
ZWxheW91dDo6Tm8gfHwgIW5ld1Jvb3QpOworI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIWlz
U2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oKSk7CisjZW5kaWYKIAogICAgIGF1dG8gYW5jZXN0b3Ig
PSBjb250YWluZXIoKTsKIApAQCAtNTg5LDcgKzU5MSw5IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpt
YXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChTY2hlZHVsZVJlbGF5b3V0IHNjaGVkdWxlUmVs
YXlvCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYW5jZXN0b3ItPnNldE5v
cm1hbENoaWxkTmVlZHNMYXlvdXRCaXQodHJ1ZSk7CiAgICAgICAgIH0KKyNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIEFTU0VSVCghYW5jZXN0b3ItPmlzU2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oKSk7
CisjZW5kaWYKIAogICAgICAgICBpZiAoYW5jZXN0b3IgPT0gbmV3Um9vdCkKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBkMGY0
Y2VjNGIuLmFjYzk1NTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aApAQCAtMTAxOCw3ICsxMDE4LDkgQEAgaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0JlZm9y
ZU9yQWZ0ZXJDb250ZW50KCkgY29uc3QKIAogaW5saW5lIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRO
ZWVkc0xheW91dChNYXJraW5nQmVoYXZpb3IgbWFya1BhcmVudHMpCiB7CisjaWZuZGVmIE5ERUJV
RwogICAgIEFTU0VSVCghaXNTZXROZWVkc0xheW91dEZvcmJpZGRlbigpKTsKKyNlbmRpZgogICAg
IGlmIChtX2JpdGZpZWxkcy5uZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9i
aXRmaWVsZHMuc2V0TmVlZHNMYXlvdXQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcAppbmRleCA4ZDUyM2RkNzguLmZmZThhMDVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xNjAzLDcgKzE2MDMsOSBAQCBSZW5kZXJQ
dHI8UmVuZGVyVGFibGU+IFJlbmRlclRhYmxlOjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVu
ZGVyZXIoY29uc3QgUmVuZAogCiBjb25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGU6OnRhYmxl
U3RhcnRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCkgY29u
c3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGNlbGwuaXNGaXJzdE9yTGFzdENlbGxJ
blJvdygpKTsKKyNlbmRpZgogICAgIGlmIChpc0RpcmVjdGlvblNhbWUodGhpcywgY2VsbC5yb3co
KSkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLmJvcmRlclN0YXJ0KCk7CiAKQEAgLTE2MTIsNyAr
MTYxNCw5IEBAIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZTo6dGFibGVTdGFydEJvcmRl
ckFkam9pbmluZ0NlbGwoY29uc3QgUmVuZGVyVGFibGVDCiAKIGNvbnN0IEJvcmRlclZhbHVlJiBS
ZW5kZXJUYWJsZTo6dGFibGVFbmRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0IFJlbmRlclRhYmxl
Q2VsbCYgY2VsbCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGNlbGwuaXNG
aXJzdE9yTGFzdENlbGxJblJvdygpKTsKKyNlbmRpZgogICAgIGlmIChpc0RpcmVjdGlvblNhbWUo
dGhpcywgY2VsbC5yb3coKSkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLmJvcmRlckVuZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggMzg0YmY4
OGVhLi4wMGI1ODcyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmgKQEAgLTMwNyw3ICszMDcsOSBAQCBpbmxpbmUgYm9vbCBSZW5kZXJUYWJsZUNlbGw6Omlz
QmFzZWxpbmVBbGlnbmVkKCkgY29uc3QKIAogaW5saW5lIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5k
ZXJUYWJsZUNlbGw6OmJvcmRlckFkam9pbmluZ1RhYmxlU3RhcnQoKSBjb25zdAogeworI2lmbmRl
ZiBOREVCVUcKICAgICBBU1NFUlQoaXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsKKyNlbmRpZgog
ICAgIGlmIChpc0RpcmVjdGlvblNhbWUoc2VjdGlvbigpLCB0YWJsZSgpKSkKICAgICAgICAgcmV0
dXJuIHN0eWxlKCkuYm9yZGVyU3RhcnQoKTsKIApAQCAtMzE2LDcgKzMxOCw5IEBAIGlubGluZSBj
b25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJBZGpvaW5pbmdUYWJsZVN0
YXJ0KCkgY29uc3QKIAogaW5saW5lIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZUNlbGw6
OmJvcmRlckFkam9pbmluZ1RhYmxlRW5kKCkgY29uc3QKIHsKKyNpZm5kZWYgTkRFQlVHCiAgICAg
QVNTRVJUKGlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7CisjZW5kaWYKICAgICBpZiAoaXNEaXJl
Y3Rpb25TYW1lKHNlY3Rpb24oKSwgdGFibGUoKSkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLmJv
cmRlckVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNw
cAppbmRleCBlMTc2OTM5ZjQuLjY3Yzg0NTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwCkBAIC0xMDgsMTQgKzEwOCwxOCBAQCB2b2lkIFJlbmRlclRh
YmxlUm93OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZAogCiBjb25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGVSb3c6OmJvcmRlckFk
am9pbmluZ1N0YXJ0Q2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwmIGNlbGwpIGNvbnN0CiB7Cisj
aWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwgY2VsbC5pc0ZpcnN0T3JMYXN0
Q2VsbEluUm93KCkpOworI2VuZGlmCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vd2Via2l0Lm9yZy9i
Lzc5MjcyIC0gQWRkIHN1cHBvcnQgZm9yIG1peGVkIGRpcmVjdGlvbmFsaXR5IGF0IHRoZSBjZWxs
IGxldmVsLgogICAgIHJldHVybiBzdHlsZSgpLmJvcmRlclN0YXJ0KCk7CiB9CiAKIGNvbnN0IEJv
cmRlclZhbHVlJiBSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbChjb25zdCBS
ZW5kZXJUYWJsZUNlbGwmIGNlbGwpIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VF9VTlVTRUQoY2VsbCwgY2VsbC5pc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOworI2VuZGlmCiAg
ICAgLy8gRklYTUU6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzc5MjcyIC0gQWRkIHN1cHBvcnQgZm9y
IG1peGVkIGRpcmVjdGlvbmFsaXR5IGF0IHRoZSBjZWxsIGxldmVsLgogICAgIHJldHVybiBzdHls
ZSgpLmJvcmRlckVuZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcAppbmRleCBlZDU4Yzg0ZTMuLjdkMGMxNjA2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTY3MCw3ICs2
NzAsOSBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6Y29tcHV0ZU92ZXJmbG93RnJvbUNlbGxz
KHVuc2lnbmVkIHRvdGFsUm93cywgdW5zaWduZWQgbgogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQorI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoaGFzT3ZlcmZsb3dpbmdDZWxsID09
IHRoaXMtPmhhc092ZXJmbG93aW5nQ2VsbCgpKTsKKyNlbmRpZgogfQogCiBMYXlvdXRVbml0IFJl
bmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQmVmb3JlKCkgY29uc3QKQEAgLTEzODks
MTMgKzEzOTEsMTcgQEAgdW5zaWduZWQgUmVuZGVyVGFibGVTZWN0aW9uOjpudW1Db2x1bW5zKCkg
Y29uc3QKIAogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlU2VjdGlvbjo6Ym9yZGVyQWRq
b2luaW5nU3RhcnRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCkgY29uc3QKIHsKKyNp
Zm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKGNlbGwuaXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsK
KyNlbmRpZgogICAgIHJldHVybiBpc0RpcmVjdGlvblNhbWUodGhpcywgJmNlbGwpID8gc3R5bGUo
KS5ib3JkZXJTdGFydCgpIDogc3R5bGUoKS5ib3JkZXJFbmQoKTsKIH0KIAogY29uc3QgQm9yZGVy
VmFsdWUmIFJlbmRlclRhYmxlU2VjdGlvbjo6Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbChjb25zdCBS
ZW5kZXJUYWJsZUNlbGwmIGNlbGwpIGNvbnN0CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VChjZWxsLmlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7CisjZW5kaWYKICAgICByZXR1cm4gaXNE
aXJlY3Rpb25TYW1lKHRoaXMsICZjZWxsKSA/IHN0eWxlKCkuYm9yZGVyRW5kKCkgOiBzdHlsZSgp
LmJvcmRlclN0YXJ0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAppbmRleCA1ZjIzYjMwMTIuLjdjYzkxZDRm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRl
QW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJp
YnV0ZUFuaW1hdG9yLmNwcApAQCAtNDUsOCArNDUsMTAgQEAgdm9pZCBTVkdBdHRyaWJ1dGVBbmlt
YXRvcjo6aW52YWxpZGF0ZVN0eWxlKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQpCiAKIHZvaWQg
U1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNW
R0VsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghZWxlbWVudC5tX2RlbGV0aW9uSGFzQmVn
dW4pOwogICAgIEFTU0VSVChpZCAhPSBDU1NQcm9wZXJ0eUludmFsaWQpOworI2VuZGlmCiAgICAg
CiAgICAgaWYgKCFlbGVtZW50LmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpLnNl
dFByb3BlcnR5KGlkLCB2YWx1ZSwgZmFsc2UpKQogICAgICAgICByZXR1cm47CkBAIC03Myw4ICs3
NSwxMCBAQCB2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjphcHBseUFuaW1hdGVkU3R5bGVQcm9w
ZXJ0eUNoYW5nZShTVkdFbGVtZW50JiB0YXJnZXRFbAogICAgIAogdm9pZCBTVkdBdHRyaWJ1dGVB
bmltYXRvcjo6cmVtb3ZlQW5pbWF0ZWRTdHlsZVByb3BlcnR5KFNWR0VsZW1lbnQmIGVsZW1lbnQs
IENTU1Byb3BlcnR5SUQgaWQpCiB7CisjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghZWxlbWVu
dC5tX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIEFTU0VSVChpZCAhPSBDU1NQcm9wZXJ0eUludmFs
aWQpOworI2VuZGlmCiAKICAgICBlbGVtZW50LmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVy
dGllcygpLnJlbW92ZVByb3BlcnR5KGlkKTsKICAgICBlbGVtZW50LmludmFsaWRhdGVTdHlsZSgp
OwpAQCAtMTAwLDcgKzEwNCw5IEBAIHZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OnJlbW92ZUFu
aW1hdGVkU3R5bGVQcm9wZXJ0eShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50CiAgICAgCiB2b2lk
IFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjphcHBseUFuaW1hdGVkUHJvcGVydHlDaGFuZ2UoU1ZHRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKKyNp
Zm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFlbGVtZW50Lm1fZGVsZXRpb25IYXNCZWd1bik7Cisj
ZW5kaWYKICAgICBlbGVtZW50LnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlTmFtZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggNDc5OGQ3
NzdiLi5iMWI0NGQzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVy
aWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFj
ay5oCkBAIC05NCwxMyArOTQsMTcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+R2VuZXJpY0Nh
bGxiYWNrKCkKICAgICB7CisjaWZuZGVmIE5ERUJVRwogICAgICAgICBBU1NFUlQobV9vcmlnaW5U
aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyNlbmRpZgogICAgICAgICBBU1NF
UlQoIW1fY2FsbGJhY2spOwogICAgIH0KIAogICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKFQuLi4gcmV0dXJuVmFsdWUpCiAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Cisj
ZW5kaWYKIAogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMTYsNyArMTIwLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKEVycm9yIGVy
cm9yID0gRXJyb3I6OlVua25vd24pIGZpbmFsCiAgICAgeworI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Cisj
ZW5kaWYKIAogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAzYjhhYzM2ZDAuLmI3N2E3MWNhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03MTksNyArNzE5LDkgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShP
cHRpb25TZXQ8V2ViQ29yZTo6TGEKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICAgICAgLy8gTWFrZSBzdXJlIHZpZXdwb3J0IHByb3BlcnRpZXMgYXJlIGRpc3BhdGNoZWQgb24g
dGhlIG1haW4gZnJhbWUgYnkgdGhlIHRpbWUgdGhlIGZpcnN0IGxheW91dCBoYXBwZW5zLgorI2lm
bmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKCF3ZWJQYWdlLT51c2VGaXhlZExheW91dCgpIHx8
IG1fZnJhbWUucHRyKCkgIT0gJm1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgfHwgbV9m
cmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmRpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0
aWVzQ2hhbmdlZCgpKTsKKyNlbmRpZgogI2VuZGlmCiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>