<?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>10176</bug_id>
          
          <creation_ts>2006-07-31 18:01:42 -0700</creation_ts>
          <short_desc>Make WebCore compile with -Wundef</short_desc>
          <delta_ts>2006-08-03 15:29:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>51251</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-31 18:01:42 -0700</bug_when>
    <thetext>Adding more gcc warning flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51253</commentid>
    <comment_count>1</comment_count>
      <attachid>9783</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-31 18:19:56 -0700</bug_when>
    <thetext>Created attachment 9783
patch

This patch adds -Wundef to WebCore, WebKit, JavaScriptCore, and JavaScriptGlue and fixes them so that they compile.  One idea I had was to hold off on this particular version and use this as an opportunity to convert to using the PLATFORM() macros from WTF.  We could always do that in another patch as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51262</commentid>
    <comment_count>2</comment_count>
      <attachid>9783</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-31 18:54:13 -0700</bug_when>
    <thetext>Comment on attachment 9783
patch

+#if defined(SPEED_DEBUG) &amp;&amp; SPEED_DEBUG &lt; 1

That&apos;s definitely wrong. This needs to compile if SPEED_DEBUG is not defined.

THe other ones look pretty good, but I&apos;d prefer that it consistently use #ifdef rather than a mix of #ifdef and #if defined.

Seems that all the #if __APPLE__ need to be changed too, although not on the OS X platform.

review- because of the SPEED_DEBUG mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51265</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-07-31 19:21:11 -0700</bug_when>
    <thetext>Darin, would something like

#if !defined(SPEED_DEBUG) || SPEED_DEBUG &lt; 1

work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51304</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-01 10:48:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Darin, would something like
&gt; 
&gt; #if !defined(SPEED_DEBUG) || SPEED_DEBUG &lt; 1
&gt; 
&gt; work?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51306</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-01 10:53:06 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; One idea I had was to hold off on this
&gt; particular version and use this as an opportunity to convert to using the
&gt; PLATFORM() macros from WTF.

I like that idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51472</commentid>
    <comment_count>6</comment_count>
      <attachid>9829</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-02 11:53:39 -0700</bug_when>
    <thetext>Created attachment 9829
patch 2

This version fixes the SPEED_DEBUG issue and converts the #ifdef WIN32&apos;s from WebCore to #if PLATFORM(WIN_OS) and PLATFORM(WIN) (and in one case in config.h to #if !COMPILER(MSVC)).  Some of my choices between WIN_OS and WIN might very well be wrong because I am not entirely familiar with the WIN32 platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51495</commentid>
    <comment_count>7</comment_count>
      <attachid>9829</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-08-02 16:09:45 -0700</bug_when>
    <thetext>Comment on attachment 9829
patch 2

Not sure why you changed &quot;many&quot; to &quot;majy&quot; in the change log.

But, otherwise, looks great.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>51664</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-08-03 15:29:53 -0700</bug_when>
    <thetext>Landed in r15781.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9783</attachid>
            <date>2006-07-31 18:19:56 -0700</date>
            <delta_ts>2006-08-02 11:53:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>undefpatch.diff</filename>
            <type>text/plain</type>
            <size>67172</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzIwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDYtMDctMzEgIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTc2CisgICAgICAgICAgTWFrZSBXZWJDb3JlIGNvbXBp
bGUgd2l0aCAtV3VuZGVmCisKKyAgICAgICAgICAqIEFkZHMgLVd1bmRlZiBmbGFnIHRvIFhjb2Rl
IHByb2plY3QKKyAgICAgICAgICAqIENvbnZlcnRzICNpZnMgdG8gI2lmZGVmIGFuZCAjaWZuZGVm
cyB3aGVyZSBuZWVkZWQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL25wYXBpLmg6CisgICAgICAgICoga2pz
L2lkZW50aWZpZXIuaDoKKwogMjAwNi0wNy0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgLSBSZW1vdmVkIHRhYnMgZnJvbSB0aGVzZSBzb3VyY2UgZmlsZXMgdGhh
dCBzdGlsbCBoYWQgdGhlbS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3MjApCisr
KyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzYzLDYgKzE3NjMsNyBAQAogCQkJCQkiLVduby1mb3JtYXQt
eTJrIiwKIAkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91
YmxlIiwKKwkJCQkJIi1XdW5kZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpA
QCAtMTgwMSw2ICsxODAyLDcgQEAKIAkJCQkJIi1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25v
LXVudXNlZC1wYXJhbWV0ZXIiLAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3Vu
ZGVmIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtMTgzNiw2ICsxODM4
LDcgQEAKIAkJCQkJIi1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0
ZXIiLAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3VuZGVmIiwKIAkJCQkpOwog
CQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvbnBhcGkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ucGFwaS5o
CShyZXZpc2lvbiAxNTcyMCkKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL25wYXBpLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVp
bnQxNjsKIAogI2lmbmRlZiBfVUlOVDMyCiAjZGVmaW5lIF9VSU5UMzIKLSNpZiBfX0xQNjRfXwor
I2lmIGRlZmluZWQoX19MUDY0X18pCiB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzI7CiAjZWxz
ZSAvKiBfX0xQNjRfXyAqLwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnQzMjsKQEAgLTEyOSw3
ICsxMjksNyBAQCB0eXBlZGVmIHNob3J0IGludDE2OwogCiAjaWZuZGVmIF9JTlQzMgogI2RlZmlu
ZSBfSU5UMzIKLSNpZiBfX0xQNjRfXworI2lmIGRlZmluZWQoX19MUDY0X18pCiB0eXBlZGVmIGlu
dCBpbnQzMjsKICNlbHNlIC8qIF9fTFA2NF9fICovCiB0eXBlZGVmIGxvbmcgaW50MzI7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9pZGVudGlmaWVyLmgJKHJldmlzaW9uIDE1NzIwKQorKysgSmF2YVNjcmlwdENv
cmUva2pzL2lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGQo
VVN0cmluZzo6UmVwICopOwogICAgIH07CiAgICAgCi0jaWYgIUtKU19JREVOVElGSUVSX0hJREVf
R0xPQkFMUworI2lmbmRlZiBLSlNfSURFTlRJRklFUl9ISURFX0dMT0JBTFMKICAgICBleHRlcm4g
Y29uc3QgSWRlbnRpZmllciBudWxsSWRlbnRpZmllcjsKIAogICAgIGlubGluZSBjb25zdCBJZGVu
dGlmaWVyICZJZGVudGlmaWVyOjpudWxsKCkKQEAgLTExNyw3ICsxMTcsNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICAgICAgbWFjcm8odmFsdWVPZikKIAogICAgIC8vIERlZmluZSBleHRlcm5hbCBn
bG9iYWwgdmFyaWFibGVzIGZvciBhbGwgcHJvcGVydHkgbmFtZXMgYWJvdmUgKGFuZCBvbmUgbW9y
ZSkuCi0jaWYgIUtKU19JREVOVElGSUVSX0hJREVfR0xPQkFMUworI2lmbmRlZiBLSlNfSURFTlRJ
RklFUl9ISURFX0dMT0JBTFMKICAgICBleHRlcm4gY29uc3QgSWRlbnRpZmllciBzcGVjaWFsUHJv
dG90eXBlUHJvcGVydHlOYW1lOwogCiAgICAgI2RlZmluZSBLSlNfSURFTlRJRklFUl9ERUNMQVJF
X1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGV4dGVybiBjb25zdCBJZGVudGlmaWVyIG5hbWUg
IyMgUHJvcGVydHlOYW1lOwpAQCAtMTI1LDYgKzEyNSw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAg
ICN1bmRlZiBLSlNfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMCiAjZW5k
aWYKIAotfQorfSAvLyBuYW1lc3BhY2UgS0pTCiAKLSNlbmRpZgorI2VuZGlmIC8vIEtKU19JREVO
VElGSUVSX0gKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzIwKQorKysgSmF2YVNjcmlwdEds
dWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDYtMDctMzEg
IFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEu
b3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTc2CisgICAgICAgICAgTWFrZSBXZWJD
b3JlIGNvbXBpbGUgd2l0aCAtV3VuZGVmCisKKyAgICAgICAgICAqIEFkZHMgLVd1bmRlZiBmbGFn
IHRvIFhjb2RlIHByb2plY3QKKworICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMDYtMDctMjkgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IEphdmFTY3JpcHRH
bHVlL0phdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdEdsdWUvSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTU3MjApCisrKyBKYXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBACiAJ
CTA4NjdENkE1RkU4NDAzMDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IG5hbWUgPSBBcHBLaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQXBwS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMDg5
QzE2NjdGRTg0MTE1OEMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5s
cHJvai9JbmZvUGxpc3Quc3RyaW5nczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTE0MjJFODY3MDlERTNCQ0UwMDc0OUI4NyAvKiB0ZXN0
anNnbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0ZXN0anNn
bHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQyMkU4NzcwOURFM0JFODAw
NzQ5Qjg3IC8qIHRlc3Rqc2dsdWUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IHRlc3Rqc2dsdWU7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTE0MjJFODc3MDlERTNCRTgwMDc0OUI4NyAvKiB0ZXN0anNnbHVlICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGluY2x1ZGVJbkluZGV4ID0gMDsgbGFzdEtub3duRmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBwYXRoID0gdGVzdGpzZ2x1ZTsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJREQ2NkYzRDUwOEY3M0VENzAwQzc1RkQ3
IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCURE
NjZGM0Q2MDhGNzNFRDcwMEM3NUZENyAvKiBKYXZhU2NyaXB0R2x1ZS5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3
b3JrOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKYXZhU2NyaXB0R2x1ZS5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCURENjZGM0Y1MDhGNzQwMUIw
MEM3NUZENyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKQEAgLTQ0Miw2ICs0NDIsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1X
bm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkJIi1X
dW5kZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtNDc5LDYgKzQ4MCw3
IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVy
IiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVd1bmRlZiIsCiAJCQkJKTsKIAkJ
CX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTUxMiw2ICs1MTQsNyBAQAogCQkJCQkiLVduby1m
b3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxv
bmctZG91YmxlIiwKKwkJCQkJIi1XdW5kZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFBy
b2R1Y3Rpb247CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBAQAorMjAwNi0wNy0zMSAgU2FtIFdlaW5pZyAgPHNhbS53
ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNzYKKyAgICAgICAgICBNYWtlIFdlYkNvcmUgY29tcGlsZSB3aXRoIC1X
dW5kZWYKKworICAgICAgICAgICogQWRkcyAtV3VuZGVmIGZsYWcgdG8gWGNvZGUgcHJvamVjdAor
ICAgICAgICAgICogQ29udmVydHMgI2lmcyB0byAjaWZkZWYgYW5kICNpZm5kZWZzIHdoZXJlIG5l
ZWRlZC4KKyAgICAgICAgICAqIEFkZGVkICNkZWZpbmUgWVlNQVhERVBUSCAxMDAwMCBpbiBYUGF0
aEdyYW1tYXIueSBhbmQgQ1NTR3JhbW1hci55CisgICAgICAgICAgICB0byBmaXggYSB3YXJuaW5n
IGZyb20gd2l0aGluIEJpc29uLgorICAgICAgICAgICogQ2xlYW5lZCB1cCBzdHlsZSBhIGxpdHRs
ZSBpbiBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZUFYT2JqZWN0Lm1tOgor
ICAgICAgICAoLVtXZWJDb3JlQVhPYmplY3QgZG9BWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJl
ZFRleHRNYXJrZXJzOl0pOgorICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIGNzcy9DU1NH
cmFtbWFyLnk6CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcDoKKyAgICAgICAg
KiBjc3MvTWVkaWFGZWF0dXJlTmFtZXMuaDoKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmNwcDoK
KyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjpzZXRBY3RpdmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5jcHA6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMu
aDoKKyAgICAgICAgKiBkb20vTmFtZWRBdHRyTWFwLmg6CisgICAgICAgICogZG9tL1Bvc2l0aW9u
LmNwcDoKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6CisgICAgICAgICogZG9tL1F1
YWxpZmllZE5hbWUuaDoKKyAgICAgICAgKiBkb20vUmFuZ2UuaDoKKyAgICAgICAgKiBkb20vWE1M
VG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6ZXJyb3IpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6
ZXI6OnNjcmlwdEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpw
YXJzZVRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpjb250aW51ZVByb2Nl
c3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6d3JpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaDoKKyAgICAgICAgKiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oOgorICAgICAgICAqIGtzdmcyL2Nzcy9T
VkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAqIGtzdmcyL3NjcmlwdHMvbWFrZV9uYW1lcy5wbDoK
KyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvTG9h
ZGVyRnVuY3Rpb25zLmg6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmNwcDoKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNsZWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVuc2No
ZWR1bGVSZWxheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vQXRvbWljU3RyaW5nLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EZXBy
ZWNhdGVkQXJyYXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFsbG9jYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmZy
ZWVIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL0Zsb2F0UG9pbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9GbG9hdFJlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GbG9hdFNpemUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9J
bWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0ludFBvaW50Lmg6CisgICAgICAgICogcGxhdGZv
cm0vSW50UmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW50UmVjdDo6aW5mbGF0ZVgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50UmVjdDo6aW5mbGF0ZVkpOgorICAgICAgICAqIHBsYXRmb3JtL0lu
dFNpemUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVN0cmluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TdHJlYW1pbmdUZXh0RGVjb2RlcklDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHJlYW1p
bmdUZXh0RGVjb2RlcklDVTo6Y29udmVydCk6CisgICAgICAgICogcGxhdGZvcm0vU3RyaW5nSW1w
bC5oOgorICAgICAgICAqIHBsYXRmb3JtL1RyYW5zZmVySm9iLmg6CisgICAgICAgICogcGxhdGZv
cm0vVHJhbnNmZXJKb2JJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmZXJKb2JJ
bnRlcm5hbDo6VHJhbnNmZXJKb2JJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vV2lkZ2V0
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvQ29sb3JNYWMubW06CisgICAgICAgICgrW1dlYkNvcmVDb250cm9sVGlu
dE9ic2VydmVyIFdlYkNvcmVdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRmxvYXRQb2ludE1h
Yy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRmxvYXRSZWN0TWFjLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9GbG9hdFNpemVNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL0lu
dFBvaW50TWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9JbnRSZWN0TWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9JbnRTaXplTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9iaWRpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFJ1bik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAg
ICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRXJyb3JG
dW5jKToKKyAgICAgICAgKiB4cGF0aC9pbXBsL1hQYXRoR3JhbW1hci55OgorCiAyMDA2LTA3LTMx
ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKb2huIGFuZCBBbmRlcnMuCkluZGV4OiBXZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9jb25maWcuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQ
IDEKIAogI2lmbmRlZiBDR0ZMT0FUX0RFRklORUQKLSNpZiBfX0xQNjRfXworI2lmZGVmIF9fTFA2
NF9fCiB0eXBlZGVmIGRvdWJsZSBDR0Zsb2F0OwogI2Vsc2UKIHR5cGVkZWYgZmxvYXQgQ0dGbG9h
dDsKQEAgLTM3LDcgKzM3LDcgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogCiAjZW5kaWYKIAot
I2lmIFdJTjMyCisjaWZkZWYgV0lOMzIKIAogI2lmbmRlZiBfV0lOMzJfV0lOTlQKICNkZWZpbmUg
X1dJTjMyX1dJTk5UIDB4MDUwMApAQCAtNTcsNyArNTcsNyBAQCB0eXBlZGVmIGZsb2F0IENHRmxv
YXQ7CiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KIAotI2VuZGlmCisjZW5kaWYgLyogV0lOMzIgKi8K
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAwLDIzICsxNjAwLDYg
QEAKIAkJRkFFMDQxOTAwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9hZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUUwNDE4RTA5NzU5NkM5
MDAwNTQwQkUgLyogU1ZHSW1hZ2VMb2FkZXIuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUg
c2VjdGlvbiAqLwogCi0vKiBCZWdpbiBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KLQkJMTRERkIy
MDAwQTdERjI1NTAwMThGNzY5IC8qIERldmVsb3BtZW50ICovID0gewotCQkJaXNhID0gUEJYQnVp
bGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5P
OwotCQkJfTsKLQkJCW5hbWUgPSBEZXZlbG9wbWVudDsKLQkJfTsKLQkJMTRERkIyMDEwQTdERjI1
NTAwMThGNzY5IC8qIERlcGxveW1lbnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhCdWlsZFN0eWxlOwot
CQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwotCQkJfTsK
LQkJCW5hbWUgPSBEZXBsb3ltZW50OwotCQl9OwotLyogRW5kIFBCWEJ1aWxkU3R5bGUgc2VjdGlv
biAqLwotCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCQlERDA0
MUZGMDA5RDlFMzI1MDAxMEFGMkEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwpAQCAtMzk5NCw2ICszOTc3LDggQEAKIAkJCQk5
MzVDNDc1RTA5QUM0Q0FFMDBBNkFBQjQgLyogSGlzdG9yeU1hYy5tbSAqLywKIAkJCQlGNTg3ODRG
RjAyREUzNzU5MDFFQTQxMjIgLyogSmF2YUFwcGxldFdpZGdldC5tbSAqLywKIAkJCQk5M0U0N0M1
QjA5QkUyQkJCMDAxOUM1QzEgLyogUGFnZU1hYy5tbSAqLywKKwkJCQk1NTk5OEE1QTA1MkI1OUND
MDAxN0E2QzEgLyogV2ViQ29yZUFYT2JqZWN0LmggKi8sCisJCQkJNTU5OThBNUIwNTJCNTlDQzAw
MTdBNkMxIC8qIFdlYkNvcmVBWE9iamVjdC5tbSAqLywKIAkJCQlGNUIyQTRGQzAyRTIyMjBGMDE4
NjM1Q0IgLyogV2ViQ29yZUNhY2hlLmggKi8sCiAJCQkJRjVCMkE0RkQwMkUyMjIwRjAxODYzNUNC
IC8qIFdlYkNvcmVDYWNoZS5tbSAqLywKIAkJCQlCRUY3RUVBMDA1RkY4RjBEMDA5NzE3RUUgLyog
V2ViQ29yZUVkaXRDb21tYW5kLmggKi8sCkBAIC00MDI3LDggKzQwMTIsNiBAQAogCQkJCUY1ODc4
NTU1MDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlVmlld0ZhY3RvcnkubSAqLywKIAkJCQk1MTUw
QzJBMTA3MDI2MjkwMDBBRjY0MkMgLyogV2ViRGFzaGJvYXJkUmVnaW9uLmggKi8sCiAJCQkJNTE1
MEMyQTUwNzAyNjI5ODAwQUY2NDJDIC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5tICovLAotCQkJCTU1
OTk4QTVBMDUyQjU5Q0MwMDE3QTZDMSAvKiBXZWJDb3JlQVhPYmplY3QuaCAqLywKLQkJCQk1NTk5
OEE1QjA1MkI1OUNDMDAxN0E2QzEgLyogV2ViQ29yZUFYT2JqZWN0Lm1tICovLAogCQkJKTsKIAkJ
CXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjQ2MSwxMiArNjQ0
NCw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9
IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5
QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
UHJvamVjdCAiV2ViQ29yZSIgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJfTsKLQkJCWJ1
aWxkU3R5bGVzID0gKAotCQkJCTE0REZCMjAwMEE3REYyNTUwMDE4Rjc2OSAvKiBEZXZlbG9wbWVu
dCAqLywKLQkJCQkxNERGQjIwMTBBN0RGMjU1MDAxOEY3NjkgLyogRGVwbG95bWVudCAqLywKLQkJ
CSk7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgK
IAkJCQlFbmdsaXNoLApAQCAtNzQ1MSw2ICs3NDI4LDcgQEAKIAkJCQkJIi1Xbm8tZm9ybWF0LXky
ayIsCiAJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAogCQkJCQkiLVduby1sb25nLWRvdWJs
ZSIsCisJCQkJCSItV3VuZGVmIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAg
LTc0ODgsNiArNzQ2Niw3IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11
bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVd1bmRl
ZiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTc1MjIsNiArNzUwMSw3
IEBACiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVy
IiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVd1bmRlZiIsCiAJCQkJKTsKIAkJ
CX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJD
b3JlQVhPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVB
WE9iamVjdC5tbQkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29y
ZUFYT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBzdGF0aWMg
dm9pZCBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRSZXBsCiAKIC0gKGlkKWRvQVhUZXh0TWFya2Vy
UmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2VyczogKE5TQXJyYXkgKikgbWFya2VycwogewotI2lm
IE1BUktFUkFSUkFZX1NFTEZfVEVTVAorI2lmIGRlZmluZWQoTUFSS0VSQVJSQVlfU0VMRl9URVNU
KSAmJiBNQVJLRVJBUlJBWV9TRUxGX1RFU1QKICAgICBXZWJDb3JlVGV4dE1hcmtlclJhbmdlICp0
bXIgPSBbc2VsZiBnZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZV07CiAgICAgV2ViQ29yZVRleHRN
YXJrZXIgKnRtMSA9IEFYVGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0bXIpOwogICAgIFdl
YkNvcmVUZXh0TWFya2VyICp0bTIgPSBBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0
bXIpOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueQkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBzdGF0aWMgaW5saW5l
IGludCBnZXRWYWx1ZUlEKGNvbnN0IGNoYXIqCiAgICAgcmV0dXJuIHZhbC0+aWQ7CiB9CiAKKyNk
ZWZpbmUgWVlNQVhERVBUSCAxMDAwMAogI2RlZmluZSBZWURFQlVHIDAKICNkZWZpbmUgWVlQQVJT
RV9QQVJBTSBwYXJzZXIKIApJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcAkocmV2aXNp
b24gMTU3MjApCisrKyBXZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDE0ICsyMiwxNSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBB
Vk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JTCisjaWZkZWYgQVZPSURfU1RBVElDX0NPTlNUUlVDVE9S
UwogI2RlZmluZSBDU1NfTUVESUFRVUVSWV9OQU1FU19ISURFX0dMT0JBTFMgMQogI2VuZGlmCiAK
ICNpbmNsdWRlICJNZWRpYUZlYXR1cmVOYW1lcy5oIgogI2luY2x1ZGUgIlN0YXRpY0NvbnN0cnVj
dG9ycy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1l
cyB7CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTWVkaWFGZWF0dXJlTmFtZXMgewog
CiAjZGVmaW5lIERFRklORV9NRURJQUZFQVRVUkVfR0xPQkFMKG5hbWUsIHN0cikgXAogICAgIERF
RklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBuYW1lIyNNZWRpYUZlYXR1cmUsIHN0cikKQEAgLTUw
LDQgKzUxLDUgQEAgdm9pZCBpbml0KCkKICAgICB9CiB9CiAKLX0gfQorfSAvLyBuYW1lc3BhY2Ug
TWVkaWFGZWF0dXJlTmFtZXMKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
Y3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFG
ZWF0dXJlTmFtZXMuaAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL2Nzcy9NZWRpYUZlYXR1
cmVOYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw4IEBACiAKICNpbmNsdWRlICJB
dG9taWNTdHJpbmcuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgTWVkaWFGZWF0
dXJlTmFtZXMgeworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIG5hbWVzcGFjZSBNZWRpYUZlYXR1
cmVOYW1lcyB7CiAKICNkZWZpbmUgQ1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFG
RUFUVVJFKG1hY3JvKSBcCiAgICAgbWFjcm8oY29sb3IsICJjb2xvciIpIFwKQEAgLTU0LDE1ICs1
NSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBNZWRpYUZlYXR1CiAgICAgbWFj
cm8obWluX3dpZHRoLCAibWluLXdpZHRoIikgXAogLy8gZW5kIG9mIG1hY3JvCiAKLSNpZiAhQ1NT
X01FRElBUVVFUllfTkFNRVNfSElERV9HTE9CQUxTCisjaWZuZGVmIENTU19NRURJQVFVRVJZX05B
TUVTX0hJREVfR0xPQkFMUwogICAgICNkZWZpbmUgQ1NTX01FRElBUVVFUllfTkFNRVNfREVDTEFS
RShuYW1lLCBzdHIpIGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgbmFtZSMjTWVkaWFGZWF0dXJl
OwogICAgIENTU19NRURJQVFVRVJZX05BTUVTX0ZPUl9FQUNIX01FRElBRkVBVFVSRShDU1NfTUVE
SUFRVUVSWV9OQU1FU19ERUNMQVJFKQogICAgICN1bmRlZiBDU1NfTUVESUFRVUVSWV9OQU1FU19E
RUNMQVJFCiAjZW5kaWYKIAotICAgICB2b2lkIGluaXQoKTsKLX0gfQotCi0jZW5kaWYKKyAgICAg
ICAgdm9pZCBpbml0KCk7CiAKKyAgICB9IC8vIG5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1lcwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgLy8gTUVESUFGRUFUVVJFTkFNRVNfSApJ
bmRleDogV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9jc3NwYXJzZXIuY3BwCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NjksNyArMjY2OSw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUJvcmRlckltYWdlKGludCBwcm8KICAgICByZXR1cm4gY29udGV4dC5mYWlsZWQoKTsK
IH0KIAotI2lmIENTU19ERUJVRworI2lmZGVmIENTU19ERUJVRwogCiBzdGF0aWMgaW5saW5lIGlu
dCB5eWVycm9yKGNvbnN0IGNoYXIgKnN0cikKIHsKSW5kZXg6IFdlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCShy
ZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03ODMsNyArNzgzLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3RpdmUo
Ym9vbCBkb3duLAogICAgICAgICAgICAgLy8gdG8gcmVwYWludCB0aGUgImRvd24iIHN0YXRlIG9m
IHRoZSBjb250cm9sIGlzIGFib3V0IHRoZSBzYW1lIHRpbWUgYXMgaXQgd291bGQgdGFrZSB0byBy
ZXBhaW50IHRoZQogICAgICAgICAgICAgLy8gInVwIiBzdGF0ZS4gIE9uY2UgeW91IGFzc3VtZSB0
aGlzLCB5b3UgY2FuIGp1c3QgZGVsYXkgZm9yIDEwMG1zIC0gdGhhdCB0aW1lIChhc3N1bWluZyB0
aGF0IGFmdGVyIHlvdQogICAgICAgICAgICAgLy8gbGVhdmUgdGhpcyBtZXRob2QsIGl0IHdpbGwg
YmUgYWJvdXQgdGhhdCBsb25nIGJlZm9yZSB0aGUgZmx1c2ggb2YgdGhlIHVwIHN0YXRlIGhhcHBl
bnMgYWdhaW4pLgotI2lmIEhBVkVfRlVOQ19VU0xFRVAKKyNpZmRlZiBIQVZFX0ZVTkNfVVNMRUVQ
CiAgICAgICAgICAgICBkb3VibGUgc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsKICNlbmRpZgog
CkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3RpdmUoYm9vbCBk
b3duLAogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBGSVhNRTogRmluZCBhIHN1YnN0aXR1
dGUgZm9yIHVzbGVlcCBmb3IgV2luMzIuCiAgICAgICAgICAgICAvLyBCZXR0ZXIgeWV0LCBjb21l
IHVwIHdpdGggYSB3YXkgb2YgZG9pbmcgdGhpcyB0aGF0IGRvZXNuJ3QgdXNlIHRoaXMgc29ydCBv
ZiB0aGluZyBhdCBhbGwuICAgICAgICAgICAgCi0jaWYgSEFWRV9GVU5DX1VTTEVFUAorI2lmZGVm
IEhBVkVfRlVOQ19VU0xFRVAKICAgICAgICAgICAgIC8vIE5vdyBwYXVzZSBmb3IgYSBzbWFsbCBh
bW91bnQgb2YgdGltZSAoMS8xMHRoIG9mIGEgc2Vjb25kIGZyb20gYmVmb3JlIHdlIHJlcGFpbnRl
ZCBpbiB0aGUgcHJlc3NlZCBzdGF0ZSkKICAgICAgICAgICAgIGRvdWJsZSByZW1haW5pbmdUaW1l
ID0gMC4xIC0gKGN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUpOwogICAgICAgICAgICAgaWYgKHJl
bWFpbmluZ1RpbWUgPiAwKQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCw3ICs1NDAsNyBAQCB2b2lk
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogCiB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgp
CiB7Ci0jaWYgU1BFRURfREVCVUcgPCAxCisjaWYgZGVmaW5lZChTUEVFRF9ERUJVRykgJiYgU1BF
RURfREVCVUcgPCAxCiAgICAgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOwogI2VuZGlmCiAgICAg
Q29udGFpbmVyTm9kZTo6YXR0YWNoKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdl
YkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1
YmxpYzoKICAgICBib29sIG5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZTsgfQogICAgIHZvaWQgc2V0TmVlZHNGb2N1
c0FwcGVhcmFuY2VVcGRhdGUoYm9vbCBiKSB7IG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGUg
PSBiOyB9CiAgICAgCi0jaWYgIU5ERUJVRworI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZv
aWQgZHVtcChUZXh0U3RyZWFtICpzdHJlYW0sIERlcHJlY2F0ZWRTdHJpbmcgaW5kID0gIiIpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyICpidWZmZXIsIHVu
c2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCShyZXZpc2lv
biAxNTcyMCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEFWT0lEX1NUQVRJ
Q19DT05TVFJVQ1RPUlMKKyNpZmRlZiBBVk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JTCiAjZGVmaW5l
IERPTV9FVkVOVF9OQU1FU19ISURFX0dMT0JBTFMgMQogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJ
KHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Niw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIEV2ZW50
TmFtZXMKICAgICBcCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKLSNpZiAh
RE9NX0VWRU5UX05BTUVTX0hJREVfR0xPQkFMUworI2lmbmRlZiBET01fRVZFTlRfTkFNRVNfSElE
RV9HTE9CQUxTCiAgICAgI2RlZmluZSBET01fRVZFTlRfTkFNRVNfREVDTEFSRShuYW1lKSBleHRl
cm4gY29uc3QgQXRvbWljU3RyaW5nIG5hbWUjI0V2ZW50OwogICAgIERPTV9FVkVOVF9OQU1FU19G
T1JfRUFDSChET01fRVZFTlRfTkFNRVNfREVDTEFSRSkKICAgICAjdW5kZWYgRE9NX0VWRU5UX05B
TUVTX0RFQ0xBUkUKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNv
cmUvZG9tL05hbWVkQXR0ck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogCi0jaWYgX19P
QkpDX18KKyNpZmRlZiBfX09CSkNfXwogI2RlZmluZSBpZCBpZF9BVk9JRF9LRVlXT1JECiAjZW5k
aWYKIApJbmRleDogV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIFBvc2l0aW9u
OjpkZWJ1Z1Bvc2l0aW9uKGNvbnN0IGNoYXIgCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUG9z
aXRpb24gWyVzXTogJXMgWyVwXSBhdCAlZFxuIiwgbXNnLCBub2RlKCktPm5vZGVOYW1lKCkuZGVw
cmVjYXRlZFN0cmluZygpLmxhdGluMSgpLCBub2RlKCksIG9mZnNldCgpKTsKIH0KIAotI2lmICFO
REVCVUcKKyNpZm5kZWYgTkRFQlVHCiAKIHZvaWQgUG9zaXRpb246OmZvcm1hdEZvckRlYnVnZ2Vy
KGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAJKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCi0jaWYgQVZPSURfU1RBVElDX0NPTlNUUlVDVE9SUworI2lmZGVmIEFWT0lEX1NUQVRJQ19D
T05TVFJVQ1RPUlMKICNkZWZpbmUgV0VCQ09SRV9RVUFMSUZJRUROQU1FX0hJREVfR0xPQkFMUyAx
CiAjZWxzZQogI2RlZmluZSBRTkFNRV9ERUZBVUxUX0NPTlNUUlVDVE9SCkluZGV4OiBXZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIFF1YWxpZmllZE5h
bWVJbXBsKiBtX2ltcGw7CiB9OwogCi0jaWYgIVdFQkNPUkVfUVVBTElGSUVETkFNRV9ISURFX0dM
T0JBTFMKKyNpZm5kZWYgV0VCQ09SRV9RVUFMSUZJRUROQU1FX0hJREVfR0xPQkFMUwogZXh0ZXJu
IGNvbnN0IFF1YWxpZmllZE5hbWUgYW55TmFtZTsKIGlubGluZSBjb25zdCBRdWFsaWZpZWROYW1l
JiBhbnlRTmFtZSgpIHsgcmV0dXJuIGFueU5hbWU7IH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9k
b20vUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9SYW5nZS5oCShyZXZpc2lvbiAx
NTcyMCkKKysrIFdlYkNvcmUvZG9tL1JhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsx
MTAsOCBAQCBwdWJsaWM6CiAKICAgICBQb3NpdGlvbiBlZGl0aW5nU3RhcnRQb3NpdGlvbigpIGNv
bnN0OwogCi0jaWYgIU5ERUJVRwotICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciAqYnVm
ZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIGZv
cm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICNl
bmRpZgogCiBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxNTcyMCkK
KysrIFdlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMiw3
ICs5MjIsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6ZXJyb3IoRXJyb3JUeXBlIHR5cGUsCiAgICAg
aWYgKG1fcGFyc2VyU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgV0lOMzIKKyNpZmRl
ZiBXSU4zMgogICAgIGNoYXIgbVsxMDI0XTsKICAgICB2c25wcmludGYobSwgc2l6ZW9mKG0pIC0g
MSwgbWVzc2FnZSwgYXJncyk7CiAjZWxzZQpAQCAtOTM1LDcgKzkzNSw3IEBAIHZvaWQgWE1MVG9r
ZW5pemVyOjplcnJvcihFcnJvclR5cGUgdHlwZSwKICAgICBlbHNlCiAgICAgICAgIGhhbmRsZUVy
cm9yKHR5cGUsIG0sIGxpbmVOdW1iZXIoKSwgY29sdW1uTnVtYmVyKCkpOwogCi0jaWYgIVdJTjMy
CisjaWZuZGVmIFdJTjMyCiAgICAgZnJlZShtKTsKICNlbmRpZgogfQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9r
ZW5pemVyLmNwcAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXpl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MywxMCArMzYzLDEwIEBAIEhUTUxUb2tlbml6ZXI6
OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnNjcmkKICAgICAgICAgaWYgKCFzY3JpcHRTcmMuaXNFbXB0
eSgpICYmIG1fZG9jLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAvLyBmb3JnZXQgd2hhdCB3ZSBq
dXN0IGdvdDsgbG9hZCBmcm9tIHNyYyB1cmwgaW5zdGVhZAogICAgICAgICAgICAgaWYgKCFwYXJz
ZXItPnNraXBNb2RlKCkgJiYgIWZvbGxvd2luZ0ZyYW1lc2V0KSB7Ci0gICAgI2lmIElOU1RSVU1F
TlRfTEFZT1VUX1NDSEVEVUxJTkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5H
CiAgICAgICAgICAgICAgICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiUmVxdWVzdGluZyBzY3JpcHQgYXQgdGltZSAlZFxuIiwgbV9kb2Mt
PmVsYXBzZWRUaW1lKCkpOwotICAgICNlbmRpZgorI2VuZGlmCiAgICAgICAgICAgICAgICAgLy8g
VGhlIHBhcnNlciBtaWdodCBoYXZlIGJlZW4gc3RvcHBlZCBieSBmb3IgZXhhbXBsZSBhIHdpbmRv
dy5jbG9zZSBjYWxsIGluIGFuIGVhcmxpZXIgc2NyaXB0LgogICAgICAgICAgICAgICAgIC8vIElm
IHNvLCB3ZSBkb24ndCB3YW50IHRvIGxvYWQgc2NyaXB0cy4KICAgICAgICAgICAgICAgICBpZiAo
IW1fcGFyc2VyU3RvcHBlZCAmJiAoY3MgPSBtX2RvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3Jp
cHQoc2NyaXB0U3JjLCBzY3JpcHRTcmNDaGFyc2V0KSApKQpAQCAtMzc2LDEzICszNzYsMTIgQEAg
SFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXplcjo6c2NyaQogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgICAgICBzY3JpcHRT
cmM9RGVwcmVjYXRlZFN0cmluZzo6bnVsbDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAg
ICAjaWZkZWYgVE9LRU5fREVCVUcKKyAgICAgICAgfSBlbHNlIHsKKyNpZmRlZiBUT0tFTl9ERUJV
RwogICAgICAgICAgICAga2REZWJ1ZyggNjAzNiApIDw8ICItLS1TVEFSVCBTQ1JJUFQtLS0iIDw8
IGVuZGw7CiAgICAgICAgICAgICBrZERlYnVnKCA2MDM2ICkgPDwgRGVwcmVjYXRlZFN0cmluZyhz
Y3JpcHRDb2RlLCBzY3JpcHRDb2RlU2l6ZSkgPDwgZW5kbDsKICAgICAgICAgICAgIGtkRGVidWco
IDYwMzYgKSA8PCAiLS0tRU5EIFNDUklQVC0tLSIgPDwgZW5kbDsKLSAgICAjZW5kaWYKKyNlbmRp
ZgogICAgICAgICAgICAgc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgICAgICAvLyBQYXJzZSBzY3Jp
cHRDb2RlIGNvbnRhaW5pbmcgPHNjcmlwdD4gaW5mbwogICAgICAgICAgICAgZG9TY3JpcHRFeGVj
ID0gdHJ1ZTsKQEAgLTQ3Nyw3ICs0NzYsNyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9r
ZW5pemVyOjpzY3JpCiAgICAgU2VnbWVudGVkU3RyaW5nIHByZXBlbmRpbmdTcmM7CiAgICAgY3Vy
cmVudFByZXBlbmRpbmdTcmMgPSAmcHJlcGVuZGluZ1NyYzsKIAotI2lmIElOU1RSVU1FTlRfTEFZ
T1VUX1NDSEVEVUxJTkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAg
aWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50ZigiYmVnaW5uaW5nIHNj
cmlwdCBleGVjdXRpb24gYXQgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgpA
QCAtNDg4LDcgKzQ4Nyw3IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnNj
cmkKIAogICAgIHN0YXRlLnNldEFsbG93WWllbGQodHJ1ZSk7CiAKLSNpZiBJTlNUUlVNRU5UX0xB
WU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAg
IGlmICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoImVuZGluZyBzY3Jp
cHQgZXhlY3V0aW9uIGF0ICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKQEAg
LTgwOCw3ICs4MDcsNyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpwYXJz
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBUYWdOYW1lOgogICAgICAgICB7Ci0jaWYgZGVmaW5l
ZChUT0tFTl9ERUJVRykgJiYgIFRPS0VOX0RFQlVHID4gMQorI2lmIGRlZmluZWQoVE9LRU5fREVC
VUcpICYmIFRPS0VOX0RFQlVHID4gMQogICAgICAgICAgICAgcURlYnVnKCJUYWdOYW1lIik7CiAj
ZW5kaWYKICAgICAgICAgICAgIGlmIChzZWFyY2hDb3VudCA+IDApCkBAIC0xMjg5LDcgKzEyODgs
NyBAQCBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjpjb250aW51ZVByb2NlCiAgICAgICAgICAg
ICAgICAgKG1fZG9jLT5kb2N1bWVudEVsZW1lbnQoKS0+aWQoKSAhPSBJRF9IVE1MIHx8IG1fZG9j
LT5ib2R5KCkpKSkgeyovCiAgICAgICAgICAgICAvLyBTY2hlZHVsZSB0aGUgdGltZXIgdG8ga2Vl
cCBwcm9jZXNzaW5nIGFzIHNvb24gYXMgcG9zc2libGUuCiAgICAgICAgICAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKLSNpZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYg
SU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1l
KCkgLSBzdGFydFRpbWUgPiB0b2tlbml6ZXJUaW1lRGVsYXkpCiAgICAgICAgICAgICAgICAgcHJp
bnRmKCJEZWZlcnJpbmcgcHJvY2Vzc2luZyBvZiBkYXRhIGJlY2F1c2UgNTAwbXMgZWxhcHNlZCBh
d2F5IGZyb20gZXZlbnQgbG9vcC5cbiIpOwogI2VuZGlmCkBAIC0xMzM1LDcgKzEzMzQsNyBAQCBi
b29sIEhUTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlCiAgICAgYm9vbCB3YXNJbldy
aXRlID0gaW5Xcml0ZTsKICAgICBpbldyaXRlID0gdHJ1ZTsKICAgICAKLSNpZiBJTlNUUlVNRU5U
X0xBWU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwog
ICAgIGlmICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIkJlZ2lubmlu
ZyB3cml0ZSBhdCB0aW1lICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKQEAg
LTE0NTMsNyArMTQ1Miw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVu
dGUKICAgICAgICAgfQogICAgIH0KICAgICAKLSNpZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVM
SU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghbV9kb2Mt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIkVuZGluZyB3cml0ZSBhdCB0aW1lICVk
XG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKQEAgLTE0ODcsNyArMTQ4Niw3IEBA
IGJvb2wgSFRNTFRva2VuaXplcjo6cHJvY2Vzc2luZ0RhdGEoKSBjb24KIAogdm9pZCBIVE1MVG9r
ZW5pemVyOjp0aW1lckZpcmVkKFRpbWVyPEhUTUxUb2tlbml6ZXI+KikKIHsKLSNpZiBJTlNUUlVN
RU5UX0xBWU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElO
RwogICAgIGlmICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIkJlZ2lu
bmluZyB0aW1lciB3cml0ZSBhdCB0aW1lICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAj
ZW5kaWYKQEAgLTE2NjEsNyArMTY2MCw3IEBAIHZvaWQgSFRNTFRva2VuaXplcjo6ZW5sYXJnZVNj
cmlwdEJ1ZmZlcigKIAogdm9pZCBIVE1MVG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopCiB7Ci0jaWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORworI2lmZGVmIElO
U1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQo
KSkKICAgICAgICAgcHJpbnRmKCJzY3JpcHQgbG9hZGVkIGF0ICVkXG4iLCBtX2RvYy0+ZWxhcHNl
ZFRpbWUoKSk7CiAjZW5kaWYKQEAgLTE2ODksNyArMTY4OCw3IEBAIHZvaWQgSFRNTFRva2VuaXpl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGUKICAgICAgICAgUmVmUHRyPE5vZGU+IG4gPSBzY3JpcHRO
b2RlOwogICAgICAgICBzY3JpcHROb2RlID0gMDsKIAotI2lmIElOU1RSVU1FTlRfTEFZT1VUX1ND
SEVEVUxJTkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAgICAgIGlm
ICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgcHJpbnRmKCJleHRlcm5hbCBz
Y3JpcHQgYmVnaW5uaW5nIGV4ZWN1dGlvbiBhdCAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkp
OwogI2VuZGlmCkBAIC0xNzA2LDcgKzE3MDUsNyBAQCB2b2lkIEhUTUxUb2tlbml6ZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlCiAgICAgICAgIGZpbmlzaGVkID0gcGVuZGluZ1NjcmlwdHMuaXNFbXB0
eSgpOwogICAgICAgICBpZiAoZmluaXNoZWQpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0TG9h
ZGluZ0V4dFNjcmlwdChmYWxzZSk7Ci0jaWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwor
I2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICAgICAgICAgIGlmICghbV9k
b2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHByaW50ZigiZXh0ZXJuYWwgc2Ny
aXB0IGZpbmlzaGVkIGV4ZWN1dGlvbiBhdCAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVy
UXVhcnR6LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0Nh
bnZhc0ZpbHRlclF1YXJ0ei5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUva2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogCiAjaW1wb3J0ICJLQ2FudmFzRmlsdGVycy5oIgogCi0jaWYgX19PQkpDX18K
KyNpZmRlZiBfX09CSkNfXwogQGNsYXNzIENJRmlsdGVyOwogQGNsYXNzIENJSW1hZ2U7CiAjZWxz
ZQpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1
YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5k
ZXJpbmdEZXZpY2VRdWFydHouaAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL2tjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKIHR5cGVkZWYgc3RydWN0IENHUmVjdCBDR1JlY3Q7CiB0eXBlZGVmIHN0
cnVjdCBDR0NvbnRleHQgKkNHQ29udGV4dFJlZjsKIAotI2lmIF9fT0JKQ19fCisjaWZkZWYgX19P
QkpDX18KIEBjbGFzcyBOU0dyYXBoaWNzQ29udGV4dDsKICNlbHNlCiBjbGFzcyBOU0dyYXBoaWNz
Q29udGV4dDsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTU3
MjApCisrKyBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8a3N2ZzIvc3ZnL1NWR1BhaW50Lmg+CiAjaW5j
bHVkZSA8a3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oPgogCi0jaWYgV0lOMzIKKyNpZmRl
ZiBXSU4zMgogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludDY0X3Q7CiAjZW5kaWYKIApJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGwJKHJldmlzaW9uIDE1NzIwKQorKysg
V2ViQ29yZS9rc3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGwJKHdvcmtpbmcgY29weSkKQEAgLTIx
NCw3ICsyMTQsNyBAQCBzdWIgcHJpbnROYW1lc0hlYWRlckZpbGUKIAl9CiAJCiAJbXkgJGxvd2Vy
TmFtZXNwYWNlID0gbGMoJG5hbWVzcGFjZVByZWZpeCk7Ci0JcHJpbnQgIiNpZiAhRE9NXyR7bmFt
ZXNwYWNlfU5BTUVTX0hJREVfR0xPQkFMU1xuIjsKKwlwcmludCAiI2lmbmRlZiBET01fJHtuYW1l
c3BhY2V9TkFNRVNfSElERV9HTE9CQUxTXG4iOwogICAgIHByaW50ICIvLyBOYW1lc3BhY2VcbiI7
CiAgICAgcHJpbnQgImV4dGVybiBjb25zdCBXZWJDb3JlOjpBdG9taWNTdHJpbmcgJHtsb3dlck5h
bWVzcGFjZX1OYW1lc3BhY2VVUkk7XG5cbiI7CiAKQEAgLTI1MCw3ICsyNTAsNyBAQCBzdWIgcHJp
bnROYW1lc0NwcEZpbGUKIAogcHJpbnQgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKIAotcHJp
bnQgIiNpZiBBVk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JTXG4iOworcHJpbnQgIiNpZmRlZiBBVk9J
RF9TVEFUSUNfQ09OU1RSVUNUT1JTXG4iOwogcHJpbnQgIiNkZWZpbmUgRE9NXyR7bmFtZXNwYWNl
fU5BTUVTX0hJREVfR0xPQkFMUyAxXG4iOwogcHJpbnQgIiNlbHNlXG4iOwogcHJpbnQgIiNkZWZp
bmUgUU5BTUVfREVGQVVMVF9DT05TVFJVQ1RPUiAxXG4iOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
Q2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNv
dXJjZS5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgogCi0jaWYgX19PQkpDX18KKyNpZmRlZiBfX09CSkNfXwog
QGNsYXNzIE5TRGF0YTsKIEBjbGFzcyBOU1VSTFJlc3BvbnNlOwogI2Vsc2UKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL0xvYWRlckZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0xvYWRlckZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvbG9hZGVyL0xv
YWRlckZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBfX09CSkNfXworI2lmZGVmIF9fT0JKQ19fCiBAY2xh
c3MgTlNEaWN0aW9uYXJ5OwogQGNsYXNzIE5TU3RyaW5nOwogQGNsYXNzIE5TVVJMUmVzcG9uc2U7
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9sb2FkZXIuaAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSAiRGVwcmVjYXRlZFB0ckxpc3QuaCIKIAotI2lmIF9fT0JKQ19fCisjaWZk
ZWYgX19PQkpDX18KIEBjbGFzcyBOU0RhdGE7CiBAY2xhc3MgTlNVUkxSZXNwb25zZTsKICNlbHNl
CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAJKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KIAotI2lmICFXSU4zMgorI2lmbmRlZiBXSU4zMgogI2luY2x1ZGUg
PHVuaXN0ZC5oPgogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCShyZXZpc2lvbiAxNTcyMCkK
KysrIFdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBAIHVzaW5nIHN0ZDo6c3dhcDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBi
ZWxvbmdzIGluIHNvbWUgaGVhZGVyIGZpbGUgd2hlcmUgbXVsdGlwbGUgY2xpZW50cyBjYW4gc2hh
cmUgaXQuCi0jaWYgV0lOMzIKKyNpZmRlZiBXSU4zMgogaW50IHNucHJpbnRmKGNoYXIqIHN0ciwg
c2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgYXJn
czsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OmNsZWFyKCkKIAogICAgIGQtPnJlc2V0KCk7CiAKLSNpZiBJTlNUUlVNRU5UX0xBWU9V
VF9TQ0hFRFVMSU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlm
IChkLT5sYXlvdXRUaW1lci5pc0FjdGl2ZSgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCkgJiYgIW1f
ZnJhbWUtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIktpbGxp
bmcgdGhlIGxheW91dCB0aW1lciBmcm9tIGEgY2xlYXIgYXQgJWRcbiIsIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmICAgIApAQCAtNDExLDcgKzQxMSw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChyb290UmVuZGVyZXIpCiAgICAgICAgICAgICBhcHBseU92ZXJmbG93
VG9WaWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7IC8vIFhNTC9YSFRNTCBVQXMg
dXNlIHRoZSByb290IGVsZW1lbnQuCi0jaWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwor
I2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICAgICAgaWYgKGQtPmZpcnN0
TGF5b3V0ICYmICFkb2N1bWVudC0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICBwcmludGYo
IkVsYXBzZWQgdGltZSBiZWZvcmUgZmlyc3QgbGF5b3V0OiAlZFxuIiwgZG9jdW1lbnQtPmVsYXBz
ZWRUaW1lKCkpOwogI2VuZGlmCkBAIC0xMTg1LDcgKzExODUsNyBAQCB2b2lkIEZyYW1lVmlldzo6
cmVwYWludFJlY3RhbmdsZShjb25zdCBJCiAKIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXRUaW1lckZp
cmVkKFRpbWVyPEZyYW1lVmlldz4qKQogewotI2lmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJ
TkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAgaWYgKG1fZnJhbWUt
PmRvY3VtZW50KCkgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQogICAg
ICAgICBwcmludGYoIkxheW91dCB0aW1lciBmaXJlZCBhdCAlZFxuIiwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKQEAgLTEyMTksNyArMTIxOSw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KCkKIAogICAgIGQtPmRlbGF5ZWRMYXlvdXQgPSBk
ZWxheSAhPSAwOwogCi0jaWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORworI2lmZGVmIElO
U1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIlNjaGVkdWxpbmcgbGF5b3V0IGZvciAl
ZFxuIiwgZGVsYXkpOwogI2VuZGlmCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIEZyYW1lVmll
dzo6dW5zY2hlZHVsZVJlbGF5b3V0KCkKICAgICBpZiAoIWQtPmxheW91dFRpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcK
KyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAgaWYgKG1fZnJhbWUtPmRv
Y3VtZW50KCkgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQogICAgICAg
ICBwcmludGYoIkxheW91dCB0aW1lciB1bnNjaGVkdWxlZCBhdCAlZFxuIiwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
QXRvbWljU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0F0b21pY1N0
cmluZy5jcHAJKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9BdG9taWNTdHJp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25m
aWcuaCIKIAotI2lmIEFWT0lEX1NUQVRJQ19DT05TVFJVQ1RPUlMKKyNpZmRlZiBBVk9JRF9TVEFU
SUNfQ09OU1RSVUNUT1JTCiAjZGVmaW5lIEFUT01JQ1NUUklOR19ISURFX0dMT0JBTFMgMQogI2Vu
ZGlmCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQXRvbWljU3RyaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9BdG9taWNTdHJpbmcuaAkocmV2aXNpb24gMTU3MjApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyAr
MTE0LDcgQEAgaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhcgogaW5saW5l
IGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0K
IAogLy8gRGVmaW5lIGV4dGVybmFsIGdsb2JhbCB2YXJpYWJsZXMgZm9yIHRoZSBjb21tb25seSB1
c2VkIGF0b21pYyBzdHJpbmdzLgotI2lmICFBVE9NSUNTVFJJTkdfSElERV9HTE9CQUxTCisjaWZu
ZGVmIEFUT01JQ1NUUklOR19ISURFX0dMT0JBTFMKICAgICBleHRlcm4gY29uc3QgQXRvbWljU3Ry
aW5nIG51bGxBdG9tOwogICAgIGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgZW1wdHlBdG9tOwog
ICAgIGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgdGV4dEF0b207CkBAIC0xMjIsNiArMTIyLDYg
QEAgaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaQogICAgIGV4dGVybiBj
b25zdCBBdG9taWNTdHJpbmcgc3RhckF0b207CiAjZW5kaWYKIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBdG9taWNTdHJpbmdfaApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9EZXByZWNhdGVkQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL0RlcHJlY2F0ZWRBcnJheS5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vRGVwcmVjYXRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogCiAgICAgVCAmb3BlcmF0b3JbXShpbnQgaSkgeyByZXR1cm4gKihUICopaW1wbC5hdChp
KTsgfQogICAgIGNvbnN0IFQgJm9wZXJhdG9yW10oaW50IGkpIGNvbnN0IHsgcmV0dXJuICooVCAq
KWltcGwuYXQoaSk7IH0KLSNpZiBXSU4zMgorI2lmZGVmIFdJTjMyCiAgICAgLy8gRklYTUU6IExv
b2sgaW50byB0aGlzIHN0cmFuZ2UgY29tcGlsZSBlcnJvciBvbiBXaW4zMi4KICAgICBUICZvcGVy
YXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuICooVCAqKWltcGwuYXQoaSk7IH0KICAgICBjb25z
dCBUICZvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuICooVCAqKWltcGwuYXQo
aSk7IH0KQEAgLTY2LDYgKzY2LDYgQEAgcHVibGljOgogCiB0eXBlZGVmIERlcHJlY2F0ZWRBcnJh
eTxjaGFyPiBEZXByZWNhdGVkQnl0ZUFycmF5OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZgorI2VuZGlmIC8vIEFSUkFZX0hfCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0Rl
cHJlY2F0ZWRTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVj
YXRlZFN0cmluZy5jcHAJKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9EZXBy
ZWNhdGVkU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhhbmRsZU5vZGVzCiAKIHN0YXRpYyBpbmxpbmUgRGVwcmVj
YXRlZFN0cmluZ0RhdGEgKiphbGxvY2F0ZUhhbmRsZSgpCiB7Ci0jaWYgQ0hFQ0tfRk9SX0hBTkRM
RV9MRUFLUworI2lmZGVmIENIRUNLX0ZPUl9IQU5ETEVfTEVBS1MKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RGVwcmVjYXRlZFN0cmluZ0RhdGEgKio+KGZhc3RNYWxsb2Moc2l6ZW9mKERlcHJlY2F0
ZWRTdHJpbmdEYXRhICopKSk7CiAjZW5kaWYKIApAQCAtMjUwNiw3ICsyNTA2LDcgQEAgc3RhdGlj
IEhhbmRsZU5vZGUgKmFsbG9jYXRlTm9kZShIYW5kbGVQYQogCiB2b2lkIGZyZWVIYW5kbGUoRGVw
cmVjYXRlZFN0cmluZ0RhdGEgKipfZnJlZSkKIHsKLSNpZiBDSEVDS19GT1JfSEFORExFX0xFQUtT
CisjaWZkZWYgQ0hFQ0tfRk9SX0hBTkRMRV9MRUFLUwogICAgIGZhc3RGcmVlKF9mcmVlKTsKICAg
ICByZXR1cm47CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRQb2ludC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRQb2ludC5oCShyZXZpc2lvbiAxNTcy
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBACiAKIHR5cGVkZWYgc3RydWN0IENHUG9pbnQgQ0dQb2ludDsKIAotI2lmIE5T
R0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCisjaWZkZWYgTlNHRU9NRVRS
WV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIHR5cGVkZWYgc3RydWN0IENHUG9pbnQg
TlNQb2ludDsKICNlbHNlCiB0eXBlZGVmIHN0cnVjdCBfTlNQb2ludCBOU1BvaW50OwpAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludChjb25zdCBDR1BvaW50Jik7CiAgICAg
b3BlcmF0b3IgQ0dQb2ludCgpIGNvbnN0OwogCi0jaWYgIU5TR0VPTUVUUllfVFlQRVNfU0FNRV9B
U19DR0dFT01FVFJZX1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dF
T01FVFJZX1RZUEVTCiAgICAgRmxvYXRQb2ludChjb25zdCBOU1BvaW50Jik7CiAgICAgb3BlcmF0
b3IgTlNQb2ludCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0
UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRSZWN0LmgJKHJldmlz
aW9uIDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFJlY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBDR1JlY3QgQ0dSZWN0OwogCi0j
aWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKKyNpZmRlZiBOU0dF
T01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogdHlwZWRlZiBzdHJ1Y3QgQ0dS
ZWN0IE5TUmVjdDsKICNlbHNlCiB0eXBlZGVmIHN0cnVjdCBfTlNSZWN0IE5TUmVjdDsKQEAgLTEw
MCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0KGNvbnN0IENHUmVjdCYpOwogICAg
IG9wZXJhdG9yIENHUmVjdCgpIGNvbnN0OwogCi0jaWYgIU5TR0VPTUVUUllfVFlQRVNfU0FNRV9B
U19DR0dFT01FVFJZX1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dF
T01FVFJZX1RZUEVTCiAgICAgRmxvYXRSZWN0KGNvbnN0IE5TUmVjdCYpOwogICAgIG9wZXJhdG9y
IE5TUmVjdCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0U2l6
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRTaXplLmgJKHJldmlzaW9u
IDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFNpemUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNyArMzEsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBDR1NpemUgQ0dTaXplOwogCi0jaWYg
TlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKKyNpZmRlZiBOU0dFT01F
VFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogdHlwZWRlZiBzdHJ1Y3QgQ0dTaXpl
IE5TU2l6ZTsKICNlbHNlCiB0eXBlZGVmIHN0cnVjdCBfTlNTaXplIE5TU2l6ZTsKQEAgLTExOCw2
ICsxMTgsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZsb2F0U2l6ZSYgCiAgICAg
cmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAhPSBiLmhlaWdodCgp
OwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEZs
b2F0U2l6ZV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDE1
NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU4LDcgKzE1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgS1JlbmRl
cmluZ0RldmljZUNvbnRleHQqIGNyZWF0ZVJlbmRlcmluZ0RldmljZUNvbnRleHQoKTsKICNlbmRp
ZgogCi0jaWYgV0lOMzIKKyNpZmRlZiBXSU4zMgogICAgICAgICBHcmFwaGljc0NvbnRleHQoSERD
KTsgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQuCiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vSW1hZ2UuaAkocmV2
aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL0ltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKIAogI2lmIF9fQVBQTEVf
XwotI2lmIF9fT0JKQ19fCisjaWZkZWYgX19PQkpDX18KIEBjbGFzcyBOU0ltYWdlOwogI2Vsc2UK
IGNsYXNzIE5TSW1hZ2U7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ludFBvaW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9JbnRQb2ludC5oCShyZXZpc2lvbiAxNTcyMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vSW50UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQAogCiB0eXBlZGVmIHN0cnVjdCBDR1BvaW50IENHUG9pbnQ7CiAKLSNpZiBOU0dFT01FVFJZ
X1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUworI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNf
U0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiB0eXBlZGVmIHN0cnVjdCBDR1BvaW50IE5TUG9pbnQ7
CiAjZWxzZQogdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKQEAgLTQwLDcgKzQwLDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKIAogI2VuZGlmCiAKLSNpZiBXSU4z
MgorI2lmZGVmIFdJTjMyCiB0eXBlZGVmIHN0cnVjdCB0YWdQT0lOVCBQT0lOVDsKICNlbmRpZgog
CkBAIC02NCwxNCArNjQsMTQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEludFBvaW50KGNvbnN0
IENHUG9pbnQmKTsgLy8gZG9uJ3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kK
ICAgICBvcGVyYXRvciBDR1BvaW50KCkgY29uc3Q7CiAKLSNpZiAhTlNHRU9NRVRSWV9UWVBFU19T
QU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKKyNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FT
X0NHR0VPTUVUUllfVFlQRVMKICAgICBleHBsaWNpdCBJbnRQb2ludChjb25zdCBOU1BvaW50Jik7
IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CiAgICAgb3BlcmF0
b3IgTlNQb2ludCgpIGNvbnN0OwogI2VuZGlmCiAKICNlbmRpZgogCi0jaWYgV0lOMzIKKyNpZmRl
ZiBXSU4zMgogICAgIEludFBvaW50KGNvbnN0IFBPSU5UJik7CiAgICAgb3BlcmF0b3IgUE9JTlQo
KSBjb25zdDsKICNlbmRpZgpAQCAtMTE3LDYgKzExNyw2IEBAIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgSW50UG9pbnQmIGEKICAgICByZXR1cm4gYS54KCkgIT0gYi54KCkgfHwgYS55KCkg
IT0gYi55KCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5k
aWYgLy8gSU5UUE9JTlRfSF8KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vSW50UmVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vSW50UmVjdC5oCShyZXZpc2lvbiAxNTcyMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vSW50UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBACiAKIHR5cGVkZWYgc3RydWN0IENHUmVjdCBDR1JlY3Q7CiAKLSNpZiBOU0dFT01FVFJZX1RZ
UEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUworI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FN
RV9BU19DR0dFT01FVFJZX1RZUEVTCiB0eXBlZGVmIHN0cnVjdCBDR1JlY3QgTlNSZWN0OwogI2Vs
c2UKIHR5cGVkZWYgc3RydWN0IF9OU1JlY3QgTlNSZWN0OwpAQCAtNDAsNyArNDAsNyBAQCB0eXBl
ZGVmIHN0cnVjdCBfTlNSZWN0IE5TUmVjdDsKIAogI2VuZGlmCiAKLSNpZiBXSU4zMgorI2lmZGVm
IFdJTjMyCiB0eXBlZGVmIHN0cnVjdCB0YWdSRUNUIFJFQ1Q7CiAjZW5kaWYKIApAQCAtOTAsMTgg
KzkwLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGludGVyc2VjdChjb25zdCBJbnRSZWN0Jik7CiAg
ICAgdm9pZCB1bml0ZShjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2b2lkIGluZmxhdGVYKGludCBk
eCkgeworICAgIHZvaWQgaW5mbGF0ZVgoaW50IGR4KQorICAgIHsKICAgICAgICAgbV9sb2NhdGlv
bi5zZXRYKG1fbG9jYXRpb24ueCgpIC0gZHgpOwogICAgICAgICBtX3NpemUuc2V0V2lkdGgobV9z
aXplLndpZHRoKCkgKyBkeCArIGR4KTsKICAgICB9Ci0gICAgdm9pZCBpbmZsYXRlWShpbnQgZHkp
IHsKKyAgICB2b2lkIGluZmxhdGVZKGludCBkeSkKKyAgICB7CiAgICAgICAgIG1fbG9jYXRpb24u
c2V0WShtX2xvY2F0aW9uLnkoKSAtIGR5KTsKICAgICAgICAgbV9zaXplLnNldEhlaWdodChtX3Np
emUuaGVpZ2h0KCkgKyBkeSArIGR5KTsKICAgICB9CiAgICAgdm9pZCBpbmZsYXRlKGludCBkKSB7
IGluZmxhdGVYKGQpOyBpbmZsYXRlWShkKTsgfQogICAgIHZvaWQgc2NhbGUoZmxvYXQgcyk7CiAK
LSNpZiBXSU4zMgorI2lmZGVmIFdJTjMyCiAgICAgSW50UmVjdChjb25zdCBSRUNUJik7CiAgICAg
b3BlcmF0b3IgUkVDVCgpIGNvbnN0OwogI2VuZGlmCkBAIC0xMTAsNyArMTEyLDcgQEAgcHVibGlj
OgogCiAgICAgb3BlcmF0b3IgQ0dSZWN0KCkgY29uc3Q7CiAKLSNpZiAhTlNHRU9NRVRSWV9UWVBF
U19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKKyNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1F
X0FTX0NHR0VPTUVUUllfVFlQRVMKICAgICBvcGVyYXRvciBOU1JlY3QoKSBjb25zdDsKICNlbmRp
ZgogCkBAIC0xNDksNyArMTUxLDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbnRS
ZWN0JiBhLAogCiBJbnRSZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgQ0dSZWN0Jik7CiAKLSNp
ZiAhTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKKyNpZm5kZWYgTlNH
RU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIAogSW50UmVjdCBlbmNsb3Np
bmdJbnRSZWN0KGNvbnN0IE5TUmVjdCYpOwogCkBAIC0xNTcsNiArMTU5LDYgQEAgSW50UmVjdCBl
bmNsb3NpbmdJbnRSZWN0KGNvbnN0IE5TUmVjdCYpOwogCiAjZW5kaWYKIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBJTlRSRUNUX0hfCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL0ludFNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0lu
dFNpemUuaAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL0ludFNpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBDR1NpemUg
Q0dTaXplOwogCi0jaWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMK
KyNpZmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogdHlwZWRl
ZiBzdHJ1Y3QgQ0dTaXplIE5TU2l6ZTsKICNlbHNlCiB0eXBlZGVmIHN0cnVjdCBfTlNTaXplIE5T
U2l6ZTsKQEAgLTM4LDcgKzM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TU2l6ZSBOU1NpemU7CiAK
ICNlbmRpZgogCi0jaWYgV0lOMzIKKyNpZmRlZiBXSU4zMgogdHlwZWRlZiBzdHJ1Y3QgdGFnU0la
RSBTSVpFOwogI2VuZGlmCiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiAjZW5kaWYKIAot
I2lmIFdJTjMyCisjaWZkZWYgV0lOMzIKICAgICBJbnRTaXplKGNvbnN0IFNJWkUmKTsKICAgICBv
cGVyYXRvciBTSVpFKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEzNCw2ICsxMzQsNiBAQCBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEludFNpemUmIGEsCiAgICAgcmV0dXJuIGEud2lkdGgoKSAh
PSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAhPSBiLmhlaWdodCgpOwogfQogCi19Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIElOVFNJWkVfSF8KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaAkocmV2aXNpb24gMTU3MjApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBACiBjbGFzcyBOU0V2ZW50OwogI2VuZGlmCiAKLSNpZiBXSU4zMgor
I2lmZGVmIFdJTjMyCiB0eXBlZGVmIHN0cnVjdCBIV05EX18gKkhXTkQ7CiB0eXBlZGVmIHVuc2ln
bmVkICAgIFdQQVJBTTsKIHR5cGVkZWYgbG9uZyAgICAgICAgTFBBUkFNOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgTlNFdmVudDsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBXSU4zMgorI2lmZGVm
IFdJTjMyCiB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiB0eXBlZGVmIHVuc2lnbmVkIFdQ
QVJBTTsKIHR5cGVkZWYgbG9uZyBMUEFSQU07CkBAIC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiBfX0FQUExFX18KICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KE5TRXZl
bnQqKTsKICNlbmRpZgotI2lmIFdJTjMyCisjaWZkZWYgV0lOMzIKICAgICAgICAgUGxhdGZvcm1N
b3VzZUV2ZW50KEhXTkQsIFdQQVJBTSwgTFBBUkFNLCBpbnQgY2xpY2tDb3VudCk7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShHREspIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcuaAkocmV2
aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nKENGU3RyaW5n
UmVmKTsKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+Y3JlYXRlQ0ZTdHJpbmcoKSA6IENGU1RSKCIiKTsgfQogI2VuZGlmCi0j
aWYgX19PQkpDX18KKyNpZmRlZiBfX09CSkNfXwogICAgIFN0cmluZyhOU1N0cmluZyopOwogICAg
IG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgaWYgKCFtX2ltcGwpIHJldHVybiBAIiI7IHJl
dHVybiAqbV9pbXBsOyB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lv
biAxNTcyMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTlNWaWV3KiBn
ZXREb2N1bWVudFZpZXcoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgV0lOMzIKKyNpZmRlZiBXSU4z
MgogICAgICAgICBTY3JvbGxWaWV3KCk7CiAgICAgICAgIH5TY3JvbGxWaWV3KCk7CiAgICAgcHJp
dmF0ZToKQEAgLTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3Jv
bGxWaWV3UHJpdmF0ZSogbV9kYXRhOwogI2VuZGlmCiAKLSNpZiAgUExBVEZPUk0oR0RLKQorI2lm
IFBMQVRGT1JNKEdESykKICAgICAgICAgdm9pZCB1cGRhdGVWaWV3KGNvbnN0IEludFJlY3QmLCBi
b29sIG5vdyA9IGZhbHNlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldERyYXdhYmxlKEdka0Ry
YXdhYmxlKiBkcmF3YWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZUdlb21ldHJ5
KGNvbnN0IEludFJlY3QmKTsKQEAgLTEwMiw2ICsxMDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjZW5kaWYKICAgICB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZgor
I2VuZGlmIC8vIFNjcm9sbFZpZXdfSApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNDb25z
dHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1N0YXRpY0NvbnN0cnVj
dG9ycy5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU3RhdGljQ29uc3Ry
dWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIC8vIHBvcnRhYmxlLCBh
bmQgaXQgd291bGQgYmUgZ29vZCB0byBmaWd1cmUgb3V0IGEgMTAwJSBjbGVhbiB3YXkgdGhhdCBz
dGlsbCBhdm9pZHMgY29kZSB0aGF0CiAvLyBydW5zIGF0IGluaXQgdGltZS4KIAotI2lmICFBVk9J
RF9TVEFUSUNfQ09OU1RSVUNUT1JTCisjaWZuZGVmIEFWT0lEX1NUQVRJQ19DT05TVFJVQ1RPUlMK
ICAgICAvLyBEZWZpbmUgYW4gZ2xvYmFsIGluIHRoZSBub3JtYWwgd2F5LgogI2RlZmluZSBERUZJ
TkVfR0xPQkFMKHR5cGUsIG5hbWUsIC4uLikgXAogICAgIGNvbnN0IHR5cGUgbmFtZTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vU3RyZWFtaW5nVGV4dERlY29kZXJJQ1UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vU3RyZWFtaW5nVGV4dERlY29kZXJJQ1UuY3BwCShyZXZpc2lv
biAxNTcyMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU3RyZWFtaW5nVGV4dERlY29kZXJJQ1UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU3RyZWFtaW5nVGV4dERlY29kZXJJQ1UuaCIKIAotI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAKIHVzaW5nIHN0ZDo6bWluOwogCkBAIC0yNzMsNyArMjczLDcgQEAgRGVwcmVj
YXRlZFN0cmluZyBTdHJlYW1pbmdUZXh0RGVjb2RlcklDVQogICAgIH0KIAogICAgIC8vI2RlZmlu
ZSBQQVJUSUFMX0NIQVJBQ1RFUl9IQU5ETElOR19URVNUX0NIVU5LX1NJWkUgMTAwMAotI2lmIFBB
UlRJQUxfQ0hBUkFDVEVSX0hBTkRMSU5HX1RFU1RfQ0hVTktfU0laRQorI2lmZGVmIFBBUlRJQUxf
Q0hBUkFDVEVSX0hBTkRMSU5HX1RFU1RfQ0hVTktfU0laRQogICAgIERlcHJlY2F0ZWRTdHJpbmcg
cmVzdWx0OwogICAgIGludCBjaHVua1NpemU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gbGVu
OyBpICs9IGNodW5rU2l6ZSkgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9TdHJpbmdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDE1
NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgogI2VuZGlmCiAKLSNpZiBfX09CSkNfXworI2lmZGVmIF9fT0JKQ19fCiBAY2xhc3MgTlNTdHJp
bmc7CiAjZW5kaWYKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmdJbXBs
KENGU3RyaW5nUmVmKTsKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0Owog
I2VuZGlmCi0jaWYgX19PQkpDX18KKyNpZmRlZiBfX09CSkNfXwogICAgIFN0cmluZ0ltcGwoTlNT
dHJpbmcqKTsKICAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdDsKICNlbmRpZgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9UcmFuc2ZlckpvYi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vVHJhbnNmZXJKb2IuaAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L1RyYW5zZmVySm9iLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
I2lmIF9fQVBQTEVfXwogICAgIHZvaWQgc2V0TG9hZGVyKFdlYkNvcmVSZXNvdXJjZUxvYWRlcklt
cCopOwogI2VuZGlmCi0jaWYgV0lOMzIKKyNpZmRlZiBXSU4zMgogICAgIHZvaWQgZmlsZUxvYWRU
aW1lcihUaW1lcjxUcmFuc2ZlckpvYj4qIHRpbWVyKTsKICAgICBmcmllbmQgdm9pZCBfX3N0ZGNh
bGwgdHJhbnNmZXJKb2JTdGF0dXNDYWxsYmFjayhISU5URVJORVQsIERXT1JEX1BUUiwgRFdPUkQs
IExQVk9JRCwgRFdPUkQpOwogICAgIGZyaWVuZCBMUkVTVUxUIF9fc3RkY2FsbCBUcmFuc2Zlckpv
YlduZFByb2MoSFdORCwgdW5zaWduZWQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0pOwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9UcmFuc2ZlckpvYkludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9UcmFuc2ZlckpvYkludGVybmFsLmgJKHJldmlzaW9uIDE1NzIwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9UcmFuc2ZlckpvYkludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBsb2FkZXIo
bmlsKQogICAgICAgICAgICAgLCByZXNwb25zZShuaWwpCiAjZW5kaWYKLSNpZiBXSU4zMgorI2lm
ZGVmIFdJTjMyCiAgICAgICAgICAgICAsIG1fZmlsZUhhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X2ZpbGVMb2FkVGltZXIoam9iLCAmVHJhbnNmZXJKb2I6OmZpbGVMb2FkVGltZXIpCiAgICAgICAg
ICAgICAsIG1fcmVzb3VyY2VIYW5kbGUoMCkKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgLCBsb2FkZXIobmlsKQogICAgICAgICAgICAgLCByZXNwb25z
ZShuaWwpCiAjZW5kaWYKLSNpZiBXSU4zMgorI2lmZGVmIFdJTjMyCiAgICAgICAgICAgICAsIG1f
ZmlsZUhhbmRsZSgwKQogICAgICAgICAgICAgLCBtX2ZpbGVMb2FkVGltZXIoam9iLCAmVHJhbnNm
ZXJKb2I6OmZpbGVMb2FkVGltZXIpCiAgICAgICAgICAgICAsIG1fcmVzb3VyY2VIYW5kbGUoMCkK
QEAgLTEyNSw3ICsxMjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdlYkNvcmVS
ZXNvdXJjZUxvYWRlckltcCogbG9hZGVyOwogICAgICAgICBOU1VSTFJlc3BvbnNlKiByZXNwb25z
ZTsKICNlbmRpZgotI2lmIFdJTjMyCisjaWZkZWYgV0lOMzIKICAgICAgICAgSEFORExFIG1fZmls
ZUhhbmRsZTsKICAgICAgICAgVGltZXI8VHJhbnNmZXJKb2I+IG1fZmlsZUxvYWRUaW1lcjsKICAg
ICAgICAgSElOVEVSTkVUIG1fcmVzb3VyY2VIYW5kbGU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L1dpZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgJKHJldmlz
aW9uIDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBOU1ZpZXc7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgV0lO
MzIKKyNpZmRlZiBXSU4zMgogdHlwZWRlZiBzdHJ1Y3QgSFdORF9fICpIV05EOwogdHlwZWRlZiBz
dHJ1Y3QgSElOU1RBTkNFX18gKkhJTlNUQU5DRTsKICNlbmRpZgpAQCAtMTI1LDcgKzEyNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZVZpZXco
KSBjb25zdDsKIAotI2lmIFdJTjMyCisjaWZkZWYgV0lOMzIKICAgICAgICAgV2lkZ2V0KEhXTkQp
OwogICAgICAgICBIV05EIHdpbmRvd0hhbmRsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFdp
bmRvd0hhbmRsZShIV05EKTsKQEAgLTE2MSw2ICsxNjEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFdpZGdldFByaXZhdGUqIGRhdGE7CiAgICAgfTsKIAotfQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBXRUJDT1JFX1BMQVRGT1JNX1dJREdFVF9I
XwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5tbQkocmV2aXNpb24g
MTU3MjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKwogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdm9p
ZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4Y2VwdGlvbiAqbG9jYWxFeGNlcHRpb24p
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db2xvck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMTU3MjApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21hYy9Db2xvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYs
NyBAQCBOU0NvbG9yKiBuc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgICAgICAg
ICBpZiAoY2FjaGVkUkdCQVZhbHVlc1tpXSA9PSBjKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY2FjaGVkQ29sb3JzW2ldOwogCi0jaWYgQ09MT1JNQVRDSF9FVkVSWVRISU5HCisjaWZkZWYg
Q09MT1JNQVRDSF9FVkVSWVRISU5HCiAgICAgICAgICAgICBOU0NvbG9yKiByZXN1bHQgPSBbTlND
b2xvciBjb2xvcldpdGhDYWxpYnJhdGVkUmVkOmNvbG9yLnJlZCgpIC8gMjU1LjAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZW46Y29s
b3IuZ3JlZW4oKSAvIDI1NS4wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBibHVlOmNvbG9yLmJsdWUoKSAvIDI1NS4wCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL21hYy9GbG9hdFBvaW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL0Zsb2F0UG9pbnRNYWMubW0JKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRmxvYXRQb2ludE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsNyBAQCBGbG9hdFBvaW50OjpvcGVyYXRvciBDR1BvaW50KCkgY29uc3QKICAgICByZXR1cm4g
Q0dQb2ludE1ha2UobV94LCBtX3kpOwogfQogCi0jaWYgIU5TR0VPTUVUUllfVFlQRVNfU0FNRV9B
U19DR0dFT01FVFJZX1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dF
T01FVFJZX1RZUEVTCiAKIEZsb2F0UG9pbnQ6OkZsb2F0UG9pbnQoY29uc3QgTlNQb2ludCYgcCkg
OiBtX3gocC54KSwgbV95KHAueSkKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0Zsb2F0
UmVjdE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9GbG9hdFJlY3RN
YWMubW0JKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmxvYXRSZWN0
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIEZsb2F0UmVjdDo6b3BlcmF0
b3IgQ0dSZWN0KCkgY29uc3QKICAgICByZXR1cm4gQ0dSZWN0TWFrZSh4KCksIHkoKSwgd2lkdGgo
KSwgaGVpZ2h0KCkpOwogfQogCi0jaWYgIU5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01F
VFJZX1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZ
UEVTCiAKIEZsb2F0UmVjdDo6RmxvYXRSZWN0KGNvbnN0IE5TUmVjdCYgcikgOiBtX2xvY2F0aW9u
KHIub3JpZ2luKSwgbV9zaXplKHIuc2l6ZSkKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFj
L0Zsb2F0U2l6ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9GbG9h
dFNpemVNYWMubW0JKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmxv
YXRTaXplTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIEZsb2F0U2l6ZTo6
b3BlcmF0b3IgQ0dTaXplKCkgY29uc3QKICAgICByZXR1cm4gQ0dTaXplTWFrZShtX3dpZHRoLCBt
X2hlaWdodCk7CiB9CiAKLSNpZiAhTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllf
VFlQRVMKKyNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMK
IAogRmxvYXRTaXplOjpGbG9hdFNpemUoY29uc3QgTlNTaXplJiBzKSA6IG1fd2lkdGgocy53aWR0
aCksIG1faGVpZ2h0KHMuaGVpZ2h0KQogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSW50
UG9pbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSW50UG9pbnRN
YWMubW0JKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSW50UG9pbnRN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgSW50UG9pbnQ6Om9wZXJhdG9y
IENHUG9pbnQoKSBjb25zdAogICAgIHJldHVybiBDR1BvaW50TWFrZShtX3gsIG1feSk7CiB9CiAK
LSNpZiAhTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKKyNpZm5kZWYg
TlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIAogSW50UG9pbnQ6Oklu
dFBvaW50KGNvbnN0IE5TUG9pbnQmIHApIDogbV94KHN0YXRpY19jYXN0PGludD4ocC54KSksIG1f
eShzdGF0aWNfY2FzdDxpbnQ+KHAueSkpCiB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9J
bnRSZWN0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ludFJlY3RN
YWMubW0JKHJldmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSW50UmVjdE1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBJbnRSZWN0IGVuY2xvc2luZ0lu
dFJlY3QoY29uc3QgQ0dSZWN0JiByCiAgICAgcmV0dXJuIEludFJlY3QobCwgdCwgciAtIGwsIGIg
LSB0KTsKIH0KIAotI2lmICFOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBF
UworI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogCiBJ
bnRSZWN0OjpvcGVyYXRvciBOU1JlY3QoKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvSW50U2l6ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9J
bnRTaXplTWFjLm1tCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0lu
dFNpemVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgSW50U2l6ZTo6b3Bl
cmF0b3IgQ0dTaXplKCkgY29uc3QKICAgICByZXR1cm4gQ0dTaXplTWFrZShtX3dpZHRoLCBtX2hl
aWdodCk7CiB9CiAKLSNpZiAhTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQ
RVMKKyNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIAog
SW50U2l6ZTo6SW50U2l6ZShjb25zdCBOU1NpemUmIHMpIDogbV93aWR0aChzdGF0aWNfY2FzdDxp
bnQ+KHMud2lkdGgpKSwgbV9oZWlnaHQoc3RhdGljX2Nhc3Q8aW50PihzLmhlaWdodCkpCiB7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCShy
ZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCB0eXBlZGVmIHNpZ25lZCBj
aGFyIEJPT0w7CiB0eXBlZGVmIHN0cnVjdCBDR1JlY3QgQ0dSZWN0OwogI2VuZGlmCiAKLSNpZiBO
U0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUworI2lmZGVmIE5TR0VPTUVU
UllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiB0eXBlZGVmIHN0cnVjdCBDR1JlY3Qg
TlNSZWN0OwogI2Vsc2UKIHR5cGVkZWYgc3RydWN0IF9OU1JlY3QgTlNSZWN0OwpAQCAtNDIsNyAr
NDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBfTlNSZWN0IE5TUmVjdDsKIHR5cGVkZWYgc3RydWN0IENH
UG9pbnQgQ0dQb2ludDsKICNlbmRpZgogCi0jaWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NH
R0VPTUVUUllfVFlQRVMKKyNpZmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRS
WV9UWVBFUwogdHlwZWRlZiBzdHJ1Y3QgQ0dQb2ludCBOU1BvaW50OwogI2Vsc2UKIHR5cGVkZWYg
c3RydWN0IF9OU1BvaW50IE5TUG9pbnQ7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJl
dmlzaW9uIDE1NzIwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY2LDcgKzI2Niw3IEBAIHB1YmxpYzoKICAgICBpbnQgbGVmdFNlbGVjdGlv
bk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgeSk7CiAgICAgaW50IHJpZ2h0U2Vs
ZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCB5KTsKIAotI2lmICFOREVC
VUcKKyNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSAqc3Ry
ZWFtLCBEZXByZWNhdGVkU3RyaW5nIGluZCA9ICIiKSBjb25zdDsKICNlbmRpZgogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEw
MCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUYWJsZSogdGFibGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxSZW5kZXJUYWJsZSo+KHBhcmVudCgpLT5wYXJlbnQoKS0+cGFyZW50KCkpOyB9
CiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGFibGVTZWN0aW9uKj4ocGFyZW50KCktPnBhcmVudCgpKTsgfQogCi0jaWYg
IU5ERUJVRworI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUZXh0U3RyZWFt
ICpzdHJlYW0sIERlcHJlY2F0ZWRTdHJpbmcgaW5kID0gIiIpIGNvbnN0OwogI2VuZGlmCiAKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL2JpZGkuY3BwCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2Jp
ZGkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTUsNyArNTk1LDcgQEAgc3RhdGljIHZvaWQgYXBw
ZW5kUnVuKEJpZGlTdGF0ZSAmYmlkaSkKIHsKICAgICBpZiAoZW1wdHlSdW4gfHwgIWJpZGkuZW9y
Lm9iaikKICAgICAgICAgcmV0dXJuOwotI2lmIEJJRElfREVCVUcgPiAxCisjaWYgZGVmaW5lZChC
SURJX0RFQlVHKSAmJiBCSURJX0RFQlVHID4gMQogICAgIGtkRGVidWcoNjA0MSkgPDwgImFwcGVu
ZFJ1bjogZGlyPSI8PChpbnQpZGlyPDxlbmRsOwogI2VuZGlmCiAKQEAgLTE3NTksNyArMTc1OSw3
IEBAIEludFJlY3QgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmUKIAogICAgIHJldHVy
biByZXBhaW50UmVjdDsKIAotI2lmIEJJRElfREVCVUcgPiAxCisjaWYgZGVmaW5lZChCSURJX0RF
QlVHKSAmJiBCSURJX0RFQlVHID4gMQogICAgIGtkRGVidWcoNjA0MSkgPDwgIiAtLS0tLS0tIGJp
ZGkgZW5kICIgPDwgdGhpcyA8PCAiIC0tLS0tLS0iIDw8IGVuZGw7CiAjZW5kaWYKIH0KSW5kZXg6
IFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0YXRpYyB2b2lkIHBhcnNlRXJyb3JGdW5jKHZvaWQgKmN0eHQsIGNvbnN0IGNo
YXIgKm1zZywgLi4uKQogewogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIHRvIGRpc3Bs
YXkgZXJyb3IgbWVzc2FnZXMgc29tZXdoZXJlLgotI2lmICFXSU4zMgorI2lmbmRlZiBXSU4zMgog
ICAgIC8vIEZJWE1FOiBObyB2YXNwcmludGYgc3VwcG9ydC4KLSNpZiAhRVJST1JfRElTQUJMRUQK
KyNpZm5kZWYgRVJST1JfRElTQUJMRUQKICAgICBjaGFyICplcnJvck1lc3NhZ2UgPSAwOwogICAg
IHZhX2xpc3QgYXJnczsKICAgICB2YV9zdGFydChhcmdzLCBtc2cpOwpJbmRleDogV2ViQ29yZS94
cGF0aC9pbXBsL1hQYXRoR3JhbW1hci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveHBhdGgvaW1w
bC9YUGF0aEdyYW1tYXIueQkocmV2aXNpb24gMTU3MjApCisrKyBXZWJDb3JlL3hwYXRoL2ltcGwv
WFBhdGhHcmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJYUGF0aFZhcmlhYmxlUmVmZXJlbmNlLmgiCiAKICNkZWZpbmUgWVlERUJVRyAwCisjZGVmaW5l
IFlZTUFYREVQVEggMTAwMDAKICNkZWZpbmUgWVlQQVJTRV9QQVJBTSBwYXJzZXJQYXJhbWV0ZXIK
ICNkZWZpbmUgUEFSU0VSIHN0YXRpY19jYXN0PFBhcnNlcio+KHBhcnNlclBhcmFtZXRlcikKIApJ
bmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNTcyMCkKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMiBAQAorMjAwNi0wNy0zMSAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGF0
Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAx
NzYKKyAgICAgICAgICBNYWtlIFdlYkNvcmUgY29tcGlsZSB3aXRoIC1XdW5kZWYKKworICAgICAg
ICAgICogQWRkcyAtV3VuZGVmIGZsYWcgdG8gWGNvZGUgcHJvamVjdAorICAgICAgICAgICogQ29u
dmVydHMgI2lmcyB0byAjaWZkZWYgYW5kICNpZm5kZWZzIHdoZXJlIG5lZWRlZC4KKworICAgICAg
ICAqIENhcmJvbi9DYXJib25VdGlscy5tOgorICAgICAgICAqIENhcmJvbi9DYXJib25XaW5kb3dB
ZGFwdGVyLm06CisgICAgICAgICogQ2FyYm9uL0hJVmlld0FkYXB0ZXIubToKKyAgICAgICAgKCtb
TlNWaWV3IGJpbmRISVZpZXdUb05TVmlldzpuc1ZpZXc6XSk6CisgICAgICAgICogQ2FyYm9uL0hJ
V2ViVmlldy5tOgorICAgICAgICAoSElXZWJWaWV3RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBN
aXNjL1dlYkZpbGVEYXRhYmFzZS5tOgorICAgICAgICAoVW5pcXVlRmlsZVBhdGhGb3JLZXkpOgor
ICAgICAgICAqIE1pc2MvV2ViTlNXaW5kb3dFeHRyYXMubToKKyAgICAgICAgKHN3aXp6bGVJbnN0
YW5jZU1ldGhvZCk6CisgICAgICAgICogTWlzYy9XZWJUeXBlc0ludGVybmFsLmg6CisgICAgICAg
ICogUGx1Z2lucy9XZWJOZXRzY2FwZURlcHJlY2F0ZWRGdW5jdGlvbnMuYzoKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlRGVwcmVjYXRlZEZ1bmN0aW9ucy5oOgorICAgICAgICAqIFBsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLmg6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblBhY2thZ2UubToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdl
IHVubG9hZFdpdGhvdXRTaHV0ZG93bl0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblBh
Y2thZ2UgbG9hZF0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDA2LTA3LTMxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBKb2huLgpJbmRleDogV2ViS2l0L0NhcmJvbi9DYXJib25VdGls
cy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9DYXJib24vQ2FyYm9uVXRpbHMubQkocmV2aXNpb24g
MTU3MjApCisrKyBXZWJLaXQvQ2FyYm9uL0NhcmJvblV0aWxzLm0JKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKICAqLwogCiAvLyA8cmRhcjovL3Byb2JsZW0vNDU2MTc3Mj4gSElXZWJW
aWV3IG5lZWRzIHRvIGJlIHJld29ya2VkIHRvIG5vdCB1c2UgUXVpY2tEcmF3LCBuZWVkZWQgZm9y
IDY0LWJpdAotI2lmICFfX0xQNjRfXworI2lmbmRlZiBfX0xQNjRfXwogCiAjaW5jbHVkZSAiQ2Fy
Ym9uVXRpbHMuaCIKICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpJbmRleDogV2Vi
S2l0L0NhcmJvbi9DYXJib25XaW5kb3dBZGFwdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0Nh
cmJvbi9DYXJib25XaW5kb3dBZGFwdGVyLm0JKHJldmlzaW9uIDE1NzIwKQorKysgV2ViS2l0L0Nh
cmJvbi9DYXJib25XaW5kb3dBZGFwdGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTQxMCw3ICs0MTAs
NyBAQCBzdGF0aWMgT1NTdGF0dXMgTlNDYXJib25XaW5kb3dIYW5kbGVFdmVuCiB9CiAKIC8vIEZJ
WE1FOiA8cmRhcjovL3Byb2JsZW0vNDU2MTc3Mj4gSElXZWJWaWV3IGFuZCBISVZpZXdBZGFwdGVy
IG5lZWQgdG8gYmUgcmV3b3JrZWQgZm9yIDY0LWJpdAotI2lmICFfX0xQNjRfXworI2lmbmRlZiBf
X0xQNjRfXwogCiAtIChCT09MKW1ha2VGaXJzdFJlc3BvbmRlcjooTlNSZXNwb25kZXIgKilhUmVz
cG9uZGVyCiB7CkBAIC02MTMsNyArNjEzLDcgQEAgc3RhdGljIE9TU3RhdHVzIE5TQ2FyYm9uV2lu
ZG93SGFuZGxlRXZlbgogfQogCiAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ1NjE3NzI+IEhJ
V2ViVmlldyBhbmQgSElWaWV3QWRhcHRlciBuZWVkIHRvIGJlIHJld29ya2VkIGZvciA2NC1iaXQK
LSNpZiAhX19MUDY0X18KKyNpZm5kZWYgX19MUDY0X18KIAogLSAodm9pZClzZWxlY3RLZXlWaWV3
Rm9sbG93aW5nVmlldzooTlNWaWV3ICopYVZpZXcgewogCUhJVmlld1JlZgl2aWV3ID0gTlVMTDsK
SW5kZXg6IFdlYktpdC9DYXJib24vSElWaWV3QWRhcHRlci5tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9DYXJib24vSElWaWV3QWRhcHRlci5tCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYktpdC9DYXJi
b24vSElWaWV3QWRhcHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8K
IAogLy8gPHJkYXI6Ly9wcm9ibGVtLzQ1NjE3NzI+IEhJV2ViVmlldyBuZWVkcyB0byBiZSByZXdv
cmtlZCB0byBub3QgdXNlIFF1aWNrRHJhdywgbmVlZGVkIGZvciA2NC1iaXQKLSNpZiAhX19MUDY0
X18KKyNpZm5kZWYgX19MUDY0X18KIAogI2ltcG9ydCAiSElWaWV3QWRhcHRlci5oIgogCkBAIC02
NSw3ICs2NSw3IEBAIHN0YXRpYyBOU1ZpZXcgKl93ZWJraXRfTlNWaWV3X25leHRWYWxpZEsKICAg
ICAgICAgTWV0aG9kIHNldE5lZWRzRGlzcGxheU1ldGhvZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0
aG9kKG9iamNfZ2V0Q2xhc3MoIk5TVmlldyIpLCBAc2VsZWN0b3Ioc2V0TmVlZHNEaXNwbGF5Oikp
OwogICAgICAgICBBU1NFUlQoc2V0TmVlZHNEaXNwbGF5TWV0aG9kKTsKICAgICAgICAgQVNTRVJU
KCFvbGROU1ZpZXdTZXROZWVkc0Rpc3BsYXlJTVApOwotI2lmIE9CSkNfQVBJX1ZFUlNJT04gPiAw
CisjaWYgZGVmaW5lZChPQkpDX0FQSV9WRVJTSU9OKSAmJiBPQkpDX0FQSV9WRVJTSU9OID4gMAog
ICAgICAgICBvbGROU1ZpZXdTZXROZWVkc0Rpc3BsYXlJTVAgPSBtZXRob2Rfc2V0SW1wbGVtZW50
YXRpb24oc2V0TmVlZHNEaXNwbGF5TWV0aG9kLCAoSU1QKV93ZWJraXRfTlNWaWV3X3NldE5lZWRz
RGlzcGxheSk7CiAjZWxzZQogICAgICAgICBvbGROU1ZpZXdTZXROZWVkc0Rpc3BsYXlJTVAgPSBz
ZXROZWVkc0Rpc3BsYXlNZXRob2QtPm1ldGhvZF9pbXA7CkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBOU1ZpZXcgKl93ZWJraXRfTlNWaWV3X25leHRWYWxpZEsKICAgICAgICAgTWV0aG9kIHNldE5l
ZWRzRGlzcGxheUluUmVjdE1ldGhvZCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKG9iamNfZ2V0
Q2xhc3MoIk5TVmlldyIpLCBAc2VsZWN0b3Ioc2V0TmVlZHNEaXNwbGF5SW5SZWN0OikpOwogICAg
ICAgICBBU1NFUlQoc2V0TmVlZHNEaXNwbGF5SW5SZWN0TWV0aG9kKTsKICAgICAgICAgQVNTRVJU
KCFvbGROU1ZpZXdTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVApOwotI2lmIE9CSkNfQVBJX1ZFUlNJ
T04gPiAwCisjaWYgZGVmaW5lZChPQkpDX0FQSV9WRVJTSU9OKSAmJiBPQkpDX0FQSV9WRVJTSU9O
ID4gMAogICAgICAgICBvbGROU1ZpZXdTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVAgPSBtZXRob2Rf
c2V0SW1wbGVtZW50YXRpb24oc2V0TmVlZHNEaXNwbGF5SW5SZWN0TWV0aG9kLCAoSU1QKV93ZWJr
aXRfTlNWaWV3X3NldE5lZWRzRGlzcGxheUluUmVjdCk7CiAjZWxzZQogICAgICAgICBvbGROU1Zp
ZXdTZXROZWVkc0Rpc3BsYXlJblJlY3RJTVAgPSBzZXROZWVkc0Rpc3BsYXlJblJlY3RNZXRob2Qt
Pm1ldGhvZF9pbXA7CkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBOU1ZpZXcgKl93ZWJraXRfTlNW
aWV3X25leHRWYWxpZEsKICAgICAgICAgTWV0aG9kIG5leHRWYWxpZEtleVZpZXdNZXRob2QgPSBj
bGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldENsYXNzKCJOU1ZpZXciKSwgQHNlbGVjdG9y
KG5leHRWYWxpZEtleVZpZXcpKTsKICAgICAgICAgQVNTRVJUKG5leHRWYWxpZEtleVZpZXdNZXRo
b2QpOwogICAgICAgICBBU1NFUlQoIW9sZE5TVmlld05leHRWYWxpZEtleVZpZXdJTVApOwotI2lm
IE9CSkNfQVBJX1ZFUlNJT04gPiAwCisjaWYgZGVmaW5lZChPQkpDX0FQSV9WRVJTSU9OKSAmJiBP
QkpDX0FQSV9WRVJTSU9OID4gMAogICAgICAgICBvbGROU1ZpZXdOZXh0VmFsaWRLZXlWaWV3SU1Q
ID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG5leHRWYWxpZEtleVZpZXdNZXRob2QsIChJTVAp
X3dlYmtpdF9OU1ZpZXdfbmV4dFZhbGlkS2V5Vmlldyk7CiAjZWxzZQogICAgICAgICBvbGROU1Zp
ZXdOZXh0VmFsaWRLZXlWaWV3SU1QID0gbmV4dFZhbGlkS2V5Vmlld01ldGhvZC0+bWV0aG9kX2lt
cDsKSW5kZXg6IFdlYktpdC9DYXJib24vSElXZWJWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L0NhcmJvbi9ISVdlYlZpZXcubQkocmV2aXNpb24gMTU3MjApCisrKyBXZWJLaXQvQ2FyYm9uL0hJ
V2ViVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8KIAogLy8gPHJk
YXI6Ly9wcm9ibGVtLzQ1NjE3NzI+IEhJV2ViVmlldyBuZWVkcyB0byBiZSByZXdvcmtlZCB0byBu
b3QgdXNlIFF1aWNrRHJhdywgbmVlZGVkIGZvciA2NC1iaXQKLSNpZiAhX19MUDY0X18KKyNpZm5k
ZWYgX19MUDY0X18KIAogI2luY2x1ZGUgIkhJV2ViVmlldy5oIgogCkBAIC0xNDAwLDcgKzE0MDAs
NyBAQCBISVdlYlZpZXdFdmVudEhhbmRsZXIoCiAJCQkJCUdldEV2ZW50UGFyYW1ldGVyKCBpbkV2
ZW50LCBrRXZlbnRQYXJhbUNvbnRyb2xEYXRhQnVmZmVyLCB0eXBlUHRyLCBOVUxMLAogCQkJCQkJ
CXNpemVvZiggUHRyICksIE5VTEwsICZwdHIgKTsKIAotI2lmIF9fTFA2NF9fCisjaWZkZWYgX19M
UDY0X18KIAkJCQkJR2V0RXZlbnRQYXJhbWV0ZXIoaW5FdmVudCwga0V2ZW50UGFyYW1Db250cm9s
RGF0YUJ1ZmZlclNpemUsIHR5cGVTSW50NjQsIE5VTEwsIHNpemVvZihTaXplKSwgTlVMTCwgJnNp
emUpOwogI2Vsc2UKIAkJCQkJR2V0RXZlbnRQYXJhbWV0ZXIoaW5FdmVudCwga0V2ZW50UGFyYW1D
b250cm9sRGF0YUJ1ZmZlclNpemUsIHR5cGVTSW50MzIsIE5VTEwsIHNpemVvZihTaXplKSwgTlVM
TCwgJnNpemUpOwpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgSElXZWJWaWV3RXZlbnRIYW5kbGVyKAog
CQkJCQkJfQogCiAJCQkJCQlvdXRTaXplID0gc2l6ZW9mKCBDb250cm9sS2luZCApOwotI2lmIF9f
TFA2NF9fCisjaWZkZWYgX19MUDY0X18KICAgICAgICAgICAgICAgICAgICAgICAgIFNldEV2ZW50
UGFyYW1ldGVyKGluRXZlbnQsIGtFdmVudFBhcmFtQ29udHJvbERhdGFCdWZmZXJTaXplLCB0eXBl
U0ludDY0LCBzaXplb2YoU2l6ZSksICZvdXRTaXplKTsKICNlbHNlCiAgICAgICAgICAgICAgICAg
ICAgICAgICBTZXRFdmVudFBhcmFtZXRlcihpbkV2ZW50LCBrRXZlbnRQYXJhbUNvbnRyb2xEYXRh
QnVmZmVyU2l6ZSwgdHlwZVNJbnQzMiwgc2l6ZW9mKFNpemUpLCAmb3V0U2l6ZSk7CkluZGV4OiBX
ZWJLaXQvTWlzYy9XZWJGaWxlRGF0YWJhc2UubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9X
ZWJGaWxlRGF0YWJhc2UubQkocmV2aXNpb24gMTU3MjApCisrKyBXZWJLaXQvTWlzYy9XZWJGaWxl
RGF0YWJhc2UubQkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIHN0YXRpYyB2b2lk
IFVuaXF1ZUZpbGVQYXRoRm9yS2V5KGlkIGtleSwKICAgICAgICAgaGFzaDIgPSAoMzcgKiBoYXNo
MikgXiBzW2NudF07CiAgICAgfQogCi0jaWYgX19MUDY0X18KKyNpZmRlZiBfX0xQNjRfXwogICAg
IHNucHJpbnRmKGJ1ZmZlciwgVW5pcXVlRmlsZVBhdGhTaXplLCAiJS4ydS8lLjJ1LyUuMTB1LSUu
MTB1LmNhY2hlIiwgKChoYXNoMSAmIDB4ZmYpID4+IDQpLCAoKGhhc2gyICYgMHhmZikgPj4gNCks
IGhhc2gxLCBoYXNoMik7CiAjZWxzZQogICAgIHNucHJpbnRmKGJ1ZmZlciwgVW5pcXVlRmlsZVBh
dGhTaXplLCAiJS4ybHUvJS4ybHUvJS4xMGx1LSUuMTBsdS5jYWNoZSIsICgoaGFzaDEgJiAweGZm
KSA+PiA0KSwgKChoYXNoMiAmIDB4ZmYpID4+IDQpLCBoYXNoMSwgaGFzaDIpOwpJbmRleDogV2Vi
S2l0L01pc2MvV2ViTlNXaW5kb3dFeHRyYXMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9X
ZWJOU1dpbmRvd0V4dHJhcy5tCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYktpdC9NaXNjL1dlYk5T
V2luZG93RXh0cmFzLm0JKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMg
SU1QIHN3aXp6bGVJbnN0YW5jZU1ldGhvZChDbGFzcyBjCiAgICAgTWV0aG9kIG1ldGhvZCA9IGNs
YXNzX2dldEluc3RhbmNlTWV0aG9kKGNsYXNzLCBzZWxlY3Rvcik7CiAgICAgQVNTRVJUKG1ldGhv
ZCk7CiAgICAgSU1QIG9sZElNUDsKLSNpZiBPQkpDX0FQSV9WRVJTSU9OID4gMAorI2lmIGRlZmlu
ZWQoT0JKQ19BUElfVkVSU0lPTikgJiYgT0JKQ19BUElfVkVSU0lPTiA+IDAKICAgICBvbGRJTVAg
PSBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kLCBuZXdJbXBsZW1lbnRhdGlvbik7CiAj
ZWxzZQogICAgIG9sZElNUCA9IG1ldGhvZC0+bWV0aG9kX2ltcDsKSW5kZXg6IFdlYktpdC9NaXNj
L1dlYlR5cGVzSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvTWlzYy9XZWJUeXBlc0lu
dGVybmFsLmgJKHJldmlzaW9uIDE1NzIwKQorKysgV2ViS2l0L01pc2MvV2ViVHlwZXNJbnRlcm5h
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHR5cGVkZWYgTlNVSW50ZWdlciBX
ZWJOU1VJbnRlZ2VyOwogI2VuZGlmCiAKICNpZm5kZWYgQ0dGTE9BVF9ERUZJTkVECi0jaWYgX19M
UDY0X18KKyNpZmRlZiBfX0xQNjRfXwogdHlwZWRlZiBkb3VibGUgQ0dGbG9hdDsKICNlbHNlCiB0
eXBlZGVmIGZsb2F0IENHRmxvYXQ7CkluZGV4OiBXZWJLaXQvUGx1Z2lucy9XZWJOZXRzY2FwZURl
cHJlY2F0ZWRGdW5jdGlvbnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvUGx1Z2lucy9XZWJOZXRz
Y2FwZURlcHJlY2F0ZWRGdW5jdGlvbnMuYwkocmV2aXNpb24gMTU3MjApCisrKyBXZWJLaXQvUGx1
Z2lucy9XZWJOZXRzY2FwZURlcHJlY2F0ZWRGdW5jdGlvbnMuYwkod29ya2luZyBjb3B5KQpAQCAt
OSw3ICs5LDcgQEAKIAogI2luY2x1ZGUgIldlYk5ldHNjYXBlRGVwcmVjYXRlZEZ1bmN0aW9ucy5o
IgogCi0jaWYgIV9fTFA2NF9fCisjaWZuZGVmIF9fTFA2NF9fCiAKIE9TRXJyIFdlYkdldERpc2tG
cmFnbWVudChjb25zdCBGU1NwZWMgKmZpbGVTcGVjLCBVSW50MzIgb2Zmc2V0LCBVSW50MzIgbGVu
Z3RoLCBDb25zdFN0cjYzUGFyYW0gZnJhZ05hbWUsIENGcmFnTG9hZE9wdGlvbnMgb3B0aW9ucywg
Q0ZyYWdDb25uZWN0aW9uSUQgKmNvbm5JRCwgUHRyICptYWluQWRkciwgU3RyMjU1IGVyck1lc3Nh
Z2UpCiB7CkluZGV4OiBXZWJLaXQvUGx1Z2lucy9XZWJOZXRzY2FwZURlcHJlY2F0ZWRGdW5jdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvUGx1Z2lucy9XZWJOZXRzY2FwZURlcHJlY2F0ZWRG
dW5jdGlvbnMuaAkocmV2aXNpb24gMTU3MjApCisrKyBXZWJLaXQvUGx1Z2lucy9XZWJOZXRzY2Fw
ZURlcHJlY2F0ZWRGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKICAq
CiAgKi8KIAotI2lmICFfX0xQNjRfXworI2lmbmRlZiBfX0xQNjRfXwogCiAjaW1wb3J0IDxDb3Jl
U2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CiAKSW5kZXg6IFdlYktpdC9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luUGFja2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luUGFja2FnZS5oCShyZXZpc2lvbiAxNTcyMCkKKysrIFdlYktpdC9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luUGFja2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
IHR5cGVkZWYgZW51bSB7CiAgICAgdWludDE2IHBsdWdpblNpemU7CiAgICAgdWludDE2IHBsdWdp
blZlcnNpb247CiAgICAgICAgIAotI2lmICFfX0xQNjRfXworI2lmbmRlZiBfX0xQNjRfXwogICAg
IC8vIENGTSBpcyBub3Qgc3VwcG9ydGVkIGluIDY0LWJpdAogICAgIENGcmFnQ29ubmVjdGlvbklE
IGNvbm5JRDsKICNlbmRpZgpJbmRleDogV2ViS2l0L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5Q
YWNrYWdlLm0JKHJldmlzaW9uIDE1NzIwKQorKysgV2ViS2l0L1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5QYWNrYWdlLm0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIFRy
YW5zaXRpb25WZWN0b3IgdFZlY3RvckZvckZ1bmN0aQogCiBAaW1wbGVtZW50YXRpb24gV2ViTmV0
c2NhcGVQbHVnaW5QYWNrYWdlCiAKLSNpZiAhX19MUDY0X18KKyNpZm5kZWYgX19MUDY0X18KICsg
KHZvaWQpaW5pdGlhbGl6ZQogewogICAgIC8vIFRoZSBTaG9ja3dhdmUgcGx1Z2luIHJlcXVpcmVz
IGEgdmFsaWQgZmlsZSBpbiBDdXJBcFJlZk51bS4KQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMg
VHJhbnNpdGlvblZlY3RvciB0VmVjdG9yRm9yRnVuY3RpCiAgICAgaWYgKGlzQnVuZGxlKQogICAg
ICAgICBDRkJ1bmRsZVVubG9hZEV4ZWN1dGFibGUoY2ZCdW5kbGUpOwogICAgIGVsc2UKLSNpZiAh
X19MUDY0X18KKyNpZm5kZWYgX19MUDY0X18KICAgICAgICAgLy8gQ0ZNIGlzIG5vdCBzdXBwb3J0
ZWQgaW4gNjQtYml0CiAgICAgICAgIFdlYkNsb3NlQ29ubmVjdGlvbigmY29ubklEKTsKICNlbmRp
ZgpAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRpYyBUcmFuc2l0aW9uVmVjdG9yIHRWZWN0b3JGb3JG
dW5jdGkKICAgICAgICAgICAgICAgICBnb3RvIGFib3J0OwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKLSNpZiBfX0xQNjRfXworI2lmZGVmIF9fTFA2NF9fCiAgICAgICAgIC8vIENGTSBpcyBub3Qg
c3VwcG9ydGVkIGluIDY0LWJpdAogICAgICAgICBnb3RvIGFib3J0OwogI2Vsc2UKSW5kZXg6IFdl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NzIwKQorKysg
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xODkyLDYgKzE4OTIsNyBAQAogCQkJCQkiLVdiYWQtZnVuY3Rpb24tY2FzdCIsCiAJCQkJCSIt
V21pc3NpbmctZGVjbGFyYXRpb25zIiwKIAkJCQkJIi1XbmVzdGVkLWV4dGVybnMiLAorCQkJCQki
LVd1bmRlZiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CkBAIC0xOTMyLDYgKzE5
MzMsNyBAQAogCQkJCQkiLVdiYWQtZnVuY3Rpb24tY2FzdCIsCiAJCQkJCSItV21pc3NpbmctZGVj
bGFyYXRpb25zIiwKIAkJCQkJIi1XbmVzdGVkLWV4dGVybnMiLAorCQkJCQkiLVd1bmRlZiIsCiAJ
CQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTE5NjgsNiArMTk3MCw3IEBACiAJ
CQkJCSItV2JhZC1mdW5jdGlvbi1jYXN0IiwKIAkJCQkJIi1XbWlzc2luZy1kZWNsYXJhdGlvbnMi
LAogCQkJCQkiLVduZXN0ZWQtZXh0ZXJucyIsCisJCQkJCSItV3VuZGVmIiwKIAkJCQkpOwogCQkJ
fTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwo=
</data>
<flag name="review"
          id="3004"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9829</attachid>
            <date>2006-08-02 11:53:39 -0700</date>
            <delta_ts>2006-08-02 16:09:45 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>undef2.diff</filename>
            <type>text/plain</type>
            <size>83265</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzU1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDYtMDgtMDIgIFNhbSBXZWlu
aWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndp
bi5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTc2CisgICAgICAgICAgTWFrZSBXZWJDb3JlIGNvbXBp
bGUgd2l0aCAtV3VuZGVmCisKKyAgICAgICAgICAqIEFkZHMgLVd1bmRlZiBmbGFnIHRvIFhjb2Rl
IHByb2plY3QKKyAgICAgICAgICAqIENvbnZlcnRzICNpZnMgdG8gI2lmZGVmIGFuZCAjaWZuZGVm
cyB3aGVyZSBuZWVkZWQuCisgICAgICAgICAgKiBBZGRlZCAjZGVmaW5lIFlZTUFYREVQVEggMTAw
MDAgaW4ga2pzL2dyYW1tYXIueQorICAgICAgICAgICAgdG8gZml4IGEgd2FybmluZyBmcm9tIHdp
dGhpbiBCaXNvbi4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvam5pL2puaV9qc29iamVjdC5jcHA6CisgICAg
ICAgIChKYXZhSlNPYmplY3Q6OmdldFNsb3QpOgorICAgICAgICAoSmF2YUpTT2JqZWN0OjpzZXRT
bG90KToKKyAgICAgICAgKiBiaW5kaW5ncy9ucGFwaS5oOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6Ok9iamNDbGFzczo6bWV0
aG9kc05hbWVkKToKKyAgICAgICAgKEtKUzo6QmluZGluZ3M6Ok9iamNDbGFzczo6ZmllbGROYW1l
ZCk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAo
T2JqY0luc3RhbmNlOjppbnZva2VNZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvb2Jq
Y19ydW50aW1lLm1tOgorICAgICAgICAoT2JqY01ldGhvZDo6Z2V0TWV0aG9kU2lnbmF0dXJlKToK
KyAgICAgICAgKE9iamNGaWVsZDo6bmFtZSk6CisgICAgICAgIChPYmpjRmllbGQ6OnR5cGUpOgor
ICAgICAgICAqIGtqcy9ncmFtbWFyLnk6CisgICAgICAgICoga2pzL2lkZW50aWZpZXIuaDoKKwog
MjAwNi0wNy0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgLSBS
ZW1vdmVkIHRhYnMgZnJvbSB0aGVzZSBzb3VyY2UgZmlsZXMgdGhhdCBzdGlsbCBoYWQgdGhlbS4K
QEAgLTk3NDcsNyArOTc3Niw3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obi4KIAotICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDIyNDkxMT4gbWFueSBtYW55IGxlYWtzIGluIGtqc3l5cGFy
c2Ugd2l0aCBtYWxmb3JtZWQgSmF2YXNjcmlwdCAgICAgICAgCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80MjI0OTExPiBtYW55IG1hankgbGVha3MgaW4ga2pzeXlwYXJzZSB3aXRoIG1hbGZvcm1l
ZCBKYXZhc2NyaXB0ICAgICAgICAKIAogICAgICAgICBSZWNvcmQgYWxsIG5vZGVzIHRoYXQgYXJl
IGNyZWF0ZWQgZHVyaW5nIHBhcnNpbmcsIGFuZCBkZWxldGUgYW55CiAgICAgICAgIHRoYXQgYXJl
IGxlZnQgZmxvYXRpbmcgd2l0aCBhIHJlZmNvdW50IG9mIDAuCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDE1NzU0KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU4Myw2ICsxNTgzLDcgQEAK
IAkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCiAJCQkJCSItV25vLWZvcm1hdC15MmsiLAogCQkJCQki
LVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3VuZGVmIiwKIAkJCQkpOwogCQkJfTsKIAkJCW5h
bWUgPSBEZWJ1ZzsKQEAgLTE2MjMsNiArMTYyNCw3IEBACiAJCQkJCSItV3dyaXRlLXN0cmluZ3Mi
LAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJ
CQkiLVd1bmRlZiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTE2Njks
NiArMTY3MSw3IEBACiAJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAogCQkJCQkiLVduby1mb3JtYXQt
eTJrIiwKIAkJCQkJIi1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVd1bmRlZiIsCiAJCQkJKTsK
IAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKQEAgLTE3NjMsNiArMTc2Niw3IEBACiAJCQkJ
CSItV25vLWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJ
Ii1Xbm8tbG9uZy1kb3VibGUiLAorCQkJCQkiLVd1bmRlZiIsCiAJCQkJKTsKIAkJCX07CiAJCQlu
YW1lID0gRGVidWc7CkBAIC0xODAxLDYgKzE4MDUsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJr
IiwKIAkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91Ymxl
IiwKKwkJCQkJIi1XdW5kZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CkBA
IC0xODM2LDYgKzE4NDEsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8t
dW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkJIi1XdW5k
ZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9ucGFwaS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzL25wYXBpLmgJKHJldmlzaW9uIDE1NzU0KQorKysgSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvbnBhcGkuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgdWludDE2OwogCiAjaWZuZGVmIF9VSU5UMzIKICNkZWZpbmUgX1VJTlQzMgot
I2lmIF9fTFA2NF9fCisjaWZkZWYgX19MUDY0X18KIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQz
MjsKICNlbHNlIC8qIF9fTFA2NF9fICovCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludDMyOwpA
QCAtMTI5LDcgKzEyOSw3IEBAIHR5cGVkZWYgc2hvcnQgaW50MTY7CiAKICNpZm5kZWYgX0lOVDMy
CiAjZGVmaW5lIF9JTlQzMgotI2lmIF9fTFA2NF9fCisjaWZkZWYgX19MUDY0X18KIHR5cGVkZWYg
aW50IGludDMyOwogI2Vsc2UgLyogX19MUDY0X18gKi8KIHR5cGVkZWYgbG9uZyBpbnQzMjsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfanNvYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfanNvYmplY3QuY3BwCShyZXZp
c2lvbiAxNTc1NCkKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfanNvYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBKYXZhSlNPYmplY3Q6
OnJlbW92ZU1lbWJlcihqc3RyaW5nIAogCiBqb2JqZWN0IEphdmFKU09iamVjdDo6Z2V0U2xvdChq
aW50IGluZGV4KSBjb25zdAogewotI2lmIF9fTFA2NF9fCisjaWZkZWYgX19MUDY0X18KICAgICBK
U19MT0cgKCJpbmRleCA9ICVkXG4iLCBpbmRleCk7CiAjZWxzZQogICAgIEpTX0xPRyAoImluZGV4
ID0gJWxkXG4iLCBpbmRleCk7CkBAIC0yNjEsNyArMjYxLDcgQEAgam9iamVjdCBKYXZhSlNPYmpl
Y3Q6OmdldFNsb3QoamludCBpbmRleAogCiB2b2lkIEphdmFKU09iamVjdDo6c2V0U2xvdChqaW50
IGluZGV4LCBqb2JqZWN0IHZhbHVlKSBjb25zdAogewotI2lmIF9fTFA2NF9fCisjaWZkZWYgX19M
UDY0X18KICAgICBKU19MT0cgKCJpbmRleCA9ICVkLCB2YWx1ZSA9ICVwXG4iLCBpbmRleCwgdmFs
dWUpOwogI2Vsc2UKICAgICBKU19MT0cgKCJpbmRleCA9ICVsZCwgdmFsdWUgPSAlcFxuIiwgaW5k
ZXgsIHZhbHVlKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL29iamMvb2JqY19jbGFz
cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfY2xh
c3MubW0JKHJldmlzaW9uIDE1NzU0KQorKysgSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvb2JqYy9v
YmpjX2NsYXNzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIE1ldGhvZExpc3Qg
T2JqY0NsYXNzOjptZXRob2RzTmFtZWQoY29uc3QKIAogICAgIENsYXNzU3RydWN0UHRyIHRoaXND
bGFzcyA9IF9pc2E7CiAgICAgd2hpbGUgKHRoaXNDbGFzcyAmJiBtZXRob2RMaXN0Lmxlbmd0aCgp
IDwgMSkgewotI2lmIE9CSkNfQVBJX1ZFUlNJT04gPj0gMgorI2lmIGRlZmluZWQoT0JKQ19BUElf
VkVSU0lPTikgJiYgT0JKQ19BUElfVkVSU0lPTiA+PSAyCiAgICAgICAgIHVuc2lnbmVkIG51bU1l
dGhvZHNJbkNsYXNzID0gMDsKICAgICAgICAgTWV0aG9kU3RydWN0UHRyKiBvYmpjTWV0aG9kTGlz
dCA9IGNsYXNzX2NvcHlNZXRob2RMaXN0KHRoaXNDbGFzcywgJm51bU1ldGhvZHNJbkNsYXNzKTsK
ICNlbHNlCkBAIC0xMDMsNyArMTAzLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNO
YW1lZChjb25zdAogICAgICAgICAgICAgdW5zaWduZWQgbnVtTWV0aG9kc0luQ2xhc3MgPSBvYmpj
TWV0aG9kTGlzdC0+bWV0aG9kX2NvdW50OwogI2VuZGlmCiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbnVtTWV0aG9kc0luQ2xhc3M7IGkrKykgewotI2lmIE9CSkNfQVBJX1ZF
UlNJT04gPj0gMgorI2lmIGRlZmluZWQoT0JKQ19BUElfVkVSU0lPTikgJiYgT0JKQ19BUElfVkVS
U0lPTiA+PSAyCiAgICAgICAgICAgICAgICAgTWV0aG9kU3RydWN0UHRyIG9iamNNZXRob2QgPSBv
YmpjTWV0aG9kTGlzdFtpXTsKICAgICAgICAgICAgICAgICBTRUwgb2JqY01ldGhvZFNlbGVjdG9y
ID0gbWV0aG9kX2dldE5hbWUob2JqY01ldGhvZCk7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogb2JqY01ldGhvZFNlbGVjdG9yTmFtZSA9IHNlbF9nZXROYW1lKG9iamNNZXRob2RTZWxlY3Rv
cik7CkBAIC0xMzIsNyArMTMyLDcgQEAgTWV0aG9kTGlzdCBPYmpjQ2xhc3M6Om1ldGhvZHNOYW1l
ZChjb25zdAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0jaWYgT0JKQ19BUElfVkVSU0lPTiA+PSAyCisjaWYgZGVmaW5lZChPQkpD
X0FQSV9WRVJTSU9OKSAmJiBPQkpDX0FQSV9WRVJTSU9OID49IDIKICAgICAgICAgICAgIHRoaXND
bGFzcyA9IGNsYXNzX2dldFN1cGVyY2xhc3ModGhpc0NsYXNzKTsKICAgICAgICAgICAgIGZyZWUo
b2JqY01ldGhvZExpc3QpOwogI2Vsc2UKQEAgLTE5MSw3ICsxOTEsNyBAQCBGaWVsZCogT2JqY0Ns
YXNzOjpmaWVsZE5hbWVkKGNvbnN0IGNoYXIqCiAgICAgICAgIC8vIGludHJvc3BlY3Rpb24uCiAK
ICAgICAgICAgd2hpbGUgKHRoaXNDbGFzcykgewotI2lmIE9CSkNfQVBJX1ZFUlNJT04gPj0gMgor
I2lmIGRlZmluZWQoT0JKQ19BUElfVkVSU0lPTikgJiYgT0JKQ19BUElfVkVSU0lPTiA+PSAyCiAg
ICAgICAgICAgICB1bnNpZ25lZCBudW1GaWVsZHNJbkNsYXNzID0gMDsKICAgICAgICAgICAgIEl2
YXJTdHJ1Y3RQdHIqIGl2YXJzSW5DbGFzcyA9IGNsYXNzX2NvcHlJdmFyTGlzdCh0aGlzQ2xhc3Ms
ICZudW1GaWVsZHNJbkNsYXNzKTsKICNlbHNlCkBAIC0yMDAsNyArMjAwLDcgQEAgRmllbGQqIE9i
amNDbGFzczo6ZmllbGROYW1lZChjb25zdCBjaGFyKgogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG51bUZpZWxkc0luQ2xhc3MgPSBmaWVsZHNJbkNsYXNzLT5pdmFyX2NvdW50OwogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZpZWxkc0luQ2xhc3M7
IGkrKykgewotI2lmIE9CSkNfQVBJX1ZFUlNJT04gPj0gMgorI2lmIGRlZmluZWQoT0JKQ19BUElf
VkVSU0lPTikgJiYgT0JKQ19BUElfVkVSU0lPTiA+PSAyCiAgICAgICAgICAgICAgICAgICAgIEl2
YXJTdHJ1Y3RQdHIgb2JqY0lWYXIgPSBpdmFyc0luQ2xhc3NbaV07CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIG9iamNJdmFyTmFtZSA9IGl2YXJfZ2V0TmFtZShvYmpjSVZhcik7CiAj
ZWxzZQpAQCAtMjI2LDcgKzIyNiw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoY29u
c3QgY2hhcioKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQotI2lmIE9CSkNfQVBJX1ZFUlNJT04gPj0gMgorI2lm
IGRlZmluZWQoT0JKQ19BUElfVkVSU0lPTikgJiYgT0JKQ19BUElfVkVSU0lPTiA+PSAyCiAgICAg
ICAgICAgICB0aGlzQ2xhc3MgPSBjbGFzc19nZXRTdXBlcmNsYXNzKHRoaXNDbGFzcyk7CiAgICAg
ICAgICAgICBmcmVlKGl2YXJzSW5DbGFzcyk7CiAjZWxzZQpJbmRleDogSmF2YVNjcmlwdENvcmUv
YmluZGluZ3Mvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL29iamMvb2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gMTU3NTQpCisrKyBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBKU1ZhbHVlKiBPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhv
ZChFeGVjCiAgICAgbWV0aG9kID0gc3RhdGljX2Nhc3Q8T2JqY01ldGhvZCo+KG1ldGhvZExpc3Qu
bWV0aG9kQXQoMCkpOwogICAgIE5TTWV0aG9kU2lnbmF0dXJlKiBzaWduYXR1cmUgPSBtZXRob2Qt
PmdldE1ldGhvZFNpZ25hdHVyZSgpOwogICAgIE5TSW52b2NhdGlvbiogaW52b2NhdGlvbiA9IFtO
U0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RTaWduYXR1cmU6c2lnbmF0dXJlXTsKLSNp
ZiBPQkpDX0FQSV9WRVJTSU9OID49IDIKKyNpZiBkZWZpbmVkKE9CSkNfQVBJX1ZFUlNJT04pICYm
IE9CSkNfQVBJX1ZFUlNJT04gPj0gMgogICAgIFtpbnZvY2F0aW9uIHNldFNlbGVjdG9yOnNlbF9y
ZWdpc3Rlck5hbWUobWV0aG9kLT5uYW1lKCkpXTsKICNlbHNlCiAgICAgW2ludm9jYXRpb24gc2V0
U2VsZWN0b3I6KFNFTCltZXRob2QtPm5hbWUoKV07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9vYmpjL29iamNfcnVudGltZS5tbQkocmV2aXNpb24gMTU3NTQpCisrKyBKYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTcsNyArNTcsNyBAQCBpbnQgT2JqY01ldGhvZDo6bnVtUGFyYW1ldGVycygpIGNvbnN0CiAKIE5T
TWV0aG9kU2lnbmF0dXJlKiBPYmpjTWV0aG9kOjpnZXRNZXRob2RTaWduYXR1cmUoKSBjb25zdAog
ewotI2lmIE9CSkNfQVBJX1ZFUlNJT04gPj0gMgorI2lmIGRlZmluZWQoT0JKQ19BUElfVkVSU0lP
TikgJiYgT0JKQ19BUElfVkVSU0lPTiA+PSAyCiAgICAgcmV0dXJuIFtfb2JqY0NsYXNzIGluc3Rh
bmNlTWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6c2VsX3JlZ2lzdGVyTmFtZShfc2VsZWN0b3Ip
XTsKICNlbHNlCiAgICAgcmV0dXJuIFtfb2JqY0NsYXNzIGluc3RhbmNlTWV0aG9kU2lnbmF0dXJl
Rm9yU2VsZWN0b3I6KFNFTClfc2VsZWN0b3JdOwpAQCAtODksNyArODksNyBAQCBPYmpjRmllbGQ6
Ok9iamNGaWVsZChDRlN0cmluZ1JlZiBuYW1lKSAKIAogY29uc3QgY2hhciogT2JqY0ZpZWxkOjpu
YW1lKCkgY29uc3QgCiB7Ci0jaWYgT0JKQ19BUElfVkVSU0lPTiA+PSAyCisjaWYgZGVmaW5lZChP
QkpDX0FQSV9WRVJTSU9OKSAmJiBPQkpDX0FQSV9WRVJTSU9OID49IDIKICAgICBpZiAoX2l2YXIp
CiAgICAgICAgIHJldHVybiBpdmFyX2dldE5hbWUoX2l2YXIpOwogI2Vsc2UKQEAgLTEwMSw3ICsx
MDEsNyBAQCBjb25zdCBjaGFyKiBPYmpjRmllbGQ6Om5hbWUoKSBjb25zdCAKIAogUnVudGltZVR5
cGUgT2JqY0ZpZWxkOjp0eXBlKCkgY29uc3QgCiB7IAotI2lmIE9CSkNfQVBJX1ZFUlNJT04gPj0g
MgorI2lmIGRlZmluZWQoT0JKQ19BUElfVkVSU0lPTikgJiYgT0JKQ19BUElfVkVSU0lPTiA+PSAy
CiAgICAgaWYgKF9pdmFyKQogICAgICAgICByZXR1cm4gaXZhcl9nZXRUeXBlRW5jb2RpbmcoX2l2
YXIpOwogI2Vsc2UKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2dyYW1tYXIueQkocmV2aXNpb24gMTU3NTQpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4
IEBACiAvLyBOb3Qgc3VyZSB3aHksIGJ1dCB5YWNjIGRvZXNuJ3QgYWRkIHRoaXMgZGVmaW5lIGFs
b25nIHdpdGggdGhlIG90aGVycy4KICNkZWZpbmUgeXlsbG9jIGtqc3l5bGxvYwogCisjZGVmaW5l
IFlZTUFYREVQVEggMTAwMDAKKwogLyogZGVmYXVsdCB2YWx1ZXMgZm9yIGJpc29uICovCiAjZGVm
aW5lIFlZREVCVUcgMAogI2lmICFQTEFURk9STShEQVJXSU4pCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvaWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9pZGVu
dGlmaWVyLmgJKHJldmlzaW9uIDE1NzU0KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZp
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBhZGQoVVN0cmluZzo6UmVwICop
OwogICAgIH07CiAgICAgCi0jaWYgIUtKU19JREVOVElGSUVSX0hJREVfR0xPQkFMUworI2lmbmRl
ZiBLSlNfSURFTlRJRklFUl9ISURFX0dMT0JBTFMKICAgICBleHRlcm4gY29uc3QgSWRlbnRpZmll
ciBudWxsSWRlbnRpZmllcjsKIAogICAgIGlubGluZSBjb25zdCBJZGVudGlmaWVyICZJZGVudGlm
aWVyOjpudWxsKCkKQEAgLTExNyw3ICsxMTcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAg
bWFjcm8odmFsdWVPZikKIAogICAgIC8vIERlZmluZSBleHRlcm5hbCBnbG9iYWwgdmFyaWFibGVz
IGZvciBhbGwgcHJvcGVydHkgbmFtZXMgYWJvdmUgKGFuZCBvbmUgbW9yZSkuCi0jaWYgIUtKU19J
REVOVElGSUVSX0hJREVfR0xPQkFMUworI2lmbmRlZiBLSlNfSURFTlRJRklFUl9ISURFX0dMT0JB
TFMKICAgICBleHRlcm4gY29uc3QgSWRlbnRpZmllciBzcGVjaWFsUHJvdG90eXBlUHJvcGVydHlO
YW1lOwogCiAgICAgI2RlZmluZSBLSlNfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVf
R0xPQkFMKG5hbWUpIGV4dGVybiBjb25zdCBJZGVudGlmaWVyIG5hbWUgIyMgUHJvcGVydHlOYW1l
OwpAQCAtMTI1LDYgKzEyNSw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICN1bmRlZiBLSlNfSURF
TlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMCiAjZW5kaWYKIAotfQorfSAvLyBu
YW1lc3BhY2UgS0pTCiAKLSNlbmRpZgorI2VuZGlmIC8vIEtKU19JREVOVElGSUVSX0gKSW5kZXg6
IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE1NzU1KQorKysgSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDYtMDgtMDIgIFNhbSBXZWluaWcgIDxz
YW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAtIHBhdGNoIGZvciBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTc2CisgICAgICAgICAgTWFrZSBXZWJDb3JlIGNvbXBpbGUgd2l0
aCAtV3VuZGVmCisKKyAgICAgICAgICAqIEFkZHMgLVd1bmRlZiBmbGFnIHRvIFhjb2RlIHByb2pl
Y3QKKworICAgICAgICAqIEphdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMDYtMDctMjkgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0phdmFTY3JpcHRH
bHVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEds
dWUvSmF2YVNjcmlwdEdsdWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU3
NTQpCisrKyBKYXZhU2NyaXB0R2x1ZS9KYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBACiAJCTA4NjdENkE1RkU4NDAz
MDdDMDJBQUMwNyAvKiBBcHBLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBLaXQu
ZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1l
d29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMDg5QzE2NjdGRTg0MTE1OEMw
MkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMTA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0
LnN0cmluZ3M7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbmZvUGxpc3Qu
c3RyaW5nczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTE0MjJFODY3MDlERTNCQ0UwMDc0OUI4NyAvKiB0ZXN0anNnbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0ZXN0anNnbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQyMkU4NzcwOURFM0JFODAwNzQ5Qjg3IC8qIHRlc3Rq
c2dsdWUgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRl
c3Rqc2dsdWU7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTE0MjJFODc3
MDlERTNCRTgwMDc0OUI4NyAvKiB0ZXN0anNnbHVlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGluY2x1ZGVJbkluZGV4ID0gMDsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmV4ZWN1dGFibGUiOyBwYXRoID0gdGVzdGpzZ2x1ZTsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJREQ2NkYzRDUwOEY3M0VENzAwQzc1RkQ3IC8qIEluZm8ucGxpc3Qg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCURENjZGM0Q2MDhGNzNFRDcw
MEM3NUZENyAvKiBKYXZhU2NyaXB0R2x1ZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBpbmNsdWRlSW5J
bmRleCA9IDA7IHBhdGggPSBKYXZhU2NyaXB0R2x1ZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCURENjZGM0Y1MDhGNzQwMUIwMEM3NUZENyAvKiBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTQ0Miw2ICs0
NDIsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJCQkJIi1Xbm8tdW51c2VkLXBhcmFt
ZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJCQkJIi1XdW5kZWYiLAogCQkJCSk7
CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtNDc5LDYgKzQ4MCw3IEBACiAJCQkJCSItV25v
LWZvcm1hdC15MmsiLAogCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKIAkJCQkJIi1Xbm8t
bG9uZy1kb3VibGUiLAorCQkJCQkiLVd1bmRlZiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0g
UmVsZWFzZTsKQEAgLTUxMiw2ICs1MTQsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJ
CQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJ
CQkJIi1XdW5kZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CkluZGV4
OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTU3NTUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDExNiBAQAorMjAwNi0wOC0wMiAgU2FtIFdlaW5pZyAgPHNhbS53ZWluaWdAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gcGF0
Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAx
NzYKKyAgICAgICAgICBNYWtlIFdlYkNvcmUgY29tcGlsZSB3aXRoIC1XdW5kZWYKKworICAgICAg
ICAgICogQWRkcyAtV3VuZGVmIGZsYWcgdG8gWGNvZGUgcHJvamVjdAorICAgICAgICAgICogQ29u
dmVydHMgI2lmcyB0byAjaWZkZWYgYW5kICNpZm5kZWZzIHdoZXJlIG5lZWRlZC4KKyAgICAgICAg
ICAqIFJlcGxhY2VzICNpZmRlZiBXSU4zMiB3aXRoICNpZiBQTEFURk9STShXSU5fT1MpIG9yIFBM
QVRGT1JNKFdJTikKKyAgICAgICAgICAgIChhbmQgaW4gb25lIGluc3RhbmNlIGluIGNvbmZpZy5o
IHdpdGggI2lmICFDT01QSUxFUihNU1ZDKSkKKyAgICAgICAgICAqIEFkZGVkICNkZWZpbmUgWVlN
QVhERVBUSCAxMDAwMCBpbiBYUGF0aEdyYW1tYXIueSBhbmQgQ1NTR3JhbW1hci55CisgICAgICAg
ICAgICB0byBmaXggYSB3YXJuaW5nIGZyb20gd2l0aGluIEJpc29uLgorICAgICAgICAgICogQ2xl
YW5lZCB1cCBzdHlsZSBhIGxpdHRsZSBpbiBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJyaWRnZS9tYWMv
V2ViQ29yZUFYT2JqZWN0Lm1tOgorICAgICAgICAoLVtXZWJDb3JlQVhPYmplY3QgZG9BWFRleHRN
YXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJzOl0pOgorICAgICAgICAqIGNvbmZpZy5o
OgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL01lZGlhRmVhdHVy
ZU5hbWVzLmNwcDoKKyAgICAgICAgKiBjc3MvTWVkaWFGZWF0dXJlTmFtZXMuaDoKKyAgICAgICAg
KiBjc3MvY3NzcGFyc2VyLmNwcDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpzZXRBY3RpdmUpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5jcHA6CisgICAg
ICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vTmFtZWRBdHRyTWFwLmg6Cisg
ICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5j
cHA6CisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuaDoKKyAgICAgICAgKiBkb20vUmFuZ2Uu
aDoKKyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TFRva2VuaXplcjo6ZXJyb3IpOgorICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnNjcmlwdEV4ZWN1dGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVG9rZW5pemVyOjpwYXJzZVRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW5pemVyOjpjb250aW51ZVByb2Nlc3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
aXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6dGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaDoKKyAg
ICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oOgor
ICAgICAgICAqIGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAqIGtzdmcyL2Nz
cy9TVkdSZW5kZXJTdHlsZURlZnMuaDoKKyAgICAgICAgKiBrc3ZnMi9zY3JpcHRzL21ha2VfbmFt
ZXMucGw6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9h
ZGVyL0xvYWRlckZ1bmN0aW9ucy5oOgorICAgICAgICAqIGxvYWRlci9sb2FkZXIuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dW5zY2hlZHVsZVJlbGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9BdG9taWNTdHJpbmcu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL0F0b21pY1N0cmluZy5oOgorICAgICAgICAqIHBsYXRm
b3JtL0N1cnNvci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RlcHJlY2F0ZWRBcnJheS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YWxsb2NhdGVIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUhhbmRsZU5vZGVC
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpmcmVlSGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9GbG9hdFBvaW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vRmxvYXRSZWN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vRmxvYXRTaXplLmg6CisgICAgICAgICogcGxhdGZvcm0vR3JhcGhpY3NDb250
ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9J
bnRQb2ludC5oOgorICAgICAgICAqIHBsYXRmb3JtL0ludFJlY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkludFJlY3Q6OmluZmxhdGVYKToKKyAgICAgICAgKFdlYkNvcmU6OkludFJlY3Q6OmluZmxh
dGVZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9JbnRTaXplLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Nb3Vz
ZUV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Jlc291cmNl
TG9hZGVySW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySW50ZXJu
YWw6OlJlc291cmNlTG9hZGVySW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZp
ZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TdHJlYW1pbmdUZXh0RGVjb2RlcklDVS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHJlYW1pbmdUZXh0RGVjb2RlcklDVTo6Y29udmVydCk6CisgICAgICAgICogcGxhdGZvcm0v
U3RyaW5nSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL0Nv
bG9yTWFjLm1tOgorICAgICAgICAoK1tXZWJDb3JlQ29udHJvbFRpbnRPYnNlcnZlciBXZWJDb3Jl
XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0Zsb2F0UG9pbnRNYWMubW06CisgICAgICAgICog
cGxhdGZvcm0vbWFjL0Zsb2F0UmVjdE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRmxv
YXRTaXplTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Gb250TWFjLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9JbnRQb2ludE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvSW50UmVjdE1hYy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvSW50U2l6ZU1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvYmlkaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRSdW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKToKKyAg
ICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUVy
cm9yRnVuYyk6CisgICAgICAgICogeHBhdGgvaW1wbC9YUGF0aEdyYW1tYXIueToKKwogMjAwNi0w
OC0wMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQnJhZHkuCkluZGV4OiBXZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y29uZmlnLmgJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMTEgKzIzLDEyIEBACiAjZGVmaW5lIEtIVE1MX05PX1hCTCAxCiAjZGVmaW5l
IEtIVE1MX1hTTFQgMQogCisKICNpZiBfX0FQUExFX18KICNkZWZpbmUgSEFWRV9GVU5DX1VTTEVF
UCAxCiAKICNpZm5kZWYgQ0dGTE9BVF9ERUZJTkVECi0jaWYgX19MUDY0X18KKyNpZmRlZiBfX0xQ
NjRfXwogdHlwZWRlZiBkb3VibGUgQ0dGbG9hdDsKICNlbHNlCiB0eXBlZGVmIGZsb2F0IENHRmxv
YXQ7CkBAIC0zNSw5ICszNiwxMCBAQCB0eXBlZGVmIGZsb2F0IENHRmxvYXQ7CiAjZGVmaW5lIENH
RkxPQVRfREVGSU5FRCAxCiAjZW5kaWYKIAotI2VuZGlmCisjZW5kaWYgLyogX19BUFBMRV9fICov
CisKIAotI2lmIFdJTjMyCisjaWYgUExBVEZPUk0oV0lOX09TKQogCiAjaWZuZGVmIF9XSU4zMl9X
SU5OVAogI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNTAwCkBAIC01NCwxMCArNTYsMTAgQEAgdHlw
ZWRlZiBmbG9hdCBDR0Zsb2F0OwogLy8gRklYTUU6IFNob3VsZCBwcm9iYWJseSBqdXN0IGR1bXAg
dGhpcyBldmVudHVhbGx5LCBidXQgaXQncyBuZWVkZWQgZm9yIG5vdy4KIC8vIFdlIGdldCB0aGlz
IGZyb20gc29tZSBzeXN0ZW0gcGxhY2Ugb24gT1MgWDsgcHJvYmFibHkgYmV0dGVyIG5vdCB0byB1
c2UgaXQKIC8vIGluIFdlYkNvcmUgY29kZS4KLQogI2luY2x1ZGUgPGFzc2VydC5oPgogCi0jZW5k
aWYKKyNlbmRpZiAvKiBQTEFURk9STShXSU5fT1MpICovCisKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiAKQEAgLTY5LDYgKzcxLDYgQEAgdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwogCiAjZW5kaWYKIAot
I2lmICFkZWZpbmVkKFdJTjMyKSAvLyBjYW4ndCBnZXQgdGhpcyB0byBjb21waWxlIG9uIFZpc3Vh
bCBDKysgeWV0CisjaWYgIUNPTVBJTEVSKE1TVkMpIC8vIGNhbid0IGdldCB0aGlzIHRvIGNvbXBp
bGUgb24gVmlzdWFsIEMrKyB5ZXQKICNkZWZpbmUgQVZPSURfU1RBVElDX0NPTlNUUlVDVE9SUyAx
CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zOTgyLDYgKzM5ODIsOCBAQAogCQkJCTkzNUM0NzVF
MDlBQzRDQUUwMEE2QUFCNCAvKiBIaXN0b3J5TWFjLm1tICovLAogCQkJCUY1ODc4NEZGMDJERTM3
NTkwMUVBNDEyMiAvKiBKYXZhQXBwbGV0V2lkZ2V0Lm1tICovLAogCQkJCTkzRTQ3QzVCMDlCRTJC
QkIwMDE5QzVDMSAvKiBQYWdlTWFjLm1tICovLAorCQkJCTU1OTk4QTVBMDUyQjU5Q0MwMDE3QTZD
MSAvKiBXZWJDb3JlQVhPYmplY3QuaCAqLywKKwkJCQk1NTk5OEE1QjA1MkI1OUNDMDAxN0E2QzEg
LyogV2ViQ29yZUFYT2JqZWN0Lm1tICovLAogCQkJCUY1QjJBNEZDMDJFMjIyMEYwMTg2MzVDQiAv
KiBXZWJDb3JlQ2FjaGUuaCAqLywKIAkJCQlGNUIyQTRGRDAyRTIyMjBGMDE4NjM1Q0IgLyogV2Vi
Q29yZUNhY2hlLm1tICovLAogCQkJCUJFRjdFRUEwMDVGRjhGMEQwMDk3MTdFRSAvKiBXZWJDb3Jl
RWRpdENvbW1hbmQuaCAqLywKQEAgLTQwMTUsOCArNDAxNyw2IEBACiAJCQkJRjU4Nzg1NTUwMkRF
Mzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVWaWV3RmFjdG9yeS5tICovLAogCQkJCTUxNTBDMkExMDcw
MjYyOTAwMEFGNjQyQyAvKiBXZWJEYXNoYm9hcmRSZWdpb24uaCAqLywKIAkJCQk1MTUwQzJBNTA3
MDI2Mjk4MDBBRjY0MkMgLyogV2ViRGFzaGJvYXJkUmVnaW9uLm0gKi8sCi0JCQkJNTU5OThBNUEw
NTJCNTlDQzAwMTdBNkMxIC8qIFdlYkNvcmVBWE9iamVjdC5oICovLAotCQkJCTU1OTk4QTVCMDUy
QjU5Q0MwMDE3QTZDMSAvKiBXZWJDb3JlQVhPYmplY3QubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9
IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01MTg3LDYgKzUxODcsMTAgQEAK
IAkJCQlGNTg3ODY4MjAyREUzQjg2MDFFQTQxMjIgLyogUG9wVXBCdXR0b24uaCAqLywKIAkJCQlG
NTg3ODUyQjAyREUzNzU5MDFFQTQxMjIgLyogUmVndWxhckV4cHJlc3Npb24uY3BwICovLAogCQkJ
CUY1ODc4NkIzMDJERTNCODYwMUVBNDEyMiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5oICovLAorCQkJ
CTY1NDVGNjZDMDlCODJGRUQwMDEzMDA2RiAvKiBSZXNvdXJjZUxvYWRlci5jcHAgKi8sCisJCQkJ
NjU0NUY2NkQwOUI4MkZFRDAwMTMwMDZGIC8qIFJlc291cmNlTG9hZGVyLmggKi8sCisJCQkJNjU0
NUY2NkUwOUI4MkZFRDAwMTMwMDZGIC8qIFJlc291cmNlTG9hZGVyQ2xpZW50LmggKi8sCisJCQkJ
NjU0NUY2NkYwOUI4MkZFRDAwMTMwMDZGIC8qIFJlc291cmNlTG9hZGVySW50ZXJuYWwuaCAqLywK
IAkJCQk5Mzg1Rjc2MTA5OEQ5QzMxMDBEOTBEMjQgLyogU2NyZWVuLmggKi8sCiAJCQkJQkM3QjJB
RjgwNDUwODI0MTAwQTgwMDBGIC8qIFNjcm9sbEJhci5oICovLAogCQkJCTkzNTM2NzNFMDlBRUQ3
OTIwMEQzNUNENiAvKiBTY3JvbGxCYXJNb2RlLmggKi8sCkBAIC01MjE5LDEwICs1MjIzLDYgQEAK
IAkJCQlGNTg3ODZCRjAyREUzQjg2MDFFQTQxMjIgLyogVGV4dFN0cmVhbS5oICovLAogCQkJCTkz
MzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThG
MUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggKi8sCi0JCQkJNjU0NUY2NkMwOUI4MkZFRDAwMTMwMDZG
IC8qIFJlc291cmNlTG9hZGVyLmNwcCAqLywKLQkJCQk2NTQ1RjY2RDA5QjgyRkVEMDAxMzAwNkYg
LyogUmVzb3VyY2VMb2FkZXIuaCAqLywKLQkJCQk2NTQ1RjY2RTA5QjgyRkVEMDAxMzAwNkYgLyog
UmVzb3VyY2VMb2FkZXJDbGllbnQuaCAqLywKLQkJCQk2NTQ1RjY2RjA5QjgyRkVEMDAxMzAwNkYg
LyogUmVzb3VyY2VMb2FkZXJJbnRlcm5hbC5oICovLAogCQkJCTkzODBGNDcxMDlBMTFBQjQwMDFG
REIzNCAvKiBXaWRnZXQuY3BwICovLAogCQkJCTkzODBGNDcyMDlBMTFBQjQwMDFGREIzNCAvKiBX
aWRnZXQuaCAqLywKIAkJCQk5M0I3ODBDOTA5QjNCN0ZFMDA2OTAxNjIgLyogV2lkZ2V0Q2xpZW50
LmggKi8sCkBAIC03NDM2LDYgKzc0MzYsNyBAQAogCQkJCQkiLVduby1mb3JtYXQteTJrIiwKIAkJ
CQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCiAJCQkJCSItV25vLWxvbmctZG91YmxlIiwKKwkJ
CQkJIi1XdW5kZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtNzQ3Myw2
ICs3NDc0LDcgQEAKIAkJCQkJIi1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25vLXVudXNlZC1w
YXJhbWV0ZXIiLAogCQkJCQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3VuZGVmIiwKIAkJ
CQkpOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwpAQCAtNzUwNyw2ICs3NTA5LDcgQEAKIAkJ
CQkJIi1Xbm8tZm9ybWF0LXkyayIsCiAJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAogCQkJ
CQkiLVduby1sb25nLWRvdWJsZSIsCisJCQkJCSItV3VuZGVmIiwKIAkJCQkpOwogCQkJfTsKIAkJ
CW5hbWUgPSBQcm9kdWN0aW9uOwpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVBWE9i
amVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUFYT2JqZWN0
Lm1tCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlQVhPYmpl
Y3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNjIsNyArMTM2Miw3IEBAIHN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlZFN0cmluZ0FwcGVuZFJlcGwKIAogLSAoaWQpZG9BWFRleHRNYXJrZXJSYW5nZUZv
clVub3JkZXJlZFRleHRNYXJrZXJzOiAoTlNBcnJheSAqKSBtYXJrZXJzCiB7Ci0jaWYgTUFSS0VS
QVJSQVlfU0VMRl9URVNUCisjaWYgZGVmaW5lZChNQVJLRVJBUlJBWV9TRUxGX1RFU1QpICYmIE1B
UktFUkFSUkFZX1NFTEZfVEVTVAogICAgIFdlYkNvcmVUZXh0TWFya2VyUmFuZ2UgKnRtciA9IFtz
ZWxmIGdldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlXTsKICAgICBXZWJDb3JlVGV4dE1hcmtlciAq
dG0xID0gQVhUZXh0TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKHRtcik7CiAgICAgV2ViQ29yZVRl
eHRNYXJrZXIgKnRtMiA9IEFYVGV4dE1hcmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRtcik7Cklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55CShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eQkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdl
dFZhbHVlSUQoY29uc3QgY2hhcioKICAgICByZXR1cm4gdmFsLT5pZDsKIH0KIAorI2RlZmluZSBZ
WU1BWERFUFRIIDEwMDAwCiAjZGVmaW5lIFlZREVCVUcgMAogI2RlZmluZSBZWVBBUlNFX1BBUkFN
IHBhcnNlcgogCkluZGV4OiBXZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwCShyZXZpc2lvbiAxNTc1
NCkKKysrIFdlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjIsMTQgKzIyLDE1IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEFWT0lEX1NU
QVRJQ19DT05TVFJVQ1RPUlMKKyNpZmRlZiBBVk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JTCiAjZGVm
aW5lIENTU19NRURJQVFVRVJZX05BTUVTX0hJREVfR0xPQkFMUyAxCiAjZW5kaWYKIAogI2luY2x1
ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RhdGljQ29uc3RydWN0b3JzLmgi
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5hbWVzIHsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1lcyB7CiAKICNkZWZp
bmUgREVGSU5FX01FRElBRkVBVFVSRV9HTE9CQUwobmFtZSwgc3RyKSBcCiAgICAgREVGSU5FX0dM
T0JBTChBdG9taWNTdHJpbmcsIG5hbWUjI01lZGlhRmVhdHVyZSwgc3RyKQpAQCAtNTAsNCArNTEs
NSBAQCB2b2lkIGluaXQoKQogICAgIH0KIH0KIAotfSB9Cit9IC8vIG5hbWVzcGFjZSBNZWRpYUZl
YXR1cmVOYW1lcworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3MvTWVk
aWFGZWF0dXJlTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVO
YW1lcy5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDggQEAKIAogI2luY2x1ZGUgIkF0b21pY1N0
cmluZy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1l
cyB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5hbWVz
IHsKIAogI2RlZmluZSBDU1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUo
bWFjcm8pIFwKICAgICBtYWNybyhjb2xvciwgImNvbG9yIikgXApAQCAtNTQsMTUgKzU1LDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIE1lZGlhRmVhdHUKICAgICBtYWNybyhtaW5f
d2lkdGgsICJtaW4td2lkdGgiKSBcCiAvLyBlbmQgb2YgbWFjcm8KIAotI2lmICFDU1NfTUVESUFR
VUVSWV9OQU1FU19ISURFX0dMT0JBTFMKKyNpZm5kZWYgQ1NTX01FRElBUVVFUllfTkFNRVNfSElE
RV9HTE9CQUxTCiAgICAgI2RlZmluZSBDU1NfTUVESUFRVUVSWV9OQU1FU19ERUNMQVJFKG5hbWUs
IHN0cikgZXh0ZXJuIGNvbnN0IEF0b21pY1N0cmluZyBuYW1lIyNNZWRpYUZlYXR1cmU7CiAgICAg
Q1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKENTU19NRURJQVFVRVJZ
X05BTUVTX0RFQ0xBUkUpCiAgICAgI3VuZGVmIENTU19NRURJQVFVRVJZX05BTUVTX0RFQ0xBUkUK
ICNlbmRpZgogCi0gICAgIHZvaWQgaW5pdCgpOwotfSB9Ci0KLSNlbmRpZgorICAgICAgICB2b2lk
IGluaXQoKTsKIAorICAgIH0gLy8gbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5hbWVzCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBNRURJQUZFQVRVUkVOQU1FU19ICkluZGV4OiBX
ZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3Bh
cnNlci5jcHAJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY2OSw3ICsyNjY5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
Qm9yZGVySW1hZ2UoaW50IHBybwogICAgIHJldHVybiBjb250ZXh0LmZhaWxlZCgpOwogfQogCi0j
aWYgQ1NTX0RFQlVHCisjaWZkZWYgQ1NTX0RFQlVHCiAKIHN0YXRpYyBpbmxpbmUgaW50IHl5ZXJy
b3IoY29uc3QgY2hhciAqc3RyKQogewpJbmRleDogV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9u
IDE1NzU0KQorKysgV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc4Myw3ICs3ODMsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnNldEFjdGl2ZShib29sIGRv
d24sCiAgICAgICAgICAgICAvLyB0byByZXBhaW50IHRoZSAiZG93biIgc3RhdGUgb2YgdGhlIGNv
bnRyb2wgaXMgYWJvdXQgdGhlIHNhbWUgdGltZSBhcyBpdCB3b3VsZCB0YWtlIHRvIHJlcGFpbnQg
dGhlCiAgICAgICAgICAgICAvLyAidXAiIHN0YXRlLiAgT25jZSB5b3UgYXNzdW1lIHRoaXMsIHlv
dSBjYW4ganVzdCBkZWxheSBmb3IgMTAwbXMgLSB0aGF0IHRpbWUgKGFzc3VtaW5nIHRoYXQgYWZ0
ZXIgeW91CiAgICAgICAgICAgICAvLyBsZWF2ZSB0aGlzIG1ldGhvZCwgaXQgd2lsbCBiZSBhYm91
dCB0aGF0IGxvbmcgYmVmb3JlIHRoZSBmbHVzaCBvZiB0aGUgdXAgc3RhdGUgaGFwcGVucyBhZ2Fp
bikuCi0jaWYgSEFWRV9GVU5DX1VTTEVFUAorI2lmZGVmIEhBVkVfRlVOQ19VU0xFRVAKICAgICAg
ICAgICAgIGRvdWJsZSBzdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwogI2VuZGlmCiAKQEAgLTc5
Miw3ICs3OTIsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnNldEFjdGl2ZShib29sIGRvd24sCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgc3Vic3RpdHV0ZSBmb3Ig
dXNsZWVwIGZvciBXaW4zMi4KICAgICAgICAgICAgIC8vIEJldHRlciB5ZXQsIGNvbWUgdXAgd2l0
aCBhIHdheSBvZiBkb2luZyB0aGlzIHRoYXQgZG9lc24ndCB1c2UgdGhpcyBzb3J0IG9mIHRoaW5n
IGF0IGFsbC4gICAgICAgICAgICAKLSNpZiBIQVZFX0ZVTkNfVVNMRUVQCisjaWZkZWYgSEFWRV9G
VU5DX1VTTEVFUAogICAgICAgICAgICAgLy8gTm93IHBhdXNlIGZvciBhIHNtYWxsIGFtb3VudCBv
ZiB0aW1lICgxLzEwdGggb2YgYSBzZWNvbmQgZnJvbSBiZWZvcmUgd2UgcmVwYWludGVkIGluIHRo
ZSBwcmVzc2VkIHN0YXRlKQogICAgICAgICAgICAgZG91YmxlIHJlbWFpbmluZ1RpbWUgPSAwLjEg
LSAoY3VycmVudFRpbWUoKSAtIHN0YXJ0VGltZSk7CiAgICAgICAgICAgICBpZiAocmVtYWluaW5n
VGltZSA+IDApCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQwLDcgKzU0MCw3IEBAIHZvaWQgRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAKIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKIHsKLSNp
ZiBTUEVFRF9ERUJVRyA8IDEKKyNpZiAhZGVmaW5lZChTUEVFRF9ERUJVRykgfHwgU1BFRURfREVC
VUcgPCAxCiAgICAgY3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpOwogI2VuZGlmCiAgICAgQ29udGFp
bmVyTm9kZTo6YXR0YWNoKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIG5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9u
ZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZTsgfQogICAgIHZvaWQgc2V0TmVlZHNGb2N1c0FwcGVh
cmFuY2VVcGRhdGUoYm9vbCBiKSB7IG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGUgPSBiOyB9
CiAgICAgCi0jaWYgIU5ERUJVRworI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgZHVt
cChUZXh0U3RyZWFtICpzdHJlYW0sIERlcHJlY2F0ZWRTdHJpbmcgaW5kID0gIiIpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyICpidWZmZXIsIHVuc2lnbmVk
IGxlbmd0aCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCShyZXZpc2lvbiAxNTc1
NCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3
ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEFWT0lEX1NUQVRJQ19DT05T
VFJVQ1RPUlMKKyNpZmRlZiBBVk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JTCiAjZGVmaW5lIERPTV9F
VkVOVF9OQU1FU19ISURFX0dMT0JBTFMgMQogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlz
aW9uIDE1NzU0KQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05Niw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIEV2ZW50TmFtZXMK
ICAgICBcCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKLSNpZiAhRE9NX0VW
RU5UX05BTUVTX0hJREVfR0xPQkFMUworI2lmbmRlZiBET01fRVZFTlRfTkFNRVNfSElERV9HTE9C
QUxTCiAgICAgI2RlZmluZSBET01fRVZFTlRfTkFNRVNfREVDTEFSRShuYW1lKSBleHRlcm4gY29u
c3QgQXRvbWljU3RyaW5nIG5hbWUjI0V2ZW50OwogICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFD
SChET01fRVZFTlRfTkFNRVNfREVDTEFSRSkKICAgICAjdW5kZWYgRE9NX0VWRU5UX05BTUVTX0RF
Q0xBUkUKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvZG9t
L05hbWVkQXR0ck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogCi0jaWYgX19PQkpDX18K
KyNpZmRlZiBfX09CSkNfXwogI2RlZmluZSBpZCBpZF9BVk9JRF9LRVlXT1JECiAjZW5kaWYKIApJ
bmRleDogV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIFBvc2l0aW9uOjpkZWJ1
Z1Bvc2l0aW9uKGNvbnN0IGNoYXIgCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUG9zaXRpb24g
WyVzXTogJXMgWyVwXSBhdCAlZFxuIiwgbXNnLCBub2RlKCktPm5vZGVOYW1lKCkuZGVwcmVjYXRl
ZFN0cmluZygpLmxhdGluMSgpLCBub2RlKCksIG9mZnNldCgpKTsKIH0KIAotI2lmICFOREVCVUcK
KyNpZm5kZWYgTkRFQlVHCiAKIHZvaWQgUG9zaXRpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIg
KmJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9kb20vUXVh
bGlmaWVkTmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5j
cHAJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0j
aWYgQVZPSURfU1RBVElDX0NPTlNUUlVDVE9SUworI2lmZGVmIEFWT0lEX1NUQVRJQ19DT05TVFJV
Q1RPUlMKICNkZWZpbmUgV0VCQ09SRV9RVUFMSUZJRUROQU1FX0hJREVfR0xPQkFMUyAxCiAjZWxz
ZQogI2RlZmluZSBRTkFNRV9ERUZBVUxUX0NPTlNUUlVDVE9SCkluZGV4OiBXZWJDb3JlL2RvbS9R
dWFsaWZpZWROYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5o
CShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIFF1YWxpZmllZE5hbWVJbXBs
KiBtX2ltcGw7CiB9OwogCi0jaWYgIVdFQkNPUkVfUVVBTElGSUVETkFNRV9ISURFX0dMT0JBTFMK
KyNpZm5kZWYgV0VCQ09SRV9RVUFMSUZJRUROQU1FX0hJREVfR0xPQkFMUwogZXh0ZXJuIGNvbnN0
IFF1YWxpZmllZE5hbWUgYW55TmFtZTsKIGlubGluZSBjb25zdCBRdWFsaWZpZWROYW1lJiBhbnlR
TmFtZSgpIHsgcmV0dXJuIGFueU5hbWU7IH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vUmFu
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9SYW5nZS5oCShyZXZpc2lvbiAxNTc1NCkK
KysrIFdlYkNvcmUvZG9tL1JhbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4ICsxMTAsOCBA
QCBwdWJsaWM6CiAKICAgICBQb3NpdGlvbiBlZGl0aW5nU3RhcnRQb3NpdGlvbigpIGNvbnN0Owog
Ci0jaWYgIU5ERUJVRwotICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciAqYnVmZmVyLCB1
bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIGZvcm1hdEZv
ckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKICNlbmRpZgog
CiBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxNTc1NCkKKysrIFdl
YkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPGxpYnhtbC9wYXJzZXIu
aD4KICNpbmNsdWRlIDxsaWJ4bWwvcGFyc2VySW50ZXJuYWxzLmg+CisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWZkZWYgS0hUTUxfWFNMVApA
QCAtNjMsMTIgKzY0LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGNvbnN0IGlu
dCBtYXhFcnJvcnMgPSAyNTsKIAotdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwgKiwgU3RyaW5n
SW1wbCAqPiBQcmVmaXhGb3JOYW1lc3BhY2VNYXA7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nSW1w
bCosIFN0cmluZ0ltcGwqPiBQcmVmaXhGb3JOYW1lc3BhY2VNYXA7CiAKIGNsYXNzIFBlbmRpbmdD
YWxsYmFja3M7CiAKLWNsYXNzIFhNTFRva2VuaXplciA6IHB1YmxpYyBUb2tlbml6ZXIsIHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudAoteworY2xhc3MgWE1MVG9rZW5pemVyIDogcHVibGljIFRv
a2VuaXplciwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBYTUxU
b2tlbml6ZXIoRG9jdW1lbnQgKiwgRnJhbWVWaWV3ICogPSAwKTsKICAgICBYTUxUb2tlbml6ZXIo
RG9jdW1lbnRGcmFnbWVudCAqLCBFbGVtZW50ICopOwpAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQg
WE1MVG9rZW5pemVyOjplcnJvcihFcnJvclR5cGUgdHlwZSwKICAgICBpZiAobV9wYXJzZXJTdG9w
cGVkKQogICAgICAgICByZXR1cm47CiAKLSNpZiBXSU4zMgorI2lmIFBMQVRGT1JNKFdJTl9PUykK
ICAgICBjaGFyIG1bMTAyNF07CiAgICAgdnNucHJpbnRmKG0sIHNpemVvZihtKSAtIDEsIG1lc3Nh
Z2UsIGFyZ3MpOwogI2Vsc2UKQEAgLTkzNSw3ICs5MzUsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6
ZXJyb3IoRXJyb3JUeXBlIHR5cGUsCiAgICAgZWxzZQogICAgICAgICBoYW5kbGVFcnJvcih0eXBl
LCBtLCBsaW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpKTsKIAotI2lmICFXSU4zMgorI2lmICFQ
TEFURk9STShXSU5fT1MpCiAgICAgZnJlZShtKTsKICNlbmRpZgogfQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9r
ZW5pemVyLmNwcAkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXpl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MywxMCArMzYzLDEwIEBAIEhUTUxUb2tlbml6ZXI6
OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnNjcmkKICAgICAgICAgaWYgKCFzY3JpcHRTcmMuaXNFbXB0
eSgpICYmIG1fZG9jLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAvLyBmb3JnZXQgd2hhdCB3ZSBq
dXN0IGdvdDsgbG9hZCBmcm9tIHNyYyB1cmwgaW5zdGVhZAogICAgICAgICAgICAgaWYgKCFwYXJz
ZXItPnNraXBNb2RlKCkgJiYgIWZvbGxvd2luZ0ZyYW1lc2V0KSB7Ci0gICAgI2lmIElOU1RSVU1F
TlRfTEFZT1VUX1NDSEVEVUxJTkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5H
CiAgICAgICAgICAgICAgICAgaWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiUmVxdWVzdGluZyBzY3JpcHQgYXQgdGltZSAlZFxuIiwgbV9kb2Mt
PmVsYXBzZWRUaW1lKCkpOwotICAgICNlbmRpZgorI2VuZGlmCiAgICAgICAgICAgICAgICAgLy8g
VGhlIHBhcnNlciBtaWdodCBoYXZlIGJlZW4gc3RvcHBlZCBieSBmb3IgZXhhbXBsZSBhIHdpbmRv
dy5jbG9zZSBjYWxsIGluIGFuIGVhcmxpZXIgc2NyaXB0LgogICAgICAgICAgICAgICAgIC8vIElm
IHNvLCB3ZSBkb24ndCB3YW50IHRvIGxvYWQgc2NyaXB0cy4KICAgICAgICAgICAgICAgICBpZiAo
IW1fcGFyc2VyU3RvcHBlZCAmJiAoY3MgPSBtX2RvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RTY3Jp
cHQoc2NyaXB0U3JjLCBzY3JpcHRTcmNDaGFyc2V0KSApKQpAQCAtMzc2LDEzICszNzYsMTIgQEAg
SFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXplcjo6c2NyaQogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgICAgICBzY3JpcHRT
cmM9RGVwcmVjYXRlZFN0cmluZzo6bnVsbDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAg
ICAjaWZkZWYgVE9LRU5fREVCVUcKKyAgICAgICAgfSBlbHNlIHsKKyNpZmRlZiBUT0tFTl9ERUJV
RwogICAgICAgICAgICAga2REZWJ1ZyggNjAzNiApIDw8ICItLS1TVEFSVCBTQ1JJUFQtLS0iIDw8
IGVuZGw7CiAgICAgICAgICAgICBrZERlYnVnKCA2MDM2ICkgPDwgRGVwcmVjYXRlZFN0cmluZyhz
Y3JpcHRDb2RlLCBzY3JpcHRDb2RlU2l6ZSkgPDwgZW5kbDsKICAgICAgICAgICAgIGtkRGVidWco
IDYwMzYgKSA8PCAiLS0tRU5EIFNDUklQVC0tLSIgPDwgZW5kbDsKLSAgICAjZW5kaWYKKyNlbmRp
ZgogICAgICAgICAgICAgc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgICAgICAvLyBQYXJzZSBzY3Jp
cHRDb2RlIGNvbnRhaW5pbmcgPHNjcmlwdD4gaW5mbwogICAgICAgICAgICAgZG9TY3JpcHRFeGVj
ID0gdHJ1ZTsKQEAgLTQ3Nyw3ICs0NzYsNyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9r
ZW5pemVyOjpzY3JpCiAgICAgU2VnbWVudGVkU3RyaW5nIHByZXBlbmRpbmdTcmM7CiAgICAgY3Vy
cmVudFByZXBlbmRpbmdTcmMgPSAmcHJlcGVuZGluZ1NyYzsKIAotI2lmIElOU1RSVU1FTlRfTEFZ
T1VUX1NDSEVEVUxJTkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAg
aWYgKCFtX2RvYy0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50ZigiYmVnaW5uaW5nIHNj
cmlwdCBleGVjdXRpb24gYXQgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgpA
QCAtNDg4LDcgKzQ4Nyw3IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnNj
cmkKIAogICAgIHN0YXRlLnNldEFsbG93WWllbGQodHJ1ZSk7CiAKLSNpZiBJTlNUUlVNRU5UX0xB
WU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAg
IGlmICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoImVuZGluZyBzY3Jp
cHQgZXhlY3V0aW9uIGF0ICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKQEAg
LTgwOCw3ICs4MDcsNyBAQCBIVE1MVG9rZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpwYXJz
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBUYWdOYW1lOgogICAgICAgICB7Ci0jaWYgZGVmaW5l
ZChUT0tFTl9ERUJVRykgJiYgIFRPS0VOX0RFQlVHID4gMQorI2lmIGRlZmluZWQoVE9LRU5fREVC
VUcpICYmIFRPS0VOX0RFQlVHID4gMQogICAgICAgICAgICAgcURlYnVnKCJUYWdOYW1lIik7CiAj
ZW5kaWYKICAgICAgICAgICAgIGlmIChzZWFyY2hDb3VudCA+IDApCkBAIC0xMjg5LDcgKzEyODgs
NyBAQCBpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjpjb250aW51ZVByb2NlCiAgICAgICAgICAg
ICAgICAgKG1fZG9jLT5kb2N1bWVudEVsZW1lbnQoKS0+aWQoKSAhPSBJRF9IVE1MIHx8IG1fZG9j
LT5ib2R5KCkpKSkgeyovCiAgICAgICAgICAgICAvLyBTY2hlZHVsZSB0aGUgdGltZXIgdG8ga2Vl
cCBwcm9jZXNzaW5nIGFzIHNvb24gYXMgcG9zc2libGUuCiAgICAgICAgICAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKLSNpZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYg
SU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1l
KCkgLSBzdGFydFRpbWUgPiB0b2tlbml6ZXJUaW1lRGVsYXkpCiAgICAgICAgICAgICAgICAgcHJp
bnRmKCJEZWZlcnJpbmcgcHJvY2Vzc2luZyBvZiBkYXRhIGJlY2F1c2UgNTAwbXMgZWxhcHNlZCBh
d2F5IGZyb20gZXZlbnQgbG9vcC5cbiIpOwogI2VuZGlmCkBAIC0xMzM1LDcgKzEzMzQsNyBAQCBi
b29sIEhUTUxUb2tlbml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlCiAgICAgYm9vbCB3YXNJbldy
aXRlID0gaW5Xcml0ZTsKICAgICBpbldyaXRlID0gdHJ1ZTsKICAgICAKLSNpZiBJTlNUUlVNRU5U
X0xBWU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwog
ICAgIGlmICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIkJlZ2lubmlu
ZyB3cml0ZSBhdCB0aW1lICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKQEAg
LTE0NTMsNyArMTQ1Miw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6d3JpdGUoY29uc3QgU2VnbWVu
dGUKICAgICAgICAgfQogICAgIH0KICAgICAKLSNpZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVM
SU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghbV9kb2Mt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIkVuZGluZyB3cml0ZSBhdCB0aW1lICVk
XG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKQEAgLTE0ODcsNyArMTQ4Niw3IEBA
IGJvb2wgSFRNTFRva2VuaXplcjo6cHJvY2Vzc2luZ0RhdGEoKSBjb24KIAogdm9pZCBIVE1MVG9r
ZW5pemVyOjp0aW1lckZpcmVkKFRpbWVyPEhUTUxUb2tlbml6ZXI+KikKIHsKLSNpZiBJTlNUUlVN
RU5UX0xBWU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElO
RwogICAgIGlmICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIkJlZ2lu
bmluZyB0aW1lciB3cml0ZSBhdCB0aW1lICVkXG4iLCBtX2RvYy0+ZWxhcHNlZFRpbWUoKSk7CiAj
ZW5kaWYKQEAgLTE2NjEsNyArMTY2MCw3IEBAIHZvaWQgSFRNTFRva2VuaXplcjo6ZW5sYXJnZVNj
cmlwdEJ1ZmZlcigKIAogdm9pZCBIVE1MVG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopCiB7Ci0jaWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORworI2lmZGVmIElO
U1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICBpZiAoIW1fZG9jLT5vd25lckVsZW1lbnQo
KSkKICAgICAgICAgcHJpbnRmKCJzY3JpcHQgbG9hZGVkIGF0ICVkXG4iLCBtX2RvYy0+ZWxhcHNl
ZFRpbWUoKSk7CiAjZW5kaWYKQEAgLTE2ODksNyArMTY4OCw3IEBAIHZvaWQgSFRNTFRva2VuaXpl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGUKICAgICAgICAgUmVmUHRyPE5vZGU+IG4gPSBzY3JpcHRO
b2RlOwogICAgICAgICBzY3JpcHROb2RlID0gMDsKIAotI2lmIElOU1RSVU1FTlRfTEFZT1VUX1ND
SEVEVUxJTkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAgICAgIGlm
ICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgcHJpbnRmKCJleHRlcm5hbCBz
Y3JpcHQgYmVnaW5uaW5nIGV4ZWN1dGlvbiBhdCAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkp
OwogI2VuZGlmCkBAIC0xNzA2LDcgKzE3MDUsNyBAQCB2b2lkIEhUTUxUb2tlbml6ZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlCiAgICAgICAgIGZpbmlzaGVkID0gcGVuZGluZ1NjcmlwdHMuaXNFbXB0
eSgpOwogICAgICAgICBpZiAoZmluaXNoZWQpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0TG9h
ZGluZ0V4dFNjcmlwdChmYWxzZSk7Ci0jaWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwor
I2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICAgICAgICAgIGlmICghbV9k
b2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHByaW50ZigiZXh0ZXJuYWwgc2Ny
aXB0IGZpbmlzaGVkIGV4ZWN1dGlvbiBhdCAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVy
UXVhcnR6LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS0Nh
bnZhc0ZpbHRlclF1YXJ0ei5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUva2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHouaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogCiAjaW1wb3J0ICJLQ2FudmFzRmlsdGVycy5oIgogCi0jaWYgX19PQkpDX18K
KyNpZmRlZiBfX09CSkNfXwogQGNsYXNzIENJRmlsdGVyOwogQGNsYXNzIENJSW1hZ2U7CiAjZWxz
ZQpJbmRleDogV2ViQ29yZS9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1
YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5k
ZXJpbmdEZXZpY2VRdWFydHouaAkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL2tjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKIHR5cGVkZWYgc3RydWN0IENHUmVjdCBDR1JlY3Q7CiB0eXBlZGVmIHN0
cnVjdCBDR0NvbnRleHQgKkNHQ29udGV4dFJlZjsKIAotI2lmIF9fT0JKQ19fCisjaWZkZWYgX19P
QkpDX18KIEBjbGFzcyBOU0dyYXBoaWNzQ29udGV4dDsKICNlbHNlCiBjbGFzcyBOU0dyYXBoaWNz
Q29udGV4dDsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTU3
NTQpCisrKyBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxMSArMjYsMTEgQEAKICNpZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiRGF0YVJl
Zi5oIgotCiAjaW5jbHVkZSA8a3N2ZzIvc3ZnL1NWR1BhaW50Lmg+CiAjaW5jbHVkZSA8a3N2ZzIv
Y3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0j
aWYgV0lOMzIKKyNpZiBQTEFURk9STShXSU5fT1MpCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyB1aW50NjRfdDsKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJT
dHlsZURlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJTdHls
ZURlZnMuaAkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdSZW5kZXJT
dHlsZURlZnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgUEVfVklTSUJMRV9TVFJPS0UsIFBFX1ZJU0lCTEVfRklMTCwgUEVf
VklTSUJMRV9QQUlOVEVELCBQRV9BTEwKICAgICB9OwogICAgIAorICAgIGNsYXNzIENTU1ZhbHVl
OwogICAgIGNsYXNzIENTU1ZhbHVlTGlzdDsKKyAgICBjbGFzcyBTVkdQYWludDsKIAogICAgIC8v
IEluaGVyaXRlZC9Ob24tSW5oZXJpdGVkIFN0eWxlIERhdGFzdHJ1Y3R1cmVzCiAgICAgY2xhc3Mg
U3R5bGVGaWxsRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVGaWxsRGF0YT4gewpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGwJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9r
c3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGwJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw3ICsyMTQs
NyBAQCBzdWIgcHJpbnROYW1lc0hlYWRlckZpbGUKIAl9CiAJCiAJbXkgJGxvd2VyTmFtZXNwYWNl
ID0gbGMoJG5hbWVzcGFjZVByZWZpeCk7Ci0JcHJpbnQgIiNpZiAhRE9NXyR7bmFtZXNwYWNlfU5B
TUVTX0hJREVfR0xPQkFMU1xuIjsKKwlwcmludCAiI2lmbmRlZiBET01fJHtuYW1lc3BhY2V9TkFN
RVNfSElERV9HTE9CQUxTXG4iOwogICAgIHByaW50ICIvLyBOYW1lc3BhY2VcbiI7CiAgICAgcHJp
bnQgImV4dGVybiBjb25zdCBXZWJDb3JlOjpBdG9taWNTdHJpbmcgJHtsb3dlck5hbWVzcGFjZX1O
YW1lc3BhY2VVUkk7XG5cbiI7CiAKQEAgLTI1MCw3ICsyNTAsNyBAQCBzdWIgcHJpbnROYW1lc0Nw
cEZpbGUKIAogcHJpbnQgIiNpbmNsdWRlIFwiY29uZmlnLmhcIlxuIjsKIAotcHJpbnQgIiNpZiBB
Vk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JTXG4iOworcHJpbnQgIiNpZmRlZiBBVk9JRF9TVEFUSUNf
Q09OU1RSVUNUT1JTXG4iOwogcHJpbnQgIiNkZWZpbmUgRE9NXyR7bmFtZXNwYWNlfU5BTUVTX0hJ
REVfR0xPQkFMUyAxXG4iOwogcHJpbnQgIiNlbHNlXG4iOwogcHJpbnQgIiNkZWZpbmUgUU5BTUVf
REVGQVVMVF9DT05TVFJVQ1RPUiAxXG4iOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVz
b3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCShy
ZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8dGltZS5oPgogCi0jaWYgX19PQkpDX18KKyNpZmRlZiBfX09CSkNfXwogQGNsYXNzIE5T
RGF0YTsKIEBjbGFzcyBOU1VSTFJlc3BvbnNlOwogI2Vsc2UKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0xvYWRlckZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0xvYWRlckZ1
bmN0aW9ucy5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvbG9hZGVyL0xvYWRlckZ1bmN0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKLSNpZiBfX09CSkNfXworI2lmZGVmIF9fT0JKQ19fCiBAY2xhc3MgTlNEaWN0
aW9uYXJ5OwogQGNsYXNzIE5TU3RyaW5nOwogQGNsYXNzIE5TVVJMUmVzcG9uc2U7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9sb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9sb2Fk
ZXIuaAkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSAiRGVwcmVjYXRlZFB0ckxpc3QuaCIKIAotI2lmIF9fT0JKQ19fCisjaWZkZWYgX19PQkpD
X18KIEBjbGFzcyBOU0RhdGE7CiBAY2xhc3MgTlNVUkxSZXNwb25zZTsKICNlbHNlCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5j
cHAJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsMTMgKzQ2LDEzIEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJIVE1M
Vmlld1NvdXJjZURvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxHZW5lcmljRm9ybUVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkltYWdlRG9jdW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUZlYXR1cmVOYW1lcy5oIgogI2luY2x1
ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKQEAgLTYzLDI0ICs2MywyNSBAQAog
I2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyUGFydC5oIgotI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dENvbnRyb2wuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJUZXh0
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdD
b21tYW5kLmgiCisjaW5jbHVkZSAiWE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiY3Nzc3R5bGVz
ZWxlY3Rvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAia2pzX3dpbmRv
dy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKLSNp
bmNsdWRlICJYTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJ4bWxodHRwcmVxdWVzdC5oIgogI2lu
Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KIAotI2lmICFXSU4zMgorI2lmICFQTEFURk9STShXSU5fT1MpCiAjaW5jbHVkZSA8
dW5pc3RkLmg+CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAJKHJldmlzaW9uIDE1NzU0KQor
KysgV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE1ICsy
MywxNiBAQAogCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgc3RkOjpzd2FwOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoaXMgYmVsb25ncyBpbiBzb21lIGhlYWRlciBmaWxl
IHdoZXJlIG11bHRpcGxlIGNsaWVudHMgY2FuIHNoYXJlIGl0LgotI2lmIFdJTjMyCisvLyBGSVhN
RTogVGhpcyBiZWxvbmdzIGluIHNvbWUgaGVhZGVyIGZpbGUgd2hlcmUgbXVsdGlwbGUgY2xpZW50
cyBjYW4gc2hhcmUgaXQuCisjaWYgUExBVEZPUk0oV0lOX09TKQogaW50IHNucHJpbnRmKGNoYXIq
IHN0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQogewogICAgIHZhX2xp
c3QgYXJnczsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OmNsZWFyKCkKIAogICAgIGQtPnJlc2V0KCk7CiAKLSNpZiBJTlNUUlVNRU5U
X0xBWU9VVF9TQ0hFRFVMSU5HCisjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwog
ICAgIGlmIChkLT5sYXlvdXRUaW1lci5pc0FjdGl2ZSgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCkg
JiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYo
IktpbGxpbmcgdGhlIGxheW91dCB0aW1lciBmcm9tIGEgY2xlYXIgYXQgJWRcbiIsIG1fZnJhbWUt
PmRvY3VtZW50KCktPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmICAgIApAQCAtNDEzLDcgKzQxMyw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChyb290UmVuZGVyZXIpCiAgICAgICAgICAgICBhcHBseU92
ZXJmbG93VG9WaWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7IC8vIFhNTC9YSFRN
TCBVQXMgdXNlIHRoZSByb290IGVsZW1lbnQuCi0jaWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURV
TElORworI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICAgICAgaWYgKGQt
PmZpcnN0TGF5b3V0ICYmICFkb2N1bWVudC0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICBw
cmludGYoIkVsYXBzZWQgdGltZSBiZWZvcmUgZmlyc3QgbGF5b3V0OiAlZFxuIiwgZG9jdW1lbnQt
PmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cmVwYWludFJlY3RhbmdsZShjb25zdCBJCiAKIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXRU
aW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4qKQogewotI2lmIElOU1RSVU1FTlRfTEFZT1VUX1ND
SEVEVUxJTkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAgaWYgKG1f
ZnJhbWUtPmRvY3VtZW50KCkgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgp
KQogICAgICAgICBwcmludGYoIkxheW91dCB0aW1lciBmaXJlZCBhdCAlZFxuIiwgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKQEAgLTEyNDAsNyArMTI0MCw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0KCkKIAogICAgIGQtPmRlbGF5ZWRMYXlv
dXQgPSBkZWxheSAhPSAwOwogCi0jaWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORworI2lm
ZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICBpZiAoIW1fZnJhbWUtPmRvY3Vt
ZW50KCktPm93bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIlNjaGVkdWxpbmcgbGF5b3V0
IGZvciAlZFxuIiwgZGVsYXkpOwogI2VuZGlmCkBAIC0xMjg4LDcgKzEyODgsNyBAQCB2b2lkIEZy
YW1lVmlldzo6dW5zY2hlZHVsZVJlbGF5b3V0KCkKICAgICBpZiAoIWQtPmxheW91dFRpbWVyLmlz
QWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVE
VUxJTkcKKyNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAgICAgaWYgKG1fZnJh
bWUtPmRvY3VtZW50KCkgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQog
ICAgICAgICBwcmludGYoIkxheW91dCB0aW1lciB1bnNjaGVkdWxlZCBhdCAlZFxuIiwgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+ZWxhcHNlZFRpbWUoKSk7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vQXRvbWljU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0F0
b21pY1N0cmluZy5jcHAJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9BdG9t
aWNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAotI2lmIEFWT0lEX1NUQVRJQ19DT05TVFJVQ1RPUlMKKyNpZmRlZiBBVk9J
RF9TVEFUSUNfQ09OU1RSVUNUT1JTCiAjZGVmaW5lIEFUT01JQ1NUUklOR19ISURFX0dMT0JBTFMg
MQogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQXRvbWljU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9BdG9taWNTdHJpbmcuaAkocmV2aXNpb24gMTU3NTQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTQsNyArMTE0LDcgQEAgaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhcgog
aW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGEuaW1wbCgpLCBiLmltcGwo
KSk7IH0KIAogLy8gRGVmaW5lIGV4dGVybmFsIGdsb2JhbCB2YXJpYWJsZXMgZm9yIHRoZSBjb21t
b25seSB1c2VkIGF0b21pYyBzdHJpbmdzLgotI2lmICFBVE9NSUNTVFJJTkdfSElERV9HTE9CQUxT
CisjaWZuZGVmIEFUT01JQ1NUUklOR19ISURFX0dMT0JBTFMKICAgICBleHRlcm4gY29uc3QgQXRv
bWljU3RyaW5nIG51bGxBdG9tOwogICAgIGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgZW1wdHlB
dG9tOwogICAgIGV4dGVybiBjb25zdCBBdG9taWNTdHJpbmcgdGV4dEF0b207CkBAIC0xMjIsNiAr
MTIyLDYgQEAgaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgU3RyaQogICAgIGV4
dGVybiBjb25zdCBBdG9taWNTdHJpbmcgc3RhckF0b207CiAjZW5kaWYKIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBdG9taWNTdHJpbmdfaApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L0N1cnNvci5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNpZm5kZWYgQ1VSU09SX0gKICNkZWZp
bmUgQ1VSU09SX0gKIAotI2lmZGVmIFdJTjMyCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VsaWYgUExBVEZPUk0o
R0RLKQogI2luY2x1ZGUgPGdkay9nZGsuaD4KQEAgLTQ0LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgSW1hZ2U7CiAKLSNpZmRlZiBXSU4zMgorI2lmIFBMQVRGT1JN
KFdJTikKICAgICB0eXBlZGVmIEhDVVJTT1IgUGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBkZWZpbmVk
KF9fQVBQTEVfXykKICAgICB0eXBlZGVmIE5TQ3Vyc29yKiBQbGF0Zm9ybUN1cnNvcjsKQEAgLTky
LDYgKzk0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNvbnN0IEN1cnNvciYgY29sdW1u
UmVzaXplQ3Vyc29yKCk7CiAgICAgY29uc3QgQ3Vyc29yJiByb3dSZXNpemVDdXJzb3IoKTsKIAot
fQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBDVVJTT1JfSApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkQXJyYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRBcnJheS5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNkZWZpbmUgQVJSQVlfSF8KIAogI2luY2x1ZGUgIkFycmF5SW1wbC5oIgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDcg
KzUyLDcgQEAgcHVibGljOgogCiAgICAgVCAmb3BlcmF0b3JbXShpbnQgaSkgeyByZXR1cm4gKihU
ICopaW1wbC5hdChpKTsgfQogICAgIGNvbnN0IFQgJm9wZXJhdG9yW10oaW50IGkpIGNvbnN0IHsg
cmV0dXJuICooVCAqKWltcGwuYXQoaSk7IH0KLSNpZiBXSU4zMgorI2lmIFBMQVRGT1JNKFdJTl9P
UykKICAgICAvLyBGSVhNRTogTG9vayBpbnRvIHRoaXMgc3RyYW5nZSBjb21waWxlIGVycm9yIG9u
IFdpbjMyLgogICAgIFQgJm9wZXJhdG9yW10odW5zaWduZWQgaSkgeyByZXR1cm4gKihUICopaW1w
bC5hdChpKTsgfQogICAgIGNvbnN0IFQgJm9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyBy
ZXR1cm4gKihUICopaW1wbC5hdChpKTsgfQpAQCAtNjYsNiArNjcsNiBAQCBwdWJsaWM6CiAKIHR5
cGVkZWYgRGVwcmVjYXRlZEFycmF5PGNoYXI+IERlcHJlY2F0ZWRCeXRlQXJyYXk7CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQVJSQVlfSF8KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmNwcAkocmV2aXNpb24gMTU3NTQpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw5ICszMSwxMSBAQAogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPGtqcy9k
dG9hLmg+CiAjaW5jbHVkZSA8a2pzL2lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgog
I2luY2x1ZGUgPHN0ZGFyZy5oPgotI2lmZGVmIFdJTjMyCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFBMQVRGT1JNKFdJTl9PUykKICNpbmNsdWRl
IDx3aW5kb3dzLmg+CiAjZW5kaWYKIApAQCAtNzIsNyArNzQsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgaW5pdGlhbGl6ZUhhbmRsZU5vZGVzCiAKIHN0YXRpYyBpbmxpbmUgRGVwcmVjYXRlZFN0cmlu
Z0RhdGEgKiphbGxvY2F0ZUhhbmRsZSgpCiB7Ci0jaWYgQ0hFQ0tfRk9SX0hBTkRMRV9MRUFLUwor
I2lmZGVmIENIRUNLX0ZPUl9IQU5ETEVfTEVBS1MKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVw
cmVjYXRlZFN0cmluZ0RhdGEgKio+KGZhc3RNYWxsb2Moc2l6ZW9mKERlcHJlY2F0ZWRTdHJpbmdE
YXRhICopKSk7CiAjZW5kaWYKIApAQCAtODE0LDcgKzgxNiw3IEBAIGJvb2wgRGVwcmVjYXRlZFN0
cmluZzo6c3RhcnRzV2l0aChjb25zdCAKICAgICB9CiB9CiAKLSNpZmRlZiBXSU4zMgorI2lmIFBM
QVRGT1JNKFdJTl9PUykKIGlubGluZSBpbnQgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqZmlyc3Qs
IGNvbnN0IGNoYXIgKnNlY29uZCwgc2l6ZV90IG1heExlbmd0aCkKIHsKICAgICByZXR1cm4gX3N0
cm5pY21wKGZpcnN0LCBzZWNvbmQsIG1heExlbmd0aCk7CkBAIC0yNDM3LDcgKzI0MzksNyBAQCBz
dGF0aWMgSGFuZGxlTm9kZSAqaW5pdGlhbGl6ZUhhbmRsZU5vZGVCCiAgICAgSGFuZGxlTm9kZSog
YmxvY2s7CiAgICAgSGFuZGxlTm9kZSogYU5vZGU7CiAKLSNpZmRlZiBXSU4zMgorI2lmIFBMQVRG
T1JNKFdJTl9PUykKICAgICBibG9jayA9IChIYW5kbGVOb2RlKilWaXJ0dWFsQWxsb2MoMCwgcGFn
ZVNpemUsIE1FTV9DT01NSVQgfCBNRU1fUkVTRVJWRSwgUEFHRV9SRUFEV1JJVEUpOwogI2Vsc2UK
ICAgICBibG9jayA9IChIYW5kbGVOb2RlKil2YWxsb2MocGFnZVNpemUpOwpAQCAtMjUwNiw3ICsy
NTA4LDcgQEAgc3RhdGljIEhhbmRsZU5vZGUgKmFsbG9jYXRlTm9kZShIYW5kbGVQYQogCiB2b2lk
IGZyZWVIYW5kbGUoRGVwcmVjYXRlZFN0cmluZ0RhdGEgKipfZnJlZSkKIHsKLSNpZiBDSEVDS19G
T1JfSEFORExFX0xFQUtTCisjaWZkZWYgQ0hFQ0tfRk9SX0hBTkRMRV9MRUFLUwogICAgIGZhc3RG
cmVlKF9mcmVlKTsKICAgICByZXR1cm47CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
RmxvYXRQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRQb2ludC5o
CShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRQb2ludC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKIHR5cGVkZWYgc3RydWN0IENHUG9pbnQgQ0dQ
b2ludDsKIAotI2lmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCisj
aWZkZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIHR5cGVkZWYg
c3RydWN0IENHUG9pbnQgTlNQb2ludDsKICNlbHNlCiB0eXBlZGVmIHN0cnVjdCBfTlNQb2ludCBO
U1BvaW50OwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludChjb25zdCBD
R1BvaW50Jik7CiAgICAgb3BlcmF0b3IgQ0dQb2ludCgpIGNvbnN0OwogCi0jaWYgIU5TR0VPTUVU
UllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQ
RVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiAgICAgRmxvYXRQb2ludChjb25zdCBOU1BvaW50
Jik7CiAgICAgb3BlcmF0b3IgTlNQb2ludCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL0Zsb2F0UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmxv
YXRSZWN0LmgJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFJlY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBDR1Jl
Y3QgQ0dSZWN0OwogCi0jaWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQ
RVMKKyNpZmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dSZWN0IE5TUmVjdDsKICNlbHNlCiB0eXBlZGVmIHN0cnVjdCBfTlNSZWN0
IE5TUmVjdDsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0KGNvbnN0
IENHUmVjdCYpOwogICAgIG9wZXJhdG9yIENHUmVjdCgpIGNvbnN0OwogCi0jaWYgIU5TR0VPTUVU
UllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQ
RVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiAgICAgRmxvYXRSZWN0KGNvbnN0IE5TUmVjdCYp
OwogICAgIG9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL0Zsb2F0U2l6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmxvYXRT
aXplLmgJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdFNpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBDR1NpemUg
Q0dTaXplOwogCi0jaWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMK
KyNpZmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogdHlwZWRl
ZiBzdHJ1Y3QgQ0dTaXplIE5TU2l6ZTsKICNlbHNlCiB0eXBlZGVmIHN0cnVjdCBfTlNTaXplIE5T
U2l6ZTsKQEAgLTExOCw2ICsxMTgsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZs
b2F0U2l6ZSYgCiAgICAgcmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQo
KSAhPSBiLmhlaWdodCgpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZgorI2VuZGlmIC8vIEZsb2F0U2l6ZV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0dyYXBoaWNz
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vR3JhcGhpY3NDb250ZXh0
LmgJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9HcmFwaGljc0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTggKzI2LDIwIEBACiAjaWZuZGVmIEdyYXBoaWNzQ29u
dGV4dF9oCiAjZGVmaW5lIEdyYXBoaWNzQ29udGV4dF9oCiAKLSNpbmNsdWRlICJGb250LmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBlbi5oIgogI2luY2x1ZGUgIlRl
eHREaXJlY3Rpb24uaCIKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx1
bmljb2RlL3VtYWNoaW5lLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CiAKKy8vIEZJWE1FOiBob3cgc2hvdWxkIENhaXJvIGZpZ3VyZSBp
bnRvIHRoZSBwbGF0Zm9ybSBtYWNyb3M/CiAjaWYgX19BUFBMRV9fCiB0eXBlZGVmIHN0cnVjdCBD
R0NvbnRleHQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7Ci0jZWxpZiBXSU4zMgorI2VsaWYgUExB
VEZPUk0oV0lOKQogdHlwZWRlZiBzdHJ1Y3QgSERDX18qIEhEQzsKIHR5cGVkZWYgc3RydWN0IF9j
YWlybyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKICNlbGlmIFBMQVRGT1JNKEdESykKQEAgLTE1
OCw3ICsxNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEtSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0KiBjcmVhdGVSZW5kZXJpbmdEZXZpY2VDb250ZXh0KCk7CiAjZW5kaWYKIAotI2lm
IFdJTjMyCisjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBHcmFwaGljc0NvbnRleHQoSERDKTsg
Ly8gRklYTUU6IFRvIGJlIHJlbW92ZWQuCiAjZW5kaWYKIApAQCAtMTc3LDYgKzE3OSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
KiBtX2RhdGE7CiAgICAgfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYK
KyNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHRfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9JbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vSW1hZ2UuaAkocmV2aXNpb24gMTU3
NTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKIAogI2lmIF9fQVBQTEVfXwotI2lmIF9f
T0JKQ19fCisjaWZkZWYgX19PQkpDX18KIEBjbGFzcyBOU0ltYWdlOwogI2Vsc2UKIGNsYXNzIE5T
SW1hZ2U7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ludFBvaW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9JbnRQb2ludC5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vSW50UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDIxIEBACiAj
ZGVmaW5lIElOVFBPSU5UX0hfCiAKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CiAKICNpZiBfX0FQUExFX18KIAogdHlwZWRlZiBzdHJ1Y3QgQ0dQb2ludCBD
R1BvaW50OwogCi0jaWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMK
KyNpZmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogdHlwZWRl
ZiBzdHJ1Y3QgQ0dQb2ludCBOU1BvaW50OwogI2Vsc2UKIHR5cGVkZWYgc3RydWN0IF9OU1BvaW50
IE5TUG9pbnQ7CiAjZW5kaWYKIAotI2VuZGlmCisjZW5kaWYgLy8gX19BUFBMRV9fCiAKLSNpZiBX
SU4zMgorI2lmIFBMQVRGT1JNKFdJTikKIHR5cGVkZWYgc3RydWN0IHRhZ1BPSU5UIFBPSU5UOwog
I2VuZGlmCiAKQEAgLTY0LDE0ICs2NSwxNCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW50UG9p
bnQoY29uc3QgQ0dQb2ludCYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQn
cyBsb3NzeQogICAgIG9wZXJhdG9yIENHUG9pbnQoKSBjb25zdDsKIAotI2lmICFOU0dFT01FVFJZ
X1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUworI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVT
X1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogICAgIGV4cGxpY2l0IEludFBvaW50KGNvbnN0IE5T
UG9pbnQmKTsgLy8gZG9uJ3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKICAg
ICBvcGVyYXRvciBOU1BvaW50KCkgY29uc3Q7CiAjZW5kaWYKIAogI2VuZGlmCiAKLSNpZiBXSU4z
MgorI2lmIFBMQVRGT1JNKFdJTikKICAgICBJbnRQb2ludChjb25zdCBQT0lOVCYpOwogICAgIG9w
ZXJhdG9yIFBPSU5UKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTExNyw2ICsxMTgsNiBAQCBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEludFBvaW50JiBhCiAgICAgcmV0dXJuIGEueCgpICE9IGIu
eCgpIHx8IGEueSgpICE9IGIueSgpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZgorI2VuZGlmIC8vIElOVFBPSU5UX0hfCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0lu
dFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0ludFJlY3QuaAkocmV2aXNp
b24gMTU3NTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0ludFJlY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsMjAgKzI3LDIxIEBACiAjZGVmaW5lIElOVFJFQ1RfSF8KIAogI2luY2x1ZGUgIkludFBv
aW50LmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKICNpZiBfX0FQUExFX18KIAogdHlw
ZWRlZiBzdHJ1Y3QgQ0dSZWN0IENHUmVjdDsKIAotI2lmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9B
U19DR0dFT01FVFJZX1RZUEVTCisjaWZkZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VP
TUVUUllfVFlQRVMKIHR5cGVkZWYgc3RydWN0IENHUmVjdCBOU1JlY3Q7CiAjZWxzZQogdHlwZWRl
ZiBzdHJ1Y3QgX05TUmVjdCBOU1JlY3Q7CiAjZW5kaWYKIAotI2VuZGlmCisjZW5kaWYgLy8gX19B
UFBMRV9fCiAKLSNpZiBXSU4zMgorI2lmIFBMQVRGT1JNKFdJTikKIHR5cGVkZWYgc3RydWN0IHRh
Z1JFQ1QgUkVDVDsKICNlbmRpZgogCkBAIC05MCwxOCArOTEsMjAgQEAgcHVibGljOgogICAgIHZv
aWQgaW50ZXJzZWN0KGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHVuaXRlKGNvbnN0IEludFJl
Y3QmKTsKIAotICAgIHZvaWQgaW5mbGF0ZVgoaW50IGR4KSB7CisgICAgdm9pZCBpbmZsYXRlWChp
bnQgZHgpCisgICAgewogICAgICAgICBtX2xvY2F0aW9uLnNldFgobV9sb2NhdGlvbi54KCkgLSBk
eCk7CiAgICAgICAgIG1fc2l6ZS5zZXRXaWR0aChtX3NpemUud2lkdGgoKSArIGR4ICsgZHgpOwog
ICAgIH0KLSAgICB2b2lkIGluZmxhdGVZKGludCBkeSkgeworICAgIHZvaWQgaW5mbGF0ZVkoaW50
IGR5KQorICAgIHsKICAgICAgICAgbV9sb2NhdGlvbi5zZXRZKG1fbG9jYXRpb24ueSgpIC0gZHkp
OwogICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KG1fc2l6ZS5oZWlnaHQoKSArIGR5ICsgZHkpOwog
ICAgIH0KICAgICB2b2lkIGluZmxhdGUoaW50IGQpIHsgaW5mbGF0ZVgoZCk7IGluZmxhdGVZKGQp
OyB9CiAgICAgdm9pZCBzY2FsZShmbG9hdCBzKTsKIAotI2lmIFdJTjMyCisjaWYgUExBVEZPUk0o
V0lOKQogICAgIEludFJlY3QoY29uc3QgUkVDVCYpOwogICAgIG9wZXJhdG9yIFJFQ1QoKSBjb25z
dDsKICNlbmRpZgpAQCAtMTEwLDcgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIG9wZXJhdG9yIENH
UmVjdCgpIGNvbnN0OwogCi0jaWYgIU5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZ
X1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVT
CiAgICAgb3BlcmF0b3IgTlNSZWN0KCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTQ5LDcgKzE1Miw3
IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50UmVjdCYgYSwKIAogSW50UmVjdCBl
bmNsb3NpbmdJbnRSZWN0KGNvbnN0IENHUmVjdCYpOwogCi0jaWYgIU5TR0VPTUVUUllfVFlQRVNf
U0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9B
U19DR0dFT01FVFJZX1RZUEVTCiAKIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBOU1Jl
Y3QmKTsKIApAQCAtMTU3LDYgKzE2MCw2IEBAIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25z
dCBOU1JlY3QmKTsKIAogI2VuZGlmCiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gSU5UUkVDVF9IXwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9JbnRTaXpl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9JbnRTaXplLmgJKHJldmlzaW9uIDE1
NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9JbnRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDE5ICsyNiwyMSBAQAogI2lmbmRlZiBJTlRTSVpFX0hfCiAjZGVmaW5lIElOVFNJWkVfSF8KIAor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCiAjaWYgX19BUFBMRV9fCiAKIHR5cGVkZWYgc3Ry
dWN0IENHU2l6ZSBDR1NpemU7CiAKLSNpZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9N
RVRSWV9UWVBFUworI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZ
UEVTCiB0eXBlZGVmIHN0cnVjdCBDR1NpemUgTlNTaXplOwogI2Vsc2UKIHR5cGVkZWYgc3RydWN0
IF9OU1NpemUgTlNTaXplOwogI2VuZGlmCiAKLSNlbmRpZgorI2VuZGlmIC8vIF9fQVBQTEVfXwog
Ci0jaWYgV0lOMzIKKyNpZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIHN0cnVjdCB0YWdTSVpFIFNJ
WkU7CiAjZW5kaWYKIApAQCAtODYsNyArODgsNyBAQCBwdWJsaWM6CiAKICNlbmRpZgogCi0jaWYg
V0lOMzIKKyNpZiBQTEFURk9STShXSU4pCiAgICAgSW50U2l6ZShjb25zdCBTSVpFJik7CiAgICAg
b3BlcmF0b3IgU0laRSgpIGNvbnN0OwogI2VuZGlmCkBAIC0xMzQsNiArMTM2LDYgQEAgaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbnRTaXplJiBhLAogICAgIHJldHVybiBhLndpZHRoKCkg
IT0gYi53aWR0aCgpIHx8IGEuaGVpZ2h0KCkgIT0gYi5oZWlnaHQoKTsKIH0KIAotfQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBJTlRTSVpFX0hfCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgJKHJldmlzaW9uIDE1NzU0KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQbGF0Zm9ybUtleWJvYXJkRXZlbnRfaAogCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAog
I2lmZGVmIF9fT0JKQ19fCiBAY2xhc3MgTlNFdmVudDsKQEAgLTM0LDcgKzM1LDcgQEAKIGNsYXNz
IE5TRXZlbnQ7CiAjZW5kaWYKIAotI2lmIFdJTjMyCisjaWYgUExBVEZPUk0oV0lOKQogdHlwZWRl
ZiBzdHJ1Y3QgSFdORF9fICpIV05EOwogdHlwZWRlZiB1bnNpZ25lZCAgICBXUEFSQU07CiB0eXBl
ZGVmIGxvbmcgICAgICAgIExQQVJBTTsKQEAgLTY1LDcgKzY2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCosIGJvb2wgZm9yY2VB
dXRvUmVwZWF0ID0gZmFsc2UpOwogI2VuZGlmCiAKLSNpZmRlZiBXSU4zMgorI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50KEhXTkQsIFdQQVJBTSwgTFBBUkFN
KTsKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgJKHJl
dmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQbGF0Zm9ybU1vdXNlRXZl
bnRfaAogCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
IAogI2lmIF9fQVBQTEVfXwogI2lmZGVmIF9fT0JKQ19fCkBAIC0zNiw3ICszNyw3IEBAIGNsYXNz
IE5TRXZlbnQ7CiAjZW5kaWYKICNlbmRpZgogCi0jaWYgV0lOMzIKKyNpZiBQTEFURk9STShXSU4p
CiB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiB0eXBlZGVmIHVuc2lnbmVkIFdQQVJBTTsK
IHR5cGVkZWYgbG9uZyBMUEFSQU07CkBAIC05Myw3ICs5NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNpZiBfX0FQUExFX18KICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50KE5TRXZlbnQqKTsK
ICNlbmRpZgotI2lmIFdJTjMyCisjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQoSFdORCwgV1BBUkFNLCBMUEFSQU0sIGludCBjbGlja0NvdW50KTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKEdESykgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyaW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmluZy5oCShyZXZp
c2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcoQ0ZTdHJpbmdS
ZWYpOwogICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5jcmVhdGVDRlN0cmluZygpIDogQ0ZTVFIoIiIpOyB9CiAjZW5kaWYKLSNp
ZiBfX09CSkNfXworI2lmZGVmIF9fT0JKQ19fCiAgICAgU3RyaW5nKE5TU3RyaW5nKik7CiAgICAg
b3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyBpZiAoIW1faW1wbCkgcmV0dXJuIEAiIjsgcmV0
dXJuICptX2ltcGw7IH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9SZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Jlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUxvYWRlcl9I
XwogI2RlZmluZSBSZXNvdXJjZUxvYWRlcl9IXwogCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJD
bGllbnQuaCIgLy8gZm9yIFBsYXRmb3JtUmVzcG9uc2UKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUxvYWRlckNsaWVudC5oIiAv
LyBmb3IgUGxhdGZvcm1SZXNwb25zZQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZmRlZiBXSU4zMgorI2lmIFBMQVRGT1JNKFdJTikKIHR5
cGVkZWYgdW5zaWduZWQgbG9uZyBEV09SRDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBEV09SRF9Q
VFI7CiB0eXBlZGVmIHZvaWQqIExQVk9JRDsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogI2lm
IF9fQVBQTEVfXwogICAgIHZvaWQgc2V0TG9hZGVyKFdlYkNvcmVSZXNvdXJjZUxvYWRlckltcCop
OwogI2VuZGlmCi0jaWYgV0lOMzIKKyNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBmaWxlTG9h
ZFRpbWVyKFRpbWVyPFJlc291cmNlTG9hZGVyPiogdGltZXIpOwogICAgIGZyaWVuZCB2b2lkIF9f
c3RkY2FsbCB0cmFuc2ZlckpvYlN0YXR1c0NhbGxiYWNrKEhJTlRFUk5FVCwgRFdPUkRfUFRSLCBE
V09SRCwgTFBWT0lELCBEV09SRCk7CiAgICAgZnJpZW5kIExSRVNVTFQgX19zdGRjYWxsIFJlc291
cmNlTG9hZGVyV25kUHJvYyhIV05ELCB1bnNpZ25lZCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Jlc291cmNlTG9hZGVySW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Jlc291cmNlTG9hZGVySW50ZXJuYWwuaAkocmV2aXNp
b24gMTU3NTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Jlc291cmNlTG9hZGVySW50ZXJuYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDEyIEBACiAjaWZuZGVmIFJlc291cmNlTG9hZGVy
SW50ZXJuYWxfSF8KICNkZWZpbmUgUmVzb3VyY2VMb2FkZXJJbnRlcm5hbF9IXwogCi0jaW5jbHVk
ZSAiS1VSTC5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZmRl
ZiBXSU4zMgorI2lmIFBMQVRGT1JNKFdJTikKIHR5cGVkZWYgdm9pZCogSEFORExFOwogI2VuZGlm
CiAKQEAgLTU5LDcgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBs
b2FkZXIobmlsKQogICAgICAgICAgICAgLCByZXNwb25zZShuaWwpCiAjZW5kaWYKLSNpZiBXSU4z
MgorI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgICAgICwgbV9maWxlSGFuZGxlKDApCiAgICAg
ICAgICAgICAsIG1fZmlsZUxvYWRUaW1lcihqb2IsICZSZXNvdXJjZUxvYWRlcjo6ZmlsZUxvYWRU
aW1lcikKICAgICAgICAgICAgICwgbV9yZXNvdXJjZUhhbmRsZSgwKQpAQCAtODksNyArOTAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIGxvYWRlcihuaWwpCiAgICAgICAg
ICAgICAsIHJlc3BvbnNlKG5pbCkKICNlbmRpZgotI2lmIFdJTjMyCisjaWYgUExBVEZPUk0oV0lO
KQogICAgICAgICAgICAgLCBtX2ZpbGVIYW5kbGUoMCkKICAgICAgICAgICAgICwgbV9maWxlTG9h
ZFRpbWVyKGpvYiwgJlJlc291cmNlTG9hZGVyOjpmaWxlTG9hZFRpbWVyKQogICAgICAgICAgICAg
LCBtX3Jlc291cmNlSGFuZGxlKDApCkBAIC0xMjUsNyArMTI2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBXZWJDb3JlUmVzb3VyY2VMb2FkZXJJbXAqIGxvYWRlcjsKICAgICAgICAg
TlNVUkxSZXNwb25zZSogcmVzcG9uc2U7CiAjZW5kaWYKLSNpZiBXSU4zMgorI2lmIFBMQVRGT1JN
KFdJTikKICAgICAgICAgSEFORExFIG1fZmlsZUhhbmRsZTsKICAgICAgICAgVGltZXI8UmVzb3Vy
Y2VMb2FkZXI+IG1fZmlsZUxvYWRUaW1lcjsKICAgICAgICAgSElOVEVSTkVUIG1fcmVzb3VyY2VI
YW5kbGU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiU2Nyb2xsQmFyTW9kZS5oIgogI2luY2x1ZGUgIldpZGdldC5oIgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
RmxvYXRSZWN0OwpAQCAtNzYsNyArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IE5TVmlldyogZ2V0RG9jdW1lbnRWaWV3KCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFdJTjMyCisj
aWYgUExBVEZPUk0oV0lOKQogICAgICAgICBTY3JvbGxWaWV3KCk7CiAgICAgICAgIH5TY3JvbGxW
aWV3KCk7CiAgICAgcHJpdmF0ZToKQEAgLTg3LDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTY3JvbGxWaWV3UHJpdmF0ZSogbV9kYXRhOwogI2VuZGlmCiAKLSNpZiAgUExB
VEZPUk0oR0RLKQorI2lmIFBMQVRGT1JNKEdESykKICAgICAgICAgdm9pZCB1cGRhdGVWaWV3KGNv
bnN0IEludFJlY3QmLCBib29sIG5vdyA9IGZhbHNlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNl
dERyYXdhYmxlKEdka0RyYXdhYmxlKiBkcmF3YWJsZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcmFtZUdlb21ldHJ5KGNvbnN0IEludFJlY3QmKTsKQEAgLTEwMiw2ICsxMDMsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIFNjcm9sbFZpZXdfSApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L1N0YXRpY0NvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vU3RhdGljQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
IC8vIHBvcnRhYmxlLCBhbmQgaXQgd291bGQgYmUgZ29vZCB0byBmaWd1cmUgb3V0IGEgMTAwJSBj
bGVhbiB3YXkgdGhhdCBzdGlsbCBhdm9pZHMgY29kZSB0aGF0CiAvLyBydW5zIGF0IGluaXQgdGlt
ZS4KIAotI2lmICFBVk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JTCisjaWZuZGVmIEFWT0lEX1NUQVRJ
Q19DT05TVFJVQ1RPUlMKICAgICAvLyBEZWZpbmUgYW4gZ2xvYmFsIGluIHRoZSBub3JtYWwgd2F5
LgogI2RlZmluZSBERUZJTkVfR0xPQkFMKHR5cGUsIG5hbWUsIC4uLikgXAogICAgIGNvbnN0IHR5
cGUgbmFtZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU3RyZWFtaW5nVGV4dERlY29kZXJJQ1Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU3RyZWFtaW5nVGV4dERlY29kZXJJ
Q1UuY3BwCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU3RyZWFtaW5nVGV4
dERlY29kZXJJQ1UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RyZWFtaW5nVGV4dERlY29kZXJJQ1UuaCIKIAotI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bm9ybS5oPgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIHVzaW5nIHN0ZDo6bWluOwogCkBAIC0yNzMsNyAr
MjczLDcgQEAgRGVwcmVjYXRlZFN0cmluZyBTdHJlYW1pbmdUZXh0RGVjb2RlcklDVQogICAgIH0K
IAogICAgIC8vI2RlZmluZSBQQVJUSUFMX0NIQVJBQ1RFUl9IQU5ETElOR19URVNUX0NIVU5LX1NJ
WkUgMTAwMAotI2lmIFBBUlRJQUxfQ0hBUkFDVEVSX0hBTkRMSU5HX1RFU1RfQ0hVTktfU0laRQor
I2lmZGVmIFBBUlRJQUxfQ0hBUkFDVEVSX0hBTkRMSU5HX1RFU1RfQ0hVTktfU0laRQogICAgIERl
cHJlY2F0ZWRTdHJpbmcgcmVzdWx0OwogICAgIGludCBjaHVua1NpemU7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgIT0gbGVuOyBpICs9IGNodW5rU2l6ZSkgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TdHJpbmdJbXBs
LmgJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TdHJpbmdJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
b3JlRm91bmRhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBfX09CSkNfXworI2lmZGVmIF9fT0JKQ19f
CiBAY2xhc3MgTlNTdHJpbmc7CiAjZW5kaWYKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmdJbXBsKENGU3RyaW5nUmVmKTsKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0
cmluZygpIGNvbnN0OwogI2VuZGlmCi0jaWYgX19PQkpDX18KKyNpZmRlZiBfX09CSkNfXwogICAg
IFN0cmluZ0ltcGwoTlNTdHJpbmcqKTsKICAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdDsK
ICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYg
V0VCQ09SRV9QTEFURk9STV9XSURHRVRfSF8KICNkZWZpbmUgV0VCQ09SRV9QTEFURk9STV9XSURH
RVRfSF8KIAorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCiAjaWYgX19BUFBMRV9fCiAjaWZk
ZWYgX19PQkpDX18KIEBjbGFzcyBOU1ZpZXc7CkBAIC0zNCw3ICszNiw3IEBAIGNsYXNzIE5TVmll
dzsKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBXSU4zMgorI2lmIFBMQVRGT1JNKFdJTikKIHR5cGVk
ZWYgc3RydWN0IEhXTkRfXyAqSFdORDsKIHR5cGVkZWYgc3RydWN0IEhJTlNUQU5DRV9fICpISU5T
VEFOQ0U7CiAjZW5kaWYKQEAgLTEyNSw3ICsxMjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzRnJhbWVWaWV3KCkgY29uc3Q7CiAKLSNpZiBXSU4zMgor
I2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgV2lkZ2V0KEhXTkQpOwogICAgICAgICBIV05EIHdp
bmRvd0hhbmRsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFdpbmRvd0hhbmRsZShIV05EKTsK
QEAgLTE2MSw2ICsxNjMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdpZGdldFBy
aXZhdGUqIGRhdGE7CiAgICAgfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYKKyNlbmRpZiAvLyBXRUJDT1JFX1BMQVRGT1JNX1dJREdFVF9IXwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvQmxvY2tFeGNlcHRpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL0Jsb2NrRXhjZXB0aW9ucy5tbQkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMu
aCIKKwogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdm9pZCBSZXBvcnRCbG9ja2VkT2Jq
Q0V4Y2VwdGlvbihOU0V4Y2VwdGlvbiAqbG9jYWxFeGNlcHRpb24pCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9Db2xvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9Db2xvck1hYy5tbQkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9D
b2xvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBOU0NvbG9yKiBuc0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkUkdCQVZh
bHVlc1tpXSA9PSBjKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkQ29sb3JzW2ld
OwogCi0jaWYgQ09MT1JNQVRDSF9FVkVSWVRISU5HCisjaWZkZWYgQ09MT1JNQVRDSF9FVkVSWVRI
SU5HCiAgICAgICAgICAgICBOU0NvbG9yKiByZXN1bHQgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxp
YnJhdGVkUmVkOmNvbG9yLnJlZCgpIC8gMjU1LjAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZW46Y29sb3IuZ3JlZW4oKSAvIDI1NS4w
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBibHVlOmNvbG9yLmJsdWUoKSAvIDI1NS4wCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9G
bG9hdFBvaW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0Zsb2F0
UG9pbnRNYWMubW0JKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmxv
YXRQb2ludE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBGbG9hdFBvaW50
OjpvcGVyYXRvciBDR1BvaW50KCkgY29uc3QKICAgICByZXR1cm4gQ0dQb2ludE1ha2UobV94LCBt
X3kpOwogfQogCi0jaWYgIU5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVT
CisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiAKIEZs
b2F0UG9pbnQ6OkZsb2F0UG9pbnQoY29uc3QgTlNQb2ludCYgcCkgOiBtX3gocC54KSwgbV95KHAu
eSkKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0Zsb2F0UmVjdE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9GbG9hdFJlY3RNYWMubW0JKHJldmlzaW9uIDE1
NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmxvYXRSZWN0TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIEZsb2F0UmVjdDo6b3BlcmF0b3IgQ0dSZWN0KCkgY29uc3QK
ICAgICByZXR1cm4gQ0dSZWN0TWFrZSh4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwogfQog
Ci0jaWYgIU5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCisjaWZuZGVm
IE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiAKIEZsb2F0UmVjdDo6
RmxvYXRSZWN0KGNvbnN0IE5TUmVjdCYgcikgOiBtX2xvY2F0aW9uKHIub3JpZ2luKSwgbV9zaXpl
KHIuc2l6ZSkKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0Zsb2F0U2l6ZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9GbG9hdFNpemVNYWMubW0JKHJldmlz
aW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmxvYXRTaXplTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIEZsb2F0U2l6ZTo6b3BlcmF0b3IgQ0dTaXplKCkg
Y29uc3QKICAgICByZXR1cm4gQ0dTaXplTWFrZShtX3dpZHRoLCBtX2hlaWdodCk7CiB9CiAKLSNp
ZiAhTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKKyNpZm5kZWYgTlNH
RU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIAogRmxvYXRTaXplOjpGbG9h
dFNpemUoY29uc3QgTlNTaXplJiBzKSA6IG1fd2lkdGgocy53aWR0aCksIG1faGVpZ2h0KHMuaGVp
Z2h0KQogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRm9udE1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250TWFjLm1tCShyZXZpc2lvbiAxNTc1NCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ZvbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcg
KzQ3LDcgQEAKICNkZWZpbmUgTEVGVF9UT19SSUdIVF9PVkVSUklERSAweDIwMkQKICNkZWZpbmUg
UklHSFRfVE9fTEVGVF9PVkVSUklERSAweDIwMkUKIAotI2lmIGRlZmluZWQoX19MUDY0X18pCisj
aWZkZWYgX19MUDY0X18KICNkZWZpbmUgVVJlZkNvbiB2b2lkKgogI2Vsc2UKICNkZWZpbmUgVVJl
ZkNvbiBVSW50MzIKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0dyYXBoaWNzQ29udGV4dE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9HcmFwaGljc0NvbnRleHRN
YWMubW0JKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvR3JhcGhpY3ND
b250ZXh0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29ucwogICAgIEFTU0VSVCh2aWV3KTsKIAogICAg
IGNvbnN0IE5TUmVjdCogZHJhd1JlY3RzOwotI2lmIGRlZmluZWQoX19MUDY0X18pCisjaWZkZWYg
X19MUDY0X18KICAgICBsb25nIGNvdW50OwogI2Vsc2UKICAgICBpbnQgY291bnQ7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9JbnRQb2ludE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9JbnRQb2ludE1hYy5tbQkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9JbnRQb2ludE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBJbnRQb2ludDo6b3BlcmF0b3IgQ0dQb2ludCgpIGNvbnN0CiAgICAgcmV0dXJuIENHUG9p
bnRNYWtlKG1feCwgbV95KTsKIH0KIAotI2lmICFOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dH
RU9NRVRSWV9UWVBFUworI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRS
WV9UWVBFUwogCiBJbnRQb2ludDo6SW50UG9pbnQoY29uc3QgTlNQb2ludCYgcCkgOiBtX3goc3Rh
dGljX2Nhc3Q8aW50PihwLngpKSwgbV95KHN0YXRpY19jYXN0PGludD4ocC55KSkKIHsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ludFJlY3RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvSW50UmVjdE1hYy5tbQkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9JbnRSZWN0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBAIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBDR1JlY3QmIHIKICAgICByZXR1cm4g
SW50UmVjdChsLCB0LCByIC0gbCwgYiAtIHQpOwogfQogCi0jaWYgIU5TR0VPTUVUUllfVFlQRVNf
U0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9B
U19DR0dFT01FVFJZX1RZUEVTCiAKIEludFJlY3Q6Om9wZXJhdG9yIE5TUmVjdCgpIGNvbnN0CiB7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9JbnRTaXplTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ludFNpemVNYWMubW0JKHJldmlzaW9uIDE1NzU0KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvSW50U2l6ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNyBAQCBJbnRTaXplOjpvcGVyYXRvciBDR1NpemUoKSBjb25zdAogICAgIHJldHVybiBD
R1NpemVNYWtlKG1fd2lkdGgsIG1faGVpZ2h0KTsKIH0KIAotI2lmICFOU0dFT01FVFJZX1RZUEVT
X1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUworI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVf
QVNfQ0dHRU9NRVRSWV9UWVBFUwogCiBJbnRTaXplOjpJbnRTaXplKGNvbnN0IE5TU2l6ZSYgcykg
OiBtX3dpZHRoKHN0YXRpY19jYXN0PGludD4ocy53aWR0aCkpLCBtX2hlaWdodChzdGF0aWNfY2Fz
dDxpbnQ+KHMuaGVpZ2h0KSkKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBAIHR5cGVkZWYgc2lnbmVkIGNoYXIgQk9PTDsKIHR5cGVkZWYgc3RydWN0IENHUmVjdCBD
R1JlY3Q7CiAjZW5kaWYKIAotI2lmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZ
X1RZUEVTCisjaWZkZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMK
IHR5cGVkZWYgc3RydWN0IENHUmVjdCBOU1JlY3Q7CiAjZWxzZQogdHlwZWRlZiBzdHJ1Y3QgX05T
UmVjdCBOU1JlY3Q7CkBAIC00Miw3ICs0Miw3IEBAIHR5cGVkZWYgc3RydWN0IF9OU1JlY3QgTlNS
ZWN0OwogdHlwZWRlZiBzdHJ1Y3QgQ0dQb2ludCBDR1BvaW50OwogI2VuZGlmCiAKLSNpZiBOU0dF
T01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUworI2lmZGVmIE5TR0VPTUVUUllf
VFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiB0eXBlZGVmIHN0cnVjdCBDR1BvaW50IE5T
UG9pbnQ7CiAjZWxzZQogdHlwZWRlZiBzdHJ1Y3QgX05TUG9pbnQgTlNQb2ludDsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMTU3NTQpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNyArMjY2LDcgQEAgcHVibGlj
OgogICAgIGludCBsZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIGlu
dCB5KTsKICAgICBpbnQgcmlnaHRTZWxlY3Rpb25PZmZzZXQoUmVuZGVyQmxvY2sqIHJvb3RCbG9j
aywgaW50IHkpOwogCi0jaWYgIU5ERUJVRworI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZv
aWQgZHVtcChUZXh0U3RyZWFtICpzdHJlYW0sIERlcHJlY2F0ZWRTdHJpbmcgaW5kID0gIiIpIGNv
bnN0OwogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCShyZXZp
c2lvbiAxNTc1NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIFJlbmRlclRhYmxlKiB0
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclRhYmxlKj4ocGFyZW50KCkt
PnBhcmVudCgpLT5wYXJlbnQoKSk7IH0KICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24qPihwYXJlbnQo
KS0+cGFyZW50KCkpOyB9CiAKLSNpZiAhTkRFQlVHCisjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1
YWwgdm9pZCBkdW1wKFRleHRTdHJlYW0gKnN0cmVhbSwgRGVwcmVjYXRlZFN0cmluZyBpbmQgPSAi
IikgY29uc3Q7CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAJKHJldmlzaW9uIDE1NzU0KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw3ICs1
OTUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRSdW4oQmlkaVN0YXRlICZiaWRpKQogewogICAgIGlm
IChlbXB0eVJ1biB8fCAhYmlkaS5lb3Iub2JqKQogICAgICAgICByZXR1cm47Ci0jaWYgQklESV9E
RUJVRyA+IDEKKyNpZiBkZWZpbmVkKEJJRElfREVCVUcpICYmIEJJRElfREVCVUcgPiAxCiAgICAg
a2REZWJ1Zyg2MDQxKSA8PCAiYXBwZW5kUnVuOiBkaXI9Ijw8KGludClkaXI8PGVuZGw7CiAjZW5k
aWYKIApAQCAtMTc1OSw3ICsxNzU5LDcgQEAgSW50UmVjdCBSZW5kZXJCbG9jazo6bGF5b3V0SW5s
aW5lQ2hpbGRyZQogCiAgICAgcmV0dXJuIHJlcGFpbnRSZWN0OwogCi0jaWYgQklESV9ERUJVRyA+
IDEKKyNpZiBkZWZpbmVkKEJJRElfREVCVUcpICYmIEJJRElfREVCVUcgPiAxCiAgICAga2REZWJ1
Zyg2MDQxKSA8PCAiIC0tLS0tLS0gYmlkaSBlbmQgIiA8PCB0aGlzIDw8ICIgLS0tLS0tLSIgPDwg
ZW5kbDsKICNlbmRpZgogfQpJbmRleDogV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDE1NzU0
KQorKysgV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDIzICszNCwyNSBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxU
b2tlbml6ZXIuaCIKICNpbmNsdWRlICJMb2FkZXJGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJUZXh0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAjaW5j
bHVkZSAibG9hZGVyLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPGxpYnhzbHQvaW1wb3J0cy5oPgogI2luY2x1ZGUgPGxpYnhzbHQvdmFy
aWFibGVzLmg+CiAjaW5jbHVkZSA8bGlieHNsdC94c2x0dXRpbHMuaD4KKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBwYXJzZUVycm9y
RnVuYyh2b2lkICpjdHh0LCBjb25zdCBjaGFyICptc2csIC4uLikKIHsKICAgICAvLyBGSVhNRTog
SXQgd291bGQgYmUgbmljZSB0byBkaXNwbGF5IGVycm9yIG1lc3NhZ2VzIHNvbWV3aGVyZS4KLSNp
ZiAhV0lOMzIKKyNpZiAhUExBVEZPUk0oV0lOX09TKQogICAgIC8vIEZJWE1FOiBObyB2YXNwcmlu
dGYgc3VwcG9ydC4KLSNpZiAhRVJST1JfRElTQUJMRUQKKyNpZm5kZWYgRVJST1JfRElTQUJMRUQK
ICAgICBjaGFyICplcnJvck1lc3NhZ2UgPSAwOwogICAgIHZhX2xpc3QgYXJnczsKICAgICB2YV9z
dGFydChhcmdzLCBtc2cpOwpAQCAtMzc2LDYgKzM3OCw2IEBAIHZvaWQgWFNMVFByb2Nlc3Nvcjo6
cmVtb3ZlUGFyYW1ldGVyKFN0cmkKICAgICBtX3BhcmFtZXRlcnMucmVtb3ZlKGxvY2FsTmFtZSk7
CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gS0hU
TUxfWFNMVApJbmRleDogV2ViQ29yZS94cGF0aC9pbXBsL1hQYXRoR3JhbW1hci55Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUveHBhdGgvaW1wbC9YUGF0aEdyYW1tYXIueQkocmV2aXNpb24gMTU3NTQp
CisrKyBXZWJDb3JlL3hwYXRoL2ltcGwvWFBhdGhHcmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJYUGF0aFZhcmlhYmxlUmVmZXJlbmNlLmgiCiAKICNk
ZWZpbmUgWVlERUJVRyAwCisjZGVmaW5lIFlZTUFYREVQVEggMTAwMDAKICNkZWZpbmUgWVlQQVJT
RV9QQVJBTSBwYXJzZXJQYXJhbWV0ZXIKICNkZWZpbmUgUEFSU0VSIHN0YXRpY19jYXN0PFBhcnNl
cio+KHBhcnNlclBhcmFtZXRlcikKIApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTc1NSkKKysrIFdlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAwNi0wOC0wMiAgU2FtIFdlaW5p
ZyAgPHNhbS53ZWluaWdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gcGF0Y2ggZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2lu
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNzYKKyAgICAgICAgICBNYWtlIFdlYkNvcmUgY29tcGls
ZSB3aXRoIC1XdW5kZWYKKworICAgICAgICAgICogQWRkcyAtV3VuZGVmIGZsYWcgdG8gWGNvZGUg
cHJvamVjdAorICAgICAgICAgICogQ29udmVydHMgI2lmcyB0byAjaWZkZWYgYW5kICNpZm5kZWZz
IHdoZXJlIG5lZWRlZC4KKworICAgICAgICAqIENhcmJvbi9DYXJib25VdGlscy5tOgorICAgICAg
ICAqIENhcmJvbi9DYXJib25XaW5kb3dBZGFwdGVyLm06CisgICAgICAgICogQ2FyYm9uL0hJVmll
d0FkYXB0ZXIubToKKyAgICAgICAgKCtbTlNWaWV3IGJpbmRISVZpZXdUb05TVmlldzpuc1ZpZXc6
XSk6CisgICAgICAgICogQ2FyYm9uL0hJV2ViVmlldy5tOgorICAgICAgICAoSElXZWJWaWV3RXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKiBNaXNjL1dlYkZpbGVEYXRhYmFzZS5tOgorICAgICAgICAo
VW5pcXVlRmlsZVBhdGhGb3JLZXkpOgorICAgICAgICAqIE1pc2MvV2ViTlNXaW5kb3dFeHRyYXMu
bToKKyAgICAgICAgKHN3aXp6bGVJbnN0YW5jZU1ldGhvZCk6CisgICAgICAgICogTWlzYy9XZWJU
eXBlc0ludGVybmFsLmg6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZURlcHJlY2F0ZWRG
dW5jdGlvbnMuYzoKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlRGVwcmVjYXRlZEZ1bmN0
aW9ucy5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLmg6Cisg
ICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubToKKyAgICAgICAgKC1b
V2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlIHVubG9hZFdpdGhvdXRTaHV0ZG93bl0pOgorICAgICAg
ICAoLVtXZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UgbG9hZF0pOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDA2LTA4LTAyICBBZGFtIFJvYmVuICA8YXJv
YmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeS4KSW5kZXg6IFdlYktp
dC9DYXJib24vQ2FyYm9uVXRpbHMubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2FyYm9uL0NhcmJv
blV0aWxzLm0JKHJldmlzaW9uIDE1NzU0KQorKysgV2ViS2l0L0NhcmJvbi9DYXJib25VdGlscy5t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8KIAogLy8gPHJkYXI6Ly9wcm9i
bGVtLzQ1NjE3NzI+IEhJV2ViVmlldyBuZWVkcyB0byBiZSByZXdvcmtlZCB0byBub3QgdXNlIFF1
aWNrRHJhdywgbmVlZGVkIGZvciA2NC1iaXQKLSNpZiAhX19MUDY0X18KKyNpZm5kZWYgX19MUDY0
X18KIAogI2luY2x1ZGUgIkNhcmJvblV0aWxzLmgiCiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KSW5kZXg6IFdlYktpdC9DYXJib24vQ2FyYm9uV2luZG93QWRhcHRlci5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9DYXJib24vQ2FyYm9uV2luZG93QWRhcHRlci5tCShyZXZpc2lvbiAx
NTc1NCkKKysrIFdlYktpdC9DYXJib24vQ2FyYm9uV2luZG93QWRhcHRlci5tCSh3b3JraW5nIGNv
cHkpCkBAIC00MTAsNyArNDEwLDcgQEAgc3RhdGljIE9TU3RhdHVzIE5TQ2FyYm9uV2luZG93SGFu
ZGxlRXZlbgogfQogCiAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ1NjE3NzI+IEhJV2ViVmll
dyBhbmQgSElWaWV3QWRhcHRlciBuZWVkIHRvIGJlIHJld29ya2VkIGZvciA2NC1iaXQKLSNpZiAh
X19MUDY0X18KKyNpZm5kZWYgX19MUDY0X18KIAogLSAoQk9PTCltYWtlRmlyc3RSZXNwb25kZXI6
KE5TUmVzcG9uZGVyICopYVJlc3BvbmRlcgogewpAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBP
U1N0YXR1cyBOU0NhcmJvbldpbmRvd0hhbmRsZUV2ZW4KIH0KIAogLy8gRklYTUU6IDxyZGFyOi8v
cHJvYmxlbS80NTYxNzcyPiBISVdlYlZpZXcgYW5kIEhJVmlld0FkYXB0ZXIgbmVlZCB0byBiZSBy
ZXdvcmtlZCBmb3IgNjQtYml0Ci0jaWYgIV9fTFA2NF9fCisjaWZuZGVmIF9fTFA2NF9fCiAKIC0g
KHZvaWQpc2VsZWN0S2V5Vmlld0ZvbGxvd2luZ1ZpZXc6KE5TVmlldyAqKWFWaWV3IHsKIAlISVZp
ZXdSZWYJdmlldyA9IE5VTEw7CkluZGV4OiBXZWJLaXQvQ2FyYm9uL0hJVmlld0FkYXB0ZXIubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvQ2FyYm9uL0hJVmlld0FkYXB0ZXIubQkocmV2aXNpb24gMTU3
NTQpCisrKyBXZWJLaXQvQ2FyYm9uL0hJVmlld0FkYXB0ZXIubQkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNyBAQAogICovCiAKIC8vIDxyZGFyOi8vcHJvYmxlbS80NTYxNzcyPiBISVdlYlZp
ZXcgbmVlZHMgdG8gYmUgcmV3b3JrZWQgdG8gbm90IHVzZSBRdWlja0RyYXcsIG5lZWRlZCBmb3Ig
NjQtYml0Ci0jaWYgIV9fTFA2NF9fCisjaWZuZGVmIF9fTFA2NF9fCiAKICNpbXBvcnQgIkhJVmll
d0FkYXB0ZXIuaCIKIApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgTlNWaWV3ICpfd2Via2l0X05T
Vmlld19uZXh0VmFsaWRLCiAgICAgICAgIE1ldGhvZCBzZXROZWVkc0Rpc3BsYXlNZXRob2QgPSBj
bGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldENsYXNzKCJOU1ZpZXciKSwgQHNlbGVjdG9y
KHNldE5lZWRzRGlzcGxheTopKTsKICAgICAgICAgQVNTRVJUKHNldE5lZWRzRGlzcGxheU1ldGhv
ZCk7CiAgICAgICAgIEFTU0VSVCghb2xkTlNWaWV3U2V0TmVlZHNEaXNwbGF5SU1QKTsKLSNpZiBP
QkpDX0FQSV9WRVJTSU9OID4gMAorI2lmIGRlZmluZWQoT0JKQ19BUElfVkVSU0lPTikgJiYgT0JK
Q19BUElfVkVSU0lPTiA+IDAKICAgICAgICAgb2xkTlNWaWV3U2V0TmVlZHNEaXNwbGF5SU1QID0g
bWV0aG9kX3NldEltcGxlbWVudGF0aW9uKHNldE5lZWRzRGlzcGxheU1ldGhvZCwgKElNUClfd2Vi
a2l0X05TVmlld19zZXROZWVkc0Rpc3BsYXkpOwogI2Vsc2UKICAgICAgICAgb2xkTlNWaWV3U2V0
TmVlZHNEaXNwbGF5SU1QID0gc2V0TmVlZHNEaXNwbGF5TWV0aG9kLT5tZXRob2RfaW1wOwpAQCAt
NzYsNyArNzYsNyBAQCBzdGF0aWMgTlNWaWV3ICpfd2Via2l0X05TVmlld19uZXh0VmFsaWRLCiAg
ICAgICAgIE1ldGhvZCBzZXROZWVkc0Rpc3BsYXlJblJlY3RNZXRob2QgPSBjbGFzc19nZXRJbnN0
YW5jZU1ldGhvZChvYmpjX2dldENsYXNzKCJOU1ZpZXciKSwgQHNlbGVjdG9yKHNldE5lZWRzRGlz
cGxheUluUmVjdDopKTsKICAgICAgICAgQVNTRVJUKHNldE5lZWRzRGlzcGxheUluUmVjdE1ldGhv
ZCk7CiAgICAgICAgIEFTU0VSVCghb2xkTlNWaWV3U2V0TmVlZHNEaXNwbGF5SW5SZWN0SU1QKTsK
LSNpZiBPQkpDX0FQSV9WRVJTSU9OID4gMAorI2lmIGRlZmluZWQoT0JKQ19BUElfVkVSU0lPTikg
JiYgT0JKQ19BUElfVkVSU0lPTiA+IDAKICAgICAgICAgb2xkTlNWaWV3U2V0TmVlZHNEaXNwbGF5
SW5SZWN0SU1QID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKHNldE5lZWRzRGlzcGxheUluUmVj
dE1ldGhvZCwgKElNUClfd2Via2l0X05TVmlld19zZXROZWVkc0Rpc3BsYXlJblJlY3QpOwogI2Vs
c2UKICAgICAgICAgb2xkTlNWaWV3U2V0TmVlZHNEaXNwbGF5SW5SZWN0SU1QID0gc2V0TmVlZHNE
aXNwbGF5SW5SZWN0TWV0aG9kLT5tZXRob2RfaW1wOwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMg
TlNWaWV3ICpfd2Via2l0X05TVmlld19uZXh0VmFsaWRLCiAgICAgICAgIE1ldGhvZCBuZXh0VmFs
aWRLZXlWaWV3TWV0aG9kID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2Qob2JqY19nZXRDbGFzcygi
TlNWaWV3IiksIEBzZWxlY3RvcihuZXh0VmFsaWRLZXlWaWV3KSk7CiAgICAgICAgIEFTU0VSVChu
ZXh0VmFsaWRLZXlWaWV3TWV0aG9kKTsKICAgICAgICAgQVNTRVJUKCFvbGROU1ZpZXdOZXh0VmFs
aWRLZXlWaWV3SU1QKTsKLSNpZiBPQkpDX0FQSV9WRVJTSU9OID4gMAorI2lmIGRlZmluZWQoT0JK
Q19BUElfVkVSU0lPTikgJiYgT0JKQ19BUElfVkVSU0lPTiA+IDAKICAgICAgICAgb2xkTlNWaWV3
TmV4dFZhbGlkS2V5Vmlld0lNUCA9IG1ldGhvZF9zZXRJbXBsZW1lbnRhdGlvbihuZXh0VmFsaWRL
ZXlWaWV3TWV0aG9kLCAoSU1QKV93ZWJraXRfTlNWaWV3X25leHRWYWxpZEtleVZpZXcpOwogI2Vs
c2UKICAgICAgICAgb2xkTlNWaWV3TmV4dFZhbGlkS2V5Vmlld0lNUCA9IG5leHRWYWxpZEtleVZp
ZXdNZXRob2QtPm1ldGhvZF9pbXA7CkluZGV4OiBXZWJLaXQvQ2FyYm9uL0hJV2ViVmlldy5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9DYXJib24vSElXZWJWaWV3Lm0JKHJldmlzaW9uIDE1NzU0KQor
KysgV2ViS2l0L0NhcmJvbi9ISVdlYlZpZXcubQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogICovCiAKIC8vIDxyZGFyOi8vcHJvYmxlbS80NTYxNzcyPiBISVdlYlZpZXcgbmVlZHMg
dG8gYmUgcmV3b3JrZWQgdG8gbm90IHVzZSBRdWlja0RyYXcsIG5lZWRlZCBmb3IgNjQtYml0Ci0j
aWYgIV9fTFA2NF9fCisjaWZuZGVmIF9fTFA2NF9fCiAKICNpbmNsdWRlICJISVdlYlZpZXcuaCIK
IApAQCAtMTQwMCw3ICsxNDAwLDcgQEAgSElXZWJWaWV3RXZlbnRIYW5kbGVyKAogCQkJCQlHZXRF
dmVudFBhcmFtZXRlciggaW5FdmVudCwga0V2ZW50UGFyYW1Db250cm9sRGF0YUJ1ZmZlciwgdHlw
ZVB0ciwgTlVMTCwKIAkJCQkJCQlzaXplb2YoIFB0ciApLCBOVUxMLCAmcHRyICk7CiAKLSNpZiBf
X0xQNjRfXworI2lmZGVmIF9fTFA2NF9fCiAJCQkJCUdldEV2ZW50UGFyYW1ldGVyKGluRXZlbnQs
IGtFdmVudFBhcmFtQ29udHJvbERhdGFCdWZmZXJTaXplLCB0eXBlU0ludDY0LCBOVUxMLCBzaXpl
b2YoU2l6ZSksIE5VTEwsICZzaXplKTsKICNlbHNlCiAJCQkJCUdldEV2ZW50UGFyYW1ldGVyKGlu
RXZlbnQsIGtFdmVudFBhcmFtQ29udHJvbERhdGFCdWZmZXJTaXplLCB0eXBlU0ludDMyLCBOVUxM
LCBzaXplb2YoU2l6ZSksIE5VTEwsICZzaXplKTsKQEAgLTE0MjEsNyArMTQyMSw3IEBAIEhJV2Vi
Vmlld0V2ZW50SGFuZGxlcigKIAkJCQkJCX0KIAogCQkJCQkJb3V0U2l6ZSA9IHNpemVvZiggQ29u
dHJvbEtpbmQgKTsKLSNpZiBfX0xQNjRfXworI2lmZGVmIF9fTFA2NF9fCiAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXRFdmVudFBhcmFtZXRlcihpbkV2ZW50LCBrRXZlbnRQYXJhbUNvbnRyb2xE
YXRhQnVmZmVyU2l6ZSwgdHlwZVNJbnQ2NCwgc2l6ZW9mKFNpemUpLCAmb3V0U2l6ZSk7CiAjZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgU2V0RXZlbnRQYXJhbWV0ZXIoaW5FdmVudCwga0V2
ZW50UGFyYW1Db250cm9sRGF0YUJ1ZmZlclNpemUsIHR5cGVTSW50MzIsIHNpemVvZihTaXplKSwg
Jm91dFNpemUpOwpJbmRleDogV2ViS2l0L01pc2MvV2ViRmlsZURhdGFiYXNlLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L01pc2MvV2ViRmlsZURhdGFiYXNlLm0JKHJldmlzaW9uIDE1NzU0KQorKysg
V2ViS2l0L01pc2MvV2ViRmlsZURhdGFiYXNlLm0JKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsy
MTAsNyBAQCBzdGF0aWMgdm9pZCBVbmlxdWVGaWxlUGF0aEZvcktleShpZCBrZXksCiAgICAgICAg
IGhhc2gyID0gKDM3ICogaGFzaDIpIF4gc1tjbnRdOwogICAgIH0KIAotI2lmIF9fTFA2NF9fCisj
aWZkZWYgX19MUDY0X18KICAgICBzbnByaW50ZihidWZmZXIsIFVuaXF1ZUZpbGVQYXRoU2l6ZSwg
IiUuMnUvJS4ydS8lLjEwdS0lLjEwdS5jYWNoZSIsICgoaGFzaDEgJiAweGZmKSA+PiA0KSwgKCho
YXNoMiAmIDB4ZmYpID4+IDQpLCBoYXNoMSwgaGFzaDIpOwogI2Vsc2UKICAgICBzbnByaW50Zihi
dWZmZXIsIFVuaXF1ZUZpbGVQYXRoU2l6ZSwgIiUuMmx1LyUuMmx1LyUuMTBsdS0lLjEwbHUuY2Fj
aGUiLCAoKGhhc2gxICYgMHhmZikgPj4gNCksICgoaGFzaDIgJiAweGZmKSA+PiA0KSwgaGFzaDEs
IGhhc2gyKTsKSW5kZXg6IFdlYktpdC9NaXNjL1dlYk5TV2luZG93RXh0cmFzLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L01pc2MvV2ViTlNXaW5kb3dFeHRyYXMubQkocmV2aXNpb24gMTU3NTQpCisr
KyBXZWJLaXQvTWlzYy9XZWJOU1dpbmRvd0V4dHJhcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEs
NyArMTYxLDcgQEAgc3RhdGljIElNUCBzd2l6emxlSW5zdGFuY2VNZXRob2QoQ2xhc3MgYwogICAg
IE1ldGhvZCBtZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChjbGFzcywgc2VsZWN0b3Ip
OwogICAgIEFTU0VSVChtZXRob2QpOwogICAgIElNUCBvbGRJTVA7Ci0jaWYgT0JKQ19BUElfVkVS
U0lPTiA+IDAKKyNpZiBkZWZpbmVkKE9CSkNfQVBJX1ZFUlNJT04pICYmIE9CSkNfQVBJX1ZFUlNJ
T04gPiAwCiAgICAgb2xkSU1QID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZCwgbmV3
SW1wbGVtZW50YXRpb24pOwogI2Vsc2UKICAgICBvbGRJTVAgPSBtZXRob2QtPm1ldGhvZF9pbXA7
CkluZGV4OiBXZWJLaXQvTWlzYy9XZWJUeXBlc0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L01pc2MvV2ViVHlwZXNJbnRlcm5hbC5oCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYktpdC9N
aXNjL1dlYlR5cGVzSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCB0
eXBlZGVmIE5TVUludGVnZXIgV2ViTlNVSW50ZWdlcjsKICNlbmRpZgogCiAjaWZuZGVmIENHRkxP
QVRfREVGSU5FRAotI2lmIF9fTFA2NF9fCisjaWZkZWYgX19MUDY0X18KIHR5cGVkZWYgZG91Ymxl
IENHRmxvYXQ7CiAjZWxzZQogdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwpJbmRleDogV2ViS2l0L1Bs
dWdpbnMvV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L1BsdWdpbnMvV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmMJKHJldmlzaW9uIDE1
NzU0KQorKysgV2ViS2l0L1BsdWdpbnMvV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTksNyArOSw3IEBACiAKICNpbmNsdWRlICJXZWJOZXRzY2FwZURl
cHJlY2F0ZWRGdW5jdGlvbnMuaCIKIAotI2lmICFfX0xQNjRfXworI2lmbmRlZiBfX0xQNjRfXwog
CiBPU0VyciBXZWJHZXREaXNrRnJhZ21lbnQoY29uc3QgRlNTcGVjICpmaWxlU3BlYywgVUludDMy
IG9mZnNldCwgVUludDMyIGxlbmd0aCwgQ29uc3RTdHI2M1BhcmFtIGZyYWdOYW1lLCBDRnJhZ0xv
YWRPcHRpb25zIG9wdGlvbnMsIENGcmFnQ29ubmVjdGlvbklEICpjb25uSUQsIFB0ciAqbWFpbkFk
ZHIsIFN0cjI1NSBlcnJNZXNzYWdlKQogewpJbmRleDogV2ViS2l0L1BsdWdpbnMvV2ViTmV0c2Nh
cGVEZXByZWNhdGVkRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1BsdWdpbnMvV2Vi
TmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmgJKHJldmlzaW9uIDE1NzU0KQorKysgV2ViS2l0
L1BsdWdpbnMvV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcsNyArNyw3IEBACiAgKgogICovCiAKLSNpZiAhX19MUDY0X18KKyNpZm5kZWYgX19MUDY0
X18KIAogI2ltcG9ydCA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPgogCkluZGV4OiBXZWJL
aXQvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UuaAkocmV2aXNpb24gMTU3NTQpCisr
KyBXZWJLaXQvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIHVpbnQxNiBwbHVnaW5TaXpl
OwogICAgIHVpbnQxNiBwbHVnaW5WZXJzaW9uOwogICAgICAgICAKLSNpZiAhX19MUDY0X18KKyNp
Zm5kZWYgX19MUDY0X18KICAgICAvLyBDRk0gaXMgbm90IHN1cHBvcnRlZCBpbiA2NC1iaXQKICAg
ICBDRnJhZ0Nvbm5lY3Rpb25JRCBjb25uSUQ7CiAjZW5kaWYKSW5kZXg6IFdlYktpdC9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tCShyZXZpc2lvbiAxNTc1NCkKKysrIFdlYktpdC9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw3IEBAIHN0YXRpYyBUcmFuc2l0aW9uVmVjdG9yIHRWZWN0b3JGb3JGdW5jdGkKIAogQGlt
cGxlbWVudGF0aW9uIFdlYk5ldHNjYXBlUGx1Z2luUGFja2FnZQogCi0jaWYgIV9fTFA2NF9fCisj
aWZuZGVmIF9fTFA2NF9fCiArICh2b2lkKWluaXRpYWxpemUKIHsKICAgICAvLyBUaGUgU2hvY2t3
YXZlIHBsdWdpbiByZXF1aXJlcyBhIHZhbGlkIGZpbGUgaW4gQ3VyQXBSZWZOdW0uCkBAIC0yNjUs
NyArMjY1LDcgQEAgc3RhdGljIFRyYW5zaXRpb25WZWN0b3IgdFZlY3RvckZvckZ1bmN0aQogICAg
IGlmIChpc0J1bmRsZSkKICAgICAgICAgQ0ZCdW5kbGVVbmxvYWRFeGVjdXRhYmxlKGNmQnVuZGxl
KTsKICAgICBlbHNlCi0jaWYgIV9fTFA2NF9fCisjaWZuZGVmIF9fTFA2NF9fCiAgICAgICAgIC8v
IENGTSBpcyBub3Qgc3VwcG9ydGVkIGluIDY0LWJpdAogICAgICAgICBXZWJDbG9zZUNvbm5lY3Rp
b24oJmNvbm5JRCk7CiAjZW5kaWYKQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgVHJhbnNpdGlv
blZlY3RvciB0VmVjdG9yRm9yRnVuY3RpCiAgICAgICAgICAgICAgICAgZ290byBhYm9ydDsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7Ci0jaWYgX19MUDY0X18KKyNpZmRlZiBfX0xQNjRfXwogICAg
ICAgICAvLyBDRk0gaXMgbm90IHN1cHBvcnRlZCBpbiA2NC1iaXQKICAgICAgICAgZ290byBhYm9y
dDsKICNlbHNlCkluZGV4OiBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNTc1NCkKKysrIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTg5NSw2ICsxODk1LDcgQEAKIAkJCQkJIi1XYmFkLWZ1bmN0
aW9uLWNhc3QiLAogCQkJCQkiLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyIsCiAJCQkJCSItV25lc3Rl
ZC1leHRlcm5zIiwKKwkJCQkJIi1XdW5kZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IERl
YnVnOwpAQCAtMTkzNSw2ICsxOTM2LDcgQEAKIAkJCQkJIi1XYmFkLWZ1bmN0aW9uLWNhc3QiLAog
CQkJCQkiLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyIsCiAJCQkJCSItV25lc3RlZC1leHRlcm5zIiwK
KwkJCQkJIi1XdW5kZWYiLAogCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CkBAIC0x
OTcxLDYgKzE5NzMsNyBAQAogCQkJCQkiLVdiYWQtZnVuY3Rpb24tY2FzdCIsCiAJCQkJCSItV21p
c3NpbmctZGVjbGFyYXRpb25zIiwKIAkJCQkJIi1XbmVzdGVkLWV4dGVybnMiLAorCQkJCQkiLVd1
bmRlZiIsCiAJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsK
</data>
<flag name="review"
          id="3029"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>