<?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>165783</bug_id>
          
          <creation_ts>2016-12-12 16:43:46 -0800</creation_ts>
          <short_desc>Remove flex and bison build dependencies; commit generated XPath parser</short_desc>
          <delta_ts>2016-12-16 10:05:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ossy</cc>
    
    <cc>pvollan</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1259263</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-12 16:43:46 -0800</bug_when>
    <thetext>Remove flex and bison build dependencies now that CSS is parsed with a non-generated parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259264</commentid>
    <comment_count>1</comment_count>
      <attachid>296965</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-12 16:45:24 -0800</bug_when>
    <thetext>Created attachment 296965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259281</commentid>
    <comment_count>2</comment_count>
      <attachid>296965</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-12 17:07:34 -0800</bug_when>
    <thetext>Comment on attachment 296965
Patch

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

&gt; Source/WebCore/xml/XPathGrammar.cpp:1258
&gt; +      case 41: /* &quot;NodeTest&quot; */
&gt; +#line 91 &quot;WebCore/xml/XPathGrammar.y&quot;
&gt; +	{ delete (yyvaluep-&gt;nodeTest); };

I am unclear if you intentionally left the &quot;WebCore/xml/XPathGrammar.y&quot; comment lines and did not delete the WebCore/xml/XPathGrammar.y file so that a person can refer back to the original grammar file. Regardless, I find understanding this file and confidently making changes (even if it is once in a blue moon) strictly worse than modifying WebCore/xml/XPathGrammar.y.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259451</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-13 11:00:44 -0800</bug_when>
    <thetext>I did intentionally leave XPathGrammar.y comments and the XPathGrammar.y file.  This file has only been touched three times since 2013, and none of them have been significant changes.  
1) Andy changed wtf::move to WTFMove. r194496
2) I made the grammar work with older versions of Bison. r189267
3) Per covered up a warning. r205011
None of these changes actually required running bison.  I still think making it easier to set up a build machine on Windows and having fewer dependencies on Linux will be more beneficial to the project than making one change per year slightly easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259565</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-13 15:48:50 -0800</bug_when>
    <thetext>I really want this to happen.  I accept all responsibility for whatever maintenance burden this adds.  I really think it will decrease the maintenance burden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259566</commentid>
    <comment_count>5</comment_count>
      <attachid>296965</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-13 15:49:09 -0800</bug_when>
    <thetext>Comment on attachment 296965
Patch

re-requesting review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259570</commentid>
    <comment_count>6</comment_count>
      <attachid>296965</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-13 16:00:40 -0800</bug_when>
    <thetext>Comment on attachment 296965
Patch

This might not be worth it.  Needs more discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259886</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-14 13:38:50 -0800</bug_when>
    <thetext>Yep, definitely worth it.  Let&apos;s do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259891</commentid>
    <comment_count>8</comment_count>
      <attachid>296965</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-14 13:55:17 -0800</bug_when>
    <thetext>Comment on attachment 296965
Patch

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

Yes! r=me, assuming you can fix the GTK/EFL stuff. I think there is a file they have that gets mad if you remove other files without letting it know.

&gt; Source/WebCore/xml/XPathGrammar.cpp:1
&gt; +/* A Bison parser, made by GNU Bison 2.3.  */

Should we add a statement here to the effect that &quot;This file is no longer automatically generated as part of the WebKit build. This code is in maintenance mode, and is no longer changing.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259895</commentid>
    <comment_count>9</comment_count>
      <attachid>297123</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-14 14:03:52 -0800</bug_when>
    <thetext>Created attachment 297123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260242</commentid>
    <comment_count>10</comment_count>
      <attachid>297217</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-15 13:54:44 -0800</bug_when>
    <thetext>Created attachment 297217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260253</commentid>
    <comment_count>11</comment_count>
      <attachid>297221</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-15 14:12:35 -0800</bug_when>
    <thetext>Created attachment 297221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260256</commentid>
    <comment_count>12</comment_count>
      <attachid>297221</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-12-15 14:14:10 -0800</bug_when>
    <thetext>Comment on attachment 297221
Patch

Thank you for including the bison generator comment! r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260287</commentid>
    <comment_count>13</comment_count>
      <attachid>297230</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-15 15:13:13 -0800</bug_when>
    <thetext>Created attachment 297230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260314</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-15 15:54:17 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/209883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260528</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-15 22:10:30 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; https://trac.webkit.org/changeset/209883

It broke the WinCairo build, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260611</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-16 10:05:27 -0800</bug_when>
    <thetext>The WinCairo bot had been building XPathGrammar.cpp with some of my local changes.  This didn&apos;t break any actual build, it just looked like it did on my bot :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296965</attachid>
            <date>2016-12-12 16:45:24 -0800</date>
            <delta_ts>2016-12-14 14:03:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165783-20161212164436.patch</filename>
            <type>text/plain</type>
            <size>90274</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTc0
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEy
LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGZsZXggYW5kIGJpc29uIGJ1aWxkIGRlcGVuZGVuY2llcyBub3cgdGhhdCBDU1Mg
aXMgcGFyc2VkIHdpdGggYSBub24tZ2VuZXJhdGVkIHBhcnNlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzgzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9u
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2U6CisKIDIw
MTYtMTItMTAgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAg
ICAgIFtjbWFrZV0gSW5jbHVkZSBXVEYsIEpTQywgYW5kIFdlYkNvcmUgaGVhZGVycyBhdXRvbWF0
aWNhbGx5IHRvIHRhcmdlcnMgdXNpbmcgdGhlbQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5
NzM0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTYtMTItMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgZmxleCBhbmQgYmlzb24gYnVpbGQgZGVwZW5kZW5j
aWVzIG5vdyB0aGF0IENTUyBpcyBwYXJzZWQgd2l0aCBhIG5vbi1nZW5lcmF0ZWQgcGFyc2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3ODMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBmbGV4IGFuZCBi
aXNvbiBhcmUgYW5ub3lpbmcgdG8gaW5zdGFsbCBhbmQgdXNlLCBlc3BlY2lhbGx5IG9uIFdpbmRv
d3MuCisgICAgICAgIFNpbmNlIG9ubHkgWFBhdGhHcmFtbWVyIHVzZXMgdGhlbSBhbmQgdGhhdCdz
IG5vdCBhY3RpdmVseSBkZXZlbG9wZWQsIGxldCdzIGp1c3QgY2hlY2sgaW4gdGhlIG9uZSBnZW5l
cmF0ZWQgZmlsZQorICAgICAgICBhbmQgbWFrZSBidWlsZGluZyBXZWJLaXQgZWFzaWVyIGZvcmV2
ZXIhCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBjc3MvbWFrZWdyYW1tYXIucGw6IFJlbW92ZWQuCisgICAgICAgICogeG1sL1hQYXRo
R3JhbW1hci5jcHA6IEFkZGVkLgorICAgICAgICAoeHBhdGh5eWxleCk6CisgICAgICAgICh4cGF0
aHl5ZXJyb3IpOgorICAgICAgICAoeXlzeW50YXhfZXJyb3IpOgorICAgICAgICAqIHhtbC9YUGF0
aEdyYW1tYXIuaDogQWRkZWQuCisKIDIwMTYtMTItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgc2hvdWxkIHVzZSBh
biBJREwgc3RyaW5nIGVudW1lcmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMjA5NzM0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTI4NzYsNiArMjg3Niw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICB4bWwvWFBh
dGhFeHByZXNzaW9uLmNwcAogICAgIHhtbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmNwcAogICAgIHht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKKyAgICB4bWwvWFBhdGhHcmFtbWFyLmNwcAogICAgIHhtbC9Y
UGF0aE5TUmVzb2x2ZXIuY3BwCiAgICAgeG1sL1hQYXRoTm9kZVNldC5jcHAKICAgICB4bWwvWFBh
dGhQYXJzZXIuY3BwCkBAIC0zNjc3LDkgKzM2NzgsNiBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiBs
aXN0KEFQUEVORCBXZWJDb3JlX0RFUklWRURfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwKQogQUREX1NPVVJDRV9XRUJDT1JFX0RF
UklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBQ
bHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgUGx1Z0luc1Jlc291cmNlcy5oKQogCi1HRU5FUkFURV9H
UkFNTUFSKHhwYXRoeXkgJHtXRUJDT1JFX0RJUn0veG1sL1hQYXRoR3JhbW1hci55ICR7REVSSVZF
RF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9YUGF0aEdyYW1tYXIuaCAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmNwcCAiIikKLWxpc3QoQVBQRU5EIFdlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9YUGF0aEdyYW1tYXIu
Y3BwKQotCiBzZXQoRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgIkxBTkdVQUdFX0pBVkFTQ1JJ
UFQgJHtGRUFUVVJFX0RFRklORVNfV0lUSF9TUEFDRV9TRVBBUkFUT1J9IikKIGxpc3QoQVBQRU5E
IFdlYkNvcmVUZXN0U3VwcG9ydF9JRExfRklMRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaWRsKQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIwOTczNCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTkxMSw3ICs5MTEsNiBAQCBhbGwgOiBc
CiAgICAgTWF0aE1MRWxlbWVudFR5cGVIZWxwZXJzLmggXAogICAgIE1hdGhNTE5hbWVzLmNwcCBc
CiAgICAgTWF0aE1MTmFtZXMuaCBcCi0gICAgWFBhdGhHcmFtbWFyLmNwcCBcCiAjCiAKICMgLS0t
LS0tLS0KQEAgLTEwMjQsMjIgKzEwMjMsNiBAQCBDb2xvckRhdGEuY3BwIDogcGxhdGZvcm0vQ29s
b3JEYXRhLmdwZXJmCiAKICMgLS0tLS0tLS0KIAotIyBQYXRoIHRvIGJpc29uCi0KLWlmZXEgKCQo
T1MpLE1BQ09TKQotQklTT049JChzaGVsbCB4Y3J1biAtZmluZCBiaXNvbikKLWVsc2UKLUJJU09O
PWJpc29uCi1lbmRpZgotCi0jIC0tLS0tLS0tCi0KLSMgWFBhdGggZ3JhbW1hcgotWFBhdGhHcmFt
bWFyLmNwcCA6IHhtbC9YUGF0aEdyYW1tYXIueSAkKFBST0pFQ1RfRklMRSkKLQkkKFBFUkwpICQo
V2ViQ29yZSkvY3NzL21ha2VncmFtbWFyLnBsIC0tb3V0cHV0RGlyIC4gLS1iaXNvbiAiJChCSVNP
TikiIC0tc3ltYm9sc1ByZWZpeCB4cGF0aHl5ICQ8Ci0KLSMgLS0tLS0tLS0KLQogIyBXZWJSVEMg
c2NyaXB0cwogCiBXRUJDT1JFX1NEUF9QUk9DRVNTT1JfU0NSSVBUUyA9IApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjA5NzM0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NzIsOCArNzcyLDYgQEAKIAkJMUE3NTBEOEQwQTkw
RTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNzUwRDhCMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05v
ZGVJdGVyYXRvci5jcHAgKi87IH07CiAJCTFBNzUwRDhFMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05v
ZGVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE3NTBEOEMwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE3NTBERDQwQTkwRTcy
OTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNzUwREQzMEE5MEU3MjkwMDBGRjIxNSAvKiBK
U05vZGVJdGVyYXRvckN1c3RvbS5jcHAgKi87IH07Ci0JCTFBNzYyOUQ1MEEwNzQyNTEwMDk4OUY1
QiAvKiBYUGF0aEdyYW1tYXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE3NjI5RDMwQTA3NDI1MTAwOTg5RjVCIC8qIFhQYXRoR3JhbW1hci5jcHAg
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW5yZWFjaGFibGUtY29kZSI7
IH07IH07Ci0JCTFBNzYyOUQ2MEEwNzQyNTEwMDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNzYyOUQ0MEEwNzQy
NTEwMDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuaCAqLzsgfTsKIAkJMUE3NjJDNzMwQTA3NEYyNjAw
OTg5RjVCIC8qIEpTWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE3NjJDNkIwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhF
dmFsdWF0b3IuY3BwICovOyB9OwogCQkxQTc2MkM3NDBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0
aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE3NjJDNkMwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhFdmFsdWF0b3IuaCAqLzsgfTsK
IAkJMUE3NjJDNzUwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhFeHByZXNzaW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNzYyQzZEMEEwNzRG
MjYwMDk4OUY1QiAvKiBKU1hQYXRoRXhwcmVzc2lvbi5jcHAgKi87IH07CkBAIC0yNDUyLDYgKzI0
NTAsNyBAQAogCQk1QzlBN0E3NTFBQTBGNkVBMDA5NThBQ0YgLyogREZBQnl0ZWNvZGVDb21waWxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzM5
MzA1RTFBQTBGNkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGVDb21waWxlci5jcHAgKi87IH07CiAJ
CTVDOUE3QTc2MUFBMEY2RUQwMDk1OEFDRiAvKiBERkFCeXRlY29kZUludGVycHJldGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzkzMDYwMUFB
MEY2QTkwMDI5QzgxNiAvKiBERkFCeXRlY29kZUludGVycHJldGVyLmNwcCAqLzsgfTsKIAkJNUM5
Qjg2MEMxQzIxRTNDOTAwMTEwRjM2IC8qIE5ldHdvcmtMb2FkVGltaW5nLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5Qjg2MEIxQzIxRTNDNjAwMTEw
RjM2IC8qIE5ldHdvcmtMb2FkVGltaW5nLm1tICovOyB9OworCQk1QzlFRjE3MTFERkY3MUNDMDBB
NDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDOUVGMTZGMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIu
Y3BwICovOyB9OwogCQk1Q0IzN0ZGRTFDNjJEMjhDMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JN
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QjM3RkZDMUM2MkQyNzgwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1vY2suY3BwICovOyB9Owog
CQk1Q0IzN0ZGRjFDNjJEMkExMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzN0ZGRDFDNjJEMjc4
MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi87IH07CiAJCTVDQkM4REFDMUFBQTMw
MjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOERBQTFBQUEzMDIyMDBFMUM4
MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwICovOyB9OwpAQCAtNzc5Niw4ICs3
Nzk1LDYgQEAKIAkJMUE3NTBEOEIwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVJdGVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzUwRDhDMEE5MEU1MjEwMDBGRjIx
NSAvKiBKU05vZGVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNOb2RlSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE3NTBERDMw
QTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE3NjI5RDMwQTA3NDI1MTAwOTg5RjVCIC8qIFhQYXRo
R3JhbW1hci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhH
cmFtbWFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE3NjI5RDQwQTA3NDI1
MTAwOTg5RjVCIC8qIFhQYXRoR3JhbW1hci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gWFBhdGhHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzYy
QzZCMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hQYXRoRXZhbHVhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE3NjJDNkMwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhF
dmFsdWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTWFBhdGhFdmFs
dWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE3NjJDNkQwQTA3NEYyNjAw
OTg5RjVCIC8qIEpTWFBhdGhFeHByZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1hQYXRoRXhwcmVzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05NzEyLDYgKzk3MDksOCBAQAogCQk1QzZFNjU0MDFENUNFREM5MDBGNzg2MkUg
LyogVVJMUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTFBhcnNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhENzFEMEYxRjJCMDA5RDJG
NkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U29ja2V0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5Qjg2MEIx
QzIxRTNDNjAwMTEwRjM2IC8qIE5ldHdvcmtMb2FkVGltaW5nLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0xvYWRUaW1pbmcubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDOUVGMTZGMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1t
YXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhHcmFtbWFy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5RUYxNzAxREZGNzE5OTAwQTQ1
MkUzIC8qIFhQYXRoR3JhbW1hci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
UGF0aEdyYW1tYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYy
RDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0IzN0ZGRDFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0
b3JNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9y
TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOERBQTFBQUEzMDIyMDBF
MUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1NTQsOCArMTc1NTMsNiBAQAogCQkJCUE4MzND
ODBCMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5oICovLAogCQkJCUUxNUEzNkQ4MTEwNDU3
MjcwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmNwcCAqLywKIAkJCQlFMTVBMzZENjExMDQ1NzIwMDBC
N0I2MzkgLyogWE1MTlNOYW1lcy5oICovLAotCQkJCTFBNzYyOUQzMEEwNzQyNTEwMDk4OUY1QiAv
KiBYUGF0aEdyYW1tYXIuY3BwICovLAotCQkJCTFBNzYyOUQ0MEEwNzQyNTEwMDk4OUY1QiAvKiBY
UGF0aEdyYW1tYXIuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJ
CQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZTsKQEAgLTIzMDk3LDYgKzIzMDk0LDggQEAK
IAkJCQkxQUI3RkM0RTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uTm9kZS5oICov
LAogCQkJCTFBQjdGQzRGMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEZ1bmN0aW9ucy5jcHAgKi8s
CiAJCQkJMUFCN0ZDNTAwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRnVuY3Rpb25zLmggKi8sCisJ
CQkJNUM5RUYxNkYxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgKi8sCisJCQkJ
NUM5RUYxNzAxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5oICovLAogCQkJCTFBQjdG
QzUxMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEdyYW1tYXIueSAqLywKIAkJCQlFMUVDMjk5RDBC
QjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmNwcCAqLywKIAkJCQlFMUVDMjk5RTBCQjA0
QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmggKi8sCkBAIC0yODMxNSw3ICsyODMxNCw2IEBA
CiAJCQkJMUFCN0ZDNkMwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCN0ZDNkYwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lv
bk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzcxMEE4QjkyRUMwMEQ5RDM3QiAvKiBY
UGF0aEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUE3NjI5RDYwQTA3NDI1MTAwOTg5
RjVCIC8qIFhQYXRoR3JhbW1hci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFQzI5QTAwQkIwNEM2
QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZDNzYw
QThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCN0ZDNzkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoUGFyc2VyLmggaW4gSGVhZGVycyAqLywK
QEAgLTMwNDY3LDYgKzMwNDY1LDcgQEAKIAkJCQkwRjM2RTczOTFCRDE4NEI5MDAyREI4OTEgLyog
TGF5b3V0U2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkwNjYwNjBCRTE0MUQ0MDA5NTY5
OTggLyogTGF5b3V0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRDM0IxRkMwRjBFNDE3
MDAwOTY5M0Y2IC8qIExlZ2FjeVRpbGVDYWNoZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDOUVG
MTcxMURGRjcxQ0MwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTRCNjVBNUExMzJGQUFGOTAwNzBFN0JFIC8qIExlZ2FjeVRpbGVHcmlkLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTQyNEEzQTAxMzMwREYxRTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGls
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUU0QjY1QTVFMTMyRkFEQjYwMDcwRTdCRSAvKiBMZWdh
Y3lUaWxlTGF5ZXIubW0gaW4gU291cmNlcyAqLywKQEAgLTMxNzg2LDcgKzMxNzg1LDYgQEAKIAkJ
CQkxQUI3RkM2QjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBQjdGQzZFMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb25O
b2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzcwMEE4QjkyRUMwMEQ5RDM3QiAvKiBY
UGF0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkxQTc2MjlENTBBMDc0MjUxMDA5
ODlGNUIgLyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUMyOTlGMEJC
MDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFC
N0ZDNzUwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoTlNSZXNvbHZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUI3RkM3ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCShyZXZpc2lvbiAyMDk3
MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOTkgKzAsMCBAQAotIyEgL3Vzci9iaW4vcGVybAotIwotIyAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdAotIwotIyAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSMKLSMgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0j
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSMgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSMgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotIwotIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIyAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0jICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi11c2Ugc3RyaWN0Owot
dXNlIHdhcm5pbmdzOwotdXNlIEZpbmRCaW47Ci11c2UgbGliICIkRmluZEJpbjo6QmluLy4uL2Jp
bmRpbmdzL3NjcmlwdHMiOwotCi11c2UgRmlsZTo6QmFzZW5hbWU7Ci11c2UgRmlsZTo6U3BlYzsK
LXVzZSBHZXRvcHQ6Okxvbmc7Ci0KLW15ICRvdXRwdXREaXIgPSAiLiI7Ci1teSAkZXh0cmFEZWZp
bmVzID0gIiI7Ci1teSAkc3ltYm9sc1ByZWZpeCA9ICIiOwotbXkgJHByZXByb2Nlc3NvciA9ICIi
OwotbXkgJHByZXByb2Nlc3NPbmx5ID0gMDsKLW15ICRiaXNvbiA9ICJiaXNvbiI7Ci0KLUdldE9w
dGlvbnMoCi0gICAgJ291dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKLSAgICAnZXh0cmFEZWZp
bmVzPXMnID0+IFwkZXh0cmFEZWZpbmVzLAotICAgICdiaXNvbj1zJyA9PiBcJGJpc29uLAotICAg
ICdwcmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCi0gICAgJ3ByZXByb2Nlc3NPbmx5
JyA9PiBcJHByZXByb2Nlc3NPbmx5LAotICAgICdzeW1ib2xzUHJlZml4PXMnID0+IFwkc3ltYm9s
c1ByZWZpeAotKTsKLQotbXkgJGdyYW1tYXJGaWxlUGF0aCA9ICRBUkdWWzBdOwotbXkgJGdyYW1t
YXJJbmNsdWRlc0ZpbGVQYXRoID0gQEFSR1YgPiAwID8gJEFSR1ZbMV0gOiAiIjsKLQotaWYgKCFs
ZW5ndGgoJHN5bWJvbHNQcmVmaXgpICYmICEkcHJlcHJvY2Vzc09ubHkpIHsKLSAgICBkaWUgIk5l
ZWQgYSBzeW1ib2xzIHByZWZpeCB0byBnaXZlIHRvIGJpc29uIChlLmcuIGNzc3l5LCB4cGF0aHl5
KSI7Ci19Ci0KLW15ICgkZmlsZW5hbWUsICRiYXNlUGF0aCwgJHN1ZmZpeCkgPSBmaWxlcGFyc2Uo
JGdyYW1tYXJGaWxlUGF0aCwgKCIueSIsICIueS5pbiIpKTsKLQotaWYgKCRzdWZmaXggZXEgIi55
LmluIikgewotICAgIG15ICRncmFtbWFyRmlsZU91dFBhdGggPSBGaWxlOjpTcGVjLT5qb2luKCRv
dXRwdXREaXIsICIkZmlsZW5hbWUueSIpOwotICAgIGlmICghJGdyYW1tYXJJbmNsdWRlc0ZpbGVQ
YXRoKSB7Ci0gICAgICAgICRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCA9ICIke2Jhc2VQYXRofSR7
ZmlsZW5hbWV9LnkuaW5jbHVkZXMiOwotICAgIH0KLQotICAgIG9wZW4gR1JBTU1BUiwgIj4kZ3Jh
bW1hckZpbGVPdXRQYXRoIiBvciBkaWU7Ci0gICAgb3BlbiBJTkNMVURFUywgIjwkZ3JhbW1hcklu
Y2x1ZGVzRmlsZVBhdGgiIG9yIGRpZTsKLQotICAgIHJlcXVpcmUgcHJlcHJvY2Vzc29yOwotCi0g
ICAgd2hpbGUgKDxJTkNMVURFUz4pIHsKLSAgICAgICAgcHJpbnQgR1JBTU1BUjsKLSAgICB9Ci0g
ICAgcHJpbnQgR1JBTU1BUiBqb2luKCIiLCBhcHBseVByZXByb2Nlc3NvcigkZ3JhbW1hckZpbGVQ
YXRoLCAkZXh0cmFEZWZpbmVzLCAkcHJlcHJvY2Vzc29yKSk7Ci0gICAgY2xvc2UgR1JBTU1BUjsK
LQotICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3JhbW1hckZpbGVPdXRQYXRoOwotCi0gICAgZXhp
dCBpZiAkcHJlcHJvY2Vzc09ubHk7Ci19Ci0KLW15ICRmaWxlQmFzZSA9IEZpbGU6OlNwZWMtPmpv
aW4oJG91dHB1dERpciwgJGZpbGVuYW1lKTsKLW15IEBiaXNvbkNvbW1hbmQgPSAoJGJpc29uLCAi
LWQiLCAiLXAiLCAkc3ltYm9sc1ByZWZpeCwgJGdyYW1tYXJGaWxlUGF0aCwgIi1vIiwgIiRmaWxl
QmFzZS5jcHAiKTsKLXB1c2ggQGJpc29uQ29tbWFuZCwgIi0tbm8tbGluZXMiIGlmICReTyBlcSAi
TVNXaW4zMiI7ICMgV29yayBhcm91bmQgYnVnIGluIGJpc29uID49IDMuMCBvbiBXaW5kb3dzIHdo
ZXJlIGl0IHB1dHMgYmFja3NsYXNoZXMgaW50byAjbGluZSBkaXJlY3RpdmVzLgotc3lzdGVtKEBi
aXNvbkNvbW1hbmQpID09IDAgb3IgZGllOwotCi1vcGVuIEhFQURFUiwgIj4kZmlsZUJhc2UuaCIg
b3IgZGllOwotcHJpbnQgSEVBREVSIDw8ICJFT0YiOwotI2lmbmRlZiBDU1NHUkFNTUFSX0gKLSNk
ZWZpbmUgQ1NTR1JBTU1BUl9ICi1FT0YKLQotb3BlbiBIUFAsICI8JGZpbGVCYXNlLmNwcC5oIiBv
ciBvcGVuIEhQUCwgIjwkZmlsZUJhc2UuaHBwIiBvciBkaWU7Ci13aGlsZSAoPEhQUD4pIHsKLSAg
ICBwcmludCBIRUFERVI7Ci19Ci1jbG9zZSBIUFA7Ci0KLXByaW50IEhFQURFUiAiI2VuZGlmXG4i
OwotY2xvc2UgSEVBREVSOwotCi11bmxpbmsoIiRmaWxlQmFzZS5jcHAuaCIpOwotdW5saW5rKCIk
ZmlsZUJhc2UuaHBwIik7Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyMjY3IEBACisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBH
TlUgQmlzb24gMi4zLiAgKi8KKworLyogU2tlbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIEJpc29u
J3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQworCisgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODks
IDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKKyAgIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y
IChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dy
YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4gICovCisKKy8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFy
Z2VyIHdvcmsgdGhhdCBjb250YWlucworICAgcGFydCBvciBhbGwgb2YgdGhlIEJpc29uIHBhcnNl
ciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKKyAgIHVuZGVyIHRlcm1zIG9mIHlv
dXIgY2hvaWNlLCBzbyBsb25nIGFzIHRoYXQgd29yayBpc24ndCBpdHNlbGYgYQorICAgcGFyc2Vy
IGdlbmVyYXRvciB1c2luZyB0aGUgc2tlbGV0b24gb3IgYSBtb2RpZmllZCB2ZXJzaW9uIHRoZXJl
b2YKKyAgIGFzIGEgcGFyc2VyIHNrZWxldG9uLiAgQWx0ZXJuYXRpdmVseSwgaWYgeW91IG1vZGlm
eSBvciByZWRpc3RyaWJ1dGUKKyAgIHRoZSBwYXJzZXIgc2tlbGV0b24gaXRzZWxmLCB5b3UgbWF5
IChhdCB5b3VyIG9wdGlvbikgcmVtb3ZlIHRoaXMKKyAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGlj
aCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3VsdGluZworICAgQmlzb24gb3V0
cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAg
IExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgorCisgICBUaGlzIHNwZWNp
YWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGlu
CisgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCisKKy8qIEMgTEFMUigxKSBwYXJzZXIgc2tl
bGV0b24gd3JpdHRlbiBieSBSaWNoYXJkIFN0YWxsbWFuLCBieQorICAgc2ltcGxpZnlpbmcgdGhl
IG9yaWdpbmFsIHNvLWNhbGxlZCAic2VtYW50aWMiIHBhcnNlci4gICovCisKKy8qIEFsbCBzeW1i
b2xzIGRlZmluZWQgYmVsb3cgc2hvdWxkIGJlZ2luIHdpdGggeXkgb3IgWVksIHRvIGF2b2lkCisg
ICBpbmZyaW5naW5nIG9uIHVzZXIgbmFtZSBzcGFjZS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgZXZl
biBmb3IgbG9jYWwKKyAgIHZhcmlhYmxlcywgYXMgdGhleSBtaWdodCBvdGhlcndpc2UgYmUgZXhw
YW5kZWQgYnkgdXNlciBtYWNyb3MuCisgICBUaGVyZSBhcmUgc29tZSB1bmF2b2lkYWJsZSBleGNl
cHRpb25zIHdpdGhpbiBpbmNsdWRlIGZpbGVzIHRvCisgICBkZWZpbmUgbmVjZXNzYXJ5IGxpYnJh
cnkgc3ltYm9sczsgdGhleSBhcmUgbm90ZWQgIklORlJJTkdFUyBPTgorICAgVVNFUiBOQU1FIFNQ
QUNFIiBiZWxvdy4gICovCisKKy8qIElkZW50aWZ5IEJpc29uIG91dHB1dC4gICovCisjZGVmaW5l
IFlZQklTT04gMQorCisvKiBCaXNvbiB2ZXJzaW9uLiAgKi8KKyNkZWZpbmUgWVlCSVNPTl9WRVJT
SU9OICIyLjMiCisKKy8qIFNrZWxldG9uIG5hbWUuICAqLworI2RlZmluZSBZWVNLRUxFVE9OX05B
TUUgInlhY2MuYyIKKworLyogUHVyZSBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVVJFIDEKKwor
LyogVXNpbmcgbG9jYXRpb25zLiAgKi8KKyNkZWZpbmUgWVlMU1BfTkVFREVEIDAKKworLyogU3Vi
c3RpdHV0ZSB0aGUgdmFyaWFibGUgYW5kIGZ1bmN0aW9uIG5hbWVzLiAgKi8KKyNkZWZpbmUgeXlw
YXJzZSB4cGF0aHl5cGFyc2UKKyNkZWZpbmUgeXlsZXggICB4cGF0aHl5bGV4CisjZGVmaW5lIHl5
ZXJyb3IgeHBhdGh5eWVycm9yCisjZGVmaW5lIHl5bHZhbCAgeHBhdGh5eWx2YWwKKyNkZWZpbmUg
eXljaGFyICB4cGF0aHl5Y2hhcgorI2RlZmluZSB5eWRlYnVnIHhwYXRoeXlkZWJ1ZworI2RlZmlu
ZSB5eW5lcnJzIHhwYXRoeXluZXJycworCisKKy8qIFRva2Vucy4gICovCisjaWZuZGVmIFlZVE9L
RU5UWVBFCisjIGRlZmluZSBZWVRPS0VOVFlQRQorICAgLyogUHV0IHRoZSB0b2tlbnMgaW50byB0
aGUgc3ltYm9sIHRhYmxlLCBzbyB0aGF0IEdEQiBhbmQgb3RoZXIgZGVidWdnZXJzCisgICAgICBr
bm93IGFib3V0IHRoZW0uICAqLworICAgZW51bSB5eXRva2VudHlwZSB7CisgICAgIE1VTE9QID0g
MjU4LAorICAgICBSRUxPUCA9IDI1OSwKKyAgICAgRVFPUCA9IDI2MCwKKyAgICAgTUlOVVMgPSAy
NjEsCisgICAgIFBMVVMgPSAyNjIsCisgICAgIEFORCA9IDI2MywKKyAgICAgT1IgPSAyNjQsCisg
ICAgIEZVTkNUSU9OTkFNRSA9IDI2NSwKKyAgICAgTElURVJBTCA9IDI2NiwKKyAgICAgTkFNRVRF
U1QgPSAyNjcsCisgICAgIE5VTUJFUiA9IDI2OCwKKyAgICAgTk9ERVRZUEUgPSAyNjksCisgICAg
IFZBUklBQkxFUkVGRVJFTkNFID0gMjcwLAorICAgICBBWElTTkFNRSA9IDI3MSwKKyAgICAgQ09N
TUVOVCA9IDI3MiwKKyAgICAgRE9URE9UID0gMjczLAorICAgICBQSSA9IDI3NCwKKyAgICAgTk9E
RSA9IDI3NSwKKyAgICAgU0xBU0hTTEFTSCA9IDI3NiwKKyAgICAgVEVYVCA9IDI3NywKKyAgICAg
WFBBVEhfRVJST1IgPSAyNzgKKyAgIH07CisjZW5kaWYKKy8qIFRva2Vucy4gICovCisjZGVmaW5l
IE1VTE9QIDI1OAorI2RlZmluZSBSRUxPUCAyNTkKKyNkZWZpbmUgRVFPUCAyNjAKKyNkZWZpbmUg
TUlOVVMgMjYxCisjZGVmaW5lIFBMVVMgMjYyCisjZGVmaW5lIEFORCAyNjMKKyNkZWZpbmUgT1Ig
MjY0CisjZGVmaW5lIEZVTkNUSU9OTkFNRSAyNjUKKyNkZWZpbmUgTElURVJBTCAyNjYKKyNkZWZp
bmUgTkFNRVRFU1QgMjY3CisjZGVmaW5lIE5VTUJFUiAyNjgKKyNkZWZpbmUgTk9ERVRZUEUgMjY5
CisjZGVmaW5lIFZBUklBQkxFUkVGRVJFTkNFIDI3MAorI2RlZmluZSBBWElTTkFNRSAyNzEKKyNk
ZWZpbmUgQ09NTUVOVCAyNzIKKyNkZWZpbmUgRE9URE9UIDI3MworI2RlZmluZSBQSSAyNzQKKyNk
ZWZpbmUgTk9ERSAyNzUKKyNkZWZpbmUgU0xBU0hTTEFTSCAyNzYKKyNkZWZpbmUgVEVYVCAyNzcK
KyNkZWZpbmUgWFBBVEhfRVJST1IgMjc4CisKKworCisKKy8qIENvcHkgdGhlIGZpcnN0IHBhcnQg
b2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworI2xpbmUgMjggIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlhQYXRoRnVuY3Rp
b25zLmgiCisjaW5jbHVkZSAiWFBhdGhQYXJzZXIuaCIKKyNpbmNsdWRlICJYUGF0aFBhdGguaCIK
KyNpbmNsdWRlICJYUGF0aFN0ZXAuaCIKKyNpbmNsdWRlICJYUGF0aFZhcmlhYmxlUmVmZXJlbmNl
LmgiCisKKyNpZiBDT01QSUxFUihNU1ZDKQorLy8gU2VlIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvMXdlYTV6d2UuYXNweAorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ3MDEpCisjZW5kaWYKKworI2RlZmluZSBZWU1BTExPQyBmYXN0TWFsbG9jCisjZGVmaW5lIFlZ
RlJFRSBmYXN0RnJlZQorCisjZGVmaW5lIFlZRU5BQkxFX05MUyAwCisjZGVmaW5lIFlZTFRZUEVf
SVNfVFJJVklBTCAxCisjZGVmaW5lIFlZREVCVUcgMAorI2RlZmluZSBZWU1BWERFUFRIIDEwMDAw
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFhQYXRoOworCisK
KworLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KKyNpZm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlE
RUJVRyAwCisjZW5kaWYKKworLyogRW5hYmxpbmcgdmVyYm9zZSBlcnJvciBtZXNzYWdlcy4gICov
CisjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCisjIHVuZGVmIFlZRVJST1JfVkVSQk9TRQorIyBkZWZp
bmUgWVlFUlJPUl9WRVJCT1NFIDEKKyNlbHNlCisjIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMAor
I2VuZGlmCisKKy8qIEVuYWJsaW5nIHRoZSB0b2tlbiB0YWJsZS4gICovCisjaWZuZGVmIFlZVE9L
RU5fVEFCTEUKKyMgZGVmaW5lIFlZVE9LRU5fVEFCTEUgMAorI2VuZGlmCisKKyNpZiAhIGRlZmlu
ZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAordHlwZWRlZiB1bmlv
biBZWVNUWVBFCisjbGluZSA2MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCit7IAorICAg
IE51bWVyaWNPcDo6T3Bjb2RlIG51bWVyaWNPcGNvZGU7IAorICAgIEVxVGVzdE9wOjpPcGNvZGUg
ZXF1YWxpdHlUZXN0T3Bjb2RlOworICAgIFN0cmluZ0ltcGwqIHN0cmluZzsKKyAgICBTdGVwOjpB
eGlzIGF4aXM7CisgICAgTG9jYXRpb25QYXRoKiBsb2NhdGlvblBhdGg7CisgICAgU3RlcDo6Tm9k
ZVRlc3QqIG5vZGVUZXN0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+
KiBleHByZXNzaW9uVmVjdG9yOworICAgIFN0ZXAqIHN0ZXA7CisgICAgRXhwcmVzc2lvbiogZXhw
cmVzc2lvbjsgCit9CisvKiBMaW5lIDE5MyBvZiB5YWNjLmMuICAqLworI2xpbmUgMTkwICIuL1hQ
YXRoR3JhbW1hci5jcHAiCisJWVlTVFlQRTsKKyMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBv
YnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZU1RZUEVfSVNfREVD
TEFSRUQgMQorIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorCisKKworLyog
Q29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworI2xpbmUgMTA0
ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKworCitzdGF0aWMgaW50IHhwYXRoeXlsZXgo
WVlTVFlQRSogeXlsdmFsLCBQYXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2VyLmxleCgqeXls
dmFsKTsgfQorc3RhdGljIHZvaWQgeHBhdGh5eWVycm9yKFBhcnNlciYsIGNvbnN0IGNoYXIqKSB7
IH0KKworCisKKy8qIExpbmUgMjE2IG9mIHlhY2MuYy4gICovCisjbGluZSAyMDkgIi4vWFBhdGhH
cmFtbWFyLmNwcCIKKworI2lmZGVmIHNob3J0CisjIHVuZGVmIHNob3J0CisjZW5kaWYKKworI2lm
ZGVmIFlZVFlQRV9VSU5UOAordHlwZWRlZiBZWVRZUEVfVUlOVDggeXl0eXBlX3VpbnQ4OworI2Vs
c2UKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB5eXR5cGVfdWludDg7CisjZW5kaWYKKworI2lmZGVm
IFlZVFlQRV9JTlQ4Cit0eXBlZGVmIFlZVFlQRV9JTlQ4IHl5dHlwZV9pbnQ4OworI2VsaWYgKGRl
ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5l
ZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQordHlwZWRlZiBzaWduZWQgY2hhciB5
eXR5cGVfaW50ODsKKyNlbHNlCit0eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50ODsKKyNlbmRp
ZgorCisjaWZkZWYgWVlUWVBFX1VJTlQxNgordHlwZWRlZiBZWVRZUEVfVUlOVDE2IHl5dHlwZV91
aW50MTY7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgeXl0eXBlX3VpbnQxNjsK
KyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX0lOVDE2Cit0eXBlZGVmIFlZVFlQRV9JTlQxNiB5eXR5
cGVfaW50MTY7CisjZWxzZQordHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OworI2VuZGlm
CisKKyNpZm5kZWYgWVlTSVpFX1QKKyMgaWZkZWYgX19TSVpFX1RZUEVfXworIyAgZGVmaW5lIFlZ
U0laRV9UIF9fU0laRV9UWVBFX18KKyMgZWxpZiBkZWZpbmVkIHNpemVfdAorIyAgZGVmaW5lIFlZ
U0laRV9UIHNpemVfdAorIyBlbGlmICEgZGVmaW5lZCBZWVNJWkVfVCAmJiAoZGVmaW5lZCBfX1NU
RENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNw
bHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjICBpbmNsdWRlIDxzdGRkZWYuaD4gLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgZGVmaW5lIFlZU0laRV9UIHNpemVfdAorIyBl
bHNlCisjICBkZWZpbmUgWVlTSVpFX1QgdW5zaWduZWQgaW50CisjIGVuZGlmCisjZW5kaWYKKwor
I2RlZmluZSBZWVNJWkVfTUFYSU1VTSAoKFlZU0laRV9UKSAtMSkKKworI2lmbmRlZiBZWV8KKyMg
aWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMgJiYgWVlFTkFCTEVfTkxTCisjICBpZiBFTkFCTEVfTkxT
CisjICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNF
ICovCisjICAgZGVmaW5lIFlZXyhtc2dpZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgbXNn
aWQpCisjICBlbmRpZgorIyBlbmRpZgorIyBpZm5kZWYgWVlfCisjICBkZWZpbmUgWVlfKG1zZ2lk
KSBtc2dpZAorIyBlbmRpZgorI2VuZGlmCisKKy8qIFN1cHByZXNzIHVudXNlZC12YXJpYWJsZSB3
YXJuaW5ncyBieSAidXNpbmciIEUuICAqLworI2lmICEgZGVmaW5lZCBsaW50IHx8IGRlZmluZWQg
X19HTlVDX18KKyMgZGVmaW5lIFlZVVNFKGUpICgodm9pZCkgKGUpKQorI2Vsc2UKKyMgZGVmaW5l
IFlZVVNFKGUpIC8qIGVtcHR5ICovCisjZW5kaWYKKworLyogSWRlbnRpdHkgZnVuY3Rpb24sIHVz
ZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgY29uc3RhbnQgY29uZGl0aW9ucy4gICovCisj
aWZuZGVmIGxpbnQKKyMgZGVmaW5lIFlZSUQobikgKG4pCisjZWxzZQorI2lmIChkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyBpbnQKK1lZSUQgKGludCBpKQorI2Vs
c2UKK3N0YXRpYyBpbnQKK1lZSUQgKGkpCisgICAgaW50IGk7CisjZW5kaWYKK3sKKyAgcmV0dXJu
IGk7Cit9CisjZW5kaWYKKworI2lmICEgZGVmaW5lZCB5eW92ZXJmbG93IHx8IFlZRVJST1JfVkVS
Qk9TRQorCisvKiBUaGUgcGFyc2VyIGludm9rZXMgYWxsb2NhIG9yIG1hbGxvYzsgZGVmaW5lIHRo
ZSBuZWNlc3Nhcnkgc3ltYm9scy4gICovCisKKyMgaWZkZWYgWVlTVEFDS19VU0VfQUxMT0NBCisj
ICBpZiBZWVNUQUNLX1VTRV9BTExPQ0EKKyMgICBpZmRlZiBfX0dOVUNfXworIyAgICBkZWZpbmUg
WVlTVEFDS19BTExPQyBfX2J1aWx0aW5fYWxsb2NhCisjICAgZWxpZiBkZWZpbmVkIF9fQlVJTFRJ
Tl9WQV9BUkdfSU5DUgorIyAgICBpbmNsdWRlIDxhbGxvY2EuaD4gLyogSU5GUklOR0VTIE9OIFVT
RVIgTkFNRSBTUEFDRSAqLworIyAgIGVsaWYgZGVmaW5lZCBfQUlYCisjICAgIGRlZmluZSBZWVNU
QUNLX0FMTE9DIF9fYWxsb2NhCisjICAgZWxpZiBkZWZpbmVkIF9NU0NfVkVSCisjICAgIGluY2x1
ZGUgPG1hbGxvYy5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICAgIGRl
ZmluZSBhbGxvY2EgX2FsbG9jYQorIyAgIGVsc2UKKyMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0Mg
YWxsb2NhCisjICAgIGlmICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVkIF9TVERMSUJf
SCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8
fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjICAgICBpbmNsdWRl
IDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgICAgaWZu
ZGVmIF9TVERMSUJfSAorIyAgICAgIGRlZmluZSBfU1RETElCX0ggMQorIyAgICAgZW5kaWYKKyMg
ICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgZW5kaWYKKworIyBpZmRlZiBZWVNUQUNL
X0FMTE9DCisgICAvKiBQYWNpZnkgR0NDJ3MgYGVtcHR5IGlmLWJvZHknIHdhcm5pbmcuICAqLwor
IyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkgKi87IH0gd2hpbGUgKFlZ
SUQgKDApKQorIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQorICAgIC8qIFRoZSBPUyBt
aWdodCBndWFyYW50ZWUgb25seSBvbmUgZ3VhcmQgcGFnZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBz
dGFjaywKKyAgICAgICBhbmQgYSBwYWdlIHNpemUgY2FuIGJlIGFzIHNtYWxsIGFzIDQwOTYgYnl0
ZXMuICBTbyB3ZSBjYW5ub3Qgc2FmZWx5CisgICAgICAgaW52b2tlIGFsbG9jYSAoTikgaWYgTiBl
eGNlZWRzIDQwOTYuICBVc2UgYSBzbGlnaHRseSBzbWFsbGVyIG51bWJlcgorICAgICAgIHRvIGFs
bG93IGZvciBhIGZldyBjb21waWxlci1hbGxvY2F0ZWQgdGVtcG9yYXJ5IHN0YWNrIHNsb3RzLiAg
Ki8KKyMgICBkZWZpbmUgWVlTVEFDS19BTExPQ19NQVhJTVVNIDQwMzIgLyogcmVhc29uYWJsZSBj
aXJjYSAyMDA2ICovCisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgWVlTVEFDS19BTExPQyBZ
WU1BTExPQworIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRSBZWUZSRUUKKyMgIGlmbmRlZiBZWVNUQUNL
X0FMTE9DX01BWElNVU0KKyMgICBkZWZpbmUgWVlTVEFDS19BTExPQ19NQVhJTVVNIFlZU0laRV9N
QVhJTVVNCisjICBlbmRpZgorIyAgaWYgKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgISBkZWZpbmVk
IF9TVERMSUJfSCBcCisgICAgICAgJiYgISAoKGRlZmluZWQgWVlNQUxMT0MgfHwgZGVmaW5lZCBt
YWxsb2MpIFwKKwkgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBkZWZpbmVkIGZyZWUpKSkKKyMg
ICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwor
IyAgIGlmbmRlZiBfU1RETElCX0gKKyMgICAgZGVmaW5lIF9TVERMSUJfSCAxCisjICAgZW5kaWYK
KyMgIGVuZGlmCisjICBpZm5kZWYgWVlNQUxMT0MKKyMgICBkZWZpbmUgWVlNQUxMT0MgbWFsbG9j
CisjICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQg
X19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3ZvaWQgKm1hbGxvYyAoWVlTSVpFX1Qp
OyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICAgZW5kaWYKKyMgIGVuZGlm
CisjICBpZm5kZWYgWVlGUkVFCisjICAgZGVmaW5lIFlZRlJFRSBmcmVlCisjICAgaWYgISBkZWZp
bmVkIGZyZWUgJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBk
ZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRl
ZmluZWQgX01TQ19WRVIpCit2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VS
IE5BTUUgU1BBQ0UgKi8KKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZiAvKiAh
IGRlZmluZWQgeXlvdmVyZmxvdyB8fCBZWUVSUk9SX1ZFUkJPU0UgKi8KKworCisjaWYgKCEgZGVm
aW5lZCB5eW92ZXJmbG93IFwKKyAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBcCisJIHx8
IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkKKwor
LyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0YWNrIG1lbWJlci4g
ICovCit1bmlvbiB5eWFsbG9jCit7CisgIHl5dHlwZV9pbnQxNiB5eXNzOworICBZWVNUWVBFIHl5
dnM7CisgIH07CisKKy8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBh
bGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCisjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJ
TVVNIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKKworLyogVGhlIHNpemUgb2YgYW4gYXJy
YXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhvbGQgYWxsIHN0YWNrcywgZWFjaCB3aXRoCisgICBOIGVs
ZW1lbnRzLiAgKi8KKyMgZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAorICAgICAoKE4pICogKHNp
emVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAoWVlTVFlQRSkpIFwKKyAgICAgICsgWVlTVEFD
S19HQVBfTUFYSU1VTSkKKworLyogQ29weSBDT1VOVCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4g
IFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCisgICBub3Qgb3ZlcmxhcC4gICovCisjIGlm
bmRlZiBZWUNPUFkKKyMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgMSA8IF9fR05VQ19fCisjICAg
ZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpIFwKKyAgICAgIF9fYnVpbHRpbl9tZW1jcHkg
KFRvLCBGcm9tLCAoQ291bnQpICogc2l6ZW9mICgqKEZyb20pKSkKKyMgIGVsc2UKKyMgICBkZWZp
bmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkJCVwKKyAgICAgIGRvCQkJCQlcCisJewkJCQkJXAor
CSAgWVlTSVpFX1QgeXlpOwkJCQlcCisJICBmb3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5
aSsrKQlcCisJICAgIChUbylbeXlpXSA9IChGcm9tKVt5eWldOwkJXAorCX0JCQkJCVwKKyAgICAg
IHdoaWxlIChZWUlEICgwKSkKKyMgIGVuZGlmCisjIGVuZGlmCisKKy8qIFJlbG9jYXRlIFNUQUNL
IGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IG9uZS4gIFRoZQorICAgbG9jYWwgdmFy
aWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUgZ2l2ZSB0aGUgb2xkIGFuZCBuZXcgbnVtYmVy
IG9mCisgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxv
Y2F0aW9uIG9mIHRoZQorICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJvcGVybHkgYWxp
Z25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKKyAgIHN0YWNrLiAgKi8KKyMgZGVmaW5lIFlZU1RB
Q0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCisgICAgZG8JCQkJCQkJCQlcCisgICAgICB7CQkJCQkJ
CQkJXAorCVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJCQkJXAorCVlZQ09QWSAoJnl5cHRyLT5TdGFj
aywgU3RhY2ssIHl5c2l6ZSk7CQkJCVwKKwlTdGFjayA9ICZ5eXB0ci0+U3RhY2s7CQkJCQkJXAor
CXl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQ
X01BWElNVU07IFwKKwl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlc
CisgICAgICB9CQkJCQkJCQkJXAorICAgIHdoaWxlIChZWUlEICgwKSkKKworI2VuZGlmCisKKy8q
IFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCisj
ZGVmaW5lIFlZRklOQUwgIDUyCisvKiBZWUxBU1QgLS0gTGFzdCBpbmRleCBpbiBZWVRBQkxFLiAg
Ki8KKyNkZWZpbmUgWVlMQVNUICAgMTMyCisKKy8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVy
bWluYWxzLiAgKi8KKyNkZWZpbmUgWVlOVE9LRU5TICAzMworLyogWVlOTlRTIC0tIE51bWJlciBv
ZiBub250ZXJtaW5hbHMuICAqLworI2RlZmluZSBZWU5OVFMgIDI4CisvKiBZWU5SVUxFUyAtLSBO
dW1iZXIgb2YgcnVsZXMuICAqLworI2RlZmluZSBZWU5SVUxFUyAgNjQKKy8qIFlZTlJVTEVTIC0t
IE51bWJlciBvZiBzdGF0ZXMuICAqLworI2RlZmluZSBZWU5TVEFURVMgIDEwMQorCisvKiBZWVRS
QU5TTEFURShZWUxFWCkgLS0gQmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZ
TEVYLiAgKi8KKyNkZWZpbmUgWVlVTkRFRlRPSyAgMgorI2RlZmluZSBZWU1BWFVUT0sgICAyNzgK
KworI2RlZmluZSBZWVRSQU5TTEFURShZWVgpCQkJCQkJXAorICAoKHVuc2lnbmVkIGludCkgKFlZ
WCkgPD0gWVlNQVhVVE9LID8geXl0cmFuc2xhdGVbWVlYXSA6IFlZVU5ERUZUT0spCisKKy8qIFlZ
VFJBTlNMQVRFW1lZTEVYXSAtLSBCaXNvbiBzeW1ib2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8g
WVlMRVguICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0ZVtdID0KK3sK
KyAgICAgICAwLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLAorICAgICAgMjYsICAgIDI3LCAgICAgMiwgICAgIDIsICAgIDMxLCAgICAgMiwg
ICAgMzAsICAgIDI0LCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAyNSwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAyOCwg
ICAgIDIsICAgIDI5LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAor
ICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAzMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisg
ICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCisgICAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgMjMKK307CisKKyNpZiBZWURFQlVHCisvKiBZWVBSSFNbWVlOXSAtLSBJbmRleCBv
ZiB0aGUgZmlyc3QgUkhTIHN5bWJvbCBvZiBydWxlIG51bWJlciBZWU4gaW4KKyAgIFlZUkhTLiAg
Ki8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlwcmhzW10gPQoreworICAgICAgIDAsICAg
ICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNiwgICAg
MTksCisgICAgICAyMSwgICAgMjUsICAgIDI5LCAgICAzMiwgICAgMzUsICAgIDM5LCAgICA0Mywg
ICAgNDUsICAgIDQ3LCAgICA0OSwKKyAgICAgIDUzLCAgICA1NywgICAgNjEsICAgIDY1LCAgICA3
MCwgICAgNzEsICAgIDczLCAgICA3NSwgICAgNzgsICAgIDgyLAorICAgICAgODQsICAgIDg2LCAg
ICA4OCwgICAgOTAsICAgIDk0LCAgICA5NiwgICAgOTgsICAgMTAwLCAgIDEwNCwgICAxMDksCisg
ICAgIDExMSwgICAxMTUsICAgMTE3LCAgIDExOSwgICAxMjMsICAgMTI1LCAgIDEyNywgICAxMzEs
ICAgMTM1LCAgIDEzNywKKyAgICAgMTQwLCAgIDE0MiwgICAxNDYsICAgMTQ4LCAgIDE1MiwgICAx
NTQsICAgMTU4LCAgIDE2MCwgICAxNjQsICAgMTY2LAorICAgICAxNzAsICAgMTc0LCAgIDE3Niwg
ICAxODAsICAgMTgyCit9OworCisvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2Yg
dGhlIHJ1bGVzJyBSSFMuICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5cmhzW10gPQor
eworICAgICAgMzQsICAgICAwLCAgICAtMSwgICAgMzUsICAgIC0xLCAgICA1NCwgICAgLTEsICAg
IDM3LCAgICAtMSwgICAgMzgsCisgICAgICAtMSwgICAgMjQsICAgIC0xLCAgICAyNCwgICAgMzgs
ICAgIC0xLCAgICA0NSwgICAgMzgsICAgIC0xLCAgICAzOSwKKyAgICAgIC0xLCAgICAzOCwgICAg
MjQsICAgIDM5LCAgICAtMSwgICAgMzgsICAgIDQ1LCAgICAzOSwgICAgLTEsICAgIDQxLAorICAg
ICAgNDIsICAgIC0xLCAgICAxMiwgICAgNDIsICAgIC0xLCAgICA0MCwgICAgNDEsICAgIDQyLCAg
ICAtMSwgICAgNDAsCisgICAgICAxMiwgICAgNDIsICAgIC0xLCAgICA0NiwgICAgLTEsICAgIDE2
LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyMCwKKyAgICAgIDI2LCAgICAyNywgICAgLTEsICAg
IDIyLCAgICAyNiwgICAgMjcsICAgIC0xLCAgICAxNywgICAgMjYsICAgIDI3LAorICAgICAgLTEs
ICAgIDE5LCAgICAyNiwgICAgMjcsICAgIC0xLCAgICAxOSwgICAgMjYsICAgIDExLCAgICAyNywg
ICAgLTEsCisgICAgICAtMSwgICAgNDMsICAgIC0xLCAgICA0NCwgICAgLTEsICAgIDQzLCAgICA0
NCwgICAgLTEsICAgIDI4LCAgICAzNSwKKyAgICAgIDI5LCAgICAtMSwgICAgMjEsICAgIC0xLCAg
ICAzMCwgICAgLTEsICAgIDE4LCAgICAtMSwgICAgMTUsICAgIC0xLAorICAgICAgMjYsICAgIDM1
LCAgICAyNywgICAgLTEsICAgIDExLCAgICAtMSwgICAgMTMsICAgIC0xLCAgICA0OCwgICAgLTEs
CisgICAgICAxMCwgICAgMjYsICAgIDI3LCAgICAtMSwgICAgMTAsICAgIDI2LCAgICA0OSwgICAg
MjcsICAgIC0xLCAgICA1MCwKKyAgICAgIC0xLCAgICA0OSwgICAgMzEsICAgIDUwLCAgICAtMSwg
ICAgMzUsICAgIC0xLCAgICA1MiwgICAgLTEsICAgIDUxLAorICAgICAgMzIsICAgIDUyLCAgICAt
MSwgICAgMzYsICAgIC0xLCAgICA1MywgICAgLTEsICAgIDUzLCAgICAyNCwgICAgMzgsCisgICAg
ICAtMSwgICAgNTMsICAgIDQ1LCAgICAzOCwgICAgLTEsICAgIDQ3LCAgICAtMSwgICAgNDcsICAg
IDQzLCAgICAtMSwKKyAgICAgIDU1LCAgICAtMSwgICAgNTQsICAgICA5LCAgICA1NSwgICAgLTEs
ICAgIDU2LCAgICAtMSwgICAgNTUsICAgICA4LAorICAgICAgNTYsICAgIC0xLCAgICA1NywgICAg
LTEsICAgIDU2LCAgICAgNSwgICAgNTcsICAgIC0xLCAgICA1OCwgICAgLTEsCisgICAgICA1Nywg
ICAgIDQsICAgIDU4LCAgICAtMSwgICAgNTksICAgIC0xLCAgICA1OCwgICAgIDcsICAgIDU5LCAg
ICAtMSwKKyAgICAgIDU4LCAgICAgNiwgICAgNTksICAgIC0xLCAgICA2MCwgICAgLTEsICAgIDU5
LCAgICAgMywgICAgNjAsICAgIC0xLAorICAgICAgNTEsICAgIC0xLCAgICAgNiwgICAgNjAsICAg
IC0xCit9OworCisvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1i
ZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5cmxp
bmVbXSA9Cit7CisgICAgICAgMCwgICAxMTQsICAgMTE0LCAgIDEyMSwgICAxMjUsICAgMTMxLCAg
IDEzNSwgICAxNDAsICAgMTQ1LCAgIDE1MywKKyAgICAgMTU5LCAgIDE2NSwgICAxNzQsICAgMTg0
LCAgIDIwMiwgICAyMTMsICAgMjMxLCAgIDIzNSwgICAyMzcsICAgMjQ0LAorICAgICAyNDksICAg
MjU0LCAgIDI1OSwgICAyNjQsICAgMjczLCAgIDI3NywgICAyODEsICAgMjg3LCAgIDI5NSwgICAz
MDIsCisgICAgIDMwOSwgICAzMTQsICAgMzIxLCAgIDMyNywgICAzMzIsICAgMzM4LCAgIDM0NCwg
ICAzNDgsICAgMzU2LCAgIDM2NywKKyAgICAgMzczLCAgIDM4MSwgICAzODUsICAgMzg3LCAgIDM5
NCwgICAzOTksICAgNDAxLCAgIDQwNywgICA0MTYsICAgNDE4LAorICAgICA0MjYsICAgNDI4LCAg
IDQzNSwgICA0MzcsICAgNDQ0LCAgIDQ0NiwgICA0NTMsICAgNDU1LCAgIDQ2MiwgICA0NjQsCisg
ICAgIDQ2OSwgICA0NzYsICAgNDc4LCAgIDQ4NSwgICA0ODcKK307CisjZW5kaWYKKworI2lmIFlZ
REVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKy8qIFlZVE5BTUVbU1lN
Qk9MLU5VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhlIHN5bWJvbCBTWU1CT0wtTlVNLgorICAgRmly
c3QsIHRoZSB0ZXJtaW5hbHMsIHRoZW4sIHN0YXJ0aW5nIGF0IFlZTlRPS0VOUywgbm9udGVybWlu
YWxzLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQoreworICAiJGVu
ZCIsICJlcnJvciIsICIkdW5kZWZpbmVkIiwgIk1VTE9QIiwgIlJFTE9QIiwgIkVRT1AiLCAiTUlO
VVMiLAorICAiUExVUyIsICJBTkQiLCAiT1IiLCAiRlVOQ1RJT05OQU1FIiwgIkxJVEVSQUwiLCAi
TkFNRVRFU1QiLCAiTlVNQkVSIiwKKyAgIk5PREVUWVBFIiwgIlZBUklBQkxFUkVGRVJFTkNFIiwg
IkFYSVNOQU1FIiwgIkNPTU1FTlQiLCAiRE9URE9UIiwgIlBJIiwKKyAgIk5PREUiLCAiU0xBU0hT
TEFTSCIsICJURVhUIiwgIlhQQVRIX0VSUk9SIiwgIicvJyIsICInQCciLCAiJygnIiwgIicpJyIs
CisgICInWyciLCAiJ10nIiwgIicuJyIsICInLCciLCAiJ3wnIiwgIiRhY2NlcHQiLCAiVG9wIiwg
IkV4cHIiLAorICAiTG9jYXRpb25QYXRoIiwgIkFic29sdXRlTG9jYXRpb25QYXRoIiwgIlJlbGF0
aXZlTG9jYXRpb25QYXRoIiwgIlN0ZXAiLAorICAiQXhpc1NwZWNpZmllciIsICJOb2RlVGVzdCIs
ICJPcHRpb25hbFByZWRpY2F0ZUxpc3QiLCAiUHJlZGljYXRlTGlzdCIsCisgICJQcmVkaWNhdGUi
LCAiRGVzY2VuZGFudE9yU2VsZiIsICJBYmJyZXZpYXRlZFN0ZXAiLCAiUHJpbWFyeUV4cHIiLAor
ICAiRnVuY3Rpb25DYWxsIiwgIkFyZ3VtZW50TGlzdCIsICJBcmd1bWVudCIsICJVbmlvbkV4cHIi
LCAiUGF0aEV4cHIiLAorICAiRmlsdGVyRXhwciIsICJPckV4cHIiLCAiQW5kRXhwciIsICJFcXVh
bGl0eUV4cHIiLCAiUmVsYXRpb25hbEV4cHIiLAorICAiQWRkaXRpdmVFeHByIiwgIk11bHRpcGxp
Y2F0aXZlRXhwciIsICJVbmFyeUV4cHIiLCAwCit9OworI2VuZGlmCisKKyMgaWZkZWYgWVlQUklO
VAorLyogWVlUT0tOVU1bWVlMRVgtTlVNXSAtLSBJbnRlcm5hbCB0b2tlbiBudW1iZXIgY29ycmVz
cG9uZGluZyB0bworICAgdG9rZW4gWVlMRVgtTlVNLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVf
dWludDE2IHl5dG9rbnVtW10gPQoreworICAgICAgIDAsICAgMjU2LCAgIDI1NywgICAyNTgsICAg
MjU5LCAgIDI2MCwgICAyNjEsICAgMjYyLCAgIDI2MywgICAyNjQsCisgICAgIDI2NSwgICAyNjYs
ICAgMjY3LCAgIDI2OCwgICAyNjksICAgMjcwLCAgIDI3MSwgICAyNzIsICAgMjczLCAgIDI3NCwK
KyAgICAgMjc1LCAgIDI3NiwgICAyNzcsICAgMjc4LCAgICA0NywgICAgNjQsICAgIDQwLCAgICA0
MSwgICAgOTEsICAgIDkzLAorICAgICAgNDYsICAgIDQ0LCAgIDEyNAorfTsKKyMgZW5kaWYKKwor
LyogWVlSMVtZWU5dIC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVy
aXZlcy4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9Cit7CisgICAgICAg
MCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM2LCAgICAzNywgICAgMzcsICAgIDM3
LCAgICAzOCwKKyAgICAgIDM4LCAgICAzOCwgICAgMzksICAgIDM5LCAgICAzOSwgICAgMzksICAg
IDM5LCAgICA0MCwgICAgNDAsICAgIDQxLAorICAgICAgNDEsICAgIDQxLCAgICA0MSwgICAgNDEs
ICAgIDQyLCAgICA0MiwgICAgNDMsICAgIDQzLCAgICA0NCwgICAgNDUsCisgICAgICA0NiwgICAg
NDYsICAgIDQ3LCAgICA0NywgICAgNDcsICAgIDQ3LCAgICA0NywgICAgNDgsICAgIDQ4LCAgICA0
OSwKKyAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUxLCAgICA1MiwgICAgNTIsICAgIDUyLCAg
ICA1MiwgICAgNTMsICAgIDUzLAorICAgICAgNTQsICAgIDU0LCAgICA1NSwgICAgNTUsICAgIDU2
LCAgICA1NiwgICAgNTcsICAgIDU3LCAgICA1OCwgICAgNTgsCisgICAgICA1OCwgICAgNTksICAg
IDU5LCAgICA2MCwgICAgNjAKK307CisKKy8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9s
cyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8KK3N0YXRpYyBjb25z
dCB5eXR5cGVfdWludDggeXlyMltdID0KK3sKKyAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDIsICAgICAxLAorICAgICAgIDMsICAg
ICAzLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDMsCisgICAgICAgMywgICAgIDMsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAxLCAgICAgMSwg
ICAgIDIsICAgICAzLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDQsICAgICAxLAorICAgICAgIDMsICAgICAxLCAg
ICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDIsCisg
ICAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMs
ICAgICAxLCAgICAgMywKKyAgICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMgorfTsK
KworLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3aXRo
IGluIHN0YXRlCisgICBTVEFURS1OVU0gd2hlbiBZWVRBQkxFIGRvZXNuJ3Qgc3BlY2lmeSBzb21l
dGhpbmcgZWxzZSB0byBkby4gIFplcm8KKyAgIG1lYW5zIHRoZSBkZWZhdWx0IGlzIGFuIGVycm9y
LiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZhY3RbXSA9Cit7CisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAzNCwgICAgMjQsICAgIDM1LCAgICAzMiwgICAgMTcsICAgICAw
LCAgICAzMSwKKyAgICAgICAwLCAgICAgMCwgICAgMjksICAgICAwLCAgICAgNiwgICAgMTgsICAg
ICAwLCAgICAzMCwgICAgIDAsICAgICAyLAorICAgICAgNDQsICAgICA0LCAgICAgNSwgICAgIDks
ICAgICAwLCAgICAyNCwgICAgIDAsICAgIDE2LCAgICA0OCwgICAgMzYsCisgICAgICA2MywgICAg
NDIsICAgIDQ1LCAgICAgMywgICAgNTAsICAgIDUyLCAgICA1NCwgICAgNTYsICAgIDU4LCAgICA2
MSwKKyAgICAgIDY0LCAgICAgMCwgICAgIDAsICAgIDEzLCAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDcsICAgICAwLCAgICAgMSwgICAgIDAsICAgICAw
LCAgICAyNCwgICAgMjQsICAgIDEyLCAgICAgOCwgICAgNDksCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAg
ICAgIDM3LCAgICA0MSwgICAgIDAsICAgIDM5LCAgICAgMCwgICAgMjcsICAgIDIxLCAgICAgMCwg
ICAgMjIsICAgIDE5LAorICAgICAgMjAsICAgIDMzLCAgICAxMCwgICAgMTEsICAgIDE1LCAgICAx
NCwgICAgNDMsICAgIDQ2LCAgICA0NywgICAgNTEsCisgICAgICA1MywgICAgNTUsICAgIDU3LCAg
ICA2MCwgICAgNTksICAgIDYyLCAgICAzOCwgICAgIDAsICAgIDI4LCAgICAyMywKKyAgICAgIDQw
Cit9OworCisvKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICovCitzdGF0aWMgY29uc3QgeXl0eXBl
X2ludDggeXlkZWZnb3RvW10gPQoreworICAgICAgLTEsICAgIDE4LCAgICA3MSwgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgNDMsCisgICAgICA0NCwgICAgNDUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICA3MiwgICAgNzMsICAgIDMwLCAgICAzMSwK
KyAgICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OQorfTsKKworLyogWVlQQUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUg
cG9ydGlvbiBkZXNjcmliaW5nCisgICBTVEFURS1OVU0uICAqLworI2RlZmluZSBZWVBBQ1RfTklO
RiAtMzcKK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXBhY3RbXSA9Cit7CisgICAgICA4MSwg
ICAgODEsICAgIC04LCAgIC0zNywgICAgLTcsICAgLTM3LCAgIC0zNywgICAtMzcsICAgIDE0LCAg
IC0zNywKKyAgICAgIDE3LCAgICAyMCwgICAtMzcsICAgIDIxLCAgICAgOCwgICAtMzcsICAgIDgx
LCAgIC0zNywgICAgNDgsICAgLTM3LAorICAgICAtMzcsICAgLTM3LCAgIC0xNywgICAtMzcsICAg
IDIyLCAgICAtNywgICAgIDgsICAgLTM3LCAgICAtNywgICAtMzcsCisgICAgICAyMywgICAtMzcs
ICAgIC05LCAgICAgMSwgICAgNDUsICAgIDQ5LCAgICA1MiwgICAgMTAsICAgIDU0LCAgIC0zNywK
KyAgICAgLTM3LCAgICA1OSwgICAgODEsICAgLTM3LCAgICAtNywgICAtMzcsICAgIDMxLCAgICAt
NSwgICAgMzIsICAgIDMzLAorICAgICAtMTcsICAgIDM0LCAgIC0zNywgICAgIDgsICAgICA4LCAg
ICAtNywgICAgLTcsICAgLTM3LCAgIC0xNywgICAgLTcsCisgICAgIDEwMiwgICAgIDgsICAgICA4
LCAgICA4MSwgICAgODEsICAgIDgxLCAgICA4MSwgICAgODEsICAgIDgxLCAgICA4MSwKKyAgICAg
LTM3LCAgIC0zNywgICAtMTgsICAgLTM3LCAgICAzNSwgICAtMzcsICAgLTM3LCAgICAzNiwgICAt
MzcsICAgLTM3LAorICAgICAtMzcsICAgLTM3LCAgIC0zNywgICAtMzcsICAgLTM3LCAgIC0zNywg
ICAtMzcsICAgLTE3LCAgIC0xNywgICAgNDUsCisgICAgICA0OSwgICAgNTIsICAgIDEwLCAgICA1
NCwgICAgNTQsICAgLTM3LCAgIC0zNywgICAgODEsICAgLTM3LCAgIC0zNywKKyAgICAgLTM3Cit9
OworCisvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4
IHl5cGdvdG9bXSA9Cit7CisgICAgIC0zNywgICAtMzcsICAgICAzLCAgIC0zNywgICAtMzcsICAg
LTEyLCAgIC0yMiwgICAtMzcsICAgIDM4LCAgIC0yMCwKKyAgICAgIDYwLCAgIC0zNiwgICAtMjEs
ICAgLTM3LCAgIC0zNywgICAtMzcsICAgLTM3LCAgIC0yNCwgICAtMzcsICAgIDMwLAorICAgICAt
MzcsICAgLTM3LCAgICAxOSwgICAgNDAsICAgIDQzLCAgICAyOSwgICAtMTYsICAgIC0xCit9Owor
CisvKiBZWVRBQkxFW1lZUEFDVFtTVEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RB
VEUtTlVNLiAgSWYKKyAgIHBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUs
IHJlZHVjZSB0aGUgcnVsZSB3aGljaAorICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHpl
cm8sIGRvIHdoYXQgWVlERUZBQ1Qgc2F5cy4KKyAgIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVy
cm9yLiAgKi8KKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xCitzdGF0aWMgY29uc3QgeXl0eXBlX3Vp
bnQ4IHl5dGFibGVbXSA9Cit7CisgICAgICA0MCwgICAgNTQsICAgIDUwLCAgICAxOSwgICAgMTIs
ICAgIDU3LCAgICA3NywgICAgNTMsICAgIDc1LCAgICA5NiwKKyAgICAgIDYzLCAgICA2MiwgICAg
MTIsICAgIDk3LCAgICA1OCwgICAgNjEsICAgIDY3LCAgICA2OCwgICAgNDEsICAgIDUxLAorICAg
ICAgIDQsICAgIDQyLCAgICA3OCwgICAgNzUsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAg
ICAxMSwgICAgNTQsCisgICAgICAxMywgICAgODIsICAgIDgzLCAgICAxNSwgICAgNTUsICAgIDg0
LCAgICA4NSwgICAgNTQsICAgIDE3LCAgICAgOCwKKyAgICAgIDQ2LCAgICAxMCwgICAgMTEsICAg
IDQ3LCAgICAxMywgICAgNzQsICAgIDQ4LCAgICA0OSwgICAgNTIsICAgIDg3LAorICAgICAgODgs
ICAgIDkzLCAgICA5NCwgICAgNjQsICAgIDY1LCAgICA2MCwgICAgNjYsICAgIDY5LCAgICA3Niwg
ICAgNzksCisgICAgICA4MCwgICAgODEsICAgIDU2LCAgICA5OSwgICAgOTgsICAgICAxLCAgICA1
NCwgICAgNTQsICAgIDk1LCAgICAgMiwKKyAgICAgICAzLCAgICAgNCwgICAgIDUsICAgMTAwLCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAorICAgICAgMTIsICAgIDEz
LCAgICA4OSwgICAgMTQsICAgIDE1LCAgICAxNiwgICAgNzAsICAgICAxLCAgICA1OSwgICAgMTcs
CisgICAgICA4NiwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgIDkyLCAgICAgNiwgICAg
IDcsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICA5MCwg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgOTEsICAgICAwLAorICAgICAgIDAsICAgIDE3LCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDAsICAgICA2LCAgICAgNywgICAgIDgsCisgICAg
ICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgICAwLCAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMTcKK307CisKK3N0YXRpYyBjb25zdCB5
eXR5cGVfaW50OCB5eWNoZWNrW10gPQoreworICAgICAgIDEsICAgIDIyLCAgICAxNCwgICAgIDAs
ICAgIDIxLCAgICAyNSwgICAgMTEsICAgIDI0LCAgICA0NCwgICAgMjcsCisgICAgICAgOSwgICAg
MzIsICAgIDIxLCAgICAzMSwgICAgMjYsICAgIDI0LCAgICAgNiwgICAgIDcsICAgIDI2LCAgICAx
NiwKKyAgICAgIDEyLCAgICAyOCwgICAgMjcsICAgIDU5LCAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDUwLAorICAgICAgMjIsICAgIDUzLCAgICA1NCwgICAgMjUsICAgIDEy
LCAgICA1NSwgICAgNTYsICAgIDU4LCAgICAzMCwgICAgMTcsCisgICAgICAyNiwgICAgMTksICAg
IDIwLCAgICAyNiwgICAgMjIsICAgIDQyLCAgICAyNiwgICAgMjYsICAgICAwLCAgICA2MSwKKyAg
ICAgIDYyLCAgICA2NywgICAgNjgsICAgICA4LCAgICAgNSwgICAgMzIsICAgICA0LCAgICAgMywg
ICAgMjcsICAgIDI3LAorICAgICAgMjcsICAgIDI3LCAgICAyNCwgICAgMjcsICAgIDI5LCAgICAg
NiwgICAgODcsICAgIDg4LCAgICA2OSwgICAgMTAsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICA5NywgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKKyAgICAgIDIx
LCAgICAyMiwgICAgNjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAgNiwgICAgMjgs
ICAgIDMwLAorICAgICAgNjAsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICA2NiwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgNjQsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDY1LCAgICAtMSwKKyAgICAgIC0xLCAgICAz
MCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAxNSwgICAgMTYsICAgIDE3
LAorICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAtMSwgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDMwCit9OworCisvKiBZWVNU
T1NbU1RBVEUtTlVNXSAtLSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwor
ICAgc3ltYm9sIG9mIHN0YXRlIFNUQVRFLU5VTS4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3Vp
bnQ4IHl5c3Rvc1tdID0KK3sKKyAgICAgICAwLCAgICAgNiwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDMwLCAgICAzNCwgICAgMzUsCisgICAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwKKyAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYs
ICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAorICAgICAgNjAsICAgIDI2LCAgICAyOCwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgMjYsICAgIDI2LCAgICAyNiwgICAgMjYsCisgICAgICAzOCwg
ICAgMzUsICAgICAwLCAgICAyNCwgICAgNDUsICAgIDEyLCAgICA0MSwgICAgNDIsICAgIDM4LCAg
ICA0MywKKyAgICAgIDMyLCAgICAyNCwgICAgNDUsICAgICA5LCAgICAgOCwgICAgIDUsICAgICA0
LCAgICAgNiwgICAgIDcsICAgICAzLAorICAgICAgMjcsICAgIDM1LCAgICA0OSwgICAgNTAsICAg
IDM1LCAgICA0NCwgICAgMjcsICAgIDExLCAgICAyNywgICAgMjcsCisgICAgICAyNywgICAgMjcs
ICAgIDM5LCAgICAzOSwgICAgNDIsICAgIDQyLCAgICA1MiwgICAgMzgsICAgIDM4LCAgICA1NSwK
KyAgICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA1OSwgICAgNjAsICAgIDI3LCAgICAz
MSwgICAgMjksICAgIDI3LAorICAgICAgNTAKK307CisKKyNkZWZpbmUgeXllcnJvawkJKHl5ZXJy
c3RhdHVzID0gMCkKKyNkZWZpbmUgeXljbGVhcmluCSh5eWNoYXIgPSBZWUVNUFRZKQorI2RlZmlu
ZSBZWUVNUFRZCQkoLTIpCisjZGVmaW5lIFlZRU9GCQkwCisKKyNkZWZpbmUgWVlBQ0NFUFQJZ290
byB5eWFjY2VwdGxhYgorI2RlZmluZSBZWUFCT1JUCQlnb3RvIHl5YWJvcnRsYWIKKyNkZWZpbmUg
WVlFUlJPUgkJZ290byB5eWVycm9ybGFiCisKKworLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBj
YWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQorICAgdG8gZWFzZSB0
aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KKyAg
IE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdv
LiAgKi8KKworI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJsYWIKKworI2RlZmluZSBZWVJFQ09W
RVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCisKKyNkZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVl
KQkJCQkJXAorZG8JCQkJCQkJCVwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZICYmIHl5bGVuID09
IDEpCQkJCVwKKyAgICB7CQkJCQkJCQlcCisgICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwK
KyAgICAgIHl5bHZhbCA9IChWYWx1ZSk7CQkJCQkJXAorICAgICAgeXl0b2tlbiA9IFlZVFJBTlNM
QVRFICh5eWNoYXIpOwkJCQlcCisgICAgICBZWVBPUFNUQUNLICgxKTsJCQkJCQlcCisgICAgICBn
b3RvIHl5YmFja3VwOwkJCQkJCVwKKyAgICB9CQkJCQkJCQlcCisgIGVsc2UJCQkJCQkJCVwKKyAg
ICB7CQkJCQkJCQlcCisgICAgICB5eWVycm9yIChwYXJzZXIsIFlZXygic3ludGF4IGVycm9yOiBj
YW5ub3QgYmFjayB1cCIpKTsgXAorICAgICAgWVlFUlJPUjsJCQkJCQkJXAorICAgIH0JCQkJCQkJ
CVwKK3doaWxlIChZWUlEICgwKSkKKworCisjZGVmaW5lIFlZVEVSUk9SCTEKKyNkZWZpbmUgWVlF
UlJDT0RFCTI1NgorCisKKy8qIFlZTExPQ19ERUZBVUxUIC0tIFNldCBDVVJSRU5UIHRvIHNwYW4g
ZnJvbSBSSFNbMV0gdG8gUkhTW05dLgorICAgSWYgTiBpcyAwLCB0aGVuIHNldCBDVVJSRU5UIHRv
IHRoZSBlbXB0eSBsb2NhdGlvbiB3aGljaCBlbmRzCisgICB0aGUgcHJldmlvdXMgc3ltYm9sOiBS
SFNbMF0gKGFsd2F5cyBkZWZpbmVkKS4gICovCisKKyNkZWZpbmUgWVlSSFNMT0MoUmhzLCBLKSAo
KFJocylbS10pCisjaWZuZGVmIFlZTExPQ19ERUZBVUxUCisjIGRlZmluZSBZWUxMT0NfREVGQVVM
VChDdXJyZW50LCBSaHMsIE4pCQkJCVwKKyAgICBkbwkJCQkJCQkJCVwKKyAgICAgIGlmIChZWUlE
IChOKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorCXsJCQkJCQkJCVwKKwkgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSBZWVJIU0xPQyAoUmhz
LCAxKS5maXJzdF9saW5lOwlcCisJICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gWVlSSFNMT0Mg
KFJocywgMSkuZmlyc3RfY29sdW1uOwlcCisJICAoQ3VycmVudCkubGFzdF9saW5lICAgID0gWVlS
SFNMT0MgKFJocywgTikubGFzdF9saW5lOwkJXAorCSAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9
IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfY29sdW1uOwlcCisJfQkJCQkJCQkJXAorICAgICAgZWxz
ZQkJCQkJCQkJXAorCXsJCQkJCQkJCVwKKwkgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSAoQ3Vy
cmVudCkubGFzdF9saW5lICAgPQkJXAorCSAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7
CQkJCVwKKwkgIChDdXJyZW50KS5maXJzdF9jb2x1bW4gPSAoQ3VycmVudCkubGFzdF9jb2x1bW4g
PQkJXAorCSAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2NvbHVtbjsJCQkJXAorCX0JCQkJCQkJ
CVwKKyAgICB3aGlsZSAoWVlJRCAoMCkpCisjZW5kaWYKKworCisvKiBZWV9MT0NBVElPTl9QUklO
VCAtLSBQcmludCB0aGUgbG9jYXRpb24gb24gdGhlIHN0cmVhbS4KKyAgIFRoaXMgbWFjcm8gd2Fz
IG5vdCBtYW5kYXRlZCBvcmlnaW5hbGx5OiBkZWZpbmUgb25seSBpZiB3ZSBrbm93CisgICB3ZSB3
b24ndCBicmVhayB1c2VyIGNvZGU6IHdoZW4gdGhlc2UgYXJlIHRoZSBsb2NhdGlvbnMgd2Uga25v
dy4gICovCisKKyNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKKyMgaWYgZGVmaW5lZCBZWUxUWVBF
X0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCisjICBkZWZpbmUgWVlfTE9DQVRJT05f
UFJJTlQoRmlsZSwgTG9jKQkJCVwKKyAgICAgZnByaW50ZiAoRmlsZSwgIiVkLiVkLSVkLiVkIiwJ
CQlcCisJICAgICAgKExvYykuZmlyc3RfbGluZSwgKExvYykuZmlyc3RfY29sdW1uLAlcCisJICAg
ICAgKExvYykubGFzdF9saW5lLCAgKExvYykubGFzdF9jb2x1bW4pCisjIGVsc2UKKyMgIGRlZmlu
ZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKKyMgZW5kaWYKKyNlbmRp
ZgorCisKKy8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRoIHRoZSByaWdodCBhcmd1bWVu
dHMuICAqLworCisjaWZkZWYgWVlMRVhfUEFSQU0KKyMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXls
dmFsLCBZWUxFWF9QQVJBTSkKKyNlbHNlCisjIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwg
cGFyc2VyKQorI2VuZGlmCisKKy8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8K
KyNpZiBZWURFQlVHCisKKyMgaWZuZGVmIFlZRlBSSU5URgorIyAgaW5jbHVkZSA8c3RkaW8uaD4g
LyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgZGVmaW5lIFlZRlBSSU5URiBm
cHJpbnRmCisjIGVuZGlmCisKKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQkJCVwKK2RvIHsJCQkJ
CQlcCisgIGlmICh5eWRlYnVnKQkJCQkJXAorICAgIFlZRlBSSU5URiBBcmdzOwkJCQlcCit9IHdo
aWxlIChZWUlEICgwKSkKKworIyBkZWZpbmUgWVlfU1lNQk9MX1BSSU5UKFRpdGxlLCBUeXBlLCBW
YWx1ZSwgTG9jYXRpb24pCQkJICBcCitkbyB7CQkJCQkJCQkJICBcCisgIGlmICh5eWRlYnVnKQkJ
CQkJCQkJICBcCisgICAgewkJCQkJCQkJCSAgXAorICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIl
cyAiLCBUaXRsZSk7CQkJCQkgIFwKKyAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLAkJCQkJ
CSAgXAorCQkgIFR5cGUsIFZhbHVlLCBwYXJzZXIpOyBcCisgICAgICBZWUZQUklOVEYgKHN0ZGVy
ciwgIlxuIik7CQkJCQkJICBcCisgICAgfQkJCQkJCQkJCSAgXAorfSB3aGlsZSAoWVlJRCAoMCkp
CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUHJpbnQgdGhpcyBz
eW1ib2wgb24gWVlPVVRQVVQuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LworCisvKkFSR1NVU0VEKi8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5
X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19W
RVIpCitzdGF0aWMgdm9pZAoreXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91dHB1dCwg
aW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBQYXJzZXImIHBhcnNl
cikKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwg
eXl0eXBlLCB5eXZhbHVlcCwgcGFyc2VyKQorICAgIEZJTEUgKnl5b3V0cHV0OworICAgIGludCB5
eXR5cGU7CisgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwOworICAgIFBhcnNlciYg
cGFyc2VyOworI2VuZGlmCit7CisgIGlmICgheXl2YWx1ZXApCisgICAgcmV0dXJuOworICBZWVVT
RSAocGFyc2VyKTsKKyMgaWZkZWYgWVlQUklOVAorICBpZiAoeXl0eXBlIDwgWVlOVE9LRU5TKQor
ICAgIFlZUFJJTlQgKHl5b3V0cHV0LCB5eXRva251bVt5eXR5cGVdLCAqeXl2YWx1ZXApOworIyBl
bHNlCisgIFlZVVNFICh5eW91dHB1dCk7CisjIGVuZGlmCisgIHN3aXRjaCAoeXl0eXBlKQorICAg
IHsKKyAgICAgIGRlZmF1bHQ6CisJYnJlYWs7CisgICAgfQorfQorCisKKy8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFByaW50IHRoaXMgc3ltYm9sIG9uIFlZT1VUUFVULiAg
fAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmIChkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eV9zeW1ib2xfcHJpbnQg
KEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1
ZXAsIFBhcnNlciYgcGFyc2VyKQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5eV9zeW1ib2xfcHJpbnQg
KHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBwYXJzZXIpCisgICAgRklMRSAqeXlvdXRwdXQ7
CisgICAgaW50IHl5dHlwZTsKKyAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7Cisg
ICAgUGFyc2VyJiBwYXJzZXI7CisjZW5kaWYKK3sKKyAgaWYgKHl5dHlwZSA8IFlZTlRPS0VOUykK
KyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAidG9rZW4gJXMgKCIsIHl5dG5hbWVbeXl0eXBlXSk7
CisgIGVsc2UKKyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAibnRlcm0gJXMgKCIsIHl5dG5hbWVb
eXl0eXBlXSk7CisKKyAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5
eXZhbHVlcCwgcGFyc2VyKTsKKyAgWVlGUFJJTlRGICh5eW91dHB1dCwgIikiKTsKK30KKworLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0uCit8IHl5X3N0YWNrX3ByaW50IC0tIFByaW50IHRoZSBzdGF0ZSBzdGFjayBmcm9t
IGl0cyBCT1RUT00gdXAgdG8gaXRzIHwKK3wgVE9QIChpbmNsdWRlZCkuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorYC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNp
ZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBk
ZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgdm9pZAoreXlf
c3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkKKyNl
bHNlCitzdGF0aWMgdm9pZAoreXlfc3RhY2tfcHJpbnQgKGJvdHRvbSwgdG9wKQorICAgIHl5dHlw
ZV9pbnQxNiAqYm90dG9tOworICAgIHl5dHlwZV9pbnQxNiAqdG9wOworI2VuZGlmCit7CisgIFlZ
RlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7CisgIGZvciAoOyBib3R0b20gPD0gdG9wOyAr
K2JvdHRvbSkKKyAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsICpib3R0b20pOworICBZWUZQ
UklOVEYgKHN0ZGVyciwgIlxuIik7Cit9CisKKyMgZGVmaW5lIFlZX1NUQUNLX1BSSU5UKEJvdHRv
bSwgVG9wKQkJCQlcCitkbyB7CQkJCQkJCQlcCisgIGlmICh5eWRlYnVnKQkJCQkJCQlcCisgICAg
eXlfc3RhY2tfcHJpbnQgKChCb3R0b20pLCAoVG9wKSk7CQkJCVwKK30gd2hpbGUgKFlZSUQgKDAp
KQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LgorfCBSZXBvcnQgdGhhdCB0aGUgWVlSVUxFIGlzIGdvaW5nIHRvIGJlIHJlZHVjZWQuICB8Citg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lm
IChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRl
ZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eV9y
ZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBpbnQgeXlydWxlLCBQYXJzZXImIHBhcnNlcikK
KyNlbHNlCitzdGF0aWMgdm9pZAoreXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxlLCBwYXJz
ZXIpCisgICAgWVlTVFlQRSAqeXl2c3A7CisgICAgaW50IHl5cnVsZTsKKyAgICBQYXJzZXImIHBh
cnNlcjsKKyNlbmRpZgoreworICBpbnQgeXlucmhzID0geXlyMlt5eXJ1bGVdOworICBpbnQgeXlp
OworICB1bnNpZ25lZCBsb25nIGludCB5eWxubyA9IHl5cmxpbmVbeXlydWxlXTsKKyAgWVlGUFJJ
TlRGIChzdGRlcnIsICJSZWR1Y2luZyBzdGFjayBieSBydWxlICVkIChsaW5lICVsdSk6XG4iLAor
CSAgICAgeXlydWxlIC0gMSwgeXlsbm8pOworICAvKiBUaGUgc3ltYm9scyBiZWluZyByZWR1Y2Vk
LiAgKi8KKyAgZm9yICh5eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsrKQorICAgIHsKKyAgICAg
IGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOworICAgICAgeXlfc3ltYm9s
X3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlpXSwKKwkJICAgICAgICYo
eXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQorCQkgICAgICAgCQkgICAgICAgLCBwYXJzZXIp
OworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKyAgICB9Cit9CisKKyMgZGVmaW5lIFlZ
X1JFRFVDRV9QUklOVChSdWxlKQkJXAorZG8gewkJCQkJXAorICBpZiAoeXlkZWJ1ZykJCQkJXAor
ICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIFJ1bGUsIHBhcnNlcik7IFwKK30gd2hpbGUgKFlZ
SUQgKDApKQorCisvKiBOb256ZXJvIG1lYW5zIHByaW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVm
dCB1bmluaXRpYWxpemVkIHNvIHRoYXQKKyAgIG11bHRpcGxlIHBhcnNlcnMgY2FuIGNvZXhpc3Qu
ICAqLworaW50IHl5ZGVidWc7CisjZWxzZSAvKiAhWVlERUJVRyAqLworIyBkZWZpbmUgWVlEUFJJ
TlRGKEFyZ3MpCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUsIFR5cGUsIFZhbHVlLCBM
b2NhdGlvbikKKyMgZGVmaW5lIFlZX1NUQUNLX1BSSU5UKEJvdHRvbSwgVG9wKQorIyBkZWZpbmUg
WVlfUkVEVUNFX1BSSU5UKFJ1bGUpCisjZW5kaWYgLyogIVlZREVCVUcgKi8KKworCisvKiBZWUlO
SVRERVBUSCAtLSBpbml0aWFsIHNpemUgb2YgdGhlIHBhcnNlcidzIHN0YWNrcy4gICovCisjaWZu
ZGVmCVlZSU5JVERFUFRICisjIGRlZmluZSBZWUlOSVRERVBUSCAyMDAKKyNlbmRpZgorCisvKiBZ
WU1BWERFUFRIIC0tIG1heGltdW0gc2l6ZSB0aGUgc3RhY2tzIGNhbiBncm93IHRvIChlZmZlY3Rp
dmUgb25seQorICAgaWYgdGhlIGJ1aWx0LWluIHN0YWNrIGV4dGVuc2lvbiBtZXRob2QgaXMgdXNl
ZCkuCisKKyAgIERvIG5vdCBtYWtlIHRoaXMgdmFsdWUgdG9vIGxhcmdlOyB0aGUgcmVzdWx0cyBh
cmUgdW5kZWZpbmVkIGlmCisgICBZWVNUQUNLX0FMTE9DX01BWElNVU0gPCBZWVNUQUNLX0JZVEVT
IChZWU1BWERFUFRIKQorICAgZXZhbHVhdGVkIHdpdGggaW5maW5pdGUtcHJlY2lzaW9uIGludGVn
ZXIgYXJpdGhtZXRpYy4gICovCisKKyNpZm5kZWYgWVlNQVhERVBUSAorIyBkZWZpbmUgWVlNQVhE
RVBUSCAxMDAwMAorI2VuZGlmCisKKwwKKworI2lmIFlZRVJST1JfVkVSQk9TRQorCisjIGlmbmRl
ZiB5eXN0cmxlbgorIyAgaWYgZGVmaW5lZCBfX0dMSUJDX18gJiYgZGVmaW5lZCBfU1RSSU5HX0gK
KyMgICBkZWZpbmUgeXlzdHJsZW4gc3RybGVuCisjICBlbHNlCisvKiBSZXR1cm4gdGhlIGxlbmd0
aCBvZiBZWVNUUi4gICovCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9f
RlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVS
KQorc3RhdGljIFlZU0laRV9UCit5eXN0cmxlbiAoY29uc3QgY2hhciAqeXlzdHIpCisjZWxzZQor
c3RhdGljIFlZU0laRV9UCit5eXN0cmxlbiAoeXlzdHIpCisgICAgY29uc3QgY2hhciAqeXlzdHI7
CisjZW5kaWYKK3sKKyAgWVlTSVpFX1QgeXlsZW47CisgIGZvciAoeXlsZW4gPSAwOyB5eXN0clt5
eWxlbl07IHl5bGVuKyspCisgICAgY29udGludWU7CisgIHJldHVybiB5eWxlbjsKK30KKyMgIGVu
ZGlmCisjIGVuZGlmCisKKyMgaWZuZGVmIHl5c3RwY3B5CisjICBpZiBkZWZpbmVkIF9fR0xJQkNf
XyAmJiBkZWZpbmVkIF9TVFJJTkdfSCAmJiBkZWZpbmVkIF9HTlVfU09VUkNFCisjICAgZGVmaW5l
IHl5c3RwY3B5IHN0cGNweQorIyAgZWxzZQorLyogQ29weSBZWVNSQyB0byBZWURFU1QsIHJldHVy
bmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgdGVybWluYXRpbmcgJ1wwJyBpbgorICAgWVlERVNULiAg
Ki8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAg
ICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgY2hh
ciAqCit5eXN0cGNweSAoY2hhciAqeXlkZXN0LCBjb25zdCBjaGFyICp5eXNyYykKKyNlbHNlCitz
dGF0aWMgY2hhciAqCit5eXN0cGNweSAoeXlkZXN0LCB5eXNyYykKKyAgICBjaGFyICp5eWRlc3Q7
CisgICAgY29uc3QgY2hhciAqeXlzcmM7CisjZW5kaWYKK3sKKyAgY2hhciAqeXlkID0geXlkZXN0
OworICBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsKKworICB3aGlsZSAoKCp5eWQrKyA9ICp5eXMr
KykgIT0gJ1wwJykKKyAgICBjb250aW51ZTsKKworICByZXR1cm4geXlkIC0gMTsKK30KKyMgIGVu
ZGlmCisjIGVuZGlmCisKKyMgaWZuZGVmIHl5dG5hbWVycgorLyogQ29weSB0byBZWVJFUyB0aGUg
Y29udGVudHMgb2YgWVlTVFIgYWZ0ZXIgc3RyaXBwaW5nIGF3YXkgdW5uZWNlc3NhcnkKKyAgIHF1
b3RlcyBhbmQgYmFja3NsYXNoZXMsIHNvIHRoYXQgaXQncyBzdWl0YWJsZSBmb3IgeXllcnJvci4g
IFRoZQorICAgaGV1cmlzdGljIGlzIHRoYXQgZG91YmxlLXF1b3RpbmcgaXMgdW5uZWNlc3Nhcnkg
dW5sZXNzIHRoZSBzdHJpbmcKKyAgIGNvbnRhaW5zIGFuIGFwb3N0cm9waGUsIGEgY29tbWEsIG9y
IGJhY2tzbGFzaCAob3RoZXIgdGhhbgorICAgYmFja3NsYXNoLWJhY2tzbGFzaCkuICBZWVNUUiBp
cyB0YWtlbiBmcm9tIHl5dG5hbWUuICBJZiBZWVJFUyBpcworICAgbnVsbCwgZG8gbm90IGNvcHk7
IGluc3RlYWQsIHJldHVybiB0aGUgbGVuZ3RoIG9mIHdoYXQgdGhlIHJlc3VsdAorICAgd291bGQg
aGF2ZSBiZWVuLiAgKi8KK3N0YXRpYyBZWVNJWkVfVAoreXl0bmFtZXJyIChjaGFyICp5eXJlcywg
Y29uc3QgY2hhciAqeXlzdHIpCit7CisgIGlmICgqeXlzdHIgPT0gJyInKQorICAgIHsKKyAgICAg
IFlZU0laRV9UIHl5biA9IDA7CisgICAgICBjaGFyIGNvbnN0ICp5eXAgPSB5eXN0cjsKKworICAg
ICAgZm9yICg7OykKKwlzd2l0Y2ggKCorK3l5cCkKKwkgIHsKKwkgIGNhc2UgJ1wnJzoKKwkgIGNh
c2UgJywnOgorCSAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CisKKwkgIGNhc2UgJ1xcJzoK
KwkgICAgaWYgKCorK3l5cCAhPSAnXFwnKQorCSAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3Rl
czsKKwkgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKwkgIGRlZmF1bHQ6CisJICAgIGlmICh5eXJl
cykKKwkgICAgICB5eXJlc1t5eW5dID0gKnl5cDsKKwkgICAgeXluKys7CisJICAgIGJyZWFrOwor
CisJICBjYXNlICciJzoKKwkgICAgaWYgKHl5cmVzKQorCSAgICAgIHl5cmVzW3l5bl0gPSAnXDAn
OworCSAgICByZXR1cm4geXluOworCSAgfQorICAgIGRvX25vdF9zdHJpcF9xdW90ZXM6IDsKKyAg
ICB9CisKKyAgaWYgKCEgeXlyZXMpCisgICAgcmV0dXJuIHl5c3RybGVuICh5eXN0cik7CisKKyAg
cmV0dXJuIHl5c3RwY3B5ICh5eXJlcywgeXlzdHIpIC0geXlyZXM7Cit9CisjIGVuZGlmCisKKy8q
IENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSB1bmV4cGVjdGVk
IHRva2VuCisgICBZWUNIQVIgd2hpbGUgaW4gc3RhdGUgWVlTVEFURS4gIFJldHVybiB0aGUgbnVt
YmVyIG9mIGJ5dGVzIGNvcGllZCwKKyAgIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcgbnVsbCBi
eXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8gbm90CisgICBjb3B5IGFueXRoaW5nOyBqdXN0
IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQgYmUKKyAgIGNvcGllZC4gIEFz
IGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBhbiBvcmRpbmFyeSAic3ludGF4IGVycm9yIgor
ICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92ZXJmbG93IG9j
Y3VycyBkdXJpbmcKKyAgIHNpemUgY2FsY3VsYXRpb24uICAqLworc3RhdGljIFlZU0laRV9UCit5
eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQsIGludCB5eXN0YXRlLCBpbnQgeXljaGFyKQor
eworICBpbnQgeXluID0geXlwYWN0W3l5c3RhdGVdOworCisgIGlmICghIChZWVBBQ1RfTklORiA8
IHl5biAmJiB5eW4gPD0gWVlMQVNUKSkKKyAgICByZXR1cm4gMDsKKyAgZWxzZQorICAgIHsKKyAg
ICAgIGludCB5eXR5cGUgPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIFlZU0laRV9UIHl5
c2l6ZTAgPSB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl0eXBlXSk7CisgICAgICBZWVNJWkVfVCB5
eXNpemUgPSB5eXNpemUwOworICAgICAgWVlTSVpFX1QgeXlzaXplMTsKKyAgICAgIGludCB5eXNp
emVfb3ZlcmZsb3cgPSAwOworICAgICAgZW51bSB7IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElN
VU0gPSA1IH07CisgICAgICBjaGFyIGNvbnN0ICp5eWFyZ1tZWUVSUk9SX1ZFUkJPU0VfQVJHU19N
QVhJTVVNXTsKKyAgICAgIGludCB5eXg7CisKKyMgaWYgMAorICAgICAgLyogVGhpcyBpcyBzbyB4
Z2V0dGV4dCBzZWVzIHRoZSB0cmFuc2xhdGFibGUgZm9ybWF0cyB0aGF0IGFyZQorCSBjb25zdHJ1
Y3RlZCBvbiB0aGUgZmx5LiAgKi8KKyAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVk
ICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5n
ICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5n
ICVzIG9yICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhw
ZWN0aW5nICVzIG9yICVzIG9yICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBl
Y3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIG9yICVzIik7CisjIGVuZGlmCisgICAg
ICBjaGFyICp5eWZtdDsKKyAgICAgIGNoYXIgY29uc3QgKnl5ZjsKKyAgICAgIHN0YXRpYyBjaGFy
IGNvbnN0IHl5dW5leHBlY3RlZFtdID0gInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcyI7Cisg
ICAgICBzdGF0aWMgY2hhciBjb25zdCB5eWV4cGVjdGluZ1tdID0gIiwgZXhwZWN0aW5nICVzIjsK
KyAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5b3JbXSA9ICIgb3IgJXMiOworICAgICAgY2hhciB5
eWZvcm1hdFtzaXplb2YgeXl1bmV4cGVjdGVkCisJCSAgICArIHNpemVvZiB5eWV4cGVjdGluZyAt
IDEKKwkJICAgICsgKChZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNIC0gMikKKwkJICAgICAg
ICogKHNpemVvZiB5eW9yIC0gMSkpXTsKKyAgICAgIGNoYXIgY29uc3QgKnl5cHJlZml4ID0geXll
eHBlY3Rpbmc7CisKKyAgICAgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRvIGF2
b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KKwkgWVlDSEVDSy4gICovCisgICAgICBpbnQgeXl4YmVn
aW4gPSB5eW4gPCAwID8gLXl5biA6IDA7CisKKyAgICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBv
ZiBib3RoIHl5Y2hlY2sgYW5kIHl5dG5hbWUuICAqLworICAgICAgaW50IHl5Y2hlY2tsaW0gPSBZ
WUxBU1QgLSB5eW4gKyAxOworICAgICAgaW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tF
TlMgPyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOworICAgICAgaW50IHl5Y291bnQgPSAxOworCisg
ICAgICB5eWFyZ1swXSA9IHl5dG5hbWVbeXl0eXBlXTsKKyAgICAgIHl5Zm10ID0geXlzdHBjcHkg
KHl5Zm9ybWF0LCB5eXVuZXhwZWN0ZWQpOworCisgICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5
eXggPCB5eXhlbmQ7ICsreXl4KQorCWlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4ICYmIHl5
eCAhPSBZWVRFUlJPUikKKwkgIHsKKwkgICAgaWYgKHl5Y291bnQgPT0gWVlFUlJPUl9WRVJCT1NF
X0FSR1NfTUFYSU1VTSkKKwkgICAgICB7CisJCXl5Y291bnQgPSAxOworCQl5eXNpemUgPSB5eXNp
emUwOworCQl5eWZvcm1hdFtzaXplb2YgeXl1bmV4cGVjdGVkIC0gMV0gPSAnXDAnOworCQlicmVh
azsKKwkgICAgICB9CisJICAgIHl5YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5eF07CisJICAg
IHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl4XSk7CisJICAgIHl5
c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7CisJICAgIHl5c2l6ZSA9IHl5c2l6
ZTE7CisJICAgIHl5Zm10ID0geXlzdHBjcHkgKHl5Zm10LCB5eXByZWZpeCk7CisJICAgIHl5cHJl
Zml4ID0geXlvcjsKKwkgIH0KKworICAgICAgeXlmID0gWVlfKHl5Zm9ybWF0KTsKKyAgICAgIHl5
c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmKTsKKyAgICAgIHl5c2l6ZV9vdmVyZmxvdyB8
PSAoeXlzaXplMSA8IHl5c2l6ZSk7CisgICAgICB5eXNpemUgPSB5eXNpemUxOworCisgICAgICBp
ZiAoeXlzaXplX292ZXJmbG93KQorCXJldHVybiBZWVNJWkVfTUFYSU1VTTsKKworICAgICAgaWYg
KHl5cmVzdWx0KQorCXsKKwkgIC8qIEF2b2lkIHNwcmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9u
IHRoZSB1c2VyJ3MgbmFtZSBzcGFjZS4KKwkgICAgIERvbid0IGhhdmUgdW5kZWZpbmVkIGJlaGF2
aW9yIGV2ZW4gaWYgdGhlIHRyYW5zbGF0aW9uCisJICAgICBwcm9kdWNlZCBhIHN0cmluZyB3aXRo
IHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAqLworCSAgY2hhciAqeXlwID0geXlyZXN1bHQ7
CisJICBpbnQgeXlpID0gMDsKKwkgIHdoaWxlICgoKnl5cCA9ICp5eWYpICE9ICdcMCcpCisJICAg
IHsKKwkgICAgICBpZiAoKnl5cCA9PSAnJScgJiYgeXlmWzFdID09ICdzJyAmJiB5eWkgPCB5eWNv
dW50KQorCQl7CisJCSAgeXlwICs9IHl5dG5hbWVyciAoeXlwLCB5eWFyZ1t5eWkrK10pOworCQkg
IHl5ZiArPSAyOworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgeXlwKys7CisJCSAgeXlmKys7
CisJCX0KKwkgICAgfQorCX0KKyAgICAgIHJldHVybiB5eXNpemU7CisgICAgfQorfQorI2VuZGlm
IC8qIFlZRVJST1JfVkVSQk9TRSAqLworDAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCBSZWxlYXNlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB0
byB0aGlzIHN5bWJvbC4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCisKKy8qQVJHU1VTRUQqLworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRl
ZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVm
aW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1z
ZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFBhcnNlciYgcGFyc2VyKQorI2Vsc2UK
K3N0YXRpYyB2b2lkCit5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgcGFyc2Vy
KQorICAgIGNvbnN0IGNoYXIgKnl5bXNnOworICAgIGludCB5eXR5cGU7CisgICAgWVlTVFlQRSAq
eXl2YWx1ZXA7CisgICAgUGFyc2VyJiBwYXJzZXI7CisjZW5kaWYKK3sKKyAgWVlVU0UgKHl5dmFs
dWVwKTsKKyAgWVlVU0UgKHBhcnNlcik7CisKKyAgaWYgKCF5eW1zZykKKyAgICB5eW1zZyA9ICJE
ZWxldGluZyI7CisgIFlZX1NZTUJPTF9QUklOVCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIHl5
bG9jYXRpb25wKTsKKworICBzd2l0Y2ggKHl5dHlwZSkKKyAgICB7CisgICAgICBjYXNlIDEwOiAv
KiAiRlVOQ1RJT05OQU1FIiAqLworI2xpbmUgODAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55
IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVwLT5zdHJpbmcpLT5kZXJlZigp
OyB9OworI2xpbmUgMTIwNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2Fz
ZSAxMTogLyogIkxJVEVSQUwiICovCisjbGluZSA4MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFy
LnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJpbmcpKSAoeXl2YWx1ZXAtPnN0cmluZyktPmRlcmVm
KCk7IH07CisjbGluZSAxMjEwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBj
YXNlIDEyOiAvKiAiTkFNRVRFU1QiICovCisjbGluZSA4MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJpbmcpKSAoeXl2YWx1ZXAtPnN0cmluZyktPmRl
cmVmKCk7IH07CisjbGluZSAxMjE1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAg
ICBjYXNlIDEzOiAvKiAiTlVNQkVSIiAqLworI2xpbmUgODAgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVwLT5zdHJpbmcpLT5k
ZXJlZigpOyB9OworI2xpbmUgMTIyMCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAg
ICAgY2FzZSAxNDogLyogIk5PREVUWVBFIiAqLworI2xpbmUgODAgIldlYkNvcmUveG1sL1hQYXRo
R3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVwLT5zdHJpbmcp
LT5kZXJlZigpOyB9OworI2xpbmUgMTIyNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOwor
ICAgICAgY2FzZSAxNTogLyogIlZBUklBQkxFUkVGRVJFTkNFIiAqLworI2xpbmUgODAgIldlYkNv
cmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFs
dWVwLT5zdHJpbmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIzMCAiLi9YUGF0aEdyYW1tYXIuY3Bw
IgorCWJyZWFrOworICAgICAgY2FzZSAzNTogLyogIkV4cHIiICovCisjbGluZSAxMDAgIldlYkNv
cmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7
IH07CisjbGluZSAxMjM1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNl
IDM2OiAvKiAiTG9jYXRpb25QYXRoIiAqLworI2xpbmUgODggIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+bG9jYXRpb25QYXRoKTsgfTsKKyNsaW5lIDEy
NDAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgMzc6IC8qICJBYnNv
bHV0ZUxvY2F0aW9uUGF0aCIgKi8KKyNsaW5lIDg4ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmxvY2F0aW9uUGF0aCk7IH07CisjbGluZSAxMjQ1ICIu
L1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDM4OiAvKiAiUmVsYXRpdmVM
b2NhdGlvblBhdGgiICovCisjbGluZSA4OCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJ
eyBkZWxldGUgKHl5dmFsdWVwLT5sb2NhdGlvblBhdGgpOyB9OworI2xpbmUgMTI1MCAiLi9YUGF0
aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSAzOTogLyogIlN0ZXAiICovCisjbGlu
ZSA5NyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5z
dGVwKTsgfTsKKyNsaW5lIDEyNTUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAg
IGNhc2UgNDE6IC8qICJOb2RlVGVzdCIgKi8KKyNsaW5lIDkxICJXZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPm5vZGVUZXN0KTsgfTsKKyNsaW5lIDEyNjAg
Ii4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDI6IC8qICJPcHRpb25h
bFByZWRpY2F0ZUxpc3QiICovCisjbGluZSA5NCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnki
CisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uVmVjdG9yKTsgfTsKKyNsaW5lIDEyNjUg
Ii4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDM6IC8qICJQcmVkaWNh
dGVMaXN0IiAqLworI2xpbmUgOTQgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVs
ZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvblZlY3Rvcik7IH07CisjbGluZSAxMjcwICIuL1hQYXRo
R3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDQ0OiAvKiAiUHJlZGljYXRlIiAqLwor
I2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1
ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTI3NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJy
ZWFrOworICAgICAgY2FzZSA0NTogLyogIkRlc2NlbmRhbnRPclNlbGYiICovCisjbGluZSA5NyAi
V2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5zdGVwKTsg
fTsKKyNsaW5lIDEyODAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2Ug
NDY6IC8qICJBYmJyZXZpYXRlZFN0ZXAiICovCisjbGluZSA5NyAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5zdGVwKTsgfTsKKyNsaW5lIDEyODUgIi4v
WFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDc6IC8qICJQcmltYXJ5RXhw
ciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUg
KHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEyOTAgIi4vWFBhdGhHcmFtbWFyLmNw
cCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDg6IC8qICJGdW5jdGlvbkNhbGwiICovCisjbGluZSAx
MDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhw
cmVzc2lvbik7IH07CisjbGluZSAxMjk1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7Cisg
ICAgICBjYXNlIDQ5OiAvKiAiQXJndW1lbnRMaXN0IiAqLworI2xpbmUgOTQgIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvblZlY3Rvcik7
IH07CisjbGluZSAxMzAwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNl
IDUwOiAvKiAiQXJndW1lbnQiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1h
ci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzA1ICIu
L1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDUxOiAvKiAiVW5pb25FeHBy
IiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAo
eXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTMxMCAiLi9YUGF0aEdyYW1tYXIuY3Bw
IgorCWJyZWFrOworICAgICAgY2FzZSA1MjogLyogIlBhdGhFeHByIiAqLworI2xpbmUgMTAwICJX
ZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Np
b24pOyB9OworI2xpbmUgMTMxNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAg
Y2FzZSA1MzogLyogIkZpbHRlckV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRo
R3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAx
MzIwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDU0OiAvKiAiT3JF
eHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0
ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTMyNSAiLi9YUGF0aEdyYW1tYXIu
Y3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1NTogLyogIkFuZEV4cHIiICovCisjbGluZSAxMDAg
IldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVz
c2lvbik7IH07CisjbGluZSAxMzMwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAg
ICBjYXNlIDU2OiAvKiAiRXF1YWxpdHlFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9Y
UGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xp
bmUgMTMzNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1NzogLyog
IlJlbGF0aW9uYWxFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTM0MCAiLi9Y
UGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1ODogLyogIkFkZGl0aXZlRXhw
ciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUg
KHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEzNDUgIi4vWFBhdGhHcmFtbWFyLmNw
cCIKKwlicmVhazsKKyAgICAgIGNhc2UgNTk6IC8qICJNdWx0aXBsaWNhdGl2ZUV4cHIiICovCisj
bGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVl
cC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzUwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJl
YWs7CisgICAgICBjYXNlIDYwOiAvKiAiVW5hcnlFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3Jl
L3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9
OworI2xpbmUgMTM1NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworCisgICAgICBkZWZh
dWx0OgorCWJyZWFrOworICAgIH0KK30KKwwKKworLyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1X
bWlzc2luZy1wcm90b3R5cGVzLiAgKi8KKworI2lmZGVmIFlZUEFSU0VfUEFSQU0KKyNpZiBkZWZp
bmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlICh2b2lkICpZ
WVBBUlNFX1BBUkFNKTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2Vsc2UgLyog
ISBZWVBBUlNFX1BBUkFNICovCisjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3Bs
dXNwbHVzCitpbnQgeXlwYXJzZSAoUGFyc2VyJiBwYXJzZXIpOworI2Vsc2UKK2ludCB5eXBhcnNl
ICgpOworI2VuZGlmCisjZW5kaWYgLyogISBZWVBBUlNFX1BBUkFNICovCisKKworCisKKworCisv
Ki0tLS0tLS0tLS0uCit8IHl5cGFyc2UuICB8CitgLS0tLS0tLS0tLSovCisKKyNpZmRlZiBZWVBB
UlNFX1BBUkFNCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQoraW50
Cit5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKQorI2Vsc2UKK2ludAoreXlwYXJzZSAoWVlQ
QVJTRV9QQVJBTSkKKyAgICB2b2lkICpZWVBBUlNFX1BBUkFNOworI2VuZGlmCisjZWxzZSAvKiAh
IFlZUEFSU0VfUEFSQU0gKi8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5
X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19W
RVIpCitpbnQKK3l5cGFyc2UgKFBhcnNlciYgcGFyc2VyKQorI2Vsc2UKK2ludAoreXlwYXJzZSAo
cGFyc2VyKQorICAgIFBhcnNlciYgcGFyc2VyOworI2VuZGlmCisjZW5kaWYKK3sKKyAgLyogVGhl
IGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KK2ludCB5eWNoYXI7CisKKy8qIFRoZSBzZW1hbnRpYyB2
YWx1ZSBvZiB0aGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworWVlTVFlQRSB5eWx2YWw7CisKKy8q
IE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCitpbnQgeXluZXJyczsKKworICBp
bnQgeXlzdGF0ZTsKKyAgaW50IHl5bjsKKyAgaW50IHl5cmVzdWx0OworICAvKiBOdW1iZXIgb2Yg
dG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgaW50
IHl5ZXJyc3RhdHVzOworICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFu
c2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLworICBpbnQgeXl0b2tlbiA9IDA7CisjaWYgWVlFUlJP
Ul9WRVJCT1NFCisgIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2Nh
dGVkIHNpemUuICAqLworICBjaGFyIHl5bXNnYnVmWzEyOF07CisgIGNoYXIgKnl5bXNnID0geXlt
c2didWY7CisgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOworI2VuZGlm
CisKKyAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKKyAgICAgYHl5c3MnOiByZWxh
dGVkIHRvIHN0YXRlcywKKyAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywK
KyAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KKworICAgICBSZWZlciB0byB0aGUg
c3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAg
dG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgLyogVGhlIHN0YXRlIHN0YWNr
LiAgKi8KKyAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgeXl0eXBlX2ludDE2
ICp5eXNzID0geXlzc2E7CisgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgLyogVGhlIHNlbWFu
dGljIHZhbHVlIHN0YWNrLiAgKi8KKyAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07CisgIFlZ
U1RZUEUgKnl5dnMgPSB5eXZzYTsKKyAgWVlTVFlQRSAqeXl2c3A7CisKKworCisjZGVmaW5lIFlZ
UE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTikpCisKKyAgWVlTSVpFX1Qg
eXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKKworICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8g
cmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQorICAgICBhY3Rpb24g
cm91dGluZXMuICAqLworICBZWVNUWVBFIHl5dmFsOworCisKKyAgLyogVGhlIG51bWJlciBvZiBz
eW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4KKyAgICAgS2VlcCB0byB6ZXJv
IHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQuICAqLworICBpbnQgeXlsZW4gPSAwOwor
CisgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7CisKKyAgeXlzdGF0
ZSA9IDA7CisgIHl5ZXJyc3RhdHVzID0gMDsKKyAgeXluZXJycyA9IDA7CisgIHl5Y2hhciA9IFlZ
RU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLworCisgIC8qIEluaXRpYWxp
emUgc3RhY2sgcG9pbnRlcnMuCisgICAgIFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVlIGFuZCBs
b2NhdGlvbiBzdGFjaworICAgICBzbyB0aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZlbCBh
cyB0aGUgc3RhdGUgc3RhY2suCisgICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGlu
aXRpYWxpemVkLiAgKi8KKworICB5eXNzcCA9IHl5c3M7CisgIHl5dnNwID0geXl2czsKKworICBn
b3RvIHl5c2V0c3RhdGU7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eW5ld3N0YXRlIC0tIFB1c2ggYSBuZXcgc3Rh
dGUsIHdoaWNoIGlzIGZvdW5kIGluIHl5c3RhdGUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyB5eW5ld3N0YXRlOgor
ICAvKiBJbiBhbGwgY2FzZXMsIHdoZW4geW91IGdldCBoZXJlLCB0aGUgdmFsdWUgYW5kIGxvY2F0
aW9uIHN0YWNrcworICAgICBoYXZlIGp1c3QgYmVlbiBwdXNoZWQuICBTbyBwdXNoaW5nIGEgc3Rh
dGUgaGVyZSBldmVucyB0aGUgc3RhY2tzLiAgKi8KKyAgeXlzc3ArKzsKKworIHl5c2V0c3RhdGU6
CisgICp5eXNzcCA9IHl5c3RhdGU7CisKKyAgaWYgKHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEgPD0g
eXlzc3ApCisgICAgeworICAgICAgLyogR2V0IHRoZSBjdXJyZW50IHVzZWQgc2l6ZSBvZiB0aGUg
dGhyZWUgc3RhY2tzLCBpbiBlbGVtZW50cy4gICovCisgICAgICBZWVNJWkVfVCB5eXNpemUgPSB5
eXNzcCAtIHl5c3MgKyAxOworCisjaWZkZWYgeXlvdmVyZmxvdworICAgICAgeworCS8qIEdpdmUg
dXNlciBhIGNoYW5jZSB0byByZWFsbG9jYXRlIHRoZSBzdGFjay4gIFVzZSBjb3BpZXMgb2YKKwkg
ICB0aGVzZSBzbyB0aGF0IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCisJ
ICAgbWVtb3J5LiAgKi8KKwlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CisJeXl0eXBlX2ludDE2ICp5
eXNzMSA9IHl5c3M7CisKKworCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxv
d2VkIGJ5IHRoZSBzaXplIG9mIHRoZQorCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGlu
IGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKKwkgICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0
aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0CisJICAgYmUgdW5kZWZpbmVkIGlmIHl5
b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCisJeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVz
dGVkIiksCisJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKKwkJICAgICZ5
eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAorCisJCSAgICAmeXlzdGFja3NpemUpOwor
CisJeXlzcyA9IHl5c3MxOworCXl5dnMgPSB5eXZzMTsKKyAgICAgIH0KKyNlbHNlIC8qIG5vIHl5
b3ZlcmZsb3cgKi8KKyMgaWZuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKKyAgICAgIGdvdG8geXlleGhh
dXN0ZWRsYWI7CisjIGVsc2UKKyAgICAgIC8qIEV4dGVuZCB0aGUgc3RhY2sgb3VyIG93biB3YXku
ICAqLworICAgICAgaWYgKFlZTUFYREVQVEggPD0geXlzdGFja3NpemUpCisJZ290byB5eWV4aGF1
c3RlZGxhYjsKKyAgICAgIHl5c3RhY2tzaXplICo9IDI7CisgICAgICBpZiAoWVlNQVhERVBUSCA8
IHl5c3RhY2tzaXplKQorCXl5c3RhY2tzaXplID0gWVlNQVhERVBUSDsKKworICAgICAgeworCXl5
dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOworCXVuaW9uIHl5YWxsb2MgKnl5cHRyID0KKwkgICh1
bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXpl
KSk7CisJaWYgKCEgeXlwdHIpCisJICBnb3RvIHl5ZXhoYXVzdGVkbGFiOworCVlZU1RBQ0tfUkVM
T0NBVEUgKHl5c3MpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOworCisjICB1bmRlZiBZWVNU
QUNLX1JFTE9DQVRFCisJaWYgKHl5c3MxICE9IHl5c3NhKQorCSAgWVlTVEFDS19GUkVFICh5eXNz
MSk7CisgICAgICB9CisjIGVuZGlmCisjZW5kaWYgLyogbm8geXlvdmVyZmxvdyAqLworCisgICAg
ICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOworICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXpl
IC0gMTsKKworCisgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNl
ZCB0byAlbHVcbiIsCisJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOworCisg
ICAgICBpZiAoeXlzcyArIHl5c3RhY2tzaXplIC0gMSA8PSB5eXNzcCkKKwlZWUFCT1JUOworICAg
IH0KKworICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0
ZSkpOworCisgIGdvdG8geXliYWNrdXA7CisKKy8qLS0tLS0tLS0tLS0uCit8IHl5YmFja3VwLiAg
fAorYC0tLS0tLS0tLS0tKi8KK3l5YmFja3VwOgorCisgIC8qIERvIGFwcHJvcHJpYXRlIHByb2Nl
c3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUuICBSZWFkIGEKKyAgICAgbG9vay1haGVhZCB0
b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisKKyAg
LyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxv
b2stYWhlYWQgdG9rZW4uICAqLworICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07CisgIGlmICh5eW4g
PT0gWVlQQUNUX05JTkYpCisgICAgZ290byB5eWRlZmF1bHQ7CisKKyAgLyogTm90IGtub3duID0+
IGdldCBhIGxvb2stYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisK
KyAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9vay1h
aGVhZCBzeW1ib2wuICAqLworICBpZiAoeXljaGFyID09IFlZRU1QVFkpCisgICAgeworICAgICAg
WVlEUFJJTlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CisgICAgICB5eWNoYXIg
PSBZWUxFWDsKKyAgICB9CisKKyAgaWYgKHl5Y2hhciA8PSBZWUVPRikKKyAgICB7CisgICAgICB5
eWNoYXIgPSB5eXRva2VuID0gWVlFT0Y7CisgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJOb3cg
YXQgZW5kIG9mIGlucHV0LlxuIikpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHl5dG9r
ZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIFlZX1NZTUJPTF9QUklOVCAoIk5leHQg
dG9rZW4gaXMiLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKKyAgICB9CisKKyAgLyogSWYg
dGhlIHByb3BlciBhY3Rpb24gb24gc2VlaW5nIHRva2VuIFlZVE9LRU4gaXMgdG8gcmVkdWNlIG9y
IHRvCisgICAgIGRldGVjdCBhbiBlcnJvciwgdGFrZSB0aGF0IGFjdGlvbi4gICovCisgIHl5biAr
PSB5eXRva2VuOworICBpZiAoeXluIDwgMCB8fCBZWUxBU1QgPCB5eW4gfHwgeXljaGVja1t5eW5d
ICE9IHl5dG9rZW4pCisgICAgZ290byB5eWRlZmF1bHQ7CisgIHl5biA9IHl5dGFibGVbeXluXTsK
KyAgaWYgKHl5biA8PSAwKQorICAgIHsKKyAgICAgIGlmICh5eW4gPT0gMCB8fCB5eW4gPT0gWVlU
QUJMRV9OSU5GKQorCWdvdG8geXllcnJsYWI7CisgICAgICB5eW4gPSAteXluOworICAgICAgZ290
byB5eXJlZHVjZTsKKyAgICB9CisKKyAgaWYgKHl5biA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBU
OworCisgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwg
dHVybiBvZmYgZXJyb3IKKyAgICAgc3RhdHVzLiAgKi8KKyAgaWYgKHl5ZXJyc3RhdHVzKQorICAg
IHl5ZXJyc3RhdHVzLS07CisKKyAgLyogU2hpZnQgdGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLwor
ICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2Mp
OworCisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4gdW5sZXNzIGl0IGlzIGVvZi4gICov
CisgIGlmICh5eWNoYXIgIT0gWVlFT0YpCisgICAgeXljaGFyID0gWVlFTVBUWTsKKworICB5eXN0
YXRlID0geXluOworICAqKyt5eXZzcCA9IHl5bHZhbDsKKworICBnb3RvIHl5bmV3c3RhdGU7CisK
KworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS4KK3wgeXlkZWZhdWx0IC0tIGRvIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIGN1
cnJlbnQgc3RhdGUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlkZWZhdWx0OgorICB5eW4gPSB5eWRlZmFjdFt5eXN0
YXRlXTsKKyAgaWYgKHl5biA9PSAwKQorICAgIGdvdG8geXllcnJsYWI7CisgIGdvdG8geXlyZWR1
Y2U7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlyZWR1Y2UgLS0g
RG8gYSByZWR1Y3Rpb24uICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXly
ZWR1Y2U6CisgIC8qIHl5biBpcyB0aGUgbnVtYmVyIG9mIGEgcnVsZSB0byByZWR1Y2Ugd2l0aC4g
ICovCisgIHl5bGVuID0geXlyMlt5eW5dOworCisgIC8qIElmIFlZTEVOIGlzIG5vbnplcm8sIGlt
cGxlbWVudCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgYWN0aW9uOgorICAgICBgJCQgPSAkMScu
CisKKyAgICAgT3RoZXJ3aXNlLCB0aGUgZm9sbG93aW5nIGxpbmUgc2V0cyBZWVZBTCB0byBnYXJi
YWdlLgorICAgICBUaGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1lbnRlZCBhbmQgQmlzb24KKyAgICAg
dXNlcnMgc2hvdWxkIG5vdCByZWx5IHVwb24gaXQuICBBc3NpZ25pbmcgdG8gWVlWQUwKKyAgICAg
dW5jb25kaXRpb25hbGx5IG1ha2VzIHRoZSBwYXJzZXIgYSBiaXQgc21hbGxlciwgYW5kIGl0IGF2
b2lkcyBhCisgICAgIEdDQyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFs
aXplZC4gICovCisgIHl5dmFsID0geXl2c3BbMS15eWxlbl07CisKKworICBZWV9SRURVQ0VfUFJJ
TlQgKHl5bik7CisgIHN3aXRjaCAoeXluKQorICAgIHsKKyAgICAgICAgY2FzZSAyOgorI2xpbmUg
MTE1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIHBhcnNlci5z
ZXRQYXJzZVJlc3VsdChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgx
KV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNDoKKyNsaW5l
IDEyNiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwu
bG9jYXRpb25QYXRoKSA9ICh5eXZzcFsoMSkgLSAoMSldLmxvY2F0aW9uUGF0aCk7CisgICAgICAg
ICh5eXZhbC5sb2NhdGlvblBhdGgpLT5zZXRBYnNvbHV0ZSgpOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSA2OgorI2xpbmUgMTM2ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAg
ICB7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpID0gbmV3IExvY2F0aW9uUGF0aDsKKyAg
ICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNzoKKyNsaW5lIDE0MSAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKSA9ICh5eXZz
cFsoMikgLSAoMildLmxvY2F0aW9uUGF0aCk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNl
IDg6CisjbGluZSAxNDYgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAg
ICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAoeXl2c3BbKDIpIC0gKDIpXS5sb2NhdGlvblBhdGgp
OworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+cHJlcGVuZFN0ZXAoc3RkOjp1bmlxdWVf
cHRyPFN0ZXA+KCh5eXZzcFsoMSkgLSAoMildLnN0ZXApKSk7CisgICAgO30KKyAgICBicmVhazsK
KworICBjYXNlIDk6CisjbGluZSAxNTQgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAg
IHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSBuZXcgTG9jYXRpb25QYXRoOworICAg
ICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+YXBwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3Rl
cD4oKHl5dnNwWygxKSAtICgxKV0uc3RlcCkpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNh
c2UgMTA6CisjbGluZSAxNjAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAg
ICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAoeXl2c3BbKDEpIC0gKDMpXS5sb2NhdGlvblBh
dGgpOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+YXBwZW5kU3RlcChzdGQ6OnVuaXF1
ZV9wdHI8U3RlcD4oKHl5dnNwWygzKSAtICgzKV0uc3RlcCkpKTsKKyAgICA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgMTE6CisjbGluZSAxNjYgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
ICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAoeXl2c3BbKDEpIC0gKDMpXS5s
b2NhdGlvblBhdGgpOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+YXBwZW5kU3RlcChz
dGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygyKSAtICgzKV0uc3RlcCkpKTsKKyAgICAgICAg
KHl5dmFsLmxvY2F0aW9uUGF0aCktPmFwcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+KCh5
eXZzcFsoMykgLSAoMyldLnN0ZXApKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDEy
OgorI2xpbmUgMTc1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxTdGVwOjpOb2RlVGVzdD4gbm9kZVRlc3QoKHl5dnNwWygxKSAtICgy
KV0ubm9kZVRlc3QpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNhdGVMaXN0KCh5eXZzcFsoMikgLSAoMildLmV4cHJl
c3Npb25WZWN0b3IpKTsKKyAgICAgICAgaWYgKHByZWRpY2F0ZUxpc3QpCisgICAgICAgICAgICAo
eXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpDaGlsZEF4aXMsIFdURk1vdmUoKm5vZGVUZXN0
KSwgV1RGTW92ZSgqcHJlZGljYXRlTGlzdCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAo
eXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpDaGlsZEF4aXMsIFdURk1vdmUoKm5vZGVUZXN0
KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDEzOgorI2xpbmUgMTg1ICJXZWJDb3Jl
L3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmluZyBuYW1ldGVzdCA9IGFk
b3B0UmVmKCh5eXZzcFsoMSkgLSAoMildLnN0cmluZykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0ZUxpc3QoKHl5
dnNwWygyKSAtICgyKV0uZXhwcmVzc2lvblZlY3RvcikpOworCisgICAgICAgIFN0cmluZyBsb2Nh
bE5hbWU7CisgICAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkk7CisgICAgICAgIGlmICghcGFyc2Vy
LmV4cGFuZFF1YWxpZmllZE5hbWUobmFtZXRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSkg
eworICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFlZQUJP
UlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJlZGljYXRlTGlzdCkKKyAgICAgICAgICAg
ICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKFN0ZXA6OkNoaWxkQXhpcywgU3RlcDo6Tm9kZVRlc3Qo
U3RlcDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSksIFdURk1v
dmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKHl5dmFsLnN0
ZXApID0gbmV3IFN0ZXAoU3RlcDo6Q2hpbGRBeGlzLCBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2Rl
VGVzdDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSk7CisgICAgO30KKyAgICBi
cmVhazsKKworICBjYXNlIDE0OgorI2xpbmUgMjAzICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGVwOjpOb2RlVGVzdD4gbm9kZVRl
c3QoKHl5dnNwWygyKSAtICgzKV0ubm9kZVRlc3QpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNhdGVMaXN0KCh5eXZz
cFsoMykgLSAoMyldLmV4cHJlc3Npb25WZWN0b3IpKTsKKworICAgICAgICBpZiAocHJlZGljYXRl
TGlzdCkKKyAgICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKCh5eXZzcFsoMSkgLSAo
MyldLmF4aXMpLCBXVEZNb3ZlKCpub2RlVGVzdCksIFdURk1vdmUoKnByZWRpY2F0ZUxpc3QpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAoKHl5dnNw
WygxKSAtICgzKV0uYXhpcyksIFdURk1vdmUoKm5vZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVh
azsKKworICBjYXNlIDE1OgorI2xpbmUgMjE0ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIK
KyAgICB7CisgICAgICAgIFN0cmluZyBuYW1ldGVzdCA9IGFkb3B0UmVmKCh5eXZzcFsoMikgLSAo
MyldLnN0cmluZykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0ZUxpc3QoKHl5dnNwWygzKSAtICgzKV0uZXhwcmVz
c2lvblZlY3RvcikpOworCisgICAgICAgIFN0cmluZyBsb2NhbE5hbWU7CisgICAgICAgIFN0cmlu
ZyBuYW1lc3BhY2VVUkk7CisgICAgICAgIGlmICghcGFyc2VyLmV4cGFuZFF1YWxpZmllZE5hbWUo
bmFtZXRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSkgeworICAgICAgICAgICAgKHl5dmFs
LnN0ZXApID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFlZQUJPUlQ7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAocHJlZGljYXRlTGlzdCkKKyAgICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBT
dGVwKCh5eXZzcFsoMSkgLSAoMyldLmF4aXMpLCBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2RlVGVz
dDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSwgV1RGTW92ZSgqcHJlZGljYXRl
TGlzdCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3Rl
cCgoeXl2c3BbKDEpIC0gKDMpXS5heGlzKSwgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6
Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSAxODoKKyNsaW5lIDIzOCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisg
ICAgeworICAgICAgICAoeXl2YWwuYXhpcykgPSBTdGVwOjpBdHRyaWJ1dGVBeGlzOworICAgIDt9
CisgICAgYnJlYWs7CisKKyAgY2FzZSAxOToKKyNsaW5lIDI0NSAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwubm9kZVRlc3QpID0gbmV3IFN0ZXA6Ok5v
ZGVUZXN0KFN0ZXA6Ok5vZGVUZXN0OjpBbnlOb2RlVGVzdCk7CisgICAgO30KKyAgICBicmVhazsK
KworICBjYXNlIDIwOgorI2xpbmUgMjUwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAg
ICB7CisgICAgICAgICh5eXZhbC5ub2RlVGVzdCkgPSBuZXcgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6
Tm9kZVRlc3Q6OlRleHROb2RlVGVzdCk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDIx
OgorI2xpbmUgMjU1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAg
ICh5eXZhbC5ub2RlVGVzdCkgPSBuZXcgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6OkNv
bW1lbnROb2RlVGVzdCk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDIyOgorI2xpbmUg
MjYwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5u
b2RlVGVzdCkgPSBuZXcgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6OlByb2Nlc3NpbmdJ
bnN0cnVjdGlvbk5vZGVUZXN0KTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMjM6Cisj
bGluZSAyNjUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgU3Ry
aW5nIGxpdGVyYWwgPSBhZG9wdFJlZigoeXl2c3BbKDMpIC0gKDQpXS5zdHJpbmcpKTsKKyAgICAg
ICAgKHl5dmFsLm5vZGVUZXN0KSA9IG5ldyBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6
UHJvY2Vzc2luZ0luc3RydWN0aW9uTm9kZVRlc3QsIGxpdGVyYWwuc3RyaXBXaGl0ZVNwYWNlKCkp
OworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAyNDoKKyNsaW5lIDI3MyAiV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3Rv
cikgPSBudWxscHRyOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAyNjoKKyNsaW5lIDI4
MiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhw
cmVzc2lvblZlY3RvcikgPSBuZXcgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj47
CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uVmVjdG9yKS0+YXBwZW5kKHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDEpXS5leHByZXNzaW9uKSkpOworICAgIDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSAyNzoKKyNsaW5lIDI4OCAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3RvcikgPSAoeXl2c3Bb
KDEpIC0gKDIpXS5leHByZXNzaW9uVmVjdG9yKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb25W
ZWN0b3IpLT5hcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMikgLSAo
MildLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDI4OgorI2xp
bmUgMjk2ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZh
bC5leHByZXNzaW9uKSA9ICh5eXZzcFsoMikgLSAoMyldLmV4cHJlc3Npb24pOworICAgIDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSAyOToKKyNsaW5lIDMwMyAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpEZXNj
ZW5kYW50T3JTZWxmQXhpcywgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6OkFueU5vZGVU
ZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDMwOgorI2xpbmUgMzEwICJXZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5zdGVwKSA9IG5l
dyBTdGVwKFN0ZXA6OlNlbGZBeGlzLCBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6QW55
Tm9kZVRlc3QpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzE6CisjbGluZSAzMTUg
IldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLnN0ZXAp
ID0gbmV3IFN0ZXAoU3RlcDo6UGFyZW50QXhpcywgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRl
c3Q6OkFueU5vZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDMyOgorI2xp
bmUgMzIyICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmlu
ZyBuYW1lID0gYWRvcHRSZWYoKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKSk7CisgICAgICAgICh5
eXZhbC5leHByZXNzaW9uKSA9IG5ldyBWYXJpYWJsZVJlZmVyZW5jZShuYW1lKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgMzM6CisjbGluZSAzMjggIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gKHl5dnNwWygyKSAt
ICgzKV0uZXhwcmVzc2lvbik7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDM0OgorI2xp
bmUgMzMzICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmlu
ZyBsaXRlcmFsID0gYWRvcHRSZWYoKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKSk7CisgICAgICAg
ICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBTdHJpbmdFeHByZXNzaW9uKFdURk1vdmUobGl0ZXJh
bCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAzNToKKyNsaW5lIDMzOSAiV2ViQ29y
ZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICBTdHJpbmcgbnVtZXJhbCA9IGFk
b3B0UmVmKCh5eXZzcFsoMSkgLSAoMSldLnN0cmluZykpOworICAgICAgICAoeXl2YWwuZXhwcmVz
c2lvbikgPSBuZXcgTnVtYmVyKG51bWVyYWwudG9Eb3VibGUoKSk7CisgICAgO30KKyAgICBicmVh
azsKKworICBjYXNlIDM3OgorI2xpbmUgMzQ5ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIK
KyAgICB7CisgICAgICAgIFN0cmluZyBuYW1lID0gYWRvcHRSZWYoKHl5dnNwWygxKSAtICgzKV0u
c3RyaW5nKSk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IFhQYXRoOjpGdW5jdGlvbjo6
Y3JlYXRlKG5hbWUpLnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKCEoeXl2YWwuZXhwcmVzc2lvbikp
CisgICAgICAgICAgICBZWUFCT1JUOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAzODoK
KyNsaW5lIDM1NyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICBT
dHJpbmcgbmFtZSA9IGFkb3B0UmVmKCh5eXZzcFsoMSkgLSAoNCldLnN0cmluZykpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IGFy
Z3VtZW50TGlzdCgoeXl2c3BbKDMpIC0gKDQpXS5leHByZXNzaW9uVmVjdG9yKSk7CisgICAgICAg
ICh5eXZhbC5leHByZXNzaW9uKSA9IFhQYXRoOjpGdW5jdGlvbjo6Y3JlYXRlKG5hbWUsIFdURk1v
dmUoKmFyZ3VtZW50TGlzdCkpLnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKCEoeXl2YWwuZXhwcmVz
c2lvbikpCisgICAgICAgICAgICBZWUFCT1JUOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2Fz
ZSAzOToKKyNsaW5lIDM2OCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAg
ICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3RvcikgPSBuZXcgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPj47CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uVmVjdG9yKS0+YXBwZW5k
KHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDEpXS5leHByZXNzaW9u
KSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA0MDoKKyNsaW5lIDM3NCAiV2ViQ29y
ZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZl
Y3RvcikgPSAoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uVmVjdG9yKTsKKyAgICAgICAgKHl5
dmFsLmV4cHJlc3Npb25WZWN0b3IpLT5hcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKwor
ICBjYXNlIDQzOgorI2xpbmUgMzg4ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7
CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBVbmlvbihzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9w
dHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgNDQ6CisjbGluZSAzOTUgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gKHl5dnNwWygxKSAt
ICgxKV0ubG9jYXRpb25QYXRoKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNDY6Cisj
bGluZSA0MDIgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5
dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKKyAgICAgICAgKHl5
dmFsLmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5
eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0
aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSA0NzoKKyNsaW5lIDQwOCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisg
ICAgeworICAgICAgICAoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpLT5wcmVwZW5kU3Rl
cChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygyKSAtICgzKV0uc3RlcCkpKTsKKyAgICAg
ICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKKyAgICAg
ICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0
aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAgIDt9CisgICAg
YnJlYWs7CisKKyAgY2FzZSA0OToKKyNsaW5lIDQxOSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFy
LnkiCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0ZUxpc3QoKHl5dnNwWygyKSAtICgyKV0uZXhwcmVzc2lv
blZlY3RvcikpOworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgRmlsdGVyKHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDIpXS5leHByZXNzaW9uKSksIFdU
Rk1vdmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNTE6
CisjbGluZSA0MjkgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAg
KHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IExvZ2ljYWxPcChMb2dpY2FsT3A6Ok9QX09yLCBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikp
KTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNTM6CisjbGluZSA0MzggIldlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0g
bmV3IExvZ2ljYWxPcChMb2dpY2FsT3A6Ok9QX0FuZCwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJl
c3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVh
azsKKworICBjYXNlIDU1OgorI2xpbmUgNDQ3ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIK
KyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBFcVRlc3RPcCgoeXl2c3Bb
KDIpIC0gKDMpXS5lcXVhbGl0eVRlc3RPcGNvZGUpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lv
bj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgNTc6CisjbGluZSA0NTYgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
ICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IEVxVGVzdE9wKCh5eXZzcFso
MikgLSAoMyldLmVxdWFsaXR5VGVzdE9wY29kZSksIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9u
PigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSA1OToKKyNsaW5lIDQ2NSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisg
ICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgTnVtZXJpY09wKE51bWVyaWNP
cDo6T1BfQWRkLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0u
ZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgz
KV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNjA6CisjbGlu
ZSA0NzAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFs
LmV4cHJlc3Npb24pID0gbmV3IE51bWVyaWNPcChOdW1lcmljT3A6Ok9QX1N1Yiwgc3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1
bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7Cisg
ICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDYyOgorI2xpbmUgNDc5ICJXZWJDb3JlL3htbC9Y
UGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBO
dW1lcmljT3AoKHl5dnNwWygyKSAtICgzKV0ubnVtZXJpY09wY29kZSksIHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uKSkpOworICAgIDt9
CisgICAgYnJlYWs7CisKKyAgY2FzZSA2NDoKKyNsaW5lIDQ4OCAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgTmVnYXRp
dmUoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMikgLSAoMildLmV4cHJlc3Np
b24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworCisvKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAg
Ki8KKyNsaW5lIDIwNDkgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKyAgICAgIGRlZmF1bHQ6IGJyZWFr
OworICAgIH0KKyAgWVlfU1lNQk9MX1BSSU5UICgiLT4gJCQgPSIsIHl5cjFbeXluXSwgJnl5dmFs
LCAmeXlsb2MpOworCisgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKKyAgeXlsZW4gPSAwOworICBZWV9T
VEFDS19QUklOVCAoeXlzcywgeXlzc3ApOworCisgICorK3l5dnNwID0geXl2YWw7CisKKworICAv
KiBOb3cgYHNoaWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hh
dCBzdGF0ZQorICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQg
YmFjayB0byBhbmQgdGhlIHJ1bGUKKyAgICAgbnVtYmVyIHJlZHVjZWQgYnkuICAqLworCisgIHl5
biA9IHl5cjFbeXluXTsKKworICB5eXN0YXRlID0geXlwZ290b1t5eW4gLSBZWU5UT0tFTlNdICsg
Knl5c3NwOworICBpZiAoMCA8PSB5eXN0YXRlICYmIHl5c3RhdGUgPD0gWVlMQVNUICYmIHl5Y2hl
Y2tbeXlzdGF0ZV0gPT0gKnl5c3NwKQorICAgIHl5c3RhdGUgPSB5eXRhYmxlW3l5c3RhdGVdOwor
ICBlbHNlCisgICAgeXlzdGF0ZSA9IHl5ZGVmZ290b1t5eW4gLSBZWU5UT0tFTlNdOworCisgIGdv
dG8geXluZXdzdGF0ZTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS4KK3wgeXllcnJsYWIgLS0gaGVyZSBvbiBkZXRlY3RpbmcgZXJyb3IgfAorYC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWVycmxhYjoKKyAgLyogSWYgbm90IGFscmVh
ZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCByZXBvcnQgdGhpcyBlcnJvci4gICovCisgIGlm
ICgheXllcnJzdGF0dXMpCisgICAgeworICAgICAgKyt5eW5lcnJzOworI2lmICEgWVlFUlJPUl9W
RVJCT1NFCisgICAgICB5eWVycm9yIChwYXJzZXIsIFlZXygic3ludGF4IGVycm9yIikpOworI2Vs
c2UKKyAgICAgIHsKKwlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9lcnJvciAoMCwgeXlzdGF0
ZSwgeXljaGFyKTsKKwlpZiAoeXltc2dfYWxsb2MgPCB5eXNpemUgJiYgeXltc2dfYWxsb2MgPCBZ
WVNUQUNLX0FMTE9DX01BWElNVU0pCisJICB7CisJICAgIFlZU0laRV9UIHl5YWxsb2MgPSAyICog
eXlzaXplOworCSAgICBpZiAoISAoeXlzaXplIDw9IHl5YWxsb2MgJiYgeXlhbGxvYyA8PSBZWVNU
QUNLX0FMTE9DX01BWElNVU0pKQorCSAgICAgIHl5YWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElN
VU07CisJICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKwkgICAgICBZWVNUQUNLX0ZSRUUgKHl5
bXNnKTsKKwkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eWFsbG9jKTsKKwkg
ICAgaWYgKHl5bXNnKQorCSAgICAgIHl5bXNnX2FsbG9jID0geXlhbGxvYzsKKwkgICAgZWxzZQor
CSAgICAgIHsKKwkJeXltc2cgPSB5eW1zZ2J1ZjsKKwkJeXltc2dfYWxsb2MgPSBzaXplb2YgeXlt
c2didWY7CisJICAgICAgfQorCSAgfQorCisJaWYgKDAgPCB5eXNpemUgJiYgeXlzaXplIDw9IHl5
bXNnX2FsbG9jKQorCSAgeworCSAgICAodm9pZCkgeXlzeW50YXhfZXJyb3IgKHl5bXNnLCB5eXN0
YXRlLCB5eWNoYXIpOworCSAgICB5eWVycm9yIChwYXJzZXIsIHl5bXNnKTsKKwkgIH0KKwllbHNl
CisJICB7CisJICAgIHl5ZXJyb3IgKHBhcnNlciwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisJICAg
IGlmICh5eXNpemUgIT0gMCkKKwkgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOworCSAgfQorICAg
ICAgfQorI2VuZGlmCisgICAgfQorCisKKworICBpZiAoeXllcnJzdGF0dXMgPT0gMykKKyAgICB7
CisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0
b2tlbiBhZnRlciBhbgorCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCisKKyAgICAgIGlmICh5eWNo
YXIgPD0gWVlFT0YpCisJeworCSAgLyogUmV0dXJuIGZhaWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0
LiAgKi8KKwkgIGlmICh5eWNoYXIgPT0gWVlFT0YpCisJICAgIFlZQUJPUlQ7CisJfQorICAgICAg
ZWxzZQorCXsKKwkgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIsCisJCSAgICAgIHl5
dG9rZW4sICZ5eWx2YWwsIHBhcnNlcik7CisJICB5eWNoYXIgPSBZWUVNUFRZOworCX0KKyAgICB9
CisKKyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNo
aWZ0aW5nIHRoZSBlcnJvcgorICAgICB0b2tlbi4gICovCisgIGdvdG8geXllcnJsYWIxOworCisK
Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgor
fCB5eWVycm9ybGFiIC0tIGVycm9yIHJhaXNlZCBleHBsaWNpdGx5IGJ5IFlZRVJST1IuICB8Citg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5
ZXJyb3JsYWI6CisKKyAgLyogUGFjaWZ5IGNvbXBpbGVycyBsaWtlIEdDQyB3aGVuIHRoZSB1c2Vy
IGNvZGUgbmV2ZXIgaW52b2tlcworICAgICBZWUVSUk9SIGFuZCB0aGUgbGFiZWwgeXllcnJvcmxh
YiB0aGVyZWZvcmUgbmV2ZXIgYXBwZWFycyBpbiB1c2VyCisgICAgIGNvZGUuICAqLworI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3VucmVhY2hhYmxlLWNvZGUiCisgIGlmICgvKkNPTlNUQ09ORCovIDApCisgICAgIGdvdG8g
eXllcnJvcmxhYjsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKworICAvKiBEbyBub3Qg
cmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCisg
ICAgIHRoaXMgWVlFUlJPUi4gICovCisgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKKyAgeXlsZW4gPSAw
OworICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOworICB5eXN0YXRlID0gKnl5c3NwOwor
ICBnb3RvIHl5ZXJybGFiMTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZXJybGFiMSAtLSBjb21tb24gY29k
ZSBmb3IgYm90aCBzeW50YXggZXJyb3IgYW5kIFlZRVJST1IuICB8CitgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWVycmxh
YjE6CisgIHl5ZXJyc3RhdHVzID0gMzsJLyogRWFjaCByZWFsIHRva2VuIHNoaWZ0ZWQgZGVjcmVt
ZW50cyB0aGlzLiAgKi8KKworICBmb3IgKDs7KQorICAgIHsKKyAgICAgIHl5biA9IHl5cGFjdFt5
eXN0YXRlXTsKKyAgICAgIGlmICh5eW4gIT0gWVlQQUNUX05JTkYpCisJeworCSAgeXluICs9IFlZ
VEVSUk9SOworCSAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1QgJiYgeXljaGVja1t5eW5d
ID09IFlZVEVSUk9SKQorCSAgICB7CisJICAgICAgeXluID0geXl0YWJsZVt5eW5dOworCSAgICAg
IGlmICgwIDwgeXluKQorCQlicmVhazsKKwkgICAgfQorCX0KKworICAgICAgLyogUG9wIHRoZSBj
dXJyZW50IHN0YXRlIGJlY2F1c2UgaXQgY2Fubm90IGhhbmRsZSB0aGUgZXJyb3IgdG9rZW4uICAq
LworICAgICAgaWYgKHl5c3NwID09IHl5c3MpCisJWVlBQk9SVDsKKworCisgICAgICB5eWRlc3Ry
dWN0ICgiRXJyb3I6IHBvcHBpbmciLAorCQkgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIHBhcnNl
cik7CisgICAgICBZWVBPUFNUQUNLICgxKTsKKyAgICAgIHl5c3RhdGUgPSAqeXlzc3A7CisgICAg
ICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOworICAgIH0KKworICBpZiAoeXluID09IFlZ
RklOQUwpCisgICAgWVlBQ0NFUFQ7CisKKyAgKisreXl2c3AgPSB5eWx2YWw7CisKKworICAvKiBT
aGlmdCB0aGUgZXJyb3IgdG9rZW4uICAqLworICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIs
IHl5c3Rvc1t5eW5dLCB5eXZzcCwgeXlsc3ApOworCisgIHl5c3RhdGUgPSB5eW47CisgIGdvdG8g
eXluZXdzdGF0ZTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0u
Cit8IHl5YWNjZXB0bGFiIC0tIFlZQUNDRVBUIGNvbWVzIGhlcmUuICB8CitgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWFjY2VwdGxhYjoKKyAgeXlyZXN1bHQgPSAw
OworICBnb3RvIHl5cmV0dXJuOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLgorfCB5eWFib3J0bGFiIC0tIFlZQUJPUlQgY29tZXMgaGVyZS4gIHwKK2AtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWFib3J0bGFiOgorICB5eXJlc3VsdCA9IDE7
CisgIGdvdG8geXlyZXR1cm47CisKKyNpZm5kZWYgeXlvdmVyZmxvdworLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWV4aGF1c3RlZGxhYiAt
LSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlleGhhdXN0ZWRsYWI6CisgIHl5ZXJy
b3IgKHBhcnNlciwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOworICB5eXJlc3VsdCA9IDI7Cisg
IC8qIEZhbGwgdGhyb3VnaC4gICovCisjZW5kaWYKKworeXlyZXR1cm46CisgIGlmICh5eWNoYXIg
IT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCisgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVw
OiBkaXNjYXJkaW5nIGxvb2thaGVhZCIsCisJCSB5eXRva2VuLCAmeXlsdmFsLCBwYXJzZXIpOwor
ICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24g
dHJpZ2dlcmVkCisgICAgIHRoaXMgWVlBQk9SVCBvciBZWUFDQ0VQVC4gICovCisgIFlZUE9QU1RB
Q0sgKHl5bGVuKTsKKyAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKKyAgd2hpbGUgKHl5
c3NwICE9IHl5c3MpCisgICAgeworICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IHBvcHBpbmci
LAorCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgcGFyc2VyKTsKKyAgICAgIFlZUE9QU1RBQ0sg
KDEpOworICAgIH0KKyNpZm5kZWYgeXlvdmVyZmxvdworICBpZiAoeXlzcyAhPSB5eXNzYSkKKyAg
ICBZWVNUQUNLX0ZSRUUgKHl5c3MpOworI2VuZGlmCisjaWYgWVlFUlJPUl9WRVJCT1NFCisgIGlm
ICh5eW1zZyAhPSB5eW1zZ2J1ZikKKyAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKKyNlbmRpZgor
ICAvKiBNYWtlIHN1cmUgWVlJRCBpcyB1c2VkLiAgKi8KKyAgcmV0dXJuIFlZSUQgKHl5cmVzdWx0
KTsKK30KKworCisjbGluZSA0OTMgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCisKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTcgQEAK
KyNpZm5kZWYgQ1NTR1JBTU1BUl9ICisjZGVmaW5lIENTU0dSQU1NQVJfSAorLyogQSBCaXNvbiBw
YXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisKKy8qIFNrZWxldG9uIGludGVyZmFj
ZSBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisKKyAgIENvcHlyaWdodCAoQykg
MTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAw
NgorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg
ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJv
Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLiAgKi8KKworLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBj
cmVhdGUgYSBsYXJnZXIgd29yayB0aGF0IGNvbnRhaW5zCisgICBwYXJ0IG9yIGFsbCBvZiB0aGUg
Qmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yaworICAgdW5kZXIg
dGVybXMgb2YgeW91ciBjaG9pY2UsIHNvIGxvbmcgYXMgdGhhdCB3b3JrIGlzbid0IGl0c2VsZiBh
CisgICBwYXJzZXIgZ2VuZXJhdG9yIHVzaW5nIHRoZSBza2VsZXRvbiBvciBhIG1vZGlmaWVkIHZl
cnNpb24gdGhlcmVvZgorICAgYXMgYSBwYXJzZXIgc2tlbGV0b24uICBBbHRlcm5hdGl2ZWx5LCBp
ZiB5b3UgbW9kaWZ5IG9yIHJlZGlzdHJpYnV0ZQorICAgdGhlIHBhcnNlciBza2VsZXRvbiBpdHNl
bGYsIHlvdSBtYXkgKGF0IHlvdXIgb3B0aW9uKSByZW1vdmUgdGhpcworICAgc3BlY2lhbCBleGNl
cHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5nCisg
ICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYworICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRpb24uCisKKyAg
IFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24gaW4KKyAgIHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KKworLyogVG9rZW5zLiAg
Ki8KKyNpZm5kZWYgWVlUT0tFTlRZUEUKKyMgZGVmaW5lIFlZVE9LRU5UWVBFCisgICAvKiBQdXQg
dGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RCIGFuZCBvdGhlciBk
ZWJ1Z2dlcnMKKyAgICAgIGtub3cgYWJvdXQgdGhlbS4gICovCisgICBlbnVtIHl5dG9rZW50eXBl
IHsKKyAgICAgTVVMT1AgPSAyNTgsCisgICAgIFJFTE9QID0gMjU5LAorICAgICBFUU9QID0gMjYw
LAorICAgICBNSU5VUyA9IDI2MSwKKyAgICAgUExVUyA9IDI2MiwKKyAgICAgQU5EID0gMjYzLAor
ICAgICBPUiA9IDI2NCwKKyAgICAgRlVOQ1RJT05OQU1FID0gMjY1LAorICAgICBMSVRFUkFMID0g
MjY2LAorICAgICBOQU1FVEVTVCA9IDI2NywKKyAgICAgTlVNQkVSID0gMjY4LAorICAgICBOT0RF
VFlQRSA9IDI2OSwKKyAgICAgVkFSSUFCTEVSRUZFUkVOQ0UgPSAyNzAsCisgICAgIEFYSVNOQU1F
ID0gMjcxLAorICAgICBDT01NRU5UID0gMjcyLAorICAgICBET1RET1QgPSAyNzMsCisgICAgIFBJ
ID0gMjc0LAorICAgICBOT0RFID0gMjc1LAorICAgICBTTEFTSFNMQVNIID0gMjc2LAorICAgICBU
RVhUID0gMjc3LAorICAgICBYUEFUSF9FUlJPUiA9IDI3OAorICAgfTsKKyNlbmRpZgorLyogVG9r
ZW5zLiAgKi8KKyNkZWZpbmUgTVVMT1AgMjU4CisjZGVmaW5lIFJFTE9QIDI1OQorI2RlZmluZSBF
UU9QIDI2MAorI2RlZmluZSBNSU5VUyAyNjEKKyNkZWZpbmUgUExVUyAyNjIKKyNkZWZpbmUgQU5E
IDI2MworI2RlZmluZSBPUiAyNjQKKyNkZWZpbmUgRlVOQ1RJT05OQU1FIDI2NQorI2RlZmluZSBM
SVRFUkFMIDI2NgorI2RlZmluZSBOQU1FVEVTVCAyNjcKKyNkZWZpbmUgTlVNQkVSIDI2OAorI2Rl
ZmluZSBOT0RFVFlQRSAyNjkKKyNkZWZpbmUgVkFSSUFCTEVSRUZFUkVOQ0UgMjcwCisjZGVmaW5l
IEFYSVNOQU1FIDI3MQorI2RlZmluZSBDT01NRU5UIDI3MgorI2RlZmluZSBET1RET1QgMjczCisj
ZGVmaW5lIFBJIDI3NAorI2RlZmluZSBOT0RFIDI3NQorI2RlZmluZSBTTEFTSFNMQVNIIDI3Ngor
I2RlZmluZSBURVhUIDI3NworI2RlZmluZSBYUEFUSF9FUlJPUiAyNzgKKworCisKKworI2lmICEg
ZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVECit0eXBlZGVm
IHVuaW9uIFlZU1RZUEUKKyNsaW5lIDYwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKK3sg
CisgICAgTnVtZXJpY09wOjpPcGNvZGUgbnVtZXJpY09wY29kZTsgCisgICAgRXFUZXN0T3A6Ok9w
Y29kZSBlcXVhbGl0eVRlc3RPcGNvZGU7CisgICAgU3RyaW5nSW1wbCogc3RyaW5nOworICAgIFN0
ZXA6OkF4aXMgYXhpczsKKyAgICBMb2NhdGlvblBhdGgqIGxvY2F0aW9uUGF0aDsKKyAgICBTdGVw
OjpOb2RlVGVzdCogbm9kZVRlc3Q7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPj4qIGV4cHJlc3Npb25WZWN0b3I7CisgICAgU3RlcCogc3RlcDsKKyAgICBFeHByZXNzaW9u
KiBleHByZXNzaW9uOyAKK30KKy8qIExpbmUgMTUyOSBvZiB5YWNjLmMuICAqLworI2xpbmUgMTA3
ICIuL1hQYXRoR3JhbW1hci5ocHAiCisJWVlTVFlQRTsKKyMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQ
RSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZU1RZUEVf
SVNfREVDTEFSRUQgMQorIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorCisK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9uLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9jbWFrZS9XZWJLaXRDb21tb24uY21ha2UJKHJldmlzaW9uIDIwOTczNCkK
KysrIFNvdXJjZS9jbWFrZS9XZWJLaXRDb21tb24uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEz
LDExICsxMyw2IEBAIGlmIChOT1QgSEFTX1JVTl9XRUJLSVRfQ09NTU9OKQogICAgICAgICBsaXN0
KEFQUEVORCBDTUFLRV9QUk9HUkFNX1BBVEggJEVOVntTeXN0ZW1Ecml2ZX0vY3lnd2luL2JpbikK
ICAgICBlbmRpZiAoKQogCi0gICAgZmluZF9wYWNrYWdlKEJJU09OIDIuMSBSRVFVSVJFRCkKLSAg
ICBpZiAoIUFQUExFKQotICAgICAgICBmaW5kX3BhY2thZ2UoRkxFWCAyLjUuMzQgUkVRVUlSRUQp
Ci0gICAgZW5kaWYgKCkKLQogICAgICMgVE9ETyBFbmZvcmNlIHZlcnNpb24gcmVxdWlyZW1lbnQg
Zm9yIGdwZXJmCiAgICAgZmluZF9wYWNrYWdlKEdwZXJmIDMuMC4xIFJFUVVJUkVEKQogCkluZGV4
OiBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9j
bWFrZS9XZWJLaXRNYWNyb3MuY21ha2UJKHJldmlzaW9uIDIwOTczNCkKKysrIFNvdXJjZS9jbWFr
ZS9XZWJLaXRNYWNyb3MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI0MywyMSArMjQzLDYgQEAg
bWFjcm8oR0VORVJBVEVfRE9NX05BTUVTIF9uYW1lc3BhY2UgX2F0dAogICAgICAgICBWRVJCQVRJ
TSkKIGVuZG1hY3JvKCkKIAotCi1tYWNybyhHRU5FUkFURV9HUkFNTUFSIF9wcmVmaXggX2lucHV0
IF9vdXRwdXRfaGVhZGVyIF9vdXRwdXRfc291cmNlIF9mZWF0dXJlcykKLSAgICAjIFRoaXMgaXMg
YSB3b3JrYXJvdW5kIGZvciB3aW5mbGV4Ymlzb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgY29ycmV0
bHkgd2hlbgotICAgICMgcnVuIGluIGEgZGlmZmVyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRoYW4g
dGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0gICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChf
d29ya2luZ19kaXJlY3RvcnkgJHtCSVNPTl9FWEVDVVRBQkxFfSBQQVRIKQotCi0gICAgYWRkX2N1
c3RvbV9jb21tYW5kKAotICAgICAgICBPVVRQVVQgJHtfb3V0cHV0X2hlYWRlcn0gJHtfb3V0cHV0
X3NvdXJjZX0KLSAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7X2lucHV0fQotICAgICAgICBERVBF
TkRTICR7X2lucHV0fQotICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQkNP
UkVfRElSfS9jc3MvbWFrZWdyYW1tYXIucGwgLS1vdXRwdXREaXIgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9IC0tZXh0cmFEZWZpbmVzICIke19mZWF0dXJlc30iIC0tcHJlcHJvY2Vzc29y
ICIke0NPREVfR0VORVJBVE9SX1BSRVBST0NFU1NPUn0iIC0tYmlzb24gIiR7QklTT05fRVhFQ1VU
QUJMRX0iIC0tc3ltYm9sc1ByZWZpeCAke19wcmVmaXh9ICR7X2lucHV0fQotICAgICAgICBXT1JL
SU5HX0RJUkVDVE9SWSAke193b3JraW5nX2RpcmVjdG9yeX0KLSAgICAgICAgVkVSQkFUSU0pCi1l
bmRtYWNybygpCi0KIG1hY3JvKE1BS0VfSEFTSF9UT09MUyBfc291cmNlKQogICAgIGdldF9maWxl
bmFtZV9jb21wb25lbnQoX25hbWUgJHtfc291cmNlfSBOQU1FX1dFKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297123</attachid>
            <date>2016-12-14 14:03:52 -0800</date>
            <delta_ts>2016-12-15 13:54:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165783-20161214140302.patch</filename>
            <type>text/plain</type>
            <size>90530</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTgz
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEy
LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGZsZXggYW5kIGJpc29uIGJ1aWxkIGRlcGVuZGVuY2llcyBub3cgdGhhdCBDU1Mg
aXMgcGFyc2VkIHdpdGggYSBub24tZ2VuZXJhdGVkIHBhcnNlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzgzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRDb21tb24u
Y21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZToKKwogMjAx
Ni0xMi0xMCAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAg
ICAgW2NtYWtlXSBJbmNsdWRlIFdURiwgSlNDLCBhbmQgV2ViQ29yZSBoZWFkZXJzIGF1dG9tYXRp
Y2FsbHkgdG8gdGFyZ2VycyB1c2luZyB0aGVtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk4
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNCBAQAorMjAxNi0xMi0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJlbW92ZSBmbGV4IGFuZCBiaXNvbiBidWlsZCBkZXBlbmRlbmNp
ZXMgbm93IHRoYXQgQ1NTIGlzIHBhcnNlZCB3aXRoIGEgbm9uLWdlbmVyYXRlZCBwYXJzZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTc4MworCisg
ICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgZmxleCBhbmQgYmlz
b24gYXJlIGFubm95aW5nIHRvIGluc3RhbGwgYW5kIHVzZSwgZXNwZWNpYWxseSBvbiBXaW5kb3dz
LgorICAgICAgICBTaW5jZSBvbmx5IFhQYXRoR3JhbW1lciB1c2VzIHRoZW0gYW5kIHRoYXQncyBu
b3QgYWN0aXZlbHkgZGV2ZWxvcGVkLCBsZXQncyBqdXN0IGNoZWNrIGluIHRoZSBvbmUgZ2VuZXJh
dGVkIGZpbGUKKyAgICAgICAgYW5kIG1ha2UgYnVpbGRpbmcgV2ViS2l0IGVhc2llciBmb3JldmVy
IQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogY3NzL21ha2VncmFtbWFyLnBsOiBSZW1vdmVkLgorICAgICAgICAqIHhtbC9YUGF0aEdy
YW1tYXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHhwYXRoeXlsZXgpOgorICAgICAgICAoeHBhdGh5
eWVycm9yKToKKyAgICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAgKiB4bWwvWFBhdGhH
cmFtbWFyLmg6IEFkZGVkLgorCiAyMDE2LTEyLTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyB1c2luZyBBTkdM
RSB0byBkbyBXZWJHTCByZW5kZXJpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyMDk4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMjg3MCw2ICsyODcwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHhtbC9YUGF0
aEV4cHJlc3Npb24uY3BwCiAgICAgeG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCiAgICAgeG1s
L1hQYXRoRnVuY3Rpb25zLmNwcAorICAgIHhtbC9YUGF0aEdyYW1tYXIuY3BwCiAgICAgeG1sL1hQ
YXRoTlNSZXNvbHZlci5jcHAKICAgICB4bWwvWFBhdGhOb2RlU2V0LmNwcAogICAgIHhtbC9YUGF0
aFBhcnNlci5jcHAKQEAgLTM2NzEsOSArMzY3Miw2IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfREVSSVZFRF9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9QbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHApCiBBRERfU09VUkNFX1dFQkNPUkVfREVS
SVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIFBs
dWdJbnNSZXNvdXJjZXNEYXRhLmNwcCBQbHVnSW5zUmVzb3VyY2VzLmgpCiAKLUdFTkVSQVRFX0dS
QU1NQVIoeHBhdGh5eSAke1dFQkNPUkVfRElSfS94bWwvWFBhdGhHcmFtbWFyLnkgJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1hci5oICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9YUGF0aEdyYW1tYXIuY3BwICIiKQotbGlzdChBUFBFTkQgV2ViQ29yZV9ERVJJ
VkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1hci5j
cHApCi0KIHNldChGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCAiTEFOR1VBR0VfSkFWQVNDUklQ
VCAke0ZFQVRVUkVfREVGSU5FU19XSVRIX1NQQUNFX1NFUEFSQVRPUn0iKQogbGlzdChBUFBFTkQg
V2ViQ29yZVRlc3RTdXBwb3J0X0lETF9GSUxFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5pZGwpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjA5ODMyKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTA4LDcgKzkwOCw2IEBAIGFsbCA6IFwK
ICAgICBNYXRoTUxFbGVtZW50VHlwZUhlbHBlcnMuaCBcCiAgICAgTWF0aE1MTmFtZXMuY3BwIFwK
ICAgICBNYXRoTUxOYW1lcy5oIFwKLSAgICBYUGF0aEdyYW1tYXIuY3BwIFwKICMKIAogIyAtLS0t
LS0tLQpAQCAtMTAyMSwyMiArMTAyMCw2IEBAIENvbG9yRGF0YS5jcHAgOiBwbGF0Zm9ybS9Db2xv
ckRhdGEuZ3BlcmYKIAogIyAtLS0tLS0tLQogCi0jIFBhdGggdG8gYmlzb24KLQotaWZlcSAoJChP
UyksTUFDT1MpCi1CSVNPTj0kKHNoZWxsIHhjcnVuIC1maW5kIGJpc29uKQotZWxzZQotQklTT049
Ymlzb24KLWVuZGlmCi0KLSMgLS0tLS0tLS0KLQotIyBYUGF0aCBncmFtbWFyCi1YUGF0aEdyYW1t
YXIuY3BwIDogeG1sL1hQYXRoR3JhbW1hci55ICQoUFJPSkVDVF9GSUxFKQotCSQoUEVSTCkgJChX
ZWJDb3JlKS9jc3MvbWFrZWdyYW1tYXIucGwgLS1vdXRwdXREaXIgLiAtLWJpc29uICIkKEJJU09O
KSIgLS1zeW1ib2xzUHJlZml4IHhwYXRoeXkgJDwKLQotIyAtLS0tLS0tLQotCiAjIFdlYlJUQyBz
Y3JpcHRzCiAKIFdFQkNPUkVfU0RQX1BST0NFU1NPUl9TQ1JJUFRTID0gCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyMDk4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc3Miw4ICs3NzIsNiBAQAogCQkxQTc1MEQ4RDBBOTBF
NTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE3NTBEOEIwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9k
ZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJMUE3NTBEOEUwQTkwRTUyMTAwMEZGMjE1IC8qIEpTTm9k
ZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTc1MEQ4QzBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTc1MERENDBBOTBFNzI5
MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpT
Tm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLzsgfTsKLQkJMUE3NjI5RDUwQTA3NDI1MTAwOTg5RjVC
IC8qIFhQYXRoR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTc2MjlEMzBBMDc0MjUxMDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmNwcCAq
Lzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnJlYWNoYWJsZS1jb2RlIjsg
fTsgfTsKLQkJMUE3NjI5RDYwQTA3NDI1MTAwOTg5RjVCIC8qIFhQYXRoR3JhbW1hci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE3NjI5RDQwQTA3NDI1
MTAwOTg5RjVCIC8qIFhQYXRoR3JhbW1hci5oICovOyB9OwogCQkxQTc2MkM3MzBBMDc0RjI2MDA5
ODlGNUIgLyogSlNYUGF0aEV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc2MkM2QjBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV2
YWx1YXRvci5jcHAgKi87IH07CiAJCTFBNzYyQzc0MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRo
RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTc2MkM2QzBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV2YWx1YXRvci5oICovOyB9Owog
CQkxQTc2MkM3NTBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV4cHJlc3Npb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE3NjJDNkQwQTA3NEYy
NjAwOTg5RjVCIC8qIEpTWFBhdGhFeHByZXNzaW9uLmNwcCAqLzsgfTsKQEAgLTI0NDksNiArMjQ0
Nyw3IEBACiAJCTVDOUE3QTc1MUFBMEY2RUEwMDk1OEFDRiAvKiBERkFCeXRlY29kZUNvbXBpbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzkz
MDVFMUFBMEY2QTkwMDI5QzgxNiAvKiBERkFCeXRlY29kZUNvbXBpbGVyLmNwcCAqLzsgfTsKIAkJ
NUM5QTdBNzYxQUEwRjZFRDAwOTU4QUNGIC8qIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzOTMwNjAxQUEw
RjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwICovOyB9OwogCQk1QzlC
ODYwQzFDMjFFM0M5MDAxMTBGMzYgLyogTmV0d29ya0xvYWRUaW1pbmcubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlCODYwQjFDMjFFM0M2MDAxMTBG
MzYgLyogTmV0d29ya0xvYWRUaW1pbmcubW0gKi87IH07CisJCTVDOUVGMTcxMURGRjcxQ0MwMEE0
NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUM5RUYxNkYxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5j
cHAgKi87IH07CiAJCTVDQjM3RkZFMUM2MkQyOEMwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1v
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNC
MzdGRkMxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5jcHAgKi87IH07CiAJ
CTVDQjM3RkZGMUM2MkQyQTEwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1vY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjM3RkZEMUM2MkQyNzgw
MEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1vY2suaCAqLzsgfTsKIAkJNUNCQzhEQUMxQUFBMzAy
MjAwRTFDODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM4REFBMUFBQTMwMjIwMEUxQzgw
MyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAgKi87IH07CkBAIC03NzgzLDggKzc3
ODIsNiBAQAogCQkxQTc1MEQ4QjBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUl0ZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE3NTBEOEMwQTkwRTUyMTAwMEZGMjE1
IC8qIEpTTm9kZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U05vZGVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc1MEREMzBB
OTBFNzI5MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQTc2MjlEMzBBMDc0MjUxMDA5ODlGNUIgLyogWFBhdGhH
cmFtbWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEdy
YW1tYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTc2MjlENDBBMDc0MjUx
MDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBYUGF0aEdyYW1tYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE3NjJD
NkIwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhFdmFsdWF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWFBhdGhFdmFsdWF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTc2MkM2QzBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV2
YWx1YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYUGF0aEV2YWx1
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc2MkM2RDBBMDc0RjI2MDA5
ODlGNUIgLyogSlNYUGF0aEV4cHJlc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTWFBhdGhFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk2OTUsNiArOTY5Miw4IEBACiAJCTVDNkU2NTQwMUQ1Q0VEQzkwMEY3ODYyRSAv
KiBVUkxQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMUGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2
RCAvKiBTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlCODYwQjFD
MjFFM0M2MDAxMTBGMzYgLyogTmV0d29ya0xvYWRUaW1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrTG9hZFRpbWluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUM5RUYxNkYxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1h
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEdyYW1tYXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjE3MDFERkY3MTk5MDBBNDUy
RTMgLyogWFBhdGhHcmFtbWFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQ
YXRoR3JhbW1hci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzN0ZGQzFDNjJE
Mjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQjM3RkZEMUM2MkQyNzgwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRv
ck1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JN
b2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM4REFBMUFBQTMwMjIwMEUx
QzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzUyNSw4ICsxNzUyNCw2IEBACiAJCQkJQTgzM0M4
MEIwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmggKi8sCiAJCQkJRTE1QTM2RDgxMTA0NTcy
NzAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuY3BwICovLAogCQkJCUUxNUEzNkQ2MTEwNDU3MjAwMEI3
QjYzOSAvKiBYTUxOU05hbWVzLmggKi8sCi0JCQkJMUE3NjI5RDMwQTA3NDI1MTAwOTg5RjVCIC8q
IFhQYXRoR3JhbW1hci5jcHAgKi8sCi0JCQkJMUE3NjI5RDQwQTA3NDI1MTAwOTg5RjVCIC8qIFhQ
YXRoR3JhbW1hci5oICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJ
CXBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlOwpAQCAtMjMwNTUsNiArMjMwNTIsOCBAQAog
CQkJCTFBQjdGQzRFMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb25Ob2RlLmggKi8s
CiAJCQkJMUFCN0ZDNEYwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRnVuY3Rpb25zLmNwcCAqLywK
IAkJCQkxQUI3RkM1MDBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhGdW5jdGlvbnMuaCAqLywKKwkJ
CQk1QzlFRjE2RjFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCAqLywKKwkJCQk1
QzlFRjE3MDFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmggKi8sCiAJCQkJMUFCN0ZD
NTEwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoR3JhbW1hci55ICovLAogCQkJCUUxRUMyOTlEMEJC
MDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuY3BwICovLAogCQkJCUUxRUMyOTlFMEJCMDRD
NkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuaCAqLywKQEAgLTI4MjY0LDcgKzI4MjYzLDYgQEAK
IAkJCQkxQUI3RkM2QzBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUI3RkM2RjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9u
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZDNzEwQThCOTJFQzAwRDlEMzdCIC8qIFhQ
YXRoRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTc2MjlENjBBMDc0MjUxMDA5ODlG
NUIgLyogWFBhdGhHcmFtbWFyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUVDMjlBMDBCQjA0QzZC
MDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM3NjBB
OEI5MkVDMDBEOUQzN0IgLyogWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUI3RkM3OTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMzA0MTIsNiArMzA0MTAsNyBAQAogCQkJCTBGMzZFNzM5MUJEMTg0QjkwMDJEQjg5MSAvKiBM
YXlvdXRTaXplLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTA2NjA2MEJFMTQxRDQwMDk1Njk5
OCAvKiBMYXlvdXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEMzQjFGQzBGMEU0MTcw
MDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUM5RUYx
NzExREZGNzFDQzAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFNEI2NUE1QTEzMkZBQUY5MDA3MEU3QkUgLyogTGVnYWN5VGlsZUdyaWQubW0gaW4gU291cmNl
cyAqLywKIAkJCQlFNDI0QTNBMDEzMzBERjFFMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRCNjVBNUUxMzJGQURCNjAwNzBFN0JFIC8qIExlZ2Fj
eVRpbGVMYXllci5tbSBpbiBTb3VyY2VzICovLApAQCAtMzE3MjgsNyArMzE3MjcsNiBAQAogCQkJ
CTFBQjdGQzZCMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFCN0ZDNkUwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbk5v
ZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDNzAwQThCOTJFQzAwRDlEMzdCIC8qIFhQ
YXRoRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBNzYyOUQ1MEEwNzQyNTEwMDk4
OUY1QiAvKiBYUGF0aEdyYW1tYXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFQzI5OUYwQkIw
NEM2QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3
RkM3NTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhOU1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBQjdGQzc4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFBhcnNlci5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwJKHJldmlzaW9uIDIwOTgz
MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAkobm9uZXhpc3RlbnQpCkBA
IC0xLDk5ICswLDAgQEAKLSMhIC91c3IvYmluL3BlcmwKLSMKLSMgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IHByb2plY3QKLSMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0jCi0jICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0jICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0jICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSMgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSMKLSMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSMgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotIyAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotdXNlIHN0cmljdDsKLXVz
ZSB3YXJuaW5nczsKLXVzZSBGaW5kQmluOwotdXNlIGxpYiAiJEZpbmRCaW46OkJpbi8uLi9iaW5k
aW5ncy9zY3JpcHRzIjsKLQotdXNlIEZpbGU6OkJhc2VuYW1lOwotdXNlIEZpbGU6OlNwZWM7Ci11
c2UgR2V0b3B0OjpMb25nOwotCi1teSAkb3V0cHV0RGlyID0gIi4iOwotbXkgJGV4dHJhRGVmaW5l
cyA9ICIiOwotbXkgJHN5bWJvbHNQcmVmaXggPSAiIjsKLW15ICRwcmVwcm9jZXNzb3IgPSAiIjsK
LW15ICRwcmVwcm9jZXNzT25seSA9IDA7Ci1teSAkYmlzb24gPSAiYmlzb24iOwotCi1HZXRPcHRp
b25zKAotICAgICdvdXRwdXREaXI9cycgPT4gXCRvdXRwdXREaXIsCi0gICAgJ2V4dHJhRGVmaW5l
cz1zJyA9PiBcJGV4dHJhRGVmaW5lcywKLSAgICAnYmlzb249cycgPT4gXCRiaXNvbiwKLSAgICAn
cHJlcHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29yLAotICAgICdwcmVwcm9jZXNzT25seScg
PT4gXCRwcmVwcm9jZXNzT25seSwKLSAgICAnc3ltYm9sc1ByZWZpeD1zJyA9PiBcJHN5bWJvbHNQ
cmVmaXgKLSk7Ci0KLW15ICRncmFtbWFyRmlsZVBhdGggPSAkQVJHVlswXTsKLW15ICRncmFtbWFy
SW5jbHVkZXNGaWxlUGF0aCA9IEBBUkdWID4gMCA/ICRBUkdWWzFdIDogIiI7Ci0KLWlmICghbGVu
Z3RoKCRzeW1ib2xzUHJlZml4KSAmJiAhJHByZXByb2Nlc3NPbmx5KSB7Ci0gICAgZGllICJOZWVk
IGEgc3ltYm9scyBwcmVmaXggdG8gZ2l2ZSB0byBiaXNvbiAoZS5nLiBjc3N5eSwgeHBhdGh5eSki
OwotfQotCi1teSAoJGZpbGVuYW1lLCAkYmFzZVBhdGgsICRzdWZmaXgpID0gZmlsZXBhcnNlKCRn
cmFtbWFyRmlsZVBhdGgsICgiLnkiLCAiLnkuaW4iKSk7Ci0KLWlmICgkc3VmZml4IGVxICIueS5p
biIpIHsKLSAgICBteSAkZ3JhbW1hckZpbGVPdXRQYXRoID0gRmlsZTo6U3BlYy0+am9pbigkb3V0
cHV0RGlyLCAiJGZpbGVuYW1lLnkiKTsKLSAgICBpZiAoISRncmFtbWFySW5jbHVkZXNGaWxlUGF0
aCkgewotICAgICAgICAkZ3JhbW1hckluY2x1ZGVzRmlsZVBhdGggPSAiJHtiYXNlUGF0aH0ke2Zp
bGVuYW1lfS55LmluY2x1ZGVzIjsKLSAgICB9Ci0KLSAgICBvcGVuIEdSQU1NQVIsICI+JGdyYW1t
YXJGaWxlT3V0UGF0aCIgb3IgZGllOwotICAgIG9wZW4gSU5DTFVERVMsICI8JGdyYW1tYXJJbmNs
dWRlc0ZpbGVQYXRoIiBvciBkaWU7Ci0KLSAgICByZXF1aXJlIHByZXByb2Nlc3NvcjsKLQotICAg
IHdoaWxlICg8SU5DTFVERVM+KSB7Ci0gICAgICAgIHByaW50IEdSQU1NQVI7Ci0gICAgfQotICAg
IHByaW50IEdSQU1NQVIgam9pbigiIiwgYXBwbHlQcmVwcm9jZXNzb3IoJGdyYW1tYXJGaWxlUGF0
aCwgJGV4dHJhRGVmaW5lcywgJHByZXByb2Nlc3NvcikpOwotICAgIGNsb3NlIEdSQU1NQVI7Ci0K
LSAgICAkZ3JhbW1hckZpbGVQYXRoID0gJGdyYW1tYXJGaWxlT3V0UGF0aDsKLQotICAgIGV4aXQg
aWYgJHByZXByb2Nlc3NPbmx5OwotfQotCi1teSAkZmlsZUJhc2UgPSBGaWxlOjpTcGVjLT5qb2lu
KCRvdXRwdXREaXIsICRmaWxlbmFtZSk7Ci1teSBAYmlzb25Db21tYW5kID0gKCRiaXNvbiwgIi1k
IiwgIi1wIiwgJHN5bWJvbHNQcmVmaXgsICRncmFtbWFyRmlsZVBhdGgsICItbyIsICIkZmlsZUJh
c2UuY3BwIik7Ci1wdXNoIEBiaXNvbkNvbW1hbmQsICItLW5vLWxpbmVzIiBpZiAkXk8gZXEgIk1T
V2luMzIiOyAjIFdvcmsgYXJvdW5kIGJ1ZyBpbiBiaXNvbiA+PSAzLjAgb24gV2luZG93cyB3aGVy
ZSBpdCBwdXRzIGJhY2tzbGFzaGVzIGludG8gI2xpbmUgZGlyZWN0aXZlcy4KLXN5c3RlbShAYmlz
b25Db21tYW5kKSA9PSAwIG9yIGRpZTsKLQotb3BlbiBIRUFERVIsICI+JGZpbGVCYXNlLmgiIG9y
IGRpZTsKLXByaW50IEhFQURFUiA8PCAiRU9GIjsKLSNpZm5kZWYgQ1NTR1JBTU1BUl9ICi0jZGVm
aW5lIENTU0dSQU1NQVJfSAotRU9GCi0KLW9wZW4gSFBQLCAiPCRmaWxlQmFzZS5jcHAuaCIgb3Ig
b3BlbiBIUFAsICI8JGZpbGVCYXNlLmhwcCIgb3IgZGllOwotd2hpbGUgKDxIUFA+KSB7Ci0gICAg
cHJpbnQgSEVBREVSOwotfQotY2xvc2UgSFBQOwotCi1wcmludCBIRUFERVIgIiNlbmRpZlxuIjsK
LWNsb3NlIEhFQURFUjsKLQotdW5saW5rKCIkZmlsZUJhc2UuY3BwLmgiKTsKLXVubGluaygiJGZp
bGVCYXNlLmhwcCIpOwotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIyNzEgQEAKKy8qIFRoaXMgZmlsZSBpcyBubyBsb25nZXIgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgYXMgcGFydCBvZiB0aGUgV2ViS2l0IGJ1aWxkLiAKKyAgIFRo
aXMgY29kZSBpcyBpbiBtYWludGVuYW5jZSBtb2RlLCBhbmQgaXMgbm8gbG9uZ2VyIGNoYW5naW5n
LiAKKyAgIElmIHlvdSBuZWVkIHRvIGNoYW5nZSBpdCwgcGxlYXNlIGFsc28gY2hhbmdlIFhQYXRo
R3JhbW1hci55IGZyb20gd2hpY2ggaXQgd2FzIG9yaWdpbmFsbHkgZ2VuZXJhdGVkLiAqLworCisv
KiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi4zLiAgKi8KKworLyogU2tlbGV0
b24gaW1wbGVtZW50YXRpb24gZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQworCisg
ICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisg
ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisKKy8qIEFzIGEgc3BlY2lhbCBleGNl
cHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucworICAgcGFy
dCBvciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0
IHdvcmsKKyAgIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBzbyBsb25nIGFzIHRoYXQgd29y
ayBpc24ndCBpdHNlbGYgYQorICAgcGFyc2VyIGdlbmVyYXRvciB1c2luZyB0aGUgc2tlbGV0b24g
b3IgYSBtb2RpZmllZCB2ZXJzaW9uIHRoZXJlb2YKKyAgIGFzIGEgcGFyc2VyIHNrZWxldG9uLiAg
QWx0ZXJuYXRpdmVseSwgaWYgeW91IG1vZGlmeSBvciByZWRpc3RyaWJ1dGUKKyAgIHRoZSBwYXJz
ZXIgc2tlbGV0b24gaXRzZWxmLCB5b3UgbWF5IChhdCB5b3VyIG9wdGlvbikgcmVtb3ZlIHRoaXMK
KyAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQg
dGhlIHJlc3VsdGluZworICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVy
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwg
ZXhjZXB0aW9uLgorCisgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCisgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICov
CisKKy8qIEMgTEFMUigxKSBwYXJzZXIgc2tlbGV0b24gd3JpdHRlbiBieSBSaWNoYXJkIFN0YWxs
bWFuLCBieQorICAgc2ltcGxpZnlpbmcgdGhlIG9yaWdpbmFsIHNvLWNhbGxlZCAic2VtYW50aWMi
IHBhcnNlci4gICovCisKKy8qIEFsbCBzeW1ib2xzIGRlZmluZWQgYmVsb3cgc2hvdWxkIGJlZ2lu
IHdpdGggeXkgb3IgWVksIHRvIGF2b2lkCisgICBpbmZyaW5naW5nIG9uIHVzZXIgbmFtZSBzcGFj
ZS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgZXZlbiBmb3IgbG9jYWwKKyAgIHZhcmlhYmxlcywgYXMg
dGhleSBtaWdodCBvdGhlcndpc2UgYmUgZXhwYW5kZWQgYnkgdXNlciBtYWNyb3MuCisgICBUaGVy
ZSBhcmUgc29tZSB1bmF2b2lkYWJsZSBleGNlcHRpb25zIHdpdGhpbiBpbmNsdWRlIGZpbGVzIHRv
CisgICBkZWZpbmUgbmVjZXNzYXJ5IGxpYnJhcnkgc3ltYm9sczsgdGhleSBhcmUgbm90ZWQgIklO
RlJJTkdFUyBPTgorICAgVVNFUiBOQU1FIFNQQUNFIiBiZWxvdy4gICovCisKKy8qIElkZW50aWZ5
IEJpc29uIG91dHB1dC4gICovCisjZGVmaW5lIFlZQklTT04gMQorCisvKiBCaXNvbiB2ZXJzaW9u
LiAgKi8KKyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisKKy8qIFNrZWxldG9uIG5hbWUu
ICAqLworI2RlZmluZSBZWVNLRUxFVE9OX05BTUUgInlhY2MuYyIKKworLyogUHVyZSBwYXJzZXJz
LiAgKi8KKyNkZWZpbmUgWVlQVVJFIDEKKworLyogVXNpbmcgbG9jYXRpb25zLiAgKi8KKyNkZWZp
bmUgWVlMU1BfTkVFREVEIDAKKworLyogU3Vic3RpdHV0ZSB0aGUgdmFyaWFibGUgYW5kIGZ1bmN0
aW9uIG5hbWVzLiAgKi8KKyNkZWZpbmUgeXlwYXJzZSB4cGF0aHl5cGFyc2UKKyNkZWZpbmUgeXls
ZXggICB4cGF0aHl5bGV4CisjZGVmaW5lIHl5ZXJyb3IgeHBhdGh5eWVycm9yCisjZGVmaW5lIHl5
bHZhbCAgeHBhdGh5eWx2YWwKKyNkZWZpbmUgeXljaGFyICB4cGF0aHl5Y2hhcgorI2RlZmluZSB5
eWRlYnVnIHhwYXRoeXlkZWJ1ZworI2RlZmluZSB5eW5lcnJzIHhwYXRoeXluZXJycworCisKKy8q
IFRva2Vucy4gICovCisjaWZuZGVmIFlZVE9LRU5UWVBFCisjIGRlZmluZSBZWVRPS0VOVFlQRQor
ICAgLyogUHV0IHRoZSB0b2tlbnMgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBzbyB0aGF0IEdEQiBh
bmQgb3RoZXIgZGVidWdnZXJzCisgICAgICBrbm93IGFib3V0IHRoZW0uICAqLworICAgZW51bSB5
eXRva2VudHlwZSB7CisgICAgIE1VTE9QID0gMjU4LAorICAgICBSRUxPUCA9IDI1OSwKKyAgICAg
RVFPUCA9IDI2MCwKKyAgICAgTUlOVVMgPSAyNjEsCisgICAgIFBMVVMgPSAyNjIsCisgICAgIEFO
RCA9IDI2MywKKyAgICAgT1IgPSAyNjQsCisgICAgIEZVTkNUSU9OTkFNRSA9IDI2NSwKKyAgICAg
TElURVJBTCA9IDI2NiwKKyAgICAgTkFNRVRFU1QgPSAyNjcsCisgICAgIE5VTUJFUiA9IDI2OCwK
KyAgICAgTk9ERVRZUEUgPSAyNjksCisgICAgIFZBUklBQkxFUkVGRVJFTkNFID0gMjcwLAorICAg
ICBBWElTTkFNRSA9IDI3MSwKKyAgICAgQ09NTUVOVCA9IDI3MiwKKyAgICAgRE9URE9UID0gMjcz
LAorICAgICBQSSA9IDI3NCwKKyAgICAgTk9ERSA9IDI3NSwKKyAgICAgU0xBU0hTTEFTSCA9IDI3
NiwKKyAgICAgVEVYVCA9IDI3NywKKyAgICAgWFBBVEhfRVJST1IgPSAyNzgKKyAgIH07CisjZW5k
aWYKKy8qIFRva2Vucy4gICovCisjZGVmaW5lIE1VTE9QIDI1OAorI2RlZmluZSBSRUxPUCAyNTkK
KyNkZWZpbmUgRVFPUCAyNjAKKyNkZWZpbmUgTUlOVVMgMjYxCisjZGVmaW5lIFBMVVMgMjYyCisj
ZGVmaW5lIEFORCAyNjMKKyNkZWZpbmUgT1IgMjY0CisjZGVmaW5lIEZVTkNUSU9OTkFNRSAyNjUK
KyNkZWZpbmUgTElURVJBTCAyNjYKKyNkZWZpbmUgTkFNRVRFU1QgMjY3CisjZGVmaW5lIE5VTUJF
UiAyNjgKKyNkZWZpbmUgTk9ERVRZUEUgMjY5CisjZGVmaW5lIFZBUklBQkxFUkVGRVJFTkNFIDI3
MAorI2RlZmluZSBBWElTTkFNRSAyNzEKKyNkZWZpbmUgQ09NTUVOVCAyNzIKKyNkZWZpbmUgRE9U
RE9UIDI3MworI2RlZmluZSBQSSAyNzQKKyNkZWZpbmUgTk9ERSAyNzUKKyNkZWZpbmUgU0xBU0hT
TEFTSCAyNzYKKyNkZWZpbmUgVEVYVCAyNzcKKyNkZWZpbmUgWFBBVEhfRVJST1IgMjc4CisKKwor
CisKKy8qIENvcHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworI2xp
bmUgMjggIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIlhQYXRoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiWFBhdGhQYXJzZXIu
aCIKKyNpbmNsdWRlICJYUGF0aFBhdGguaCIKKyNpbmNsdWRlICJYUGF0aFN0ZXAuaCIKKyNpbmNs
dWRlICJYUGF0aFZhcmlhYmxlUmVmZXJlbmNlLmgiCisKKyNpZiBDT01QSUxFUihNU1ZDKQorLy8g
U2VlIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvMXdlYTV6d2UuYXNw
eAorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDEpCisjZW5kaWYKKworI2RlZmluZSBZWU1B
TExPQyBmYXN0TWFsbG9jCisjZGVmaW5lIFlZRlJFRSBmYXN0RnJlZQorCisjZGVmaW5lIFlZRU5B
QkxFX05MUyAwCisjZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZGVmaW5lIFlZREVCVUcg
MAorI2RlZmluZSBZWU1BWERFUFRIIDEwMDAwCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
dXNpbmcgbmFtZXNwYWNlIFhQYXRoOworCisKKworLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KKyNp
Zm5kZWYgWVlERUJVRworIyBkZWZpbmUgWVlERUJVRyAwCisjZW5kaWYKKworLyogRW5hYmxpbmcg
dmVyYm9zZSBlcnJvciBtZXNzYWdlcy4gICovCisjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCisjIHVu
ZGVmIFlZRVJST1JfVkVSQk9TRQorIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDEKKyNlbHNlCisj
IGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMAorI2VuZGlmCisKKy8qIEVuYWJsaW5nIHRoZSB0b2tl
biB0YWJsZS4gICovCisjaWZuZGVmIFlZVE9LRU5fVEFCTEUKKyMgZGVmaW5lIFlZVE9LRU5fVEFC
TEUgMAorI2VuZGlmCisKKyNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQ
RV9JU19ERUNMQVJFRAordHlwZWRlZiB1bmlvbiBZWVNUWVBFCisjbGluZSA2MCAiV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLnkiCit7IAorICAgIE51bWVyaWNPcDo6T3Bjb2RlIG51bWVyaWNPcGNv
ZGU7IAorICAgIEVxVGVzdE9wOjpPcGNvZGUgZXF1YWxpdHlUZXN0T3Bjb2RlOworICAgIFN0cmlu
Z0ltcGwqIHN0cmluZzsKKyAgICBTdGVwOjpBeGlzIGF4aXM7CisgICAgTG9jYXRpb25QYXRoKiBs
b2NhdGlvblBhdGg7CisgICAgU3RlcDo6Tm9kZVRlc3QqIG5vZGVUZXN0OworICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+KiBleHByZXNzaW9uVmVjdG9yOworICAgIFN0ZXAq
IHN0ZXA7CisgICAgRXhwcmVzc2lvbiogZXhwcmVzc2lvbjsgCit9CisvKiBMaW5lIDE5MyBvZiB5
YWNjLmMuICAqLworI2xpbmUgMTkwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJWVlTVFlQRTsKKyMg
ZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24g
Ki8KKyMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQorIyBkZWZpbmUgWVlTVFlQRV9JU19U
UklWSUFMIDEKKyNlbmRpZgorCisKKworLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBk
ZWNsYXJhdGlvbnMuICAqLworI2xpbmUgMTA0ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIK
KworCitzdGF0aWMgaW50IHhwYXRoeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBQYXJzZXImIHBhcnNl
cikgeyByZXR1cm4gcGFyc2VyLmxleCgqeXlsdmFsKTsgfQorc3RhdGljIHZvaWQgeHBhdGh5eWVy
cm9yKFBhcnNlciYsIGNvbnN0IGNoYXIqKSB7IH0KKworCisKKy8qIExpbmUgMjE2IG9mIHlhY2Mu
Yy4gICovCisjbGluZSAyMDkgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKworI2lmZGVmIHNob3J0Cisj
IHVuZGVmIHNob3J0CisjZW5kaWYKKworI2lmZGVmIFlZVFlQRV9VSU5UOAordHlwZWRlZiBZWVRZ
UEVfVUlOVDggeXl0eXBlX3VpbnQ4OworI2Vsc2UKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB5eXR5
cGVfdWludDg7CisjZW5kaWYKKworI2lmZGVmIFlZVFlQRV9JTlQ4Cit0eXBlZGVmIFlZVFlQRV9J
TlQ4IHl5dHlwZV9pbnQ4OworI2VsaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5
OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0Nf
VkVSKQordHlwZWRlZiBzaWduZWQgY2hhciB5eXR5cGVfaW50ODsKKyNlbHNlCit0eXBlZGVmIHNo
b3J0IGludCB5eXR5cGVfaW50ODsKKyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX1VJTlQxNgordHlw
ZWRlZiBZWVRZUEVfVUlOVDE2IHl5dHlwZV91aW50MTY7CisjZWxzZQordHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBpbnQgeXl0eXBlX3VpbnQxNjsKKyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX0lOVDE2
Cit0eXBlZGVmIFlZVFlQRV9JTlQxNiB5eXR5cGVfaW50MTY7CisjZWxzZQordHlwZWRlZiBzaG9y
dCBpbnQgeXl0eXBlX2ludDE2OworI2VuZGlmCisKKyNpZm5kZWYgWVlTSVpFX1QKKyMgaWZkZWYg
X19TSVpFX1RZUEVfXworIyAgZGVmaW5lIFlZU0laRV9UIF9fU0laRV9UWVBFX18KKyMgZWxpZiBk
ZWZpbmVkIHNpemVfdAorIyAgZGVmaW5lIFlZU0laRV9UIHNpemVfdAorIyBlbGlmICEgZGVmaW5l
ZCBZWVNJWkVfVCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18g
XAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjICBp
bmNsdWRlIDxzdGRkZWYuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAg
ZGVmaW5lIFlZU0laRV9UIHNpemVfdAorIyBlbHNlCisjICBkZWZpbmUgWVlTSVpFX1QgdW5zaWdu
ZWQgaW50CisjIGVuZGlmCisjZW5kaWYKKworI2RlZmluZSBZWVNJWkVfTUFYSU1VTSAoKFlZU0la
RV9UKSAtMSkKKworI2lmbmRlZiBZWV8KKyMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMgJiYgWVlF
TkFCTEVfTkxTCisjICBpZiBFTkFCTEVfTkxTCisjICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJ
TkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICAgZGVmaW5lIFlZXyhtc2dpZCkgZGdl
dHRleHQgKCJiaXNvbi1ydW50aW1lIiwgbXNnaWQpCisjICBlbmRpZgorIyBlbmRpZgorIyBpZm5k
ZWYgWVlfCisjICBkZWZpbmUgWVlfKG1zZ2lkKSBtc2dpZAorIyBlbmRpZgorI2VuZGlmCisKKy8q
IFN1cHByZXNzIHVudXNlZC12YXJpYWJsZSB3YXJuaW5ncyBieSAidXNpbmciIEUuICAqLworI2lm
ICEgZGVmaW5lZCBsaW50IHx8IGRlZmluZWQgX19HTlVDX18KKyMgZGVmaW5lIFlZVVNFKGUpICgo
dm9pZCkgKGUpKQorI2Vsc2UKKyMgZGVmaW5lIFlZVVNFKGUpIC8qIGVtcHR5ICovCisjZW5kaWYK
KworLyogSWRlbnRpdHkgZnVuY3Rpb24sIHVzZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQg
Y29uc3RhbnQgY29uZGl0aW9ucy4gICovCisjaWZuZGVmIGxpbnQKKyMgZGVmaW5lIFlZSUQobikg
KG4pCisjZWxzZQorI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNf
XyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0
YXRpYyBpbnQKK1lZSUQgKGludCBpKQorI2Vsc2UKK3N0YXRpYyBpbnQKK1lZSUQgKGkpCisgICAg
aW50IGk7CisjZW5kaWYKK3sKKyAgcmV0dXJuIGk7Cit9CisjZW5kaWYKKworI2lmICEgZGVmaW5l
ZCB5eW92ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRQorCisvKiBUaGUgcGFyc2VyIGludm9rZXMg
YWxsb2NhIG9yIG1hbGxvYzsgZGVmaW5lIHRoZSBuZWNlc3Nhcnkgc3ltYm9scy4gICovCisKKyMg
aWZkZWYgWVlTVEFDS19VU0VfQUxMT0NBCisjICBpZiBZWVNUQUNLX1VTRV9BTExPQ0EKKyMgICBp
ZmRlZiBfX0dOVUNfXworIyAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBfX2J1aWx0aW5fYWxsb2Nh
CisjICAgZWxpZiBkZWZpbmVkIF9fQlVJTFRJTl9WQV9BUkdfSU5DUgorIyAgICBpbmNsdWRlIDxh
bGxvY2EuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgIGVsaWYgZGVm
aW5lZCBfQUlYCisjICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIF9fYWxsb2NhCisjICAgZWxpZiBk
ZWZpbmVkIF9NU0NfVkVSCisjICAgIGluY2x1ZGUgPG1hbGxvYy5oPiAvKiBJTkZSSU5HRVMgT04g
VVNFUiBOQU1FIFNQQUNFICovCisjICAgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQorIyAgIGVsc2UK
KyMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCisjICAgIGlmICEgZGVmaW5lZCBfQUxM
T0NBX0ggJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCisjICAgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVT
RVIgTkFNRSBTUEFDRSAqLworIyAgICAgaWZuZGVmIF9TVERMSUJfSAorIyAgICAgIGRlZmluZSBf
U1RETElCX0ggMQorIyAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZW5kaWYK
KyMgZW5kaWYKKworIyBpZmRlZiBZWVNUQUNLX0FMTE9DCisgICAvKiBQYWNpZnkgR0NDJ3MgYGVt
cHR5IGlmLWJvZHknIHdhcm5pbmcuICAqLworIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRv
IHsgLyogZW1wdHkgKi87IH0gd2hpbGUgKFlZSUQgKDApKQorIyAgaWZuZGVmIFlZU1RBQ0tfQUxM
T0NfTUFYSU1VTQorICAgIC8qIFRoZSBPUyBtaWdodCBndWFyYW50ZWUgb25seSBvbmUgZ3VhcmQg
cGFnZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjaywKKyAgICAgICBhbmQgYSBwYWdlIHNpemUg
Y2FuIGJlIGFzIHNtYWxsIGFzIDQwOTYgYnl0ZXMuICBTbyB3ZSBjYW5ub3Qgc2FmZWx5CisgICAg
ICAgaW52b2tlIGFsbG9jYSAoTikgaWYgTiBleGNlZWRzIDQwOTYuICBVc2UgYSBzbGlnaHRseSBz
bWFsbGVyIG51bWJlcgorICAgICAgIHRvIGFsbG93IGZvciBhIGZldyBjb21waWxlci1hbGxvY2F0
ZWQgdGVtcG9yYXJ5IHN0YWNrIHNsb3RzLiAgKi8KKyMgICBkZWZpbmUgWVlTVEFDS19BTExPQ19N
QVhJTVVNIDQwMzIgLyogcmVhc29uYWJsZSBjaXJjYSAyMDA2ICovCisjICBlbmRpZgorIyBlbHNl
CisjICBkZWZpbmUgWVlTVEFDS19BTExPQyBZWU1BTExPQworIyAgZGVmaW5lIFlZU1RBQ0tfRlJF
RSBZWUZSRUUKKyMgIGlmbmRlZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KKyMgICBkZWZpbmUgWVlT
VEFDS19BTExPQ19NQVhJTVVNIFlZU0laRV9NQVhJTVVNCisjICBlbmRpZgorIyAgaWYgKGRlZmlu
ZWQgX19jcGx1c3BsdXMgJiYgISBkZWZpbmVkIF9TVERMSUJfSCBcCisgICAgICAgJiYgISAoKGRl
ZmluZWQgWVlNQUxMT0MgfHwgZGVmaW5lZCBtYWxsb2MpIFwKKwkgICAgICYmIChkZWZpbmVkIFlZ
RlJFRSB8fCBkZWZpbmVkIGZyZWUpKSkKKyMgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgIGlmbmRlZiBfU1RETElCX0gKKyMgICAgZGVm
aW5lIF9TVERMSUJfSCAxCisjICAgZW5kaWYKKyMgIGVuZGlmCisjICBpZm5kZWYgWVlNQUxMT0MK
KyMgICBkZWZpbmUgWVlNQUxMT0MgbWFsbG9jCisjICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAh
IGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlf
X0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZF
UikKK3ZvaWQgKm1hbGxvYyAoWVlTSVpFX1QpOyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQ
QUNFICovCisjICAgZW5kaWYKKyMgIGVuZGlmCisjICBpZm5kZWYgWVlGUkVFCisjICAgZGVmaW5l
IFlZRlJFRSBmcmVlCisjICAgaWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZpbmVkIF9TVERMSUJf
SCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8
fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCit2b2lkIGZyZWUgKHZv
aWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBlbmRpZgorIyAg
ZW5kaWYKKyMgZW5kaWYKKyNlbmRpZiAvKiAhIGRlZmluZWQgeXlvdmVyZmxvdyB8fCBZWUVSUk9S
X1ZFUkJPU0UgKi8KKworCisjaWYgKCEgZGVmaW5lZCB5eW92ZXJmbG93IFwKKyAgICAgJiYgKCEg
ZGVmaW5lZCBfX2NwbHVzcGx1cyBcCisJIHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAm
JiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkKKworLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxp
Z25lZCBmb3IgYW55IHN0YWNrIG1lbWJlci4gICovCit1bmlvbiB5eWFsbG9jCit7CisgIHl5dHlw
ZV9pbnQxNiB5eXNzOworICBZWVNUWVBFIHl5dnM7CisgIH07CisKKy8qIFRoZSBzaXplIG9mIHRo
ZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICov
CisjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0g
MSkKKworLyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhvbGQgYWxs
IHN0YWNrcywgZWFjaCB3aXRoCisgICBOIGVsZW1lbnRzLiAgKi8KKyMgZGVmaW5lIFlZU1RBQ0tf
QllURVMoTikgXAorICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAo
WVlTVFlQRSkpIFwKKyAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKKworLyogQ29weSBDT1VO
VCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRv
CisgICBub3Qgb3ZlcmxhcC4gICovCisjIGlmbmRlZiBZWUNPUFkKKyMgIGlmIGRlZmluZWQgX19H
TlVDX18gJiYgMSA8IF9fR05VQ19fCisjICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQp
IFwKKyAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKFRvLCBGcm9tLCAoQ291bnQpICogc2l6ZW9mICgq
KEZyb20pKSkKKyMgIGVsc2UKKyMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkJCVwK
KyAgICAgIGRvCQkJCQlcCisJewkJCQkJXAorCSAgWVlTSVpFX1QgeXlpOwkJCQlcCisJICBmb3Ig
KHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKQlcCisJICAgIChUbylbeXlpXSA9IChGcm9t
KVt5eWldOwkJXAorCX0JCQkJCVwKKyAgICAgIHdoaWxlIChZWUlEICgwKSkKKyMgIGVuZGlmCisj
IGVuZGlmCisKKy8qIFJlbG9jYXRlIFNUQUNLIGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUg
bmV3IG9uZS4gIFRoZQorICAgbG9jYWwgdmFyaWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUg
Z2l2ZSB0aGUgb2xkIGFuZCBuZXcgbnVtYmVyIG9mCisgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ss
IGFuZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZQorICAgc3RhY2suICBBZHZh
bmNlIFlZUFRSIHRvIGEgcHJvcGVybHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKKyAg
IHN0YWNrLiAgKi8KKyMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCisgICAg
ZG8JCQkJCQkJCQlcCisgICAgICB7CQkJCQkJCQkJXAorCVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJ
CQkJXAorCVlZQ09QWSAoJnl5cHRyLT5TdGFjaywgU3RhY2ssIHl5c2l6ZSk7CQkJCVwKKwlTdGFj
ayA9ICZ5eXB0ci0+U3RhY2s7CQkJCQkJXAorCXl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNp
emVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWElNVU07IFwKKwl5eXB0ciArPSB5eW5ld2J5
dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlcCisgICAgICB9CQkJCQkJCQkJXAorICAgIHdoaWxl
IChZWUlEICgwKSkKKworI2VuZGlmCisKKy8qIFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRo
ZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCisjZGVmaW5lIFlZRklOQUwgIDUyCisvKiBZWUxBU1Qg
LS0gTGFzdCBpbmRleCBpbiBZWVRBQkxFLiAgKi8KKyNkZWZpbmUgWVlMQVNUICAgMTMyCisKKy8q
IFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KKyNkZWZpbmUgWVlOVE9LRU5T
ICAzMworLyogWVlOTlRTIC0tIE51bWJlciBvZiBub250ZXJtaW5hbHMuICAqLworI2RlZmluZSBZ
WU5OVFMgIDI4CisvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2YgcnVsZXMuICAqLworI2RlZmluZSBZ
WU5SVUxFUyAgNjQKKy8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLworI2RlZmlu
ZSBZWU5TVEFURVMgIDEwMQorCisvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0gQmlzb24gc3ltYm9s
IG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAgKi8KKyNkZWZpbmUgWVlVTkRFRlRPSyAg
MgorI2RlZmluZSBZWU1BWFVUT0sgICAyNzgKKworI2RlZmluZSBZWVRSQU5TTEFURShZWVgpCQkJ
CQkJXAorICAoKHVuc2lnbmVkIGludCkgKFlZWCkgPD0gWVlNQVhVVE9LID8geXl0cmFuc2xhdGVb
WVlYXSA6IFlZVU5ERUZUT0spCisKKy8qIFlZVFJBTlNMQVRFW1lZTEVYXSAtLSBCaXNvbiBzeW1i
b2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gWVlMRVguICAqLworc3RhdGljIGNvbnN0IHl5dHlw
ZV91aW50OCB5eXRyYW5zbGF0ZVtdID0KK3sKKyAgICAgICAwLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgMjYsICAgIDI3LCAg
ICAgMiwgICAgIDIsICAgIDMxLCAgICAgMiwgICAgMzAsICAgIDI0LCAgICAgMiwgICAgIDIsCisg
ICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAyNSwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwKKyAgICAgICAyLCAgICAyOCwgICAgIDIsICAgIDI5LCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAzMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAg
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAyLCAg
ICAgMywgICAgIDQsCisgICAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEw
LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMKK307CisKKyNpZiBZWURFQlVH
CisvKiBZWVBSSFNbWVlOXSAtLSBJbmRleCBvZiB0aGUgZmlyc3QgUkhTIHN5bWJvbCBvZiBydWxl
IG51bWJlciBZWU4gaW4KKyAgIFlZUkhTLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDgg
eXlwcmhzW10gPQoreworICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAg
OSwgICAgMTEsICAgIDEzLCAgICAxNiwgICAgMTksCisgICAgICAyMSwgICAgMjUsICAgIDI5LCAg
ICAzMiwgICAgMzUsICAgIDM5LCAgICA0MywgICAgNDUsICAgIDQ3LCAgICA0OSwKKyAgICAgIDUz
LCAgICA1NywgICAgNjEsICAgIDY1LCAgICA3MCwgICAgNzEsICAgIDczLCAgICA3NSwgICAgNzgs
ICAgIDgyLAorICAgICAgODQsICAgIDg2LCAgICA4OCwgICAgOTAsICAgIDk0LCAgICA5NiwgICAg
OTgsICAgMTAwLCAgIDEwNCwgICAxMDksCisgICAgIDExMSwgICAxMTUsICAgMTE3LCAgIDExOSwg
ICAxMjMsICAgMTI1LCAgIDEyNywgICAxMzEsICAgMTM1LCAgIDEzNywKKyAgICAgMTQwLCAgIDE0
MiwgICAxNDYsICAgMTQ4LCAgIDE1MiwgICAxNTQsICAgMTU4LCAgIDE2MCwgICAxNjQsICAgMTY2
LAorICAgICAxNzAsICAgMTc0LCAgIDE3NiwgICAxODAsICAgMTgyCit9OworCisvKiBZWVJIUyAt
LSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHJ1bGVzJyBSSFMuICAqLworc3RhdGljIGNv
bnN0IHl5dHlwZV9pbnQ4IHl5cmhzW10gPQoreworICAgICAgMzQsICAgICAwLCAgICAtMSwgICAg
MzUsICAgIC0xLCAgICA1NCwgICAgLTEsICAgIDM3LCAgICAtMSwgICAgMzgsCisgICAgICAtMSwg
ICAgMjQsICAgIC0xLCAgICAyNCwgICAgMzgsICAgIC0xLCAgICA0NSwgICAgMzgsICAgIC0xLCAg
ICAzOSwKKyAgICAgIC0xLCAgICAzOCwgICAgMjQsICAgIDM5LCAgICAtMSwgICAgMzgsICAgIDQ1
LCAgICAzOSwgICAgLTEsICAgIDQxLAorICAgICAgNDIsICAgIC0xLCAgICAxMiwgICAgNDIsICAg
IC0xLCAgICA0MCwgICAgNDEsICAgIDQyLCAgICAtMSwgICAgNDAsCisgICAgICAxMiwgICAgNDIs
ICAgIC0xLCAgICA0NiwgICAgLTEsICAgIDE2LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyMCwK
KyAgICAgIDI2LCAgICAyNywgICAgLTEsICAgIDIyLCAgICAyNiwgICAgMjcsICAgIC0xLCAgICAx
NywgICAgMjYsICAgIDI3LAorICAgICAgLTEsICAgIDE5LCAgICAyNiwgICAgMjcsICAgIC0xLCAg
ICAxOSwgICAgMjYsICAgIDExLCAgICAyNywgICAgLTEsCisgICAgICAtMSwgICAgNDMsICAgIC0x
LCAgICA0NCwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDI4LCAgICAzNSwKKyAgICAg
IDI5LCAgICAtMSwgICAgMjEsICAgIC0xLCAgICAzMCwgICAgLTEsICAgIDE4LCAgICAtMSwgICAg
MTUsICAgIC0xLAorICAgICAgMjYsICAgIDM1LCAgICAyNywgICAgLTEsICAgIDExLCAgICAtMSwg
ICAgMTMsICAgIC0xLCAgICA0OCwgICAgLTEsCisgICAgICAxMCwgICAgMjYsICAgIDI3LCAgICAt
MSwgICAgMTAsICAgIDI2LCAgICA0OSwgICAgMjcsICAgIC0xLCAgICA1MCwKKyAgICAgIC0xLCAg
ICA0OSwgICAgMzEsICAgIDUwLCAgICAtMSwgICAgMzUsICAgIC0xLCAgICA1MiwgICAgLTEsICAg
IDUxLAorICAgICAgMzIsICAgIDUyLCAgICAtMSwgICAgMzYsICAgIC0xLCAgICA1MywgICAgLTEs
ICAgIDUzLCAgICAyNCwgICAgMzgsCisgICAgICAtMSwgICAgNTMsICAgIDQ1LCAgICAzOCwgICAg
LTEsICAgIDQ3LCAgICAtMSwgICAgNDcsICAgIDQzLCAgICAtMSwKKyAgICAgIDU1LCAgICAtMSwg
ICAgNTQsICAgICA5LCAgICA1NSwgICAgLTEsICAgIDU2LCAgICAtMSwgICAgNTUsICAgICA4LAor
ICAgICAgNTYsICAgIC0xLCAgICA1NywgICAgLTEsICAgIDU2LCAgICAgNSwgICAgNTcsICAgIC0x
LCAgICA1OCwgICAgLTEsCisgICAgICA1NywgICAgIDQsICAgIDU4LCAgICAtMSwgICAgNTksICAg
IC0xLCAgICA1OCwgICAgIDcsICAgIDU5LCAgICAtMSwKKyAgICAgIDU4LCAgICAgNiwgICAgNTks
ICAgIC0xLCAgICA2MCwgICAgLTEsICAgIDU5LCAgICAgMywgICAgNjAsICAgIC0xLAorICAgICAg
NTEsICAgIC0xLCAgICAgNiwgICAgNjAsICAgIC0xCit9OworCisvKiBZWVJMSU5FW1lZTl0gLS0g
c291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KK3N0YXRp
YyBjb25zdCB5eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9Cit7CisgICAgICAgMCwgICAxMTQsICAg
MTE0LCAgIDEyMSwgICAxMjUsICAgMTMxLCAgIDEzNSwgICAxNDAsICAgMTQ1LCAgIDE1MywKKyAg
ICAgMTU5LCAgIDE2NSwgICAxNzQsICAgMTg0LCAgIDIwMiwgICAyMTMsICAgMjMxLCAgIDIzNSwg
ICAyMzcsICAgMjQ0LAorICAgICAyNDksICAgMjU0LCAgIDI1OSwgICAyNjQsICAgMjczLCAgIDI3
NywgICAyODEsICAgMjg3LCAgIDI5NSwgICAzMDIsCisgICAgIDMwOSwgICAzMTQsICAgMzIxLCAg
IDMyNywgICAzMzIsICAgMzM4LCAgIDM0NCwgICAzNDgsICAgMzU2LCAgIDM2NywKKyAgICAgMzcz
LCAgIDM4MSwgICAzODUsICAgMzg3LCAgIDM5NCwgICAzOTksICAgNDAxLCAgIDQwNywgICA0MTYs
ICAgNDE4LAorICAgICA0MjYsICAgNDI4LCAgIDQzNSwgICA0MzcsICAgNDQ0LCAgIDQ0NiwgICA0
NTMsICAgNDU1LCAgIDQ2MiwgICA0NjQsCisgICAgIDQ2OSwgICA0NzYsICAgNDc4LCAgIDQ4NSwg
ICA0ODcKK307CisjZW5kaWYKKworI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZ
VE9LRU5fVEFCTEUKKy8qIFlZVE5BTUVbU1lNQk9MLU5VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhl
IHN5bWJvbCBTWU1CT0wtTlVNLgorICAgRmlyc3QsIHRoZSB0ZXJtaW5hbHMsIHRoZW4sIHN0YXJ0
aW5nIGF0IFlZTlRPS0VOUywgbm9udGVybWluYWxzLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpj
b25zdCB5eXRuYW1lW10gPQoreworICAiJGVuZCIsICJlcnJvciIsICIkdW5kZWZpbmVkIiwgIk1V
TE9QIiwgIlJFTE9QIiwgIkVRT1AiLCAiTUlOVVMiLAorICAiUExVUyIsICJBTkQiLCAiT1IiLCAi
RlVOQ1RJT05OQU1FIiwgIkxJVEVSQUwiLCAiTkFNRVRFU1QiLCAiTlVNQkVSIiwKKyAgIk5PREVU
WVBFIiwgIlZBUklBQkxFUkVGRVJFTkNFIiwgIkFYSVNOQU1FIiwgIkNPTU1FTlQiLCAiRE9URE9U
IiwgIlBJIiwKKyAgIk5PREUiLCAiU0xBU0hTTEFTSCIsICJURVhUIiwgIlhQQVRIX0VSUk9SIiwg
IicvJyIsICInQCciLCAiJygnIiwgIicpJyIsCisgICInWyciLCAiJ10nIiwgIicuJyIsICInLCci
LCAiJ3wnIiwgIiRhY2NlcHQiLCAiVG9wIiwgIkV4cHIiLAorICAiTG9jYXRpb25QYXRoIiwgIkFi
c29sdXRlTG9jYXRpb25QYXRoIiwgIlJlbGF0aXZlTG9jYXRpb25QYXRoIiwgIlN0ZXAiLAorICAi
QXhpc1NwZWNpZmllciIsICJOb2RlVGVzdCIsICJPcHRpb25hbFByZWRpY2F0ZUxpc3QiLCAiUHJl
ZGljYXRlTGlzdCIsCisgICJQcmVkaWNhdGUiLCAiRGVzY2VuZGFudE9yU2VsZiIsICJBYmJyZXZp
YXRlZFN0ZXAiLCAiUHJpbWFyeUV4cHIiLAorICAiRnVuY3Rpb25DYWxsIiwgIkFyZ3VtZW50TGlz
dCIsICJBcmd1bWVudCIsICJVbmlvbkV4cHIiLCAiUGF0aEV4cHIiLAorICAiRmlsdGVyRXhwciIs
ICJPckV4cHIiLCAiQW5kRXhwciIsICJFcXVhbGl0eUV4cHIiLCAiUmVsYXRpb25hbEV4cHIiLAor
ICAiQWRkaXRpdmVFeHByIiwgIk11bHRpcGxpY2F0aXZlRXhwciIsICJVbmFyeUV4cHIiLCAwCit9
OworI2VuZGlmCisKKyMgaWZkZWYgWVlQUklOVAorLyogWVlUT0tOVU1bWVlMRVgtTlVNXSAtLSBJ
bnRlcm5hbCB0b2tlbiBudW1iZXIgY29ycmVzcG9uZGluZyB0bworICAgdG9rZW4gWVlMRVgtTlVN
LiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5dG9rbnVtW10gPQoreworICAgICAg
IDAsICAgMjU2LCAgIDI1NywgICAyNTgsICAgMjU5LCAgIDI2MCwgICAyNjEsICAgMjYyLCAgIDI2
MywgICAyNjQsCisgICAgIDI2NSwgICAyNjYsICAgMjY3LCAgIDI2OCwgICAyNjksICAgMjcwLCAg
IDI3MSwgICAyNzIsICAgMjczLCAgIDI3NCwKKyAgICAgMjc1LCAgIDI3NiwgICAyNzcsICAgMjc4
LCAgICA0NywgICAgNjQsICAgIDQwLCAgICA0MSwgICAgOTEsICAgIDkzLAorICAgICAgNDYsICAg
IDQ0LCAgIDEyNAorfTsKKyMgZW5kaWYKKworLyogWVlSMVtZWU5dIC0tIFN5bWJvbCBudW1iZXIg
b2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICovCitzdGF0aWMgY29uc3QgeXl0eXBl
X3VpbnQ4IHl5cjFbXSA9Cit7CisgICAgICAgMCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM2LCAgICAzNywgICAgMzcsICAgIDM3LCAgICAzOCwKKyAgICAgIDM4LCAgICAzOCwgICAg
MzksICAgIDM5LCAgICAzOSwgICAgMzksICAgIDM5LCAgICA0MCwgICAgNDAsICAgIDQxLAorICAg
ICAgNDEsICAgIDQxLCAgICA0MSwgICAgNDEsICAgIDQyLCAgICA0MiwgICAgNDMsICAgIDQzLCAg
ICA0NCwgICAgNDUsCisgICAgICA0NiwgICAgNDYsICAgIDQ3LCAgICA0NywgICAgNDcsICAgIDQ3
LCAgICA0NywgICAgNDgsICAgIDQ4LCAgICA0OSwKKyAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAg
IDUxLCAgICA1MiwgICAgNTIsICAgIDUyLCAgICA1MiwgICAgNTMsICAgIDUzLAorICAgICAgNTQs
ICAgIDU0LCAgICA1NSwgICAgNTUsICAgIDU2LCAgICA1NiwgICAgNTcsICAgIDU3LCAgICA1OCwg
ICAgNTgsCisgICAgICA1OCwgICAgNTksICAgIDU5LCAgICA2MCwgICAgNjAKK307CisKKy8qIFlZ
UjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9m
IHJ1bGUgWVlOLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KK3sKKyAg
ICAgICAwLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwg
ICAgIDIsICAgICAxLAorICAgICAgIDMsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAg
MywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsCisgICAgICAgMywgICAgIDMsICAgICAzLCAg
ICAgNCwgICAgIDAsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwKKyAgICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDQs
ICAgICAxLAorICAgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAg
IDMsICAgICAzLCAgICAgMSwgICAgIDIsCisgICAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywg
ICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAzLCAgICAg
MSwgICAgIDMsICAgICAxLCAgICAgMgorfTsKKworLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0g
RGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCisgICBTVEFURS1OVU0gd2hlbiBZ
WVRBQkxFIGRvZXNuJ3Qgc3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KKyAgIG1l
YW5zIHRoZSBkZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWlu
dDggeXlkZWZhY3RbXSA9Cit7CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAzNCwgICAgMjQs
ICAgIDM1LCAgICAzMiwgICAgMTcsICAgICAwLCAgICAzMSwKKyAgICAgICAwLCAgICAgMCwgICAg
MjksICAgICAwLCAgICAgNiwgICAgMTgsICAgICAwLCAgICAzMCwgICAgIDAsICAgICAyLAorICAg
ICAgNDQsICAgICA0LCAgICAgNSwgICAgIDksICAgICAwLCAgICAyNCwgICAgIDAsICAgIDE2LCAg
ICA0OCwgICAgMzYsCisgICAgICA2MywgICAgNDIsICAgIDQ1LCAgICAgMywgICAgNTAsICAgIDUy
LCAgICA1NCwgICAgNTYsICAgIDU4LCAgICA2MSwKKyAgICAgIDY0LCAgICAgMCwgICAgIDAsICAg
IDEzLCAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDcs
ICAgICAwLCAgICAgMSwgICAgIDAsICAgICAwLCAgICAyNCwgICAgMjQsICAgIDEyLCAgICAgOCwg
ICAgNDksCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDM3LCAgICA0MSwgICAgIDAsICAgIDM5LCAg
ICAgMCwgICAgMjcsICAgIDIxLCAgICAgMCwgICAgMjIsICAgIDE5LAorICAgICAgMjAsICAgIDMz
LCAgICAxMCwgICAgMTEsICAgIDE1LCAgICAxNCwgICAgNDMsICAgIDQ2LCAgICA0NywgICAgNTEs
CisgICAgICA1MywgICAgNTUsICAgIDU3LCAgICA2MCwgICAgNTksICAgIDYyLCAgICAzOCwgICAg
IDAsICAgIDI4LCAgICAyMywKKyAgICAgIDQwCit9OworCisvKiBZWURFRkdPVE9bTlRFUk0tTlVN
XS4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXlkZWZnb3RvW10gPQoreworICAgICAg
LTEsICAgIDE4LCAgICA3MSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICA3MiwgICAgNzMsICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOQorfTsKKworLyogWVlQQUNUW1NUQVRFLU5VTV0g
LS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCisgICBTVEFURS1O
VU0uICAqLworI2RlZmluZSBZWVBBQ1RfTklORiAtMzcKK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50
OCB5eXBhY3RbXSA9Cit7CisgICAgICA4MSwgICAgODEsICAgIC04LCAgIC0zNywgICAgLTcsICAg
LTM3LCAgIC0zNywgICAtMzcsICAgIDE0LCAgIC0zNywKKyAgICAgIDE3LCAgICAyMCwgICAtMzcs
ICAgIDIxLCAgICAgOCwgICAtMzcsICAgIDgxLCAgIC0zNywgICAgNDgsICAgLTM3LAorICAgICAt
MzcsICAgLTM3LCAgIC0xNywgICAtMzcsICAgIDIyLCAgICAtNywgICAgIDgsICAgLTM3LCAgICAt
NywgICAtMzcsCisgICAgICAyMywgICAtMzcsICAgIC05LCAgICAgMSwgICAgNDUsICAgIDQ5LCAg
ICA1MiwgICAgMTAsICAgIDU0LCAgIC0zNywKKyAgICAgLTM3LCAgICA1OSwgICAgODEsICAgLTM3
LCAgICAtNywgICAtMzcsICAgIDMxLCAgICAtNSwgICAgMzIsICAgIDMzLAorICAgICAtMTcsICAg
IDM0LCAgIC0zNywgICAgIDgsICAgICA4LCAgICAtNywgICAgLTcsICAgLTM3LCAgIC0xNywgICAg
LTcsCisgICAgIDEwMiwgICAgIDgsICAgICA4LCAgICA4MSwgICAgODEsICAgIDgxLCAgICA4MSwg
ICAgODEsICAgIDgxLCAgICA4MSwKKyAgICAgLTM3LCAgIC0zNywgICAtMTgsICAgLTM3LCAgICAz
NSwgICAtMzcsICAgLTM3LCAgICAzNiwgICAtMzcsICAgLTM3LAorICAgICAtMzcsICAgLTM3LCAg
IC0zNywgICAtMzcsICAgLTM3LCAgIC0zNywgICAtMzcsICAgLTE3LCAgIC0xNywgICAgNDUsCisg
ICAgICA0OSwgICAgNTIsICAgIDEwLCAgICA1NCwgICAgNTQsICAgLTM3LCAgIC0zNywgICAgODEs
ICAgLTM3LCAgIC0zNywKKyAgICAgLTM3Cit9OworCisvKiBZWVBHT1RPW05URVJNLU5VTV0uICAq
Lworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5cGdvdG9bXSA9Cit7CisgICAgIC0zNywgICAt
MzcsICAgICAzLCAgIC0zNywgICAtMzcsICAgLTEyLCAgIC0yMiwgICAtMzcsICAgIDM4LCAgIC0y
MCwKKyAgICAgIDYwLCAgIC0zNiwgICAtMjEsICAgLTM3LCAgIC0zNywgICAtMzcsICAgLTM3LCAg
IC0yNCwgICAtMzcsICAgIDMwLAorICAgICAtMzcsICAgLTM3LCAgICAxOSwgICAgNDAsICAgIDQz
LCAgICAyOSwgICAtMTYsICAgIC0xCit9OworCisvKiBZWVRBQkxFW1lZUEFDVFtTVEFURS1OVU1d
XS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKKyAgIHBvc2l0aXZlLCBzaGlm
dCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVsZSB3aGljaAorICAgbnVt
YmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdoYXQgWVlERUZBQ1Qgc2F5cy4KKyAg
IElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KKyNkZWZpbmUgWVlUQUJMRV9OSU5G
IC0xCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dGFibGVbXSA9Cit7CisgICAgICA0MCwg
ICAgNTQsICAgIDUwLCAgICAxOSwgICAgMTIsICAgIDU3LCAgICA3NywgICAgNTMsICAgIDc1LCAg
ICA5NiwKKyAgICAgIDYzLCAgICA2MiwgICAgMTIsICAgIDk3LCAgICA1OCwgICAgNjEsICAgIDY3
LCAgICA2OCwgICAgNDEsICAgIDUxLAorICAgICAgIDQsICAgIDQyLCAgICA3OCwgICAgNzUsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgNTQsCisgICAgICAxMywgICAgODIs
ICAgIDgzLCAgICAxNSwgICAgNTUsICAgIDg0LCAgICA4NSwgICAgNTQsICAgIDE3LCAgICAgOCwK
KyAgICAgIDQ2LCAgICAxMCwgICAgMTEsICAgIDQ3LCAgICAxMywgICAgNzQsICAgIDQ4LCAgICA0
OSwgICAgNTIsICAgIDg3LAorICAgICAgODgsICAgIDkzLCAgICA5NCwgICAgNjQsICAgIDY1LCAg
ICA2MCwgICAgNjYsICAgIDY5LCAgICA3NiwgICAgNzksCisgICAgICA4MCwgICAgODEsICAgIDU2
LCAgICA5OSwgICAgOTgsICAgICAxLCAgICA1NCwgICAgNTQsICAgIDk1LCAgICAgMiwKKyAgICAg
ICAzLCAgICAgNCwgICAgIDUsICAgMTAwLCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLAorICAgICAgMTIsICAgIDEzLCAgICA4OSwgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgNzAsICAgICAxLCAgICA1OSwgICAgMTcsCisgICAgICA4NiwgICAgIDIsICAgICAzLCAgICAg
NCwgICAgIDUsICAgIDkyLCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICA5MCwgICAgMTQsICAgIDE1LCAgICAxNiwgICAgOTEsICAg
ICAwLAorICAgICAgIDAsICAgIDE3LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDAs
ICAgICA2LCAgICAgNywgICAgIDgsCisgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgICAwLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwg
ICAgMTcKK307CisKK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eWNoZWNrW10gPQoreworICAg
ICAgIDEsICAgIDIyLCAgICAxNCwgICAgIDAsICAgIDIxLCAgICAyNSwgICAgMTEsICAgIDI0LCAg
ICA0NCwgICAgMjcsCisgICAgICAgOSwgICAgMzIsICAgIDIxLCAgICAzMSwgICAgMjYsICAgIDI0
LCAgICAgNiwgICAgIDcsICAgIDI2LCAgICAxNiwKKyAgICAgIDEyLCAgICAyOCwgICAgMjcsICAg
IDU5LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDUwLAorICAgICAgMjIs
ICAgIDUzLCAgICA1NCwgICAgMjUsICAgIDEyLCAgICA1NSwgICAgNTYsICAgIDU4LCAgICAzMCwg
ICAgMTcsCisgICAgICAyNiwgICAgMTksICAgIDIwLCAgICAyNiwgICAgMjIsICAgIDQyLCAgICAy
NiwgICAgMjYsICAgICAwLCAgICA2MSwKKyAgICAgIDYyLCAgICA2NywgICAgNjgsICAgICA4LCAg
ICAgNSwgICAgMzIsICAgICA0LCAgICAgMywgICAgMjcsICAgIDI3LAorICAgICAgMjcsICAgIDI3
LCAgICAyNCwgICAgMjcsICAgIDI5LCAgICAgNiwgICAgODcsICAgIDg4LCAgICA2OSwgICAgMTAs
CisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICA5NywgICAgMTUsICAgIDE2LCAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgNjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAgNiwgICAgMjgsICAgIDMwLAorICAgICAgNjAsICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICA2NiwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgNjQsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDY1LCAgICAtMSwKKyAgICAgIC0xLCAgICAzMCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIC0xLCAgICAxNSwgICAgMTYsICAgIDE3LAorICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAtMSwgICAgMjQsICAgIDI1LCAgICAyNiwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIDMwCit9OworCisvKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBUaGUgKGludGVybmFs
IG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZworICAgc3ltYm9sIG9mIHN0YXRlIFNUQVRFLU5VTS4g
ICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KK3sKKyAgICAgICAwLCAg
ICAgNiwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE1LCAgICAxNiwgICAgMTcsICAg
IDE4LAorICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDMwLCAgICAzNCwgICAgMzUsCisgICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAg
NDAsICAgIDQxLCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDUxLCAgICA1Miwg
ICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAor
ICAgICAgNjAsICAgIDI2LCAgICAyOCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgMjYsICAgIDI2
LCAgICAyNiwgICAgMjYsCisgICAgICAzOCwgICAgMzUsICAgICAwLCAgICAyNCwgICAgNDUsICAg
IDEyLCAgICA0MSwgICAgNDIsICAgIDM4LCAgICA0MywKKyAgICAgIDMyLCAgICAyNCwgICAgNDUs
ICAgICA5LCAgICAgOCwgICAgIDUsICAgICA0LCAgICAgNiwgICAgIDcsICAgICAzLAorICAgICAg
MjcsICAgIDM1LCAgICA0OSwgICAgNTAsICAgIDM1LCAgICA0NCwgICAgMjcsICAgIDExLCAgICAy
NywgICAgMjcsCisgICAgICAyNywgICAgMjcsICAgIDM5LCAgICAzOSwgICAgNDIsICAgIDQyLCAg
ICA1MiwgICAgMzgsICAgIDM4LCAgICA1NSwKKyAgICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5
LCAgICA1OSwgICAgNjAsICAgIDI3LCAgICAzMSwgICAgMjksICAgIDI3LAorICAgICAgNTAKK307
CisKKyNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKKyNkZWZpbmUgeXljbGVhcmlu
CSh5eWNoYXIgPSBZWUVNUFRZKQorI2RlZmluZSBZWUVNUFRZCQkoLTIpCisjZGVmaW5lIFlZRU9G
CQkwCisKKyNkZWZpbmUgWVlBQ0NFUFQJZ290byB5eWFjY2VwdGxhYgorI2RlZmluZSBZWUFCT1JU
CQlnb3RvIHl5YWJvcnRsYWIKKyNkZWZpbmUgWVlFUlJPUgkJZ290byB5eWVycm9ybGFiCisKKwor
LyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVy
ZSB0ZW1wb3JhcmlseQorICAgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5p
bmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KKyAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxh
bnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8KKworI2RlZmluZSBZWUZBSUwJCWdvdG8g
eXllcnJsYWIKKworI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCisKKyNk
ZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVlKQkJCQkJXAorZG8JCQkJCQkJCVwKKyAgaWYgKHl5
Y2hhciA9PSBZWUVNUFRZICYmIHl5bGVuID09IDEpCQkJCVwKKyAgICB7CQkJCQkJCQlcCisgICAg
ICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwKKyAgICAgIHl5bHZhbCA9IChWYWx1ZSk7CQkJCQkJ
XAorICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwkJCQlcCisgICAgICBZWVBP
UFNUQUNLICgxKTsJCQkJCQlcCisgICAgICBnb3RvIHl5YmFja3VwOwkJCQkJCVwKKyAgICB9CQkJ
CQkJCQlcCisgIGVsc2UJCQkJCQkJCVwKKyAgICB7CQkJCQkJCQlcCisgICAgICB5eWVycm9yIChw
YXJzZXIsIFlZXygic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpKTsgXAorICAgICAgWVlF
UlJPUjsJCQkJCQkJXAorICAgIH0JCQkJCQkJCVwKK3doaWxlIChZWUlEICgwKSkKKworCisjZGVm
aW5lIFlZVEVSUk9SCTEKKyNkZWZpbmUgWVlFUlJDT0RFCTI1NgorCisKKy8qIFlZTExPQ19ERUZB
VUxUIC0tIFNldCBDVVJSRU5UIHRvIHNwYW4gZnJvbSBSSFNbMV0gdG8gUkhTW05dLgorICAgSWYg
TiBpcyAwLCB0aGVuIHNldCBDVVJSRU5UIHRvIHRoZSBlbXB0eSBsb2NhdGlvbiB3aGljaCBlbmRz
CisgICB0aGUgcHJldmlvdXMgc3ltYm9sOiBSSFNbMF0gKGFsd2F5cyBkZWZpbmVkKS4gICovCisK
KyNkZWZpbmUgWVlSSFNMT0MoUmhzLCBLKSAoKFJocylbS10pCisjaWZuZGVmIFlZTExPQ19ERUZB
VUxUCisjIGRlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pCQkJCVwKKyAgICBk
bwkJCQkJCQkJCVwKKyAgICAgIGlmIChZWUlEIChOKSkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCXsJCQkJCQkJCVwKKwkgIChDdXJyZW50KS5m
aXJzdF9saW5lICAgPSBZWVJIU0xPQyAoUmhzLCAxKS5maXJzdF9saW5lOwlcCisJICAoQ3VycmVu
dCkuZmlyc3RfY29sdW1uID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29sdW1uOwlcCisJICAo
Q3VycmVudCkubGFzdF9saW5lICAgID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9saW5lOwkJXAor
CSAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfY29sdW1u
OwlcCisJfQkJCQkJCQkJXAorICAgICAgZWxzZQkJCQkJCQkJXAorCXsJCQkJCQkJCVwKKwkgIChD
dXJyZW50KS5maXJzdF9saW5lICAgPSAoQ3VycmVudCkubGFzdF9saW5lICAgPQkJXAorCSAgICBZ
WVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7CQkJCVwKKwkgIChDdXJyZW50KS5maXJzdF9jb2x1
bW4gPSAoQ3VycmVudCkubGFzdF9jb2x1bW4gPQkJXAorCSAgICBZWVJIU0xPQyAoUmhzLCAwKS5s
YXN0X2NvbHVtbjsJCQkJXAorCX0JCQkJCQkJCVwKKyAgICB3aGlsZSAoWVlJRCAoMCkpCisjZW5k
aWYKKworCisvKiBZWV9MT0NBVElPTl9QUklOVCAtLSBQcmludCB0aGUgbG9jYXRpb24gb24gdGhl
IHN0cmVhbS4KKyAgIFRoaXMgbWFjcm8gd2FzIG5vdCBtYW5kYXRlZCBvcmlnaW5hbGx5OiBkZWZp
bmUgb25seSBpZiB3ZSBrbm93CisgICB3ZSB3b24ndCBicmVhayB1c2VyIGNvZGU6IHdoZW4gdGhl
c2UgYXJlIHRoZSBsb2NhdGlvbnMgd2Uga25vdy4gICovCisKKyNpZm5kZWYgWVlfTE9DQVRJT05f
UFJJTlQKKyMgaWYgZGVmaW5lZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklW
SUFMCisjICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKKyAgICAgZnBy
aW50ZiAoRmlsZSwgIiVkLiVkLSVkLiVkIiwJCQlcCisJICAgICAgKExvYykuZmlyc3RfbGluZSwg
KExvYykuZmlyc3RfY29sdW1uLAlcCisJICAgICAgKExvYykubGFzdF9saW5lLCAgKExvYykubGFz
dF9jb2x1bW4pCisjIGVsc2UKKyMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2Mp
ICgodm9pZCkgMCkKKyMgZW5kaWYKKyNlbmRpZgorCisKKy8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5
bGV4JyB3aXRoIHRoZSByaWdodCBhcmd1bWVudHMuICAqLworCisjaWZkZWYgWVlMRVhfUEFSQU0K
KyMgZGVmaW5lIFlZTEVYIHl5bGV4ICgmeXlsdmFsLCBZWUxFWF9QQVJBTSkKKyNlbHNlCisjIGRl
ZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgcGFyc2VyKQorI2VuZGlmCisKKy8qIEVuYWJsZSBk
ZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KKyNpZiBZWURFQlVHCisKKyMgaWZuZGVmIFlZRlBS
SU5URgorIyAgaW5jbHVkZSA8c3RkaW8uaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFD
RSAqLworIyAgZGVmaW5lIFlZRlBSSU5URiBmcHJpbnRmCisjIGVuZGlmCisKKyMgZGVmaW5lIFlZ
RFBSSU5URihBcmdzKQkJCVwKK2RvIHsJCQkJCQlcCisgIGlmICh5eWRlYnVnKQkJCQkJXAorICAg
IFlZRlBSSU5URiBBcmdzOwkJCQlcCit9IHdoaWxlIChZWUlEICgwKSkKKworIyBkZWZpbmUgWVlf
U1lNQk9MX1BSSU5UKFRpdGxlLCBUeXBlLCBWYWx1ZSwgTG9jYXRpb24pCQkJICBcCitkbyB7CQkJ
CQkJCQkJICBcCisgIGlmICh5eWRlYnVnKQkJCQkJCQkJICBcCisgICAgewkJCQkJCQkJCSAgXAor
ICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIlcyAiLCBUaXRsZSk7CQkJCQkgIFwKKyAgICAgIHl5
X3N5bWJvbF9wcmludCAoc3RkZXJyLAkJCQkJCSAgXAorCQkgIFR5cGUsIFZhbHVlLCBwYXJzZXIp
OyBcCisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7CQkJCQkJICBcCisgICAgfQkJCQkJ
CQkJCSAgXAorfSB3aGlsZSAoWVlJRCAoMCkpCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KK3wgUHJpbnQgdGhpcyBzeW1ib2wgb24gWVlPVVRQVVQuICB8CitgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKkFSR1NVU0VEKi8KKyNpZiAoZGVmaW5l
ZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9f
Y3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgdm9pZAoreXlfc3ltYm9sX3Zh
bHVlX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNv
bnN0IHl5dmFsdWVwLCBQYXJzZXImIHBhcnNlcikKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfc3lt
Ym9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgcGFyc2VyKQorICAg
IEZJTEUgKnl5b3V0cHV0OworICAgIGludCB5eXR5cGU7CisgICAgWVlTVFlQRSBjb25zdCAqIGNv
bnN0IHl5dmFsdWVwOworICAgIFBhcnNlciYgcGFyc2VyOworI2VuZGlmCit7CisgIGlmICgheXl2
YWx1ZXApCisgICAgcmV0dXJuOworICBZWVVTRSAocGFyc2VyKTsKKyMgaWZkZWYgWVlQUklOVAor
ICBpZiAoeXl0eXBlIDwgWVlOVE9LRU5TKQorICAgIFlZUFJJTlQgKHl5b3V0cHV0LCB5eXRva251
bVt5eXR5cGVdLCAqeXl2YWx1ZXApOworIyBlbHNlCisgIFlZVVNFICh5eW91dHB1dCk7CisjIGVu
ZGlmCisgIHN3aXRjaCAoeXl0eXBlKQorICAgIHsKKyAgICAgIGRlZmF1bHQ6CisJYnJlYWs7Cisg
ICAgfQorfQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFByaW50
IHRoaXMgc3ltYm9sIG9uIFlZT1VUUFVULiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KKworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNf
XyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0
YXRpYyB2b2lkCit5eV9zeW1ib2xfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZ
WVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXAsIFBhcnNlciYgcGFyc2VyKQorI2Vsc2UKK3N0
YXRpYyB2b2lkCit5eV9zeW1ib2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBw
YXJzZXIpCisgICAgRklMRSAqeXlvdXRwdXQ7CisgICAgaW50IHl5dHlwZTsKKyAgICBZWVNUWVBF
IGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7CisgICAgUGFyc2VyJiBwYXJzZXI7CisjZW5kaWYKK3sK
KyAgaWYgKHl5dHlwZSA8IFlZTlRPS0VOUykKKyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAidG9r
ZW4gJXMgKCIsIHl5dG5hbWVbeXl0eXBlXSk7CisgIGVsc2UKKyAgICBZWUZQUklOVEYgKHl5b3V0
cHV0LCAibnRlcm0gJXMgKCIsIHl5dG5hbWVbeXl0eXBlXSk7CisKKyAgeXlfc3ltYm9sX3ZhbHVl
X3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgcGFyc2VyKTsKKyAgWVlGUFJJTlRG
ICh5eW91dHB1dCwgIikiKTsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5X3N0YWNrX3ByaW50IC0t
IFByaW50IHRoZSBzdGF0ZSBzdGFjayBmcm9tIGl0cyBCT1RUT00gdXAgdG8gaXRzIHwKK3wgVE9Q
IChpbmNsdWRlZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCitzdGF0aWMgdm9pZAoreXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90
dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfc3RhY2tfcHJp
bnQgKGJvdHRvbSwgdG9wKQorICAgIHl5dHlwZV9pbnQxNiAqYm90dG9tOworICAgIHl5dHlwZV9p
bnQxNiAqdG9wOworI2VuZGlmCit7CisgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7
CisgIGZvciAoOyBib3R0b20gPD0gdG9wOyArK2JvdHRvbSkKKyAgICBZWUZQUklOVEYgKHN0ZGVy
ciwgIiAlZCIsICpib3R0b20pOworICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7Cit9CisKKyMg
ZGVmaW5lIFlZX1NUQUNLX1BSSU5UKEJvdHRvbSwgVG9wKQkJCQlcCitkbyB7CQkJCQkJCQlcCisg
IGlmICh5eWRlYnVnKQkJCQkJCQlcCisgICAgeXlfc3RhY2tfcHJpbnQgKChCb3R0b20pLCAoVG9w
KSk7CQkJCVwKK30gd2hpbGUgKFlZSUQgKDApKQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCBSZXBvcnQgdGhhdCB0aGUgWVlSVUxFIGlz
IGdvaW5nIHRvIGJlIHJlZHVjZWQuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQg
X19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBf
TVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBp
bnQgeXlydWxlLCBQYXJzZXImIHBhcnNlcikKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfcmVkdWNl
X3ByaW50ICh5eXZzcCwgeXlydWxlLCBwYXJzZXIpCisgICAgWVlTVFlQRSAqeXl2c3A7CisgICAg
aW50IHl5cnVsZTsKKyAgICBQYXJzZXImIHBhcnNlcjsKKyNlbmRpZgoreworICBpbnQgeXlucmhz
ID0geXlyMlt5eXJ1bGVdOworICBpbnQgeXlpOworICB1bnNpZ25lZCBsb25nIGludCB5eWxubyA9
IHl5cmxpbmVbeXlydWxlXTsKKyAgWVlGUFJJTlRGIChzdGRlcnIsICJSZWR1Y2luZyBzdGFjayBi
eSBydWxlICVkIChsaW5lICVsdSk6XG4iLAorCSAgICAgeXlydWxlIC0gMSwgeXlsbm8pOworICAv
KiBUaGUgc3ltYm9scyBiZWluZyByZWR1Y2VkLiAgKi8KKyAgZm9yICh5eWkgPSAwOyB5eWkgPCB5
eW5yaHM7IHl5aSsrKQorICAgIHsKKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIs
IHl5aSArIDEpOworICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5
eXJ1bGVdICsgeXlpXSwKKwkJICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQor
CQkgICAgICAgCQkgICAgICAgLCBwYXJzZXIpOworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXG4i
KTsKKyAgICB9Cit9CisKKyMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAorZG8gewkJ
CQkJXAorICBpZiAoeXlkZWJ1ZykJCQkJXAorICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIFJ1
bGUsIHBhcnNlcik7IFwKK30gd2hpbGUgKFlZSUQgKDApKQorCisvKiBOb256ZXJvIG1lYW5zIHBy
aW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKKyAgIG11
bHRpcGxlIHBhcnNlcnMgY2FuIGNvZXhpc3QuICAqLworaW50IHl5ZGVidWc7CisjZWxzZSAvKiAh
WVlERUJVRyAqLworIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCisjIGRlZmluZSBZWV9TWU1CT0xf
UFJJTlQoVGl0bGUsIFR5cGUsIFZhbHVlLCBMb2NhdGlvbikKKyMgZGVmaW5lIFlZX1NUQUNLX1BS
SU5UKEJvdHRvbSwgVG9wKQorIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCisjZW5kaWYg
LyogIVlZREVCVUcgKi8KKworCisvKiBZWUlOSVRERVBUSCAtLSBpbml0aWFsIHNpemUgb2YgdGhl
IHBhcnNlcidzIHN0YWNrcy4gICovCisjaWZuZGVmCVlZSU5JVERFUFRICisjIGRlZmluZSBZWUlO
SVRERVBUSCAyMDAKKyNlbmRpZgorCisvKiBZWU1BWERFUFRIIC0tIG1heGltdW0gc2l6ZSB0aGUg
c3RhY2tzIGNhbiBncm93IHRvIChlZmZlY3RpdmUgb25seQorICAgaWYgdGhlIGJ1aWx0LWluIHN0
YWNrIGV4dGVuc2lvbiBtZXRob2QgaXMgdXNlZCkuCisKKyAgIERvIG5vdCBtYWtlIHRoaXMgdmFs
dWUgdG9vIGxhcmdlOyB0aGUgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmCisgICBZWVNUQUNLX0FM
TE9DX01BWElNVU0gPCBZWVNUQUNLX0JZVEVTIChZWU1BWERFUFRIKQorICAgZXZhbHVhdGVkIHdp
dGggaW5maW5pdGUtcHJlY2lzaW9uIGludGVnZXIgYXJpdGhtZXRpYy4gICovCisKKyNpZm5kZWYg
WVlNQVhERVBUSAorIyBkZWZpbmUgWVlNQVhERVBUSCAxMDAwMAorI2VuZGlmCisKKwwKKworI2lm
IFlZRVJST1JfVkVSQk9TRQorCisjIGlmbmRlZiB5eXN0cmxlbgorIyAgaWYgZGVmaW5lZCBfX0dM
SUJDX18gJiYgZGVmaW5lZCBfU1RSSU5HX0gKKyMgICBkZWZpbmUgeXlzdHJsZW4gc3RybGVuCisj
ICBlbHNlCisvKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBZWVNUUi4gICovCisjaWYgKGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIFlZU0laRV9UCit5eXN0cmxlbiAo
Y29uc3QgY2hhciAqeXlzdHIpCisjZWxzZQorc3RhdGljIFlZU0laRV9UCit5eXN0cmxlbiAoeXlz
dHIpCisgICAgY29uc3QgY2hhciAqeXlzdHI7CisjZW5kaWYKK3sKKyAgWVlTSVpFX1QgeXlsZW47
CisgIGZvciAoeXlsZW4gPSAwOyB5eXN0clt5eWxlbl07IHl5bGVuKyspCisgICAgY29udGludWU7
CisgIHJldHVybiB5eWxlbjsKK30KKyMgIGVuZGlmCisjIGVuZGlmCisKKyMgaWZuZGVmIHl5c3Rw
Y3B5CisjICBpZiBkZWZpbmVkIF9fR0xJQkNfXyAmJiBkZWZpbmVkIF9TVFJJTkdfSCAmJiBkZWZp
bmVkIF9HTlVfU09VUkNFCisjICAgZGVmaW5lIHl5c3RwY3B5IHN0cGNweQorIyAgZWxzZQorLyog
Q29weSBZWVNSQyB0byBZWURFU1QsIHJldHVybmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgdGVybWlu
YXRpbmcgJ1wwJyBpbgorICAgWVlERVNULiAgKi8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBk
ZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRl
ZmluZWQgX01TQ19WRVIpCitzdGF0aWMgY2hhciAqCit5eXN0cGNweSAoY2hhciAqeXlkZXN0LCBj
b25zdCBjaGFyICp5eXNyYykKKyNlbHNlCitzdGF0aWMgY2hhciAqCit5eXN0cGNweSAoeXlkZXN0
LCB5eXNyYykKKyAgICBjaGFyICp5eWRlc3Q7CisgICAgY29uc3QgY2hhciAqeXlzcmM7CisjZW5k
aWYKK3sKKyAgY2hhciAqeXlkID0geXlkZXN0OworICBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsK
KworICB3aGlsZSAoKCp5eWQrKyA9ICp5eXMrKykgIT0gJ1wwJykKKyAgICBjb250aW51ZTsKKwor
ICByZXR1cm4geXlkIC0gMTsKK30KKyMgIGVuZGlmCisjIGVuZGlmCisKKyMgaWZuZGVmIHl5dG5h
bWVycgorLyogQ29weSB0byBZWVJFUyB0aGUgY29udGVudHMgb2YgWVlTVFIgYWZ0ZXIgc3RyaXBw
aW5nIGF3YXkgdW5uZWNlc3NhcnkKKyAgIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMsIHNvIHRoYXQg
aXQncyBzdWl0YWJsZSBmb3IgeXllcnJvci4gIFRoZQorICAgaGV1cmlzdGljIGlzIHRoYXQgZG91
YmxlLXF1b3RpbmcgaXMgdW5uZWNlc3NhcnkgdW5sZXNzIHRoZSBzdHJpbmcKKyAgIGNvbnRhaW5z
IGFuIGFwb3N0cm9waGUsIGEgY29tbWEsIG9yIGJhY2tzbGFzaCAob3RoZXIgdGhhbgorICAgYmFj
a3NsYXNoLWJhY2tzbGFzaCkuICBZWVNUUiBpcyB0YWtlbiBmcm9tIHl5dG5hbWUuICBJZiBZWVJF
UyBpcworICAgbnVsbCwgZG8gbm90IGNvcHk7IGluc3RlYWQsIHJldHVybiB0aGUgbGVuZ3RoIG9m
IHdoYXQgdGhlIHJlc3VsdAorICAgd291bGQgaGF2ZSBiZWVuLiAgKi8KK3N0YXRpYyBZWVNJWkVf
VAoreXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAqeXlzdHIpCit7CisgIGlmICgq
eXlzdHIgPT0gJyInKQorICAgIHsKKyAgICAgIFlZU0laRV9UIHl5biA9IDA7CisgICAgICBjaGFy
IGNvbnN0ICp5eXAgPSB5eXN0cjsKKworICAgICAgZm9yICg7OykKKwlzd2l0Y2ggKCorK3l5cCkK
KwkgIHsKKwkgIGNhc2UgJ1wnJzoKKwkgIGNhc2UgJywnOgorCSAgICBnb3RvIGRvX25vdF9zdHJp
cF9xdW90ZXM7CisKKwkgIGNhc2UgJ1xcJzoKKwkgICAgaWYgKCorK3l5cCAhPSAnXFwnKQorCSAg
ICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKwkgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8K
KwkgIGRlZmF1bHQ6CisJICAgIGlmICh5eXJlcykKKwkgICAgICB5eXJlc1t5eW5dID0gKnl5cDsK
KwkgICAgeXluKys7CisJICAgIGJyZWFrOworCisJICBjYXNlICciJzoKKwkgICAgaWYgKHl5cmVz
KQorCSAgICAgIHl5cmVzW3l5bl0gPSAnXDAnOworCSAgICByZXR1cm4geXluOworCSAgfQorICAg
IGRvX25vdF9zdHJpcF9xdW90ZXM6IDsKKyAgICB9CisKKyAgaWYgKCEgeXlyZXMpCisgICAgcmV0
dXJuIHl5c3RybGVuICh5eXN0cik7CisKKyAgcmV0dXJuIHl5c3RwY3B5ICh5eXJlcywgeXlzdHIp
IC0geXlyZXM7Cit9CisjIGVuZGlmCisKKy8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBt
ZXNzYWdlIGFib3V0IHRoZSB1bmV4cGVjdGVkIHRva2VuCisgICBZWUNIQVIgd2hpbGUgaW4gc3Rh
dGUgWVlTVEFURS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKKyAgIGluY2x1
ZGluZyB0aGUgdGVybWluYXRpbmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8g
bm90CisgICBjb3B5IGFueXRoaW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRo
YXQgd291bGQgYmUKKyAgIGNvcGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBh
biBvcmRpbmFyeSAic3ludGF4IGVycm9yIgorICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZ
U0laRV9NQVhJTVVNIGlmIG92ZXJmbG93IG9jY3VycyBkdXJpbmcKKyAgIHNpemUgY2FsY3VsYXRp
b24uICAqLworc3RhdGljIFlZU0laRV9UCit5eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQs
IGludCB5eXN0YXRlLCBpbnQgeXljaGFyKQoreworICBpbnQgeXluID0geXlwYWN0W3l5c3RhdGVd
OworCisgIGlmICghIChZWVBBQ1RfTklORiA8IHl5biAmJiB5eW4gPD0gWVlMQVNUKSkKKyAgICBy
ZXR1cm4gMDsKKyAgZWxzZQorICAgIHsKKyAgICAgIGludCB5eXR5cGUgPSBZWVRSQU5TTEFURSAo
eXljaGFyKTsKKyAgICAgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKDAsIHl5dG5hbWVb
eXl0eXBlXSk7CisgICAgICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICAgICAgWVlTSVpF
X1QgeXlzaXplMTsKKyAgICAgIGludCB5eXNpemVfb3ZlcmZsb3cgPSAwOworICAgICAgZW51bSB7
IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gPSA1IH07CisgICAgICBjaGFyIGNvbnN0ICp5
eWFyZ1tZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNXTsKKyAgICAgIGludCB5eXg7CisKKyMg
aWYgMAorICAgICAgLyogVGhpcyBpcyBzbyB4Z2V0dGV4dCBzZWVzIHRoZSB0cmFuc2xhdGFibGUg
Zm9ybWF0cyB0aGF0IGFyZQorCSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5LiAgKi8KKyAgICAgIFlZ
Xygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJv
ciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJv
ciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIik7CisgICAgICBZWV8oInN5bnRh
eCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIik7CisgICAg
ICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9y
ICVzIG9yICVzIik7CisjIGVuZGlmCisgICAgICBjaGFyICp5eWZtdDsKKyAgICAgIGNoYXIgY29u
c3QgKnl5ZjsKKyAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5dW5leHBlY3RlZFtdID0gInN5bnRh
eCBlcnJvciwgdW5leHBlY3RlZCAlcyI7CisgICAgICBzdGF0aWMgY2hhciBjb25zdCB5eWV4cGVj
dGluZ1tdID0gIiwgZXhwZWN0aW5nICVzIjsKKyAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5b3Jb
XSA9ICIgb3IgJXMiOworICAgICAgY2hhciB5eWZvcm1hdFtzaXplb2YgeXl1bmV4cGVjdGVkCisJ
CSAgICArIHNpemVvZiB5eWV4cGVjdGluZyAtIDEKKwkJICAgICsgKChZWUVSUk9SX1ZFUkJPU0Vf
QVJHU19NQVhJTVVNIC0gMikKKwkJICAgICAgICogKHNpemVvZiB5eW9yIC0gMSkpXTsKKyAgICAg
IGNoYXIgY29uc3QgKnl5cHJlZml4ID0geXlleHBlY3Rpbmc7CisKKyAgICAgIC8qIFN0YXJ0IFlZ
WCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRvIGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KKwkgWVlD
SEVDSy4gICovCisgICAgICBpbnQgeXl4YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7CisKKyAg
ICAgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5Y2hlY2sgYW5kIHl5dG5hbWUuICAq
LworICAgICAgaW50IHl5Y2hlY2tsaW0gPSBZWUxBU1QgLSB5eW4gKyAxOworICAgICAgaW50IHl5
eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMgPyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOwor
ICAgICAgaW50IHl5Y291bnQgPSAxOworCisgICAgICB5eWFyZ1swXSA9IHl5dG5hbWVbeXl0eXBl
XTsKKyAgICAgIHl5Zm10ID0geXlzdHBjcHkgKHl5Zm9ybWF0LCB5eXVuZXhwZWN0ZWQpOworCisg
ICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQorCWlmICh5eWNo
ZWNrW3l5eCArIHl5bl0gPT0geXl4ICYmIHl5eCAhPSBZWVRFUlJPUikKKwkgIHsKKwkgICAgaWYg
KHl5Y291bnQgPT0gWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSkKKwkgICAgICB7CisJCXl5
Y291bnQgPSAxOworCQl5eXNpemUgPSB5eXNpemUwOworCQl5eWZvcm1hdFtzaXplb2YgeXl1bmV4
cGVjdGVkIC0gMV0gPSAnXDAnOworCQlicmVhazsKKwkgICAgICB9CisJICAgIHl5YXJnW3l5Y291
bnQrK10gPSB5eXRuYW1lW3l5eF07CisJICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIg
KDAsIHl5dG5hbWVbeXl4XSk7CisJICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5
c2l6ZSk7CisJICAgIHl5c2l6ZSA9IHl5c2l6ZTE7CisJICAgIHl5Zm10ID0geXlzdHBjcHkgKHl5
Zm10LCB5eXByZWZpeCk7CisJICAgIHl5cHJlZml4ID0geXlvcjsKKwkgIH0KKworICAgICAgeXlm
ID0gWVlfKHl5Zm9ybWF0KTsKKyAgICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlm
KTsKKyAgICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7CisgICAgICB5
eXNpemUgPSB5eXNpemUxOworCisgICAgICBpZiAoeXlzaXplX292ZXJmbG93KQorCXJldHVybiBZ
WVNJWkVfTUFYSU1VTTsKKworICAgICAgaWYgKHl5cmVzdWx0KQorCXsKKwkgIC8qIEF2b2lkIHNw
cmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFjZS4KKwkgICAg
IERvbid0IGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9yIGV2ZW4gaWYgdGhlIHRyYW5zbGF0aW9uCisJ
ICAgICBwcm9kdWNlZCBhIHN0cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAq
LworCSAgY2hhciAqeXlwID0geXlyZXN1bHQ7CisJICBpbnQgeXlpID0gMDsKKwkgIHdoaWxlICgo
Knl5cCA9ICp5eWYpICE9ICdcMCcpCisJICAgIHsKKwkgICAgICBpZiAoKnl5cCA9PSAnJScgJiYg
eXlmWzFdID09ICdzJyAmJiB5eWkgPCB5eWNvdW50KQorCQl7CisJCSAgeXlwICs9IHl5dG5hbWVy
ciAoeXlwLCB5eWFyZ1t5eWkrK10pOworCQkgIHl5ZiArPSAyOworCQl9CisJICAgICAgZWxzZQor
CQl7CisJCSAgeXlwKys7CisJCSAgeXlmKys7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIHJldHVy
biB5eXNpemU7CisgICAgfQorfQorI2VuZGlmIC8qIFlZRVJST1JfVkVSQk9TRSAqLworDAorCisv
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCBSZWxl
YXNlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB0byB0aGlzIHN5bWJvbC4gIHwKK2AtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qQVJHU1VTRUQqLwor
I2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5
eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1
ZXAsIFBhcnNlciYgcGFyc2VyKQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5eWRlc3RydWN0ICh5eW1z
ZywgeXl0eXBlLCB5eXZhbHVlcCwgcGFyc2VyKQorICAgIGNvbnN0IGNoYXIgKnl5bXNnOworICAg
IGludCB5eXR5cGU7CisgICAgWVlTVFlQRSAqeXl2YWx1ZXA7CisgICAgUGFyc2VyJiBwYXJzZXI7
CisjZW5kaWYKK3sKKyAgWVlVU0UgKHl5dmFsdWVwKTsKKyAgWVlVU0UgKHBhcnNlcik7CisKKyAg
aWYgKCF5eW1zZykKKyAgICB5eW1zZyA9ICJEZWxldGluZyI7CisgIFlZX1NZTUJPTF9QUklOVCAo
eXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25wKTsKKworICBzd2l0Y2ggKHl5dHlw
ZSkKKyAgICB7CisgICAgICBjYXNlIDEwOiAvKiAiRlVOQ1RJT05OQU1FIiAqLworI2xpbmUgODAg
IldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkg
KHl5dmFsdWVwLT5zdHJpbmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIwNSAiLi9YUGF0aEdyYW1t
YXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSAxMTogLyogIkxJVEVSQUwiICovCisjbGluZSA4
MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJpbmcp
KSAoeXl2YWx1ZXAtPnN0cmluZyktPmRlcmVmKCk7IH07CisjbGluZSAxMjEwICIuL1hQYXRoR3Jh
bW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDEyOiAvKiAiTkFNRVRFU1QiICovCisjbGlu
ZSA4MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJp
bmcpKSAoeXl2YWx1ZXAtPnN0cmluZyktPmRlcmVmKCk7IH07CisjbGluZSAxMjE1ICIuL1hQYXRo
R3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDEzOiAvKiAiTlVNQkVSIiAqLworI2xp
bmUgODAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3Ry
aW5nKSkgKHl5dmFsdWVwLT5zdHJpbmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIyMCAiLi9YUGF0
aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSAxNDogLyogIk5PREVUWVBFIiAqLwor
I2xpbmUgODAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+
c3RyaW5nKSkgKHl5dmFsdWVwLT5zdHJpbmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIyNSAiLi9Y
UGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSAxNTogLyogIlZBUklBQkxFUkVG
RVJFTkNFIiAqLworI2xpbmUgODAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgaWYg
KCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVwLT5zdHJpbmcpLT5kZXJlZigpOyB9OworI2xp
bmUgMTIzMCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSAzNTogLyog
IkV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVs
ZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMjM1ICIuL1hQYXRoR3JhbW1h
ci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDM2OiAvKiAiTG9jYXRpb25QYXRoIiAqLworI2xp
bmUgODggIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+
bG9jYXRpb25QYXRoKTsgfTsKKyNsaW5lIDEyNDAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVh
azsKKyAgICAgIGNhc2UgMzc6IC8qICJBYnNvbHV0ZUxvY2F0aW9uUGF0aCIgKi8KKyNsaW5lIDg4
ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmxvY2F0
aW9uUGF0aCk7IH07CisjbGluZSAxMjQ1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7Cisg
ICAgICBjYXNlIDM4OiAvKiAiUmVsYXRpdmVMb2NhdGlvblBhdGgiICovCisjbGluZSA4OCAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5sb2NhdGlvblBh
dGgpOyB9OworI2xpbmUgMTI1MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAg
Y2FzZSAzOTogLyogIlN0ZXAiICovCisjbGluZSA5NyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFy
LnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5zdGVwKTsgfTsKKyNsaW5lIDEyNTUgIi4vWFBhdGhH
cmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDE6IC8qICJOb2RlVGVzdCIgKi8KKyNs
aW5lIDkxICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAt
Pm5vZGVUZXN0KTsgfTsKKyNsaW5lIDEyNjAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsK
KyAgICAgIGNhc2UgNDI6IC8qICJPcHRpb25hbFByZWRpY2F0ZUxpc3QiICovCisjbGluZSA5NCAi
V2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNz
aW9uVmVjdG9yKTsgfTsKKyNsaW5lIDEyNjUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsK
KyAgICAgIGNhc2UgNDM6IC8qICJQcmVkaWNhdGVMaXN0IiAqLworI2xpbmUgOTQgIldlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvblZlY3Rv
cik7IH07CisjbGluZSAxMjcwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBj
YXNlIDQ0OiAvKiAiUHJlZGljYXRlIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTI3
NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA0NTogLyogIkRlc2Nl
bmRhbnRPclNlbGYiICovCisjbGluZSA5NyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJ
eyBkZWxldGUgKHl5dmFsdWVwLT5zdGVwKTsgfTsKKyNsaW5lIDEyODAgIi4vWFBhdGhHcmFtbWFy
LmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDY6IC8qICJBYmJyZXZpYXRlZFN0ZXAiICovCisj
bGluZSA5NyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVw
LT5zdGVwKTsgfTsKKyNsaW5lIDEyODUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAg
ICAgIGNhc2UgNDc6IC8qICJQcmltYXJ5RXhwciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwv
WFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNs
aW5lIDEyOTAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDg6IC8q
ICJGdW5jdGlvbkNhbGwiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55
IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMjk1ICIuL1hQ
YXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDQ5OiAvKiAiQXJndW1lbnRMaXN0
IiAqLworI2xpbmUgOTQgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5
eXZhbHVlcC0+ZXhwcmVzc2lvblZlY3Rvcik7IH07CisjbGluZSAxMzAwICIuL1hQYXRoR3JhbW1h
ci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDUwOiAvKiAiQXJndW1lbnQiICovCisjbGluZSAx
MDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhw
cmVzc2lvbik7IH07CisjbGluZSAxMzA1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7Cisg
ICAgICBjYXNlIDUxOiAvKiAiVW5pb25FeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9Y
UGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xp
bmUgMTMxMCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1MjogLyog
IlBhdGhFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7
IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTMxNSAiLi9YUGF0aEdy
YW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1MzogLyogIkZpbHRlckV4cHIiICovCisj
bGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVl
cC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzIwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJl
YWs7CisgICAgICBjYXNlIDU0OiAvKiAiT3JFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9Owor
I2xpbmUgMTMyNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1NTog
LyogIkFuZEV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
CXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzMwICIuL1hQYXRo
R3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDU2OiAvKiAiRXF1YWxpdHlFeHByIiAq
LworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2
YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTMzNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgor
CWJyZWFrOworICAgICAgY2FzZSA1NzogLyogIlJlbGF0aW9uYWxFeHByIiAqLworI2xpbmUgMTAw
ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJl
c3Npb24pOyB9OworI2xpbmUgMTM0MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAg
ICAgY2FzZSA1ODogLyogIkFkZGl0aXZlRXhwciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwv
WFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNs
aW5lIDEzNDUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNTk6IC8q
ICJNdWx0aXBsaWNhdGl2ZUV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzUw
ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDYwOiAvKiAiVW5hcnlF
eHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0
ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTM1NSAiLi9YUGF0aEdyYW1tYXIu
Y3BwIgorCWJyZWFrOworCisgICAgICBkZWZhdWx0OgorCWJyZWFrOworICAgIH0KK30KKwwKKwor
LyogUHJldmVudCB3YXJuaW5ncyBmcm9tIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KKworI2lm
ZGVmIFlZUEFSU0VfUEFSQU0KKyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMKK2ludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKKyNlbHNlCitpbnQgeXlw
YXJzZSAoKTsKKyNlbmRpZgorI2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCisjaWYgZGVmaW5l
ZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAoUGFyc2VyJiBw
YXJzZXIpOworI2Vsc2UKK2ludCB5eXBhcnNlICgpOworI2VuZGlmCisjZW5kaWYgLyogISBZWVBB
UlNFX1BBUkFNICovCisKKworCisKKworCisvKi0tLS0tLS0tLS0uCit8IHl5cGFyc2UuICB8Citg
LS0tLS0tLS0tLSovCisKKyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYgKGRlZmluZWQgX19TVERD
X18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1
cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQoraW50Cit5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFN
KQorI2Vsc2UKK2ludAoreXlwYXJzZSAoWVlQQVJTRV9QQVJBTSkKKyAgICB2b2lkICpZWVBBUlNF
X1BBUkFNOworI2VuZGlmCisjZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiAoZGVmaW5l
ZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9f
Y3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitpbnQKK3l5cGFyc2UgKFBhcnNlciYgcGFy
c2VyKQorI2Vsc2UKK2ludAoreXlwYXJzZSAocGFyc2VyKQorICAgIFBhcnNlciYgcGFyc2VyOwor
I2VuZGlmCisjZW5kaWYKK3sKKyAgLyogVGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KK2ludCB5
eWNoYXI7CisKKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9vay1haGVhZCBzeW1ib2wu
ICAqLworWVlTVFlQRSB5eWx2YWw7CisKKy8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZh
ci4gICovCitpbnQgeXluZXJyczsKKworICBpbnQgeXlzdGF0ZTsKKyAgaW50IHl5bjsKKyAgaW50
IHl5cmVzdWx0OworICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBt
ZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgaW50IHl5ZXJyc3RhdHVzOworICAvKiBMb29rLWFoZWFk
IHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLworICBp
bnQgeXl0b2tlbiA9IDA7CisjaWYgWVlFUlJPUl9WRVJCT1NFCisgIC8qIEJ1ZmZlciBmb3IgZXJy
b3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLworICBjaGFyIHl5bXNnYnVm
WzEyOF07CisgIGNoYXIgKnl5bXNnID0geXltc2didWY7CisgIFlZU0laRV9UIHl5bXNnX2FsbG9j
ID0gc2l6ZW9mIHl5bXNnYnVmOworI2VuZGlmCisKKyAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVp
ciB0b29sczoKKyAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcywKKyAgICAgYHl5dnMnOiBy
ZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywKKyAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0
aW9ucy4KKworICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMs
IHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4g
ICovCisKKyAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8KKyAgeXl0eXBlX2ludDE2IHl5c3NhW1lZ
SU5JVERFUFRIXTsKKyAgeXl0eXBlX2ludDE2ICp5eXNzID0geXlzc2E7CisgIHl5dHlwZV9pbnQx
NiAqeXlzc3A7CisKKyAgLyogVGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KKyAgWVlTVFlQ
RSB5eXZzYVtZWUlOSVRERVBUSF07CisgIFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKKyAgWVlTVFlQ
RSAqeXl2c3A7CisKKworCisjZGVmaW5lIFlZUE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5
eXNzcCAtPSAoTikpCisKKyAgWVlTSVpFX1QgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKKwor
ICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2Nh
dGlvbiBmcm9tIHRoZQorICAgICBhY3Rpb24gcm91dGluZXMuICAqLworICBZWVNUWVBFIHl5dmFs
OworCisKKyAgLyogVGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVj
ZWQgcnVsZS4KKyAgICAgS2VlcCB0byB6ZXJvIHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3Bw
ZWQuICAqLworICBpbnQgeXlsZW4gPSAwOworCisgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0
aW5nIHBhcnNlXG4iKSk7CisKKyAgeXlzdGF0ZSA9IDA7CisgIHl5ZXJyc3RhdHVzID0gMDsKKyAg
eXluZXJycyA9IDA7CisgIHl5Y2hhciA9IFlZRU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJl
IHJlYWQuICAqLworCisgIC8qIEluaXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCisgICAgIFdhc3Rl
IG9uZSBlbGVtZW50IG9mIHZhbHVlIGFuZCBsb2NhdGlvbiBzdGFjaworICAgICBzbyB0aGF0IHRo
ZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgc3RhdGUgc3RhY2suCisgICAgIFRoZSB3
YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVkLiAgKi8KKworICB5eXNzcCA9IHl5
c3M7CisgIHl5dnNwID0geXl2czsKKworICBnb3RvIHl5c2V0c3RhdGU7CisKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5
eW5ld3N0YXRlIC0tIFB1c2ggYSBuZXcgc3RhdGUsIHdoaWNoIGlzIGZvdW5kIGluIHl5c3RhdGUu
ICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KKyB5eW5ld3N0YXRlOgorICAvKiBJbiBhbGwgY2FzZXMsIHdoZW4geW91IGdl
dCBoZXJlLCB0aGUgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrcworICAgICBoYXZlIGp1c3QgYmVl
biBwdXNoZWQuICBTbyBwdXNoaW5nIGEgc3RhdGUgaGVyZSBldmVucyB0aGUgc3RhY2tzLiAgKi8K
KyAgeXlzc3ArKzsKKworIHl5c2V0c3RhdGU6CisgICp5eXNzcCA9IHl5c3RhdGU7CisKKyAgaWYg
KHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEgPD0geXlzc3ApCisgICAgeworICAgICAgLyogR2V0IHRo
ZSBjdXJyZW50IHVzZWQgc2l6ZSBvZiB0aGUgdGhyZWUgc3RhY2tzLCBpbiBlbGVtZW50cy4gICov
CisgICAgICBZWVNJWkVfVCB5eXNpemUgPSB5eXNzcCAtIHl5c3MgKyAxOworCisjaWZkZWYgeXlv
dmVyZmxvdworICAgICAgeworCS8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byByZWFsbG9jYXRlIHRo
ZSBzdGFjay4gIFVzZSBjb3BpZXMgb2YKKwkgICB0aGVzZSBzbyB0aGF0IHRoZSAmJ3MgZG9uJ3Qg
Zm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCisJICAgbWVtb3J5LiAgKi8KKwlZWVNUWVBFICp5eXZz
MSA9IHl5dnM7CisJeXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7CisKKworCS8qIEVhY2ggc3Rh
Y2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQorCSAgIGRh
dGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKKwkg
ICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0IG1p
Z2h0CisJICAgYmUgdW5kZWZpbmVkIGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCisJeXlv
dmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCisJCSAgICAmeXlzczEsIHl5c2l6ZSAq
IHNpemVvZiAoKnl5c3NwKSwKKwkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3Ap
LAorCisJCSAgICAmeXlzdGFja3NpemUpOworCisJeXlzcyA9IHl5c3MxOworCXl5dnMgPSB5eXZz
MTsKKyAgICAgIH0KKyNlbHNlIC8qIG5vIHl5b3ZlcmZsb3cgKi8KKyMgaWZuZGVmIFlZU1RBQ0tf
UkVMT0NBVEUKKyAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7CisjIGVsc2UKKyAgICAgIC8qIEV4
dGVuZCB0aGUgc3RhY2sgb3VyIG93biB3YXkuICAqLworICAgICAgaWYgKFlZTUFYREVQVEggPD0g
eXlzdGFja3NpemUpCisJZ290byB5eWV4aGF1c3RlZGxhYjsKKyAgICAgIHl5c3RhY2tzaXplICo9
IDI7CisgICAgICBpZiAoWVlNQVhERVBUSCA8IHl5c3RhY2tzaXplKQorCXl5c3RhY2tzaXplID0g
WVlNQVhERVBUSDsKKworICAgICAgeworCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOworCXVu
aW9uIHl5YWxsb2MgKnl5cHRyID0KKwkgICh1bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0Mg
KFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7CisJaWYgKCEgeXlwdHIpCisJICBnb3RvIHl5
ZXhoYXVzdGVkbGFiOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOworCVlZU1RBQ0tfUkVMT0NB
VEUgKHl5dnMpOworCisjICB1bmRlZiBZWVNUQUNLX1JFTE9DQVRFCisJaWYgKHl5c3MxICE9IHl5
c3NhKQorCSAgWVlTVEFDS19GUkVFICh5eXNzMSk7CisgICAgICB9CisjIGVuZGlmCisjZW5kaWYg
Lyogbm8geXlvdmVyZmxvdyAqLworCisgICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOwor
ICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXplIC0gMTsKKworCisgICAgICBZWURQUklOVEYgKChz
dGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCisJCSAgKHVuc2lnbmVkIGxv
bmcgaW50KSB5eXN0YWNrc2l6ZSkpOworCisgICAgICBpZiAoeXlzcyArIHl5c3RhY2tzaXplIC0g
MSA8PSB5eXNzcCkKKwlZWUFCT1JUOworICAgIH0KKworICBZWURQUklOVEYgKChzdGRlcnIsICJF
bnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOworCisgIGdvdG8geXliYWNrdXA7CisKKy8q
LS0tLS0tLS0tLS0uCit8IHl5YmFja3VwLiAgfAorYC0tLS0tLS0tLS0tKi8KK3l5YmFja3VwOgor
CisgIC8qIERvIGFwcHJvcHJpYXRlIHByb2Nlc3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUu
ICBSZWFkIGEKKyAgICAgbG9vay1haGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3Qg
YWxyZWFkeSBoYXZlIG9uZS4gICovCisKKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRv
IGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2stYWhlYWQgdG9rZW4uICAqLworICB5eW4gPSB5
eXBhY3RbeXlzdGF0ZV07CisgIGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCisgICAgZ290byB5eWRl
ZmF1bHQ7CisKKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2stYWhlYWQgdG9rZW4gaWYgZG9u
J3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisKKyAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZ
IG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9vay1haGVhZCBzeW1ib2wuICAqLworICBpZiAoeXljaGFy
ID09IFlZRU1QVFkpCisgICAgeworICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiUmVhZGluZyBh
IHRva2VuOiAiKSk7CisgICAgICB5eWNoYXIgPSBZWUxFWDsKKyAgICB9CisKKyAgaWYgKHl5Y2hh
ciA8PSBZWUVPRikKKyAgICB7CisgICAgICB5eWNoYXIgPSB5eXRva2VuID0gWVlFT0Y7CisgICAg
ICBZWURQUklOVEYgKChzdGRlcnIsICJOb3cgYXQgZW5kIG9mIGlucHV0LlxuIikpOworICAgIH0K
KyAgZWxzZQorICAgIHsKKyAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAg
ICAgIFlZX1NZTUJPTF9QUklOVCAoIk5leHQgdG9rZW4gaXMiLCB5eXRva2VuLCAmeXlsdmFsLCAm
eXlsbG9jKTsKKyAgICB9CisKKyAgLyogSWYgdGhlIHByb3BlciBhY3Rpb24gb24gc2VlaW5nIHRv
a2VuIFlZVE9LRU4gaXMgdG8gcmVkdWNlIG9yIHRvCisgICAgIGRldGVjdCBhbiBlcnJvciwgdGFr
ZSB0aGF0IGFjdGlvbi4gICovCisgIHl5biArPSB5eXRva2VuOworICBpZiAoeXluIDwgMCB8fCBZ
WUxBU1QgPCB5eW4gfHwgeXljaGVja1t5eW5dICE9IHl5dG9rZW4pCisgICAgZ290byB5eWRlZmF1
bHQ7CisgIHl5biA9IHl5dGFibGVbeXluXTsKKyAgaWYgKHl5biA8PSAwKQorICAgIHsKKyAgICAg
IGlmICh5eW4gPT0gMCB8fCB5eW4gPT0gWVlUQUJMRV9OSU5GKQorCWdvdG8geXllcnJsYWI7Cisg
ICAgICB5eW4gPSAteXluOworICAgICAgZ290byB5eXJlZHVjZTsKKyAgICB9CisKKyAgaWYgKHl5
biA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOworCisgIC8qIENvdW50IHRva2VucyBzaGlmdGVk
IHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKKyAgICAgc3RhdHVzLiAg
Ki8KKyAgaWYgKHl5ZXJyc3RhdHVzKQorICAgIHl5ZXJyc3RhdHVzLS07CisKKyAgLyogU2hpZnQg
dGhlIGxvb2stYWhlYWQgdG9rZW4uICAqLworICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIs
IHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MpOworCisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQg
dG9rZW4gdW5sZXNzIGl0IGlzIGVvZi4gICovCisgIGlmICh5eWNoYXIgIT0gWVlFT0YpCisgICAg
eXljaGFyID0gWVlFTVBUWTsKKworICB5eXN0YXRlID0geXluOworICAqKyt5eXZzcCA9IHl5bHZh
bDsKKworICBnb3RvIHl5bmV3c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlkZWZhdWx0IC0tIGRvIHRo
ZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIGN1cnJlbnQgc3RhdGUuICB8CitgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlkZWZh
dWx0OgorICB5eW4gPSB5eWRlZmFjdFt5eXN0YXRlXTsKKyAgaWYgKHl5biA9PSAwKQorICAgIGdv
dG8geXllcnJsYWI7CisgIGdvdG8geXlyZWR1Y2U7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KK3wgeXlyZWR1Y2UgLS0gRG8gYSByZWR1Y3Rpb24uICB8CitgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlyZWR1Y2U6CisgIC8qIHl5biBpcyB0aGUgbnVtYmVy
IG9mIGEgcnVsZSB0byByZWR1Y2Ugd2l0aC4gICovCisgIHl5bGVuID0geXlyMlt5eW5dOworCisg
IC8qIElmIFlZTEVOIGlzIG5vbnplcm8sIGltcGxlbWVudCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0
aGUgYWN0aW9uOgorICAgICBgJCQgPSAkMScuCisKKyAgICAgT3RoZXJ3aXNlLCB0aGUgZm9sbG93
aW5nIGxpbmUgc2V0cyBZWVZBTCB0byBnYXJiYWdlLgorICAgICBUaGlzIGJlaGF2aW9yIGlzIHVu
ZG9jdW1lbnRlZCBhbmQgQmlzb24KKyAgICAgdXNlcnMgc2hvdWxkIG5vdCByZWx5IHVwb24gaXQu
ICBBc3NpZ25pbmcgdG8gWVlWQUwKKyAgICAgdW5jb25kaXRpb25hbGx5IG1ha2VzIHRoZSBwYXJz
ZXIgYSBiaXQgc21hbGxlciwgYW5kIGl0IGF2b2lkcyBhCisgICAgIEdDQyB3YXJuaW5nIHRoYXQg
WVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCisgIHl5dmFsID0geXl2c3BbMS15
eWxlbl07CisKKworICBZWV9SRURVQ0VfUFJJTlQgKHl5bik7CisgIHN3aXRjaCAoeXluKQorICAg
IHsKKyAgICAgICAgY2FzZSAyOgorI2xpbmUgMTE1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKyAgICB7CisgICAgICAgIHBhcnNlci5zZXRQYXJzZVJlc3VsdChzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgxKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAg
IGJyZWFrOworCisgIGNhc2UgNDoKKyNsaW5lIDEyNiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFy
LnkiCisgICAgeworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKSA9ICh5eXZzcFsoMSkgLSAo
MSldLmxvY2F0aW9uUGF0aCk7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpLT5zZXRBYnNv
bHV0ZSgpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA2OgorI2xpbmUgMTM2ICJXZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBh
dGgpID0gbmV3IExvY2F0aW9uUGF0aDsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNzoK
KyNsaW5lIDE0MSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAo
eXl2YWwubG9jYXRpb25QYXRoKSA9ICh5eXZzcFsoMikgLSAoMildLmxvY2F0aW9uUGF0aCk7Cisg
ICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDg6CisjbGluZSAxNDYgIldlYkNvcmUveG1sL1hQ
YXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAoeXl2
c3BbKDIpIC0gKDIpXS5sb2NhdGlvblBhdGgpOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRo
KS0+cHJlcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+KCh5eXZzcFsoMSkgLSAoMildLnN0
ZXApKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDk6CisjbGluZSAxNTQgIldlYkNv
cmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0
aCkgPSBuZXcgTG9jYXRpb25QYXRoOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+YXBw
ZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygxKSAtICgxKV0uc3RlcCkpKTsK
KyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTA6CisjbGluZSAxNjAgIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAo
eXl2c3BbKDEpIC0gKDMpXS5sb2NhdGlvblBhdGgpOworICAgICAgICAoeXl2YWwubG9jYXRpb25Q
YXRoKS0+YXBwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygzKSAtICgzKV0u
c3RlcCkpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTE6CisjbGluZSAxNjYgIldl
YkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9u
UGF0aCkgPSAoeXl2c3BbKDEpIC0gKDMpXS5sb2NhdGlvblBhdGgpOworICAgICAgICAoeXl2YWwu
bG9jYXRpb25QYXRoKS0+YXBwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygy
KSAtICgzKV0uc3RlcCkpKTsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCktPmFwcGVuZFN0
ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+KCh5eXZzcFsoMykgLSAoMyldLnN0ZXApKSk7CisgICAg
O30KKyAgICBicmVhazsKKworICBjYXNlIDEyOgorI2xpbmUgMTc1ICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGVwOjpOb2RlVGVz
dD4gbm9kZVRlc3QoKHl5dnNwWygxKSAtICgyKV0ubm9kZVRlc3QpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNhdGVM
aXN0KCh5eXZzcFsoMikgLSAoMildLmV4cHJlc3Npb25WZWN0b3IpKTsKKyAgICAgICAgaWYgKHBy
ZWRpY2F0ZUxpc3QpCisgICAgICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpD
aGlsZEF4aXMsIFdURk1vdmUoKm5vZGVUZXN0KSwgV1RGTW92ZSgqcHJlZGljYXRlTGlzdCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpD
aGlsZEF4aXMsIFdURk1vdmUoKm5vZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBj
YXNlIDEzOgorI2xpbmUgMTg1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7Cisg
ICAgICAgIFN0cmluZyBuYW1ldGVzdCA9IGFkb3B0UmVmKCh5eXZzcFsoMSkgLSAoMildLnN0cmlu
ZykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPj4+IHByZWRpY2F0ZUxpc3QoKHl5dnNwWygyKSAtICgyKV0uZXhwcmVzc2lvblZlY3Rv
cikpOworCisgICAgICAgIFN0cmluZyBsb2NhbE5hbWU7CisgICAgICAgIFN0cmluZyBuYW1lc3Bh
Y2VVUkk7CisgICAgICAgIGlmICghcGFyc2VyLmV4cGFuZFF1YWxpZmllZE5hbWUobmFtZXRlc3Qs
IGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSkgeworICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIFlZQUJPUlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
cHJlZGljYXRlTGlzdCkKKyAgICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKFN0ZXA6
OkNoaWxkQXhpcywgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2Nh
bE5hbWUsIG5hbWVzcGFjZVVSSSksIFdURk1vdmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAoU3RlcDo6Q2hpbGRBeGlz
LCBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFt
ZXNwYWNlVVJJKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDE0OgorI2xpbmUgMjAz
ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTdGVwOjpOb2RlVGVzdD4gbm9kZVRlc3QoKHl5dnNwWygyKSAtICgzKV0ubm9kZVRlc3Qp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4+PiBwcmVkaWNhdGVMaXN0KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb25WZWN0b3Ip
KTsKKworICAgICAgICBpZiAocHJlZGljYXRlTGlzdCkKKyAgICAgICAgICAgICh5eXZhbC5zdGVw
KSA9IG5ldyBTdGVwKCh5eXZzcFsoMSkgLSAoMyldLmF4aXMpLCBXVEZNb3ZlKCpub2RlVGVzdCks
IFdURk1vdmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKHl5
dmFsLnN0ZXApID0gbmV3IFN0ZXAoKHl5dnNwWygxKSAtICgzKV0uYXhpcyksIFdURk1vdmUoKm5v
ZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDE1OgorI2xpbmUgMjE0ICJX
ZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmluZyBuYW1ldGVz
dCA9IGFkb3B0UmVmKCh5eXZzcFsoMikgLSAoMyldLnN0cmluZykpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0ZUxp
c3QoKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvblZlY3RvcikpOworCisgICAgICAgIFN0cmlu
ZyBsb2NhbE5hbWU7CisgICAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkk7CisgICAgICAgIGlmICgh
cGFyc2VyLmV4cGFuZFF1YWxpZmllZE5hbWUobmFtZXRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNl
VVJJKSkgeworICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IFlZQUJPUlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJlZGljYXRlTGlzdCkKKyAgICAg
ICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKCh5eXZzcFsoMSkgLSAoMyldLmF4aXMpLCBT
dGVwOjpOb2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFtZXNw
YWNlVVJJKSwgV1RGTW92ZSgqcHJlZGljYXRlTGlzdCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcCgoeXl2c3BbKDEpIC0gKDMpXS5heGlzKSwgU3Rl
cDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFj
ZVVSSSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxODoKKyNsaW5lIDIzOCAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuYXhpcykgPSBT
dGVwOjpBdHRyaWJ1dGVBeGlzOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxOToKKyNs
aW5lIDI0NSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2
YWwubm9kZVRlc3QpID0gbmV3IFN0ZXA6Ok5vZGVUZXN0KFN0ZXA6Ok5vZGVUZXN0OjpBbnlOb2Rl
VGVzdCk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDIwOgorI2xpbmUgMjUwICJXZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5ub2RlVGVzdCkg
PSBuZXcgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6OlRleHROb2RlVGVzdCk7CisgICAg
O30KKyAgICBicmVhazsKKworICBjYXNlIDIxOgorI2xpbmUgMjU1ICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5ub2RlVGVzdCkgPSBuZXcgU3RlcDo6
Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6OkNvbW1lbnROb2RlVGVzdCk7CisgICAgO30KKyAgICBi
cmVhazsKKworICBjYXNlIDIyOgorI2xpbmUgMjYwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKyAgICB7CisgICAgICAgICh5eXZhbC5ub2RlVGVzdCkgPSBuZXcgU3RlcDo6Tm9kZVRlc3Qo
U3RlcDo6Tm9kZVRlc3Q6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbk5vZGVUZXN0KTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgMjM6CisjbGluZSAyNjUgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgU3RyaW5nIGxpdGVyYWwgPSBhZG9wdFJlZigoeXl2c3Bb
KDMpIC0gKDQpXS5zdHJpbmcpKTsKKyAgICAgICAgKHl5dmFsLm5vZGVUZXN0KSA9IG5ldyBTdGVw
OjpOb2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6UHJvY2Vzc2luZ0luc3RydWN0aW9uTm9kZVRlc3Qs
IGxpdGVyYWwuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2Fz
ZSAyNDoKKyNsaW5lIDI3MyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAg
ICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3RvcikgPSBudWxscHRyOworICAgIDt9CisgICAgYnJl
YWs7CisKKyAgY2FzZSAyNjoKKyNsaW5lIDI4MiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnki
CisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3RvcikgPSBuZXcgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj47CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uVmVj
dG9yKS0+YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDEp
XS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAyNzoKKyNsaW5l
IDI4OCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwu
ZXhwcmVzc2lvblZlY3RvcikgPSAoeXl2c3BbKDEpIC0gKDIpXS5leHByZXNzaW9uVmVjdG9yKTsK
KyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb25WZWN0b3IpLT5hcHBlbmQoc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+KCh5eXZzcFsoMikgLSAoMildLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAg
ICBicmVhazsKKworICBjYXNlIDI4OgorI2xpbmUgMjk2ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1t
YXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9ICh5eXZzcFsoMikgLSAo
MyldLmV4cHJlc3Npb24pOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAyOToKKyNsaW5l
IDMwMyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwu
c3RlcCkgPSBuZXcgU3RlcChTdGVwOjpEZXNjZW5kYW50T3JTZWxmQXhpcywgU3RlcDo6Tm9kZVRl
c3QoU3RlcDo6Tm9kZVRlc3Q6OkFueU5vZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKwor
ICBjYXNlIDMwOgorI2xpbmUgMzEwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7
CisgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKFN0ZXA6OlNlbGZBeGlzLCBTdGVwOjpO
b2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6QW55Tm9kZVRlc3QpKTsKKyAgICA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgMzE6CisjbGluZSAzMTUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
ICAgIHsKKyAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAoU3RlcDo6UGFyZW50QXhpcywg
U3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6OkFueU5vZGVUZXN0KSk7CisgICAgO30KKyAg
ICBicmVhazsKKworICBjYXNlIDMyOgorI2xpbmUgMzIyICJXZWJDb3JlL3htbC9YUGF0aEdyYW1t
YXIueSIKKyAgICB7CisgICAgICAgIFN0cmluZyBuYW1lID0gYWRvcHRSZWYoKHl5dnNwWygxKSAt
ICgxKV0uc3RyaW5nKSk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBWYXJpYWJs
ZVJlZmVyZW5jZShuYW1lKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzM6CisjbGlu
ZSAzMjggIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFs
LmV4cHJlc3Npb24pID0gKHl5dnNwWygyKSAtICgzKV0uZXhwcmVzc2lvbik7CisgICAgO30KKyAg
ICBicmVhazsKKworICBjYXNlIDM0OgorI2xpbmUgMzMzICJXZWJDb3JlL3htbC9YUGF0aEdyYW1t
YXIueSIKKyAgICB7CisgICAgICAgIFN0cmluZyBsaXRlcmFsID0gYWRvcHRSZWYoKHl5dnNwWygx
KSAtICgxKV0uc3RyaW5nKSk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBTdHJp
bmdFeHByZXNzaW9uKFdURk1vdmUobGl0ZXJhbCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSAzNToKKyNsaW5lIDMzOSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgewor
ICAgICAgICBTdHJpbmcgbnVtZXJhbCA9IGFkb3B0UmVmKCh5eXZzcFsoMSkgLSAoMSldLnN0cmlu
ZykpOworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgTnVtYmVyKG51bWVyYWwudG9E
b3VibGUoKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDM3OgorI2xpbmUgMzQ5ICJX
ZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmluZyBuYW1lID0g
YWRvcHRSZWYoKHl5dnNwWygxKSAtICgzKV0uc3RyaW5nKSk7CisgICAgICAgICh5eXZhbC5leHBy
ZXNzaW9uKSA9IFhQYXRoOjpGdW5jdGlvbjo6Y3JlYXRlKG5hbWUpLnJlbGVhc2UoKTsKKyAgICAg
ICAgaWYgKCEoeXl2YWwuZXhwcmVzc2lvbikpCisgICAgICAgICAgICBZWUFCT1JUOworICAgIDt9
CisgICAgYnJlYWs7CisKKyAgY2FzZSAzODoKKyNsaW5lIDM1NyAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisgICAgeworICAgICAgICBTdHJpbmcgbmFtZSA9IGFkb3B0UmVmKCh5eXZzcFso
MSkgLSAoNCldLnN0cmluZykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IGFyZ3VtZW50TGlzdCgoeXl2c3BbKDMpIC0gKDQpXS5l
eHByZXNzaW9uVmVjdG9yKSk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IFhQYXRoOjpG
dW5jdGlvbjo6Y3JlYXRlKG5hbWUsIFdURk1vdmUoKmFyZ3VtZW50TGlzdCkpLnJlbGVhc2UoKTsK
KyAgICAgICAgaWYgKCEoeXl2YWwuZXhwcmVzc2lvbikpCisgICAgICAgICAgICBZWUFCT1JUOwor
ICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAzOToKKyNsaW5lIDM2OCAiV2ViQ29yZS94bWwv
WFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3Rvcikg
PSBuZXcgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj47CisgICAgICAgICh5eXZh
bC5leHByZXNzaW9uVmVjdG9yKS0+YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigo
eXl2c3BbKDEpIC0gKDEpXS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSA0MDoKKyNsaW5lIDM3NCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgewor
ICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3RvcikgPSAoeXl2c3BbKDEpIC0gKDMpXS5leHBy
ZXNzaW9uVmVjdG9yKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb25WZWN0b3IpLT5hcHBlbmQo
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24p
KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDQzOgorI2xpbmUgMzg4ICJXZWJDb3Jl
L3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9
IG5ldyBVbmlvbihzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0u
ZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgz
KV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNDQ6CisjbGlu
ZSAzOTUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFs
LmV4cHJlc3Npb24pID0gKHl5dnNwWygxKSAtICgxKV0ubG9jYXRpb25QYXRoKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgNDY6CisjbGluZSA0MDIgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+
c2V0QWJzb2x1dGUoKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3Rk
Ojp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwg
c3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25Q
YXRoKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA0NzoKKyNsaW5lIDQwOCAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2c3BbKDMpIC0gKDMp
XS5sb2NhdGlvblBhdGgpLT5wcmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNw
WygyKSAtICgzKV0uc3RlcCkpKTsKKyAgICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25Q
YXRoKS0+c2V0QWJzb2x1dGUoKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFBh
dGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Np
b24pKSwgc3RkOjp1bmlxdWVfcHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9j
YXRpb25QYXRoKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA0OToKKyNsaW5lIDQx
OSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0ZUxpc3Qo
KHl5dnNwWygyKSAtICgyKV0uZXhwcmVzc2lvblZlY3RvcikpOworICAgICAgICAoeXl2YWwuZXhw
cmVzc2lvbikgPSBuZXcgRmlsdGVyKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3Bb
KDEpIC0gKDIpXS5leHByZXNzaW9uKSksIFdURk1vdmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICA7
fQorICAgIGJyZWFrOworCisgIGNhc2UgNTE6CisjbGluZSA0MjkgIldlYkNvcmUveG1sL1hQYXRo
R3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IExvZ2lj
YWxPcChMb2dpY2FsT3A6Ok9QX09yLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNw
WygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5
dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNh
c2UgNTM6CisjbGluZSA0MzggIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAg
ICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IExvZ2ljYWxPcChMb2dpY2FsT3A6Ok9QX0Fu
ZCwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Np
b24pKSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJl
c3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDU1OgorI2xpbmUgNDQ3ICJX
ZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNz
aW9uKSA9IG5ldyBFcVRlc3RPcCgoeXl2c3BbKDIpIC0gKDMpXS5lcXVhbGl0eVRlc3RPcGNvZGUp
LCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lv
bikpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVz
c2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNTc6CisjbGluZSA0NTYgIldl
YkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Np
b24pID0gbmV3IEVxVGVzdE9wKCh5eXZzcFsoMikgLSAoMyldLmVxdWFsaXR5VGVzdE9wY29kZSks
IHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9u
KSksIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNz
aW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA1OToKKyNsaW5lIDQ2NSAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lv
bikgPSBuZXcgTnVtZXJpY09wKE51bWVyaWNPcDo6T1BfQWRkLCBzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAg
IGJyZWFrOworCisgIGNhc2UgNjA6CisjbGluZSA0NzAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1h
ci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IE51bWVyaWNPcChO
dW1lcmljT3A6Ok9QX1N1Yiwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkg
LSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFso
MykgLSAoMyldLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDYy
OgorI2xpbmUgNDc5ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAg
ICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBOdW1lcmljT3AoKHl5dnNwWygyKSAtICgzKV0ubnVt
ZXJpY09wY29kZSksIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMp
XS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0g
KDMpXS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA2NDoKKyNs
aW5lIDQ4OCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2
YWwuZXhwcmVzc2lvbikgPSBuZXcgTmVnYXRpdmUoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+
KCh5eXZzcFsoMikgLSAoMildLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKwor
CisvKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8KKyNsaW5lIDIwNDkgIi4vWFBhdGhHcmFtbWFy
LmNwcCIKKyAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgIH0KKyAgWVlfU1lNQk9MX1BSSU5UICgi
LT4gJCQgPSIsIHl5cjFbeXluXSwgJnl5dmFsLCAmeXlsb2MpOworCisgIFlZUE9QU1RBQ0sgKHl5
bGVuKTsKKyAgeXlsZW4gPSAwOworICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOworCisg
ICorK3l5dnNwID0geXl2YWw7CisKKworICAvKiBOb3cgYHNoaWZ0JyB0aGUgcmVzdWx0IG9mIHRo
ZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBzdGF0ZQorICAgICB0aGF0IGdvZXMgdG8sIGJh
c2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFjayB0byBhbmQgdGhlIHJ1bGUKKyAgICAgbnVt
YmVyIHJlZHVjZWQgYnkuICAqLworCisgIHl5biA9IHl5cjFbeXluXTsKKworICB5eXN0YXRlID0g
eXlwZ290b1t5eW4gLSBZWU5UT0tFTlNdICsgKnl5c3NwOworICBpZiAoMCA8PSB5eXN0YXRlICYm
IHl5c3RhdGUgPD0gWVlMQVNUICYmIHl5Y2hlY2tbeXlzdGF0ZV0gPT0gKnl5c3NwKQorICAgIHl5
c3RhdGUgPSB5eXRhYmxlW3l5c3RhdGVdOworICBlbHNlCisgICAgeXlzdGF0ZSA9IHl5ZGVmZ290
b1t5eW4gLSBZWU5UT0tFTlNdOworCisgIGdvdG8geXluZXdzdGF0ZTsKKworCisvKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXllcnJsYWIgLS0gaGVyZSBvbiBkZXRl
Y3RpbmcgZXJyb3IgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5
eWVycmxhYjoKKyAgLyogSWYgbm90IGFscmVhZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCBy
ZXBvcnQgdGhpcyBlcnJvci4gICovCisgIGlmICgheXllcnJzdGF0dXMpCisgICAgeworICAgICAg
Kyt5eW5lcnJzOworI2lmICEgWVlFUlJPUl9WRVJCT1NFCisgICAgICB5eWVycm9yIChwYXJzZXIs
IFlZXygic3ludGF4IGVycm9yIikpOworI2Vsc2UKKyAgICAgIHsKKwlZWVNJWkVfVCB5eXNpemUg
PSB5eXN5bnRheF9lcnJvciAoMCwgeXlzdGF0ZSwgeXljaGFyKTsKKwlpZiAoeXltc2dfYWxsb2Mg
PCB5eXNpemUgJiYgeXltc2dfYWxsb2MgPCBZWVNUQUNLX0FMTE9DX01BWElNVU0pCisJICB7CisJ
ICAgIFlZU0laRV9UIHl5YWxsb2MgPSAyICogeXlzaXplOworCSAgICBpZiAoISAoeXlzaXplIDw9
IHl5YWxsb2MgJiYgeXlhbGxvYyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQorCSAgICAgIHl5
YWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07CisJICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1
ZikKKwkgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKKwkgICAgeXltc2cgPSAoY2hhciAqKSBZ
WVNUQUNLX0FMTE9DICh5eWFsbG9jKTsKKwkgICAgaWYgKHl5bXNnKQorCSAgICAgIHl5bXNnX2Fs
bG9jID0geXlhbGxvYzsKKwkgICAgZWxzZQorCSAgICAgIHsKKwkJeXltc2cgPSB5eW1zZ2J1ZjsK
KwkJeXltc2dfYWxsb2MgPSBzaXplb2YgeXltc2didWY7CisJICAgICAgfQorCSAgfQorCisJaWYg
KDAgPCB5eXNpemUgJiYgeXlzaXplIDw9IHl5bXNnX2FsbG9jKQorCSAgeworCSAgICAodm9pZCkg
eXlzeW50YXhfZXJyb3IgKHl5bXNnLCB5eXN0YXRlLCB5eWNoYXIpOworCSAgICB5eWVycm9yIChw
YXJzZXIsIHl5bXNnKTsKKwkgIH0KKwllbHNlCisJICB7CisJICAgIHl5ZXJyb3IgKHBhcnNlciwg
WVlfKCJzeW50YXggZXJyb3IiKSk7CisJICAgIGlmICh5eXNpemUgIT0gMCkKKwkgICAgICBnb3Rv
IHl5ZXhoYXVzdGVkbGFiOworCSAgfQorICAgICAgfQorI2VuZGlmCisgICAgfQorCisKKworICBp
ZiAoeXllcnJzdGF0dXMgPT0gMykKKyAgICB7CisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBm
YWlsZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBhbgorCSBlcnJvciwgZGlzY2Fy
ZCBpdC4gICovCisKKyAgICAgIGlmICh5eWNoYXIgPD0gWVlFT0YpCisJeworCSAgLyogUmV0dXJu
IGZhaWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0LiAgKi8KKwkgIGlmICh5eWNoYXIgPT0gWVlFT0Yp
CisJICAgIFlZQUJPUlQ7CisJfQorICAgICAgZWxzZQorCXsKKwkgIHl5ZGVzdHJ1Y3QgKCJFcnJv
cjogZGlzY2FyZGluZyIsCisJCSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIHBhcnNlcik7CisJICB5
eWNoYXIgPSBZWUVNUFRZOworCX0KKyAgICB9CisKKyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVz
ZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgorICAgICB0b2tlbi4g
ICovCisgIGdvdG8geXllcnJsYWIxOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycm9ybGFiIC0tIGVycm9yIHJhaXNlZCBl
eHBsaWNpdGx5IGJ5IFlZRVJST1IuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZXJyb3JsYWI6CisKKyAgLyogUGFjaWZ5IGNvbXBp
bGVycyBsaWtlIEdDQyB3aGVuIHRoZSB1c2VyIGNvZGUgbmV2ZXIgaW52b2tlcworICAgICBZWUVS
Uk9SIGFuZCB0aGUgbGFiZWwgeXllcnJvcmxhYiB0aGVyZWZvcmUgbmV2ZXIgYXBwZWFycyBpbiB1
c2VyCisgICAgIGNvZGUuICAqLworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VucmVhY2hhYmxlLWNvZGUiCisgIGlmICgv
KkNPTlNUQ09ORCovIDApCisgICAgIGdvdG8geXllcnJvcmxhYjsKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKKworICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVs
ZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCisgICAgIHRoaXMgWVlFUlJPUi4gICovCisgIFlZUE9Q
U1RBQ0sgKHl5bGVuKTsKKyAgeXlsZW4gPSAwOworICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlz
c3ApOworICB5eXN0YXRlID0gKnl5c3NwOworICBnb3RvIHl5ZXJybGFiMTsKKworCisvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0u
Cit8IHl5ZXJybGFiMSAtLSBjb21tb24gY29kZSBmb3IgYm90aCBzeW50YXggZXJyb3IgYW5kIFlZ
RVJST1IuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovCit5eWVycmxhYjE6CisgIHl5ZXJyc3RhdHVzID0gMzsJLyogRWFj
aCByZWFsIHRva2VuIHNoaWZ0ZWQgZGVjcmVtZW50cyB0aGlzLiAgKi8KKworICBmb3IgKDs7KQor
ICAgIHsKKyAgICAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKKyAgICAgIGlmICh5eW4gIT0gWVlQ
QUNUX05JTkYpCisJeworCSAgeXluICs9IFlZVEVSUk9SOworCSAgaWYgKDAgPD0geXluICYmIHl5
biA8PSBZWUxBU1QgJiYgeXljaGVja1t5eW5dID09IFlZVEVSUk9SKQorCSAgICB7CisJICAgICAg
eXluID0geXl0YWJsZVt5eW5dOworCSAgICAgIGlmICgwIDwgeXluKQorCQlicmVhazsKKwkgICAg
fQorCX0KKworICAgICAgLyogUG9wIHRoZSBjdXJyZW50IHN0YXRlIGJlY2F1c2UgaXQgY2Fubm90
IGhhbmRsZSB0aGUgZXJyb3IgdG9rZW4uICAqLworICAgICAgaWYgKHl5c3NwID09IHl5c3MpCisJ
WVlBQk9SVDsKKworCisgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmciLAorCQkgIHl5
c3Rvc1t5eXN0YXRlXSwgeXl2c3AsIHBhcnNlcik7CisgICAgICBZWVBPUFNUQUNLICgxKTsKKyAg
ICAgIHl5c3RhdGUgPSAqeXlzc3A7CisgICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3Ap
OworICAgIH0KKworICBpZiAoeXluID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKKyAgKisr
eXl2c3AgPSB5eWx2YWw7CisKKworICAvKiBTaGlmdCB0aGUgZXJyb3IgdG9rZW4uICAqLworICBZ
WV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5c3Rvc1t5eW5dLCB5eXZzcCwgeXlsc3ApOwor
CisgIHl5c3RhdGUgPSB5eW47CisgIGdvdG8geXluZXdzdGF0ZTsKKworCisvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5YWNjZXB0bGFiIC0tIFlZQUNDRVBUIGNv
bWVzIGhlcmUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5
eWFjY2VwdGxhYjoKKyAgeXlyZXN1bHQgPSAwOworICBnb3RvIHl5cmV0dXJuOworCisvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWFib3J0bGFiIC0tIFlZQUJPUlQg
Y29tZXMgaGVyZS4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5
eWFib3J0bGFiOgorICB5eXJlc3VsdCA9IDE7CisgIGdvdG8geXlyZXR1cm47CisKKyNpZm5kZWYg
eXlvdmVyZmxvdworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLgorfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJl
LiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LworeXlleGhhdXN0ZWRsYWI6CisgIHl5ZXJyb3IgKHBhcnNlciwgWVlfKCJtZW1vcnkgZXhoYXVz
dGVkIikpOworICB5eXJlc3VsdCA9IDI7CisgIC8qIEZhbGwgdGhyb3VnaC4gICovCisjZW5kaWYK
KworeXlyZXR1cm46CisgIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkp
CisgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIsCisJCSB5
eXRva2VuLCAmeXlsdmFsLCBwYXJzZXIpOworICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9s
cyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCisgICAgIHRoaXMgWVlBQk9SVCBv
ciBZWUFDQ0VQVC4gICovCisgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKKyAgWVlfU1RBQ0tfUFJJTlQg
KHl5c3MsIHl5c3NwKTsKKyAgd2hpbGUgKHl5c3NwICE9IHl5c3MpCisgICAgeworICAgICAgeXlk
ZXN0cnVjdCAoIkNsZWFudXA6IHBvcHBpbmciLAorCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwg
cGFyc2VyKTsKKyAgICAgIFlZUE9QU1RBQ0sgKDEpOworICAgIH0KKyNpZm5kZWYgeXlvdmVyZmxv
dworICBpZiAoeXlzcyAhPSB5eXNzYSkKKyAgICBZWVNUQUNLX0ZSRUUgKHl5c3MpOworI2VuZGlm
CisjaWYgWVlFUlJPUl9WRVJCT1NFCisgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKyAgICBZWVNU
QUNLX0ZSRUUgKHl5bXNnKTsKKyNlbmRpZgorICAvKiBNYWtlIHN1cmUgWVlJRCBpcyB1c2VkLiAg
Ki8KKyAgcmV0dXJuIFlZSUQgKHl5cmVzdWx0KTsKK30KKworCisjbGluZSA0OTMgIldlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55IgorCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACisjaWZuZGVmIENTU0dSQU1NQVJfSAorI2RlZmlu
ZSBDU1NHUkFNTUFSX0gKKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMu
ICAqLworCisvKiBTa2VsZXRvbiBpbnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNl
cnMgaW4gQworCisgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEs
IDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikK
KyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg
ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisKKy8qIEFzIGEg
c3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250
YWlucworICAgcGFydCBvciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlz
dHJpYnV0ZSB0aGF0IHdvcmsKKyAgIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBzbyBsb25n
IGFzIHRoYXQgd29yayBpc24ndCBpdHNlbGYgYQorICAgcGFyc2VyIGdlbmVyYXRvciB1c2luZyB0
aGUgc2tlbGV0b24gb3IgYSBtb2RpZmllZCB2ZXJzaW9uIHRoZXJlb2YKKyAgIGFzIGEgcGFyc2Vy
IHNrZWxldG9uLiAgQWx0ZXJuYXRpdmVseSwgaWYgeW91IG1vZGlmeSBvciByZWRpc3RyaWJ1dGUK
KyAgIHRoZSBwYXJzZXIgc2tlbGV0b24gaXRzZWxmLCB5b3UgbWF5IChhdCB5b3VyIG9wdGlvbikg
cmVtb3ZlIHRoaXMKKyAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBz
a2VsZXRvbiBhbmQgdGhlIHJlc3VsdGluZworICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2Ugd2l0aG91dCB0
aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgorCisgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBh
ZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCisgICB2ZXJzaW9uIDIuMiBv
ZiBCaXNvbi4gICovCisKKy8qIFRva2Vucy4gICovCisjaWZuZGVmIFlZVE9LRU5UWVBFCisjIGRl
ZmluZSBZWVRPS0VOVFlQRQorICAgLyogUHV0IHRoZSB0b2tlbnMgaW50byB0aGUgc3ltYm9sIHRh
YmxlLCBzbyB0aGF0IEdEQiBhbmQgb3RoZXIgZGVidWdnZXJzCisgICAgICBrbm93IGFib3V0IHRo
ZW0uICAqLworICAgZW51bSB5eXRva2VudHlwZSB7CisgICAgIE1VTE9QID0gMjU4LAorICAgICBS
RUxPUCA9IDI1OSwKKyAgICAgRVFPUCA9IDI2MCwKKyAgICAgTUlOVVMgPSAyNjEsCisgICAgIFBM
VVMgPSAyNjIsCisgICAgIEFORCA9IDI2MywKKyAgICAgT1IgPSAyNjQsCisgICAgIEZVTkNUSU9O
TkFNRSA9IDI2NSwKKyAgICAgTElURVJBTCA9IDI2NiwKKyAgICAgTkFNRVRFU1QgPSAyNjcsCisg
ICAgIE5VTUJFUiA9IDI2OCwKKyAgICAgTk9ERVRZUEUgPSAyNjksCisgICAgIFZBUklBQkxFUkVG
RVJFTkNFID0gMjcwLAorICAgICBBWElTTkFNRSA9IDI3MSwKKyAgICAgQ09NTUVOVCA9IDI3MiwK
KyAgICAgRE9URE9UID0gMjczLAorICAgICBQSSA9IDI3NCwKKyAgICAgTk9ERSA9IDI3NSwKKyAg
ICAgU0xBU0hTTEFTSCA9IDI3NiwKKyAgICAgVEVYVCA9IDI3NywKKyAgICAgWFBBVEhfRVJST1Ig
PSAyNzgKKyAgIH07CisjZW5kaWYKKy8qIFRva2Vucy4gICovCisjZGVmaW5lIE1VTE9QIDI1OAor
I2RlZmluZSBSRUxPUCAyNTkKKyNkZWZpbmUgRVFPUCAyNjAKKyNkZWZpbmUgTUlOVVMgMjYxCisj
ZGVmaW5lIFBMVVMgMjYyCisjZGVmaW5lIEFORCAyNjMKKyNkZWZpbmUgT1IgMjY0CisjZGVmaW5l
IEZVTkNUSU9OTkFNRSAyNjUKKyNkZWZpbmUgTElURVJBTCAyNjYKKyNkZWZpbmUgTkFNRVRFU1Qg
MjY3CisjZGVmaW5lIE5VTUJFUiAyNjgKKyNkZWZpbmUgTk9ERVRZUEUgMjY5CisjZGVmaW5lIFZB
UklBQkxFUkVGRVJFTkNFIDI3MAorI2RlZmluZSBBWElTTkFNRSAyNzEKKyNkZWZpbmUgQ09NTUVO
VCAyNzIKKyNkZWZpbmUgRE9URE9UIDI3MworI2RlZmluZSBQSSAyNzQKKyNkZWZpbmUgTk9ERSAy
NzUKKyNkZWZpbmUgU0xBU0hTTEFTSCAyNzYKKyNkZWZpbmUgVEVYVCAyNzcKKyNkZWZpbmUgWFBB
VEhfRVJST1IgMjc4CisKKworCisKKyNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQg
WVlTVFlQRV9JU19ERUNMQVJFRAordHlwZWRlZiB1bmlvbiBZWVNUWVBFCisjbGluZSA2MCAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCit7IAorICAgIE51bWVyaWNPcDo6T3Bjb2RlIG51bWVy
aWNPcGNvZGU7IAorICAgIEVxVGVzdE9wOjpPcGNvZGUgZXF1YWxpdHlUZXN0T3Bjb2RlOworICAg
IFN0cmluZ0ltcGwqIHN0cmluZzsKKyAgICBTdGVwOjpBeGlzIGF4aXM7CisgICAgTG9jYXRpb25Q
YXRoKiBsb2NhdGlvblBhdGg7CisgICAgU3RlcDo6Tm9kZVRlc3QqIG5vZGVUZXN0OworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+KiBleHByZXNzaW9uVmVjdG9yOworICAg
IFN0ZXAqIHN0ZXA7CisgICAgRXhwcmVzc2lvbiogZXhwcmVzc2lvbjsgCit9CisvKiBMaW5lIDE1
Mjkgb2YgeWFjYy5jLiAgKi8KKyNsaW5lIDEwNyAiLi9YUGF0aEdyYW1tYXIuaHBwIgorCVlZU1RZ
UEU7CisjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0
aGRyYXduICovCisjIGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZU1RZ
UEVfSVNfVFJJVklBTCAxCisjZW5kaWYKKworCisKKyNlbmRpZgpJbmRleDogU291cmNlL2NtYWtl
L1dlYktpdENvbW1vbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0Q29t
bW9uLmNtYWtlCShyZXZpc2lvbiAyMDk4MzIpCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9u
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxMSArMTMsNiBAQCBpZiAoTk9UIEhBU19SVU5f
V0VCS0lUX0NPTU1PTikKICAgICAgICAgbGlzdChBUFBFTkQgQ01BS0VfUFJPR1JBTV9QQVRIICRF
TlZ7U3lzdGVtRHJpdmV9L2N5Z3dpbi9iaW4pCiAgICAgZW5kaWYgKCkKIAotICAgIGZpbmRfcGFj
a2FnZShCSVNPTiAyLjEgUkVRVUlSRUQpCi0gICAgaWYgKCFBUFBMRSkKLSAgICAgICAgZmluZF9w
YWNrYWdlKEZMRVggMi41LjM0IFJFUVVJUkVEKQotICAgIGVuZGlmICgpCi0KICAgICAjIFRPRE8g
RW5mb3JjZSB2ZXJzaW9uIHJlcXVpcmVtZW50IGZvciBncGVyZgogICAgIGZpbmRfcGFja2FnZShH
cGVyZiAzLjAuMSBSRVFVSVJFRCkKIApJbmRleDogU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCShyZXZp
c2lvbiAyMDk4MzIpCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDMsMjEgKzI0Myw2IEBAIG1hY3JvKEdFTkVSQVRFX0RPTV9OQU1FUyBfbmFt
ZXNwYWNlIF9hdHQKICAgICAgICAgVkVSQkFUSU0pCiBlbmRtYWNybygpCiAKLQotbWFjcm8oR0VO
RVJBVEVfR1JBTU1BUiBfcHJlZml4IF9pbnB1dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0X3NvdXJj
ZSBfZmVhdHVyZXMpCi0gICAgIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Igd2luZmxleGJpc29u
LCB3aGljaCBkb2VzIG5vdCB3b3JrIGNvcnJldGx5IHdoZW4KLSAgICAjIHJ1biBpbiBhIGRpZmZl
cmVudCB3b3JraW5nIGRpcmVjdG9yeSB0aGFuIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5Lgot
ICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3dvcmtpbmdfZGlyZWN0b3J5ICR7QklTT05fRVhF
Q1VUQUJMRX0gUEFUSCkKLQotICAgIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVU
ICR7X291dHB1dF9oZWFkZXJ9ICR7X291dHB1dF9zb3VyY2V9Ci0gICAgICAgIE1BSU5fREVQRU5E
RU5DWSAke19pbnB1dH0KLSAgICAgICAgREVQRU5EUyAke19pbnB1dH0KLSAgICAgICAgQ09NTUFO
RCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJDT1JFX0RJUn0vY3NzL21ha2VncmFtbWFyLnBsIC0t
b3V0cHV0RGlyICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSAtLWV4dHJhRGVmaW5lcyAi
JHtfZmVhdHVyZXN9IiAtLXByZXByb2Nlc3NvciAiJHtDT0RFX0dFTkVSQVRPUl9QUkVQUk9DRVNT
T1J9IiAtLWJpc29uICIke0JJU09OX0VYRUNVVEFCTEV9IiAtLXN5bWJvbHNQcmVmaXggJHtfcHJl
Zml4fSAke19pbnB1dH0KLSAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtfd29ya2luZ19kaXJl
Y3Rvcnl9Ci0gICAgICAgIFZFUkJBVElNKQotZW5kbWFjcm8oKQotCiBtYWNybyhNQUtFX0hBU0hf
VE9PTFMgX3NvdXJjZSkKICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9uYW1lICR7X3NvdXJj
ZX0gTkFNRV9XRSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297217</attachid>
            <date>2016-12-15 13:54:44 -0800</date>
            <delta_ts>2016-12-15 14:12:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165783-20161215135352.patch</filename>
            <type>text/plain</type>
            <size>90457</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTg2
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEy
LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGZsZXggYW5kIGJpc29uIGJ1aWxkIGRlcGVuZGVuY2llczsgY29tbWl0IGdlbmVy
YXRlZCBYUGF0aCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NTc4MworCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9uLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2U6CisKIDIwMTYtMTItMTAgIEtvbnN0YW50aW4g
VG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIFtjbWFrZV0gSW5jbHVkZSBX
VEYsIEpTQywgYW5kIFdlYkNvcmUgaGVhZGVycyBhdXRvbWF0aWNhbGx5IHRvIHRhcmdlcnMgdXNp
bmcgdGhlbQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5ODY5KQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMTItMTUg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW1vdmUgZmxleCBhbmQgYmlzb24gYnVpbGQgZGVwZW5kZW5jaWVzOyBjb21taXQgZ2VuZXJhdGVk
IFhQYXRoIHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY1NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAg
ICAgICBmbGV4IGFuZCBiaXNvbiBhcmUgYW5ub3lpbmcgdG8gaW5zdGFsbCBhbmQgdXNlLCBlc3Bl
Y2lhbGx5IG9uIFdpbmRvd3MuCisgICAgICAgIFNpbmNlIG9ubHkgWFBhdGhHcmFtbWFyIHVzZXMg
dGhlbSBhbmQgdGhhdCdzIG5vdCBhY3RpdmVseSBkZXZlbG9wZWQsIGxldCdzIGp1c3QgY2hlY2sg
aW4gdGhlIG9uZSBnZW5lcmF0ZWQgZmlsZQorICAgICAgICBhbmQgbWFrZSBidWlsZGluZyBXZWJL
aXQgZWFzaWVyIGZvcmV2ZXIhCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvbWFrZWdyYW1tYXIucGw6IFJlbW92ZWQuCisgICAg
ICAgICogeG1sL1hQYXRoR3JhbW1hci5jcHA6IEFkZGVkLgorICAgICAgICAoeHBhdGh5eWxleCk6
CisgICAgICAgICh4cGF0aHl5ZXJyb3IpOgorICAgICAgICAoeXlzeW50YXhfZXJyb3IpOgorICAg
ICAgICAqIHhtbC9YUGF0aEdyYW1tYXIuaDogQWRkZWQuCisKIDIwMTYtMTItMTUgIFJ5YW4gSGFk
ZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBiaW5kaW5n
cyB0ZXN0cyBhZnRlciByMjA5ODY0LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDIwOTg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0yODczLDYgKzI4NzMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgeG1sL1hQYXRo
RXhwcmVzc2lvbi5jcHAKICAgICB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAKICAgICB4bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCisgICAgeG1sL1hQYXRoR3JhbW1hci5jcHAKICAgICB4bWwvWFBh
dGhOU1Jlc29sdmVyLmNwcAogICAgIHhtbC9YUGF0aE5vZGVTZXQuY3BwCiAgICAgeG1sL1hQYXRo
UGFyc2VyLmNwcApAQCAtMzY3NSw5ICszNjc2LDYgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogbGlz
dChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJ
VkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgUGx1
Z0luc1Jlc291cmNlc0RhdGEuY3BwIFBsdWdJbnNSZXNvdXJjZXMuaCkKIAotR0VORVJBVEVfR1JB
TU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9L3htbC9YUGF0aEdyYW1tYXIueSAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAgIiIpCi1saXN0KEFQUEVORCBXZWJDb3JlX0RFUklW
RURfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmNw
cCkKLQogc2V0KEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICJMQU5HVUFHRV9KQVZBU0NSSVBU
ICR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIpCiBsaXN0KEFQUEVORCBX
ZWJDb3JlVGVzdFN1cHBvcnRfSURMX0ZJTEVTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbCkKIApJbmRleDogU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCShyZXZpc2lvbiAyMDk4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC05MDksNyArOTA5LDYgQEAgYWxsIDogXAog
ICAgIE1hdGhNTEVsZW1lbnRUeXBlSGVscGVycy5oIFwKICAgICBNYXRoTUxOYW1lcy5jcHAgXAog
ICAgIE1hdGhNTE5hbWVzLmggXAotICAgIFhQYXRoR3JhbW1hci5jcHAgXAogIwogCiAjIC0tLS0t
LS0tCkBAIC0xMDIyLDIyICsxMDIxLDYgQEAgQ29sb3JEYXRhLmNwcCA6IHBsYXRmb3JtL0NvbG9y
RGF0YS5ncGVyZgogCiAjIC0tLS0tLS0tCiAKLSMgUGF0aCB0byBiaXNvbgotCi1pZmVxICgkKE9T
KSxNQUNPUykKLUJJU09OPSQoc2hlbGwgeGNydW4gLWZpbmQgYmlzb24pCi1lbHNlCi1CSVNPTj1i
aXNvbgotZW5kaWYKLQotIyAtLS0tLS0tLQotCi0jIFhQYXRoIGdyYW1tYXIKLVhQYXRoR3JhbW1h
ci5jcHAgOiB4bWwvWFBhdGhHcmFtbWFyLnkgJChQUk9KRUNUX0ZJTEUpCi0JJChQRVJMKSAkKFdl
YkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAtLW91dHB1dERpciAuIC0tYmlzb24gIiQoQklTT04p
IiAtLXN5bWJvbHNQcmVmaXggeHBhdGh5eSAkPAotCi0jIC0tLS0tLS0tCi0KICMgV2ViUlRDIHNj
cmlwdHMKIAogV0VCQ09SRV9TRFBfUFJPQ0VTU09SX1NDUklQVFMgPSAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwOTg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzcxLDggKzc3MSw2IEBACiAJCTFBNzUwRDhEMEE5MEU1
MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc1MEQ4QjBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2Rl
SXRlcmF0b3IuY3BwICovOyB9OwogCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2Rl
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNzUwRDhDMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNzUwREQ0MEE5MEU3Mjkw
MDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc1MEREMzBBOTBFNzI5MDAwRkYyMTUgLyogSlNO
b2RlSXRlcmF0b3JDdXN0b20uY3BwICovOyB9OwotCQkxQTc2MjlENTBBMDc0MjUxMDA5ODlGNUIg
LyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNzYyOUQzMEEwNzQyNTEwMDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuY3BwICov
OyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVucmVhY2hhYmxlLWNvZGUiOyB9
OyB9OwotCQkxQTc2MjlENjBBMDc0MjUxMDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc2MjlENDBBMDc0MjUx
MDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmggKi87IH07CiAJCTFBNzYyQzczMEEwNzRGMjYwMDk4
OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNzYyQzZCMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZh
bHVhdG9yLmNwcCAqLzsgfTsKIAkJMUE3NjJDNzQwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhF
dmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNzYyQzZDMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmggKi87IH07CiAJ
CTFBNzYyQzc1MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc2MkM2RDBBMDc0RjI2
MDA5ODlGNUIgLyogSlNYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtMjQ0Nyw2ICsyNDQ1
LDcgQEAKIAkJNUM5QTdBNzUxQUEwRjZFQTAwOTU4QUNGIC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzOTMw
NUUxQUEwRjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwICovOyB9OwogCQk1
QzlBN0E3NjFBQTBGNkVEMDA5NThBQ0YgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzM5MzA2MDFBQTBG
NkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAgKi87IH07CiAJCTVDOUI4
NjBDMUMyMUUzQzkwMDExMEYzNiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUI4NjBCMUMyMUUzQzYwMDExMEYz
NiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSAqLzsgfTsKKwkJNUM5RUYxNzExREZGNzFDQzAwQTQ1
MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzlFRjE2RjFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNw
cCAqLzsgfTsKIAkJNUNCMzdGRkUxQzYyRDI4QzAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9j
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Iz
N0ZGQzFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcCAqLzsgfTsKIAkJ
NUNCMzdGRkYxQzYyRDJBMTAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMzdGRkQxQzYyRDI3ODAw
RjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oICovOyB9OwogCQk1Q0JDOERBQzFBQUEzMDIy
MDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUExQUFBMzAyMjAwRTFDODAz
IC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcCAqLzsgfTsKQEAgLTc3ODQsOCArNzc4
Myw2IEBACiAJCTFBNzUwRDhCMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlSXRlcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc1MEQ4QzBBOTBFNTIxMDAwRkYyMTUg
LyogSlNOb2RlSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Tm9kZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzUwREQzMEE5
MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNzYyOUQzMEEwNzQyNTEwMDk4OUY1QiAvKiBYUGF0aEdy
YW1tYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhQYXRoR3Jh
bW1hci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNzYyOUQ0MEEwNzQyNTEw
MDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhQYXRoR3JhbW1hci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc2MkM2
QjBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV2YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBNzYyQzZDMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZh
bHVhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hQYXRoRXZhbHVh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzYyQzZEMEEwNzRGMjYwMDk4
OUY1QiAvKiBKU1hQYXRoRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNYUGF0aEV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTY5NSw2ICs5NjkyLDggQEAKIAkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8q
IFVSTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZE
IC8qIFNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
Y2tldFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUI4NjBCMUMy
MUUzQzYwMDExMEYzNiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkVGltaW5nLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzlFRjE2RjFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhQYXRoR3JhbW1hci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOUVGMTcwMURGRjcxOTkwMEE0NTJF
MyAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBh
dGhHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjM3RkZDMUM2MkQy
NzgwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkQxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9y
TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvck1v
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzhEQUExQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTM1LDggKzE3NTM0LDYgQEAKIAkJCQlBODMzQzgw
QjBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCAqLywKIAkJCQlFMTVBMzZEODExMDQ1NzI3
MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgKi8sCiAJCQkJRTE1QTM2RDYxMTA0NTcyMDAwQjdC
NjM5IC8qIFhNTE5TTmFtZXMuaCAqLywKLQkJCQkxQTc2MjlEMzBBMDc0MjUxMDA5ODlGNUIgLyog
WFBhdGhHcmFtbWFyLmNwcCAqLywKLQkJCQkxQTc2MjlENDBBMDc0MjUxMDA5ODlGNUIgLyogWFBh
dGhHcmFtbWFyLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJ
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmU7CkBAIC0yMzA2Myw2ICsyMzA2MCw4IEBACiAJ
CQkJMUFCN0ZDNEUwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbk5vZGUuaCAqLywK
IAkJCQkxQUI3RkM0RjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhGdW5jdGlvbnMuY3BwICovLAog
CQkJCTFBQjdGQzUwMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEZ1bmN0aW9ucy5oICovLAorCQkJ
CTVDOUVGMTZGMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwICovLAorCQkJCTVD
OUVGMTcwMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuaCAqLywKIAkJCQkxQUI3RkM1
MTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhHcmFtbWFyLnkgKi8sCiAJCQkJRTFFQzI5OUQwQkIw
NEM2QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5jcHAgKi8sCiAJCQkJRTFFQzI5OUUwQkIwNEM2
QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5oICovLApAQCAtMjgyNzMsNyArMjgyNzIsNiBAQAog
CQkJCTFBQjdGQzZDMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQjdGQzZGMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb25O
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM3MTBBOEI5MkVDMDBEOUQzN0IgLyogWFBh
dGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNzYyOUQ2MEEwNzQyNTEwMDk4OUY1
QiAvKiBYUGF0aEdyYW1tYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUMyOUEwMEJCMDRDNkIw
MEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzc2MEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QjdGQzc5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMDQyMiw2ICszMDQyMCw3IEBACiAJCQkJMEYzNkU3MzkxQkQxODRCOTAwMkRCODkxIC8qIExh
eW91dFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4
IC8qIExheW91dFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzNCMUZDMEYwRTQxNzAw
MDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QzlFRjE3
MTFERkY3MUNDMDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0QjY1QTVBMTMyRkFBRjkwMDcwRTdCRSAvKiBMZWdhY3lUaWxlR3JpZC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUU0MjRBM0EwMTMzMERGMUUwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlFNEI2NUE1RTEzMkZBREI2MDA3MEU3QkUgLyogTGVnYWN5
VGlsZUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTczOCw3ICszMTczNyw2IEBACiAJCQkJ
MUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RkM2RTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM3MDBBOEI5MkVDMDBEOUQzN0IgLyogWFBh
dGhGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUE3NjI5RDUwQTA3NDI1MTAwOTg5
RjVCIC8qIFhQYXRoR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVDMjk5RjBCQjA0
QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdG
Qzc1MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFCN0ZDNzgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAkocmV2aXNpb24gMjA5ODY5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCShub25leGlzdGVudCkKQEAg
LTEsOTkgKzAsMCBAQAotIyEgL3Vzci9iaW4vcGVybAotIwotIyAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgcHJvamVjdAotIwotIyAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSMKLSMgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSMgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSMgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotIwotIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIyAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0jICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi11c2Ugc3RyaWN0OwotdXNl
IHdhcm5pbmdzOwotdXNlIEZpbmRCaW47Ci11c2UgbGliICIkRmluZEJpbjo6QmluLy4uL2JpbmRp
bmdzL3NjcmlwdHMiOwotCi11c2UgRmlsZTo6QmFzZW5hbWU7Ci11c2UgRmlsZTo6U3BlYzsKLXVz
ZSBHZXRvcHQ6Okxvbmc7Ci0KLW15ICRvdXRwdXREaXIgPSAiLiI7Ci1teSAkZXh0cmFEZWZpbmVz
ID0gIiI7Ci1teSAkc3ltYm9sc1ByZWZpeCA9ICIiOwotbXkgJHByZXByb2Nlc3NvciA9ICIiOwot
bXkgJHByZXByb2Nlc3NPbmx5ID0gMDsKLW15ICRiaXNvbiA9ICJiaXNvbiI7Ci0KLUdldE9wdGlv
bnMoCi0gICAgJ291dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKLSAgICAnZXh0cmFEZWZpbmVz
PXMnID0+IFwkZXh0cmFEZWZpbmVzLAotICAgICdiaXNvbj1zJyA9PiBcJGJpc29uLAotICAgICdw
cmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCi0gICAgJ3ByZXByb2Nlc3NPbmx5JyA9
PiBcJHByZXByb2Nlc3NPbmx5LAotICAgICdzeW1ib2xzUHJlZml4PXMnID0+IFwkc3ltYm9sc1By
ZWZpeAotKTsKLQotbXkgJGdyYW1tYXJGaWxlUGF0aCA9ICRBUkdWWzBdOwotbXkgJGdyYW1tYXJJ
bmNsdWRlc0ZpbGVQYXRoID0gQEFSR1YgPiAwID8gJEFSR1ZbMV0gOiAiIjsKLQotaWYgKCFsZW5n
dGgoJHN5bWJvbHNQcmVmaXgpICYmICEkcHJlcHJvY2Vzc09ubHkpIHsKLSAgICBkaWUgIk5lZWQg
YSBzeW1ib2xzIHByZWZpeCB0byBnaXZlIHRvIGJpc29uIChlLmcuIGNzc3l5LCB4cGF0aHl5KSI7
Ci19Ci0KLW15ICgkZmlsZW5hbWUsICRiYXNlUGF0aCwgJHN1ZmZpeCkgPSBmaWxlcGFyc2UoJGdy
YW1tYXJGaWxlUGF0aCwgKCIueSIsICIueS5pbiIpKTsKLQotaWYgKCRzdWZmaXggZXEgIi55Lmlu
IikgewotICAgIG15ICRncmFtbWFyRmlsZU91dFBhdGggPSBGaWxlOjpTcGVjLT5qb2luKCRvdXRw
dXREaXIsICIkZmlsZW5hbWUueSIpOwotICAgIGlmICghJGdyYW1tYXJJbmNsdWRlc0ZpbGVQYXRo
KSB7Ci0gICAgICAgICRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCA9ICIke2Jhc2VQYXRofSR7Zmls
ZW5hbWV9LnkuaW5jbHVkZXMiOwotICAgIH0KLQotICAgIG9wZW4gR1JBTU1BUiwgIj4kZ3JhbW1h
ckZpbGVPdXRQYXRoIiBvciBkaWU7Ci0gICAgb3BlbiBJTkNMVURFUywgIjwkZ3JhbW1hckluY2x1
ZGVzRmlsZVBhdGgiIG9yIGRpZTsKLQotICAgIHJlcXVpcmUgcHJlcHJvY2Vzc29yOwotCi0gICAg
d2hpbGUgKDxJTkNMVURFUz4pIHsKLSAgICAgICAgcHJpbnQgR1JBTU1BUjsKLSAgICB9Ci0gICAg
cHJpbnQgR1JBTU1BUiBqb2luKCIiLCBhcHBseVByZXByb2Nlc3NvcigkZ3JhbW1hckZpbGVQYXRo
LCAkZXh0cmFEZWZpbmVzLCAkcHJlcHJvY2Vzc29yKSk7Ci0gICAgY2xvc2UgR1JBTU1BUjsKLQot
ICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3JhbW1hckZpbGVPdXRQYXRoOwotCi0gICAgZXhpdCBp
ZiAkcHJlcHJvY2Vzc09ubHk7Ci19Ci0KLW15ICRmaWxlQmFzZSA9IEZpbGU6OlNwZWMtPmpvaW4o
JG91dHB1dERpciwgJGZpbGVuYW1lKTsKLW15IEBiaXNvbkNvbW1hbmQgPSAoJGJpc29uLCAiLWQi
LCAiLXAiLCAkc3ltYm9sc1ByZWZpeCwgJGdyYW1tYXJGaWxlUGF0aCwgIi1vIiwgIiRmaWxlQmFz
ZS5jcHAiKTsKLXB1c2ggQGJpc29uQ29tbWFuZCwgIi0tbm8tbGluZXMiIGlmICReTyBlcSAiTVNX
aW4zMiI7ICMgV29yayBhcm91bmQgYnVnIGluIGJpc29uID49IDMuMCBvbiBXaW5kb3dzIHdoZXJl
IGl0IHB1dHMgYmFja3NsYXNoZXMgaW50byAjbGluZSBkaXJlY3RpdmVzLgotc3lzdGVtKEBiaXNv
bkNvbW1hbmQpID09IDAgb3IgZGllOwotCi1vcGVuIEhFQURFUiwgIj4kZmlsZUJhc2UuaCIgb3Ig
ZGllOwotcHJpbnQgSEVBREVSIDw8ICJFT0YiOwotI2lmbmRlZiBDU1NHUkFNTUFSX0gKLSNkZWZp
bmUgQ1NTR1JBTU1BUl9ICi1FT0YKLQotb3BlbiBIUFAsICI8JGZpbGVCYXNlLmNwcC5oIiBvciBv
cGVuIEhQUCwgIjwkZmlsZUJhc2UuaHBwIiBvciBkaWU7Ci13aGlsZSAoPEhQUD4pIHsKLSAgICBw
cmludCBIRUFERVI7Ci19Ci1jbG9zZSBIUFA7Ci0KLXByaW50IEhFQURFUiAiI2VuZGlmXG4iOwot
Y2xvc2UgSEVBREVSOwotCi11bmxpbmsoIiRmaWxlQmFzZS5jcHAuaCIpOwotdW5saW5rKCIkZmls
ZUJhc2UuaHBwIik7Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjI3OCBAQAorLyogVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB1c2lu
ZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICBiaXNvbiAtZCAtcCB4cGF0aHl5IFhQYXRoR3Jh
bW1hci55IC1vIFhQYXRoR3JhbW1hci5jcHAgCisgKi8KKworLyogQSBCaXNvbiBwYXJzZXIsIG1h
ZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisKKy8qIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZv
ciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKworICAgQ29weXJpZ2h0IChDKSAxOTg0
LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Cisg
ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv
biAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0
ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKKyAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNv
biBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCisgICB1bmRlciB0ZXJt
cyBvZiB5b3VyIGNob2ljZSwgc28gbG9uZyBhcyB0aGF0IHdvcmsgaXNuJ3QgaXRzZWxmIGEKKyAg
IHBhcnNlciBnZW5lcmF0b3IgdXNpbmcgdGhlIHNrZWxldG9uIG9yIGEgbW9kaWZpZWQgdmVyc2lv
biB0aGVyZW9mCisgICBhcyBhIHBhcnNlciBza2VsZXRvbi4gIEFsdGVybmF0aXZlbHksIGlmIHlv
dSBtb2RpZnkgb3IgcmVkaXN0cmlidXRlCisgICB0aGUgcGFyc2VyIHNrZWxldG9uIGl0c2VsZiwg
eW91IG1heSAoYXQgeW91ciBvcHRpb24pIHJlbW92ZSB0aGlzCisgICBzcGVjaWFsIGV4Y2VwdGlv
biwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKKyAgIEJp
c29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVi
bGljCisgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KKworICAgVGhp
cyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiBpbgorICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLworCisvKiBDIExBTFIoMSkgcGFy
c2VyIHNrZWxldG9uIHdyaXR0ZW4gYnkgUmljaGFyZCBTdGFsbG1hbiwgYnkKKyAgIHNpbXBsaWZ5
aW5nIHRoZSBvcmlnaW5hbCBzby1jYWxsZWQgInNlbWFudGljIiBwYXJzZXIuICAqLworCisvKiBB
bGwgc3ltYm9scyBkZWZpbmVkIGJlbG93IHNob3VsZCBiZWdpbiB3aXRoIHl5IG9yIFlZLCB0byBh
dm9pZAorICAgaW5mcmluZ2luZyBvbiB1c2VyIG5hbWUgc3BhY2UuICBUaGlzIHNob3VsZCBiZSBk
b25lIGV2ZW4gZm9yIGxvY2FsCisgICB2YXJpYWJsZXMsIGFzIHRoZXkgbWlnaHQgb3RoZXJ3aXNl
IGJlIGV4cGFuZGVkIGJ5IHVzZXIgbWFjcm9zLgorICAgVGhlcmUgYXJlIHNvbWUgdW5hdm9pZGFi
bGUgZXhjZXB0aW9ucyB3aXRoaW4gaW5jbHVkZSBmaWxlcyB0bworICAgZGVmaW5lIG5lY2Vzc2Fy
eSBsaWJyYXJ5IHN5bWJvbHM7IHRoZXkgYXJlIG5vdGVkICJJTkZSSU5HRVMgT04KKyAgIFVTRVIg
TkFNRSBTUEFDRSIgYmVsb3cuICAqLworCisvKiBJZGVudGlmeSBCaXNvbiBvdXRwdXQuICAqLwor
I2RlZmluZSBZWUJJU09OIDEKKworLyogQmlzb24gdmVyc2lvbi4gICovCisjZGVmaW5lIFlZQklT
T05fVkVSU0lPTiAiMi4zIgorCisvKiBTa2VsZXRvbiBuYW1lLiAgKi8KKyNkZWZpbmUgWVlTS0VM
RVRPTl9OQU1FICJ5YWNjLmMiCisKKy8qIFB1cmUgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVS
RSAxCisKKy8qIFVzaW5nIGxvY2F0aW9ucy4gICovCisjZGVmaW5lIFlZTFNQX05FRURFRCAwCisK
Ky8qIFN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4gICovCisjZGVm
aW5lIHl5cGFyc2UgeHBhdGh5eXBhcnNlCisjZGVmaW5lIHl5bGV4ICAgeHBhdGh5eWxleAorI2Rl
ZmluZSB5eWVycm9yIHhwYXRoeXllcnJvcgorI2RlZmluZSB5eWx2YWwgIHhwYXRoeXlsdmFsCisj
ZGVmaW5lIHl5Y2hhciAgeHBhdGh5eWNoYXIKKyNkZWZpbmUgeXlkZWJ1ZyB4cGF0aHl5ZGVidWcK
KyNkZWZpbmUgeXluZXJycyB4cGF0aHl5bmVycnMKKworCisvKiBUb2tlbnMuICAqLworI2lmbmRl
ZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tFTlRZUEUKKyAgIC8qIFB1dCB0aGUgdG9rZW5z
IGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2Vycwor
ICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KKyAgIGVudW0geXl0b2tlbnR5cGUgeworICAgICBN
VUxPUCA9IDI1OCwKKyAgICAgUkVMT1AgPSAyNTksCisgICAgIEVRT1AgPSAyNjAsCisgICAgIE1J
TlVTID0gMjYxLAorICAgICBQTFVTID0gMjYyLAorICAgICBBTkQgPSAyNjMsCisgICAgIE9SID0g
MjY0LAorICAgICBGVU5DVElPTk5BTUUgPSAyNjUsCisgICAgIExJVEVSQUwgPSAyNjYsCisgICAg
IE5BTUVURVNUID0gMjY3LAorICAgICBOVU1CRVIgPSAyNjgsCisgICAgIE5PREVUWVBFID0gMjY5
LAorICAgICBWQVJJQUJMRVJFRkVSRU5DRSA9IDI3MCwKKyAgICAgQVhJU05BTUUgPSAyNzEsCisg
ICAgIENPTU1FTlQgPSAyNzIsCisgICAgIERPVERPVCA9IDI3MywKKyAgICAgUEkgPSAyNzQsCisg
ICAgIE5PREUgPSAyNzUsCisgICAgIFNMQVNIU0xBU0ggPSAyNzYsCisgICAgIFRFWFQgPSAyNzcs
CisgICAgIFhQQVRIX0VSUk9SID0gMjc4CisgICB9OworI2VuZGlmCisvKiBUb2tlbnMuICAqLwor
I2RlZmluZSBNVUxPUCAyNTgKKyNkZWZpbmUgUkVMT1AgMjU5CisjZGVmaW5lIEVRT1AgMjYwCisj
ZGVmaW5lIE1JTlVTIDI2MQorI2RlZmluZSBQTFVTIDI2MgorI2RlZmluZSBBTkQgMjYzCisjZGVm
aW5lIE9SIDI2NAorI2RlZmluZSBGVU5DVElPTk5BTUUgMjY1CisjZGVmaW5lIExJVEVSQUwgMjY2
CisjZGVmaW5lIE5BTUVURVNUIDI2NworI2RlZmluZSBOVU1CRVIgMjY4CisjZGVmaW5lIE5PREVU
WVBFIDI2OQorI2RlZmluZSBWQVJJQUJMRVJFRkVSRU5DRSAyNzAKKyNkZWZpbmUgQVhJU05BTUUg
MjcxCisjZGVmaW5lIENPTU1FTlQgMjcyCisjZGVmaW5lIERPVERPVCAyNzMKKyNkZWZpbmUgUEkg
Mjc0CisjZGVmaW5lIE5PREUgMjc1CisjZGVmaW5lIFNMQVNIU0xBU0ggMjc2CisjaWYgQ09NUElM
RVIoTVNWQykKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDA1KQorI2VuZGlmCisjZGVmaW5l
IFRFWFQgMjc3CisjZGVmaW5lIFhQQVRIX0VSUk9SIDI3OAorCisKKworCisvKiBDb3B5IHRoZSBm
aXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KKyNsaW5lIDI4ICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJY
UGF0aEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlhQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiWFBh
dGhQYXRoLmgiCisjaW5jbHVkZSAiWFBhdGhTdGVwLmgiCisjaW5jbHVkZSAiWFBhdGhWYXJpYWJs
ZVJlZmVyZW5jZS5oIgorCisjaWYgQ09NUElMRVIoTVNWQykKKy8vIFNlZSBodHRwczovL21zZG4u
bWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5LzF3ZWE1endlLmFzcHgKKyNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0NzAxKQorI2VuZGlmCisKKyNkZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYwor
I2RlZmluZSBZWUZSRUUgZmFzdEZyZWUKKworI2RlZmluZSBZWUVOQUJMRV9OTFMgMAorI2RlZmlu
ZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQorI2RlZmluZSBZWURFQlVHIDAKKyNkZWZpbmUgWVlNQVhE
RVBUSCAxMDAwMAorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBY
UGF0aDsKKworCisKKy8qIEVuYWJsaW5nIHRyYWNlcy4gICovCisjaWZuZGVmIFlZREVCVUcKKyMg
ZGVmaW5lIFlZREVCVUcgMAorI2VuZGlmCisKKy8qIEVuYWJsaW5nIHZlcmJvc2UgZXJyb3IgbWVz
c2FnZXMuICAqLworI2lmZGVmIFlZRVJST1JfVkVSQk9TRQorIyB1bmRlZiBZWUVSUk9SX1ZFUkJP
U0UKKyMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCisjZWxzZQorIyBkZWZpbmUgWVlFUlJPUl9W
RVJCT1NFIDAKKyNlbmRpZgorCisvKiBFbmFibGluZyB0aGUgdG9rZW4gdGFibGUuICAqLworI2lm
bmRlZiBZWVRPS0VOX1RBQkxFCisjIGRlZmluZSBZWVRPS0VOX1RBQkxFIDAKKyNlbmRpZgorCisj
aWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKK3R5
cGVkZWYgdW5pb24gWVlTVFlQRQorI2xpbmUgNjAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55
IgoreyAKKyAgICBOdW1lcmljT3A6Ok9wY29kZSBudW1lcmljT3Bjb2RlOyAKKyAgICBFcVRlc3RP
cDo6T3Bjb2RlIGVxdWFsaXR5VGVzdE9wY29kZTsKKyAgICBTdHJpbmdJbXBsKiBzdHJpbmc7Cisg
ICAgU3RlcDo6QXhpcyBheGlzOworICAgIExvY2F0aW9uUGF0aCogbG9jYXRpb25QYXRoOworICAg
IFN0ZXA6Ok5vZGVUZXN0KiBub2RlVGVzdDsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+PiogZXhwcmVzc2lvblZlY3RvcjsKKyAgICBTdGVwKiBzdGVwOworICAgIEV4cHJl
c3Npb24qIGV4cHJlc3Npb247IAorfQorLyogTGluZSAxOTMgb2YgeWFjYy5jLiAgKi8KKyNsaW5l
IDE5MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCVlZU1RZUEU7CisjIGRlZmluZSB5eXN0eXBlIFlZ
U1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWVNU
WVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYK
KworCisKKy8qIENvcHkgdGhlIHNlY29uZCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8K
KyNsaW5lIDEwNCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisKKworc3RhdGljIGludCB4
cGF0aHl5bGV4KFlZU1RZUEUqIHl5bHZhbCwgUGFyc2VyJiBwYXJzZXIpIHsgcmV0dXJuIHBhcnNl
ci5sZXgoKnl5bHZhbCk7IH0KK3N0YXRpYyB2b2lkIHhwYXRoeXllcnJvcihQYXJzZXImLCBjb25z
dCBjaGFyKikgeyB9CisKKworCisvKiBMaW5lIDIxNiBvZiB5YWNjLmMuICAqLworI2xpbmUgMjA5
ICIuL1hQYXRoR3JhbW1hci5jcHAiCisKKyNpZmRlZiBzaG9ydAorIyB1bmRlZiBzaG9ydAorI2Vu
ZGlmCisKKyNpZmRlZiBZWVRZUEVfVUlOVDgKK3R5cGVkZWYgWVlUWVBFX1VJTlQ4IHl5dHlwZV91
aW50ODsKKyNlbHNlCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgeXl0eXBlX3VpbnQ4OworI2VuZGlm
CisKKyNpZmRlZiBZWVRZUEVfSU5UOAordHlwZWRlZiBZWVRZUEVfSU5UOCB5eXR5cGVfaW50ODsK
KyNlbGlmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAg
IHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3R5cGVkZWYgc2ln
bmVkIGNoYXIgeXl0eXBlX2ludDg7CisjZWxzZQordHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2lu
dDg7CisjZW5kaWYKKworI2lmZGVmIFlZVFlQRV9VSU5UMTYKK3R5cGVkZWYgWVlUWVBFX1VJTlQx
NiB5eXR5cGVfdWludDE2OworI2Vsc2UKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHl5dHlw
ZV91aW50MTY7CisjZW5kaWYKKworI2lmZGVmIFlZVFlQRV9JTlQxNgordHlwZWRlZiBZWVRZUEVf
SU5UMTYgeXl0eXBlX2ludDE2OworI2Vsc2UKK3R5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQx
NjsKKyNlbmRpZgorCisjaWZuZGVmIFlZU0laRV9UCisjIGlmZGVmIF9fU0laRV9UWVBFX18KKyMg
IGRlZmluZSBZWVNJWkVfVCBfX1NJWkVfVFlQRV9fCisjIGVsaWYgZGVmaW5lZCBzaXplX3QKKyMg
IGRlZmluZSBZWVNJWkVfVCBzaXplX3QKKyMgZWxpZiAhIGRlZmluZWQgWVlTSVpFX1QgJiYgKGRl
ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5l
ZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgaW5jbHVkZSA8c3RkZGVmLmg+
IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgIGRlZmluZSBZWVNJWkVfVCBz
aXplX3QKKyMgZWxzZQorIyAgZGVmaW5lIFlZU0laRV9UIHVuc2lnbmVkIGludAorIyBlbmRpZgor
I2VuZGlmCisKKyNkZWZpbmUgWVlTSVpFX01BWElNVU0gKChZWVNJWkVfVCkgLTEpCisKKyNpZm5k
ZWYgWVlfCisjIGlmIGRlZmluZWQgWVlFTkFCTEVfTkxTICYmIFlZRU5BQkxFX05MUworIyAgaWYg
RU5BQkxFX05MUworIyAgIGluY2x1ZGUgPGxpYmludGwuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIg
TkFNRSBTUEFDRSAqLworIyAgIGRlZmluZSBZWV8obXNnaWQpIGRnZXR0ZXh0ICgiYmlzb24tcnVu
dGltZSIsIG1zZ2lkKQorIyAgZW5kaWYKKyMgZW5kaWYKKyMgaWZuZGVmIFlZXworIyAgZGVmaW5l
IFlZXyhtc2dpZCkgbXNnaWQKKyMgZW5kaWYKKyNlbmRpZgorCisvKiBTdXBwcmVzcyB1bnVzZWQt
dmFyaWFibGUgd2FybmluZ3MgYnkgInVzaW5nIiBFLiAgKi8KKyNpZiAhIGRlZmluZWQgbGludCB8
fCBkZWZpbmVkIF9fR05VQ19fCisjIGRlZmluZSBZWVVTRShlKSAoKHZvaWQpIChlKSkKKyNlbHNl
CisjIGRlZmluZSBZWVVTRShlKSAvKiBlbXB0eSAqLworI2VuZGlmCisKKy8qIElkZW50aXR5IGZ1
bmN0aW9uLCB1c2VkIHRvIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IGNvbnN0YW50IGNvbmRpdGlv
bnMuICAqLworI2lmbmRlZiBsaW50CisjIGRlZmluZSBZWUlEKG4pIChuKQorI2Vsc2UKKyNpZiAo
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZp
bmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgaW50CitZWUlEIChp
bnQgaSkKKyNlbHNlCitzdGF0aWMgaW50CitZWUlEIChpKQorICAgIGludCBpOworI2VuZGlmCit7
CisgIHJldHVybiBpOworfQorI2VuZGlmCisKKyNpZiAhIGRlZmluZWQgeXlvdmVyZmxvdyB8fCBZ
WUVSUk9SX1ZFUkJPU0UKKworLyogVGhlIHBhcnNlciBpbnZva2VzIGFsbG9jYSBvciBtYWxsb2M7
IGRlZmluZSB0aGUgbmVjZXNzYXJ5IHN5bWJvbHMuICAqLworCisjIGlmZGVmIFlZU1RBQ0tfVVNF
X0FMTE9DQQorIyAgaWYgWVlTVEFDS19VU0VfQUxMT0NBCisjICAgaWZkZWYgX19HTlVDX18KKyMg
ICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgX19idWlsdGluX2FsbG9jYQorIyAgIGVsaWYgZGVmaW5l
ZCBfX0JVSUxUSU5fVkFfQVJHX0lOQ1IKKyMgICAgaW5jbHVkZSA8YWxsb2NhLmg+IC8qIElORlJJ
TkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBlbGlmIGRlZmluZWQgX0FJWAorIyAgICBk
ZWZpbmUgWVlTVEFDS19BTExPQyBfX2FsbG9jYQorIyAgIGVsaWYgZGVmaW5lZCBfTVNDX1ZFUgor
IyAgICBpbmNsdWRlIDxtYWxsb2MuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAq
LworIyAgICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKKyMgICBlbHNlCisjICAgIGRlZmluZSBZWVNU
QUNLX0FMTE9DIGFsbG9jYQorIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYmICEgZGVmaW5l
ZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAg
ICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8K
KyMgICAgIGlmbmRlZiBfU1RETElCX0gKKyMgICAgICBkZWZpbmUgX1NURExJQl9IIDEKKyMgICAg
IGVuZGlmCisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMgIGVuZGlmCisjIGVuZGlmCisKKyMgaWZk
ZWYgWVlTVEFDS19BTExPQworICAgLyogUGFjaWZ5IEdDQydzIGBlbXB0eSBpZi1ib2R5JyB3YXJu
aW5nLiAgKi8KKyMgIGRlZmluZSBZWVNUQUNLX0ZSRUUoUHRyKSBkbyB7IC8qIGVtcHR5ICovOyB9
IHdoaWxlIChZWUlEICgwKSkKKyMgIGlmbmRlZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KKyAgICAv
KiBUaGUgT1MgbWlnaHQgZ3VhcmFudGVlIG9ubHkgb25lIGd1YXJkIHBhZ2UgYXQgdGhlIGJvdHRv
bSBvZiB0aGUgc3RhY2ssCisgICAgICAgYW5kIGEgcGFnZSBzaXplIGNhbiBiZSBhcyBzbWFsbCBh
cyA0MDk2IGJ5dGVzLiAgU28gd2UgY2Fubm90IHNhZmVseQorICAgICAgIGludm9rZSBhbGxvY2Eg
KE4pIGlmIE4gZXhjZWVkcyA0MDk2LiAgVXNlIGEgc2xpZ2h0bHkgc21hbGxlciBudW1iZXIKKyAg
ICAgICB0byBhbGxvdyBmb3IgYSBmZXcgY29tcGlsZXItYWxsb2NhdGVkIHRlbXBvcmFyeSBzdGFj
ayBzbG90cy4gICovCisjICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSA0MDMyIC8qIHJl
YXNvbmFibGUgY2lyY2EgMjAwNiAqLworIyAgZW5kaWYKKyMgZWxzZQorIyAgZGVmaW5lIFlZU1RB
Q0tfQUxMT0MgWVlNQUxMT0MKKyMgIGRlZmluZSBZWVNUQUNLX0ZSRUUgWVlGUkVFCisjICBpZm5k
ZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCisjICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0NfTUFYSU1V
TSBZWVNJWkVfTUFYSU1VTQorIyAgZW5kaWYKKyMgIGlmIChkZWZpbmVkIF9fY3BsdXNwbHVzICYm
ICEgZGVmaW5lZCBfU1RETElCX0ggXAorICAgICAgICYmICEgKChkZWZpbmVkIFlZTUFMTE9DIHx8
IGRlZmluZWQgbWFsbG9jKSBcCisJICAgICAmJiAoZGVmaW5lZCBZWUZSRUUgfHwgZGVmaW5lZCBm
cmVlKSkpCisjICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUg
U1BBQ0UgKi8KKyMgICBpZm5kZWYgX1NURExJQl9ICisjICAgIGRlZmluZSBfU1RETElCX0ggMQor
IyAgIGVuZGlmCisjICBlbmRpZgorIyAgaWZuZGVmIFlZTUFMTE9DCisjICAgZGVmaW5lIFlZTUFM
TE9DIG1hbGxvYworIyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZpbmVkIF9TVERMSUJf
SCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8
fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCit2b2lkICptYWxsb2Mg
KFlZU0laRV9UKTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgIGVuZGlm
CisjICBlbmRpZgorIyAgaWZuZGVmIFlZRlJFRQorIyAgIGRlZmluZSBZWUZSRUUgZnJlZQorIyAg
IGlmICEgZGVmaW5lZCBmcmVlICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQgX19T
VERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVz
cGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQordm9pZCBmcmVlICh2b2lkICopOyAvKiBJTkZSSU5H
RVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICAgZW5kaWYKKyMgIGVuZGlmCisjIGVuZGlmCisj
ZW5kaWYgLyogISBkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJCT1NFICovCisKKwor
I2lmICghIGRlZmluZWQgeXlvdmVyZmxvdyBcCisgICAgICYmICghIGRlZmluZWQgX19jcGx1c3Bs
dXMgXAorCSB8fCAoZGVmaW5lZCBZWVNUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklW
SUFMKSkpCisKKy8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFj
ayBtZW1iZXIuICAqLwordW5pb24geXlhbGxvYworeworICB5eXR5cGVfaW50MTYgeXlzczsKKyAg
WVlTVFlQRSB5eXZzOworICB9OworCisvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0
d2VlbiBvbmUgYWxpZ25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLworIyBkZWZpbmUgWVlTVEFD
S19HQVBfTUFYSU1VTSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCisKKy8qIFRoZSBzaXpl
IG9mIGFuIGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0
aAorICAgTiBlbGVtZW50cy4gICovCisjIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKKyAgICAg
KChOKSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpKSBcCisgICAg
ICArIFlZU1RBQ0tfR0FQX01BWElNVU0pCisKKy8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZS
T00gdG8gVE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbworICAgbm90IG92ZXJsYXAu
ICAqLworIyBpZm5kZWYgWVlDT1BZCisjICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIDEgPCBfX0dO
VUNfXworIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KSBcCisgICAgICBfX2J1aWx0
aW5fbWVtY3B5IChUbywgRnJvbSwgKENvdW50KSAqIHNpemVvZiAoKihGcm9tKSkpCisjICBlbHNl
CisjICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpCQlcCisgICAgICBkbwkJCQkJXAor
CXsJCQkJCVwKKwkgIFlZU0laRV9UIHl5aTsJCQkJXAorCSAgZm9yICh5eWkgPSAwOyB5eWkgPCAo
Q291bnQpOyB5eWkrKykJXAorCSAgICAoVG8pW3l5aV0gPSAoRnJvbSlbeXlpXTsJCVwKKwl9CQkJ
CQlcCisgICAgICB3aGlsZSAoWVlJRCAoMCkpCisjICBlbmRpZgorIyBlbmRpZgorCisvKiBSZWxv
Y2F0ZSBTVEFDSyBmcm9tIGl0cyBvbGQgbG9jYXRpb24gdG8gdGhlIG5ldyBvbmUuICBUaGUKKyAg
IGxvY2FsIHZhcmlhYmxlcyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUgdGhlIG9sZCBhbmQg
bmV3IG51bWJlciBvZgorICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIgZ2l2ZXMg
dGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKKyAgIHN0YWNrLiAgQWR2YW5jZSBZWVBUUiB0byBhIHBy
b3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0CisgICBzdGFjay4gICovCisjIGRl
ZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJXAorICAgIGRvCQkJCQkJCQkJXAorICAg
ICAgewkJCQkJCQkJCVwKKwlZWVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKKwlZWUNPUFkgKCZ5
eXB0ci0+U3RhY2ssIFN0YWNrLCB5eXNpemUpOwkJCQlcCisJU3RhY2sgPSAmeXlwdHItPlN0YWNr
OwkJCQkJCVwKKwl5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBzaXplb2YgKCpTdGFjaykgKyBZ
WVNUQUNLX0dBUF9NQVhJTVVNOyBcCisJeXlwdHIgKz0geXluZXdieXRlcyAvIHNpemVvZiAoKnl5
cHRyKTsJCQkJXAorICAgICAgfQkJCQkJCQkJCVwKKyAgICB3aGlsZSAoWVlJRCAoMCkpCisKKyNl
bmRpZgorCisvKiBZWUZJTkFMIC0tIFN0YXRlIG51bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3Rh
dGUuICAqLworI2RlZmluZSBZWUZJTkFMICA1MgorLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4g
WVlUQUJMRS4gICovCisjZGVmaW5lIFlZTEFTVCAgIDEzMgorCisvKiBZWU5UT0tFTlMgLS0gTnVt
YmVyIG9mIHRlcm1pbmFscy4gICovCisjZGVmaW5lIFlZTlRPS0VOUyAgMzMKKy8qIFlZTk5UUyAt
LSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAgKi8KKyNkZWZpbmUgWVlOTlRTICAyOAorLyogWVlO
UlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KKyNkZWZpbmUgWVlOUlVMRVMgIDY0CisvKiBZ
WU5SVUxFUyAtLSBOdW1iZXIgb2Ygc3RhdGVzLiAgKi8KKyNkZWZpbmUgWVlOU1RBVEVTICAxMDEK
KworLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVzcG9u
ZGluZyB0byBZWUxFWC4gICovCisjZGVmaW5lIFlZVU5ERUZUT0sgIDIKKyNkZWZpbmUgWVlNQVhV
VE9LICAgMjc4CisKKyNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKQkJCQkJCVwKKyAgKCh1bnNpZ25l
ZCBpbnQpIChZWVgpIDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVOREVGVE9L
KQorCisvKiBZWVRSQU5TTEFURVtZWUxFWF0gLS0gQmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNw
b25kaW5nIHRvIFlZTEVYLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xh
dGVbXSA9Cit7CisgICAgICAgMCwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgIDI2LCAgICAyNywgICAgIDIsICAgICAyLCAgICAz
MSwgICAgIDIsICAgIDMwLCAgICAyNCwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisg
ICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgMjUsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAg
MiwgICAgMjgsICAgICAyLCAgICAyOSwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgMzIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAg
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAorICAg
ICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgIDIzCit9OworCisjaWYgWVlERUJVRworLyogWVlQUkhTW1lZTl0g
LS0gSW5kZXggb2YgdGhlIGZpcnN0IFJIUyBzeW1ib2wgb2YgcnVsZSBudW1iZXIgWVlOIGluCisg
ICBZWVJIUy4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cHJoc1tdID0KK3sKKyAg
ICAgICAwLCAgICAgMCwgICAgIDMsICAgICA1LCAgICAgNywgICAgIDksICAgIDExLCAgICAxMywg
ICAgMTYsICAgIDE5LAorICAgICAgMjEsICAgIDI1LCAgICAyOSwgICAgMzIsICAgIDM1LCAgICAz
OSwgICAgNDMsICAgIDQ1LCAgICA0NywgICAgNDksCisgICAgICA1MywgICAgNTcsICAgIDYxLCAg
ICA2NSwgICAgNzAsICAgIDcxLCAgICA3MywgICAgNzUsICAgIDc4LCAgICA4MiwKKyAgICAgIDg0
LCAgICA4NiwgICAgODgsICAgIDkwLCAgICA5NCwgICAgOTYsICAgIDk4LCAgIDEwMCwgICAxMDQs
ICAgMTA5LAorICAgICAxMTEsICAgMTE1LCAgIDExNywgICAxMTksICAgMTIzLCAgIDEyNSwgICAx
MjcsICAgMTMxLCAgIDEzNSwgICAxMzcsCisgICAgIDE0MCwgICAxNDIsICAgMTQ2LCAgIDE0OCwg
ICAxNTIsICAgMTU0LCAgIDE1OCwgICAxNjAsICAgMTY0LCAgIDE2NiwKKyAgICAgMTcwLCAgIDE3
NCwgICAxNzYsICAgMTgwLCAgIDE4MgorfTsKKworLyogWVlSSFMgLS0gQSBgLTEnLXNlcGFyYXRl
ZCBsaXN0IG9mIHRoZSBydWxlcycgUkhTLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5
eXJoc1tdID0KK3sKKyAgICAgIDM0LCAgICAgMCwgICAgLTEsICAgIDM1LCAgICAtMSwgICAgNTQs
ICAgIC0xLCAgICAzNywgICAgLTEsICAgIDM4LAorICAgICAgLTEsICAgIDI0LCAgICAtMSwgICAg
MjQsICAgIDM4LCAgICAtMSwgICAgNDUsICAgIDM4LCAgICAtMSwgICAgMzksCisgICAgICAtMSwg
ICAgMzgsICAgIDI0LCAgICAzOSwgICAgLTEsICAgIDM4LCAgICA0NSwgICAgMzksICAgIC0xLCAg
ICA0MSwKKyAgICAgIDQyLCAgICAtMSwgICAgMTIsICAgIDQyLCAgICAtMSwgICAgNDAsICAgIDQx
LCAgICA0MiwgICAgLTEsICAgIDQwLAorICAgICAgMTIsICAgIDQyLCAgICAtMSwgICAgNDYsICAg
IC0xLCAgICAxNiwgICAgLTEsICAgIDI1LCAgICAtMSwgICAgMjAsCisgICAgICAyNiwgICAgMjcs
ICAgIC0xLCAgICAyMiwgICAgMjYsICAgIDI3LCAgICAtMSwgICAgMTcsICAgIDI2LCAgICAyNywK
KyAgICAgIC0xLCAgICAxOSwgICAgMjYsICAgIDI3LCAgICAtMSwgICAgMTksICAgIDI2LCAgICAx
MSwgICAgMjcsICAgIC0xLAorICAgICAgLTEsICAgIDQzLCAgICAtMSwgICAgNDQsICAgIC0xLCAg
ICA0MywgICAgNDQsICAgIC0xLCAgICAyOCwgICAgMzUsCisgICAgICAyOSwgICAgLTEsICAgIDIx
LCAgICAtMSwgICAgMzAsICAgIC0xLCAgICAxOCwgICAgLTEsICAgIDE1LCAgICAtMSwKKyAgICAg
IDI2LCAgICAzNSwgICAgMjcsICAgIC0xLCAgICAxMSwgICAgLTEsICAgIDEzLCAgICAtMSwgICAg
NDgsICAgIC0xLAorICAgICAgMTAsICAgIDI2LCAgICAyNywgICAgLTEsICAgIDEwLCAgICAyNiwg
ICAgNDksICAgIDI3LCAgICAtMSwgICAgNTAsCisgICAgICAtMSwgICAgNDksICAgIDMxLCAgICA1
MCwgICAgLTEsICAgIDM1LCAgICAtMSwgICAgNTIsICAgIC0xLCAgICA1MSwKKyAgICAgIDMyLCAg
ICA1MiwgICAgLTEsICAgIDM2LCAgICAtMSwgICAgNTMsICAgIC0xLCAgICA1MywgICAgMjQsICAg
IDM4LAorICAgICAgLTEsICAgIDUzLCAgICA0NSwgICAgMzgsICAgIC0xLCAgICA0NywgICAgLTEs
ICAgIDQ3LCAgICA0MywgICAgLTEsCisgICAgICA1NSwgICAgLTEsICAgIDU0LCAgICAgOSwgICAg
NTUsICAgIC0xLCAgICA1NiwgICAgLTEsICAgIDU1LCAgICAgOCwKKyAgICAgIDU2LCAgICAtMSwg
ICAgNTcsICAgIC0xLCAgICA1NiwgICAgIDUsICAgIDU3LCAgICAtMSwgICAgNTgsICAgIC0xLAor
ICAgICAgNTcsICAgICA0LCAgICA1OCwgICAgLTEsICAgIDU5LCAgICAtMSwgICAgNTgsICAgICA3
LCAgICA1OSwgICAgLTEsCisgICAgICA1OCwgICAgIDYsICAgIDU5LCAgICAtMSwgICAgNjAsICAg
IC0xLCAgICA1OSwgICAgIDMsICAgIDYwLCAgICAtMSwKKyAgICAgIDUxLCAgICAtMSwgICAgIDYs
ICAgIDYwLCAgICAtMQorfTsKKworLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJl
IHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3Vp
bnQxNiB5eXJsaW5lW10gPQoreworICAgICAgIDAsICAgMTE0LCAgIDExNCwgICAxMjEsICAgMTI1
LCAgIDEzMSwgICAxMzUsICAgMTQwLCAgIDE0NSwgICAxNTMsCisgICAgIDE1OSwgICAxNjUsICAg
MTc0LCAgIDE4NCwgICAyMDIsICAgMjEzLCAgIDIzMSwgICAyMzUsICAgMjM3LCAgIDI0NCwKKyAg
ICAgMjQ5LCAgIDI1NCwgICAyNTksICAgMjY0LCAgIDI3MywgICAyNzcsICAgMjgxLCAgIDI4Nywg
ICAyOTUsICAgMzAyLAorICAgICAzMDksICAgMzE0LCAgIDMyMSwgICAzMjcsICAgMzMyLCAgIDMz
OCwgICAzNDQsICAgMzQ4LCAgIDM1NiwgICAzNjcsCisgICAgIDM3MywgICAzODEsICAgMzg1LCAg
IDM4NywgICAzOTQsICAgMzk5LCAgIDQwMSwgICA0MDcsICAgNDE2LCAgIDQxOCwKKyAgICAgNDI2
LCAgIDQyOCwgICA0MzUsICAgNDM3LCAgIDQ0NCwgICA0NDYsICAgNDUzLCAgIDQ1NSwgICA0NjIs
ICAgNDY0LAorICAgICA0NjksICAgNDc2LCAgIDQ3OCwgICA0ODUsICAgNDg3Cit9OworI2VuZGlm
CisKKyNpZiBZWURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8fCBZWVRPS0VOX1RBQkxFCisvKiBZ
WVROQU1FW1NZTUJPTC1OVU1dIC0tIFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wgU1lNQk9MLU5V
TS4KKyAgIEZpcnN0LCB0aGUgdGVybWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZWU5UT0tFTlMs
IG5vbnRlcm1pbmFscy4gICovCitzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0K
K3sKKyAgIiRlbmQiLCAiZXJyb3IiLCAiJHVuZGVmaW5lZCIsICJNVUxPUCIsICJSRUxPUCIsICJF
UU9QIiwgIk1JTlVTIiwKKyAgIlBMVVMiLCAiQU5EIiwgIk9SIiwgIkZVTkNUSU9OTkFNRSIsICJM
SVRFUkFMIiwgIk5BTUVURVNUIiwgIk5VTUJFUiIsCisgICJOT0RFVFlQRSIsICJWQVJJQUJMRVJF
RkVSRU5DRSIsICJBWElTTkFNRSIsICJDT01NRU5UIiwgIkRPVERPVCIsICJQSSIsCisgICJOT0RF
IiwgIlNMQVNIU0xBU0giLCAiVEVYVCIsICJYUEFUSF9FUlJPUiIsICInLyciLCAiJ0AnIiwgIico
JyIsICInKSciLAorICAiJ1snIiwgIiddJyIsICInLiciLCAiJywnIiwgIid8JyIsICIkYWNjZXB0
IiwgIlRvcCIsICJFeHByIiwKKyAgIkxvY2F0aW9uUGF0aCIsICJBYnNvbHV0ZUxvY2F0aW9uUGF0
aCIsICJSZWxhdGl2ZUxvY2F0aW9uUGF0aCIsICJTdGVwIiwKKyAgIkF4aXNTcGVjaWZpZXIiLCAi
Tm9kZVRlc3QiLCAiT3B0aW9uYWxQcmVkaWNhdGVMaXN0IiwgIlByZWRpY2F0ZUxpc3QiLAorICAi
UHJlZGljYXRlIiwgIkRlc2NlbmRhbnRPclNlbGYiLCAiQWJicmV2aWF0ZWRTdGVwIiwgIlByaW1h
cnlFeHByIiwKKyAgIkZ1bmN0aW9uQ2FsbCIsICJBcmd1bWVudExpc3QiLCAiQXJndW1lbnQiLCAi
VW5pb25FeHByIiwgIlBhdGhFeHByIiwKKyAgIkZpbHRlckV4cHIiLCAiT3JFeHByIiwgIkFuZEV4
cHIiLCAiRXF1YWxpdHlFeHByIiwgIlJlbGF0aW9uYWxFeHByIiwKKyAgIkFkZGl0aXZlRXhwciIs
ICJNdWx0aXBsaWNhdGl2ZUV4cHIiLCAiVW5hcnlFeHByIiwgMAorfTsKKyNlbmRpZgorCisjIGlm
ZGVmIFlZUFJJTlQKKy8qIFlZVE9LTlVNW1lZTEVYLU5VTV0gLS0gSW50ZXJuYWwgdG9rZW4gbnVt
YmVyIGNvcnJlc3BvbmRpbmcgdG8KKyAgIHRva2VuIFlZTEVYLU5VTS4gICovCitzdGF0aWMgY29u
c3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0KK3sKKyAgICAgICAwLCAgIDI1NiwgICAyNTcs
ICAgMjU4LCAgIDI1OSwgICAyNjAsICAgMjYxLCAgIDI2MiwgICAyNjMsICAgMjY0LAorICAgICAy
NjUsICAgMjY2LCAgIDI2NywgICAyNjgsICAgMjY5LCAgIDI3MCwgICAyNzEsICAgMjcyLCAgIDI3
MywgICAyNzQsCisgICAgIDI3NSwgICAyNzYsICAgMjc3LCAgIDI3OCwgICAgNDcsICAgIDY0LCAg
ICA0MCwgICAgNDEsICAgIDkxLCAgICA5MywKKyAgICAgIDQ2LCAgICA0NCwgICAxMjQKK307Cisj
IGVuZGlmCisKKy8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1
bGUgWVlOIGRlcml2ZXMuICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIxW10gPQor
eworICAgICAgIDAsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNiwgICAgMzcsICAg
IDM3LCAgICAzNywgICAgMzgsCisgICAgICAzOCwgICAgMzgsICAgIDM5LCAgICAzOSwgICAgMzks
ICAgIDM5LCAgICAzOSwgICAgNDAsICAgIDQwLCAgICA0MSwKKyAgICAgIDQxLCAgICA0MSwgICAg
NDEsICAgIDQxLCAgICA0MiwgICAgNDIsICAgIDQzLCAgICA0MywgICAgNDQsICAgIDQ1LAorICAg
ICAgNDYsICAgIDQ2LCAgICA0NywgICAgNDcsICAgIDQ3LCAgICA0NywgICAgNDcsICAgIDQ4LCAg
ICA0OCwgICAgNDksCisgICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MSwgICAgNTIsICAgIDUy
LCAgICA1MiwgICAgNTIsICAgIDUzLCAgICA1MywKKyAgICAgIDU0LCAgICA1NCwgICAgNTUsICAg
IDU1LCAgICA1NiwgICAgNTYsICAgIDU3LCAgICA1NywgICAgNTgsICAgIDU4LAorICAgICAgNTgs
ICAgIDU5LCAgICA1OSwgICAgNjAsICAgIDYwCit9OworCisvKiBZWVIyW1lZTl0gLS0gTnVtYmVy
IG9mIHN5bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxlIFlZTi4gICovCitz
dGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9Cit7CisgICAgICAgMCwgICAgIDIsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAyLCAgICAgMSwKKyAg
ICAgICAzLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAzLAorICAgICAgIDMsICAgICAzLCAgICAgMywgICAgIDQsICAgICAwLCAgICAg
MSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDEsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICA0LCAgICAgMSwKKyAgICAgICAz
LCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgMywgICAgIDEs
ICAgICAyLAorICAgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAg
IDEsICAgICAzLCAgICAgMSwgICAgIDMsCisgICAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwg
ICAgIDIKK307CisKKy8qIFlZREVGQUNUW1NUQVRFLU5BTUVdIC0tIERlZmF1bHQgcnVsZSB0byBy
ZWR1Y2Ugd2l0aCBpbiBzdGF0ZQorICAgU1RBVEUtTlVNIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNw
ZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCisgICBtZWFucyB0aGUgZGVmYXVsdCBp
cyBhbiBlcnJvci4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQor
eworICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzQsICAgIDI0LCAgICAzNSwgICAgMzIsICAg
IDE3LCAgICAgMCwgICAgMzEsCisgICAgICAgMCwgICAgIDAsICAgIDI5LCAgICAgMCwgICAgIDYs
ICAgIDE4LCAgICAgMCwgICAgMzAsICAgICAwLCAgICAgMiwKKyAgICAgIDQ0LCAgICAgNCwgICAg
IDUsICAgICA5LCAgICAgMCwgICAgMjQsICAgICAwLCAgICAxNiwgICAgNDgsICAgIDM2LAorICAg
ICAgNjMsICAgIDQyLCAgICA0NSwgICAgIDMsICAgIDUwLCAgICA1MiwgICAgNTQsICAgIDU2LCAg
ICA1OCwgICAgNjEsCisgICAgICA2NCwgICAgIDAsICAgICAwLCAgICAxMywgICAgMjUsICAgIDI2
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICA3LCAgICAgMCwgICAgIDEsICAg
ICAwLCAgICAgMCwgICAgMjQsICAgIDI0LCAgICAxMiwgICAgIDgsICAgIDQ5LAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCisgICAgICAzNywgICAgNDEsICAgICAwLCAgICAzOSwgICAgIDAsICAgIDI3LCAgICAy
MSwgICAgIDAsICAgIDIyLCAgICAxOSwKKyAgICAgIDIwLCAgICAzMywgICAgMTAsICAgIDExLCAg
ICAxNSwgICAgMTQsICAgIDQzLCAgICA0NiwgICAgNDcsICAgIDUxLAorICAgICAgNTMsICAgIDU1
LCAgICA1NywgICAgNjAsICAgIDU5LCAgICA2MiwgICAgMzgsICAgICAwLCAgICAyOCwgICAgMjMs
CisgICAgICA0MAorfTsKKworLyogWVlERUZHT1RPW05URVJNLU5VTV0uICAqLworc3RhdGljIGNv
bnN0IHl5dHlwZV9pbnQ4IHl5ZGVmZ290b1tdID0KK3sKKyAgICAgIC0xLCAgICAxOCwgICAgNzEs
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDQzLAorICAgICAg
NDQsICAgIDQ1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgNzIsICAgIDczLCAgICAz
MCwgICAgMzEsCisgICAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzkKK307CisKKy8qIFlZUEFDVFtTVEFURS1OVU1dIC0tIEluZGV4IGluIFlZVEFC
TEUgb2YgdGhlIHBvcnRpb24gZGVzY3JpYmluZworICAgU1RBVEUtTlVNLiAgKi8KKyNkZWZpbmUg
WVlQQUNUX05JTkYgLTM3CitzdGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXlwYWN0W10gPQorewor
ICAgICAgODEsICAgIDgxLCAgICAtOCwgICAtMzcsICAgIC03LCAgIC0zNywgICAtMzcsICAgLTM3
LCAgICAxNCwgICAtMzcsCisgICAgICAxNywgICAgMjAsICAgLTM3LCAgICAyMSwgICAgIDgsICAg
LTM3LCAgICA4MSwgICAtMzcsICAgIDQ4LCAgIC0zNywKKyAgICAgLTM3LCAgIC0zNywgICAtMTcs
ICAgLTM3LCAgICAyMiwgICAgLTcsICAgICA4LCAgIC0zNywgICAgLTcsICAgLTM3LAorICAgICAg
MjMsICAgLTM3LCAgICAtOSwgICAgIDEsICAgIDQ1LCAgICA0OSwgICAgNTIsICAgIDEwLCAgICA1
NCwgICAtMzcsCisgICAgIC0zNywgICAgNTksICAgIDgxLCAgIC0zNywgICAgLTcsICAgLTM3LCAg
ICAzMSwgICAgLTUsICAgIDMyLCAgICAzMywKKyAgICAgLTE3LCAgICAzNCwgICAtMzcsICAgICA4
LCAgICAgOCwgICAgLTcsICAgIC03LCAgIC0zNywgICAtMTcsICAgIC03LAorICAgICAxMDIsICAg
ICA4LCAgICAgOCwgICAgODEsICAgIDgxLCAgICA4MSwgICAgODEsICAgIDgxLCAgICA4MSwgICAg
ODEsCisgICAgIC0zNywgICAtMzcsICAgLTE4LCAgIC0zNywgICAgMzUsICAgLTM3LCAgIC0zNywg
ICAgMzYsICAgLTM3LCAgIC0zNywKKyAgICAgLTM3LCAgIC0zNywgICAtMzcsICAgLTM3LCAgIC0z
NywgICAtMzcsICAgLTM3LCAgIC0xNywgICAtMTcsICAgIDQ1LAorICAgICAgNDksICAgIDUyLCAg
ICAxMCwgICAgNTQsICAgIDU0LCAgIC0zNywgICAtMzcsICAgIDgxLCAgIC0zNywgICAtMzcsCisg
ICAgIC0zNworfTsKKworLyogWVlQR09UT1tOVEVSTS1OVU1dLiAgKi8KK3N0YXRpYyBjb25zdCB5
eXR5cGVfaW50OCB5eXBnb3RvW10gPQoreworICAgICAtMzcsICAgLTM3LCAgICAgMywgICAtMzcs
ICAgLTM3LCAgIC0xMiwgICAtMjIsICAgLTM3LCAgICAzOCwgICAtMjAsCisgICAgICA2MCwgICAt
MzYsICAgLTIxLCAgIC0zNywgICAtMzcsICAgLTM3LCAgIC0zNywgICAtMjQsICAgLTM3LCAgICAz
MCwKKyAgICAgLTM3LCAgIC0zNywgICAgMTksICAgIDQwLCAgICA0MywgICAgMjksICAgLTE2LCAg
ICAtMQorfTsKKworLyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVNXV0uICBXaGF0IHRvIGRvIGlu
IHN0YXRlIFNUQVRFLU5VTS4gIElmCisgICBwb3NpdGl2ZSwgc2hpZnQgdGhhdCB0b2tlbi4gIElm
IG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hpY2gKKyAgIG51bWJlciBpcyB0aGUgb3Bwb3Np
dGUuICBJZiB6ZXJvLCBkbyB3aGF0IFlZREVGQUNUIHNheXMuCisgICBJZiBZWVRBQkxFX05JTkYs
IHN5bnRheCBlcnJvci4gICovCisjZGVmaW5lIFlZVEFCTEVfTklORiAtMQorc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eXRhYmxlW10gPQoreworICAgICAgNDAsICAgIDU0LCAgICA1MCwgICAg
MTksICAgIDEyLCAgICA1NywgICAgNzcsICAgIDUzLCAgICA3NSwgICAgOTYsCisgICAgICA2Mywg
ICAgNjIsICAgIDEyLCAgICA5NywgICAgNTgsICAgIDYxLCAgICA2NywgICAgNjgsICAgIDQxLCAg
ICA1MSwKKyAgICAgICA0LCAgICA0MiwgICAgNzgsICAgIDc1LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDU0LAorICAgICAgMTMsICAgIDgyLCAgICA4MywgICAgMTUsICAg
IDU1LCAgICA4NCwgICAgODUsICAgIDU0LCAgICAxNywgICAgIDgsCisgICAgICA0NiwgICAgMTAs
ICAgIDExLCAgICA0NywgICAgMTMsICAgIDc0LCAgICA0OCwgICAgNDksICAgIDUyLCAgICA4NywK
KyAgICAgIDg4LCAgICA5MywgICAgOTQsICAgIDY0LCAgICA2NSwgICAgNjAsICAgIDY2LCAgICA2
OSwgICAgNzYsICAgIDc5LAorICAgICAgODAsICAgIDgxLCAgICA1NiwgICAgOTksICAgIDk4LCAg
ICAgMSwgICAgNTQsICAgIDU0LCAgICA5NSwgICAgIDIsCisgICAgICAgMywgICAgIDQsICAgICA1
LCAgIDEwMCwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAgICAg
IDEyLCAgICAxMywgICAgODksICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDcwLCAgICAgMSwgICAg
NTksICAgIDE3LAorICAgICAgODYsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICA5Miwg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAx
MywgICAgOTAsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDkxLCAgICAgMCwKKyAgICAgICAwLCAg
ICAxNywgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICAwLCAgICAgNiwgICAgIDcsICAg
ICA4LAorICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAgMCwgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDE3Cit9OworCitzdGF0
aWMgY29uc3QgeXl0eXBlX2ludDggeXljaGVja1tdID0KK3sKKyAgICAgICAxLCAgICAyMiwgICAg
MTQsICAgICAwLCAgICAyMSwgICAgMjUsICAgIDExLCAgICAyNCwgICAgNDQsICAgIDI3LAorICAg
ICAgIDksICAgIDMyLCAgICAyMSwgICAgMzEsICAgIDI2LCAgICAyNCwgICAgIDYsICAgICA3LCAg
ICAyNiwgICAgMTYsCisgICAgICAxMiwgICAgMjgsICAgIDI3LCAgICA1OSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA1MCwKKyAgICAgIDIyLCAgICA1MywgICAgNTQsICAg
IDI1LCAgICAxMiwgICAgNTUsICAgIDU2LCAgICA1OCwgICAgMzAsICAgIDE3LAorICAgICAgMjYs
ICAgIDE5LCAgICAyMCwgICAgMjYsICAgIDIyLCAgICA0MiwgICAgMjYsICAgIDI2LCAgICAgMCwg
ICAgNjEsCisgICAgICA2MiwgICAgNjcsICAgIDY4LCAgICAgOCwgICAgIDUsICAgIDMyLCAgICAg
NCwgICAgIDMsICAgIDI3LCAgICAyNywKKyAgICAgIDI3LCAgICAyNywgICAgMjQsICAgIDI3LCAg
ICAyOSwgICAgIDYsICAgIDg3LCAgICA4OCwgICAgNjksICAgIDEwLAorICAgICAgMTEsICAgIDEy
LCAgICAxMywgICAgOTcsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAs
CisgICAgICAyMSwgICAgMjIsICAgIDYzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAg
IDYsICAgIDI4LCAgICAzMCwKKyAgICAgIDYwLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgNjYsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgIDY0LCAgICAyNCwgICAgMjUsICAgIDI2LCAgICA2NSwgICAgLTEsCisgICAg
ICAtMSwgICAgMzAsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgMTUsICAg
IDE2LCAgICAxNywKKyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgLTEs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAzMAorfTsK
KworLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBudW1iZXIgb2YgdGhlKSBh
Y2Nlc3NpbmcKKyAgIHN5bWJvbCBvZiBzdGF0ZSBTVEFURS1OVU0uICAqLworc3RhdGljIGNvbnN0
IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9Cit7CisgICAgICAgMCwgICAgIDYsICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAzMCwgICAgMzQsICAg
IDM1LAorICAgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsCisgICAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAg
NTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwKKyAgICAgIDYwLCAgICAyNiwg
ICAgMjgsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDI2LCAgICAyNiwgICAgMjYsICAgIDI2LAor
ICAgICAgMzgsICAgIDM1LCAgICAgMCwgICAgMjQsICAgIDQ1LCAgICAxMiwgICAgNDEsICAgIDQy
LCAgICAzOCwgICAgNDMsCisgICAgICAzMiwgICAgMjQsICAgIDQ1LCAgICAgOSwgICAgIDgsICAg
ICA1LCAgICAgNCwgICAgIDYsICAgICA3LCAgICAgMywKKyAgICAgIDI3LCAgICAzNSwgICAgNDks
ICAgIDUwLCAgICAzNSwgICAgNDQsICAgIDI3LCAgICAxMSwgICAgMjcsICAgIDI3LAorICAgICAg
MjcsICAgIDI3LCAgICAzOSwgICAgMzksICAgIDQyLCAgICA0MiwgICAgNTIsICAgIDM4LCAgICAz
OCwgICAgNTUsCisgICAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNTksICAgIDYwLCAg
ICAyNywgICAgMzEsICAgIDI5LCAgICAyNywKKyAgICAgIDUwCit9OworCisjZGVmaW5lIHl5ZXJy
b2sJCSh5eWVycnN0YXR1cyA9IDApCisjZGVmaW5lIHl5Y2xlYXJpbgkoeXljaGFyID0gWVlFTVBU
WSkKKyNkZWZpbmUgWVlFTVBUWQkJKC0yKQorI2RlZmluZSBZWUVPRgkJMAorCisjZGVmaW5lIFlZ
QUNDRVBUCWdvdG8geXlhY2NlcHRsYWIKKyNkZWZpbmUgWVlBQk9SVAkJZ290byB5eWFib3J0bGFi
CisjZGVmaW5lIFlZRVJST1IJCWdvdG8geXllcnJvcmxhYgorCisKKy8qIExpa2UgWVlFUlJPUiBl
eGNlcHQgZG8gY2FsbCB5eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVtcG9yYXJpbHkKKyAg
IHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZRVJST1IsIGZv
ciBHQ0MuCisgICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0
aGlzIGNhbiBnby4gICovCisKKyNkZWZpbmUgWVlGQUlMCQlnb3RvIHl5ZXJybGFiCisKKyNkZWZp
bmUgWVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVzKQorCisjZGVmaW5lIFlZQkFDS1VQKFRv
a2VuLCBWYWx1ZSkJCQkJCVwKK2RvCQkJCQkJCQlcCisgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSAm
JiB5eWxlbiA9PSAxKQkJCQlcCisgICAgewkJCQkJCQkJXAorICAgICAgeXljaGFyID0gKFRva2Vu
KTsJCQkJCQlcCisgICAgICB5eWx2YWwgPSAoVmFsdWUpOwkJCQkJCVwKKyAgICAgIHl5dG9rZW4g
PSBZWVRSQU5TTEFURSAoeXljaGFyKTsJCQkJXAorICAgICAgWVlQT1BTVEFDSyAoMSk7CQkJCQkJ
XAorICAgICAgZ290byB5eWJhY2t1cDsJCQkJCQlcCisgICAgfQkJCQkJCQkJXAorICBlbHNlCQkJ
CQkJCQlcCisgICAgewkJCQkJCQkJXAorICAgICAgeXllcnJvciAocGFyc2VyLCBZWV8oInN5bnRh
eCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKKyAgICAgIFlZRVJST1I7CQkJCQkJCVwKKyAg
ICB9CQkJCQkJCQlcCit3aGlsZSAoWVlJRCAoMCkpCisKKworI2RlZmluZSBZWVRFUlJPUgkxCisj
ZGVmaW5lIFlZRVJSQ09ERQkyNTYKKworCisvKiBZWUxMT0NfREVGQVVMVCAtLSBTZXQgQ1VSUkVO
VCB0byBzcGFuIGZyb20gUkhTWzFdIHRvIFJIU1tOXS4KKyAgIElmIE4gaXMgMCwgdGhlbiBzZXQg
Q1VSUkVOVCB0byB0aGUgZW1wdHkgbG9jYXRpb24gd2hpY2ggZW5kcworICAgdGhlIHByZXZpb3Vz
IHN5bWJvbDogUkhTWzBdIChhbHdheXMgZGVmaW5lZCkuICAqLworCisjZGVmaW5lIFlZUkhTTE9D
KFJocywgSykgKChSaHMpW0tdKQorI2lmbmRlZiBZWUxMT0NfREVGQVVMVAorIyBkZWZpbmUgWVlM
TE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKQkJCQlcCisgICAgZG8JCQkJCQkJCQlcCisgICAg
ICBpZiAoWVlJRCAoTikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKwl7CQkJCQkJCQlcCisJICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gWVlS
SFNMT0MgKFJocywgMSkuZmlyc3RfbGluZTsJXAorCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9
IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsJXAorCSAgKEN1cnJlbnQpLmxhc3RfbGlu
ZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsJCVwKKwkgIChDdXJyZW50KS5sYXN0
X2NvbHVtbiAgPSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2NvbHVtbjsJXAorCX0JCQkJCQkJCVwK
KyAgICAgIGVsc2UJCQkJCQkJCVwKKwl7CQkJCQkJCQlcCisJICAoQ3VycmVudCkuZmlyc3RfbGlu
ZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0JCVwKKwkgICAgWVlSSFNMT0MgKFJocywgMCku
bGFzdF9saW5lOwkJCQlcCisJICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQpLmxh
c3RfY29sdW1uID0JCVwKKwkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47CQkJCVwK
Kwl9CQkJCQkJCQlcCisgICAgd2hpbGUgKFlZSUQgKDApKQorI2VuZGlmCisKKworLyogWVlfTE9D
QVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxvY2F0aW9uIG9uIHRoZSBzdHJlYW0uCisgICBUaGlz
IG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQgb3JpZ2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Uga25v
dworICAgd2Ugd29uJ3QgYnJlYWsgdXNlciBjb2RlOiB3aGVuIHRoZXNlIGFyZSB0aGUgbG9jYXRp
b25zIHdlIGtub3cuICAqLworCisjaWZuZGVmIFlZX0xPQ0FUSU9OX1BSSU5UCisjIGlmIGRlZmlu
ZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklBTAorIyAgZGVmaW5lIFlZ
X0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExvYykJCQlcCisgICAgIGZwcmludGYgKEZpbGUsICIlZC4l
ZC0lZC4lZCIsCQkJXAorCSAgICAgIChMb2MpLmZpcnN0X2xpbmUsIChMb2MpLmZpcnN0X2NvbHVt
biwJXAorCSAgICAgIChMb2MpLmxhc3RfbGluZSwgIChMb2MpLmxhc3RfY29sdW1uKQorIyBlbHNl
CisjICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAoKHZvaWQpIDApCisjIGVu
ZGlmCisjZW5kaWYKKworCisvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcgd2l0aCB0aGUgcmln
aHQgYXJndW1lbnRzLiAgKi8KKworI2lmZGVmIFlZTEVYX1BBUkFNCisjIGRlZmluZSBZWUxFWCB5
eWxleCAoJnl5bHZhbCwgWVlMRVhfUEFSQU0pCisjZWxzZQorIyBkZWZpbmUgWVlMRVggeXlsZXgg
KCZ5eWx2YWwsIHBhcnNlcikKKyNlbmRpZgorCisvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVl
c3RlZC4gICovCisjaWYgWVlERUJVRworCisjIGlmbmRlZiBZWUZQUklOVEYKKyMgIGluY2x1ZGUg
PHN0ZGlvLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgIGRlZmluZSBZ
WUZQUklOVEYgZnByaW50ZgorIyBlbmRpZgorCisjIGRlZmluZSBZWURQUklOVEYoQXJncykJCQlc
CitkbyB7CQkJCQkJXAorICBpZiAoeXlkZWJ1ZykJCQkJCVwKKyAgICBZWUZQUklOVEYgQXJnczsJ
CQkJXAorfSB3aGlsZSAoWVlJRCAoMCkpCisKKyMgZGVmaW5lIFlZX1NZTUJPTF9QUklOVChUaXRs
ZSwgVHlwZSwgVmFsdWUsIExvY2F0aW9uKQkJCSAgXAorZG8gewkJCQkJCQkJCSAgXAorICBpZiAo
eXlkZWJ1ZykJCQkJCQkJCSAgXAorICAgIHsJCQkJCQkJCQkgIFwKKyAgICAgIFlZRlBSSU5URiAo
c3RkZXJyLCAiJXMgIiwgVGl0bGUpOwkJCQkJICBcCisgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0
ZGVyciwJCQkJCQkgIFwKKwkJICBUeXBlLCBWYWx1ZSwgcGFyc2VyKTsgXAorICAgICAgWVlGUFJJ
TlRGIChzdGRlcnIsICJcbiIpOwkJCQkJCSAgXAorICAgIH0JCQkJCQkJCQkgIFwKK30gd2hpbGUg
KFlZSUQgKDApKQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFBy
aW50IHRoaXMgc3ltYm9sIG9uIFlZT1VUUFVULiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KKworLypBUkdTVVNFRCovCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVm
aW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZp
bmVkIF9NU0NfVkVSKQorc3RhdGljIHZvaWQKK3l5X3N5bWJvbF92YWx1ZV9wcmludCAoRklMRSAq
eXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgUGFy
c2VyJiBwYXJzZXIpCisjZWxzZQorc3RhdGljIHZvaWQKK3l5X3N5bWJvbF92YWx1ZV9wcmludCAo
eXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIHBhcnNlcikKKyAgICBGSUxFICp5eW91dHB1dDsK
KyAgICBpbnQgeXl0eXBlOworICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyAg
ICBQYXJzZXImIHBhcnNlcjsKKyNlbmRpZgoreworICBpZiAoIXl5dmFsdWVwKQorICAgIHJldHVy
bjsKKyAgWVlVU0UgKHBhcnNlcik7CisjIGlmZGVmIFlZUFJJTlQKKyAgaWYgKHl5dHlwZSA8IFlZ
TlRPS0VOUykKKyAgICBZWVBSSU5UICh5eW91dHB1dCwgeXl0b2tudW1beXl0eXBlXSwgKnl5dmFs
dWVwKTsKKyMgZWxzZQorICBZWVVTRSAoeXlvdXRwdXQpOworIyBlbmRpZgorICBzd2l0Y2ggKHl5
dHlwZSkKKyAgICB7CisgICAgICBkZWZhdWx0OgorCWJyZWFrOworICAgIH0KK30KKworCisvKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCBQcmludCB0aGlzIHN5bWJvbCBvbiBZ
WU9VVFBVVC4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyNpZiAo
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZp
bmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgdm9pZAoreXlfc3lt
Ym9sX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNv
bnN0IHl5dmFsdWVwLCBQYXJzZXImIHBhcnNlcikKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfc3lt
Ym9sX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgcGFyc2VyKQorICAgIEZJTEUg
Knl5b3V0cHV0OworICAgIGludCB5eXR5cGU7CisgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5
dmFsdWVwOworICAgIFBhcnNlciYgcGFyc2VyOworI2VuZGlmCit7CisgIGlmICh5eXR5cGUgPCBZ
WU5UT0tFTlMpCisgICAgWVlGUFJJTlRGICh5eW91dHB1dCwgInRva2VuICVzICgiLCB5eXRuYW1l
W3l5dHlwZV0pOworICBlbHNlCisgICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIm50ZXJtICVzICgi
LCB5eXRuYW1lW3l5dHlwZV0pOworCisgIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvdXRwdXQs
IHl5dHlwZSwgeXl2YWx1ZXAsIHBhcnNlcik7CisgIFlZRlBSSU5URiAoeXlvdXRwdXQsICIpIik7
Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eV9zdGFja19wcmludCAtLSBQcmludCB0aGUgc3RhdGUg
c3RhY2sgZnJvbSBpdHMgQk9UVE9NIHVwIHRvIGl0cyB8Cit8IFRPUCAoaW5jbHVkZWQpLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK2AtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLworCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwK
KyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGlj
IHZvaWQKK3l5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKmJvdHRvbSwgeXl0eXBlX2ludDE2
ICp0b3ApCisjZWxzZQorc3RhdGljIHZvaWQKK3l5X3N0YWNrX3ByaW50IChib3R0b20sIHRvcCkK
KyAgICB5eXR5cGVfaW50MTYgKmJvdHRvbTsKKyAgICB5eXR5cGVfaW50MTYgKnRvcDsKKyNlbmRp
ZgoreworICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0YWNrIG5vdyIpOworICBmb3IgKDsgYm90dG9t
IDw9IHRvcDsgKytib3R0b20pCisgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9t
KTsKKyAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOworfQorCisjIGRlZmluZSBZWV9TVEFDS19Q
UklOVChCb3R0b20sIFRvcCkJCQkJXAorZG8gewkJCQkJCQkJXAorICBpZiAoeXlkZWJ1ZykJCQkJ
CQkJXAorICAgIHl5X3N0YWNrX3ByaW50ICgoQm90dG9tKSwgKFRvcCkpOwkJCQlcCit9IHdoaWxl
IChZWUlEICgwKSkKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KK3wgUmVwb3J0IHRoYXQgdGhlIFlZUlVMRSBpcyBnb2luZyB0byBiZSByZWR1
Y2VkLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCisKKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAor
ICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMg
dm9pZAoreXlfcmVkdWNlX3ByaW50IChZWVNUWVBFICp5eXZzcCwgaW50IHl5cnVsZSwgUGFyc2Vy
JiBwYXJzZXIpCisjZWxzZQorc3RhdGljIHZvaWQKK3l5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5
cnVsZSwgcGFyc2VyKQorICAgIFlZU1RZUEUgKnl5dnNwOworICAgIGludCB5eXJ1bGU7CisgICAg
UGFyc2VyJiBwYXJzZXI7CisjZW5kaWYKK3sKKyAgaW50IHl5bnJocyA9IHl5cjJbeXlydWxlXTsK
KyAgaW50IHl5aTsKKyAgdW5zaWduZWQgbG9uZyBpbnQgeXlsbm8gPSB5eXJsaW5lW3l5cnVsZV07
CisgIFlZRlBSSU5URiAoc3RkZXJyLCAiUmVkdWNpbmcgc3RhY2sgYnkgcnVsZSAlZCAobGluZSAl
bHUpOlxuIiwKKwkgICAgIHl5cnVsZSAtIDEsIHl5bG5vKTsKKyAgLyogVGhlIHN5bWJvbHMgYmVp
bmcgcmVkdWNlZC4gICovCisgIGZvciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKKyAg
ICB7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAg
IHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCisJ
CSAgICAgICAmKHl5dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKKwkJICAgICAgIAkJICAgICAg
ICwgcGFyc2VyKTsKKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlxuIik7CisgICAgfQorfQorCisj
IGRlZmluZSBZWV9SRURVQ0VfUFJJTlQoUnVsZSkJCVwKK2RvIHsJCQkJCVwKKyAgaWYgKHl5ZGVi
dWcpCQkJCVwKKyAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5dnNwLCBSdWxlLCBwYXJzZXIpOyBcCit9
IHdoaWxlIChZWUlEICgwKSkKKworLyogTm9uemVybyBtZWFucyBwcmludCBwYXJzZSB0cmFjZS4g
IEl0IGlzIGxlZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0CisgICBtdWx0aXBsZSBwYXJzZXJzIGNh
biBjb2V4aXN0LiAgKi8KK2ludCB5eWRlYnVnOworI2Vsc2UgLyogIVlZREVCVUcgKi8KKyMgZGVm
aW5lIFlZRFBSSU5URihBcmdzKQorIyBkZWZpbmUgWVlfU1lNQk9MX1BSSU5UKFRpdGxlLCBUeXBl
LCBWYWx1ZSwgTG9jYXRpb24pCisjIGRlZmluZSBZWV9TVEFDS19QUklOVChCb3R0b20sIFRvcCkK
KyMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQorI2VuZGlmIC8qICFZWURFQlVHICovCisK
KworLyogWVlJTklUREVQVEggLS0gaW5pdGlhbCBzaXplIG9mIHRoZSBwYXJzZXIncyBzdGFja3Mu
ICAqLworI2lmbmRlZglZWUlOSVRERVBUSAorIyBkZWZpbmUgWVlJTklUREVQVEggMjAwCisjZW5k
aWYKKworLyogWVlNQVhERVBUSCAtLSBtYXhpbXVtIHNpemUgdGhlIHN0YWNrcyBjYW4gZ3JvdyB0
byAoZWZmZWN0aXZlIG9ubHkKKyAgIGlmIHRoZSBidWlsdC1pbiBzdGFjayBleHRlbnNpb24gbWV0
aG9kIGlzIHVzZWQpLgorCisgICBEbyBub3QgbWFrZSB0aGlzIHZhbHVlIHRvbyBsYXJnZTsgdGhl
IHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZgorICAgWVlTVEFDS19BTExPQ19NQVhJTVVNIDwgWVlT
VEFDS19CWVRFUyAoWVlNQVhERVBUSCkKKyAgIGV2YWx1YXRlZCB3aXRoIGluZmluaXRlLXByZWNp
c2lvbiBpbnRlZ2VyIGFyaXRobWV0aWMuICAqLworCisjaWZuZGVmIFlZTUFYREVQVEgKKyMgZGVm
aW5lIFlZTUFYREVQVEggMTAwMDAKKyNlbmRpZgorCisMCisKKyNpZiBZWUVSUk9SX1ZFUkJPU0UK
KworIyBpZm5kZWYgeXlzdHJsZW4KKyMgIGlmIGRlZmluZWQgX19HTElCQ19fICYmIGRlZmluZWQg
X1NUUklOR19ICisjICAgZGVmaW5lIHl5c3RybGVuIHN0cmxlbgorIyAgZWxzZQorLyogUmV0dXJu
IHRoZSBsZW5ndGggb2YgWVlTVFIuICAqLworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmlu
ZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5l
ZCBfTVNDX1ZFUikKK3N0YXRpYyBZWVNJWkVfVAoreXlzdHJsZW4gKGNvbnN0IGNoYXIgKnl5c3Ry
KQorI2Vsc2UKK3N0YXRpYyBZWVNJWkVfVAoreXlzdHJsZW4gKHl5c3RyKQorICAgIGNvbnN0IGNo
YXIgKnl5c3RyOworI2VuZGlmCit7CisgIFlZU0laRV9UIHl5bGVuOworICBmb3IgKHl5bGVuID0g
MDsgeXlzdHJbeXlsZW5dOyB5eWxlbisrKQorICAgIGNvbnRpbnVlOworICByZXR1cm4geXlsZW47
Cit9CisjICBlbmRpZgorIyBlbmRpZgorCisjIGlmbmRlZiB5eXN0cGNweQorIyAgaWYgZGVmaW5l
ZCBfX0dMSUJDX18gJiYgZGVmaW5lZCBfU1RSSU5HX0ggJiYgZGVmaW5lZCBfR05VX1NPVVJDRQor
IyAgIGRlZmluZSB5eXN0cGNweSBzdHBjcHkKKyMgIGVsc2UKKy8qIENvcHkgWVlTUkMgdG8gWVlE
RVNULCByZXR1cm5pbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIHRlcm1pbmF0aW5nICdcMCcgaW4KKyAg
IFlZREVTVC4gICovCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVO
Q19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQor
c3RhdGljIGNoYXIgKgoreXlzdHBjcHkgKGNoYXIgKnl5ZGVzdCwgY29uc3QgY2hhciAqeXlzcmMp
CisjZWxzZQorc3RhdGljIGNoYXIgKgoreXlzdHBjcHkgKHl5ZGVzdCwgeXlzcmMpCisgICAgY2hh
ciAqeXlkZXN0OworICAgIGNvbnN0IGNoYXIgKnl5c3JjOworI2VuZGlmCit7CisgIGNoYXIgKnl5
ZCA9IHl5ZGVzdDsKKyAgY29uc3QgY2hhciAqeXlzID0geXlzcmM7CisKKyAgd2hpbGUgKCgqeXlk
KysgPSAqeXlzKyspICE9ICdcMCcpCisgICAgY29udGludWU7CisKKyAgcmV0dXJuIHl5ZCAtIDE7
Cit9CisjICBlbmRpZgorIyBlbmRpZgorCisjIGlmbmRlZiB5eXRuYW1lcnIKKy8qIENvcHkgdG8g
WVlSRVMgdGhlIGNvbnRlbnRzIG9mIFlZU1RSIGFmdGVyIHN0cmlwcGluZyBhd2F5IHVubmVjZXNz
YXJ5CisgICBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzLCBzbyB0aGF0IGl0J3Mgc3VpdGFibGUgZm9y
IHl5ZXJyb3IuICBUaGUKKyAgIGhldXJpc3RpYyBpcyB0aGF0IGRvdWJsZS1xdW90aW5nIGlzIHVu
bmVjZXNzYXJ5IHVubGVzcyB0aGUgc3RyaW5nCisgICBjb250YWlucyBhbiBhcG9zdHJvcGhlLCBh
IGNvbW1hLCBvciBiYWNrc2xhc2ggKG90aGVyIHRoYW4KKyAgIGJhY2tzbGFzaC1iYWNrc2xhc2gp
LiAgWVlTVFIgaXMgdGFrZW4gZnJvbSB5eXRuYW1lLiAgSWYgWVlSRVMgaXMKKyAgIG51bGwsIGRv
IG5vdCBjb3B5OyBpbnN0ZWFkLCByZXR1cm4gdGhlIGxlbmd0aCBvZiB3aGF0IHRoZSByZXN1bHQK
KyAgIHdvdWxkIGhhdmUgYmVlbi4gICovCitzdGF0aWMgWVlTSVpFX1QKK3l5dG5hbWVyciAoY2hh
ciAqeXlyZXMsIGNvbnN0IGNoYXIgKnl5c3RyKQoreworICBpZiAoKnl5c3RyID09ICciJykKKyAg
ICB7CisgICAgICBZWVNJWkVfVCB5eW4gPSAwOworICAgICAgY2hhciBjb25zdCAqeXlwID0geXlz
dHI7CisKKyAgICAgIGZvciAoOzspCisJc3dpdGNoICgqKyt5eXApCisJICB7CisJICBjYXNlICdc
Jyc6CisJICBjYXNlICcsJzoKKwkgICAgZ290byBkb19ub3Rfc3RyaXBfcXVvdGVzOworCisJICBj
YXNlICdcXCc6CisJICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKKwkgICAgICBnb3RvIGRvX25vdF9z
dHJpcF9xdW90ZXM7CisJICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisJICBkZWZhdWx0OgorCSAg
ICBpZiAoeXlyZXMpCisJICAgICAgeXlyZXNbeXluXSA9ICp5eXA7CisJICAgIHl5bisrOworCSAg
ICBicmVhazsKKworCSAgY2FzZSAnIic6CisJICAgIGlmICh5eXJlcykKKwkgICAgICB5eXJlc1t5
eW5dID0gJ1wwJzsKKwkgICAgcmV0dXJuIHl5bjsKKwkgIH0KKyAgICBkb19ub3Rfc3RyaXBfcXVv
dGVzOiA7CisgICAgfQorCisgIGlmICghIHl5cmVzKQorICAgIHJldHVybiB5eXN0cmxlbiAoeXlz
dHIpOworCisgIHJldHVybiB5eXN0cGNweSAoeXlyZXMsIHl5c3RyKSAtIHl5cmVzOworfQorIyBl
bmRpZgorCisvKiBDb3B5IGludG8gWVlSRVNVTFQgYW4gZXJyb3IgbWVzc2FnZSBhYm91dCB0aGUg
dW5leHBlY3RlZCB0b2tlbgorICAgWVlDSEFSIHdoaWxlIGluIHN0YXRlIFlZU1RBVEUuICBSZXR1
cm4gdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQsCisgICBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0
aW5nIG51bGwgYnl0ZS4gIElmIFlZUkVTVUxUIGlzIG51bGwsIGRvIG5vdAorICAgY29weSBhbnl0
aGluZzsganVzdCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdvdWxkIGJlCisgICBj
b3BpZWQuICBBcyBhIHNwZWNpYWwgY2FzZSwgcmV0dXJuIDAgaWYgYW4gb3JkaW5hcnkgInN5bnRh
eCBlcnJvciIKKyAgIG1lc3NhZ2Ugd2lsbCBkby4gIFJldHVybiBZWVNJWkVfTUFYSU1VTSBpZiBv
dmVyZmxvdyBvY2N1cnMgZHVyaW5nCisgICBzaXplIGNhbGN1bGF0aW9uLiAgKi8KK3N0YXRpYyBZ
WVNJWkVfVAoreXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQgeXlzdGF0ZSwgaW50
IHl5Y2hhcikKK3sKKyAgaW50IHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKKworICBpZiAoISAoWVlQ
QUNUX05JTkYgPCB5eW4gJiYgeXluIDw9IFlZTEFTVCkpCisgICAgcmV0dXJuIDA7CisgIGVsc2UK
KyAgICB7CisgICAgICBpbnQgeXl0eXBlID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7CisgICAgICBZ
WVNJWkVfVCB5eXNpemUwID0geXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5dHlwZV0pOworICAgICAg
WVlTSVpFX1QgeXlzaXplID0geXlzaXplMDsKKyAgICAgIFlZU0laRV9UIHl5c2l6ZTE7CisgICAg
ICBpbnQgeXlzaXplX292ZXJmbG93ID0gMDsKKyAgICAgIGVudW0geyBZWUVSUk9SX1ZFUkJPU0Vf
QVJHU19NQVhJTVVNID0gNSB9OworICAgICAgY2hhciBjb25zdCAqeXlhcmdbWVlFUlJPUl9WRVJC
T1NFX0FSR1NfTUFYSU1VTV07CisgICAgICBpbnQgeXl4OworCisjIGlmIDAKKyAgICAgIC8qIFRo
aXMgaXMgc28geGdldHRleHQgc2VlcyB0aGUgdHJhbnNsYXRhYmxlIGZvcm1hdHMgdGhhdCBhcmUK
KwkgY29uc3RydWN0ZWQgb24gdGhlIGZseS4gICovCisgICAgICBZWV8oInN5bnRheCBlcnJvciwg
dW5leHBlY3RlZCAlcyIpOworICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMs
IGV4cGVjdGluZyAlcyIpOworICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMs
IGV4cGVjdGluZyAlcyBvciAlcyIpOworICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0
ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyIpOworICAgICAgWVlfKCJzeW50YXggZXJy
b3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyBvciAlcyIpOworIyBl
bmRpZgorICAgICAgY2hhciAqeXlmbXQ7CisgICAgICBjaGFyIGNvbnN0ICp5eWY7CisgICAgICBz
dGF0aWMgY2hhciBjb25zdCB5eXVuZXhwZWN0ZWRbXSA9ICJzeW50YXggZXJyb3IsIHVuZXhwZWN0
ZWQgJXMiOworICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlleHBlY3RpbmdbXSA9ICIsIGV4cGVj
dGluZyAlcyI7CisgICAgICBzdGF0aWMgY2hhciBjb25zdCB5eW9yW10gPSAiIG9yICVzIjsKKyAg
ICAgIGNoYXIgeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3RlZAorCQkgICAgKyBzaXplb2YgeXll
eHBlY3RpbmcgLSAxCisJCSAgICArICgoWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSAtIDIp
CisJCSAgICAgICAqIChzaXplb2YgeXlvciAtIDEpKV07CisgICAgICBjaGFyIGNvbnN0ICp5eXBy
ZWZpeCA9IHl5ZXhwZWN0aW5nOworCisgICAgICAvKiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdh
dGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCisJIFlZQ0hFQ0suICAqLworICAgICAg
aW50IHl5eGJlZ2luID0geXluIDwgMCA/IC15eW4gOiAwOworCisgICAgICAvKiBTdGF5IHdpdGhp
biBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAgKi8KKyAgICAgIGludCB5eWNo
ZWNrbGltID0gWVlMQVNUIC0geXluICsgMTsKKyAgICAgIGludCB5eXhlbmQgPSB5eWNoZWNrbGlt
IDwgWVlOVE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VOUzsKKyAgICAgIGludCB5eWNvdW50
ID0gMTsKKworICAgICAgeXlhcmdbMF0gPSB5eXRuYW1lW3l5dHlwZV07CisgICAgICB5eWZtdCA9
IHl5c3RwY3B5ICh5eWZvcm1hdCwgeXl1bmV4cGVjdGVkKTsKKworICAgICAgZm9yICh5eXggPSB5
eXhiZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKKwlpZiAoeXljaGVja1t5eXggKyB5eW5dID09
IHl5eCAmJiB5eXggIT0gWVlURVJST1IpCisJICB7CisJICAgIGlmICh5eWNvdW50ID09IFlZRVJS
T1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCisJICAgICAgeworCQl5eWNvdW50ID0gMTsKKwkJeXlz
aXplID0geXlzaXplMDsKKwkJeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3RlZCAtIDFdID0gJ1ww
JzsKKwkJYnJlYWs7CisJICAgICAgfQorCSAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5
eXhdOworCSAgICB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5eF0p
OworCSAgICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOworCSAgICB5eXNp
emUgPSB5eXNpemUxOworCSAgICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZtdCwgeXlwcmVmaXgpOwor
CSAgICB5eXByZWZpeCA9IHl5b3I7CisJICB9CisKKyAgICAgIHl5ZiA9IFlZXyh5eWZvcm1hdCk7
CisgICAgICB5eXNpemUxID0geXlzaXplICsgeXlzdHJsZW4gKHl5Zik7CisgICAgICB5eXNpemVf
b3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOworICAgICAgeXlzaXplID0geXlzaXplMTsK
KworICAgICAgaWYgKHl5c2l6ZV9vdmVyZmxvdykKKwlyZXR1cm4gWVlTSVpFX01BWElNVU07CisK
KyAgICAgIGlmICh5eXJlc3VsdCkKKwl7CisJICAvKiBBdm9pZCBzcHJpbnRmLCBhcyB0aGF0IGlu
ZnJpbmdlcyBvbiB0aGUgdXNlcidzIG5hbWUgc3BhY2UuCisJICAgICBEb24ndCBoYXZlIHVuZGVm
aW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgorCSAgICAgcHJvZHVjZWQgYSBz
dHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIlcyJzLiAgKi8KKwkgIGNoYXIgKnl5cCA9
IHl5cmVzdWx0OworCSAgaW50IHl5aSA9IDA7CisJICB3aGlsZSAoKCp5eXAgPSAqeXlmKSAhPSAn
XDAnKQorCSAgICB7CisJICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5ZlsxXSA9PSAncycgJiYg
eXlpIDwgeXljb3VudCkKKwkJeworCQkgIHl5cCArPSB5eXRuYW1lcnIgKHl5cCwgeXlhcmdbeXlp
KytdKTsKKwkJICB5eWYgKz0gMjsKKwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIHl5cCsrOwor
CQkgIHl5ZisrOworCQl9CisJICAgIH0KKwl9CisgICAgICByZXR1cm4geXlzaXplOworICAgIH0K
K30KKyNlbmRpZiAvKiBZWUVSUk9SX1ZFUkJPU0UgKi8KKwwKKworLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUmVsZWFzZSB0aGUgbWVtb3J5IGFz
c29jaWF0ZWQgdG8gdGhpcyBzeW1ib2wuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKkFSR1NVU0VEKi8KKyNpZiAoZGVmaW5lZCBfX1NU
RENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNw
bHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgdm9pZAoreXlkZXN0cnVjdCAoY29uc3Qg
Y2hhciAqeXltc2csIGludCB5eXR5cGUsIFlZU1RZUEUgKnl5dmFsdWVwLCBQYXJzZXImIHBhcnNl
cikKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1
ZXAsIHBhcnNlcikKKyAgICBjb25zdCBjaGFyICp5eW1zZzsKKyAgICBpbnQgeXl0eXBlOworICAg
IFlZU1RZUEUgKnl5dmFsdWVwOworICAgIFBhcnNlciYgcGFyc2VyOworI2VuZGlmCit7CisgIFlZ
VVNFICh5eXZhbHVlcCk7CisgIFlZVVNFIChwYXJzZXIpOworCisgIGlmICgheXltc2cpCisgICAg
eXltc2cgPSAiRGVsZXRpbmciOworICBZWV9TWU1CT0xfUFJJTlQgKHl5bXNnLCB5eXR5cGUsIHl5
dmFsdWVwLCB5eWxvY2F0aW9ucCk7CisKKyAgc3dpdGNoICh5eXR5cGUpCisgICAgeworICAgICAg
Y2FzZSAxMDogLyogIkZVTkNUSU9OTkFNRSIgKi8KKyNsaW5lIDgwICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKwl7IGlmICgoeXl2YWx1ZXAtPnN0cmluZykpICh5eXZhbHVlcC0+c3RyaW5n
KS0+ZGVyZWYoKTsgfTsKKyNsaW5lIDEyMDUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsK
KyAgICAgIGNhc2UgMTE6IC8qICJMSVRFUkFMIiAqLworI2xpbmUgODAgIldlYkNvcmUveG1sL1hQ
YXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVwLT5zdHJp
bmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIxMCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFr
OworICAgICAgY2FzZSAxMjogLyogIk5BTUVURVNUIiAqLworI2xpbmUgODAgIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVwLT5z
dHJpbmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIxNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJy
ZWFrOworICAgICAgY2FzZSAxMzogLyogIk5VTUJFUiIgKi8KKyNsaW5lIDgwICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKwl7IGlmICgoeXl2YWx1ZXAtPnN0cmluZykpICh5eXZhbHVlcC0+
c3RyaW5nKS0+ZGVyZWYoKTsgfTsKKyNsaW5lIDEyMjAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwli
cmVhazsKKyAgICAgIGNhc2UgMTQ6IC8qICJOT0RFVFlQRSIgKi8KKyNsaW5lIDgwICJXZWJDb3Jl
L3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGlmICgoeXl2YWx1ZXAtPnN0cmluZykpICh5eXZhbHVl
cC0+c3RyaW5nKS0+ZGVyZWYoKTsgfTsKKyNsaW5lIDEyMjUgIi4vWFBhdGhHcmFtbWFyLmNwcCIK
KwlicmVhazsKKyAgICAgIGNhc2UgMTU6IC8qICJWQVJJQUJMRVJFRkVSRU5DRSIgKi8KKyNsaW5l
IDgwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGlmICgoeXl2YWx1ZXAtPnN0cmlu
ZykpICh5eXZhbHVlcC0+c3RyaW5nKS0+ZGVyZWYoKTsgfTsKKyNsaW5lIDEyMzAgIi4vWFBhdGhH
cmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgMzU6IC8qICJFeHByIiAqLworI2xpbmUg
MTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4
cHJlc3Npb24pOyB9OworI2xpbmUgMTIzNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOwor
ICAgICAgY2FzZSAzNjogLyogIkxvY2F0aW9uUGF0aCIgKi8KKyNsaW5lIDg4ICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmxvY2F0aW9uUGF0aCk7IH07
CisjbGluZSAxMjQwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDM3
OiAvKiAiQWJzb2x1dGVMb2NhdGlvblBhdGgiICovCisjbGluZSA4OCAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5sb2NhdGlvblBhdGgpOyB9OworI2xp
bmUgMTI0NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSAzODogLyog
IlJlbGF0aXZlTG9jYXRpb25QYXRoIiAqLworI2xpbmUgODggIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+bG9jYXRpb25QYXRoKTsgfTsKKyNsaW5lIDEy
NTAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgMzk6IC8qICJTdGVw
IiAqLworI2xpbmUgOTcgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5
eXZhbHVlcC0+c3RlcCk7IH07CisjbGluZSAxMjU1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJl
YWs7CisgICAgICBjYXNlIDQxOiAvKiAiTm9kZVRlc3QiICovCisjbGluZSA5MSAiV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5ub2RlVGVzdCk7IH07Cisj
bGluZSAxMjYwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDQyOiAv
KiAiT3B0aW9uYWxQcmVkaWNhdGVMaXN0IiAqLworI2xpbmUgOTQgIldlYkNvcmUveG1sL1hQYXRo
R3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvblZlY3Rvcik7IH07Cisj
bGluZSAxMjY1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDQzOiAv
KiAiUHJlZGljYXRlTGlzdCIgKi8KKyNsaW5lIDk0ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb25WZWN0b3IpOyB9OworI2xpbmUgMTI3
MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA0NDogLyogIlByZWRp
Y2F0ZSIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxl
dGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEyNzUgIi4vWFBhdGhHcmFtbWFy
LmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDU6IC8qICJEZXNjZW5kYW50T3JTZWxmIiAqLwor
I2xpbmUgOTcgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVl
cC0+c3RlcCk7IH07CisjbGluZSAxMjgwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7Cisg
ICAgICBjYXNlIDQ2OiAvKiAiQWJicmV2aWF0ZWRTdGVwIiAqLworI2xpbmUgOTcgIldlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+c3RlcCk7IH07CisjbGlu
ZSAxMjg1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDQ3OiAvKiAi
UHJpbWFyeUV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
CXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMjkwICIuL1hQYXRo
R3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDQ4OiAvKiAiRnVuY3Rpb25DYWxsIiAq
LworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2
YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTI5NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgor
CWJyZWFrOworICAgICAgY2FzZSA0OTogLyogIkFyZ3VtZW50TGlzdCIgKi8KKyNsaW5lIDk0ICJX
ZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Np
b25WZWN0b3IpOyB9OworI2xpbmUgMTMwMCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOwor
ICAgICAgY2FzZSA1MDogLyogIkFyZ3VtZW50IiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9Y
UGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xp
bmUgMTMwNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1MTogLyog
IlVuaW9uRXhwciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJ
eyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEzMTAgIi4vWFBhdGhH
cmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNTI6IC8qICJQYXRoRXhwciIgKi8KKyNs
aW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVw
LT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEzMTUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVh
azsKKyAgICAgIGNhc2UgNTM6IC8qICJGaWx0ZXJFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3Jl
L3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9
OworI2xpbmUgMTMyMCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1
NDogLyogIk9yRXhwciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnki
CisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEzMjUgIi4vWFBh
dGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNTU6IC8qICJBbmRFeHByIiAqLwor
I2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1
ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTMzMCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJy
ZWFrOworICAgICAgY2FzZSA1NjogLyogIkVxdWFsaXR5RXhwciIgKi8KKyNsaW5lIDEwMCAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9u
KTsgfTsKKyNsaW5lIDEzMzUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNh
c2UgNTc6IC8qICJSZWxhdGlvbmFsRXhwciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5l
IDEzNDAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNTg6IC8qICJB
ZGRpdGl2ZUV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
CXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzQ1ICIuL1hQYXRo
R3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDU5OiAvKiAiTXVsdGlwbGljYXRpdmVF
eHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0
ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTM1MCAiLi9YUGF0aEdyYW1tYXIu
Y3BwIgorCWJyZWFrOworICAgICAgY2FzZSA2MDogLyogIlVuYXJ5RXhwciIgKi8KKyNsaW5lIDEw
MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHBy
ZXNzaW9uKTsgfTsKKyNsaW5lIDEzNTUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKwor
ICAgICAgZGVmYXVsdDoKKwlicmVhazsKKyAgICB9Cit9CisMCisKKy8qIFByZXZlbnQgd2Fybmlu
Z3MgZnJvbSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCisKKyNpZmRlZiBZWVBBUlNFX1BBUkFN
CisjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJz
ZSAodm9pZCAqWVlQQVJTRV9QQVJBTSk7CisjZWxzZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYK
KyNlbHNlIC8qICEgWVlQQVJTRV9QQVJBTSAqLworI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVm
aW5lZCBfX2NwbHVzcGx1cworaW50IHl5cGFyc2UgKFBhcnNlciYgcGFyc2VyKTsKKyNlbHNlCitp
bnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAqLworCisK
KworCisKKworLyotLS0tLS0tLS0tLgorfCB5eXBhcnNlLiAgfAorYC0tLS0tLS0tLS0qLworCisj
aWZkZWYgWVlQQVJTRV9QQVJBTQorI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19D
OTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVND
X1ZFUikKK2ludAoreXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSkKKyNlbHNlCitpbnQKK3l5
cGFyc2UgKFlZUEFSU0VfUEFSQU0pCisgICAgdm9pZCAqWVlQQVJTRV9QQVJBTTsKKyNlbmRpZgor
I2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVm
aW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZp
bmVkIF9NU0NfVkVSKQoraW50Cit5eXBhcnNlIChQYXJzZXImIHBhcnNlcikKKyNlbHNlCitpbnQK
K3l5cGFyc2UgKHBhcnNlcikKKyAgICBQYXJzZXImIHBhcnNlcjsKKyNlbmRpZgorI2VuZGlmCit7
CisgIC8qIFRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCitpbnQgeXljaGFyOworCisvKiBUaGUg
c2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KK1lZU1RZUEUgeXls
dmFsOworCisvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAqLworaW50IHl5bmVy
cnM7CisKKyAgaW50IHl5c3RhdGU7CisgIGludCB5eW47CisgIGludCB5eXJlc3VsdDsKKyAgLyog
TnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4g
ICovCisgIGludCB5eWVycnN0YXR1czsKKyAgLyogTG9vay1haGVhZCB0b2tlbiBhcyBhbiBpbnRl
cm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KKyAgaW50IHl5dG9rZW4gPSAwOwor
I2lmIFlZRVJST1JfVkVSQk9TRQorICAvKiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBhbmQg
aXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KKyAgY2hhciB5eW1zZ2J1ZlsxMjhdOworICBjaGFyICp5
eW1zZyA9IHl5bXNnYnVmOworICBZWVNJWkVfVCB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1
ZjsKKyNlbmRpZgorCisgIC8qIFRocmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6CisgICAgIGB5
eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCisgICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRp
YyB2YWx1ZXMsCisgICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCisKKyAgICAgUmVm
ZXIgdG8gdGhlIHN0YWNrcyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJm
bG93CisgICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLworCisgIC8qIFRoZSBz
dGF0ZSBzdGFjay4gICovCisgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07CisgIHl5
dHlwZV9pbnQxNiAqeXlzcyA9IHl5c3NhOworICB5eXR5cGVfaW50MTYgKnl5c3NwOworCisgIC8q
IFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQ
VEhdOworICBZWVNUWVBFICp5eXZzID0geXl2c2E7CisgIFlZU1RZUEUgKnl5dnNwOworCisKKwor
I2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlzc3AgLT0gKE4pKQorCisg
IFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisKKyAgLyogVGhlIHZhcmlhYmxl
cyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAg
ICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KKyAgWVlTVFlQRSB5eXZhbDsKKworCisgIC8qIFRoZSBu
dW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkIHJ1bGUuCisgICAgIEtl
ZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8KKyAgaW50IHl5
bGVuID0gMDsKKworICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJzZVxuIikpOwor
CisgIHl5c3RhdGUgPSAwOworICB5eWVycnN0YXR1cyA9IDA7CisgIHl5bmVycnMgPSAwOworICB5
eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KKworICAv
KiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgorICAgICBXYXN0ZSBvbmUgZWxlbWVudCBvZiB2
YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKKyAgICAgc28gdGhhdCB0aGV5IHN0YXkgb24gdGhlIHNh
bWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgorICAgICBUaGUgd2FzdGVkIGVsZW1lbnRzIGFy
ZSBuZXZlciBpbml0aWFsaXplZC4gICovCisKKyAgeXlzc3AgPSB5eXNzOworICB5eXZzcCA9IHl5
dnM7CisKKyAgZ290byB5eXNldHN0YXRlOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXluZXdzdGF0ZSAtLSBQdXNo
IGEgbmV3IHN0YXRlLCB3aGljaCBpcyBmb3VuZCBpbiB5eXN0YXRlLiAgfAorYC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgeXlu
ZXdzdGF0ZToKKyAgLyogSW4gYWxsIGNhc2VzLCB3aGVuIHlvdSBnZXQgaGVyZSwgdGhlIHZhbHVl
IGFuZCBsb2NhdGlvbiBzdGFja3MKKyAgICAgaGF2ZSBqdXN0IGJlZW4gcHVzaGVkLiAgU28gcHVz
aGluZyBhIHN0YXRlIGhlcmUgZXZlbnMgdGhlIHN0YWNrcy4gICovCisgIHl5c3NwKys7CisKKyB5
eXNldHN0YXRlOgorICAqeXlzc3AgPSB5eXN0YXRlOworCisgIGlmICh5eXNzICsgeXlzdGFja3Np
emUgLSAxIDw9IHl5c3NwKQorICAgIHsKKyAgICAgIC8qIEdldCB0aGUgY3VycmVudCB1c2VkIHNp
emUgb2YgdGhlIHRocmVlIHN0YWNrcywgaW4gZWxlbWVudHMuICAqLworICAgICAgWVlTSVpFX1Qg
eXlzaXplID0geXlzc3AgLSB5eXNzICsgMTsKKworI2lmZGVmIHl5b3ZlcmZsb3cKKyAgICAgIHsK
KwkvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suICBVc2UgY29w
aWVzIG9mCisJICAgdGhlc2Ugc28gdGhhdCB0aGUgJidzIGRvbid0IGZvcmNlIHRoZSByZWFsIG9u
ZXMgaW50bworCSAgIG1lbW9yeS4gICovCisJWVlTVFlQRSAqeXl2czEgPSB5eXZzOworCXl5dHlw
ZV9pbnQxNiAqeXlzczEgPSB5eXNzOworCisKKwkvKiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVz
cyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKKwkgICBkYXRhIGluIHVzZSBpbiB0aGF0
IHN0YWNrLCBpbiBieXRlcy4gIFRoaXMgdXNlZCB0byBiZSBhCisJICAgY29uZGl0aW9uYWwgYXJv
dW5kIGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQgdGhhdCBtaWdodAorCSAgIGJlIHVuZGVm
aW5lZCBpZiB5eW92ZXJmbG93IGlzIGEgbWFjcm8uICAqLworCXl5b3ZlcmZsb3cgKFlZXygibWVt
b3J5IGV4aGF1c3RlZCIpLAorCQkgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCks
CisJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKKworCQkgICAgJnl5c3Rh
Y2tzaXplKTsKKworCXl5c3MgPSB5eXNzMTsKKwl5eXZzID0geXl2czE7CisgICAgICB9CisjZWxz
ZSAvKiBubyB5eW92ZXJmbG93ICovCisjIGlmbmRlZiBZWVNUQUNLX1JFTE9DQVRFCisgICAgICBn
b3RvIHl5ZXhoYXVzdGVkbGFiOworIyBlbHNlCisgICAgICAvKiBFeHRlbmQgdGhlIHN0YWNrIG91
ciBvd24gd2F5LiAgKi8KKyAgICAgIGlmIChZWU1BWERFUFRIIDw9IHl5c3RhY2tzaXplKQorCWdv
dG8geXlleGhhdXN0ZWRsYWI7CisgICAgICB5eXN0YWNrc2l6ZSAqPSAyOworICAgICAgaWYgKFlZ
TUFYREVQVEggPCB5eXN0YWNrc2l6ZSkKKwl5eXN0YWNrc2l6ZSA9IFlZTUFYREVQVEg7CisKKyAg
ICAgIHsKKwl5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKKwl1bmlvbiB5eWFsbG9jICp5eXB0
ciA9CisJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5
eXN0YWNrc2l6ZSkpOworCWlmICghIHl5cHRyKQorCSAgZ290byB5eWV4aGF1c3RlZGxhYjsKKwlZ
WVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKKwlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKKworIyAg
dW5kZWYgWVlTVEFDS19SRUxPQ0FURQorCWlmICh5eXNzMSAhPSB5eXNzYSkKKwkgIFlZU1RBQ0tf
RlJFRSAoeXlzczEpOworICAgICAgfQorIyBlbmRpZgorI2VuZGlmIC8qIG5vIHl5b3ZlcmZsb3cg
Ki8KKworICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXplIC0gMTsKKyAgICAgIHl5dnNwID0geXl2
cyArIHl5c2l6ZSAtIDE7CisKKworICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6
ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAorCQkgICh1bnNpZ25lZCBsb25nIGludCkgeXlzdGFja3Np
emUpKTsKKworICAgICAgaWYgKHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEgPD0geXlzc3ApCisJWVlB
Qk9SVDsKKyAgICB9CisKKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRc
biIsIHl5c3RhdGUpKTsKKworICBnb3RvIHl5YmFja3VwOworCisvKi0tLS0tLS0tLS0tLgorfCB5
eWJhY2t1cC4gIHwKK2AtLS0tLS0tLS0tLSovCit5eWJhY2t1cDoKKworICAvKiBEbyBhcHByb3By
aWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgUmVhZCBhCisgICAgIGxv
b2stYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUu
ICAqLworCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVy
ZW5jZSB0byBsb29rLWFoZWFkIHRva2VuLiAgKi8KKyAgeXluID0geXlwYWN0W3l5c3RhdGVdOwor
ICBpZiAoeXluID09IFlZUEFDVF9OSU5GKQorICAgIGdvdG8geXlkZWZhdWx0OworCisgIC8qIE5v
dCBrbm93biA9PiBnZXQgYSBsb29rLWFoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBv
bmUuICAqLworCisgIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRiBvciBhIHZh
bGlkIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQorICAg
IHsKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOworICAg
ICAgeXljaGFyID0gWVlMRVg7CisgICAgfQorCisgIGlmICh5eWNoYXIgPD0gWVlFT0YpCisgICAg
eworICAgICAgeXljaGFyID0geXl0b2tlbiA9IFlZRU9GOworICAgICAgWVlEUFJJTlRGICgoc3Rk
ZXJyLCAiTm93IGF0IGVuZCBvZiBpbnB1dC5cbiIpKTsKKyAgICB9CisgIGVsc2UKKyAgICB7Cisg
ICAgICB5eXRva2VuID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7CisgICAgICBZWV9TWU1CT0xfUFJJ
TlQgKCJOZXh0IHRva2VuIGlzIiwgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYyk7CisgICAgfQor
CisgIC8qIElmIHRoZSBwcm9wZXIgYWN0aW9uIG9uIHNlZWluZyB0b2tlbiBZWVRPS0VOIGlzIHRv
IHJlZHVjZSBvciB0bworICAgICBkZXRlY3QgYW4gZXJyb3IsIHRha2UgdGhhdCBhY3Rpb24uICAq
LworICB5eW4gKz0geXl0b2tlbjsKKyAgaWYgKHl5biA8IDAgfHwgWVlMQVNUIDwgeXluIHx8IHl5
Y2hlY2tbeXluXSAhPSB5eXRva2VuKQorICAgIGdvdG8geXlkZWZhdWx0OworICB5eW4gPSB5eXRh
YmxlW3l5bl07CisgIGlmICh5eW4gPD0gMCkKKyAgICB7CisgICAgICBpZiAoeXluID09IDAgfHwg
eXluID09IFlZVEFCTEVfTklORikKKwlnb3RvIHl5ZXJybGFiOworICAgICAgeXluID0gLXl5bjsK
KyAgICAgIGdvdG8geXlyZWR1Y2U7CisgICAgfQorCisgIGlmICh5eW4gPT0gWVlGSU5BTCkKKyAg
ICBZWUFDQ0VQVDsKKworICAvKiBDb3VudCB0b2tlbnMgc2hpZnRlZCBzaW5jZSBlcnJvcjsgYWZ0
ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCisgICAgIHN0YXR1cy4gICovCisgIGlmICh5eWVycnN0
YXR1cykKKyAgICB5eWVycnN0YXR1cy0tOworCisgIC8qIFNoaWZ0IHRoZSBsb29rLWFoZWFkIHRv
a2VuLiAgKi8KKyAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFs
LCAmeXlsbG9jKTsKKworICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuIHVubGVzcyBpdCBp
cyBlb2YuICAqLworICBpZiAoeXljaGFyICE9IFlZRU9GKQorICAgIHl5Y2hhciA9IFlZRU1QVFk7
CisKKyAgeXlzdGF0ZSA9IHl5bjsKKyAgKisreXl2c3AgPSB5eWx2YWw7CisKKyAgZ290byB5eW5l
d3N0YXRlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZGVmYXVsdCAtLSBkbyB0aGUgZGVmYXVsdCBhY3Rpb24g
Zm9yIHRoZSBjdXJyZW50IHN0YXRlLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZGVmYXVsdDoKKyAgeXluID0geXlk
ZWZhY3RbeXlzdGF0ZV07CisgIGlmICh5eW4gPT0gMCkKKyAgICBnb3RvIHl5ZXJybGFiOworICBn
b3RvIHl5cmVkdWNlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5
cmVkdWNlIC0tIERvIGEgcmVkdWN0aW9uLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KK3l5cmVkdWNlOgorICAvKiB5eW4gaXMgdGhlIG51bWJlciBvZiBhIHJ1bGUgdG8gcmVk
dWNlIHdpdGguICAqLworICB5eWxlbiA9IHl5cjJbeXluXTsKKworICAvKiBJZiBZWUxFTiBpcyBu
b256ZXJvLCBpbXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGFjdGlvbjoKKyAgICAg
YCQkID0gJDEnLgorCisgICAgIE90aGVyd2lzZSwgdGhlIGZvbGxvd2luZyBsaW5lIHNldHMgWVlW
QUwgdG8gZ2FyYmFnZS4KKyAgICAgVGhpcyBiZWhhdmlvciBpcyB1bmRvY3VtZW50ZWQgYW5kIEJp
c29uCisgICAgIHVzZXJzIHNob3VsZCBub3QgcmVseSB1cG9uIGl0LiAgQXNzaWduaW5nIHRvIFlZ
VkFMCisgICAgIHVuY29uZGl0aW9uYWxseSBtYWtlcyB0aGUgcGFyc2VyIGEgYml0IHNtYWxsZXIs
IGFuZCBpdCBhdm9pZHMgYQorICAgICBHQ0Mgd2FybmluZyB0aGF0IFlZVkFMIG1heSBiZSB1c2Vk
IHVuaW5pdGlhbGl6ZWQuICAqLworICB5eXZhbCA9IHl5dnNwWzEteXlsZW5dOworCisKKyAgWVlf
UkVEVUNFX1BSSU5UICh5eW4pOworICBzd2l0Y2ggKHl5bikKKyAgICB7CisgICAgICAgIGNhc2Ug
MjoKKyNsaW5lIDExNSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAg
ICBwYXJzZXIuc2V0UGFyc2VSZXN1bHQoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMSkgLSAoMSldLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNl
IDQ6CisjbGluZSAxMjYgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAg
ICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5sb2NhdGlvblBhdGgp
OworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgNjoKKyNsaW5lIDEzNiAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKSA9IG5ldyBMb2NhdGlv
blBhdGg7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDc6CisjbGluZSAxNDEgIldlYkNv
cmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0
aCkgPSAoeXl2c3BbKDIpIC0gKDIpXS5sb2NhdGlvblBhdGgpOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSA4OgorI2xpbmUgMTQ2ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAg
ICB7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpID0gKHl5dnNwWygyKSAtICgyKV0ubG9j
YXRpb25QYXRoKTsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCktPnByZXBlbmRTdGVwKHN0
ZDo6dW5pcXVlX3B0cjxTdGVwPigoeXl2c3BbKDEpIC0gKDIpXS5zdGVwKSkpOworICAgIDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSA5OgorI2xpbmUgMTU0ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1t
YXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpID0gbmV3IExvY2F0aW9u
UGF0aDsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCktPmFwcGVuZFN0ZXAoc3RkOjp1bmlx
dWVfcHRyPFN0ZXA+KCh5eXZzcFsoMSkgLSAoMSldLnN0ZXApKSk7CisgICAgO30KKyAgICBicmVh
azsKKworICBjYXNlIDEwOgorI2xpbmUgMTYwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIK
KyAgICB7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpID0gKHl5dnNwWygxKSAtICgzKV0u
bG9jYXRpb25QYXRoKTsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCktPmFwcGVuZFN0ZXAo
c3RkOjp1bmlxdWVfcHRyPFN0ZXA+KCh5eXZzcFsoMykgLSAoMyldLnN0ZXApKSk7CisgICAgO30K
KyAgICBicmVhazsKKworICBjYXNlIDExOgorI2xpbmUgMTY2ICJXZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpID0gKHl5dnNwWygx
KSAtICgzKV0ubG9jYXRpb25QYXRoKTsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCktPmFw
cGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+KCh5eXZzcFsoMikgLSAoMyldLnN0ZXApKSk7
CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpLT5hcHBlbmRTdGVwKHN0ZDo6dW5pcXVlX3B0
cjxTdGVwPigoeXl2c3BbKDMpIC0gKDMpXS5zdGVwKSkpOworICAgIDt9CisgICAgYnJlYWs7CisK
KyAgY2FzZSAxMjoKKyNsaW5lIDE3NSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAg
eworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RlcDo6Tm9kZVRlc3Q+IG5vZGVUZXN0KCh5eXZz
cFsoMSkgLSAoMildLm5vZGVUZXN0KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+Pj4gcHJlZGljYXRlTGlzdCgoeXl2c3BbKDIpIC0g
KDIpXS5leHByZXNzaW9uVmVjdG9yKSk7CisgICAgICAgIGlmIChwcmVkaWNhdGVMaXN0KQorICAg
ICAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAoU3RlcDo6Q2hpbGRBeGlzLCBXVEZNb3Zl
KCpub2RlVGVzdCksIFdURk1vdmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAoU3RlcDo6Q2hpbGRBeGlzLCBXVEZNb3Zl
KCpub2RlVGVzdCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxMzoKKyNsaW5lIDE4
NSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICBTdHJpbmcgbmFt
ZXRlc3QgPSBhZG9wdFJlZigoeXl2c3BbKDEpIC0gKDIpXS5zdHJpbmcpKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNh
dGVMaXN0KCh5eXZzcFsoMikgLSAoMildLmV4cHJlc3Npb25WZWN0b3IpKTsKKworICAgICAgICBT
dHJpbmcgbG9jYWxOYW1lOworICAgICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJOworICAgICAgICBp
ZiAoIXBhcnNlci5leHBhbmRRdWFsaWZpZWROYW1lKG5hbWV0ZXN0LCBsb2NhbE5hbWUsIG5hbWVz
cGFjZVVSSSkpIHsKKyAgICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG51bGxwdHI7CisgICAgICAg
ICAgICBZWUFCT1JUOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHByZWRpY2F0ZUxpc3QpCisg
ICAgICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpDaGlsZEF4aXMsIFN0ZXA6
Ok5vZGVUZXN0KFN0ZXA6Ok5vZGVUZXN0OjpOYW1lVGVzdCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VV
UkkpLCBXVEZNb3ZlKCpwcmVkaWNhdGVMaXN0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKFN0ZXA6OkNoaWxkQXhpcywgU3RlcDo6Tm9kZVRlc3Qo
U3RlcDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOworICAg
IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNDoKKyNsaW5lIDIwMyAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RlcDo6Tm9kZVRl
c3Q+IG5vZGVUZXN0KCh5eXZzcFsoMikgLSAoMyldLm5vZGVUZXN0KSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+Pj4gcHJlZGljYXRl
TGlzdCgoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uVmVjdG9yKSk7CisKKyAgICAgICAgaWYg
KHByZWRpY2F0ZUxpc3QpCisgICAgICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcCgoeXl2
c3BbKDEpIC0gKDMpXS5heGlzKSwgV1RGTW92ZSgqbm9kZVRlc3QpLCBXVEZNb3ZlKCpwcmVkaWNh
dGVMaXN0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBT
dGVwKCh5eXZzcFsoMSkgLSAoMyldLmF4aXMpLCBXVEZNb3ZlKCpub2RlVGVzdCkpOworICAgIDt9
CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNToKKyNsaW5lIDIxNCAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisgICAgeworICAgICAgICBTdHJpbmcgbmFtZXRlc3QgPSBhZG9wdFJlZigoeXl2
c3BbKDIpIC0gKDMpXS5zdHJpbmcpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNhdGVMaXN0KCh5eXZzcFsoMykgLSAo
MyldLmV4cHJlc3Npb25WZWN0b3IpKTsKKworICAgICAgICBTdHJpbmcgbG9jYWxOYW1lOworICAg
ICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJOworICAgICAgICBpZiAoIXBhcnNlci5leHBhbmRRdWFs
aWZpZWROYW1lKG5hbWV0ZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpIHsKKyAgICAgICAg
ICAgICh5eXZhbC5zdGVwKSA9IG51bGxwdHI7CisgICAgICAgICAgICBZWUFCT1JUOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHByZWRpY2F0ZUxpc3QpCisgICAgICAgICAgICAoeXl2YWwuc3Rl
cCkgPSBuZXcgU3RlcCgoeXl2c3BbKDEpIC0gKDMpXS5heGlzKSwgU3RlcDo6Tm9kZVRlc3QoU3Rl
cDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSksIFdURk1vdmUo
KnByZWRpY2F0ZUxpc3QpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKHl5dmFsLnN0ZXAp
ID0gbmV3IFN0ZXAoKHl5dnNwWygxKSAtICgzKV0uYXhpcyksIFN0ZXA6Ok5vZGVUZXN0KFN0ZXA6
Ok5vZGVUZXN0OjpOYW1lVGVzdCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgMTg6CisjbGluZSAyMzggIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmF4aXMpID0gU3RlcDo6QXR0cmlidXRlQXhp
czsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTk6CisjbGluZSAyNDUgIldlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLm5vZGVUZXN0KSA9IG5l
dyBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6QW55Tm9kZVRlc3QpOworICAgIDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSAyMDoKKyNsaW5lIDI1MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwubm9kZVRlc3QpID0gbmV3IFN0ZXA6Ok5vZGVU
ZXN0KFN0ZXA6Ok5vZGVUZXN0OjpUZXh0Tm9kZVRlc3QpOworICAgIDt9CisgICAgYnJlYWs7CisK
KyAgY2FzZSAyMToKKyNsaW5lIDI1NSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAg
eworICAgICAgICAoeXl2YWwubm9kZVRlc3QpID0gbmV3IFN0ZXA6Ok5vZGVUZXN0KFN0ZXA6Ok5v
ZGVUZXN0OjpDb21tZW50Tm9kZVRlc3QpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAy
MjoKKyNsaW5lIDI2MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAg
ICAoeXl2YWwubm9kZVRlc3QpID0gbmV3IFN0ZXA6Ok5vZGVUZXN0KFN0ZXA6Ok5vZGVUZXN0OjpQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb25Ob2RlVGVzdCk7CisgICAgO30KKyAgICBicmVhazsKKworICBj
YXNlIDIzOgorI2xpbmUgMjY1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7Cisg
ICAgICAgIFN0cmluZyBsaXRlcmFsID0gYWRvcHRSZWYoKHl5dnNwWygzKSAtICg0KV0uc3RyaW5n
KSk7CisgICAgICAgICh5eXZhbC5ub2RlVGVzdCkgPSBuZXcgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6
Tm9kZVRlc3Q6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbk5vZGVUZXN0LCBsaXRlcmFsLnN0cmlwV2hp
dGVTcGFjZSgpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMjQ6CisjbGluZSAyNzMg
IldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJl
c3Npb25WZWN0b3IpID0gbnVsbHB0cjsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMjY6
CisjbGluZSAyODIgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAg
KHl5dmFsLmV4cHJlc3Npb25WZWN0b3IpID0gbmV3IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4+OworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3RvciktPmFwcGVuZChzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgxKV0uZXhwcmVzc2lvbikpKTsK
KyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMjc6CisjbGluZSAyODggIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb25WZWN0b3Ip
ID0gKHl5dnNwWygxKSAtICgyKV0uZXhwcmVzc2lvblZlY3Rvcik7CisgICAgICAgICh5eXZhbC5l
eHByZXNzaW9uVmVjdG9yKS0+YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2
c3BbKDIpIC0gKDIpXS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2Fz
ZSAyODoKKyNsaW5lIDI5NiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAg
ICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSAoeXl2c3BbKDIpIC0gKDMpXS5leHByZXNzaW9uKTsK
KyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMjk6CisjbGluZSAzMDMgIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAo
U3RlcDo6RGVzY2VuZGFudE9yU2VsZkF4aXMsIFN0ZXA6Ok5vZGVUZXN0KFN0ZXA6Ok5vZGVUZXN0
OjpBbnlOb2RlVGVzdCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAzMDoKKyNsaW5l
IDMxMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwu
c3RlcCkgPSBuZXcgU3RlcChTdGVwOjpTZWxmQXhpcywgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9k
ZVRlc3Q6OkFueU5vZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDMxOgor
I2xpbmUgMzE1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5
eXZhbC5zdGVwKSA9IG5ldyBTdGVwKFN0ZXA6OlBhcmVudEF4aXMsIFN0ZXA6Ok5vZGVUZXN0KFN0
ZXA6Ok5vZGVUZXN0OjpBbnlOb2RlVGVzdCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2Fz
ZSAzMjoKKyNsaW5lIDMyMiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAg
ICAgICBTdHJpbmcgbmFtZSA9IGFkb3B0UmVmKCh5eXZzcFsoMSkgLSAoMSldLnN0cmluZykpOwor
ICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgVmFyaWFibGVSZWZlcmVuY2UobmFtZSk7
CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDMzOgorI2xpbmUgMzI4ICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9ICh5
eXZzcFsoMikgLSAoMyldLmV4cHJlc3Npb24pOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2Fz
ZSAzNDoKKyNsaW5lIDMzMyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAg
ICAgICBTdHJpbmcgbGl0ZXJhbCA9IGFkb3B0UmVmKCh5eXZzcFsoMSkgLSAoMSldLnN0cmluZykp
OworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgU3RyaW5nRXhwcmVzc2lvbihXVEZN
b3ZlKGxpdGVyYWwpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzU6CisjbGluZSAz
MzkgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgU3RyaW5nIG51
bWVyYWwgPSBhZG9wdFJlZigoeXl2c3BbKDEpIC0gKDEpXS5zdHJpbmcpKTsKKyAgICAgICAgKHl5
dmFsLmV4cHJlc3Npb24pID0gbmV3IE51bWJlcihudW1lcmFsLnRvRG91YmxlKCkpOworICAgIDt9
CisgICAgYnJlYWs7CisKKyAgY2FzZSAzNzoKKyNsaW5lIDM0OSAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisgICAgeworICAgICAgICBTdHJpbmcgbmFtZSA9IGFkb3B0UmVmKCh5eXZzcFso
MSkgLSAoMyldLnN0cmluZykpOworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBYUGF0aDo6
RnVuY3Rpb246OmNyZWF0ZShuYW1lKS5yZWxlYXNlKCk7CisgICAgICAgIGlmICghKHl5dmFsLmV4
cHJlc3Npb24pKQorICAgICAgICAgICAgWVlBQk9SVDsKKyAgICA7fQorICAgIGJyZWFrOworCisg
IGNhc2UgMzg6CisjbGluZSAzNTcgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsK
KyAgICAgICAgU3RyaW5nIG5hbWUgPSBhZG9wdFJlZigoeXl2c3BbKDEpIC0gKDQpXS5zdHJpbmcp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4+PiBhcmd1bWVudExpc3QoKHl5dnNwWygzKSAtICg0KV0uZXhwcmVzc2lvblZlY3Rvcikp
OworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBYUGF0aDo6RnVuY3Rpb246OmNyZWF0ZShu
YW1lLCBXVEZNb3ZlKCphcmd1bWVudExpc3QpKS5yZWxlYXNlKCk7CisgICAgICAgIGlmICghKHl5
dmFsLmV4cHJlc3Npb24pKQorICAgICAgICAgICAgWVlBQk9SVDsKKyAgICA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgMzk6CisjbGluZSAzNjggIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
ICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb25WZWN0b3IpID0gbmV3IFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+OworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3Rv
ciktPmFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgxKV0u
ZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNDA6CisjbGluZSAz
NzQgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4
cHJlc3Npb25WZWN0b3IpID0gKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvblZlY3Rvcik7Cisg
ICAgICAgICh5eXZhbC5leHByZXNzaW9uVmVjdG9yKS0+YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxF
eHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAg
YnJlYWs7CisKKyAgY2FzZSA0MzoKKyNsaW5lIDM4OCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFy
LnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgVW5pb24oc3RkOjp1
bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3Rk
Ojp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7
CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDQ0OgorI2xpbmUgMzk1ICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9ICh5
eXZzcFsoMSkgLSAoMSldLmxvY2F0aW9uUGF0aCk7CisgICAgO30KKyAgICBicmVhazsKKworICBj
YXNlIDQ2OgorI2xpbmUgNDAyICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7Cisg
ICAgICAgICh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCktPnNldEFic29sdXRlKCk7Cisg
ICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxM
b2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCkpKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgNDc6CisjbGluZSA0MDggIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+
cHJlcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+KCh5eXZzcFsoMikgLSAoMyldLnN0ZXAp
KSk7CisgICAgICAgICh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCktPnNldEFic29sdXRl
KCk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBQYXRoKHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVl
X3B0cjxMb2NhdGlvblBhdGg+KCh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0aCkpKTsKKyAg
ICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNDk6CisjbGluZSA0MTkgIldlYkNvcmUveG1sL1hQ
YXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNhdGVMaXN0KCh5eXZzcFsoMikgLSAoMild
LmV4cHJlc3Npb25WZWN0b3IpKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IEZp
bHRlcihzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgyKV0uZXhwcmVz
c2lvbikpLCBXVEZNb3ZlKCpwcmVkaWNhdGVMaXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKwor
ICBjYXNlIDUxOgorI2xpbmUgNDI5ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7
CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBMb2dpY2FsT3AoTG9naWNhbE9wOjpP
UF9Pciwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJl
c3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4
cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDUzOgorI2xpbmUgNDM4
ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHBy
ZXNzaW9uKSA9IG5ldyBMb2dpY2FsT3AoTG9naWNhbE9wOjpPUF9BbmQsIHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uKSkpOworICAgIDt9
CisgICAgYnJlYWs7CisKKyAgY2FzZSA1NToKKyNsaW5lIDQ0NyAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgRXFUZXN0
T3AoKHl5dnNwWygyKSAtICgzKV0uZXF1YWxpdHlUZXN0T3Bjb2RlKSwgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7CisgICAgO30K
KyAgICBicmVhazsKKworICBjYXNlIDU3OgorI2xpbmUgNDU2ICJXZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBFcVRlc3RP
cCgoeXl2c3BbKDIpIC0gKDMpXS5lcXVhbGl0eVRlc3RPcGNvZGUpLCBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9w
dHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgNTk6CisjbGluZSA0NjUgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IE51bWVyaWNP
cChOdW1lcmljT3A6Ok9QX0FkZCwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFso
MSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNl
IDYwOgorI2xpbmUgNDcwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAg
ICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBOdW1lcmljT3AoTnVtZXJpY09wOjpPUF9TdWIs
IHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9u
KSksIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNz
aW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA2MjoKKyNsaW5lIDQ3OSAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lv
bikgPSBuZXcgTnVtZXJpY09wKCh5eXZzcFsoMikgLSAoMyldLm51bWVyaWNPcGNvZGUpLCBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikp
KTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNjQ6CisjbGluZSA0ODggIldlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0g
bmV3IE5lZ2F0aXZlKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDIpIC0gKDIp
XS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKworLyogTGluZSAxMjY3IG9m
IHlhY2MuYy4gICovCisjbGluZSAyMDQ5ICIuL1hQYXRoR3JhbW1hci5jcHAiCisgICAgICBkZWZh
dWx0OiBicmVhazsKKyAgICB9CisgIFlZX1NZTUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIxW3l5
bl0sICZ5eXZhbCwgJnl5bG9jKTsKKworICBZWVBPUFNUQUNLICh5eWxlbik7CisgIHl5bGVuID0g
MDsKKyAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKKworICAqKyt5eXZzcCA9IHl5dmFs
OworCisKKyAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0
ZXJtaW5lIHdoYXQgc3RhdGUKKyAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUg
d2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCisgICAgIG51bWJlciByZWR1Y2VkIGJ5LiAg
Ki8KKworICB5eW4gPSB5eXIxW3l5bl07CisKKyAgeXlzdGF0ZSA9IHl5cGdvdG9beXluIC0gWVlO
VE9LRU5TXSArICp5eXNzcDsKKyAgaWYgKDAgPD0geXlzdGF0ZSAmJiB5eXN0YXRlIDw9IFlZTEFT
VCAmJiB5eWNoZWNrW3l5c3RhdGVdID09ICp5eXNzcCkKKyAgICB5eXN0YXRlID0geXl0YWJsZVt5
eXN0YXRlXTsKKyAgZWxzZQorICAgIHl5c3RhdGUgPSB5eWRlZmdvdG9beXluIC0gWVlOVE9LRU5T
XTsKKworICBnb3RvIHl5bmV3c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0uCit8IHl5ZXJybGFiIC0tIGhlcmUgb24gZGV0ZWN0aW5nIGVycm9yIHwKK2At
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXllcnJsYWI6CisgIC8qIElm
IG5vdCBhbHJlYWR5IHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3Iu
ICAqLworICBpZiAoIXl5ZXJyc3RhdHVzKQorICAgIHsKKyAgICAgICsreXluZXJyczsKKyNpZiAh
IFlZRVJST1JfVkVSQk9TRQorICAgICAgeXllcnJvciAocGFyc2VyLCBZWV8oInN5bnRheCBlcnJv
ciIpKTsKKyNlbHNlCisgICAgICB7CisJWVlTSVpFX1QgeXlzaXplID0geXlzeW50YXhfZXJyb3Ig
KDAsIHl5c3RhdGUsIHl5Y2hhcik7CisJaWYgKHl5bXNnX2FsbG9jIDwgeXlzaXplICYmIHl5bXNn
X2FsbG9jIDwgWVlTVEFDS19BTExPQ19NQVhJTVVNKQorCSAgeworCSAgICBZWVNJWkVfVCB5eWFs
bG9jID0gMiAqIHl5c2l6ZTsKKwkgICAgaWYgKCEgKHl5c2l6ZSA8PSB5eWFsbG9jICYmIHl5YWxs
b2MgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKwkgICAgICB5eWFsbG9jID0gWVlTVEFDS19B
TExPQ19NQVhJTVVNOworCSAgICBpZiAoeXltc2cgIT0geXltc2didWYpCisJICAgICAgWVlTVEFD
S19GUkVFICh5eW1zZyk7CisJICAgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXlh
bGxvYyk7CisJICAgIGlmICh5eW1zZykKKwkgICAgICB5eW1zZ19hbGxvYyA9IHl5YWxsb2M7CisJ
ICAgIGVsc2UKKwkgICAgICB7CisJCXl5bXNnID0geXltc2didWY7CisJCXl5bXNnX2FsbG9jID0g
c2l6ZW9mIHl5bXNnYnVmOworCSAgICAgIH0KKwkgIH0KKworCWlmICgwIDwgeXlzaXplICYmIHl5
c2l6ZSA8PSB5eW1zZ19hbGxvYykKKwkgIHsKKwkgICAgKHZvaWQpIHl5c3ludGF4X2Vycm9yICh5
eW1zZywgeXlzdGF0ZSwgeXljaGFyKTsKKwkgICAgeXllcnJvciAocGFyc2VyLCB5eW1zZyk7CisJ
ICB9CisJZWxzZQorCSAgeworCSAgICB5eWVycm9yIChwYXJzZXIsIFlZXygic3ludGF4IGVycm9y
IikpOworCSAgICBpZiAoeXlzaXplICE9IDApCisJICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsK
KwkgIH0KKyAgICAgIH0KKyNlbmRpZgorICAgIH0KKworCisKKyAgaWYgKHl5ZXJyc3RhdHVzID09
IDMpCisgICAgeworICAgICAgLyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxv
b2stYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KKwkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLworCisgICAg
ICBpZiAoeXljaGFyIDw9IFlZRU9GKQorCXsKKwkgIC8qIFJldHVybiBmYWlsdXJlIGlmIGF0IGVu
ZCBvZiBpbnB1dC4gICovCisJICBpZiAoeXljaGFyID09IFlZRU9GKQorCSAgICBZWUFCT1JUOwor
CX0KKyAgICAgIGVsc2UKKwl7CisJICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAor
CQkgICAgICB5eXRva2VuLCAmeXlsdmFsLCBwYXJzZXIpOworCSAgeXljaGFyID0gWVlFTVBUWTsK
Kwl9CisgICAgfQorCisgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tl
biBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKKyAgICAgdG9rZW4uICAqLworICBnb3RvIHl5ZXJy
bGFiMTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS4KK3wgeXllcnJvcmxhYiAtLSBlcnJvciByYWlzZWQgZXhwbGljaXRseSBieSBZWUVS
Uk9SLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCit5eWVycm9ybGFiOgorCisgIC8qIFBhY2lmeSBjb21waWxlcnMgbGlrZSBHQ0Mgd2hl
biB0aGUgdXNlciBjb2RlIG5ldmVyIGludm9rZXMKKyAgICAgWVlFUlJPUiBhbmQgdGhlIGxhYmVs
IHl5ZXJyb3JsYWIgdGhlcmVmb3JlIG5ldmVyIGFwcGVhcnMgaW4gdXNlcgorICAgICBjb2RlLiAg
Ki8KKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnJlYWNoYWJsZS1jb2RlIgorI2Vu
ZGlmCisgIGlmICgvKkNPTlNUQ09ORCovIDApCisgICAgIGdvdG8geXllcnJvcmxhYjsKKyNpZiBD
T01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisg
IC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0
cmlnZ2VyZWQKKyAgICAgdGhpcyBZWUVSUk9SLiAgKi8KKyAgWVlQT1BTVEFDSyAoeXlsZW4pOwor
ICB5eWxlbiA9IDA7CisgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CisgIHl5c3RhdGUg
PSAqeXlzc3A7CisgIGdvdG8geXllcnJsYWIxOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXllcnJsYWIxIC0t
IGNvbW1vbiBjb2RlIGZvciBib3RoIHN5bnRheCBlcnJvciBhbmQgWVlFUlJPUi4gIHwKK2AtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KK3l5ZXJybGFiMToKKyAgeXllcnJzdGF0dXMgPSAzOwkvKiBFYWNoIHJlYWwgdG9rZW4gc2hp
ZnRlZCBkZWNyZW1lbnRzIHRoaXMuICAqLworCisgIGZvciAoOzspCisgICAgeworICAgICAgeXlu
ID0geXlwYWN0W3l5c3RhdGVdOworICAgICAgaWYgKHl5biAhPSBZWVBBQ1RfTklORikKKwl7CisJ
ICB5eW4gKz0gWVlURVJST1I7CisJICBpZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFTVCAmJiB5
eWNoZWNrW3l5bl0gPT0gWVlURVJST1IpCisJICAgIHsKKwkgICAgICB5eW4gPSB5eXRhYmxlW3l5
bl07CisJICAgICAgaWYgKDAgPCB5eW4pCisJCWJyZWFrOworCSAgICB9CisJfQorCisgICAgICAv
KiBQb3AgdGhlIGN1cnJlbnQgc3RhdGUgYmVjYXVzZSBpdCBjYW5ub3QgaGFuZGxlIHRoZSBlcnJv
ciB0b2tlbi4gICovCisgICAgICBpZiAoeXlzc3AgPT0geXlzcykKKwlZWUFCT1JUOworCisKKyAg
ICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCisJCSAgeXlzdG9zW3l5c3RhdGVdLCB5
eXZzcCwgcGFyc2VyKTsKKyAgICAgIFlZUE9QU1RBQ0sgKDEpOworICAgICAgeXlzdGF0ZSA9ICp5
eXNzcDsKKyAgICAgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CisgICAgfQorCisgIGlm
ICh5eW4gPT0gWVlGSU5BTCkKKyAgICBZWUFDQ0VQVDsKKworICAqKyt5eXZzcCA9IHl5bHZhbDsK
KworCisgIC8qIFNoaWZ0IHRoZSBlcnJvciB0b2tlbi4gICovCisgIFlZX1NZTUJPTF9QUklOVCAo
IlNoaWZ0aW5nIiwgeXlzdG9zW3l5bl0sIHl5dnNwLCB5eWxzcCk7CisKKyAgeXlzdGF0ZSA9IHl5
bjsKKyAgZ290byB5eW5ld3N0YXRlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KK3wgeXlhY2NlcHRsYWIgLS0gWVlBQ0NFUFQgY29tZXMgaGVyZS4gIHwKK2At
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5YWNjZXB0bGFiOgorICB5
eXJlc3VsdCA9IDA7CisgIGdvdG8geXlyZXR1cm47CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCit8IHl5YWJvcnRsYWIgLS0gWVlBQk9SVCBjb21lcyBoZXJlLiAgfAor
YC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5YWJvcnRsYWI6CisgIHl5
cmVzdWx0ID0gMTsKKyAgZ290byB5eXJldHVybjsKKworI2lmbmRlZiB5eW92ZXJmbG93CisvKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZXho
YXVzdGVkbGFiIC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CitgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWV4aGF1c3RlZGxh
YjoKKyAgeXllcnJvciAocGFyc2VyLCBZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CisgIHl5cmVz
dWx0ID0gMjsKKyAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKyNlbmRpZgorCit5eXJldHVybjoKKyAg
aWYgKHl5Y2hhciAhPSBZWUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKKyAgICAgeXlkZXN0cnVj
dCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKKwkJIHl5dG9rZW4sICZ5eWx2YWws
IHBhcnNlcik7CisgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdo
aWNoIGFjdGlvbiB0cmlnZ2VyZWQKKyAgICAgdGhpcyBZWUFCT1JUIG9yIFlZQUNDRVBULiAgKi8K
KyAgWVlQT1BTVEFDSyAoeXlsZW4pOworICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwor
ICB3aGlsZSAoeXlzc3AgIT0geXlzcykKKyAgICB7CisgICAgICB5eWRlc3RydWN0ICgiQ2xlYW51
cDogcG9wcGluZyIsCisJCSAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwLCBwYXJzZXIpOworICAgICAg
WVlQT1BTVEFDSyAoMSk7CisgICAgfQorI2lmbmRlZiB5eW92ZXJmbG93CisgIGlmICh5eXNzICE9
IHl5c3NhKQorICAgIFlZU1RBQ0tfRlJFRSAoeXlzcyk7CisjZW5kaWYKKyNpZiBZWUVSUk9SX1ZF
UkJPU0UKKyAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQorICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cp
OworI2VuZGlmCisgIC8qIE1ha2Ugc3VyZSBZWUlEIGlzIHVzZWQuICAqLworICByZXR1cm4gWVlJ
RCAoeXlyZXN1bHQpOworfQorCisKKyNsaW5lIDQ5MyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFy
LnkiCisKKwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTcgQEAKKyNpZm5kZWYgQ1NTR1JBTU1BUl9ICisjZGVmaW5lIENTU0dSQU1NQVJfSAor
LyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisKKy8qIFNrZWxl
dG9uIGludGVyZmFjZSBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBpbiBDCisKKyAgIENv
cHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAw
NCwgMjAwNSwgMjAwNgorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlv
biwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIgd29yayB0aGF0IGNvbnRhaW5zCisgICBwYXJ0IG9y
IGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29y
aworICAgdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHNvIGxvbmcgYXMgdGhhdCB3b3JrIGlz
bid0IGl0c2VsZiBhCisgICBwYXJzZXIgZ2VuZXJhdG9yIHVzaW5nIHRoZSBza2VsZXRvbiBvciBh
IG1vZGlmaWVkIHZlcnNpb24gdGhlcmVvZgorICAgYXMgYSBwYXJzZXIgc2tlbGV0b24uICBBbHRl
cm5hdGl2ZWx5LCBpZiB5b3UgbW9kaWZ5IG9yIHJlZGlzdHJpYnV0ZQorICAgdGhlIHBhcnNlciBz
a2VsZXRvbiBpdHNlbGYsIHlvdSBtYXkgKGF0IHlvdXIgb3B0aW9uKSByZW1vdmUgdGhpcworICAg
c3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUg
cmVzdWx0aW5nCisgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSB3aXRob3V0IHRoaXMgc3BlY2lhbCBleGNl
cHRpb24uCisKKyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KKyAgIHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KKwor
LyogVG9rZW5zLiAgKi8KKyNpZm5kZWYgWVlUT0tFTlRZUEUKKyMgZGVmaW5lIFlZVE9LRU5UWVBF
CisgICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RC
IGFuZCBvdGhlciBkZWJ1Z2dlcnMKKyAgICAgIGtub3cgYWJvdXQgdGhlbS4gICovCisgICBlbnVt
IHl5dG9rZW50eXBlIHsKKyAgICAgTVVMT1AgPSAyNTgsCisgICAgIFJFTE9QID0gMjU5LAorICAg
ICBFUU9QID0gMjYwLAorICAgICBNSU5VUyA9IDI2MSwKKyAgICAgUExVUyA9IDI2MiwKKyAgICAg
QU5EID0gMjYzLAorICAgICBPUiA9IDI2NCwKKyAgICAgRlVOQ1RJT05OQU1FID0gMjY1LAorICAg
ICBMSVRFUkFMID0gMjY2LAorICAgICBOQU1FVEVTVCA9IDI2NywKKyAgICAgTlVNQkVSID0gMjY4
LAorICAgICBOT0RFVFlQRSA9IDI2OSwKKyAgICAgVkFSSUFCTEVSRUZFUkVOQ0UgPSAyNzAsCisg
ICAgIEFYSVNOQU1FID0gMjcxLAorICAgICBDT01NRU5UID0gMjcyLAorICAgICBET1RET1QgPSAy
NzMsCisgICAgIFBJID0gMjc0LAorICAgICBOT0RFID0gMjc1LAorICAgICBTTEFTSFNMQVNIID0g
Mjc2LAorICAgICBURVhUID0gMjc3LAorICAgICBYUEFUSF9FUlJPUiA9IDI3OAorICAgfTsKKyNl
bmRpZgorLyogVG9rZW5zLiAgKi8KKyNkZWZpbmUgTVVMT1AgMjU4CisjZGVmaW5lIFJFTE9QIDI1
OQorI2RlZmluZSBFUU9QIDI2MAorI2RlZmluZSBNSU5VUyAyNjEKKyNkZWZpbmUgUExVUyAyNjIK
KyNkZWZpbmUgQU5EIDI2MworI2RlZmluZSBPUiAyNjQKKyNkZWZpbmUgRlVOQ1RJT05OQU1FIDI2
NQorI2RlZmluZSBMSVRFUkFMIDI2NgorI2RlZmluZSBOQU1FVEVTVCAyNjcKKyNkZWZpbmUgTlVN
QkVSIDI2OAorI2RlZmluZSBOT0RFVFlQRSAyNjkKKyNkZWZpbmUgVkFSSUFCTEVSRUZFUkVOQ0Ug
MjcwCisjZGVmaW5lIEFYSVNOQU1FIDI3MQorI2RlZmluZSBDT01NRU5UIDI3MgorI2RlZmluZSBE
T1RET1QgMjczCisjZGVmaW5lIFBJIDI3NAorI2RlZmluZSBOT0RFIDI3NQorI2RlZmluZSBTTEFT
SFNMQVNIIDI3NgorI2RlZmluZSBURVhUIDI3NworI2RlZmluZSBYUEFUSF9FUlJPUiAyNzgKKwor
CisKKworI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xB
UkVECit0eXBlZGVmIHVuaW9uIFlZU1RZUEUKKyNsaW5lIDYwICJXZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueSIKK3sgCisgICAgTnVtZXJpY09wOjpPcGNvZGUgbnVtZXJpY09wY29kZTsgCisgICAg
RXFUZXN0T3A6Ok9wY29kZSBlcXVhbGl0eVRlc3RPcGNvZGU7CisgICAgU3RyaW5nSW1wbCogc3Ry
aW5nOworICAgIFN0ZXA6OkF4aXMgYXhpczsKKyAgICBMb2NhdGlvblBhdGgqIGxvY2F0aW9uUGF0
aDsKKyAgICBTdGVwOjpOb2RlVGVzdCogbm9kZVRlc3Q7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPj4qIGV4cHJlc3Npb25WZWN0b3I7CisgICAgU3RlcCogc3RlcDsKKyAg
ICBFeHByZXNzaW9uKiBleHByZXNzaW9uOyAKK30KKy8qIExpbmUgMTUyOSBvZiB5YWNjLmMuICAq
LworI2xpbmUgMTA3ICIuL1hQYXRoR3JhbW1hci5ocHAiCisJWVlTVFlQRTsKKyMgZGVmaW5lIHl5
c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVm
aW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQorIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEK
KyNlbmRpZgorCisKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9uLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9XZWJLaXRDb21tb24uY21ha2UJKHJldmlz
aW9uIDIwOTg2OSkKKysrIFNvdXJjZS9jbWFrZS9XZWJLaXRDb21tb24uY21ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTEzLDExICsxMyw2IEBAIGlmIChOT1QgSEFTX1JVTl9XRUJLSVRfQ09NTU9OKQog
ICAgICAgICBsaXN0KEFQUEVORCBDTUFLRV9QUk9HUkFNX1BBVEggJEVOVntTeXN0ZW1Ecml2ZX0v
Y3lnd2luL2JpbikKICAgICBlbmRpZiAoKQogCi0gICAgZmluZF9wYWNrYWdlKEJJU09OIDIuMSBS
RVFVSVJFRCkKLSAgICBpZiAoIUFQUExFKQotICAgICAgICBmaW5kX3BhY2thZ2UoRkxFWCAyLjUu
MzQgUkVRVUlSRUQpCi0gICAgZW5kaWYgKCkKLQogICAgICMgVE9ETyBFbmZvcmNlIHZlcnNpb24g
cmVxdWlyZW1lbnQgZm9yIGdwZXJmCiAgICAgZmluZF9wYWNrYWdlKEdwZXJmIDMuMC4xIFJFUVVJ
UkVEKQogCkluZGV4OiBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UJKHJldmlzaW9uIDIwOTg2OSkKKysr
IFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI0Mywy
MSArMjQzLDYgQEAgbWFjcm8oR0VORVJBVEVfRE9NX05BTUVTIF9uYW1lc3BhY2UgX2F0dAogICAg
ICAgICBWRVJCQVRJTSkKIGVuZG1hY3JvKCkKIAotCi1tYWNybyhHRU5FUkFURV9HUkFNTUFSIF9w
cmVmaXggX2lucHV0IF9vdXRwdXRfaGVhZGVyIF9vdXRwdXRfc291cmNlIF9mZWF0dXJlcykKLSAg
ICAjIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB3aW5mbGV4Ymlzb24sIHdoaWNoIGRvZXMgbm90
IHdvcmsgY29ycmV0bHkgd2hlbgotICAgICMgcnVuIGluIGEgZGlmZmVyZW50IHdvcmtpbmcgZGly
ZWN0b3J5IHRoYW4gdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0gICAgZ2V0X2ZpbGVuYW1l
X2NvbXBvbmVudChfd29ya2luZ19kaXJlY3RvcnkgJHtCSVNPTl9FWEVDVVRBQkxFfSBQQVRIKQot
Ci0gICAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICBPVVRQVVQgJHtfb3V0cHV0X2hlYWRl
cn0gJHtfb3V0cHV0X3NvdXJjZX0KLSAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7X2lucHV0fQot
ICAgICAgICBERVBFTkRTICR7X2lucHV0fQotICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRB
QkxFfSAke1dFQkNPUkVfRElSfS9jc3MvbWFrZWdyYW1tYXIucGwgLS1vdXRwdXREaXIgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IC0tZXh0cmFEZWZpbmVzICIke19mZWF0dXJlc30iIC0t
cHJlcHJvY2Vzc29yICIke0NPREVfR0VORVJBVE9SX1BSRVBST0NFU1NPUn0iIC0tYmlzb24gIiR7
QklTT05fRVhFQ1VUQUJMRX0iIC0tc3ltYm9sc1ByZWZpeCAke19wcmVmaXh9ICR7X2lucHV0fQot
ICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke193b3JraW5nX2RpcmVjdG9yeX0KLSAgICAgICAg
VkVSQkFUSU0pCi1lbmRtYWNybygpCi0KIG1hY3JvKE1BS0VfSEFTSF9UT09MUyBfc291cmNlKQog
ICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX25hbWUgJHtfc291cmNlfSBOQU1FX1dFKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297221</attachid>
            <date>2016-12-15 14:12:35 -0800</date>
            <delta_ts>2016-12-15 15:13:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165783-20161215141143.patch</filename>
            <type>text/plain</type>
            <size>90461</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTg2
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEy
LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGZsZXggYW5kIGJpc29uIGJ1aWxkIGRlcGVuZGVuY2llczsgY29tbWl0IGdlbmVy
YXRlZCBYUGF0aCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NTc4MworCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9uLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2U6CisKIDIwMTYtMTItMTAgIEtvbnN0YW50aW4g
VG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIFtjbWFrZV0gSW5jbHVkZSBX
VEYsIEpTQywgYW5kIFdlYkNvcmUgaGVhZGVycyBhdXRvbWF0aWNhbGx5IHRvIHRhcmdlcnMgdXNp
bmcgdGhlbQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5ODY5KQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMTItMTUg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW1vdmUgZmxleCBhbmQgYmlzb24gYnVpbGQgZGVwZW5kZW5jaWVzOyBjb21taXQgZ2VuZXJhdGVk
IFhQYXRoIHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY1NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAg
ICAgICBmbGV4IGFuZCBiaXNvbiBhcmUgYW5ub3lpbmcgdG8gaW5zdGFsbCBhbmQgdXNlLCBlc3Bl
Y2lhbGx5IG9uIFdpbmRvd3MuCisgICAgICAgIFNpbmNlIG9ubHkgWFBhdGhHcmFtbWFyIHVzZXMg
dGhlbSBhbmQgdGhhdCdzIG5vdCBhY3RpdmVseSBkZXZlbG9wZWQsIGxldCdzIGp1c3QgY2hlY2sg
aW4gdGhlIG9uZSBnZW5lcmF0ZWQgZmlsZQorICAgICAgICBhbmQgbWFrZSBidWlsZGluZyBXZWJL
aXQgZWFzaWVyIGZvcmV2ZXIhCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvbWFrZWdyYW1tYXIucGw6IFJlbW92ZWQuCisgICAg
ICAgICogeG1sL1hQYXRoR3JhbW1hci5jcHA6IEFkZGVkLgorICAgICAgICAoeHBhdGh5eWxleCk6
CisgICAgICAgICh4cGF0aHl5ZXJyb3IpOgorICAgICAgICAoeXlzeW50YXhfZXJyb3IpOgorICAg
ICAgICAqIHhtbC9YUGF0aEdyYW1tYXIuaDogQWRkZWQuCisKIDIwMTYtMTItMTUgIFJ5YW4gSGFk
ZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBiaW5kaW5n
cyB0ZXN0cyBhZnRlciByMjA5ODY0LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDIwOTg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0yODczLDYgKzI4NzMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgeG1sL1hQYXRo
RXhwcmVzc2lvbi5jcHAKICAgICB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAKICAgICB4bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCisgICAgeG1sL1hQYXRoR3JhbW1hci5jcHAKICAgICB4bWwvWFBh
dGhOU1Jlc29sdmVyLmNwcAogICAgIHhtbC9YUGF0aE5vZGVTZXQuY3BwCiAgICAgeG1sL1hQYXRo
UGFyc2VyLmNwcApAQCAtMzY3NSw5ICszNjc2LDYgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogbGlz
dChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJ
VkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgUGx1
Z0luc1Jlc291cmNlc0RhdGEuY3BwIFBsdWdJbnNSZXNvdXJjZXMuaCkKIAotR0VORVJBVEVfR1JB
TU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9L3htbC9YUGF0aEdyYW1tYXIueSAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAgIiIpCi1saXN0KEFQUEVORCBXZWJDb3JlX0RFUklW
RURfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmNw
cCkKLQogc2V0KEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICJMQU5HVUFHRV9KQVZBU0NSSVBU
ICR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIpCiBsaXN0KEFQUEVORCBX
ZWJDb3JlVGVzdFN1cHBvcnRfSURMX0ZJTEVTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbCkKIApJbmRleDogU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCShyZXZpc2lvbiAyMDk4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC05MDksNyArOTA5LDYgQEAgYWxsIDogXAog
ICAgIE1hdGhNTEVsZW1lbnRUeXBlSGVscGVycy5oIFwKICAgICBNYXRoTUxOYW1lcy5jcHAgXAog
ICAgIE1hdGhNTE5hbWVzLmggXAotICAgIFhQYXRoR3JhbW1hci5jcHAgXAogIwogCiAjIC0tLS0t
LS0tCkBAIC0xMDIyLDIyICsxMDIxLDYgQEAgQ29sb3JEYXRhLmNwcCA6IHBsYXRmb3JtL0NvbG9y
RGF0YS5ncGVyZgogCiAjIC0tLS0tLS0tCiAKLSMgUGF0aCB0byBiaXNvbgotCi1pZmVxICgkKE9T
KSxNQUNPUykKLUJJU09OPSQoc2hlbGwgeGNydW4gLWZpbmQgYmlzb24pCi1lbHNlCi1CSVNPTj1i
aXNvbgotZW5kaWYKLQotIyAtLS0tLS0tLQotCi0jIFhQYXRoIGdyYW1tYXIKLVhQYXRoR3JhbW1h
ci5jcHAgOiB4bWwvWFBhdGhHcmFtbWFyLnkgJChQUk9KRUNUX0ZJTEUpCi0JJChQRVJMKSAkKFdl
YkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAtLW91dHB1dERpciAuIC0tYmlzb24gIiQoQklTT04p
IiAtLXN5bWJvbHNQcmVmaXggeHBhdGh5eSAkPAotCi0jIC0tLS0tLS0tCi0KICMgV2ViUlRDIHNj
cmlwdHMKIAogV0VCQ09SRV9TRFBfUFJPQ0VTU09SX1NDUklQVFMgPSAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwOTg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzcxLDggKzc3MSw2IEBACiAJCTFBNzUwRDhEMEE5MEU1
MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc1MEQ4QjBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2Rl
SXRlcmF0b3IuY3BwICovOyB9OwogCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2Rl
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNzUwRDhDMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNzUwREQ0MEE5MEU3Mjkw
MDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc1MEREMzBBOTBFNzI5MDAwRkYyMTUgLyogSlNO
b2RlSXRlcmF0b3JDdXN0b20uY3BwICovOyB9OwotCQkxQTc2MjlENTBBMDc0MjUxMDA5ODlGNUIg
LyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNzYyOUQzMEEwNzQyNTEwMDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuY3BwICov
OyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVucmVhY2hhYmxlLWNvZGUiOyB9
OyB9OwotCQkxQTc2MjlENjBBMDc0MjUxMDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc2MjlENDBBMDc0MjUx
MDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmggKi87IH07CiAJCTFBNzYyQzczMEEwNzRGMjYwMDk4
OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNzYyQzZCMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZh
bHVhdG9yLmNwcCAqLzsgfTsKIAkJMUE3NjJDNzQwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhF
dmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNzYyQzZDMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmggKi87IH07CiAJ
CTFBNzYyQzc1MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc2MkM2RDBBMDc0RjI2
MDA5ODlGNUIgLyogSlNYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtMjQ0Nyw2ICsyNDQ1
LDcgQEAKIAkJNUM5QTdBNzUxQUEwRjZFQTAwOTU4QUNGIC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzOTMw
NUUxQUEwRjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwICovOyB9OwogCQk1
QzlBN0E3NjFBQTBGNkVEMDA5NThBQ0YgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzM5MzA2MDFBQTBG
NkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAgKi87IH07CiAJCTVDOUI4
NjBDMUMyMUUzQzkwMDExMEYzNiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUI4NjBCMUMyMUUzQzYwMDExMEYz
NiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSAqLzsgfTsKKwkJNUM5RUYxNzExREZGNzFDQzAwQTQ1
MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzlFRjE2RjFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNw
cCAqLzsgfTsKIAkJNUNCMzdGRkUxQzYyRDI4QzAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9j
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Iz
N0ZGQzFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcCAqLzsgfTsKIAkJ
NUNCMzdGRkYxQzYyRDJBMTAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMzdGRkQxQzYyRDI3ODAw
RjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oICovOyB9OwogCQk1Q0JDOERBQzFBQUEzMDIy
MDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUExQUFBMzAyMjAwRTFDODAz
IC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcCAqLzsgfTsKQEAgLTc3ODQsOCArNzc4
Myw2IEBACiAJCTFBNzUwRDhCMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlSXRlcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc1MEQ4QzBBOTBFNTIxMDAwRkYyMTUg
LyogSlNOb2RlSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Tm9kZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzUwREQzMEE5
MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNzYyOUQzMEEwNzQyNTEwMDk4OUY1QiAvKiBYUGF0aEdy
YW1tYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhQYXRoR3Jh
bW1hci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNzYyOUQ0MEEwNzQyNTEw
MDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhQYXRoR3JhbW1hci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc2MkM2
QjBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV2YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBNzYyQzZDMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZh
bHVhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hQYXRoRXZhbHVh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzYyQzZEMEEwNzRGMjYwMDk4
OUY1QiAvKiBKU1hQYXRoRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNYUGF0aEV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTY5NSw2ICs5NjkyLDggQEAKIAkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8q
IFVSTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZE
IC8qIFNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
Y2tldFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUI4NjBCMUMy
MUUzQzYwMDExMEYzNiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkVGltaW5nLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzlFRjE2RjFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhQYXRoR3JhbW1hci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOUVGMTcwMURGRjcxOTkwMEE0NTJF
MyAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBh
dGhHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjM3RkZDMUM2MkQy
NzgwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkQxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9y
TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvck1v
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzhEQUExQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTM1LDggKzE3NTM0LDYgQEAKIAkJCQlBODMzQzgw
QjBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCAqLywKIAkJCQlFMTVBMzZEODExMDQ1NzI3
MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgKi8sCiAJCQkJRTE1QTM2RDYxMTA0NTcyMDAwQjdC
NjM5IC8qIFhNTE5TTmFtZXMuaCAqLywKLQkJCQkxQTc2MjlEMzBBMDc0MjUxMDA5ODlGNUIgLyog
WFBhdGhHcmFtbWFyLmNwcCAqLywKLQkJCQkxQTc2MjlENDBBMDc0MjUxMDA5ODlGNUIgLyogWFBh
dGhHcmFtbWFyLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJ
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmU7CkBAIC0yMzA2Myw2ICsyMzA2MCw4IEBACiAJ
CQkJMUFCN0ZDNEUwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbk5vZGUuaCAqLywK
IAkJCQkxQUI3RkM0RjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhGdW5jdGlvbnMuY3BwICovLAog
CQkJCTFBQjdGQzUwMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEZ1bmN0aW9ucy5oICovLAorCQkJ
CTVDOUVGMTZGMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwICovLAorCQkJCTVD
OUVGMTcwMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuaCAqLywKIAkJCQkxQUI3RkM1
MTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhHcmFtbWFyLnkgKi8sCiAJCQkJRTFFQzI5OUQwQkIw
NEM2QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5jcHAgKi8sCiAJCQkJRTFFQzI5OUUwQkIwNEM2
QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5oICovLApAQCAtMjgyNzMsNyArMjgyNzIsNiBAQAog
CQkJCTFBQjdGQzZDMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQjdGQzZGMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb25O
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM3MTBBOEI5MkVDMDBEOUQzN0IgLyogWFBh
dGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNzYyOUQ2MEEwNzQyNTEwMDk4OUY1
QiAvKiBYUGF0aEdyYW1tYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUMyOUEwMEJCMDRDNkIw
MEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzc2MEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QjdGQzc5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMDQyMiw2ICszMDQyMCw3IEBACiAJCQkJMEYzNkU3MzkxQkQxODRCOTAwMkRCODkxIC8qIExh
eW91dFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4
IC8qIExheW91dFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzNCMUZDMEYwRTQxNzAw
MDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QzlFRjE3
MTFERkY3MUNDMDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0QjY1QTVBMTMyRkFBRjkwMDcwRTdCRSAvKiBMZWdhY3lUaWxlR3JpZC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUU0MjRBM0EwMTMzMERGMUUwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlFNEI2NUE1RTEzMkZBREI2MDA3MEU3QkUgLyogTGVnYWN5
VGlsZUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTczOCw3ICszMTczNyw2IEBACiAJCQkJ
MUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RkM2RTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM3MDBBOEI5MkVDMDBEOUQzN0IgLyogWFBh
dGhGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUE3NjI5RDUwQTA3NDI1MTAwOTg5
RjVCIC8qIFhQYXRoR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVDMjk5RjBCQjA0
QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdG
Qzc1MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFCN0ZDNzgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAkocmV2aXNpb24gMjA5ODY5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCShub25leGlzdGVudCkKQEAg
LTEsOTkgKzAsMCBAQAotIyEgL3Vzci9iaW4vcGVybAotIwotIyAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgcHJvamVjdAotIwotIyAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSMKLSMgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSMgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSMgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotIwotIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIyAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0jICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi11c2Ugc3RyaWN0OwotdXNl
IHdhcm5pbmdzOwotdXNlIEZpbmRCaW47Ci11c2UgbGliICIkRmluZEJpbjo6QmluLy4uL2JpbmRp
bmdzL3NjcmlwdHMiOwotCi11c2UgRmlsZTo6QmFzZW5hbWU7Ci11c2UgRmlsZTo6U3BlYzsKLXVz
ZSBHZXRvcHQ6Okxvbmc7Ci0KLW15ICRvdXRwdXREaXIgPSAiLiI7Ci1teSAkZXh0cmFEZWZpbmVz
ID0gIiI7Ci1teSAkc3ltYm9sc1ByZWZpeCA9ICIiOwotbXkgJHByZXByb2Nlc3NvciA9ICIiOwot
bXkgJHByZXByb2Nlc3NPbmx5ID0gMDsKLW15ICRiaXNvbiA9ICJiaXNvbiI7Ci0KLUdldE9wdGlv
bnMoCi0gICAgJ291dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKLSAgICAnZXh0cmFEZWZpbmVz
PXMnID0+IFwkZXh0cmFEZWZpbmVzLAotICAgICdiaXNvbj1zJyA9PiBcJGJpc29uLAotICAgICdw
cmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCi0gICAgJ3ByZXByb2Nlc3NPbmx5JyA9
PiBcJHByZXByb2Nlc3NPbmx5LAotICAgICdzeW1ib2xzUHJlZml4PXMnID0+IFwkc3ltYm9sc1By
ZWZpeAotKTsKLQotbXkgJGdyYW1tYXJGaWxlUGF0aCA9ICRBUkdWWzBdOwotbXkgJGdyYW1tYXJJ
bmNsdWRlc0ZpbGVQYXRoID0gQEFSR1YgPiAwID8gJEFSR1ZbMV0gOiAiIjsKLQotaWYgKCFsZW5n
dGgoJHN5bWJvbHNQcmVmaXgpICYmICEkcHJlcHJvY2Vzc09ubHkpIHsKLSAgICBkaWUgIk5lZWQg
YSBzeW1ib2xzIHByZWZpeCB0byBnaXZlIHRvIGJpc29uIChlLmcuIGNzc3l5LCB4cGF0aHl5KSI7
Ci19Ci0KLW15ICgkZmlsZW5hbWUsICRiYXNlUGF0aCwgJHN1ZmZpeCkgPSBmaWxlcGFyc2UoJGdy
YW1tYXJGaWxlUGF0aCwgKCIueSIsICIueS5pbiIpKTsKLQotaWYgKCRzdWZmaXggZXEgIi55Lmlu
IikgewotICAgIG15ICRncmFtbWFyRmlsZU91dFBhdGggPSBGaWxlOjpTcGVjLT5qb2luKCRvdXRw
dXREaXIsICIkZmlsZW5hbWUueSIpOwotICAgIGlmICghJGdyYW1tYXJJbmNsdWRlc0ZpbGVQYXRo
KSB7Ci0gICAgICAgICRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCA9ICIke2Jhc2VQYXRofSR7Zmls
ZW5hbWV9LnkuaW5jbHVkZXMiOwotICAgIH0KLQotICAgIG9wZW4gR1JBTU1BUiwgIj4kZ3JhbW1h
ckZpbGVPdXRQYXRoIiBvciBkaWU7Ci0gICAgb3BlbiBJTkNMVURFUywgIjwkZ3JhbW1hckluY2x1
ZGVzRmlsZVBhdGgiIG9yIGRpZTsKLQotICAgIHJlcXVpcmUgcHJlcHJvY2Vzc29yOwotCi0gICAg
d2hpbGUgKDxJTkNMVURFUz4pIHsKLSAgICAgICAgcHJpbnQgR1JBTU1BUjsKLSAgICB9Ci0gICAg
cHJpbnQgR1JBTU1BUiBqb2luKCIiLCBhcHBseVByZXByb2Nlc3NvcigkZ3JhbW1hckZpbGVQYXRo
LCAkZXh0cmFEZWZpbmVzLCAkcHJlcHJvY2Vzc29yKSk7Ci0gICAgY2xvc2UgR1JBTU1BUjsKLQot
ICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3JhbW1hckZpbGVPdXRQYXRoOwotCi0gICAgZXhpdCBp
ZiAkcHJlcHJvY2Vzc09ubHk7Ci19Ci0KLW15ICRmaWxlQmFzZSA9IEZpbGU6OlNwZWMtPmpvaW4o
JG91dHB1dERpciwgJGZpbGVuYW1lKTsKLW15IEBiaXNvbkNvbW1hbmQgPSAoJGJpc29uLCAiLWQi
LCAiLXAiLCAkc3ltYm9sc1ByZWZpeCwgJGdyYW1tYXJGaWxlUGF0aCwgIi1vIiwgIiRmaWxlQmFz
ZS5jcHAiKTsKLXB1c2ggQGJpc29uQ29tbWFuZCwgIi0tbm8tbGluZXMiIGlmICReTyBlcSAiTVNX
aW4zMiI7ICMgV29yayBhcm91bmQgYnVnIGluIGJpc29uID49IDMuMCBvbiBXaW5kb3dzIHdoZXJl
IGl0IHB1dHMgYmFja3NsYXNoZXMgaW50byAjbGluZSBkaXJlY3RpdmVzLgotc3lzdGVtKEBiaXNv
bkNvbW1hbmQpID09IDAgb3IgZGllOwotCi1vcGVuIEhFQURFUiwgIj4kZmlsZUJhc2UuaCIgb3Ig
ZGllOwotcHJpbnQgSEVBREVSIDw8ICJFT0YiOwotI2lmbmRlZiBDU1NHUkFNTUFSX0gKLSNkZWZp
bmUgQ1NTR1JBTU1BUl9ICi1FT0YKLQotb3BlbiBIUFAsICI8JGZpbGVCYXNlLmNwcC5oIiBvciBv
cGVuIEhQUCwgIjwkZmlsZUJhc2UuaHBwIiBvciBkaWU7Ci13aGlsZSAoPEhQUD4pIHsKLSAgICBw
cmludCBIRUFERVI7Ci19Ci1jbG9zZSBIUFA7Ci0KLXByaW50IEhFQURFUiAiI2VuZGlmXG4iOwot
Y2xvc2UgSEVBREVSOwotCi11bmxpbmsoIiRmaWxlQmFzZS5jcHAuaCIpOwotdW5saW5rKCIkZmls
ZUJhc2UuaHBwIik7Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjI4MCBAQAorLyogVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB1c2lu
ZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICBiaXNvbiAtZCAtcCB4cGF0aHl5IFhQYXRoR3Jh
bW1hci55IC1vIFhQYXRoR3JhbW1hci5jcHAgCisgKi8KKworLyogQSBCaXNvbiBwYXJzZXIsIG1h
ZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisKKy8qIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZv
ciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKworICAgQ29weXJpZ2h0IChDKSAxOTg0
LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Cisg
ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv
biAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0
ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKKyAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNv
biBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCisgICB1bmRlciB0ZXJt
cyBvZiB5b3VyIGNob2ljZSwgc28gbG9uZyBhcyB0aGF0IHdvcmsgaXNuJ3QgaXRzZWxmIGEKKyAg
IHBhcnNlciBnZW5lcmF0b3IgdXNpbmcgdGhlIHNrZWxldG9uIG9yIGEgbW9kaWZpZWQgdmVyc2lv
biB0aGVyZW9mCisgICBhcyBhIHBhcnNlciBza2VsZXRvbi4gIEFsdGVybmF0aXZlbHksIGlmIHlv
dSBtb2RpZnkgb3IgcmVkaXN0cmlidXRlCisgICB0aGUgcGFyc2VyIHNrZWxldG9uIGl0c2VsZiwg
eW91IG1heSAoYXQgeW91ciBvcHRpb24pIHJlbW92ZSB0aGlzCisgICBzcGVjaWFsIGV4Y2VwdGlv
biwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKKyAgIEJp
c29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVi
bGljCisgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KKworICAgVGhp
cyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiBpbgorICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLworCisvKiBDIExBTFIoMSkgcGFy
c2VyIHNrZWxldG9uIHdyaXR0ZW4gYnkgUmljaGFyZCBTdGFsbG1hbiwgYnkKKyAgIHNpbXBsaWZ5
aW5nIHRoZSBvcmlnaW5hbCBzby1jYWxsZWQgInNlbWFudGljIiBwYXJzZXIuICAqLworCisvKiBB
bGwgc3ltYm9scyBkZWZpbmVkIGJlbG93IHNob3VsZCBiZWdpbiB3aXRoIHl5IG9yIFlZLCB0byBh
dm9pZAorICAgaW5mcmluZ2luZyBvbiB1c2VyIG5hbWUgc3BhY2UuICBUaGlzIHNob3VsZCBiZSBk
b25lIGV2ZW4gZm9yIGxvY2FsCisgICB2YXJpYWJsZXMsIGFzIHRoZXkgbWlnaHQgb3RoZXJ3aXNl
IGJlIGV4cGFuZGVkIGJ5IHVzZXIgbWFjcm9zLgorICAgVGhlcmUgYXJlIHNvbWUgdW5hdm9pZGFi
bGUgZXhjZXB0aW9ucyB3aXRoaW4gaW5jbHVkZSBmaWxlcyB0bworICAgZGVmaW5lIG5lY2Vzc2Fy
eSBsaWJyYXJ5IHN5bWJvbHM7IHRoZXkgYXJlIG5vdGVkICJJTkZSSU5HRVMgT04KKyAgIFVTRVIg
TkFNRSBTUEFDRSIgYmVsb3cuICAqLworCisvKiBJZGVudGlmeSBCaXNvbiBvdXRwdXQuICAqLwor
I2RlZmluZSBZWUJJU09OIDEKKworLyogQmlzb24gdmVyc2lvbi4gICovCisjZGVmaW5lIFlZQklT
T05fVkVSU0lPTiAiMi4zIgorCisvKiBTa2VsZXRvbiBuYW1lLiAgKi8KKyNkZWZpbmUgWVlTS0VM
RVRPTl9OQU1FICJ5YWNjLmMiCisKKy8qIFB1cmUgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVS
RSAxCisKKy8qIFVzaW5nIGxvY2F0aW9ucy4gICovCisjZGVmaW5lIFlZTFNQX05FRURFRCAwCisK
Ky8qIFN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4gICovCisjZGVm
aW5lIHl5cGFyc2UgeHBhdGh5eXBhcnNlCisjZGVmaW5lIHl5bGV4ICAgeHBhdGh5eWxleAorI2Rl
ZmluZSB5eWVycm9yIHhwYXRoeXllcnJvcgorI2RlZmluZSB5eWx2YWwgIHhwYXRoeXlsdmFsCisj
ZGVmaW5lIHl5Y2hhciAgeHBhdGh5eWNoYXIKKyNkZWZpbmUgeXlkZWJ1ZyB4cGF0aHl5ZGVidWcK
KyNkZWZpbmUgeXluZXJycyB4cGF0aHl5bmVycnMKKworCisvKiBUb2tlbnMuICAqLworI2lmbmRl
ZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tFTlRZUEUKKyAgIC8qIFB1dCB0aGUgdG9rZW5z
IGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2Vycwor
ICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KKyAgIGVudW0geXl0b2tlbnR5cGUgeworICAgICBN
VUxPUCA9IDI1OCwKKyAgICAgUkVMT1AgPSAyNTksCisgICAgIEVRT1AgPSAyNjAsCisgICAgIE1J
TlVTID0gMjYxLAorICAgICBQTFVTID0gMjYyLAorICAgICBBTkQgPSAyNjMsCisgICAgIE9SID0g
MjY0LAorICAgICBGVU5DVElPTk5BTUUgPSAyNjUsCisgICAgIExJVEVSQUwgPSAyNjYsCisgICAg
IE5BTUVURVNUID0gMjY3LAorICAgICBOVU1CRVIgPSAyNjgsCisgICAgIE5PREVUWVBFID0gMjY5
LAorICAgICBWQVJJQUJMRVJFRkVSRU5DRSA9IDI3MCwKKyAgICAgQVhJU05BTUUgPSAyNzEsCisg
ICAgIENPTU1FTlQgPSAyNzIsCisgICAgIERPVERPVCA9IDI3MywKKyAgICAgUEkgPSAyNzQsCisg
ICAgIE5PREUgPSAyNzUsCisgICAgIFNMQVNIU0xBU0ggPSAyNzYsCisgICAgIFRFWFQgPSAyNzcs
CisgICAgIFhQQVRIX0VSUk9SID0gMjc4CisgICB9OworI2VuZGlmCisvKiBUb2tlbnMuICAqLwor
I2RlZmluZSBNVUxPUCAyNTgKKyNkZWZpbmUgUkVMT1AgMjU5CisjZGVmaW5lIEVRT1AgMjYwCisj
ZGVmaW5lIE1JTlVTIDI2MQorI2RlZmluZSBQTFVTIDI2MgorI2RlZmluZSBBTkQgMjYzCisjZGVm
aW5lIE9SIDI2NAorI2RlZmluZSBGVU5DVElPTk5BTUUgMjY1CisjZGVmaW5lIExJVEVSQUwgMjY2
CisjZGVmaW5lIE5BTUVURVNUIDI2NworI2RlZmluZSBOVU1CRVIgMjY4CisjZGVmaW5lIE5PREVU
WVBFIDI2OQorI2RlZmluZSBWQVJJQUJMRVJFRkVSRU5DRSAyNzAKKyNkZWZpbmUgQVhJU05BTUUg
MjcxCisjZGVmaW5lIENPTU1FTlQgMjcyCisjZGVmaW5lIERPVERPVCAyNzMKKyNkZWZpbmUgUEkg
Mjc0CisjZGVmaW5lIE5PREUgMjc1CisjZGVmaW5lIFNMQVNIU0xBU0ggMjc2CisKKworCisKKy8q
IENvcHkgdGhlIGZpcnN0IHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLworI2xpbmUgMjgg
IldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIlhQYXRoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiWFBhdGhQYXJzZXIuaCIKKyNp
bmNsdWRlICJYUGF0aFBhdGguaCIKKyNpbmNsdWRlICJYUGF0aFN0ZXAuaCIKKyNpbmNsdWRlICJY
UGF0aFZhcmlhYmxlUmVmZXJlbmNlLmgiCisKKyNpZiBDT01QSUxFUihNU1ZDKQorI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6IDQwMDUpCisjZW5kaWYKKyNkZWZpbmUgVEVYVCAyNzcKKyNkZWZpbmUg
WFBBVEhfRVJST1IgMjc4CisKKworI2lmIENPTVBJTEVSKE1TVkMpCisvLyBTZWUgaHR0cHM6Ly9t
c2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS8xd2VhNXp3ZS5hc3B4CisjcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTogNDcwMSkKKyNlbmRpZgorCisjZGVmaW5lIFlZTUFMTE9DIGZhc3RNYWxs
b2MKKyNkZWZpbmUgWVlGUkVFIGZhc3RGcmVlCisKKyNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKKyNk
ZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNkZWZpbmUgWVlERUJVRyAwCisjZGVmaW5lIFlZ
TUFYREVQVEggMTAwMDAKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3Bh
Y2UgWFBhdGg7CisKKworCisvKiBFbmFibGluZyB0cmFjZXMuICAqLworI2lmbmRlZiBZWURFQlVH
CisjIGRlZmluZSBZWURFQlVHIDAKKyNlbmRpZgorCisvKiBFbmFibGluZyB2ZXJib3NlIGVycm9y
IG1lc3NhZ2VzLiAgKi8KKyNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKKyMgdW5kZWYgWVlFUlJPUl9W
RVJCT1NFCisjIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMQorI2Vsc2UKKyMgZGVmaW5lIFlZRVJS
T1JfVkVSQk9TRSAwCisjZW5kaWYKKworLyogRW5hYmxpbmcgdGhlIHRva2VuIHRhYmxlLiAgKi8K
KyNpZm5kZWYgWVlUT0tFTl9UQUJMRQorIyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCisjZW5kaWYK
KworI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVE
Cit0eXBlZGVmIHVuaW9uIFlZU1RZUEUKKyNsaW5lIDYwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1t
YXIueSIKK3sgCisgICAgTnVtZXJpY09wOjpPcGNvZGUgbnVtZXJpY09wY29kZTsgCisgICAgRXFU
ZXN0T3A6Ok9wY29kZSBlcXVhbGl0eVRlc3RPcGNvZGU7CisgICAgU3RyaW5nSW1wbCogc3RyaW5n
OworICAgIFN0ZXA6OkF4aXMgYXhpczsKKyAgICBMb2NhdGlvblBhdGgqIGxvY2F0aW9uUGF0aDsK
KyAgICBTdGVwOjpOb2RlVGVzdCogbm9kZVRlc3Q7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPj4qIGV4cHJlc3Npb25WZWN0b3I7CisgICAgU3RlcCogc3RlcDsKKyAgICBF
eHByZXNzaW9uKiBleHByZXNzaW9uOyAKK30KKy8qIExpbmUgMTkzIG9mIHlhY2MuYy4gICovCisj
bGluZSAxOTAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlZWVNUWVBFOworIyBkZWZpbmUgeXlzdHlw
ZSBZWVNUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLworIyBkZWZpbmUg
WVlTVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQorI2Vu
ZGlmCisKKworCisvKiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4g
ICovCisjbGluZSAxMDQgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCisKK3N0YXRpYyBp
bnQgeHBhdGh5eWxleChZWVNUWVBFKiB5eWx2YWwsIFBhcnNlciYgcGFyc2VyKSB7IHJldHVybiBw
YXJzZXIubGV4KCp5eWx2YWwpOyB9CitzdGF0aWMgdm9pZCB4cGF0aHl5ZXJyb3IoUGFyc2VyJiwg
Y29uc3QgY2hhciopIHsgfQorCisKKworLyogTGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KKyNsaW5l
IDIwOSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCisjaWZkZWYgc2hvcnQKKyMgdW5kZWYgc2hvcnQK
KyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX1VJTlQ4Cit0eXBlZGVmIFlZVFlQRV9VSU5UOCB5eXR5
cGVfdWludDg7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHl5dHlwZV91aW50ODsKKyNl
bmRpZgorCisjaWZkZWYgWVlUWVBFX0lOVDgKK3R5cGVkZWYgWVlUWVBFX0lOVDggeXl0eXBlX2lu
dDg7CisjZWxpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAor
ICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCit0eXBlZGVm
IHNpZ25lZCBjaGFyIHl5dHlwZV9pbnQ4OworI2Vsc2UKK3R5cGVkZWYgc2hvcnQgaW50IHl5dHlw
ZV9pbnQ4OworI2VuZGlmCisKKyNpZmRlZiBZWVRZUEVfVUlOVDE2Cit0eXBlZGVmIFlZVFlQRV9V
SU5UMTYgeXl0eXBlX3VpbnQxNjsKKyNlbHNlCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB5
eXR5cGVfdWludDE2OworI2VuZGlmCisKKyNpZmRlZiBZWVRZUEVfSU5UMTYKK3R5cGVkZWYgWVlU
WVBFX0lOVDE2IHl5dHlwZV9pbnQxNjsKKyNlbHNlCit0eXBlZGVmIHNob3J0IGludCB5eXR5cGVf
aW50MTY7CisjZW5kaWYKKworI2lmbmRlZiBZWVNJWkVfVAorIyBpZmRlZiBfX1NJWkVfVFlQRV9f
CisjICBkZWZpbmUgWVlTSVpFX1QgX19TSVpFX1RZUEVfXworIyBlbGlmIGRlZmluZWQgc2l6ZV90
CisjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90CisjIGVsaWYgISBkZWZpbmVkIFlZU0laRV9UICYm
IChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRl
ZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKKyMgIGluY2x1ZGUgPHN0ZGRl
Zi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICBkZWZpbmUgWVlTSVpF
X1Qgc2l6ZV90CisjIGVsc2UKKyMgIGRlZmluZSBZWVNJWkVfVCB1bnNpZ25lZCBpbnQKKyMgZW5k
aWYKKyNlbmRpZgorCisjZGVmaW5lIFlZU0laRV9NQVhJTVVNICgoWVlTSVpFX1QpIC0xKQorCisj
aWZuZGVmIFlZXworIyBpZiBkZWZpbmVkIFlZRU5BQkxFX05MUyAmJiBZWUVOQUJMRV9OTFMKKyMg
IGlmIEVOQUJMRV9OTFMKKyMgICBpbmNsdWRlIDxsaWJpbnRsLmg+IC8qIElORlJJTkdFUyBPTiBV
U0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBkZWZpbmUgWVlfKG1zZ2lkKSBkZ2V0dGV4dCAoImJpc29u
LXJ1bnRpbWUiLCBtc2dpZCkKKyMgIGVuZGlmCisjIGVuZGlmCisjIGlmbmRlZiBZWV8KKyMgIGRl
ZmluZSBZWV8obXNnaWQpIG1zZ2lkCisjIGVuZGlmCisjZW5kaWYKKworLyogU3VwcHJlc3MgdW51
c2VkLXZhcmlhYmxlIHdhcm5pbmdzIGJ5ICJ1c2luZyIgRS4gICovCisjaWYgISBkZWZpbmVkIGxp
bnQgfHwgZGVmaW5lZCBfX0dOVUNfXworIyBkZWZpbmUgWVlVU0UoZSkgKCh2b2lkKSAoZSkpCisj
ZWxzZQorIyBkZWZpbmUgWVlVU0UoZSkgLyogZW1wdHkgKi8KKyNlbmRpZgorCisvKiBJZGVudGl0
eSBmdW5jdGlvbiwgdXNlZCB0byBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCBjb25zdGFudCBjb25k
aXRpb25zLiAgKi8KKyNpZm5kZWYgbGludAorIyBkZWZpbmUgWVlJRChuKSAobikKKyNlbHNlCisj
aWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwg
ZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIGludAorWVlJ
RCAoaW50IGkpCisjZWxzZQorc3RhdGljIGludAorWVlJRCAoaSkKKyAgICBpbnQgaTsKKyNlbmRp
ZgoreworICByZXR1cm4gaTsKK30KKyNlbmRpZgorCisjaWYgISBkZWZpbmVkIHl5b3ZlcmZsb3cg
fHwgWVlFUlJPUl9WRVJCT1NFCisKKy8qIFRoZSBwYXJzZXIgaW52b2tlcyBhbGxvY2Egb3IgbWFs
bG9jOyBkZWZpbmUgdGhlIG5lY2Vzc2FyeSBzeW1ib2xzLiAgKi8KKworIyBpZmRlZiBZWVNUQUNL
X1VTRV9BTExPQ0EKKyMgIGlmIFlZU1RBQ0tfVVNFX0FMTE9DQQorIyAgIGlmZGVmIF9fR05VQ19f
CisjICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIF9fYnVpbHRpbl9hbGxvY2EKKyMgICBlbGlmIGRl
ZmluZWQgX19CVUlMVElOX1ZBX0FSR19JTkNSCisjICAgIGluY2x1ZGUgPGFsbG9jYS5oPiAvKiBJ
TkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICAgZWxpZiBkZWZpbmVkIF9BSVgKKyMg
ICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgX19hbGxvY2EKKyMgICBlbGlmIGRlZmluZWQgX01TQ19W
RVIKKyMgICAgaW5jbHVkZSA8bWFsbG9jLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BB
Q0UgKi8KKyMgICAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCisjICAgZWxzZQorIyAgICBkZWZpbmUg
WVlTVEFDS19BTExPQyBhbGxvY2EKKyMgICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRl
ZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZV
TkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikK
KyMgICAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNF
ICovCisjICAgICBpZm5kZWYgX1NURExJQl9ICisjICAgICAgZGVmaW5lIF9TVERMSUJfSCAxCisj
ICAgICBlbmRpZgorIyAgICBlbmRpZgorIyAgIGVuZGlmCisjICBlbmRpZgorIyBlbmRpZgorCisj
IGlmZGVmIFlZU1RBQ0tfQUxMT0MKKyAgIC8qIFBhY2lmeSBHQ0MncyBgZW1wdHkgaWYtYm9keScg
d2FybmluZy4gICovCisjICBkZWZpbmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAq
LzsgfSB3aGlsZSAoWVlJRCAoMCkpCisjICBpZm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCisg
ICAgLyogVGhlIE9TIG1pZ2h0IGd1YXJhbnRlZSBvbmx5IG9uZSBndWFyZCBwYWdlIGF0IHRoZSBi
b3R0b20gb2YgdGhlIHN0YWNrLAorICAgICAgIGFuZCBhIHBhZ2Ugc2l6ZSBjYW4gYmUgYXMgc21h
bGwgYXMgNDA5NiBieXRlcy4gIFNvIHdlIGNhbm5vdCBzYWZlbHkKKyAgICAgICBpbnZva2UgYWxs
b2NhIChOKSBpZiBOIGV4Y2VlZHMgNDA5Ni4gIFVzZSBhIHNsaWdodGx5IHNtYWxsZXIgbnVtYmVy
CisgICAgICAgdG8gYWxsb3cgZm9yIGEgZmV3IGNvbXBpbGVyLWFsbG9jYXRlZCB0ZW1wb3Jhcnkg
c3RhY2sgc2xvdHMuICAqLworIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0gNDAzMiAv
KiByZWFzb25hYmxlIGNpcmNhIDIwMDYgKi8KKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBZ
WVNUQUNLX0FMTE9DIFlZTUFMTE9DCisjICBkZWZpbmUgWVlTVEFDS19GUkVFIFlZRlJFRQorIyAg
aWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQorIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01B
WElNVU0gWVlTSVpFX01BWElNVU0KKyMgIGVuZGlmCisjICBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1
cyAmJiAhIGRlZmluZWQgX1NURExJQl9IIFwKKyAgICAgICAmJiAhICgoZGVmaW5lZCBZWU1BTExP
QyB8fCBkZWZpbmVkIG1hbGxvYykgXAorCSAgICAgJiYgKGRlZmluZWQgWVlGUkVFIHx8IGRlZmlu
ZWQgZnJlZSkpKQorIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBO
QU1FIFNQQUNFICovCisjICAgaWZuZGVmIF9TVERMSUJfSAorIyAgICBkZWZpbmUgX1NURExJQl9I
IDEKKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgIGlmbmRlZiBZWU1BTExPQworIyAgIGRlZmluZSBZ
WU1BTExPQyBtYWxsb2MKKyMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBfU1RE
TElCX0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAg
ICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQordm9pZCAqbWFs
bG9jIChZWVNJWkVfVCk7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBl
bmRpZgorIyAgZW5kaWYKKyMgIGlmbmRlZiBZWUZSRUUKKyMgICBkZWZpbmUgWVlGUkVFIGZyZWUK
KyMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3ZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5G
UklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgIGVuZGlmCisjICBlbmRpZgorIyBlbmRp
ZgorI2VuZGlmIC8qICEgZGVmaW5lZCB5eW92ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRSAqLwor
CisKKyNpZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAorICAgICAmJiAoISBkZWZpbmVkIF9fY3Bs
dXNwbHVzIFwKKwkgfHwgKGRlZmluZWQgWVlTVFlQRV9JU19UUklWSUFMICYmIFlZU1RZUEVfSVNf
VFJJVklBTCkpKQorCisvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkg
c3RhY2sgbWVtYmVyLiAgKi8KK3VuaW9uIHl5YWxsb2MKK3sKKyAgeXl0eXBlX2ludDE2IHl5c3M7
CisgIFlZU1RZUEUgeXl2czsKKyAgfTsKKworLyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2Fw
IGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAgKi8KKyMgZGVmaW5lIFlZ
U1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAodW5pb24geXlhbGxvYykgLSAxKQorCisvKiBUaGUg
c2l6ZSBvZiBhbiBhcnJheSBsYXJnZSB0byBlbm91Z2ggdG8gaG9sZCBhbGwgc3RhY2tzLCBlYWNo
IHdpdGgKKyAgIE4gZWxlbWVudHMuICAqLworIyBkZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCisg
ICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBFKSkgXAor
ICAgICAgKyBZWVNUQUNLX0dBUF9NQVhJTVVNKQorCisvKiBDb3B5IENPVU5UIG9iamVjdHMgZnJv
bSBGUk9NIHRvIFRPLiAgVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZG8KKyAgIG5vdCBvdmVy
bGFwLiAgKi8KKyMgaWZuZGVmIFlZQ09QWQorIyAgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAxIDwg
X19HTlVDX18KKyMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkgXAorICAgICAgX19i
dWlsdGluX21lbWNweSAoVG8sIEZyb20sIChDb3VudCkgKiBzaXplb2YgKCooRnJvbSkpKQorIyAg
ZWxzZQorIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KQkJXAorICAgICAgZG8JCQkJ
CVwKKwl7CQkJCQlcCisJICBZWVNJWkVfVCB5eWk7CQkJCVwKKwkgIGZvciAoeXlpID0gMDsgeXlp
IDwgKENvdW50KTsgeXlpKyspCVwKKwkgICAgKFRvKVt5eWldID0gKEZyb20pW3l5aV07CQlcCisJ
fQkJCQkJXAorICAgICAgd2hpbGUgKFlZSUQgKDApKQorIyAgZW5kaWYKKyMgZW5kaWYKKworLyog
UmVsb2NhdGUgU1RBQ0sgZnJvbSBpdHMgb2xkIGxvY2F0aW9uIHRvIHRoZSBuZXcgb25lLiAgVGhl
CisgICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpFIGFuZCBZWVNUQUNLU0laRSBnaXZlIHRoZSBvbGQg
YW5kIG5ldyBudW1iZXIgb2YKKyAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdp
dmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCisgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8g
YSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAorICAgc3RhY2suICAqLwor
IyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFjaykJCQkJCVwKKyAgICBkbwkJCQkJCQkJCVwK
KyAgICAgIHsJCQkJCQkJCQlcCisJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCisJWVlDT1BZ
ICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAorCVN0YWNrID0gJnl5cHRyLT5T
dGFjazsJCQkJCQlcCisJeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2sp
ICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAorCXl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2Yg
KCp5eXB0cik7CQkJCVwKKyAgICAgIH0JCQkJCQkJCQlcCisgICAgd2hpbGUgKFlZSUQgKDApKQor
CisjZW5kaWYKKworLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9u
IHN0YXRlLiAgKi8KKyNkZWZpbmUgWVlGSU5BTCAgNTIKKy8qIFlZTEFTVCAtLSBMYXN0IGluZGV4
IGluIFlZVEFCTEUuICAqLworI2RlZmluZSBZWUxBU1QgICAxMzIKKworLyogWVlOVE9LRU5TIC0t
IE51bWJlciBvZiB0ZXJtaW5hbHMuICAqLworI2RlZmluZSBZWU5UT0tFTlMgIDMzCisvKiBZWU5O
VFMgLS0gTnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCisjZGVmaW5lIFlZTk5UUyAgMjgKKy8q
IFlZTlJVTEVTIC0tIE51bWJlciBvZiBydWxlcy4gICovCisjZGVmaW5lIFlZTlJVTEVTICA2NAor
LyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4gICovCisjZGVmaW5lIFlZTlNUQVRFUyAg
MTAxCisKKy8qIFlZVFJBTlNMQVRFKFlZTEVYKSAtLSBCaXNvbiBzeW1ib2wgbnVtYmVyIGNvcnJl
c3BvbmRpbmcgdG8gWVlMRVguICAqLworI2RlZmluZSBZWVVOREVGVE9LICAyCisjZGVmaW5lIFlZ
TUFYVVRPSyAgIDI3OAorCisjZGVmaW5lIFlZVFJBTlNMQVRFKFlZWCkJCQkJCQlcCisgICgodW5z
aWduZWQgaW50KSAoWVlYKSA8PSBZWU1BWFVUT0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRF
RlRPSykKKworLyogWVlUUkFOU0xBVEVbWVlMRVhdIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29y
cmVzcG9uZGluZyB0byBZWUxFWC4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJh
bnNsYXRlW10gPQoreworICAgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAyNiwgICAgMjcsICAgICAyLCAgICAgMiwg
ICAgMzEsICAgICAyLCAgICAzMCwgICAgMjQsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgIDI1LCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAg
ICAgIDIsICAgIDI4LCAgICAgMiwgICAgMjksICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgIDMyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
CisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwK
KyAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAyMworfTsKKworI2lmIFlZREVCVUcKKy8qIFlZUFJIU1tZ
WU5dIC0tIEluZGV4IG9mIHRoZSBmaXJzdCBSSFMgc3ltYm9sIG9mIHJ1bGUgbnVtYmVyIFlZTiBp
bgorICAgWVlSSFMuICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXByaHNbXSA9Cit7
CisgICAgICAgMCwgICAgIDAsICAgICAzLCAgICAgNSwgICAgIDcsICAgICA5LCAgICAxMSwgICAg
MTMsICAgIDE2LCAgICAxOSwKKyAgICAgIDIxLCAgICAyNSwgICAgMjksICAgIDMyLCAgICAzNSwg
ICAgMzksICAgIDQzLCAgICA0NSwgICAgNDcsICAgIDQ5LAorICAgICAgNTMsICAgIDU3LCAgICA2
MSwgICAgNjUsICAgIDcwLCAgICA3MSwgICAgNzMsICAgIDc1LCAgICA3OCwgICAgODIsCisgICAg
ICA4NCwgICAgODYsICAgIDg4LCAgICA5MCwgICAgOTQsICAgIDk2LCAgICA5OCwgICAxMDAsICAg
MTA0LCAgIDEwOSwKKyAgICAgMTExLCAgIDExNSwgICAxMTcsICAgMTE5LCAgIDEyMywgICAxMjUs
ICAgMTI3LCAgIDEzMSwgICAxMzUsICAgMTM3LAorICAgICAxNDAsICAgMTQyLCAgIDE0NiwgICAx
NDgsICAgMTUyLCAgIDE1NCwgICAxNTgsICAgMTYwLCAgIDE2NCwgICAxNjYsCisgICAgIDE3MCwg
ICAxNzQsICAgMTc2LCAgIDE4MCwgICAxODIKK307CisKKy8qIFlZUkhTIC0tIEEgYC0xJy1zZXBh
cmF0ZWQgbGlzdCBvZiB0aGUgcnVsZXMnIFJIUy4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX2lu
dDggeXlyaHNbXSA9Cit7CisgICAgICAzNCwgICAgIDAsICAgIC0xLCAgICAzNSwgICAgLTEsICAg
IDU0LCAgICAtMSwgICAgMzcsICAgIC0xLCAgICAzOCwKKyAgICAgIC0xLCAgICAyNCwgICAgLTEs
ICAgIDI0LCAgICAzOCwgICAgLTEsICAgIDQ1LCAgICAzOCwgICAgLTEsICAgIDM5LAorICAgICAg
LTEsICAgIDM4LCAgICAyNCwgICAgMzksICAgIC0xLCAgICAzOCwgICAgNDUsICAgIDM5LCAgICAt
MSwgICAgNDEsCisgICAgICA0MiwgICAgLTEsICAgIDEyLCAgICA0MiwgICAgLTEsICAgIDQwLCAg
ICA0MSwgICAgNDIsICAgIC0xLCAgICA0MCwKKyAgICAgIDEyLCAgICA0MiwgICAgLTEsICAgIDQ2
LCAgICAtMSwgICAgMTYsICAgIC0xLCAgICAyNSwgICAgLTEsICAgIDIwLAorICAgICAgMjYsICAg
IDI3LCAgICAtMSwgICAgMjIsICAgIDI2LCAgICAyNywgICAgLTEsICAgIDE3LCAgICAyNiwgICAg
MjcsCisgICAgICAtMSwgICAgMTksICAgIDI2LCAgICAyNywgICAgLTEsICAgIDE5LCAgICAyNiwg
ICAgMTEsICAgIDI3LCAgICAtMSwKKyAgICAgIC0xLCAgICA0MywgICAgLTEsICAgIDQ0LCAgICAt
MSwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgMjgsICAgIDM1LAorICAgICAgMjksICAgIC0xLCAg
ICAyMSwgICAgLTEsICAgIDMwLCAgICAtMSwgICAgMTgsICAgIC0xLCAgICAxNSwgICAgLTEsCisg
ICAgICAyNiwgICAgMzUsICAgIDI3LCAgICAtMSwgICAgMTEsICAgIC0xLCAgICAxMywgICAgLTEs
ICAgIDQ4LCAgICAtMSwKKyAgICAgIDEwLCAgICAyNiwgICAgMjcsICAgIC0xLCAgICAxMCwgICAg
MjYsICAgIDQ5LCAgICAyNywgICAgLTEsICAgIDUwLAorICAgICAgLTEsICAgIDQ5LCAgICAzMSwg
ICAgNTAsICAgIC0xLCAgICAzNSwgICAgLTEsICAgIDUyLCAgICAtMSwgICAgNTEsCisgICAgICAz
MiwgICAgNTIsICAgIC0xLCAgICAzNiwgICAgLTEsICAgIDUzLCAgICAtMSwgICAgNTMsICAgIDI0
LCAgICAzOCwKKyAgICAgIC0xLCAgICA1MywgICAgNDUsICAgIDM4LCAgICAtMSwgICAgNDcsICAg
IC0xLCAgICA0NywgICAgNDMsICAgIC0xLAorICAgICAgNTUsICAgIC0xLCAgICA1NCwgICAgIDks
ICAgIDU1LCAgICAtMSwgICAgNTYsICAgIC0xLCAgICA1NSwgICAgIDgsCisgICAgICA1NiwgICAg
LTEsICAgIDU3LCAgICAtMSwgICAgNTYsICAgICA1LCAgICA1NywgICAgLTEsICAgIDU4LCAgICAt
MSwKKyAgICAgIDU3LCAgICAgNCwgICAgNTgsICAgIC0xLCAgICA1OSwgICAgLTEsICAgIDU4LCAg
ICAgNywgICAgNTksICAgIC0xLAorICAgICAgNTgsICAgICA2LCAgICA1OSwgICAgLTEsICAgIDYw
LCAgICAtMSwgICAgNTksICAgICAzLCAgICA2MCwgICAgLTEsCisgICAgICA1MSwgICAgLTEsICAg
ICA2LCAgICA2MCwgICAgLTEKK307CisKKy8qIFlZUkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3
aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICAqLworc3RhdGljIGNvbnN0IHl5dHlw
ZV91aW50MTYgeXlybGluZVtdID0KK3sKKyAgICAgICAwLCAgIDExNCwgICAxMTQsICAgMTIxLCAg
IDEyNSwgICAxMzEsICAgMTM1LCAgIDE0MCwgICAxNDUsICAgMTUzLAorICAgICAxNTksICAgMTY1
LCAgIDE3NCwgICAxODQsICAgMjAyLCAgIDIxMywgICAyMzEsICAgMjM1LCAgIDIzNywgICAyNDQs
CisgICAgIDI0OSwgICAyNTQsICAgMjU5LCAgIDI2NCwgICAyNzMsICAgMjc3LCAgIDI4MSwgICAy
ODcsICAgMjk1LCAgIDMwMiwKKyAgICAgMzA5LCAgIDMxNCwgICAzMjEsICAgMzI3LCAgIDMzMiwg
ICAzMzgsICAgMzQ0LCAgIDM0OCwgICAzNTYsICAgMzY3LAorICAgICAzNzMsICAgMzgxLCAgIDM4
NSwgICAzODcsICAgMzk0LCAgIDM5OSwgICA0MDEsICAgNDA3LCAgIDQxNiwgICA0MTgsCisgICAg
IDQyNiwgICA0MjgsICAgNDM1LCAgIDQzNywgICA0NDQsICAgNDQ2LCAgIDQ1MywgICA0NTUsICAg
NDYyLCAgIDQ2NCwKKyAgICAgNDY5LCAgIDQ3NiwgICA0NzgsICAgNDg1LCAgIDQ4NworfTsKKyNl
bmRpZgorCisjaWYgWVlERUJVRyB8fCBZWUVSUk9SX1ZFUkJPU0UgfHwgWVlUT0tFTl9UQUJMRQor
LyogWVlUTkFNRVtTWU1CT0wtTlVNXSAtLSBTdHJpbmcgbmFtZSBvZiB0aGUgc3ltYm9sIFNZTUJP
TC1OVU0uCisgICBGaXJzdCwgdGhlIHRlcm1pbmFscywgdGhlbiwgc3RhcnRpbmcgYXQgWVlOVE9L
RU5TLCBub250ZXJtaW5hbHMuICAqLworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVb
XSA9Cit7CisgICIkZW5kIiwgImVycm9yIiwgIiR1bmRlZmluZWQiLCAiTVVMT1AiLCAiUkVMT1Ai
LCAiRVFPUCIsICJNSU5VUyIsCisgICJQTFVTIiwgIkFORCIsICJPUiIsICJGVU5DVElPTk5BTUUi
LCAiTElURVJBTCIsICJOQU1FVEVTVCIsICJOVU1CRVIiLAorICAiTk9ERVRZUEUiLCAiVkFSSUFC
TEVSRUZFUkVOQ0UiLCAiQVhJU05BTUUiLCAiQ09NTUVOVCIsICJET1RET1QiLCAiUEkiLAorICAi
Tk9ERSIsICJTTEFTSFNMQVNIIiwgIlRFWFQiLCAiWFBBVEhfRVJST1IiLCAiJy8nIiwgIidAJyIs
ICInKCciLCAiJyknIiwKKyAgIidbJyIsICInXSciLCAiJy4nIiwgIicsJyIsICInfCciLCAiJGFj
Y2VwdCIsICJUb3AiLCAiRXhwciIsCisgICJMb2NhdGlvblBhdGgiLCAiQWJzb2x1dGVMb2NhdGlv
blBhdGgiLCAiUmVsYXRpdmVMb2NhdGlvblBhdGgiLCAiU3RlcCIsCisgICJBeGlzU3BlY2lmaWVy
IiwgIk5vZGVUZXN0IiwgIk9wdGlvbmFsUHJlZGljYXRlTGlzdCIsICJQcmVkaWNhdGVMaXN0IiwK
KyAgIlByZWRpY2F0ZSIsICJEZXNjZW5kYW50T3JTZWxmIiwgIkFiYnJldmlhdGVkU3RlcCIsICJQ
cmltYXJ5RXhwciIsCisgICJGdW5jdGlvbkNhbGwiLCAiQXJndW1lbnRMaXN0IiwgIkFyZ3VtZW50
IiwgIlVuaW9uRXhwciIsICJQYXRoRXhwciIsCisgICJGaWx0ZXJFeHByIiwgIk9yRXhwciIsICJB
bmRFeHByIiwgIkVxdWFsaXR5RXhwciIsICJSZWxhdGlvbmFsRXhwciIsCisgICJBZGRpdGl2ZUV4
cHIiLCAiTXVsdGlwbGljYXRpdmVFeHByIiwgIlVuYXJ5RXhwciIsIDAKK307CisjZW5kaWYKKwor
IyBpZmRlZiBZWVBSSU5UCisvKiBZWVRPS05VTVtZWUxFWC1OVU1dIC0tIEludGVybmFsIHRva2Vu
IG51bWJlciBjb3JyZXNwb25kaW5nIHRvCisgICB0b2tlbiBZWUxFWC1OVU0uICAqLworc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50MTYgeXl0b2tudW1bXSA9Cit7CisgICAgICAgMCwgICAyNTYsICAg
MjU3LCAgIDI1OCwgICAyNTksICAgMjYwLCAgIDI2MSwgICAyNjIsICAgMjYzLCAgIDI2NCwKKyAg
ICAgMjY1LCAgIDI2NiwgICAyNjcsICAgMjY4LCAgIDI2OSwgICAyNzAsICAgMjcxLCAgIDI3Miwg
ICAyNzMsICAgMjc0LAorICAgICAyNzUsICAgMjc2LCAgIDI3NywgICAyNzgsICAgIDQ3LCAgICA2
NCwgICAgNDAsICAgIDQxLCAgICA5MSwgICAgOTMsCisgICAgICA0NiwgICAgNDQsICAgMTI0Cit9
OworIyBlbmRpZgorCisvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhh
dCBydWxlIFlZTiBkZXJpdmVzLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMVtd
ID0KK3sKKyAgICAgICAwLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzYsICAgIDM3
LCAgICAzNywgICAgMzcsICAgIDM4LAorICAgICAgMzgsICAgIDM4LCAgICAzOSwgICAgMzksICAg
IDM5LCAgICAzOSwgICAgMzksICAgIDQwLCAgICA0MCwgICAgNDEsCisgICAgICA0MSwgICAgNDEs
ICAgIDQxLCAgICA0MSwgICAgNDIsICAgIDQyLCAgICA0MywgICAgNDMsICAgIDQ0LCAgICA0NSwK
KyAgICAgIDQ2LCAgICA0NiwgICAgNDcsICAgIDQ3LCAgICA0NywgICAgNDcsICAgIDQ3LCAgICA0
OCwgICAgNDgsICAgIDQ5LAorICAgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTEsICAgIDUyLCAg
ICA1MiwgICAgNTIsICAgIDUyLCAgICA1MywgICAgNTMsCisgICAgICA1NCwgICAgNTQsICAgIDU1
LCAgICA1NSwgICAgNTYsICAgIDU2LCAgICA1NywgICAgNTcsICAgIDU4LCAgICA1OCwKKyAgICAg
IDU4LCAgICA1OSwgICAgNTksICAgIDYwLCAgICA2MAorfTsKKworLyogWVlSMltZWU5dIC0tIE51
bWJlciBvZiBzeW1ib2xzIGNvbXBvc2luZyByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICAq
Lworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10gPQoreworICAgICAgIDAsICAgICAy
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAgMiwgICAgIDEs
CisgICAgICAgMywgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAzLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMywKKyAgICAgICAzLCAgICAgMywgICAgIDMsICAgICA0LCAgICAgMCwg
ICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAxLAorICAgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAgNCwgICAgIDEsCisgICAg
ICAgMywgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICAxLCAgICAgMywgICAgIDMsICAg
ICAxLCAgICAgMiwKKyAgICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMs
ICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAgIDMsICAgICAxLCAgICAgMywgICAg
IDEsICAgICAyCit9OworCisvKiBZWURFRkFDVFtTVEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUg
dG8gcmVkdWNlIHdpdGggaW4gc3RhdGUKKyAgIFNUQVRFLU5VTSB3aGVuIFlZVEFCTEUgZG9lc24n
dCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAgWmVybworICAgbWVhbnMgdGhlIGRlZmF1
bHQgaXMgYW4gZXJyb3IuICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eWRlZmFjdFtd
ID0KK3sKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDM0LCAgICAyNCwgICAgMzUsICAgIDMy
LCAgICAxNywgICAgIDAsICAgIDMxLAorICAgICAgIDAsICAgICAwLCAgICAyOSwgICAgIDAsICAg
ICA2LCAgICAxOCwgICAgIDAsICAgIDMwLCAgICAgMCwgICAgIDIsCisgICAgICA0NCwgICAgIDQs
ICAgICA1LCAgICAgOSwgICAgIDAsICAgIDI0LCAgICAgMCwgICAgMTYsICAgIDQ4LCAgICAzNiwK
KyAgICAgIDYzLCAgICA0MiwgICAgNDUsICAgICAzLCAgICA1MCwgICAgNTIsICAgIDU0LCAgICA1
NiwgICAgNTgsICAgIDYxLAorICAgICAgNjQsICAgICAwLCAgICAgMCwgICAgMTMsICAgIDI1LCAg
ICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgNywgICAgIDAsICAgICAx
LCAgICAgMCwgICAgIDAsICAgIDI0LCAgICAyNCwgICAgMTIsICAgICA4LCAgICA0OSwKKyAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgMzcsICAgIDQxLCAgICAgMCwgICAgMzksICAgICAwLCAgICAyNywg
ICAgMjEsICAgICAwLCAgICAyMiwgICAgMTksCisgICAgICAyMCwgICAgMzMsICAgIDEwLCAgICAx
MSwgICAgMTUsICAgIDE0LCAgICA0MywgICAgNDYsICAgIDQ3LCAgICA1MSwKKyAgICAgIDUzLCAg
ICA1NSwgICAgNTcsICAgIDYwLCAgICA1OSwgICAgNjIsICAgIDM4LCAgICAgMCwgICAgMjgsICAg
IDIzLAorICAgICAgNDAKK307CisKKy8qIFlZREVGR09UT1tOVEVSTS1OVU1dLiAgKi8KK3N0YXRp
YyBjb25zdCB5eXR5cGVfaW50OCB5eWRlZmdvdG9bXSA9Cit7CisgICAgICAtMSwgICAgMTgsICAg
IDcxLCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICA0MywKKyAg
ICAgIDQ0LCAgICA0NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDcyLCAgICA3Mywg
ICAgMzAsICAgIDMxLAorICAgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAz
NywgICAgMzgsICAgIDM5Cit9OworCisvKiBZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZ
WVRBQkxFIG9mIHRoZSBwb3J0aW9uIGRlc2NyaWJpbmcKKyAgIFNUQVRFLU5VTS4gICovCisjZGVm
aW5lIFlZUEFDVF9OSU5GIC0zNworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5cGFjdFtdID0K
K3sKKyAgICAgIDgxLCAgICA4MSwgICAgLTgsICAgLTM3LCAgICAtNywgICAtMzcsICAgLTM3LCAg
IC0zNywgICAgMTQsICAgLTM3LAorICAgICAgMTcsICAgIDIwLCAgIC0zNywgICAgMjEsICAgICA4
LCAgIC0zNywgICAgODEsICAgLTM3LCAgICA0OCwgICAtMzcsCisgICAgIC0zNywgICAtMzcsICAg
LTE3LCAgIC0zNywgICAgMjIsICAgIC03LCAgICAgOCwgICAtMzcsICAgIC03LCAgIC0zNywKKyAg
ICAgIDIzLCAgIC0zNywgICAgLTksICAgICAxLCAgICA0NSwgICAgNDksICAgIDUyLCAgICAxMCwg
ICAgNTQsICAgLTM3LAorICAgICAtMzcsICAgIDU5LCAgICA4MSwgICAtMzcsICAgIC03LCAgIC0z
NywgICAgMzEsICAgIC01LCAgICAzMiwgICAgMzMsCisgICAgIC0xNywgICAgMzQsICAgLTM3LCAg
ICAgOCwgICAgIDgsICAgIC03LCAgICAtNywgICAtMzcsICAgLTE3LCAgICAtNywKKyAgICAgMTAy
LCAgICAgOCwgICAgIDgsICAgIDgxLCAgICA4MSwgICAgODEsICAgIDgxLCAgICA4MSwgICAgODEs
ICAgIDgxLAorICAgICAtMzcsICAgLTM3LCAgIC0xOCwgICAtMzcsICAgIDM1LCAgIC0zNywgICAt
MzcsICAgIDM2LCAgIC0zNywgICAtMzcsCisgICAgIC0zNywgICAtMzcsICAgLTM3LCAgIC0zNywg
ICAtMzcsICAgLTM3LCAgIC0zNywgICAtMTcsICAgLTE3LCAgICA0NSwKKyAgICAgIDQ5LCAgICA1
MiwgICAgMTAsICAgIDU0LCAgICA1NCwgICAtMzcsICAgLTM3LCAgICA4MSwgICAtMzcsICAgLTM3
LAorICAgICAtMzcKK307CisKKy8qIFlZUEdPVE9bTlRFUk0tTlVNXS4gICovCitzdGF0aWMgY29u
c3QgeXl0eXBlX2ludDggeXlwZ290b1tdID0KK3sKKyAgICAgLTM3LCAgIC0zNywgICAgIDMsICAg
LTM3LCAgIC0zNywgICAtMTIsICAgLTIyLCAgIC0zNywgICAgMzgsICAgLTIwLAorICAgICAgNjAs
ICAgLTM2LCAgIC0yMSwgICAtMzcsICAgLTM3LCAgIC0zNywgICAtMzcsICAgLTI0LCAgIC0zNywg
ICAgMzAsCisgICAgIC0zNywgICAtMzcsICAgIDE5LCAgICA0MCwgICAgNDMsICAgIDI5LCAgIC0x
NiwgICAgLTEKK307CisKKy8qIFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dLiAgV2hhdCB0byBk
byBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgorICAgcG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4u
ICBJZiBuZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdoaWNoCisgICBudW1iZXIgaXMgdGhlIG9w
cG9zaXRlLiAgSWYgemVybywgZG8gd2hhdCBZWURFRkFDVCBzYXlzLgorICAgSWYgWVlUQUJMRV9O
SU5GLCBzeW50YXggZXJyb3IuICAqLworI2RlZmluZSBZWVRBQkxFX05JTkYgLTEKK3N0YXRpYyBj
b25zdCB5eXR5cGVfdWludDggeXl0YWJsZVtdID0KK3sKKyAgICAgIDQwLCAgICA1NCwgICAgNTAs
ICAgIDE5LCAgICAxMiwgICAgNTcsICAgIDc3LCAgICA1MywgICAgNzUsICAgIDk2LAorICAgICAg
NjMsICAgIDYyLCAgICAxMiwgICAgOTcsICAgIDU4LCAgICA2MSwgICAgNjcsICAgIDY4LCAgICA0
MSwgICAgNTEsCisgICAgICAgNCwgICAgNDIsICAgIDc4LCAgICA3NSwgICAgIDcsICAgICA4LCAg
ICAgOSwgICAgMTAsICAgIDExLCAgICA1NCwKKyAgICAgIDEzLCAgICA4MiwgICAgODMsICAgIDE1
LCAgICA1NSwgICAgODQsICAgIDg1LCAgICA1NCwgICAgMTcsICAgICA4LAorICAgICAgNDYsICAg
IDEwLCAgICAxMSwgICAgNDcsICAgIDEzLCAgICA3NCwgICAgNDgsICAgIDQ5LCAgICA1MiwgICAg
ODcsCisgICAgICA4OCwgICAgOTMsICAgIDk0LCAgICA2NCwgICAgNjUsICAgIDYwLCAgICA2Niwg
ICAgNjksICAgIDc2LCAgICA3OSwKKyAgICAgIDgwLCAgICA4MSwgICAgNTYsICAgIDk5LCAgICA5
OCwgICAgIDEsICAgIDU0LCAgICA1NCwgICAgOTUsICAgICAyLAorICAgICAgIDMsICAgICA0LCAg
ICAgNSwgICAxMDAsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsCisg
ICAgICAxMiwgICAgMTMsICAgIDg5LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICA3MCwgICAgIDEs
ICAgIDU5LCAgICAxNywKKyAgICAgIDg2LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
OTIsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAorICAgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIDkwLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICA5MSwgICAgIDAsCisgICAgICAg
MCwgICAgMTcsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgMCwgICAgIDYsICAgICA3
LCAgICAgOCwKKyAgICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgIDAsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAxNworfTsKKwor
c3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5Y2hlY2tbXSA9Cit7CisgICAgICAgMSwgICAgMjIs
ICAgIDE0LCAgICAgMCwgICAgMjEsICAgIDI1LCAgICAxMSwgICAgMjQsICAgIDQ0LCAgICAyNywK
KyAgICAgICA5LCAgICAzMiwgICAgMjEsICAgIDMxLCAgICAyNiwgICAgMjQsICAgICA2LCAgICAg
NywgICAgMjYsICAgIDE2LAorICAgICAgMTIsICAgIDI4LCAgICAyNywgICAgNTksICAgIDE2LCAg
ICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgNTAsCisgICAgICAyMiwgICAgNTMsICAgIDU0
LCAgICAyNSwgICAgMTIsICAgIDU1LCAgICA1NiwgICAgNTgsICAgIDMwLCAgICAxNywKKyAgICAg
IDI2LCAgICAxOSwgICAgMjAsICAgIDI2LCAgICAyMiwgICAgNDIsICAgIDI2LCAgICAyNiwgICAg
IDAsICAgIDYxLAorICAgICAgNjIsICAgIDY3LCAgICA2OCwgICAgIDgsICAgICA1LCAgICAzMiwg
ICAgIDQsICAgICAzLCAgICAyNywgICAgMjcsCisgICAgICAyNywgICAgMjcsICAgIDI0LCAgICAy
NywgICAgMjksICAgICA2LCAgICA4NywgICAgODgsICAgIDY5LCAgICAxMCwKKyAgICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDk3LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAg
IDIwLAorICAgICAgMjEsICAgIDIyLCAgICA2MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgICA2LCAgICAyOCwgICAgMzAsCisgICAgICA2MCwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDY2LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICA2NCwgICAgMjQsICAgIDI1LCAgICAyNiwgICAgNjUsICAgIC0xLAor
ICAgICAgLTEsICAgIDMwLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIDE1
LCAgICAxNiwgICAgMTcsCisgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
IC0xLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMzAK
K307CisKKy8qIFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9mIHRo
ZSkgYWNjZXNzaW5nCisgICBzeW1ib2wgb2Ygc3RhdGUgU1RBVEUtTlVNLiAgKi8KK3N0YXRpYyBj
b25zdCB5eXR5cGVfdWludDggeXlzdG9zW10gPQoreworICAgICAgIDAsICAgICA2LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMzAsICAgIDM0
LCAgICAzNSwKKyAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQs
ICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCisgICAgICA2MCwgICAg
MjYsICAgIDI4LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAyNiwgICAgMjYsICAgIDI2LCAgICAy
NiwKKyAgICAgIDM4LCAgICAzNSwgICAgIDAsICAgIDI0LCAgICA0NSwgICAgMTIsICAgIDQxLCAg
ICA0MiwgICAgMzgsICAgIDQzLAorICAgICAgMzIsICAgIDI0LCAgICA0NSwgICAgIDksICAgICA4
LCAgICAgNSwgICAgIDQsICAgICA2LCAgICAgNywgICAgIDMsCisgICAgICAyNywgICAgMzUsICAg
IDQ5LCAgICA1MCwgICAgMzUsICAgIDQ0LCAgICAyNywgICAgMTEsICAgIDI3LCAgICAyNywKKyAg
ICAgIDI3LCAgICAyNywgICAgMzksICAgIDM5LCAgICA0MiwgICAgNDIsICAgIDUyLCAgICAzOCwg
ICAgMzgsICAgIDU1LAorICAgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDU5LCAgICA2
MCwgICAgMjcsICAgIDMxLCAgICAyOSwgICAgMjcsCisgICAgICA1MAorfTsKKworI2RlZmluZSB5
eWVycm9rCQkoeXllcnJzdGF0dXMgPSAwKQorI2RlZmluZSB5eWNsZWFyaW4JKHl5Y2hhciA9IFlZ
RU1QVFkpCisjZGVmaW5lIFlZRU1QVFkJCSgtMikKKyNkZWZpbmUgWVlFT0YJCTAKKworI2RlZmlu
ZSBZWUFDQ0VQVAlnb3RvIHl5YWNjZXB0bGFiCisjZGVmaW5lIFlZQUJPUlQJCWdvdG8geXlhYm9y
dGxhYgorI2RlZmluZSBZWUVSUk9SCQlnb3RvIHl5ZXJyb3JsYWIKKworCisvKiBMaWtlIFlZRVJS
T1IgZXhjZXB0IGRvIGNhbGwgeXllcnJvci4gIFRoaXMgcmVtYWlucyBoZXJlIHRlbXBvcmFyaWx5
CisgICB0byBlYXNlIHRoZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgbWVhbmluZyBvZiBZWUVSUk9S
LCBmb3IgR0NDLgorICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24g
MSwgdGhpcyBjYW4gZ28uICAqLworCisjZGVmaW5lIFlZRkFJTAkJZ290byB5eWVycmxhYgorCisj
ZGVmaW5lIFlZUkVDT1ZFUklORygpICAoISF5eWVycnN0YXR1cykKKworI2RlZmluZSBZWUJBQ0tV
UChUb2tlbiwgVmFsdWUpCQkJCQlcCitkbwkJCQkJCQkJXAorICBpZiAoeXljaGFyID09IFlZRU1Q
VFkgJiYgeXlsZW4gPT0gMSkJCQkJXAorICAgIHsJCQkJCQkJCVwKKyAgICAgIHl5Y2hhciA9IChU
b2tlbik7CQkJCQkJXAorICAgICAgeXlsdmFsID0gKFZhbHVlKTsJCQkJCQlcCisgICAgICB5eXRv
a2VuID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7CQkJCVwKKyAgICAgIFlZUE9QU1RBQ0sgKDEpOwkJ
CQkJCVwKKyAgICAgIGdvdG8geXliYWNrdXA7CQkJCQkJXAorICAgIH0JCQkJCQkJCVwKKyAgZWxz
ZQkJCQkJCQkJXAorICAgIHsJCQkJCQkJCVwKKyAgICAgIHl5ZXJyb3IgKHBhcnNlciwgWVlfKCJz
eW50YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisgICAgICBZWUVSUk9SOwkJCQkJCQlc
CisgICAgfQkJCQkJCQkJXAord2hpbGUgKFlZSUQgKDApKQorCisKKyNkZWZpbmUgWVlURVJST1IJ
MQorI2RlZmluZSBZWUVSUkNPREUJMjU2CisKKworLyogWVlMTE9DX0RFRkFVTFQgLS0gU2V0IENV
UlJFTlQgdG8gc3BhbiBmcm9tIFJIU1sxXSB0byBSSFNbTl0uCisgICBJZiBOIGlzIDAsIHRoZW4g
c2V0IENVUlJFTlQgdG8gdGhlIGVtcHR5IGxvY2F0aW9uIHdoaWNoIGVuZHMKKyAgIHRoZSBwcmV2
aW91cyBzeW1ib2w6IFJIU1swXSAoYWx3YXlzIGRlZmluZWQpLiAgKi8KKworI2RlZmluZSBZWVJI
U0xPQyhSaHMsIEspICgoUmhzKVtLXSkKKyNpZm5kZWYgWVlMTE9DX0RFRkFVTFQKKyMgZGVmaW5l
IFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikJCQkJXAorICAgIGRvCQkJCQkJCQkJXAor
ICAgICAgaWYgKFlZSUQgKE4pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisJewkJCQkJCQkJXAorCSAgKEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9
IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2xpbmU7CVwKKwkgIChDdXJyZW50KS5maXJzdF9jb2x1
bW4gPSBZWVJIU0xPQyAoUmhzLCAxKS5maXJzdF9jb2x1bW47CVwKKwkgIChDdXJyZW50KS5sYXN0
X2xpbmUgICAgPSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2xpbmU7CQlcCisJICAoQ3VycmVudCku
bGFzdF9jb2x1bW4gID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9jb2x1bW47CVwKKwl9CQkJCQkJ
CQlcCisgICAgICBlbHNlCQkJCQkJCQlcCisJewkJCQkJCQkJXAorCSAgKEN1cnJlbnQpLmZpcnN0
X2xpbmUgICA9IChDdXJyZW50KS5sYXN0X2xpbmUgICA9CQlcCisJICAgIFlZUkhTTE9DIChSaHMs
IDApLmxhc3RfbGluZTsJCQkJXAorCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IChDdXJyZW50
KS5sYXN0X2NvbHVtbiA9CQlcCisJICAgIFlZUkhTTE9DIChSaHMsIDApLmxhc3RfY29sdW1uOwkJ
CQlcCisJfQkJCQkJCQkJXAorICAgIHdoaWxlIChZWUlEICgwKSkKKyNlbmRpZgorCisKKy8qIFlZ
X0xPQ0FUSU9OX1BSSU5UIC0tIFByaW50IHRoZSBsb2NhdGlvbiBvbiB0aGUgc3RyZWFtLgorICAg
VGhpcyBtYWNybyB3YXMgbm90IG1hbmRhdGVkIG9yaWdpbmFsbHk6IGRlZmluZSBvbmx5IGlmIHdl
IGtub3cKKyAgIHdlIHdvbid0IGJyZWFrIHVzZXIgY29kZTogd2hlbiB0aGVzZSBhcmUgdGhlIGxv
Y2F0aW9ucyB3ZSBrbm93LiAgKi8KKworI2lmbmRlZiBZWV9MT0NBVElPTl9QUklOVAorIyBpZiBk
ZWZpbmVkIFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWUxUWVBFX0lTX1RSSVZJQUwKKyMgIGRlZmlu
ZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpCQkJXAorICAgICBmcHJpbnRmIChGaWxlLCAi
JWQuJWQtJWQuJWQiLAkJCVwKKwkgICAgICAoTG9jKS5maXJzdF9saW5lLCAoTG9jKS5maXJzdF9j
b2x1bW4sCVwKKwkgICAgICAoTG9jKS5sYXN0X2xpbmUsICAoTG9jKS5sYXN0X2NvbHVtbikKKyMg
ZWxzZQorIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExvYykgKCh2b2lkKSAwKQor
IyBlbmRpZgorI2VuZGlmCisKKworLyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhl
IHJpZ2h0IGFyZ3VtZW50cy4gICovCisKKyNpZmRlZiBZWUxFWF9QQVJBTQorIyBkZWZpbmUgWVlM
RVggeXlsZXggKCZ5eWx2YWwsIFlZTEVYX1BBUkFNKQorI2Vsc2UKKyMgZGVmaW5lIFlZTEVYIHl5
bGV4ICgmeXlsdmFsLCBwYXJzZXIpCisjZW5kaWYKKworLyogRW5hYmxlIGRlYnVnZ2luZyBpZiBy
ZXF1ZXN0ZWQuICAqLworI2lmIFlZREVCVUcKKworIyBpZm5kZWYgWVlGUFJJTlRGCisjICBpbmNs
dWRlIDxzdGRpby5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICBkZWZp
bmUgWVlGUFJJTlRGIGZwcmludGYKKyMgZW5kaWYKKworIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3Mp
CQkJXAorZG8gewkJCQkJCVwKKyAgaWYgKHl5ZGVidWcpCQkJCQlcCisgICAgWVlGUFJJTlRGIEFy
Z3M7CQkJCVwKK30gd2hpbGUgKFlZSUQgKDApKQorCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQo
VGl0bGUsIFR5cGUsIFZhbHVlLCBMb2NhdGlvbikJCQkgIFwKK2RvIHsJCQkJCQkJCQkgIFwKKyAg
aWYgKHl5ZGVidWcpCQkJCQkJCQkgIFwKKyAgICB7CQkJCQkJCQkJICBcCisgICAgICBZWUZQUklO
VEYgKHN0ZGVyciwgIiVzICIsIFRpdGxlKTsJCQkJCSAgXAorICAgICAgeXlfc3ltYm9sX3ByaW50
IChzdGRlcnIsCQkJCQkJICBcCisJCSAgVHlwZSwgVmFsdWUsIHBhcnNlcik7IFwKKyAgICAgIFlZ
RlBSSU5URiAoc3RkZXJyLCAiXG4iKTsJCQkJCQkgIFwKKyAgICB9CQkJCQkJCQkJICBcCit9IHdo
aWxlIChZWUlEICgwKSkKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgor
fCBQcmludCB0aGlzIHN5bWJvbCBvbiBZWU9VVFBVVC4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCisKKy8qQVJHU1VTRUQqLworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8
IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwg
ZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKEZJ
TEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXAs
IFBhcnNlciYgcGFyc2VyKQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5eV9zeW1ib2xfdmFsdWVfcHJp
bnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBwYXJzZXIpCisgICAgRklMRSAqeXlvdXRw
dXQ7CisgICAgaW50IHl5dHlwZTsKKyAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7
CisgICAgUGFyc2VyJiBwYXJzZXI7CisjZW5kaWYKK3sKKyAgaWYgKCF5eXZhbHVlcCkKKyAgICBy
ZXR1cm47CisgIFlZVVNFIChwYXJzZXIpOworIyBpZmRlZiBZWVBSSU5UCisgIGlmICh5eXR5cGUg
PCBZWU5UT0tFTlMpCisgICAgWVlQUklOVCAoeXlvdXRwdXQsIHl5dG9rbnVtW3l5dHlwZV0sICp5
eXZhbHVlcCk7CisjIGVsc2UKKyAgWVlVU0UgKHl5b3V0cHV0KTsKKyMgZW5kaWYKKyAgc3dpdGNo
ICh5eXR5cGUpCisgICAgeworICAgICAgZGVmYXVsdDoKKwlicmVhazsKKyAgICB9Cit9CisKKwor
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUHJpbnQgdGhpcyBzeW1ib2wg
b24gWVlPVVRQVVQuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisj
aWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwg
ZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHZvaWQKK3l5
X3N5bWJvbF9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3Qg
KiBjb25zdCB5eXZhbHVlcCwgUGFyc2VyJiBwYXJzZXIpCisjZWxzZQorc3RhdGljIHZvaWQKK3l5
X3N5bWJvbF9wcmludCAoeXlvdXRwdXQsIHl5dHlwZSwgeXl2YWx1ZXAsIHBhcnNlcikKKyAgICBG
SUxFICp5eW91dHB1dDsKKyAgICBpbnQgeXl0eXBlOworICAgIFlZU1RZUEUgY29uc3QgKiBjb25z
dCB5eXZhbHVlcDsKKyAgICBQYXJzZXImIHBhcnNlcjsKKyNlbmRpZgoreworICBpZiAoeXl0eXBl
IDwgWVlOVE9LRU5TKQorICAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICJ0b2tlbiAlcyAoIiwgeXl0
bmFtZVt5eXR5cGVdKTsKKyAgZWxzZQorICAgIFlZRlBSSU5URiAoeXlvdXRwdXQsICJudGVybSAl
cyAoIiwgeXl0bmFtZVt5eXR5cGVdKTsKKworICB5eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0
cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBwYXJzZXIpOworICBZWUZQUklOVEYgKHl5b3V0cHV0LCAi
KSIpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlfc3RhY2tfcHJpbnQgLS0gUHJpbnQgdGhlIHN0
YXRlIHN0YWNrIGZyb20gaXRzIEJPVFRPTSB1cCB0byBpdHMgfAorfCBUT1AgKGluY2x1ZGVkKS4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CitgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KKworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNf
XyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0
YXRpYyB2b2lkCit5eV9zdGFja19wcmludCAoeXl0eXBlX2ludDE2ICpib3R0b20sIHl5dHlwZV9p
bnQxNiAqdG9wKQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5eV9zdGFja19wcmludCAoYm90dG9tLCB0
b3ApCisgICAgeXl0eXBlX2ludDE2ICpib3R0b207CisgICAgeXl0eXBlX2ludDE2ICp0b3A7Cisj
ZW5kaWYKK3sKKyAgWVlGUFJJTlRGIChzdGRlcnIsICJTdGFjayBub3ciKTsKKyAgZm9yICg7IGJv
dHRvbSA8PSB0b3A7ICsrYm90dG9tKQorICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgKmJv
dHRvbSk7CisgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKK30KKworIyBkZWZpbmUgWVlfU1RB
Q0tfUFJJTlQoQm90dG9tLCBUb3ApCQkJCVwKK2RvIHsJCQkJCQkJCVwKKyAgaWYgKHl5ZGVidWcp
CQkJCQkJCVwKKyAgICB5eV9zdGFja19wcmludCAoKEJvdHRvbSksIChUb3ApKTsJCQkJXAorfSB3
aGlsZSAoWVlJRCAoMCkpCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCit8IFJlcG9ydCB0aGF0IHRoZSBZWVJVTEUgaXMgZ29pbmcgdG8gYmUg
cmVkdWNlZC4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLworCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f
IFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3Rh
dGljIHZvaWQKK3l5X3JlZHVjZV9wcmludCAoWVlTVFlQRSAqeXl2c3AsIGludCB5eXJ1bGUsIFBh
cnNlciYgcGFyc2VyKQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5eV9yZWR1Y2VfcHJpbnQgKHl5dnNw
LCB5eXJ1bGUsIHBhcnNlcikKKyAgICBZWVNUWVBFICp5eXZzcDsKKyAgICBpbnQgeXlydWxlOwor
ICAgIFBhcnNlciYgcGFyc2VyOworI2VuZGlmCit7CisgIGludCB5eW5yaHMgPSB5eXIyW3l5cnVs
ZV07CisgIGludCB5eWk7CisgIHVuc2lnbmVkIGxvbmcgaW50IHl5bG5vID0geXlybGluZVt5eXJ1
bGVdOworICBZWUZQUklOVEYgKHN0ZGVyciwgIlJlZHVjaW5nIHN0YWNrIGJ5IHJ1bGUgJWQgKGxp
bmUgJWx1KTpcbiIsCisJICAgICB5eXJ1bGUgLSAxLCB5eWxubyk7CisgIC8qIFRoZSBzeW1ib2xz
IGJlaW5nIHJlZHVjZWQuICAqLworICBmb3IgKHl5aSA9IDA7IHl5aSA8IHl5bnJoczsgeXlpKysp
CisgICAgeworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7Cisg
ICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwgeXlyaHNbeXlwcmhzW3l5cnVsZV0gKyB5eWld
LAorCQkgICAgICAgJih5eXZzcFsoeXlpICsgMSkgLSAoeXlucmhzKV0pCisJCSAgICAgICAJCSAg
ICAgICAsIHBhcnNlcik7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworICAgIH0KK30K
KworIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCitkbyB7CQkJCQlcCisgIGlmICh5
eWRlYnVnKQkJCQlcCisgICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgUnVsZSwgcGFyc2VyKTsg
XAorfSB3aGlsZSAoWVlJRCAoMCkpCisKKy8qIE5vbnplcm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJh
Y2UuICBJdCBpcyBsZWZ0IHVuaW5pdGlhbGl6ZWQgc28gdGhhdAorICAgbXVsdGlwbGUgcGFyc2Vy
cyBjYW4gY29leGlzdC4gICovCitpbnQgeXlkZWJ1ZzsKKyNlbHNlIC8qICFZWURFQlVHICovCisj
IGRlZmluZSBZWURQUklOVEYoQXJncykKKyMgZGVmaW5lIFlZX1NZTUJPTF9QUklOVChUaXRsZSwg
VHlwZSwgVmFsdWUsIExvY2F0aW9uKQorIyBkZWZpbmUgWVlfU1RBQ0tfUFJJTlQoQm90dG9tLCBU
b3ApCisjIGRlZmluZSBZWV9SRURVQ0VfUFJJTlQoUnVsZSkKKyNlbmRpZiAvKiAhWVlERUJVRyAq
LworCisKKy8qIFlZSU5JVERFUFRIIC0tIGluaXRpYWwgc2l6ZSBvZiB0aGUgcGFyc2VyJ3Mgc3Rh
Y2tzLiAgKi8KKyNpZm5kZWYJWVlJTklUREVQVEgKKyMgZGVmaW5lIFlZSU5JVERFUFRIIDIwMAor
I2VuZGlmCisKKy8qIFlZTUFYREVQVEggLS0gbWF4aW11bSBzaXplIHRoZSBzdGFja3MgY2FuIGdy
b3cgdG8gKGVmZmVjdGl2ZSBvbmx5CisgICBpZiB0aGUgYnVpbHQtaW4gc3RhY2sgZXh0ZW5zaW9u
IG1ldGhvZCBpcyB1c2VkKS4KKworICAgRG8gbm90IG1ha2UgdGhpcyB2YWx1ZSB0b28gbGFyZ2U7
IHRoZSByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYKKyAgIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSA8
IFlZU1RBQ0tfQllURVMgKFlZTUFYREVQVEgpCisgICBldmFsdWF0ZWQgd2l0aCBpbmZpbml0ZS1w
cmVjaXNpb24gaW50ZWdlciBhcml0aG1ldGljLiAgKi8KKworI2lmbmRlZiBZWU1BWERFUFRICisj
IGRlZmluZSBZWU1BWERFUFRIIDEwMDAwCisjZW5kaWYKKworDAorCisjaWYgWVlFUlJPUl9WRVJC
T1NFCisKKyMgaWZuZGVmIHl5c3RybGVuCisjICBpZiBkZWZpbmVkIF9fR0xJQkNfXyAmJiBkZWZp
bmVkIF9TVFJJTkdfSAorIyAgIGRlZmluZSB5eXN0cmxlbiBzdHJsZW4KKyMgIGVsc2UKKy8qIFJl
dHVybiB0aGUgbGVuZ3RoIG9mIFlZU1RSLiAgKi8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBk
ZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRl
ZmluZWQgX01TQ19WRVIpCitzdGF0aWMgWVlTSVpFX1QKK3l5c3RybGVuIChjb25zdCBjaGFyICp5
eXN0cikKKyNlbHNlCitzdGF0aWMgWVlTSVpFX1QKK3l5c3RybGVuICh5eXN0cikKKyAgICBjb25z
dCBjaGFyICp5eXN0cjsKKyNlbmRpZgoreworICBZWVNJWkVfVCB5eWxlbjsKKyAgZm9yICh5eWxl
biA9IDA7IHl5c3RyW3l5bGVuXTsgeXlsZW4rKykKKyAgICBjb250aW51ZTsKKyAgcmV0dXJuIHl5
bGVuOworfQorIyAgZW5kaWYKKyMgZW5kaWYKKworIyBpZm5kZWYgeXlzdHBjcHkKKyMgIGlmIGRl
ZmluZWQgX19HTElCQ19fICYmIGRlZmluZWQgX1NUUklOR19IICYmIGRlZmluZWQgX0dOVV9TT1VS
Q0UKKyMgICBkZWZpbmUgeXlzdHBjcHkgc3RwY3B5CisjICBlbHNlCisvKiBDb3B5IFlZU1JDIHRv
IFlZREVTVCwgcmV0dXJuaW5nIHRoZSBhZGRyZXNzIG9mIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGlu
CisgICBZWURFU1QuICAqLworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlf
X0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZF
UikKK3N0YXRpYyBjaGFyICoKK3l5c3RwY3B5IChjaGFyICp5eWRlc3QsIGNvbnN0IGNoYXIgKnl5
c3JjKQorI2Vsc2UKK3N0YXRpYyBjaGFyICoKK3l5c3RwY3B5ICh5eWRlc3QsIHl5c3JjKQorICAg
IGNoYXIgKnl5ZGVzdDsKKyAgICBjb25zdCBjaGFyICp5eXNyYzsKKyNlbmRpZgoreworICBjaGFy
ICp5eWQgPSB5eWRlc3Q7CisgIGNvbnN0IGNoYXIgKnl5cyA9IHl5c3JjOworCisgIHdoaWxlICgo
Knl5ZCsrID0gKnl5cysrKSAhPSAnXDAnKQorICAgIGNvbnRpbnVlOworCisgIHJldHVybiB5eWQg
LSAxOworfQorIyAgZW5kaWYKKyMgZW5kaWYKKworIyBpZm5kZWYgeXl0bmFtZXJyCisvKiBDb3B5
IHRvIFlZUkVTIHRoZSBjb250ZW50cyBvZiBZWVNUUiBhZnRlciBzdHJpcHBpbmcgYXdheSB1bm5l
Y2Vzc2FyeQorICAgcXVvdGVzIGFuZCBiYWNrc2xhc2hlcywgc28gdGhhdCBpdCdzIHN1aXRhYmxl
IGZvciB5eWVycm9yLiAgVGhlCisgICBoZXVyaXN0aWMgaXMgdGhhdCBkb3VibGUtcXVvdGluZyBp
cyB1bm5lY2Vzc2FyeSB1bmxlc3MgdGhlIHN0cmluZworICAgY29udGFpbnMgYW4gYXBvc3Ryb3Bo
ZSwgYSBjb21tYSwgb3IgYmFja3NsYXNoIChvdGhlciB0aGFuCisgICBiYWNrc2xhc2gtYmFja3Ns
YXNoKS4gIFlZU1RSIGlzIHRha2VuIGZyb20geXl0bmFtZS4gIElmIFlZUkVTIGlzCisgICBudWxs
LCBkbyBub3QgY29weTsgaW5zdGVhZCwgcmV0dXJuIHRoZSBsZW5ndGggb2Ygd2hhdCB0aGUgcmVz
dWx0CisgICB3b3VsZCBoYXZlIGJlZW4uICAqLworc3RhdGljIFlZU0laRV9UCit5eXRuYW1lcnIg
KGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0cikKK3sKKyAgaWYgKCp5eXN0ciA9PSAnIicp
CisgICAgeworICAgICAgWVlTSVpFX1QgeXluID0gMDsKKyAgICAgIGNoYXIgY29uc3QgKnl5cCA9
IHl5c3RyOworCisgICAgICBmb3IgKDs7KQorCXN3aXRjaCAoKisreXlwKQorCSAgeworCSAgY2Fz
ZSAnXCcnOgorCSAgY2FzZSAnLCc6CisJICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKwor
CSAgY2FzZSAnXFwnOgorCSAgICBpZiAoKisreXlwICE9ICdcXCcpCisJICAgICAgZ290byBkb19u
b3Rfc3RyaXBfcXVvdGVzOworCSAgICAvKiBGYWxsIHRocm91Z2guICAqLworCSAgZGVmYXVsdDoK
KwkgICAgaWYgKHl5cmVzKQorCSAgICAgIHl5cmVzW3l5bl0gPSAqeXlwOworCSAgICB5eW4rKzsK
KwkgICAgYnJlYWs7CisKKwkgIGNhc2UgJyInOgorCSAgICBpZiAoeXlyZXMpCisJICAgICAgeXly
ZXNbeXluXSA9ICdcMCc7CisJICAgIHJldHVybiB5eW47CisJICB9CisgICAgZG9fbm90X3N0cmlw
X3F1b3RlczogOworICAgIH0KKworICBpZiAoISB5eXJlcykKKyAgICByZXR1cm4geXlzdHJsZW4g
KHl5c3RyKTsKKworICByZXR1cm4geXlzdHBjcHkgKHl5cmVzLCB5eXN0cikgLSB5eXJlczsKK30K
KyMgZW5kaWYKKworLyogQ29weSBpbnRvIFlZUkVTVUxUIGFuIGVycm9yIG1lc3NhZ2UgYWJvdXQg
dGhlIHVuZXhwZWN0ZWQgdG9rZW4KKyAgIFlZQ0hBUiB3aGlsZSBpbiBzdGF0ZSBZWVNUQVRFLiAg
UmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkLAorICAgaW5jbHVkaW5nIHRoZSB0ZXJt
aW5hdGluZyBudWxsIGJ5dGUuICBJZiBZWVJFU1VMVCBpcyBudWxsLCBkbyBub3QKKyAgIGNvcHkg
YW55dGhpbmc7IGp1c3QgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3b3VsZCBiZQor
ICAgY29waWVkLiAgQXMgYSBzcGVjaWFsIGNhc2UsIHJldHVybiAwIGlmIGFuIG9yZGluYXJ5ICJz
eW50YXggZXJyb3IiCisgICBtZXNzYWdlIHdpbGwgZG8uICBSZXR1cm4gWVlTSVpFX01BWElNVU0g
aWYgb3ZlcmZsb3cgb2NjdXJzIGR1cmluZworICAgc2l6ZSBjYWxjdWxhdGlvbi4gICovCitzdGF0
aWMgWVlTSVpFX1QKK3l5c3ludGF4X2Vycm9yIChjaGFyICp5eXJlc3VsdCwgaW50IHl5c3RhdGUs
IGludCB5eWNoYXIpCit7CisgIGludCB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07CisKKyAgaWYgKCEg
KFlZUEFDVF9OSU5GIDwgeXluICYmIHl5biA8PSBZWUxBU1QpKQorICAgIHJldHVybiAwOworICBl
bHNlCisgICAgeworICAgICAgaW50IHl5dHlwZSA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOworICAg
ICAgWVlTSVpFX1QgeXlzaXplMCA9IHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5eXR5cGVdKTsKKyAg
ICAgIFlZU0laRV9UIHl5c2l6ZSA9IHl5c2l6ZTA7CisgICAgICBZWVNJWkVfVCB5eXNpemUxOwor
ICAgICAgaW50IHl5c2l6ZV9vdmVyZmxvdyA9IDA7CisgICAgICBlbnVtIHsgWVlFUlJPUl9WRVJC
T1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKKyAgICAgIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1Jf
VkVSQk9TRV9BUkdTX01BWElNVU1dOworICAgICAgaW50IHl5eDsKKworIyBpZiAwCisgICAgICAv
KiBUaGlzIGlzIHNvIHhnZXR0ZXh0IHNlZXMgdGhlIHRyYW5zbGF0YWJsZSBmb3JtYXRzIHRoYXQg
YXJlCisJIGNvbnN0cnVjdGVkIG9uIHRoZSBmbHkuICAqLworICAgICAgWVlfKCJzeW50YXggZXJy
b3IsIHVuZXhwZWN0ZWQgJXMiKTsKKyAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVk
ICVzLCBleHBlY3RpbmcgJXMiKTsKKyAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVk
ICVzLCBleHBlY3RpbmcgJXMgb3IgJXMiKTsKKyAgICAgIFlZXygic3ludGF4IGVycm9yLCB1bmV4
cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMiKTsKKyAgICAgIFlZXygic3ludGF4
IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMgb3IgJXMgb3IgJXMgb3IgJXMiKTsK
KyMgZW5kaWYKKyAgICAgIGNoYXIgKnl5Zm10OworICAgICAgY2hhciBjb25zdCAqeXlmOworICAg
ICAgc3RhdGljIGNoYXIgY29uc3QgeXl1bmV4cGVjdGVkW10gPSAic3ludGF4IGVycm9yLCB1bmV4
cGVjdGVkICVzIjsKKyAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5ZXhwZWN0aW5nW10gPSAiLCBl
eHBlY3RpbmcgJXMiOworICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlvcltdID0gIiBvciAlcyI7
CisgICAgICBjaGFyIHl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQKKwkJICAgICsgc2l6ZW9m
IHl5ZXhwZWN0aW5nIC0gMQorCQkgICAgKyAoKFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0g
LSAyKQorCQkgICAgICAgKiAoc2l6ZW9mIHl5b3IgLSAxKSldOworICAgICAgY2hhciBjb25zdCAq
eXlwcmVmaXggPSB5eWV4cGVjdGluZzsKKworICAgICAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYg
bmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgorCSBZWUNIRUNLLiAgKi8KKyAg
ICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAgPyAteXluIDogMDsKKworICAgICAgLyogU3RheSB3
aXRoaW4gYm91bmRzIG9mIGJvdGggeXljaGVjayBhbmQgeXl0bmFtZS4gICovCisgICAgICBpbnQg
eXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7CisgICAgICBpbnQgeXl4ZW5kID0geXljaGVj
a2xpbSA8IFlZTlRPS0VOUyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7CisgICAgICBpbnQgeXlj
b3VudCA9IDE7CisKKyAgICAgIHl5YXJnWzBdID0geXl0bmFtZVt5eXR5cGVdOworICAgICAgeXlm
bXQgPSB5eXN0cGNweSAoeXlmb3JtYXQsIHl5dW5leHBlY3RlZCk7CisKKyAgICAgIGZvciAoeXl4
ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCisJaWYgKHl5Y2hlY2tbeXl4ICsgeXlu
XSA9PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SKQorCSAgeworCSAgICBpZiAoeXljb3VudCA9PSBZ
WUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQorCSAgICAgIHsKKwkJeXljb3VudCA9IDE7CisJ
CXl5c2l6ZSA9IHl5c2l6ZTA7CisJCXl5Zm9ybWF0W3NpemVvZiB5eXVuZXhwZWN0ZWQgLSAxXSA9
ICdcMCc7CisJCWJyZWFrOworCSAgICAgIH0KKwkgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5dG5h
bWVbeXl4XTsKKwkgICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5dG5hbWVyciAoMCwgeXl0bmFtZVt5
eXhdKTsKKwkgICAgeXlzaXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKKwkgICAg
eXlzaXplID0geXlzaXplMTsKKwkgICAgeXlmbXQgPSB5eXN0cGNweSAoeXlmbXQsIHl5cHJlZml4
KTsKKwkgICAgeXlwcmVmaXggPSB5eW9yOworCSAgfQorCisgICAgICB5eWYgPSBZWV8oeXlmb3Jt
YXQpOworICAgICAgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5eWYpOworICAgICAgeXlz
aXplX292ZXJmbG93IHw9ICh5eXNpemUxIDwgeXlzaXplKTsKKyAgICAgIHl5c2l6ZSA9IHl5c2l6
ZTE7CisKKyAgICAgIGlmICh5eXNpemVfb3ZlcmZsb3cpCisJcmV0dXJuIFlZU0laRV9NQVhJTVVN
OworCisgICAgICBpZiAoeXlyZXN1bHQpCisJeworCSAgLyogQXZvaWQgc3ByaW50ZiwgYXMgdGhh
dCBpbmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNwYWNlLgorCSAgICAgRG9uJ3QgaGF2ZSB1
bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJhbnNsYXRpb24KKwkgICAgIHByb2R1Y2Vk
IGEgc3RyaW5nIHdpdGggdGhlIHdyb25nIG51bWJlciBvZiAiJXMicy4gICovCisJICBjaGFyICp5
eXAgPSB5eXJlc3VsdDsKKwkgIGludCB5eWkgPSAwOworCSAgd2hpbGUgKCgqeXlwID0gKnl5Zikg
IT0gJ1wwJykKKwkgICAgeworCSAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZbMV0gPT0gJ3Mn
ICYmIHl5aSA8IHl5Y291bnQpCisJCXsKKwkJICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJn
W3l5aSsrXSk7CisJCSAgeXlmICs9IDI7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICB5eXAr
KzsKKwkJICB5eWYrKzsKKwkJfQorCSAgICB9CisJfQorICAgICAgcmV0dXJuIHl5c2l6ZTsKKyAg
ICB9Cit9CisjZW5kaWYgLyogWVlFUlJPUl9WRVJCT1NFICovCisMCisKKy8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFJlbGVhc2UgdGhlIG1lbW9y
eSBhc3NvY2lhdGVkIHRvIHRoaXMgc3ltYm9sLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLypBUkdTVVNFRCovCisjaWYgKGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHZvaWQKK3l5ZGVzdHJ1Y3QgKGNv
bnN0IGNoYXIgKnl5bXNnLCBpbnQgeXl0eXBlLCBZWVNUWVBFICp5eXZhbHVlcCwgUGFyc2VyJiBw
YXJzZXIpCisjZWxzZQorc3RhdGljIHZvaWQKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5
dmFsdWVwLCBwYXJzZXIpCisgICAgY29uc3QgY2hhciAqeXltc2c7CisgICAgaW50IHl5dHlwZTsK
KyAgICBZWVNUWVBFICp5eXZhbHVlcDsKKyAgICBQYXJzZXImIHBhcnNlcjsKKyNlbmRpZgorewor
ICBZWVVTRSAoeXl2YWx1ZXApOworICBZWVVTRSAocGFyc2VyKTsKKworICBpZiAoIXl5bXNnKQor
ICAgIHl5bXNnID0gIkRlbGV0aW5nIjsKKyAgWVlfU1lNQk9MX1BSSU5UICh5eW1zZywgeXl0eXBl
LCB5eXZhbHVlcCwgeXlsb2NhdGlvbnApOworCisgIHN3aXRjaCAoeXl0eXBlKQorICAgIHsKKyAg
ICAgIGNhc2UgMTA6IC8qICJGVU5DVElPTk5BTUUiICovCisjbGluZSA4MCAiV2ViQ29yZS94bWwv
WFBhdGhHcmFtbWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJpbmcpKSAoeXl2YWx1ZXAtPnN0
cmluZyktPmRlcmVmKCk7IH07CisjbGluZSAxMjA1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJl
YWs7CisgICAgICBjYXNlIDExOiAvKiAiTElURVJBTCIgKi8KKyNsaW5lIDgwICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKwl7IGlmICgoeXl2YWx1ZXAtPnN0cmluZykpICh5eXZhbHVlcC0+
c3RyaW5nKS0+ZGVyZWYoKTsgfTsKKyNsaW5lIDEyMTAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwli
cmVhazsKKyAgICAgIGNhc2UgMTI6IC8qICJOQU1FVEVTVCIgKi8KKyNsaW5lIDgwICJXZWJDb3Jl
L3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGlmICgoeXl2YWx1ZXAtPnN0cmluZykpICh5eXZhbHVl
cC0+c3RyaW5nKS0+ZGVyZWYoKTsgfTsKKyNsaW5lIDEyMTUgIi4vWFBhdGhHcmFtbWFyLmNwcCIK
KwlicmVhazsKKyAgICAgIGNhc2UgMTM6IC8qICJOVU1CRVIiICovCisjbGluZSA4MCAiV2ViQ29y
ZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJpbmcpKSAoeXl2YWx1
ZXAtPnN0cmluZyktPmRlcmVmKCk7IH07CisjbGluZSAxMjIwICIuL1hQYXRoR3JhbW1hci5jcHAi
CisJYnJlYWs7CisgICAgICBjYXNlIDE0OiAvKiAiTk9ERVRZUEUiICovCisjbGluZSA4MCAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJpbmcpKSAoeXl2
YWx1ZXAtPnN0cmluZyktPmRlcmVmKCk7IH07CisjbGluZSAxMjI1ICIuL1hQYXRoR3JhbW1hci5j
cHAiCisJYnJlYWs7CisgICAgICBjYXNlIDE1OiAvKiAiVkFSSUFCTEVSRUZFUkVOQ0UiICovCisj
bGluZSA4MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5z
dHJpbmcpKSAoeXl2YWx1ZXAtPnN0cmluZyktPmRlcmVmKCk7IH07CisjbGluZSAxMjMwICIuL1hQ
YXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDM1OiAvKiAiRXhwciIgKi8KKyNs
aW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVw
LT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEyMzUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVh
azsKKyAgICAgIGNhc2UgMzY6IC8qICJMb2NhdGlvblBhdGgiICovCisjbGluZSA4OCAiV2ViQ29y
ZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5sb2NhdGlvblBhdGgp
OyB9OworI2xpbmUgMTI0MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2Fz
ZSAzNzogLyogIkFic29sdXRlTG9jYXRpb25QYXRoIiAqLworI2xpbmUgODggIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+bG9jYXRpb25QYXRoKTsgfTsK
KyNsaW5lIDEyNDUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgMzg6
IC8qICJSZWxhdGl2ZUxvY2F0aW9uUGF0aCIgKi8KKyNsaW5lIDg4ICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmxvY2F0aW9uUGF0aCk7IH07CisjbGlu
ZSAxMjUwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDM5OiAvKiAi
U3RlcCIgKi8KKyNsaW5lIDk3ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0
ZSAoeXl2YWx1ZXAtPnN0ZXApOyB9OworI2xpbmUgMTI1NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgor
CWJyZWFrOworICAgICAgY2FzZSA0MTogLyogIk5vZGVUZXN0IiAqLworI2xpbmUgOTEgIldlYkNv
cmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+bm9kZVRlc3QpOyB9
OworI2xpbmUgMTI2MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA0
MjogLyogIk9wdGlvbmFsUHJlZGljYXRlTGlzdCIgKi8KKyNsaW5lIDk0ICJXZWJDb3JlL3htbC9Y
UGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb25WZWN0b3IpOyB9
OworI2xpbmUgMTI2NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA0
MzogLyogIlByZWRpY2F0ZUxpc3QiICovCisjbGluZSA5NCAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uVmVjdG9yKTsgfTsKKyNsaW5l
IDEyNzAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDQ6IC8qICJQ
cmVkaWNhdGUiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsg
ZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMjc1ICIuL1hQYXRoR3Jh
bW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDQ1OiAvKiAiRGVzY2VuZGFudE9yU2VsZiIg
Ki8KKyNsaW5lIDk3ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2
YWx1ZXAtPnN0ZXApOyB9OworI2xpbmUgMTI4MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFr
OworICAgICAgY2FzZSA0NjogLyogIkFiYnJldmlhdGVkU3RlcCIgKi8KKyNsaW5lIDk3ICJXZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPnN0ZXApOyB9Owor
I2xpbmUgMTI4NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA0Nzog
LyogIlByaW1hcnlFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTI5MCAiLi9Y
UGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA0ODogLyogIkZ1bmN0aW9uQ2Fs
bCIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUg
KHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEyOTUgIi4vWFBhdGhHcmFtbWFyLmNw
cCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDk6IC8qICJBcmd1bWVudExpc3QiICovCisjbGluZSA5
NCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHBy
ZXNzaW9uVmVjdG9yKTsgfTsKKyNsaW5lIDEzMDAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVh
azsKKyAgICAgIGNhc2UgNTA6IC8qICJBcmd1bWVudCIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsK
KyNsaW5lIDEzMDUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNTE6
IC8qICJVbmlvbkV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55
IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzEwICIuL1hQ
YXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDUyOiAvKiAiUGF0aEV4cHIiICov
CisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZh
bHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzE1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJ
YnJlYWs7CisgICAgICBjYXNlIDUzOiAvKiAiRmlsdGVyRXhwciIgKi8KKyNsaW5lIDEwMCAiV2Vi
Q29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9u
KTsgfTsKKyNsaW5lIDEzMjAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNh
c2UgNTQ6IC8qICJPckV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1h
ci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzI1ICIu
L1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDU1OiAvKiAiQW5kRXhwciIg
Ki8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5
dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEzMzAgIi4vWFBhdGhHcmFtbWFyLmNwcCIK
KwlicmVhazsKKyAgICAgIGNhc2UgNTY6IC8qICJFcXVhbGl0eUV4cHIiICovCisjbGluZSAxMDAg
IldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVz
c2lvbik7IH07CisjbGluZSAxMzM1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAg
ICBjYXNlIDU3OiAvKiAiUmVsYXRpb25hbEV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07Cisj
bGluZSAxMzQwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDU4OiAv
KiAiQWRkaXRpdmVFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTM0NSAiLi9Y
UGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1OTogLyogIk11bHRpcGxpY2F0
aXZlRXhwciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBk
ZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEzNTAgIi4vWFBhdGhHcmFt
bWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNjA6IC8qICJVbmFyeUV4cHIiICovCisjbGlu
ZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+
ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzU1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7
CisKKyAgICAgIGRlZmF1bHQ6CisJYnJlYWs7CisgICAgfQorfQorDAorCisvKiBQcmV2ZW50IHdh
cm5pbmdzIGZyb20gLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLworCisjaWZkZWYgWVlQQVJTRV9Q
QVJBTQorI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cworaW50IHl5
cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pOworI2Vsc2UKK2ludCB5eXBhcnNlICgpOworI2Vu
ZGlmCisjZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNlIChQYXJzZXImIHBhcnNlcik7CisjZWxz
ZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbmRpZiAvKiAhIFlZUEFSU0VfUEFSQU0gKi8K
KworCisKKworCisKKy8qLS0tLS0tLS0tLS4KK3wgeXlwYXJzZS4gIHwKK2AtLS0tLS0tLS0tKi8K
KworI2lmZGVmIFlZUEFSU0VfUEFSQU0KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCitpbnQKK3l5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pCisjZWxzZQoraW50
Cit5eXBhcnNlIChZWVBBUlNFX1BBUkFNKQorICAgIHZvaWQgKllZUEFSU0VfUEFSQU07CisjZW5k
aWYKKyNlbHNlIC8qICEgWVlQQVJTRV9QQVJBTSAqLworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8
IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwg
ZGVmaW5lZCBfTVNDX1ZFUikKK2ludAoreXlwYXJzZSAoUGFyc2VyJiBwYXJzZXIpCisjZWxzZQor
aW50Cit5eXBhcnNlIChwYXJzZXIpCisgICAgUGFyc2VyJiBwYXJzZXI7CisjZW5kaWYKKyNlbmRp
ZgoreworICAvKiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworaW50IHl5Y2hhcjsKKworLyog
VGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICovCitZWVNUWVBF
IHl5bHZhbDsKKworLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KK2ludCB5
eW5lcnJzOworCisgIGludCB5eXN0YXRlOworICBpbnQgeXluOworICBpbnQgeXlyZXN1bHQ7Cisg
IC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJs
ZWQuICAqLworICBpbnQgeXllcnJzdGF0dXM7CisgIC8qIExvb2stYWhlYWQgdG9rZW4gYXMgYW4g
aW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCisgIGludCB5eXRva2VuID0g
MDsKKyNpZiBZWUVSUk9SX1ZFUkJPU0UKKyAgLyogQnVmZmVyIGZvciBlcnJvciBtZXNzYWdlcywg
YW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4gICovCisgIGNoYXIgeXltc2didWZbMTI4XTsKKyAgY2hh
ciAqeXltc2cgPSB5eW1zZ2J1ZjsKKyAgWVlTSVpFX1QgeXltc2dfYWxsb2MgPSBzaXplb2YgeXlt
c2didWY7CisjZW5kaWYKKworICAvKiBUaHJlZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgorICAg
ICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLAorICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2Vt
YW50aWMgdmFsdWVzLAorICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgorCisgICAg
IFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlv
dmVyZmxvdworICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKworICAvKiBU
aGUgc3RhdGUgc3RhY2suICAqLworICB5eXR5cGVfaW50MTYgeXlzc2FbWVlJTklUREVQVEhdOwor
ICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNzYTsKKyAgeXl0eXBlX2ludDE2ICp5eXNzcDsKKwor
ICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLworICBZWVNUWVBFIHl5dnNhW1lZSU5J
VERFUFRIXTsKKyAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOworICBZWVNUWVBFICp5eXZzcDsKKwor
CisKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09IChOKSkK
KworICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOworCisgIC8qIFRoZSB2YXJp
YWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20gdGhl
CisgICAgIGFjdGlvbiByb3V0aW5lcy4gICovCisgIFlZU1RZUEUgeXl2YWw7CisKKworICAvKiBU
aGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBydWxlLgorICAg
ICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4gICovCisgIGlu
dCB5eWxlbiA9IDA7CisKKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIp
KTsKKworICB5eXN0YXRlID0gMDsKKyAgeXllcnJzdGF0dXMgPSAwOworICB5eW5lcnJzID0gMDsK
KyAgeXljaGFyID0gWVlFTVBUWTsJCS8qIENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCisK
KyAgLyogSW5pdGlhbGl6ZSBzdGFjayBwb2ludGVycy4KKyAgICAgV2FzdGUgb25lIGVsZW1lbnQg
b2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrCisgICAgIHNvIHRoYXQgdGhleSBzdGF5IG9uIHRo
ZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4KKyAgICAgVGhlIHdhc3RlZCBlbGVtZW50
cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQuICAqLworCisgIHl5c3NwID0geXlzczsKKyAgeXl2c3Ag
PSB5eXZzOworCisgIGdvdG8geXlzZXRzdGF0ZTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5bmV3c3RhdGUgLS0g
UHVzaCBhIG5ldyBzdGF0ZSwgd2hpY2ggaXMgZm91bmQgaW4geXlzdGF0ZS4gIHwKK2AtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwor
IHl5bmV3c3RhdGU6CisgIC8qIEluIGFsbCBjYXNlcywgd2hlbiB5b3UgZ2V0IGhlcmUsIHRoZSB2
YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2tzCisgICAgIGhhdmUganVzdCBiZWVuIHB1c2hlZC4gIFNv
IHB1c2hpbmcgYSBzdGF0ZSBoZXJlIGV2ZW5zIHRoZSBzdGFja3MuICAqLworICB5eXNzcCsrOwor
CisgeXlzZXRzdGF0ZToKKyAgKnl5c3NwID0geXlzdGF0ZTsKKworICBpZiAoeXlzcyArIHl5c3Rh
Y2tzaXplIC0gMSA8PSB5eXNzcCkKKyAgICB7CisgICAgICAvKiBHZXQgdGhlIGN1cnJlbnQgdXNl
ZCBzaXplIG9mIHRoZSB0aHJlZSBzdGFja3MsIGluIGVsZW1lbnRzLiAgKi8KKyAgICAgIFlZU0la
RV9UIHl5c2l6ZSA9IHl5c3NwIC0geXlzcyArIDE7CisKKyNpZmRlZiB5eW92ZXJmbG93CisgICAg
ICB7CisJLyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIHJlYWxsb2NhdGUgdGhlIHN0YWNrLiAgVXNl
IGNvcGllcyBvZgorCSAgIHRoZXNlIHNvIHRoYXQgdGhlICYncyBkb24ndCBmb3JjZSB0aGUgcmVh
bCBvbmVzIGludG8KKwkgICBtZW1vcnkuICAqLworCVlZU1RZUEUgKnl5dnMxID0geXl2czsKKwl5
eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKKworCisJLyogRWFjaCBzdGFjayBwb2ludGVyIGFk
ZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2YgdGhlCisJICAgZGF0YSBpbiB1c2UgaW4g
dGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQgdG8gYmUgYQorCSAgIGNvbmRpdGlvbmFs
IGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywgYnV0IHRoYXQgbWlnaHQKKwkgICBiZSB1
bmRlZmluZWQgaWYgeXlvdmVyZmxvdyBpcyBhIG1hY3JvLiAgKi8KKwl5eW92ZXJmbG93IChZWV8o
Im1lbW9yeSBleGhhdXN0ZWQiKSwKKwkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlz
c3ApLAorCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCisKKwkJICAgICZ5
eXN0YWNrc2l6ZSk7CisKKwl5eXNzID0geXlzczE7CisJeXl2cyA9IHl5dnMxOworICAgICAgfQor
I2Vsc2UgLyogbm8geXlvdmVyZmxvdyAqLworIyBpZm5kZWYgWVlTVEFDS19SRUxPQ0FURQorICAg
ICAgZ290byB5eWV4aGF1c3RlZGxhYjsKKyMgZWxzZQorICAgICAgLyogRXh0ZW5kIHRoZSBzdGFj
ayBvdXIgb3duIHdheS4gICovCisgICAgICBpZiAoWVlNQVhERVBUSCA8PSB5eXN0YWNrc2l6ZSkK
Kwlnb3RvIHl5ZXhoYXVzdGVkbGFiOworICAgICAgeXlzdGFja3NpemUgKj0gMjsKKyAgICAgIGlm
IChZWU1BWERFUFRIIDwgeXlzdGFja3NpemUpCisJeXlzdGFja3NpemUgPSBZWU1BWERFUFRIOwor
CisgICAgICB7CisJeXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7CisJdW5pb24geXlhbGxvYyAq
eXlwdHIgPQorCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFDS19CWVRF
UyAoeXlzdGFja3NpemUpKTsKKwlpZiAoISB5eXB0cikKKwkgIGdvdG8geXlleGhhdXN0ZWRsYWI7
CisJWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7CisJWVlTVEFDS19SRUxPQ0FURSAoeXl2cyk7CisK
KyMgIHVuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKKwlpZiAoeXlzczEgIT0geXlzc2EpCisJICBZWVNU
QUNLX0ZSRUUgKHl5c3MxKTsKKyAgICAgIH0KKyMgZW5kaWYKKyNlbmRpZiAvKiBubyB5eW92ZXJm
bG93ICovCisKKyAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7CisgICAgICB5eXZzcCA9
IHl5dnMgKyB5eXNpemUgLSAxOworCisKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNr
IHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwKKwkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3Rh
Y2tzaXplKSk7CisKKyAgICAgIGlmICh5eXNzICsgeXlzdGFja3NpemUgLSAxIDw9IHl5c3NwKQor
CVlZQUJPUlQ7CisgICAgfQorCisgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRl
ICVkXG4iLCB5eXN0YXRlKSk7CisKKyAgZ290byB5eWJhY2t1cDsKKworLyotLS0tLS0tLS0tLS4K
K3wgeXliYWNrdXAuICB8CitgLS0tLS0tLS0tLS0qLworeXliYWNrdXA6CisKKyAgLyogRG8gYXBw
cm9wcmlhdGUgcHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQorICAg
ICBsb29rLWFoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUg
b25lLiAgKi8KKworICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCBy
ZWZlcmVuY2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIHl5biA9IHl5cGFjdFt5eXN0YXRl
XTsKKyAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKKyAgICBnb3RvIHl5ZGVmYXVsdDsKKworICAv
KiBOb3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhh
dmUgb25lLiAgKi8KKworICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3Ig
YSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkK
KyAgICB7CisgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJSZWFkaW5nIGEgdG9rZW46ICIpKTsK
KyAgICAgIHl5Y2hhciA9IFlZTEVYOworICAgIH0KKworICBpZiAoeXljaGFyIDw9IFlZRU9GKQor
ICAgIHsKKyAgICAgIHl5Y2hhciA9IHl5dG9rZW4gPSBZWUVPRjsKKyAgICAgIFlZRFBSSU5URiAo
KHN0ZGVyciwgIk5vdyBhdCBlbmQgb2YgaW5wdXQuXG4iKSk7CisgICAgfQorICBlbHNlCisgICAg
eworICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOworICAgICAgWVlfU1lNQk9M
X1BSSU5UICgiTmV4dCB0b2tlbiBpcyIsIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MpOworICAg
IH0KKworICAvKiBJZiB0aGUgcHJvcGVyIGFjdGlvbiBvbiBzZWVpbmcgdG9rZW4gWVlUT0tFTiBp
cyB0byByZWR1Y2Ugb3IgdG8KKyAgICAgZGV0ZWN0IGFuIGVycm9yLCB0YWtlIHRoYXQgYWN0aW9u
LiAgKi8KKyAgeXluICs9IHl5dG9rZW47CisgIGlmICh5eW4gPCAwIHx8IFlZTEFTVCA8IHl5biB8
fCB5eWNoZWNrW3l5bl0gIT0geXl0b2tlbikKKyAgICBnb3RvIHl5ZGVmYXVsdDsKKyAgeXluID0g
eXl0YWJsZVt5eW5dOworICBpZiAoeXluIDw9IDApCisgICAgeworICAgICAgaWYgKHl5biA9PSAw
IHx8IHl5biA9PSBZWVRBQkxFX05JTkYpCisJZ290byB5eWVycmxhYjsKKyAgICAgIHl5biA9IC15
eW47CisgICAgICBnb3RvIHl5cmVkdWNlOworICAgIH0KKworICBpZiAoeXluID09IFlZRklOQUwp
CisgICAgWVlBQ0NFUFQ7CisKKyAgLyogQ291bnQgdG9rZW5zIHNoaWZ0ZWQgc2luY2UgZXJyb3I7
IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBlcnJvcgorICAgICBzdGF0dXMuICAqLworICBpZiAoeXll
cnJzdGF0dXMpCisgICAgeXllcnJzdGF0dXMtLTsKKworICAvKiBTaGlmdCB0aGUgbG9vay1haGVh
ZCB0b2tlbi4gICovCisgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXl0b2tlbiwgJnl5
bHZhbCwgJnl5bGxvYyk7CisKKyAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbiB1bmxlc3Mg
aXQgaXMgZW9mLiAgKi8KKyAgaWYgKHl5Y2hhciAhPSBZWUVPRikKKyAgICB5eWNoYXIgPSBZWUVN
UFRZOworCisgIHl5c3RhdGUgPSB5eW47CisgICorK3l5dnNwID0geXlsdmFsOworCisgIGdvdG8g
eXluZXdzdGF0ZTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWRlZmF1bHQgLS0gZG8gdGhlIGRlZmF1bHQgYWN0
aW9uIGZvciB0aGUgY3VycmVudCBzdGF0ZS4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWRlZmF1bHQ6CisgIHl5biA9
IHl5ZGVmYWN0W3l5c3RhdGVdOworICBpZiAoeXluID09IDApCisgICAgZ290byB5eWVycmxhYjsK
KyAgZ290byB5eXJlZHVjZTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgor
fCB5eXJlZHVjZSAtLSBEbyBhIHJlZHVjdGlvbi4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCit5eXJlZHVjZToKKyAgLyogeXluIGlzIHRoZSBudW1iZXIgb2YgYSBydWxlIHRv
IHJlZHVjZSB3aXRoLiAgKi8KKyAgeXlsZW4gPSB5eXIyW3l5bl07CisKKyAgLyogSWYgWVlMRU4g
aXMgbm9uemVybywgaW1wbGVtZW50IHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBhY3Rpb246Cisg
ICAgIGAkJCA9ICQxJy4KKworICAgICBPdGhlcndpc2UsIHRoZSBmb2xsb3dpbmcgbGluZSBzZXRz
IFlZVkFMIHRvIGdhcmJhZ2UuCisgICAgIFRoaXMgYmVoYXZpb3IgaXMgdW5kb2N1bWVudGVkIGFu
ZCBCaXNvbgorICAgICB1c2VycyBzaG91bGQgbm90IHJlbHkgdXBvbiBpdC4gIEFzc2lnbmluZyB0
byBZWVZBTAorICAgICB1bmNvbmRpdGlvbmFsbHkgbWFrZXMgdGhlIHBhcnNlciBhIGJpdCBzbWFs
bGVyLCBhbmQgaXQgYXZvaWRzIGEKKyAgICAgR0NDIHdhcm5pbmcgdGhhdCBZWVZBTCBtYXkgYmUg
dXNlZCB1bmluaXRpYWxpemVkLiAgKi8KKyAgeXl2YWwgPSB5eXZzcFsxLXl5bGVuXTsKKworCisg
IFlZX1JFRFVDRV9QUklOVCAoeXluKTsKKyAgc3dpdGNoICh5eW4pCisgICAgeworICAgICAgICBj
YXNlIDI6CisjbGluZSAxMTUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAg
ICAgICAgcGFyc2VyLnNldFBhcnNlUmVzdWx0KHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigo
eXl2c3BbKDEpIC0gKDEpXS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSA0OgorI2xpbmUgMTI2ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7Cisg
ICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpID0gKHl5dnNwWygxKSAtICgxKV0ubG9jYXRpb25Q
YXRoKTsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCktPnNldEFic29sdXRlKCk7CisgICAg
O30KKyAgICBicmVhazsKKworICBjYXNlIDY6CisjbGluZSAxMzYgIldlYkNvcmUveG1sL1hQYXRo
R3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSBuZXcgTG9j
YXRpb25QYXRoOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA3OgorI2xpbmUgMTQxICJX
ZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5sb2NhdGlv
blBhdGgpID0gKHl5dnNwWygyKSAtICgyKV0ubG9jYXRpb25QYXRoKTsKKyAgICA7fQorICAgIGJy
ZWFrOworCisgIGNhc2UgODoKKyNsaW5lIDE0NiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnki
CisgICAgeworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKSA9ICh5eXZzcFsoMikgLSAoMild
LmxvY2F0aW9uUGF0aCk7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpLT5wcmVwZW5kU3Rl
cChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygxKSAtICgyKV0uc3RlcCkpKTsKKyAgICA7
fQorICAgIGJyZWFrOworCisgIGNhc2UgOToKKyNsaW5lIDE1NCAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKSA9IG5ldyBMb2Nh
dGlvblBhdGg7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpLT5hcHBlbmRTdGVwKHN0ZDo6
dW5pcXVlX3B0cjxTdGVwPigoeXl2c3BbKDEpIC0gKDEpXS5zdGVwKSkpOworICAgIDt9CisgICAg
YnJlYWs7CisKKyAgY2FzZSAxMDoKKyNsaW5lIDE2MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFy
LnkiCisgICAgeworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKSA9ICh5eXZzcFsoMSkgLSAo
MyldLmxvY2F0aW9uUGF0aCk7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpLT5hcHBlbmRT
dGVwKHN0ZDo6dW5pcXVlX3B0cjxTdGVwPigoeXl2c3BbKDMpIC0gKDMpXS5zdGVwKSkpOworICAg
IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxMToKKyNsaW5lIDE2NiAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKSA9ICh5eXZz
cFsoMSkgLSAoMyldLmxvY2F0aW9uUGF0aCk7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgp
LT5hcHBlbmRTdGVwKHN0ZDo6dW5pcXVlX3B0cjxTdGVwPigoeXl2c3BbKDIpIC0gKDMpXS5zdGVw
KSkpOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+YXBwZW5kU3RlcChzdGQ6OnVuaXF1
ZV9wdHI8U3RlcD4oKHl5dnNwWygzKSAtICgzKV0uc3RlcCkpKTsKKyAgICA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgMTI6CisjbGluZSAxNzUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
ICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN0ZXA6Ok5vZGVUZXN0PiBub2RlVGVzdCgo
eXl2c3BbKDEpIC0gKDIpXS5ub2RlVGVzdCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0ZUxpc3QoKHl5dnNwWygy
KSAtICgyKV0uZXhwcmVzc2lvblZlY3RvcikpOworICAgICAgICBpZiAocHJlZGljYXRlTGlzdCkK
KyAgICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKFN0ZXA6OkNoaWxkQXhpcywgV1RG
TW92ZSgqbm9kZVRlc3QpLCBXVEZNb3ZlKCpwcmVkaWNhdGVMaXN0KSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKFN0ZXA6OkNoaWxkQXhpcywgV1RG
TW92ZSgqbm9kZVRlc3QpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTM6CisjbGlu
ZSAxODUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgU3RyaW5n
IG5hbWV0ZXN0ID0gYWRvcHRSZWYoKHl5dnNwWygxKSAtICgyKV0uc3RyaW5nKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+Pj4gcHJl
ZGljYXRlTGlzdCgoeXl2c3BbKDIpIC0gKDIpXS5leHByZXNzaW9uVmVjdG9yKSk7CisKKyAgICAg
ICAgU3RyaW5nIGxvY2FsTmFtZTsKKyAgICAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSTsKKyAgICAg
ICAgaWYgKCFwYXJzZXIuZXhwYW5kUXVhbGlmaWVkTmFtZShuYW1ldGVzdCwgbG9jYWxOYW1lLCBu
YW1lc3BhY2VVUkkpKSB7CisgICAgICAgICAgICAoeXl2YWwuc3RlcCkgPSBudWxscHRyOworICAg
ICAgICAgICAgWVlBQk9SVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcmVkaWNhdGVMaXN0
KQorICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAoU3RlcDo6Q2hpbGRBeGlzLCBT
dGVwOjpOb2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFtZXNw
YWNlVVJJKSwgV1RGTW92ZSgqcHJlZGljYXRlTGlzdCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpDaGlsZEF4aXMsIFN0ZXA6Ok5vZGVU
ZXN0KFN0ZXA6Ok5vZGVUZXN0OjpOYW1lVGVzdCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsK
KyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTQ6CisjbGluZSAyMDMgIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN0ZXA6Ok5v
ZGVUZXN0PiBub2RlVGVzdCgoeXl2c3BbKDIpIC0gKDMpXS5ub2RlVGVzdCkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IHByZWRp
Y2F0ZUxpc3QoKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvblZlY3RvcikpOworCisgICAgICAg
IGlmIChwcmVkaWNhdGVMaXN0KQorICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAo
KHl5dnNwWygxKSAtICgzKV0uYXhpcyksIFdURk1vdmUoKm5vZGVUZXN0KSwgV1RGTW92ZSgqcHJl
ZGljYXRlTGlzdCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAoeXl2YWwuc3RlcCkgPSBu
ZXcgU3RlcCgoeXl2c3BbKDEpIC0gKDMpXS5heGlzKSwgV1RGTW92ZSgqbm9kZVRlc3QpKTsKKyAg
ICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTU6CisjbGluZSAyMTQgIldlYkNvcmUveG1sL1hQ
YXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgU3RyaW5nIG5hbWV0ZXN0ID0gYWRvcHRSZWYo
KHl5dnNwWygyKSAtICgzKV0uc3RyaW5nKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+Pj4gcHJlZGljYXRlTGlzdCgoeXl2c3BbKDMp
IC0gKDMpXS5leHByZXNzaW9uVmVjdG9yKSk7CisKKyAgICAgICAgU3RyaW5nIGxvY2FsTmFtZTsK
KyAgICAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSTsKKyAgICAgICAgaWYgKCFwYXJzZXIuZXhwYW5k
UXVhbGlmaWVkTmFtZShuYW1ldGVzdCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKSB7CisgICAg
ICAgICAgICAoeXl2YWwuc3RlcCkgPSBudWxscHRyOworICAgICAgICAgICAgWVlBQk9SVDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChwcmVkaWNhdGVMaXN0KQorICAgICAgICAgICAgKHl5dmFs
LnN0ZXApID0gbmV3IFN0ZXAoKHl5dnNwWygxKSAtICgzKV0uYXhpcyksIFN0ZXA6Ok5vZGVUZXN0
KFN0ZXA6Ok5vZGVUZXN0OjpOYW1lVGVzdCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpLCBXVEZN
b3ZlKCpwcmVkaWNhdGVMaXN0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICh5eXZhbC5z
dGVwKSA9IG5ldyBTdGVwKCh5eXZzcFsoMSkgLSAoMyldLmF4aXMpLCBTdGVwOjpOb2RlVGVzdChT
dGVwOjpOb2RlVGVzdDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSk7CisgICAg
O30KKyAgICBicmVhazsKKworICBjYXNlIDE4OgorI2xpbmUgMjM4ICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5heGlzKSA9IFN0ZXA6OkF0dHJpYnV0
ZUF4aXM7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDE5OgorI2xpbmUgMjQ1ICJXZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5ub2RlVGVzdCkg
PSBuZXcgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6OkFueU5vZGVUZXN0KTsKKyAgICA7
fQorICAgIGJyZWFrOworCisgIGNhc2UgMjA6CisjbGluZSAyNTAgIldlYkNvcmUveG1sL1hQYXRo
R3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLm5vZGVUZXN0KSA9IG5ldyBTdGVwOjpO
b2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6VGV4dE5vZGVUZXN0KTsKKyAgICA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgMjE6CisjbGluZSAyNTUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
ICAgIHsKKyAgICAgICAgKHl5dmFsLm5vZGVUZXN0KSA9IG5ldyBTdGVwOjpOb2RlVGVzdChTdGVw
OjpOb2RlVGVzdDo6Q29tbWVudE5vZGVUZXN0KTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNh
c2UgMjI6CisjbGluZSAyNjAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAg
ICAgICAgKHl5dmFsLm5vZGVUZXN0KSA9IG5ldyBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2RlVGVz
dDo6UHJvY2Vzc2luZ0luc3RydWN0aW9uTm9kZVRlc3QpOworICAgIDt9CisgICAgYnJlYWs7CisK
KyAgY2FzZSAyMzoKKyNsaW5lIDI2NSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAg
eworICAgICAgICBTdHJpbmcgbGl0ZXJhbCA9IGFkb3B0UmVmKCh5eXZzcFsoMykgLSAoNCldLnN0
cmluZykpOworICAgICAgICAoeXl2YWwubm9kZVRlc3QpID0gbmV3IFN0ZXA6Ok5vZGVUZXN0KFN0
ZXA6Ok5vZGVUZXN0OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25Ob2RlVGVzdCwgbGl0ZXJhbC5zdHJp
cFdoaXRlU3BhY2UoKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDI0OgorI2xpbmUg
MjczICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5l
eHByZXNzaW9uVmVjdG9yKSA9IG51bGxwdHI7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNl
IDI2OgorI2xpbmUgMjgyICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAg
ICAgICh5eXZhbC5leHByZXNzaW9uVmVjdG9yKSA9IG5ldyBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+PjsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb25WZWN0b3IpLT5hcHBlbmQo
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMSldLmV4cHJlc3Npb24p
KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDI3OgorI2xpbmUgMjg4ICJXZWJDb3Jl
L3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uVmVj
dG9yKSA9ICh5eXZzcFsoMSkgLSAoMildLmV4cHJlc3Npb25WZWN0b3IpOworICAgICAgICAoeXl2
YWwuZXhwcmVzc2lvblZlY3RvciktPmFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4o
KHl5dnNwWygyKSAtICgyKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisg
IGNhc2UgMjg6CisjbGluZSAyOTYgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsK
KyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gKHl5dnNwWygyKSAtICgzKV0uZXhwcmVzc2lv
bik7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDI5OgorI2xpbmUgMzAzICJXZWJDb3Jl
L3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBT
dGVwKFN0ZXA6OkRlc2NlbmRhbnRPclNlbGZBeGlzLCBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2Rl
VGVzdDo6QW55Tm9kZVRlc3QpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzA6Cisj
bGluZSAzMTAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5
dmFsLnN0ZXApID0gbmV3IFN0ZXAoU3RlcDo6U2VsZkF4aXMsIFN0ZXA6Ok5vZGVUZXN0KFN0ZXA6
Ok5vZGVUZXN0OjpBbnlOb2RlVGVzdCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAz
MToKKyNsaW5lIDMxNSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAg
ICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpQYXJlbnRBeGlzLCBTdGVwOjpOb2RlVGVz
dChTdGVwOjpOb2RlVGVzdDo6QW55Tm9kZVRlc3QpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisg
IGNhc2UgMzI6CisjbGluZSAzMjIgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsK
KyAgICAgICAgU3RyaW5nIG5hbWUgPSBhZG9wdFJlZigoeXl2c3BbKDEpIC0gKDEpXS5zdHJpbmcp
KTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFZhcmlhYmxlUmVmZXJlbmNlKG5h
bWUpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAzMzoKKyNsaW5lIDMyOCAiV2ViQ29y
ZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikg
PSAoeXl2c3BbKDIpIC0gKDMpXS5leHByZXNzaW9uKTsKKyAgICA7fQorICAgIGJyZWFrOworCisg
IGNhc2UgMzQ6CisjbGluZSAzMzMgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsK
KyAgICAgICAgU3RyaW5nIGxpdGVyYWwgPSBhZG9wdFJlZigoeXl2c3BbKDEpIC0gKDEpXS5zdHJp
bmcpKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFN0cmluZ0V4cHJlc3Npb24o
V1RGTW92ZShsaXRlcmFsKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDM1OgorI2xp
bmUgMzM5ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmlu
ZyBudW1lcmFsID0gYWRvcHRSZWYoKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKSk7CisgICAgICAg
ICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBOdW1iZXIobnVtZXJhbC50b0RvdWJsZSgpKTsKKyAg
ICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzc6CisjbGluZSAzNDkgIldlYkNvcmUveG1sL1hQ
YXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBhZG9wdFJlZigoeXl2
c3BbKDEpIC0gKDMpXS5zdHJpbmcpKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gWFBh
dGg6OkZ1bmN0aW9uOjpjcmVhdGUobmFtZSkucmVsZWFzZSgpOworICAgICAgICBpZiAoISh5eXZh
bC5leHByZXNzaW9uKSkKKyAgICAgICAgICAgIFlZQUJPUlQ7CisgICAgO30KKyAgICBicmVhazsK
KworICBjYXNlIDM4OgorI2xpbmUgMzU3ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAg
ICB7CisgICAgICAgIFN0cmluZyBuYW1lID0gYWRvcHRSZWYoKHl5dnNwWygxKSAtICg0KV0uc3Ry
aW5nKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+Pj4gYXJndW1lbnRMaXN0KCh5eXZzcFsoMykgLSAoNCldLmV4cHJlc3Npb25WZWN0
b3IpKTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gWFBhdGg6OkZ1bmN0aW9uOjpjcmVh
dGUobmFtZSwgV1RGTW92ZSgqYXJndW1lbnRMaXN0KSkucmVsZWFzZSgpOworICAgICAgICBpZiAo
ISh5eXZhbC5leHByZXNzaW9uKSkKKyAgICAgICAgICAgIFlZQUJPUlQ7CisgICAgO30KKyAgICBi
cmVhazsKKworICBjYXNlIDM5OgorI2xpbmUgMzY4ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uVmVjdG9yKSA9IG5ldyBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PjsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb25W
ZWN0b3IpLT5hcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAo
MSldLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDQwOgorI2xp
bmUgMzc0ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZh
bC5leHByZXNzaW9uVmVjdG9yKSA9ICh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb25WZWN0b3Ip
OworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3RvciktPmFwcGVuZChzdGQ6OnVuaXF1ZV9w
dHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgNDM6CisjbGluZSAzODggIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFVuaW9uKHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSks
IHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9u
KSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA0NDoKKyNsaW5lIDM5NSAiV2ViQ29y
ZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikg
PSAoeXl2c3BbKDEpIC0gKDEpXS5sb2NhdGlvblBhdGgpOworICAgIDt9CisgICAgYnJlYWs7CisK
KyAgY2FzZSA0NjoKKyNsaW5lIDQwMiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAg
eworICAgICAgICAoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpLT5zZXRBYnNvbHV0ZSgp
OworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9w
dHI8TG9jYXRpb25QYXRoPigoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7CisgICAg
O30KKyAgICBicmVhazsKKworICBjYXNlIDQ3OgorI2xpbmUgNDA4ICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZzcFsoMykgLSAoMyldLmxvY2F0aW9uUGF0
aCktPnByZXBlbmRTdGVwKHN0ZDo6dW5pcXVlX3B0cjxTdGVwPigoeXl2c3BbKDIpIC0gKDMpXS5z
dGVwKSkpOworICAgICAgICAoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpLT5zZXRBYnNv
bHV0ZSgpOworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgUGF0aChzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVu
aXF1ZV9wdHI8TG9jYXRpb25QYXRoPigoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpKSk7
CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDQ5OgorI2xpbmUgNDE5ICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+Pj4gcHJlZGljYXRlTGlzdCgoeXl2c3BbKDIpIC0g
KDIpXS5leHByZXNzaW9uVmVjdG9yKSk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5l
dyBGaWx0ZXIoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMildLmV4
cHJlc3Npb24pKSwgV1RGTW92ZSgqcHJlZGljYXRlTGlzdCkpOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSA1MToKKyNsaW5lIDQyOSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisg
ICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgTG9naWNhbE9wKExvZ2ljYWxP
cDo6T1BfT3IsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5l
eHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMp
XS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA1MzoKKyNsaW5l
IDQzOCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwu
ZXhwcmVzc2lvbikgPSBuZXcgTG9naWNhbE9wKExvZ2ljYWxPcDo6T1BfQW5kLCBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVu
aXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAg
ICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNTU6CisjbGluZSA0NDcgIldlYkNvcmUveG1sL1hQ
YXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IEVx
VGVzdE9wKCh5eXZzcFsoMikgLSAoMyldLmVxdWFsaXR5VGVzdE9wY29kZSksIHN0ZDo6dW5pcXVl
X3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5p
cXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uKSkpOworICAg
IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA1NzoKKyNsaW5lIDQ1NiAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgRXFU
ZXN0T3AoKHl5dnNwWygyKSAtICgzKV0uZXF1YWxpdHlUZXN0T3Bjb2RlKSwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7CisgICAg
O30KKyAgICBicmVhazsKKworICBjYXNlIDU5OgorI2xpbmUgNDY1ICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBOdW1l
cmljT3AoTnVtZXJpY09wOjpPUF9BZGQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2
c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigo
eXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSA2MDoKKyNsaW5lIDQ3MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgewor
ICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgTnVtZXJpY09wKE51bWVyaWNPcDo6T1Bf
U3ViLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVz
c2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhw
cmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNjI6CisjbGluZSA0Nzkg
IldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJl
c3Npb24pID0gbmV3IE51bWVyaWNPcCgoeXl2c3BbKDIpIC0gKDMpXS5udW1lcmljT3Bjb2RlKSwg
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24p
KSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Np
b24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDY0OgorI2xpbmUgNDg4ICJXZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9u
KSA9IG5ldyBOZWdhdGl2ZShzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygyKSAt
ICgyKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisKKy8qIExpbmUgMTI2
NyBvZiB5YWNjLmMuICAqLworI2xpbmUgMjA0OSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorICAgICAg
ZGVmYXVsdDogYnJlYWs7CisgICAgfQorICBZWV9TWU1CT0xfUFJJTlQgKCItPiAkJCA9IiwgeXly
MVt5eW5dLCAmeXl2YWwsICZ5eWxvYyk7CisKKyAgWVlQT1BTVEFDSyAoeXlsZW4pOworICB5eWxl
biA9IDA7CisgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CisKKyAgKisreXl2c3AgPSB5
eXZhbDsKKworCisgIC8qIE5vdyBgc2hpZnQnIHRoZSByZXN1bHQgb2YgdGhlIHJlZHVjdGlvbi4g
IERldGVybWluZSB3aGF0IHN0YXRlCisgICAgIHRoYXQgZ29lcyB0bywgYmFzZWQgb24gdGhlIHN0
YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQorICAgICBudW1iZXIgcmVkdWNlZCBi
eS4gICovCisKKyAgeXluID0geXlyMVt5eW5dOworCisgIHl5c3RhdGUgPSB5eXBnb3RvW3l5biAt
IFlZTlRPS0VOU10gKyAqeXlzc3A7CisgIGlmICgwIDw9IHl5c3RhdGUgJiYgeXlzdGF0ZSA8PSBZ
WUxBU1QgJiYgeXljaGVja1t5eXN0YXRlXSA9PSAqeXlzc3ApCisgICAgeXlzdGF0ZSA9IHl5dGFi
bGVbeXlzdGF0ZV07CisgIGVsc2UKKyAgICB5eXN0YXRlID0geXlkZWZnb3RvW3l5biAtIFlZTlRP
S0VOU107CisKKyAgZ290byB5eW5ld3N0YXRlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvciB8
CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZXJybGFiOgorICAv
KiBJZiBub3QgYWxyZWFkeSByZWNvdmVyaW5nIGZyb20gYW4gZXJyb3IsIHJlcG9ydCB0aGlzIGVy
cm9yLiAgKi8KKyAgaWYgKCF5eWVycnN0YXR1cykKKyAgICB7CisgICAgICArK3l5bmVycnM7Cisj
aWYgISBZWUVSUk9SX1ZFUkJPU0UKKyAgICAgIHl5ZXJyb3IgKHBhcnNlciwgWVlfKCJzeW50YXgg
ZXJyb3IiKSk7CisjZWxzZQorICAgICAgeworCVlZU0laRV9UIHl5c2l6ZSA9IHl5c3ludGF4X2Vy
cm9yICgwLCB5eXN0YXRlLCB5eWNoYXIpOworCWlmICh5eW1zZ19hbGxvYyA8IHl5c2l6ZSAmJiB5
eW1zZ19hbGxvYyA8IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkKKwkgIHsKKwkgICAgWVlTSVpFX1Qg
eXlhbGxvYyA9IDIgKiB5eXNpemU7CisJICAgIGlmICghICh5eXNpemUgPD0geXlhbGxvYyAmJiB5
eWFsbG9jIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCisJICAgICAgeXlhbGxvYyA9IFlZU1RB
Q0tfQUxMT0NfTUFYSU1VTTsKKwkgICAgaWYgKHl5bXNnICE9IHl5bXNnYnVmKQorCSAgICAgIFlZ
U1RBQ0tfRlJFRSAoeXltc2cpOworCSAgICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0Mg
KHl5YWxsb2MpOworCSAgICBpZiAoeXltc2cpCisJICAgICAgeXltc2dfYWxsb2MgPSB5eWFsbG9j
OworCSAgICBlbHNlCisJICAgICAgeworCQl5eW1zZyA9IHl5bXNnYnVmOworCQl5eW1zZ19hbGxv
YyA9IHNpemVvZiB5eW1zZ2J1ZjsKKwkgICAgICB9CisJICB9CisKKwlpZiAoMCA8IHl5c2l6ZSAm
JiB5eXNpemUgPD0geXltc2dfYWxsb2MpCisJICB7CisJICAgICh2b2lkKSB5eXN5bnRheF9lcnJv
ciAoeXltc2csIHl5c3RhdGUsIHl5Y2hhcik7CisJICAgIHl5ZXJyb3IgKHBhcnNlciwgeXltc2cp
OworCSAgfQorCWVsc2UKKwkgIHsKKwkgICAgeXllcnJvciAocGFyc2VyLCBZWV8oInN5bnRheCBl
cnJvciIpKTsKKwkgICAgaWYgKHl5c2l6ZSAhPSAwKQorCSAgICAgIGdvdG8geXlleGhhdXN0ZWRs
YWI7CisJICB9CisgICAgICB9CisjZW5kaWYKKyAgICB9CisKKworCisgIGlmICh5eWVycnN0YXR1
cyA9PSAzKQorICAgIHsKKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVz
ZSBsb29rLWFoZWFkIHRva2VuIGFmdGVyIGFuCisJIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KKwor
ICAgICAgaWYgKHl5Y2hhciA8PSBZWUVPRikKKwl7CisJICAvKiBSZXR1cm4gZmFpbHVyZSBpZiBh
dCBlbmQgb2YgaW5wdXQuICAqLworCSAgaWYgKHl5Y2hhciA9PSBZWUVPRikKKwkgICAgWVlBQk9S
VDsKKwl9CisgICAgICBlbHNlCisJeworCSAgeXlkZXN0cnVjdCAoIkVycm9yOiBkaXNjYXJkaW5n
IiwKKwkJICAgICAgeXl0b2tlbiwgJnl5bHZhbCwgcGFyc2VyKTsKKwkgIHl5Y2hhciA9IFlZRU1Q
VFk7CisJfQorICAgIH0KKworICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2stYWhlYWQg
dG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9yCisgICAgIHRva2VuLiAgKi8KKyAgZ290byB5
eWVycmxhYjE7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0uCit8IHl5ZXJyb3JsYWIgLS0gZXJyb3IgcmFpc2VkIGV4cGxpY2l0bHkgYnkg
WVlFUlJPUi4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLworeXllcnJvcmxhYjoKKworICAvKiBQYWNpZnkgY29tcGlsZXJzIGxpa2UgR0ND
IHdoZW4gdGhlIHVzZXIgY29kZSBuZXZlciBpbnZva2VzCisgICAgIFlZRVJST1IgYW5kIHRoZSBs
YWJlbCB5eWVycm9ybGFiIHRoZXJlZm9yZSBuZXZlciBhcHBlYXJzIGluIHVzZXIKKyAgICAgY29k
ZS4gICovCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5yZWFjaGFibGUtY29kZSIK
KyNlbmRpZgorICBpZiAoLypDT05TVENPTkQqLyAwKQorICAgICBnb3RvIHl5ZXJyb3JsYWI7Cisj
aWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYK
KworICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rp
b24gdHJpZ2dlcmVkCisgICAgIHRoaXMgWVlFUlJPUi4gICovCisgIFlZUE9QU1RBQ0sgKHl5bGVu
KTsKKyAgeXlsZW4gPSAwOworICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOworICB5eXN0
YXRlID0gKnl5c3NwOworICBnb3RvIHl5ZXJybGFiMTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZXJybGFi
MSAtLSBjb21tb24gY29kZSBmb3IgYm90aCBzeW50YXggZXJyb3IgYW5kIFlZRVJST1IuICB8Citg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCit5eWVycmxhYjE6CisgIHl5ZXJyc3RhdHVzID0gMzsJLyogRWFjaCByZWFsIHRva2Vu
IHNoaWZ0ZWQgZGVjcmVtZW50cyB0aGlzLiAgKi8KKworICBmb3IgKDs7KQorICAgIHsKKyAgICAg
IHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKKyAgICAgIGlmICh5eW4gIT0gWVlQQUNUX05JTkYpCisJ
eworCSAgeXluICs9IFlZVEVSUk9SOworCSAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1Qg
JiYgeXljaGVja1t5eW5dID09IFlZVEVSUk9SKQorCSAgICB7CisJICAgICAgeXluID0geXl0YWJs
ZVt5eW5dOworCSAgICAgIGlmICgwIDwgeXluKQorCQlicmVhazsKKwkgICAgfQorCX0KKworICAg
ICAgLyogUG9wIHRoZSBjdXJyZW50IHN0YXRlIGJlY2F1c2UgaXQgY2Fubm90IGhhbmRsZSB0aGUg
ZXJyb3IgdG9rZW4uICAqLworICAgICAgaWYgKHl5c3NwID09IHl5c3MpCisJWVlBQk9SVDsKKwor
CisgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmciLAorCQkgIHl5c3Rvc1t5eXN0YXRl
XSwgeXl2c3AsIHBhcnNlcik7CisgICAgICBZWVBPUFNUQUNLICgxKTsKKyAgICAgIHl5c3RhdGUg
PSAqeXlzc3A7CisgICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOworICAgIH0KKwor
ICBpZiAoeXluID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKKyAgKisreXl2c3AgPSB5eWx2
YWw7CisKKworICAvKiBTaGlmdCB0aGUgZXJyb3IgdG9rZW4uICAqLworICBZWV9TWU1CT0xfUFJJ
TlQgKCJTaGlmdGluZyIsIHl5c3Rvc1t5eW5dLCB5eXZzcCwgeXlsc3ApOworCisgIHl5c3RhdGUg
PSB5eW47CisgIGdvdG8geXluZXdzdGF0ZTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0uCit8IHl5YWNjZXB0bGFiIC0tIFlZQUNDRVBUIGNvbWVzIGhlcmUuICB8
CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWFjY2VwdGxhYjoK
KyAgeXlyZXN1bHQgPSAwOworICBnb3RvIHl5cmV0dXJuOworCisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWFib3J0bGFiIC0tIFlZQUJPUlQgY29tZXMgaGVyZS4g
IHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWFib3J0bGFiOgor
ICB5eXJlc3VsdCA9IDE7CisgIGdvdG8geXlyZXR1cm47CisKKyNpZm5kZWYgeXlvdmVyZmxvdwor
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5
eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAgfAorYC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlleGhhdXN0
ZWRsYWI6CisgIHl5ZXJyb3IgKHBhcnNlciwgWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOworICB5
eXJlc3VsdCA9IDI7CisgIC8qIEZhbGwgdGhyb3VnaC4gICovCisjZW5kaWYKKworeXlyZXR1cm46
CisgIGlmICh5eWNoYXIgIT0gWVlFT0YgJiYgeXljaGFyICE9IFlZRU1QVFkpCisgICAgIHl5ZGVz
dHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIsCisJCSB5eXRva2VuLCAmeXls
dmFsLCBwYXJzZXIpOworICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVs
ZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCisgICAgIHRoaXMgWVlBQk9SVCBvciBZWUFDQ0VQVC4g
ICovCisgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKKyAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3Nw
KTsKKyAgd2hpbGUgKHl5c3NwICE9IHl5c3MpCisgICAgeworICAgICAgeXlkZXN0cnVjdCAoIkNs
ZWFudXA6IHBvcHBpbmciLAorCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCwgcGFyc2VyKTsKKyAg
ICAgIFlZUE9QU1RBQ0sgKDEpOworICAgIH0KKyNpZm5kZWYgeXlvdmVyZmxvdworICBpZiAoeXlz
cyAhPSB5eXNzYSkKKyAgICBZWVNUQUNLX0ZSRUUgKHl5c3MpOworI2VuZGlmCisjaWYgWVlFUlJP
Ul9WRVJCT1NFCisgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKyAgICBZWVNUQUNLX0ZSRUUgKHl5
bXNnKTsKKyNlbmRpZgorICAvKiBNYWtlIHN1cmUgWVlJRCBpcyB1c2VkLiAgKi8KKyAgcmV0dXJu
IFlZSUQgKHl5cmVzdWx0KTsKK30KKworCisjbGluZSA0OTMgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTE3IEBACisjaWZuZGVmIENTU0dSQU1NQVJfSAorI2RlZmluZSBDU1NHUkFNTUFS
X0gKKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMuICAqLworCisvKiBT
a2VsZXRvbiBpbnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMgaW4gQworCisg
ICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisg
ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisKKy8qIEFzIGEgc3BlY2lhbCBleGNl
cHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucworICAgcGFy
dCBvciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0
IHdvcmsKKyAgIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBzbyBsb25nIGFzIHRoYXQgd29y
ayBpc24ndCBpdHNlbGYgYQorICAgcGFyc2VyIGdlbmVyYXRvciB1c2luZyB0aGUgc2tlbGV0b24g
b3IgYSBtb2RpZmllZCB2ZXJzaW9uIHRoZXJlb2YKKyAgIGFzIGEgcGFyc2VyIHNrZWxldG9uLiAg
QWx0ZXJuYXRpdmVseSwgaWYgeW91IG1vZGlmeSBvciByZWRpc3RyaWJ1dGUKKyAgIHRoZSBwYXJz
ZXIgc2tlbGV0b24gaXRzZWxmLCB5b3UgbWF5IChhdCB5b3VyIG9wdGlvbikgcmVtb3ZlIHRoaXMK
KyAgIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQg
dGhlIHJlc3VsdGluZworICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVy
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwg
ZXhjZXB0aW9uLgorCisgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCisgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICov
CisKKy8qIFRva2Vucy4gICovCisjaWZuZGVmIFlZVE9LRU5UWVBFCisjIGRlZmluZSBZWVRPS0VO
VFlQRQorICAgLyogUHV0IHRoZSB0b2tlbnMgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBzbyB0aGF0
IEdEQiBhbmQgb3RoZXIgZGVidWdnZXJzCisgICAgICBrbm93IGFib3V0IHRoZW0uICAqLworICAg
ZW51bSB5eXRva2VudHlwZSB7CisgICAgIE1VTE9QID0gMjU4LAorICAgICBSRUxPUCA9IDI1OSwK
KyAgICAgRVFPUCA9IDI2MCwKKyAgICAgTUlOVVMgPSAyNjEsCisgICAgIFBMVVMgPSAyNjIsCisg
ICAgIEFORCA9IDI2MywKKyAgICAgT1IgPSAyNjQsCisgICAgIEZVTkNUSU9OTkFNRSA9IDI2NSwK
KyAgICAgTElURVJBTCA9IDI2NiwKKyAgICAgTkFNRVRFU1QgPSAyNjcsCisgICAgIE5VTUJFUiA9
IDI2OCwKKyAgICAgTk9ERVRZUEUgPSAyNjksCisgICAgIFZBUklBQkxFUkVGRVJFTkNFID0gMjcw
LAorICAgICBBWElTTkFNRSA9IDI3MSwKKyAgICAgQ09NTUVOVCA9IDI3MiwKKyAgICAgRE9URE9U
ID0gMjczLAorICAgICBQSSA9IDI3NCwKKyAgICAgTk9ERSA9IDI3NSwKKyAgICAgU0xBU0hTTEFT
SCA9IDI3NiwKKyAgICAgVEVYVCA9IDI3NywKKyAgICAgWFBBVEhfRVJST1IgPSAyNzgKKyAgIH07
CisjZW5kaWYKKy8qIFRva2Vucy4gICovCisjZGVmaW5lIE1VTE9QIDI1OAorI2RlZmluZSBSRUxP
UCAyNTkKKyNkZWZpbmUgRVFPUCAyNjAKKyNkZWZpbmUgTUlOVVMgMjYxCisjZGVmaW5lIFBMVVMg
MjYyCisjZGVmaW5lIEFORCAyNjMKKyNkZWZpbmUgT1IgMjY0CisjZGVmaW5lIEZVTkNUSU9OTkFN
RSAyNjUKKyNkZWZpbmUgTElURVJBTCAyNjYKKyNkZWZpbmUgTkFNRVRFU1QgMjY3CisjZGVmaW5l
IE5VTUJFUiAyNjgKKyNkZWZpbmUgTk9ERVRZUEUgMjY5CisjZGVmaW5lIFZBUklBQkxFUkVGRVJF
TkNFIDI3MAorI2RlZmluZSBBWElTTkFNRSAyNzEKKyNkZWZpbmUgQ09NTUVOVCAyNzIKKyNkZWZp
bmUgRE9URE9UIDI3MworI2RlZmluZSBQSSAyNzQKKyNkZWZpbmUgTk9ERSAyNzUKKyNkZWZpbmUg
U0xBU0hTTEFTSCAyNzYKKyNkZWZpbmUgVEVYVCAyNzcKKyNkZWZpbmUgWFBBVEhfRVJST1IgMjc4
CisKKworCisKKyNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19E
RUNMQVJFRAordHlwZWRlZiB1bmlvbiBZWVNUWVBFCisjbGluZSA2MCAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCit7IAorICAgIE51bWVyaWNPcDo6T3Bjb2RlIG51bWVyaWNPcGNvZGU7IAor
ICAgIEVxVGVzdE9wOjpPcGNvZGUgZXF1YWxpdHlUZXN0T3Bjb2RlOworICAgIFN0cmluZ0ltcGwq
IHN0cmluZzsKKyAgICBTdGVwOjpBeGlzIGF4aXM7CisgICAgTG9jYXRpb25QYXRoKiBsb2NhdGlv
blBhdGg7CisgICAgU3RlcDo6Tm9kZVRlc3QqIG5vZGVUZXN0OworICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8RXhwcmVzc2lvbj4+KiBleHByZXNzaW9uVmVjdG9yOworICAgIFN0ZXAqIHN0ZXA7
CisgICAgRXhwcmVzc2lvbiogZXhwcmVzc2lvbjsgCit9CisvKiBMaW5lIDE1Mjkgb2YgeWFjYy5j
LiAgKi8KKyNsaW5lIDEwNyAiLi9YUGF0aEdyYW1tYXIuaHBwIgorCVlZU1RZUEU7CisjIGRlZmlu
ZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisj
IGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklB
TCAxCisjZW5kaWYKKworCisKKyNlbmRpZgpJbmRleDogU291cmNlL2NtYWtlL1dlYktpdENvbW1v
bi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9uLmNtYWtlCShy
ZXZpc2lvbiAyMDk4NjkpCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9uLmNtYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMywxMSArMTMsNiBAQCBpZiAoTk9UIEhBU19SVU5fV0VCS0lUX0NPTU1P
TikKICAgICAgICAgbGlzdChBUFBFTkQgQ01BS0VfUFJPR1JBTV9QQVRIICRFTlZ7U3lzdGVtRHJp
dmV9L2N5Z3dpbi9iaW4pCiAgICAgZW5kaWYgKCkKIAotICAgIGZpbmRfcGFja2FnZShCSVNPTiAy
LjEgUkVRVUlSRUQpCi0gICAgaWYgKCFBUFBMRSkKLSAgICAgICAgZmluZF9wYWNrYWdlKEZMRVgg
Mi41LjM0IFJFUVVJUkVEKQotICAgIGVuZGlmICgpCi0KICAgICAjIFRPRE8gRW5mb3JjZSB2ZXJz
aW9uIHJlcXVpcmVtZW50IGZvciBncGVyZgogICAgIGZpbmRfcGFja2FnZShHcGVyZiAzLjAuMSBS
RVFVSVJFRCkKIApJbmRleDogU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCShyZXZpc2lvbiAyMDk4Njkp
CisrKyBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDMsMjEgKzI0Myw2IEBAIG1hY3JvKEdFTkVSQVRFX0RPTV9OQU1FUyBfbmFtZXNwYWNlIF9hdHQK
ICAgICAgICAgVkVSQkFUSU0pCiBlbmRtYWNybygpCiAKLQotbWFjcm8oR0VORVJBVEVfR1JBTU1B
UiBfcHJlZml4IF9pbnB1dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0X3NvdXJjZSBfZmVhdHVyZXMp
Ci0gICAgIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Igd2luZmxleGJpc29uLCB3aGljaCBkb2Vz
IG5vdCB3b3JrIGNvcnJldGx5IHdoZW4KLSAgICAjIHJ1biBpbiBhIGRpZmZlcmVudCB3b3JraW5n
IGRpcmVjdG9yeSB0aGFuIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgotICAgIGdldF9maWxl
bmFtZV9jb21wb25lbnQoX3dvcmtpbmdfZGlyZWN0b3J5ICR7QklTT05fRVhFQ1VUQUJMRX0gUEFU
SCkKLQotICAgIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVUICR7X291dHB1dF9o
ZWFkZXJ9ICR7X291dHB1dF9zb3VyY2V9Ci0gICAgICAgIE1BSU5fREVQRU5ERU5DWSAke19pbnB1
dH0KLSAgICAgICAgREVQRU5EUyAke19pbnB1dH0KLSAgICAgICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtXRUJDT1JFX0RJUn0vY3NzL21ha2VncmFtbWFyLnBsIC0tb3V0cHV0RGlyICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSAtLWV4dHJhRGVmaW5lcyAiJHtfZmVhdHVyZXN9
IiAtLXByZXByb2Nlc3NvciAiJHtDT0RFX0dFTkVSQVRPUl9QUkVQUk9DRVNTT1J9IiAtLWJpc29u
ICIke0JJU09OX0VYRUNVVEFCTEV9IiAtLXN5bWJvbHNQcmVmaXggJHtfcHJlZml4fSAke19pbnB1
dH0KLSAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtfd29ya2luZ19kaXJlY3Rvcnl9Ci0gICAg
ICAgIFZFUkJBVElNKQotZW5kbWFjcm8oKQotCiBtYWNybyhNQUtFX0hBU0hfVE9PTFMgX3NvdXJj
ZSkKICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9uYW1lICR7X3NvdXJjZX0gTkFNRV9XRSkK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297230</attachid>
            <date>2016-12-15 15:13:13 -0800</date>
            <delta_ts>2016-12-15 15:30:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165783-20161215151220.patch</filename>
            <type>text/plain</type>
            <size>91727</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTg2
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEy
LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGZsZXggYW5kIGJpc29uIGJ1aWxkIGRlcGVuZGVuY2llczsgY29tbWl0IGdlbmVy
YXRlZCBYUGF0aCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NTc4MworCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisK
KyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9uLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2U6CisKIDIwMTYtMTItMTAgIEtvbnN0YW50aW4g
VG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIFtjbWFrZV0gSW5jbHVkZSBX
VEYsIEpTQywgYW5kIFdlYkNvcmUgaGVhZGVycyBhdXRvbWF0aWNhbGx5IHRvIHRhcmdlcnMgdXNp
bmcgdGhlbQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5ODY5KQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMTItMTUg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW1vdmUgZmxleCBhbmQgYmlzb24gYnVpbGQgZGVwZW5kZW5jaWVzOyBjb21taXQgZ2VuZXJhdGVk
IFhQYXRoIHBhcnNlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY1NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAg
ICAgICBmbGV4IGFuZCBiaXNvbiBhcmUgYW5ub3lpbmcgdG8gaW5zdGFsbCBhbmQgdXNlLCBlc3Bl
Y2lhbGx5IG9uIFdpbmRvd3MuCisgICAgICAgIFNpbmNlIG9ubHkgWFBhdGhHcmFtbWFyIHVzZXMg
dGhlbSBhbmQgdGhhdCdzIG5vdCBhY3RpdmVseSBkZXZlbG9wZWQsIGxldCdzIGp1c3QgY2hlY2sg
aW4gdGhlIG9uZSBnZW5lcmF0ZWQgZmlsZQorICAgICAgICBhbmQgbWFrZSBidWlsZGluZyBXZWJL
aXQgZWFzaWVyIGZvcmV2ZXIhCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvbWFrZWdyYW1tYXIucGw6IFJlbW92ZWQuCisgICAg
ICAgICogeG1sL1hQYXRoR3JhbW1hci5jcHA6IEFkZGVkLgorICAgICAgICAoeHBhdGh5eWxleCk6
CisgICAgICAgICh4cGF0aHl5ZXJyb3IpOgorICAgICAgICAoeXlzeW50YXhfZXJyb3IpOgorICAg
ICAgICAqIHhtbC9YUGF0aEdyYW1tYXIuaDogQWRkZWQuCisKIDIwMTYtMTItMTUgIFJ5YW4gSGFk
ZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBiaW5kaW5n
cyB0ZXN0cyBhZnRlciByMjA5ODY0LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDIwOTg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0yODczLDYgKzI4NzMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgeG1sL1hQYXRo
RXhwcmVzc2lvbi5jcHAKICAgICB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAKICAgICB4bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCisgICAgeG1sL1hQYXRoR3JhbW1hci5jcHAKICAgICB4bWwvWFBh
dGhOU1Jlc29sdmVyLmNwcAogICAgIHhtbC9YUGF0aE5vZGVTZXQuY3BwCiAgICAgeG1sL1hQYXRo
UGFyc2VyLmNwcApAQCAtMzY3NSw5ICszNjc2LDYgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogbGlz
dChBUFBFTkQgV2ViQ29yZV9ERVJJVkVEX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1BsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJ
VkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgUGx1
Z0luc1Jlc291cmNlc0RhdGEuY3BwIFBsdWdJbnNSZXNvdXJjZXMuaCkKIAotR0VORVJBVEVfR1JB
TU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9L3htbC9YUGF0aEdyYW1tYXIueSAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAgIiIpCi1saXN0KEFQUEVORCBXZWJDb3JlX0RFUklW
RURfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmNw
cCkKLQogc2V0KEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICJMQU5HVUFHRV9KQVZBU0NSSVBU
ICR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIpCiBsaXN0KEFQUEVORCBX
ZWJDb3JlVGVzdFN1cHBvcnRfSURMX0ZJTEVTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmlkbCkKIApJbmRleDogU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCShyZXZpc2lvbiAyMDk4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC05MDksNyArOTA5LDYgQEAgYWxsIDogXAog
ICAgIE1hdGhNTEVsZW1lbnRUeXBlSGVscGVycy5oIFwKICAgICBNYXRoTUxOYW1lcy5jcHAgXAog
ICAgIE1hdGhNTE5hbWVzLmggXAotICAgIFhQYXRoR3JhbW1hci5jcHAgXAogIwogCiAjIC0tLS0t
LS0tCkBAIC0xMDIyLDIyICsxMDIxLDYgQEAgQ29sb3JEYXRhLmNwcCA6IHBsYXRmb3JtL0NvbG9y
RGF0YS5ncGVyZgogCiAjIC0tLS0tLS0tCiAKLSMgUGF0aCB0byBiaXNvbgotCi1pZmVxICgkKE9T
KSxNQUNPUykKLUJJU09OPSQoc2hlbGwgeGNydW4gLWZpbmQgYmlzb24pCi1lbHNlCi1CSVNPTj1i
aXNvbgotZW5kaWYKLQotIyAtLS0tLS0tLQotCi0jIFhQYXRoIGdyYW1tYXIKLVhQYXRoR3JhbW1h
ci5jcHAgOiB4bWwvWFBhdGhHcmFtbWFyLnkgJChQUk9KRUNUX0ZJTEUpCi0JJChQRVJMKSAkKFdl
YkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAtLW91dHB1dERpciAuIC0tYmlzb24gIiQoQklTT04p
IiAtLXN5bWJvbHNQcmVmaXggeHBhdGh5eSAkPAotCi0jIC0tLS0tLS0tCi0KICMgV2ViUlRDIHNj
cmlwdHMKIAogV0VCQ09SRV9TRFBfUFJPQ0VTU09SX1NDUklQVFMgPSAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIwOTg2OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzcxLDggKzc3MSw2IEBACiAJCTFBNzUwRDhEMEE5MEU1
MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc1MEQ4QjBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2Rl
SXRlcmF0b3IuY3BwICovOyB9OwogCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2Rl
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNzUwRDhDMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNzUwREQ0MEE5MEU3Mjkw
MDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc1MEREMzBBOTBFNzI5MDAwRkYyMTUgLyogSlNO
b2RlSXRlcmF0b3JDdXN0b20uY3BwICovOyB9OwotCQkxQTc2MjlENTBBMDc0MjUxMDA5ODlGNUIg
LyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNzYyOUQzMEEwNzQyNTEwMDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuY3BwICov
OyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVucmVhY2hhYmxlLWNvZGUiOyB9
OyB9OwotCQkxQTc2MjlENjBBMDc0MjUxMDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc2MjlENDBBMDc0MjUx
MDA5ODlGNUIgLyogWFBhdGhHcmFtbWFyLmggKi87IH07CiAJCTFBNzYyQzczMEEwNzRGMjYwMDk4
OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNzYyQzZCMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZh
bHVhdG9yLmNwcCAqLzsgfTsKIAkJMUE3NjJDNzQwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhF
dmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNzYyQzZDMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmggKi87IH07CiAJ
CTFBNzYyQzc1MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTc2MkM2RDBBMDc0RjI2
MDA5ODlGNUIgLyogSlNYUGF0aEV4cHJlc3Npb24uY3BwICovOyB9OwpAQCAtMjQ0Nyw2ICsyNDQ1
LDcgQEAKIAkJNUM5QTdBNzUxQUEwRjZFQTAwOTU4QUNGIC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzOTMw
NUUxQUEwRjZBOTAwMjlDODE2IC8qIERGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwICovOyB9OwogCQk1
QzlBN0E3NjFBQTBGNkVEMDA5NThBQ0YgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzM5MzA2MDFBQTBG
NkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAgKi87IH07CiAJCTVDOUI4
NjBDMUMyMUUzQzkwMDExMEYzNiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUI4NjBCMUMyMUUzQzYwMDExMEYz
NiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSAqLzsgfTsKKwkJNUM5RUYxNzExREZGNzFDQzAwQTQ1
MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzlFRjE2RjFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNw
cCAqLzsgfTsKIAkJNUNCMzdGRkUxQzYyRDI4QzAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9j
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0Iz
N0ZGQzFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcCAqLzsgfTsKIAkJ
NUNCMzdGRkYxQzYyRDJBMTAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMzdGRkQxQzYyRDI3ODAw
RjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oICovOyB9OwogCQk1Q0JDOERBQzFBQUEzMDIy
MDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUExQUFBMzAyMjAwRTFDODAz
IC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcCAqLzsgfTsKQEAgLTc3ODQsOCArNzc4
Myw2IEBACiAJCTFBNzUwRDhCMEE5MEU1MjEwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlSXRlcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc1MEQ4QzBBOTBFNTIxMDAwRkYyMTUg
LyogSlNOb2RlSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Tm9kZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzUwREQzMEE5
MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNzYyOUQzMEEwNzQyNTEwMDk4OUY1QiAvKiBYUGF0aEdy
YW1tYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhQYXRoR3Jh
bW1hci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNzYyOUQ0MEEwNzQyNTEw
MDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhQYXRoR3JhbW1hci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTc2MkM2
QjBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV2YWx1YXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYUGF0aEV2YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBNzYyQzZDMEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZh
bHVhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hQYXRoRXZhbHVh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzYyQzZEMEEwNzRGMjYwMDk4
OUY1QiAvKiBKU1hQYXRoRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNYUGF0aEV4cHJlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTY5NSw2ICs5NjkyLDggQEAKIAkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8q
IFVSTFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZE
IC8qIFNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
Y2tldFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUI4NjBCMUMy
MUUzQzYwMDExMEYzNiAvKiBOZXR3b3JrTG9hZFRpbWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkVGltaW5nLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzlFRjE2RjFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhQYXRoR3JhbW1hci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOUVGMTcwMURGRjcxOTkwMEE0NTJF
MyAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFBh
dGhHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjM3RkZDMUM2MkQy
NzgwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkQxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9y
TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvck1v
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzhEQUExQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NTM1LDggKzE3NTM0LDYgQEAKIAkJCQlBODMzQzgw
QjBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCAqLywKIAkJCQlFMTVBMzZEODExMDQ1NzI3
MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgKi8sCiAJCQkJRTE1QTM2RDYxMTA0NTcyMDAwQjdC
NjM5IC8qIFhNTE5TTmFtZXMuaCAqLywKLQkJCQkxQTc2MjlEMzBBMDc0MjUxMDA5ODlGNUIgLyog
WFBhdGhHcmFtbWFyLmNwcCAqLywKLQkJCQkxQTc2MjlENDBBMDc0MjUxMDA5ODlGNUIgLyogWFBh
dGhHcmFtbWFyLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJ
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmU7CkBAIC0yMzA2Myw2ICsyMzA2MCw4IEBACiAJ
CQkJMUFCN0ZDNEUwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbk5vZGUuaCAqLywK
IAkJCQkxQUI3RkM0RjBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhGdW5jdGlvbnMuY3BwICovLAog
CQkJCTFBQjdGQzUwMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEZ1bmN0aW9ucy5oICovLAorCQkJ
CTVDOUVGMTZGMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwICovLAorCQkJCTVD
OUVGMTcwMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuaCAqLywKIAkJCQkxQUI3RkM1
MTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhHcmFtbWFyLnkgKi8sCiAJCQkJRTFFQzI5OUQwQkIw
NEM2QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5jcHAgKi8sCiAJCQkJRTFFQzI5OUUwQkIwNEM2
QjAwRUExODdCIC8qIFhQYXRoTm9kZVNldC5oICovLApAQCAtMjgyNzMsNyArMjgyNzIsNiBAQAog
CQkJCTFBQjdGQzZDMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQjdGQzZGMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV4cHJlc3Npb25O
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM3MTBBOEI5MkVDMDBEOUQzN0IgLyogWFBh
dGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNzYyOUQ2MEEwNzQyNTEwMDk4OUY1
QiAvKiBYUGF0aEdyYW1tYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUMyOUEwMEJCMDRDNkIw
MEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzc2MEE4
QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QjdGQzc5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMDQyMiw2ICszMDQyMCw3IEBACiAJCQkJMEYzNkU3MzkxQkQxODRCOTAwMkRCODkxIC8qIExh
eW91dFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4
IC8qIExheW91dFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzNCMUZDMEYwRTQxNzAw
MDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QzlFRjE3
MTFERkY3MUNDMDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0QjY1QTVBMTMyRkFBRjkwMDcwRTdCRSAvKiBMZWdhY3lUaWxlR3JpZC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUU0MjRBM0EwMTMzMERGMUUwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlFNEI2NUE1RTEzMkZBREI2MDA3MEU3QkUgLyogTGVnYWN5
VGlsZUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTczOCw3ICszMTczNyw2IEBACiAJCQkJ
MUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RkM2RTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM3MDBBOEI5MkVDMDBEOUQzN0IgLyogWFBh
dGhGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUE3NjI5RDUwQTA3NDI1MTAwOTg5
RjVCIC8qIFhQYXRoR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVDMjk5RjBCQjA0
QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdG
Qzc1MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aE5TUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFCN0ZDNzgwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAkocmV2aXNpb24gMjA5ODY5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCShub25leGlzdGVudCkKQEAg
LTEsOTkgKzAsMCBAQAotIyEgL3Vzci9iaW4vcGVybAotIwotIyAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgcHJvamVjdAotIwotIyAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSMKLSMgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSMgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSMgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotIwotIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIyAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0jICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi11c2Ugc3RyaWN0OwotdXNl
IHdhcm5pbmdzOwotdXNlIEZpbmRCaW47Ci11c2UgbGliICIkRmluZEJpbjo6QmluLy4uL2JpbmRp
bmdzL3NjcmlwdHMiOwotCi11c2UgRmlsZTo6QmFzZW5hbWU7Ci11c2UgRmlsZTo6U3BlYzsKLXVz
ZSBHZXRvcHQ6Okxvbmc7Ci0KLW15ICRvdXRwdXREaXIgPSAiLiI7Ci1teSAkZXh0cmFEZWZpbmVz
ID0gIiI7Ci1teSAkc3ltYm9sc1ByZWZpeCA9ICIiOwotbXkgJHByZXByb2Nlc3NvciA9ICIiOwot
bXkgJHByZXByb2Nlc3NPbmx5ID0gMDsKLW15ICRiaXNvbiA9ICJiaXNvbiI7Ci0KLUdldE9wdGlv
bnMoCi0gICAgJ291dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKLSAgICAnZXh0cmFEZWZpbmVz
PXMnID0+IFwkZXh0cmFEZWZpbmVzLAotICAgICdiaXNvbj1zJyA9PiBcJGJpc29uLAotICAgICdw
cmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCi0gICAgJ3ByZXByb2Nlc3NPbmx5JyA9
PiBcJHByZXByb2Nlc3NPbmx5LAotICAgICdzeW1ib2xzUHJlZml4PXMnID0+IFwkc3ltYm9sc1By
ZWZpeAotKTsKLQotbXkgJGdyYW1tYXJGaWxlUGF0aCA9ICRBUkdWWzBdOwotbXkgJGdyYW1tYXJJ
bmNsdWRlc0ZpbGVQYXRoID0gQEFSR1YgPiAwID8gJEFSR1ZbMV0gOiAiIjsKLQotaWYgKCFsZW5n
dGgoJHN5bWJvbHNQcmVmaXgpICYmICEkcHJlcHJvY2Vzc09ubHkpIHsKLSAgICBkaWUgIk5lZWQg
YSBzeW1ib2xzIHByZWZpeCB0byBnaXZlIHRvIGJpc29uIChlLmcuIGNzc3l5LCB4cGF0aHl5KSI7
Ci19Ci0KLW15ICgkZmlsZW5hbWUsICRiYXNlUGF0aCwgJHN1ZmZpeCkgPSBmaWxlcGFyc2UoJGdy
YW1tYXJGaWxlUGF0aCwgKCIueSIsICIueS5pbiIpKTsKLQotaWYgKCRzdWZmaXggZXEgIi55Lmlu
IikgewotICAgIG15ICRncmFtbWFyRmlsZU91dFBhdGggPSBGaWxlOjpTcGVjLT5qb2luKCRvdXRw
dXREaXIsICIkZmlsZW5hbWUueSIpOwotICAgIGlmICghJGdyYW1tYXJJbmNsdWRlc0ZpbGVQYXRo
KSB7Ci0gICAgICAgICRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCA9ICIke2Jhc2VQYXRofSR7Zmls
ZW5hbWV9LnkuaW5jbHVkZXMiOwotICAgIH0KLQotICAgIG9wZW4gR1JBTU1BUiwgIj4kZ3JhbW1h
ckZpbGVPdXRQYXRoIiBvciBkaWU7Ci0gICAgb3BlbiBJTkNMVURFUywgIjwkZ3JhbW1hckluY2x1
ZGVzRmlsZVBhdGgiIG9yIGRpZTsKLQotICAgIHJlcXVpcmUgcHJlcHJvY2Vzc29yOwotCi0gICAg
d2hpbGUgKDxJTkNMVURFUz4pIHsKLSAgICAgICAgcHJpbnQgR1JBTU1BUjsKLSAgICB9Ci0gICAg
cHJpbnQgR1JBTU1BUiBqb2luKCIiLCBhcHBseVByZXByb2Nlc3NvcigkZ3JhbW1hckZpbGVQYXRo
LCAkZXh0cmFEZWZpbmVzLCAkcHJlcHJvY2Vzc29yKSk7Ci0gICAgY2xvc2UgR1JBTU1BUjsKLQot
ICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3JhbW1hckZpbGVPdXRQYXRoOwotCi0gICAgZXhpdCBp
ZiAkcHJlcHJvY2Vzc09ubHk7Ci19Ci0KLW15ICRmaWxlQmFzZSA9IEZpbGU6OlNwZWMtPmpvaW4o
JG91dHB1dERpciwgJGZpbGVuYW1lKTsKLW15IEBiaXNvbkNvbW1hbmQgPSAoJGJpc29uLCAiLWQi
LCAiLXAiLCAkc3ltYm9sc1ByZWZpeCwgJGdyYW1tYXJGaWxlUGF0aCwgIi1vIiwgIiRmaWxlQmFz
ZS5jcHAiKTsKLXB1c2ggQGJpc29uQ29tbWFuZCwgIi0tbm8tbGluZXMiIGlmICReTyBlcSAiTVNX
aW4zMiI7ICMgV29yayBhcm91bmQgYnVnIGluIGJpc29uID49IDMuMCBvbiBXaW5kb3dzIHdoZXJl
IGl0IHB1dHMgYmFja3NsYXNoZXMgaW50byAjbGluZSBkaXJlY3RpdmVzLgotc3lzdGVtKEBiaXNv
bkNvbW1hbmQpID09IDAgb3IgZGllOwotCi1vcGVuIEhFQURFUiwgIj4kZmlsZUJhc2UuaCIgb3Ig
ZGllOwotcHJpbnQgSEVBREVSIDw8ICJFT0YiOwotI2lmbmRlZiBDU1NHUkFNTUFSX0gKLSNkZWZp
bmUgQ1NTR1JBTU1BUl9ICi1FT0YKLQotb3BlbiBIUFAsICI8JGZpbGVCYXNlLmNwcC5oIiBvciBv
cGVuIEhQUCwgIjwkZmlsZUJhc2UuaHBwIiBvciBkaWU7Ci13aGlsZSAoPEhQUD4pIHsKLSAgICBw
cmludCBIRUFERVI7Ci19Ci1jbG9zZSBIUFA7Ci0KLXByaW50IEhFQURFUiAiI2VuZGlmXG4iOwot
Y2xvc2UgSEVBREVSOwotCi11bmxpbmsoIiRmaWxlQmFzZS5jcHAuaCIpOwotdW5saW5rKCIkZmls
ZUJhc2UuaHBwIik7Ci0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjI3NSBAQAorLyogVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCB1c2lu
ZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICBiaXNvbiAtZCAtcCB4cGF0aHl5IFhQYXRoR3Jh
bW1hci55IC1vIFhQYXRoR3JhbW1hci5jcHAgCisgKi8KKworLyogQSBCaXNvbiBwYXJzZXIsIG1h
ZGUgYnkgR05VIEJpc29uIDIuMy4gICovCisKKy8qIFNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZv
ciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKworICAgQ29weXJpZ2h0IChDKSAxOTg0
LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2Cisg
ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv
biAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0
ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKKyAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNv
biBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCisgICB1bmRlciB0ZXJt
cyBvZiB5b3VyIGNob2ljZSwgc28gbG9uZyBhcyB0aGF0IHdvcmsgaXNuJ3QgaXRzZWxmIGEKKyAg
IHBhcnNlciBnZW5lcmF0b3IgdXNpbmcgdGhlIHNrZWxldG9uIG9yIGEgbW9kaWZpZWQgdmVyc2lv
biB0aGVyZW9mCisgICBhcyBhIHBhcnNlciBza2VsZXRvbi4gIEFsdGVybmF0aXZlbHksIGlmIHlv
dSBtb2RpZnkgb3IgcmVkaXN0cmlidXRlCisgICB0aGUgcGFyc2VyIHNrZWxldG9uIGl0c2VsZiwg
eW91IG1heSAoYXQgeW91ciBvcHRpb24pIHJlbW92ZSB0aGlzCisgICBzcGVjaWFsIGV4Y2VwdGlv
biwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKKyAgIEJp
c29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVi
bGljCisgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KKworICAgVGhp
cyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiBpbgorICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLworCisvKiBDIExBTFIoMSkgcGFy
c2VyIHNrZWxldG9uIHdyaXR0ZW4gYnkgUmljaGFyZCBTdGFsbG1hbiwgYnkKKyAgIHNpbXBsaWZ5
aW5nIHRoZSBvcmlnaW5hbCBzby1jYWxsZWQgInNlbWFudGljIiBwYXJzZXIuICAqLworCisvKiBB
bGwgc3ltYm9scyBkZWZpbmVkIGJlbG93IHNob3VsZCBiZWdpbiB3aXRoIHl5IG9yIFlZLCB0byBh
dm9pZAorICAgaW5mcmluZ2luZyBvbiB1c2VyIG5hbWUgc3BhY2UuICBUaGlzIHNob3VsZCBiZSBk
b25lIGV2ZW4gZm9yIGxvY2FsCisgICB2YXJpYWJsZXMsIGFzIHRoZXkgbWlnaHQgb3RoZXJ3aXNl
IGJlIGV4cGFuZGVkIGJ5IHVzZXIgbWFjcm9zLgorICAgVGhlcmUgYXJlIHNvbWUgdW5hdm9pZGFi
bGUgZXhjZXB0aW9ucyB3aXRoaW4gaW5jbHVkZSBmaWxlcyB0bworICAgZGVmaW5lIG5lY2Vzc2Fy
eSBsaWJyYXJ5IHN5bWJvbHM7IHRoZXkgYXJlIG5vdGVkICJJTkZSSU5HRVMgT04KKyAgIFVTRVIg
TkFNRSBTUEFDRSIgYmVsb3cuICAqLworCisvKiBJZGVudGlmeSBCaXNvbiBvdXRwdXQuICAqLwor
I2RlZmluZSBZWUJJU09OIDEKKworLyogQmlzb24gdmVyc2lvbi4gICovCisjZGVmaW5lIFlZQklT
T05fVkVSU0lPTiAiMi4zIgorCisvKiBTa2VsZXRvbiBuYW1lLiAgKi8KKyNkZWZpbmUgWVlTS0VM
RVRPTl9OQU1FICJ5YWNjLmMiCisKKy8qIFB1cmUgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVS
RSAxCisKKy8qIFVzaW5nIGxvY2F0aW9ucy4gICovCisjZGVmaW5lIFlZTFNQX05FRURFRCAwCisK
Ky8qIFN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4gICovCisjZGVm
aW5lIHl5cGFyc2UgeHBhdGh5eXBhcnNlCisjZGVmaW5lIHl5bGV4ICAgeHBhdGh5eWxleAorI2Rl
ZmluZSB5eWVycm9yIHhwYXRoeXllcnJvcgorI2RlZmluZSB5eWx2YWwgIHhwYXRoeXlsdmFsCisj
ZGVmaW5lIHl5Y2hhciAgeHBhdGh5eWNoYXIKKyNkZWZpbmUgeXlkZWJ1ZyB4cGF0aHl5ZGVidWcK
KyNkZWZpbmUgeXluZXJycyB4cGF0aHl5bmVycnMKKworCisvKiBUb2tlbnMuICAqLworI2lmbmRl
ZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tFTlRZUEUKKyAgIC8qIFB1dCB0aGUgdG9rZW5z
IGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIgYW5kIG90aGVyIGRlYnVnZ2Vycwor
ICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KKyAgIGVudW0geXl0b2tlbnR5cGUgeworICAgICBN
VUxPUCA9IDI1OCwKKyAgICAgUkVMT1AgPSAyNTksCisgICAgIEVRT1AgPSAyNjAsCisgICAgIE1J
TlVTID0gMjYxLAorICAgICBQTFVTID0gMjYyLAorICAgICBBTkQgPSAyNjMsCisgICAgIE9SID0g
MjY0LAorICAgICBGVU5DVElPTk5BTUUgPSAyNjUsCisgICAgIExJVEVSQUwgPSAyNjYsCisgICAg
IE5BTUVURVNUID0gMjY3LAorICAgICBOVU1CRVIgPSAyNjgsCisgICAgIE5PREVUWVBFID0gMjY5
LAorICAgICBWQVJJQUJMRVJFRkVSRU5DRSA9IDI3MCwKKyAgICAgQVhJU05BTUUgPSAyNzEsCisg
ICAgIENPTU1FTlQgPSAyNzIsCisgICAgIERPVERPVCA9IDI3MywKKyAgICAgUEkgPSAyNzQsCisg
ICAgIE5PREUgPSAyNzUsCisgICAgIFNMQVNIU0xBU0ggPSAyNzYsCisgICAgIFRFWFRfID0gMjc3
LAorICAgICBYUEFUSF9FUlJPUiA9IDI3OAorICAgfTsKKyNlbmRpZgorLyogVG9rZW5zLiAgKi8K
KyNkZWZpbmUgTVVMT1AgMjU4CisjZGVmaW5lIFJFTE9QIDI1OQorI2RlZmluZSBFUU9QIDI2MAor
I2RlZmluZSBNSU5VUyAyNjEKKyNkZWZpbmUgUExVUyAyNjIKKyNkZWZpbmUgQU5EIDI2MworI2Rl
ZmluZSBPUiAyNjQKKyNkZWZpbmUgRlVOQ1RJT05OQU1FIDI2NQorI2RlZmluZSBMSVRFUkFMIDI2
NgorI2RlZmluZSBOQU1FVEVTVCAyNjcKKyNkZWZpbmUgTlVNQkVSIDI2OAorI2RlZmluZSBOT0RF
VFlQRSAyNjkKKyNkZWZpbmUgVkFSSUFCTEVSRUZFUkVOQ0UgMjcwCisjZGVmaW5lIEFYSVNOQU1F
IDI3MQorI2RlZmluZSBDT01NRU5UIDI3MgorI2RlZmluZSBET1RET1QgMjczCisjZGVmaW5lIFBJ
IDI3NAorI2RlZmluZSBOT0RFIDI3NQorI2RlZmluZSBTTEFTSFNMQVNIIDI3NgorI2RlZmluZSBU
RVhUXyAyNzcKKyNkZWZpbmUgWFBBVEhfRVJST1IgMjc4CisKKworCisvKiBDb3B5IHRoZSBmaXJz
dCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KKyNsaW5lIDI4ICJXZWJDb3JlL3htbC9Y
UGF0aEdyYW1tYXIueSIKKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJYUGF0
aEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlhQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiWFBhdGhQ
YXRoLmgiCisjaW5jbHVkZSAiWFBhdGhTdGVwLmgiCisjaW5jbHVkZSAiWFBhdGhWYXJpYWJsZVJl
ZmVyZW5jZS5oIgorCisKKyNpZiBDT01QSUxFUihNU1ZDKQorLy8gU2VlIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvMXdlYTV6d2UuYXNweAorI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQ3MDEpCisjZW5kaWYKKworI2RlZmluZSBZWU1BTExPQyBmYXN0TWFsbG9jCisj
ZGVmaW5lIFlZRlJFRSBmYXN0RnJlZQorCisjZGVmaW5lIFlZRU5BQkxFX05MUyAwCisjZGVmaW5l
IFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZGVmaW5lIFlZREVCVUcgMAorI2RlZmluZSBZWU1BWERF
UFRIIDEwMDAwCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFhQ
YXRoOworCisKKworLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KKyNpZm5kZWYgWVlERUJVRworIyBk
ZWZpbmUgWVlERUJVRyAwCisjZW5kaWYKKworLyogRW5hYmxpbmcgdmVyYm9zZSBlcnJvciBtZXNz
YWdlcy4gICovCisjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCisjIHVuZGVmIFlZRVJST1JfVkVSQk9T
RQorIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDEKKyNlbHNlCisjIGRlZmluZSBZWUVSUk9SX1ZF
UkJPU0UgMAorI2VuZGlmCisKKy8qIEVuYWJsaW5nIHRoZSB0b2tlbiB0YWJsZS4gICovCisjaWZu
ZGVmIFlZVE9LRU5fVEFCTEUKKyMgZGVmaW5lIFlZVE9LRU5fVEFCTEUgMAorI2VuZGlmCisKKyNp
ZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAordHlw
ZWRlZiB1bmlvbiBZWVNUWVBFCisjbGluZSA2MCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnki
Cit7IAorICAgIE51bWVyaWNPcDo6T3Bjb2RlIG51bWVyaWNPcGNvZGU7IAorICAgIEVxVGVzdE9w
OjpPcGNvZGUgZXF1YWxpdHlUZXN0T3Bjb2RlOworICAgIFN0cmluZ0ltcGwqIHN0cmluZzsKKyAg
ICBTdGVwOjpBeGlzIGF4aXM7CisgICAgTG9jYXRpb25QYXRoKiBsb2NhdGlvblBhdGg7CisgICAg
U3RlcDo6Tm9kZVRlc3QqIG5vZGVUZXN0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4+KiBleHByZXNzaW9uVmVjdG9yOworICAgIFN0ZXAqIHN0ZXA7CisgICAgRXhwcmVz
c2lvbiogZXhwcmVzc2lvbjsgCit9CisvKiBMaW5lIDE5MyBvZiB5YWNjLmMuICAqLworI2xpbmUg
MTkwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJWVlTVFlQRTsKKyMgZGVmaW5lIHl5c3R5cGUgWVlT
VFlQRSAvKiBvYnNvbGVzY2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KKyMgZGVmaW5lIFlZU1RZ
UEVfSVNfREVDTEFSRUQgMQorIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgor
CisKKworLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdXNlciBkZWNsYXJhdGlvbnMuICAqLwor
I2xpbmUgMTA0ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKworCitzdGF0aWMgaW50IHhw
YXRoeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBQYXJzZXImIHBhcnNlcikgeyByZXR1cm4gcGFyc2Vy
LmxleCgqeXlsdmFsKTsgfQorc3RhdGljIHZvaWQgeHBhdGh5eWVycm9yKFBhcnNlciYsIGNvbnN0
IGNoYXIqKSB7IH0KKworCisKKy8qIExpbmUgMjE2IG9mIHlhY2MuYy4gICovCisjbGluZSAyMDkg
Ii4vWFBhdGhHcmFtbWFyLmNwcCIKKworI2lmZGVmIHNob3J0CisjIHVuZGVmIHNob3J0CisjZW5k
aWYKKworI2lmZGVmIFlZVFlQRV9VSU5UOAordHlwZWRlZiBZWVRZUEVfVUlOVDggeXl0eXBlX3Vp
bnQ4OworI2Vsc2UKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB5eXR5cGVfdWludDg7CisjZW5kaWYK
KworI2lmZGVmIFlZVFlQRV9JTlQ4Cit0eXBlZGVmIFlZVFlQRV9JTlQ4IHl5dHlwZV9pbnQ4Owor
I2VsaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAg
fHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQordHlwZWRlZiBzaWdu
ZWQgY2hhciB5eXR5cGVfaW50ODsKKyNlbHNlCit0eXBlZGVmIHNob3J0IGludCB5eXR5cGVfaW50
ODsKKyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX1VJTlQxNgordHlwZWRlZiBZWVRZUEVfVUlOVDE2
IHl5dHlwZV91aW50MTY7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgeXl0eXBl
X3VpbnQxNjsKKyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX0lOVDE2Cit0eXBlZGVmIFlZVFlQRV9J
TlQxNiB5eXR5cGVfaW50MTY7CisjZWxzZQordHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2
OworI2VuZGlmCisKKyNpZm5kZWYgWVlTSVpFX1QKKyMgaWZkZWYgX19TSVpFX1RZUEVfXworIyAg
ZGVmaW5lIFlZU0laRV9UIF9fU0laRV9UWVBFX18KKyMgZWxpZiBkZWZpbmVkIHNpemVfdAorIyAg
ZGVmaW5lIFlZU0laRV9UIHNpemVfdAorIyBlbGlmICEgZGVmaW5lZCBZWVNJWkVfVCAmJiAoZGVm
aW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVk
IF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjICBpbmNsdWRlIDxzdGRkZWYuaD4g
LyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgZGVmaW5lIFlZU0laRV9UIHNp
emVfdAorIyBlbHNlCisjICBkZWZpbmUgWVlTSVpFX1QgdW5zaWduZWQgaW50CisjIGVuZGlmCisj
ZW5kaWYKKworI2RlZmluZSBZWVNJWkVfTUFYSU1VTSAoKFlZU0laRV9UKSAtMSkKKworI2lmbmRl
ZiBZWV8KKyMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMgJiYgWVlFTkFCTEVfTkxTCisjICBpZiBF
TkFCTEVfTkxTCisjICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBO
QU1FIFNQQUNFICovCisjICAgZGVmaW5lIFlZXyhtc2dpZCkgZGdldHRleHQgKCJiaXNvbi1ydW50
aW1lIiwgbXNnaWQpCisjICBlbmRpZgorIyBlbmRpZgorIyBpZm5kZWYgWVlfCisjICBkZWZpbmUg
WVlfKG1zZ2lkKSBtc2dpZAorIyBlbmRpZgorI2VuZGlmCisKKy8qIFN1cHByZXNzIHVudXNlZC12
YXJpYWJsZSB3YXJuaW5ncyBieSAidXNpbmciIEUuICAqLworI2lmICEgZGVmaW5lZCBsaW50IHx8
IGRlZmluZWQgX19HTlVDX18KKyMgZGVmaW5lIFlZVVNFKGUpICgodm9pZCkgKGUpKQorI2Vsc2UK
KyMgZGVmaW5lIFlZVVNFKGUpIC8qIGVtcHR5ICovCisjZW5kaWYKKworLyogSWRlbnRpdHkgZnVu
Y3Rpb24sIHVzZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgY29uc3RhbnQgY29uZGl0aW9u
cy4gICovCisjaWZuZGVmIGxpbnQKKyMgZGVmaW5lIFlZSUQobikgKG4pCisjZWxzZQorI2lmIChk
ZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyBpbnQKK1lZSUQgKGlu
dCBpKQorI2Vsc2UKK3N0YXRpYyBpbnQKK1lZSUQgKGkpCisgICAgaW50IGk7CisjZW5kaWYKK3sK
KyAgcmV0dXJuIGk7Cit9CisjZW5kaWYKKworI2lmICEgZGVmaW5lZCB5eW92ZXJmbG93IHx8IFlZ
RVJST1JfVkVSQk9TRQorCisvKiBUaGUgcGFyc2VyIGludm9rZXMgYWxsb2NhIG9yIG1hbGxvYzsg
ZGVmaW5lIHRoZSBuZWNlc3Nhcnkgc3ltYm9scy4gICovCisKKyMgaWZkZWYgWVlTVEFDS19VU0Vf
QUxMT0NBCisjICBpZiBZWVNUQUNLX1VTRV9BTExPQ0EKKyMgICBpZmRlZiBfX0dOVUNfXworIyAg
ICBkZWZpbmUgWVlTVEFDS19BTExPQyBfX2J1aWx0aW5fYWxsb2NhCisjICAgZWxpZiBkZWZpbmVk
IF9fQlVJTFRJTl9WQV9BUkdfSU5DUgorIyAgICBpbmNsdWRlIDxhbGxvY2EuaD4gLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgIGVsaWYgZGVmaW5lZCBfQUlYCisjICAgIGRl
ZmluZSBZWVNUQUNLX0FMTE9DIF9fYWxsb2NhCisjICAgZWxpZiBkZWZpbmVkIF9NU0NfVkVSCisj
ICAgIGluY2x1ZGUgPG1hbGxvYy5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICov
CisjICAgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQorIyAgIGVsc2UKKyMgICAgZGVmaW5lIFlZU1RB
Q0tfQUxMT0MgYWxsb2NhCisjICAgIGlmICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVk
IF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18g
XAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCisjICAg
ICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwor
IyAgICAgaWZuZGVmIF9TVERMSUJfSAorIyAgICAgIGRlZmluZSBfU1RETElCX0ggMQorIyAgICAg
ZW5kaWYKKyMgICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgZW5kaWYKKworIyBpZmRl
ZiBZWVNUQUNLX0FMTE9DCisgICAvKiBQYWNpZnkgR0NDJ3MgYGVtcHR5IGlmLWJvZHknIHdhcm5p
bmcuICAqLworIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkgKi87IH0g
d2hpbGUgKFlZSUQgKDApKQorIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQorICAgIC8q
IFRoZSBPUyBtaWdodCBndWFyYW50ZWUgb25seSBvbmUgZ3VhcmQgcGFnZSBhdCB0aGUgYm90dG9t
IG9mIHRoZSBzdGFjaywKKyAgICAgICBhbmQgYSBwYWdlIHNpemUgY2FuIGJlIGFzIHNtYWxsIGFz
IDQwOTYgYnl0ZXMuICBTbyB3ZSBjYW5ub3Qgc2FmZWx5CisgICAgICAgaW52b2tlIGFsbG9jYSAo
TikgaWYgTiBleGNlZWRzIDQwOTYuICBVc2UgYSBzbGlnaHRseSBzbWFsbGVyIG51bWJlcgorICAg
ICAgIHRvIGFsbG93IGZvciBhIGZldyBjb21waWxlci1hbGxvY2F0ZWQgdGVtcG9yYXJ5IHN0YWNr
IHNsb3RzLiAgKi8KKyMgICBkZWZpbmUgWVlTVEFDS19BTExPQ19NQVhJTVVNIDQwMzIgLyogcmVh
c29uYWJsZSBjaXJjYSAyMDA2ICovCisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgWVlTVEFD
S19BTExPQyBZWU1BTExPQworIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRSBZWUZSRUUKKyMgIGlmbmRl
ZiBZWVNUQUNLX0FMTE9DX01BWElNVU0KKyMgICBkZWZpbmUgWVlTVEFDS19BTExPQ19NQVhJTVVN
IFlZU0laRV9NQVhJTVVNCisjICBlbmRpZgorIyAgaWYgKGRlZmluZWQgX19jcGx1c3BsdXMgJiYg
ISBkZWZpbmVkIF9TVERMSUJfSCBcCisgICAgICAgJiYgISAoKGRlZmluZWQgWVlNQUxMT0MgfHwg
ZGVmaW5lZCBtYWxsb2MpIFwKKwkgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBkZWZpbmVkIGZy
ZWUpKSkKKyMgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBT
UEFDRSAqLworIyAgIGlmbmRlZiBfU1RETElCX0gKKyMgICAgZGVmaW5lIF9TVERMSUJfSCAxCisj
ICAgZW5kaWYKKyMgIGVuZGlmCisjICBpZm5kZWYgWVlNQUxMT0MKKyMgICBkZWZpbmUgWVlNQUxM
T0MgbWFsbG9jCisjICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgX1NURExJQl9I
ICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3ZvaWQgKm1hbGxvYyAo
WVlTSVpFX1QpOyAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICAgZW5kaWYK
KyMgIGVuZGlmCisjICBpZm5kZWYgWVlGUkVFCisjICAgZGVmaW5lIFlZRlJFRSBmcmVlCisjICAg
aWYgISBkZWZpbmVkIGZyZWUgJiYgISBkZWZpbmVkIF9TVERMSUJfSCAmJiAoZGVmaW5lZCBfX1NU
RENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNw
bHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCit2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdF
UyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgZW5kaWYKKyNl
bmRpZiAvKiAhIGRlZmluZWQgeXlvdmVyZmxvdyB8fCBZWUVSUk9SX1ZFUkJPU0UgKi8KKworCisj
aWYgKCEgZGVmaW5lZCB5eW92ZXJmbG93IFwKKyAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1
cyBcCisJIHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJ
QUwpKSkKKworLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0YWNr
IG1lbWJlci4gICovCit1bmlvbiB5eWFsbG9jCit7CisgIHl5dHlwZV9pbnQxNiB5eXNzOworICBZ
WVNUWVBFIHl5dnM7CisgIH07CisKKy8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3
ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCisjIGRlZmluZSBZWVNUQUNL
X0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKKworLyogVGhlIHNpemUg
b2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhvbGQgYWxsIHN0YWNrcywgZWFjaCB3aXRo
CisgICBOIGVsZW1lbnRzLiAgKi8KKyMgZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAorICAgICAo
KE4pICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAoWVlTVFlQRSkpIFwKKyAgICAg
ICsgWVlTVEFDS19HQVBfTUFYSU1VTSkKKworLyogQ29weSBDT1VOVCBvYmplY3RzIGZyb20gRlJP
TSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCisgICBub3Qgb3ZlcmxhcC4g
ICovCisjIGlmbmRlZiBZWUNPUFkKKyMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgMSA8IF9fR05V
Q19fCisjICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpIFwKKyAgICAgIF9fYnVpbHRp
bl9tZW1jcHkgKFRvLCBGcm9tLCAoQ291bnQpICogc2l6ZW9mICgqKEZyb20pKSkKKyMgIGVsc2UK
KyMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkJCVwKKyAgICAgIGRvCQkJCQlcCisJ
ewkJCQkJXAorCSAgWVlTSVpFX1QgeXlpOwkJCQlcCisJICBmb3IgKHl5aSA9IDA7IHl5aSA8IChD
b3VudCk7IHl5aSsrKQlcCisJICAgIChUbylbeXlpXSA9IChGcm9tKVt5eWldOwkJXAorCX0JCQkJ
CVwKKyAgICAgIHdoaWxlIChZWUlEICgwKSkKKyMgIGVuZGlmCisjIGVuZGlmCisKKy8qIFJlbG9j
YXRlIFNUQUNLIGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IG9uZS4gIFRoZQorICAg
bG9jYWwgdmFyaWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUgZ2l2ZSB0aGUgb2xkIGFuZCBu
ZXcgbnVtYmVyIG9mCisgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0
aGUgbmV3IGxvY2F0aW9uIG9mIHRoZQorICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJv
cGVybHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKKyAgIHN0YWNrLiAgKi8KKyMgZGVm
aW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCisgICAgZG8JCQkJCQkJCQlcCisgICAg
ICB7CQkJCQkJCQkJXAorCVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJCQkJXAorCVlZQ09QWSAoJnl5
cHRyLT5TdGFjaywgU3RhY2ssIHl5c2l6ZSk7CQkJCVwKKwlTdGFjayA9ICZ5eXB0ci0+U3RhY2s7
CQkJCQkJXAorCXl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZ
U1RBQ0tfR0FQX01BWElNVU07IFwKKwl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlw
dHIpOwkJCQlcCisgICAgICB9CQkJCQkJCQkJXAorICAgIHdoaWxlIChZWUlEICgwKSkKKworI2Vu
ZGlmCisKKy8qIFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0
ZS4gICovCisjZGVmaW5lIFlZRklOQUwgIDUyCisvKiBZWUxBU1QgLS0gTGFzdCBpbmRleCBpbiBZ
WVRBQkxFLiAgKi8KKyNkZWZpbmUgWVlMQVNUICAgMTMyCisKKy8qIFlZTlRPS0VOUyAtLSBOdW1i
ZXIgb2YgdGVybWluYWxzLiAgKi8KKyNkZWZpbmUgWVlOVE9LRU5TICAzMworLyogWVlOTlRTIC0t
IE51bWJlciBvZiBub250ZXJtaW5hbHMuICAqLworI2RlZmluZSBZWU5OVFMgIDI4CisvKiBZWU5S
VUxFUyAtLSBOdW1iZXIgb2YgcnVsZXMuICAqLworI2RlZmluZSBZWU5SVUxFUyAgNjQKKy8qIFlZ
TlJVTEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLworI2RlZmluZSBZWU5TVEFURVMgIDEwMQor
CisvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0gQmlzb24gc3ltYm9sIG51bWJlciBjb3JyZXNwb25k
aW5nIHRvIFlZTEVYLiAgKi8KKyNkZWZpbmUgWVlVTkRFRlRPSyAgMgorI2RlZmluZSBZWU1BWFVU
T0sgICAyNzgKKworI2RlZmluZSBZWVRSQU5TTEFURShZWVgpCQkJCQkJXAorICAoKHVuc2lnbmVk
IGludCkgKFlZWCkgPD0gWVlNQVhVVE9LID8geXl0cmFuc2xhdGVbWVlYXSA6IFlZVU5ERUZUT0sp
CisKKy8qIFlZVFJBTlNMQVRFW1lZTEVYXSAtLSBCaXNvbiBzeW1ib2wgbnVtYmVyIGNvcnJlc3Bv
bmRpbmcgdG8gWVlMRVguICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRyYW5zbGF0
ZVtdID0KK3sKKyAgICAgICAwLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLAorICAgICAgMjYsICAgIDI3LCAgICAgMiwgICAgIDIsICAgIDMx
LCAgICAgMiwgICAgMzAsICAgIDI0LCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAg
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAyNSwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAy
LCAgICAyOCwgICAgIDIsICAgIDI5LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAzMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
CisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsCisgICAg
ICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgMjMKK307CisKKyNpZiBZWURFQlVHCisvKiBZWVBSSFNbWVlOXSAt
LSBJbmRleCBvZiB0aGUgZmlyc3QgUkhTIHN5bWJvbCBvZiBydWxlIG51bWJlciBZWU4gaW4KKyAg
IFlZUkhTLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlwcmhzW10gPQoreworICAg
ICAgIDAsICAgICAwLCAgICAgMywgICAgIDUsICAgICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAg
ICAxNiwgICAgMTksCisgICAgICAyMSwgICAgMjUsICAgIDI5LCAgICAzMiwgICAgMzUsICAgIDM5
LCAgICA0MywgICAgNDUsICAgIDQ3LCAgICA0OSwKKyAgICAgIDUzLCAgICA1NywgICAgNjEsICAg
IDY1LCAgICA3MCwgICAgNzEsICAgIDczLCAgICA3NSwgICAgNzgsICAgIDgyLAorICAgICAgODQs
ICAgIDg2LCAgICA4OCwgICAgOTAsICAgIDk0LCAgICA5NiwgICAgOTgsICAgMTAwLCAgIDEwNCwg
ICAxMDksCisgICAgIDExMSwgICAxMTUsICAgMTE3LCAgIDExOSwgICAxMjMsICAgMTI1LCAgIDEy
NywgICAxMzEsICAgMTM1LCAgIDEzNywKKyAgICAgMTQwLCAgIDE0MiwgICAxNDYsICAgMTQ4LCAg
IDE1MiwgICAxNTQsICAgMTU4LCAgIDE2MCwgICAxNjQsICAgMTY2LAorICAgICAxNzAsICAgMTc0
LCAgIDE3NiwgICAxODAsICAgMTgyCit9OworCisvKiBZWVJIUyAtLSBBIGAtMSctc2VwYXJhdGVk
IGxpc3Qgb2YgdGhlIHJ1bGVzJyBSSFMuICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5
cmhzW10gPQoreworICAgICAgMzQsICAgICAwLCAgICAtMSwgICAgMzUsICAgIC0xLCAgICA1NCwg
ICAgLTEsICAgIDM3LCAgICAtMSwgICAgMzgsCisgICAgICAtMSwgICAgMjQsICAgIC0xLCAgICAy
NCwgICAgMzgsICAgIC0xLCAgICA0NSwgICAgMzgsICAgIC0xLCAgICAzOSwKKyAgICAgIC0xLCAg
ICAzOCwgICAgMjQsICAgIDM5LCAgICAtMSwgICAgMzgsICAgIDQ1LCAgICAzOSwgICAgLTEsICAg
IDQxLAorICAgICAgNDIsICAgIC0xLCAgICAxMiwgICAgNDIsICAgIC0xLCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICAtMSwgICAgNDAsCisgICAgICAxMiwgICAgNDIsICAgIC0xLCAgICA0NiwgICAg
LTEsICAgIDE2LCAgICAtMSwgICAgMjUsICAgIC0xLCAgICAyMCwKKyAgICAgIDI2LCAgICAyNywg
ICAgLTEsICAgIDIyLCAgICAyNiwgICAgMjcsICAgIC0xLCAgICAxNywgICAgMjYsICAgIDI3LAor
ICAgICAgLTEsICAgIDE5LCAgICAyNiwgICAgMjcsICAgIC0xLCAgICAxOSwgICAgMjYsICAgIDEx
LCAgICAyNywgICAgLTEsCisgICAgICAtMSwgICAgNDMsICAgIC0xLCAgICA0NCwgICAgLTEsICAg
IDQzLCAgICA0NCwgICAgLTEsICAgIDI4LCAgICAzNSwKKyAgICAgIDI5LCAgICAtMSwgICAgMjEs
ICAgIC0xLCAgICAzMCwgICAgLTEsICAgIDE4LCAgICAtMSwgICAgMTUsICAgIC0xLAorICAgICAg
MjYsICAgIDM1LCAgICAyNywgICAgLTEsICAgIDExLCAgICAtMSwgICAgMTMsICAgIC0xLCAgICA0
OCwgICAgLTEsCisgICAgICAxMCwgICAgMjYsICAgIDI3LCAgICAtMSwgICAgMTAsICAgIDI2LCAg
ICA0OSwgICAgMjcsICAgIC0xLCAgICA1MCwKKyAgICAgIC0xLCAgICA0OSwgICAgMzEsICAgIDUw
LCAgICAtMSwgICAgMzUsICAgIC0xLCAgICA1MiwgICAgLTEsICAgIDUxLAorICAgICAgMzIsICAg
IDUyLCAgICAtMSwgICAgMzYsICAgIC0xLCAgICA1MywgICAgLTEsICAgIDUzLCAgICAyNCwgICAg
MzgsCisgICAgICAtMSwgICAgNTMsICAgIDQ1LCAgICAzOCwgICAgLTEsICAgIDQ3LCAgICAtMSwg
ICAgNDcsICAgIDQzLCAgICAtMSwKKyAgICAgIDU1LCAgICAtMSwgICAgNTQsICAgICA5LCAgICA1
NSwgICAgLTEsICAgIDU2LCAgICAtMSwgICAgNTUsICAgICA4LAorICAgICAgNTYsICAgIC0xLCAg
ICA1NywgICAgLTEsICAgIDU2LCAgICAgNSwgICAgNTcsICAgIC0xLCAgICA1OCwgICAgLTEsCisg
ICAgICA1NywgICAgIDQsICAgIDU4LCAgICAtMSwgICAgNTksICAgIC0xLCAgICA1OCwgICAgIDcs
ICAgIDU5LCAgICAtMSwKKyAgICAgIDU4LCAgICAgNiwgICAgNTksICAgIC0xLCAgICA2MCwgICAg
LTEsICAgIDU5LCAgICAgMywgICAgNjAsICAgIC0xLAorICAgICAgNTEsICAgIC0xLCAgICAgNiwg
ICAgNjAsICAgIC0xCit9OworCisvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUg
cnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWlu
dDE2IHl5cmxpbmVbXSA9Cit7CisgICAgICAgMCwgICAxMTQsICAgMTE0LCAgIDEyMSwgICAxMjUs
ICAgMTMxLCAgIDEzNSwgICAxNDAsICAgMTQ1LCAgIDE1MywKKyAgICAgMTU5LCAgIDE2NSwgICAx
NzQsICAgMTg0LCAgIDIwMiwgICAyMTMsICAgMjMxLCAgIDIzNSwgICAyMzcsICAgMjQ0LAorICAg
ICAyNDksICAgMjU0LCAgIDI1OSwgICAyNjQsICAgMjczLCAgIDI3NywgICAyODEsICAgMjg3LCAg
IDI5NSwgICAzMDIsCisgICAgIDMwOSwgICAzMTQsICAgMzIxLCAgIDMyNywgICAzMzIsICAgMzM4
LCAgIDM0NCwgICAzNDgsICAgMzU2LCAgIDM2NywKKyAgICAgMzczLCAgIDM4MSwgICAzODUsICAg
Mzg3LCAgIDM5NCwgICAzOTksICAgNDAxLCAgIDQwNywgICA0MTYsICAgNDE4LAorICAgICA0MjYs
ICAgNDI4LCAgIDQzNSwgICA0MzcsICAgNDQ0LCAgIDQ0NiwgICA0NTMsICAgNDU1LCAgIDQ2Miwg
ICA0NjQsCisgICAgIDQ2OSwgICA0NzYsICAgNDc4LCAgIDQ4NSwgICA0ODcKK307CisjZW5kaWYK
KworI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZVE9LRU5fVEFCTEUKKy8qIFlZ
VE5BTUVbU1lNQk9MLU5VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhlIHN5bWJvbCBTWU1CT0wtTlVN
LgorICAgRmlyc3QsIHRoZSB0ZXJtaW5hbHMsIHRoZW4sIHN0YXJ0aW5nIGF0IFlZTlRPS0VOUywg
bm9udGVybWluYWxzLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQor
eworICAiJGVuZCIsICJlcnJvciIsICIkdW5kZWZpbmVkIiwgIk1VTE9QIiwgIlJFTE9QIiwgIkVR
T1AiLCAiTUlOVVMiLAorICAiUExVUyIsICJBTkQiLCAiT1IiLCAiRlVOQ1RJT05OQU1FIiwgIkxJ
VEVSQUwiLCAiTkFNRVRFU1QiLCAiTlVNQkVSIiwKKyAgIk5PREVUWVBFIiwgIlZBUklBQkxFUkVG
RVJFTkNFIiwgIkFYSVNOQU1FIiwgIkNPTU1FTlQiLCAiRE9URE9UIiwgIlBJIiwKKyAgIk5PREUi
LCAiU0xBU0hTTEFTSCIsICJURVhUIiwgIlhQQVRIX0VSUk9SIiwgIicvJyIsICInQCciLCAiJygn
IiwgIicpJyIsCisgICInWyciLCAiJ10nIiwgIicuJyIsICInLCciLCAiJ3wnIiwgIiRhY2NlcHQi
LCAiVG9wIiwgIkV4cHIiLAorICAiTG9jYXRpb25QYXRoIiwgIkFic29sdXRlTG9jYXRpb25QYXRo
IiwgIlJlbGF0aXZlTG9jYXRpb25QYXRoIiwgIlN0ZXAiLAorICAiQXhpc1NwZWNpZmllciIsICJO
b2RlVGVzdCIsICJPcHRpb25hbFByZWRpY2F0ZUxpc3QiLCAiUHJlZGljYXRlTGlzdCIsCisgICJQ
cmVkaWNhdGUiLCAiRGVzY2VuZGFudE9yU2VsZiIsICJBYmJyZXZpYXRlZFN0ZXAiLCAiUHJpbWFy
eUV4cHIiLAorICAiRnVuY3Rpb25DYWxsIiwgIkFyZ3VtZW50TGlzdCIsICJBcmd1bWVudCIsICJV
bmlvbkV4cHIiLCAiUGF0aEV4cHIiLAorICAiRmlsdGVyRXhwciIsICJPckV4cHIiLCAiQW5kRXhw
ciIsICJFcXVhbGl0eUV4cHIiLCAiUmVsYXRpb25hbEV4cHIiLAorICAiQWRkaXRpdmVFeHByIiwg
Ik11bHRpcGxpY2F0aXZlRXhwciIsICJVbmFyeUV4cHIiLCAwCit9OworI2VuZGlmCisKKyMgaWZk
ZWYgWVlQUklOVAorLyogWVlUT0tOVU1bWVlMRVgtTlVNXSAtLSBJbnRlcm5hbCB0b2tlbiBudW1i
ZXIgY29ycmVzcG9uZGluZyB0bworICAgdG9rZW4gWVlMRVgtTlVNLiAgKi8KK3N0YXRpYyBjb25z
dCB5eXR5cGVfdWludDE2IHl5dG9rbnVtW10gPQoreworICAgICAgIDAsICAgMjU2LCAgIDI1Nywg
ICAyNTgsICAgMjU5LCAgIDI2MCwgICAyNjEsICAgMjYyLCAgIDI2MywgICAyNjQsCisgICAgIDI2
NSwgICAyNjYsICAgMjY3LCAgIDI2OCwgICAyNjksICAgMjcwLCAgIDI3MSwgICAyNzIsICAgMjcz
LCAgIDI3NCwKKyAgICAgMjc1LCAgIDI3NiwgICAyNzcsICAgMjc4LCAgICA0NywgICAgNjQsICAg
IDQwLCAgICA0MSwgICAgOTEsICAgIDkzLAorICAgICAgNDYsICAgIDQ0LCAgIDEyNAorfTsKKyMg
ZW5kaWYKKworLyogWVlSMVtZWU5dIC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVs
ZSBZWU4gZGVyaXZlcy4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9Cit7
CisgICAgICAgMCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM2LCAgICAzNywgICAg
MzcsICAgIDM3LCAgICAzOCwKKyAgICAgIDM4LCAgICAzOCwgICAgMzksICAgIDM5LCAgICAzOSwg
ICAgMzksICAgIDM5LCAgICA0MCwgICAgNDAsICAgIDQxLAorICAgICAgNDEsICAgIDQxLCAgICA0
MSwgICAgNDEsICAgIDQyLCAgICA0MiwgICAgNDMsICAgIDQzLCAgICA0NCwgICAgNDUsCisgICAg
ICA0NiwgICAgNDYsICAgIDQ3LCAgICA0NywgICAgNDcsICAgIDQ3LCAgICA0NywgICAgNDgsICAg
IDQ4LCAgICA0OSwKKyAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUxLCAgICA1MiwgICAgNTIs
ICAgIDUyLCAgICA1MiwgICAgNTMsICAgIDUzLAorICAgICAgNTQsICAgIDU0LCAgICA1NSwgICAg
NTUsICAgIDU2LCAgICA1NiwgICAgNTcsICAgIDU3LCAgICA1OCwgICAgNTgsCisgICAgICA1OCwg
ICAgNTksICAgIDU5LCAgICA2MCwgICAgNjAKK307CisKKy8qIFlZUjJbWVlOXSAtLSBOdW1iZXIg
b2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8KK3N0
YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KK3sKKyAgICAgICAwLCAgICAgMiwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDIsICAgICAxLAorICAg
ICAgIDMsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMywgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDMsCisgICAgICAgMywgICAgIDMsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAx
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAzLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDQsICAgICAxLAorICAgICAgIDMs
ICAgICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwg
ICAgIDIsCisgICAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAg
MSwgICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAg
ICAgMgorfTsKKworLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVmYXVsdCBydWxlIHRvIHJl
ZHVjZSB3aXRoIGluIHN0YXRlCisgICBTVEFURS1OVU0gd2hlbiBZWVRBQkxFIGRvZXNuJ3Qgc3Bl
Y2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KKyAgIG1lYW5zIHRoZSBkZWZhdWx0IGlz
IGFuIGVycm9yLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZhY3RbXSA9Cit7
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAzNCwgICAgMjQsICAgIDM1LCAgICAzMiwgICAg
MTcsICAgICAwLCAgICAzMSwKKyAgICAgICAwLCAgICAgMCwgICAgMjksICAgICAwLCAgICAgNiwg
ICAgMTgsICAgICAwLCAgICAzMCwgICAgIDAsICAgICAyLAorICAgICAgNDQsICAgICA0LCAgICAg
NSwgICAgIDksICAgICAwLCAgICAyNCwgICAgIDAsICAgIDE2LCAgICA0OCwgICAgMzYsCisgICAg
ICA2MywgICAgNDIsICAgIDQ1LCAgICAgMywgICAgNTAsICAgIDUyLCAgICA1NCwgICAgNTYsICAg
IDU4LCAgICA2MSwKKyAgICAgIDY0LCAgICAgMCwgICAgIDAsICAgIDEzLCAgICAyNSwgICAgMjYs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDcsICAgICAwLCAgICAgMSwgICAg
IDAsICAgICAwLCAgICAyNCwgICAgMjQsICAgIDEyLCAgICAgOCwgICAgNDksCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgIDM3LCAgICA0MSwgICAgIDAsICAgIDM5LCAgICAgMCwgICAgMjcsICAgIDIx
LCAgICAgMCwgICAgMjIsICAgIDE5LAorICAgICAgMjAsICAgIDMzLCAgICAxMCwgICAgMTEsICAg
IDE1LCAgICAxNCwgICAgNDMsICAgIDQ2LCAgICA0NywgICAgNTEsCisgICAgICA1MywgICAgNTUs
ICAgIDU3LCAgICA2MCwgICAgNTksICAgIDYyLCAgICAzOCwgICAgIDAsICAgIDI4LCAgICAyMywK
KyAgICAgIDQwCit9OworCisvKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICovCitzdGF0aWMgY29u
c3QgeXl0eXBlX2ludDggeXlkZWZnb3RvW10gPQoreworICAgICAgLTEsICAgIDE4LCAgICA3MSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgNDMsCisgICAgICA0
NCwgICAgNDUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICA3MiwgICAgNzMsICAgIDMw
LCAgICAzMSwKKyAgICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAg
IDM4LCAgICAzOQorfTsKKworLyogWVlQQUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJM
RSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCisgICBTVEFURS1OVU0uICAqLworI2RlZmluZSBZ
WVBBQ1RfTklORiAtMzcKK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXBhY3RbXSA9Cit7Cisg
ICAgICA4MSwgICAgODEsICAgIC04LCAgIC0zNywgICAgLTcsICAgLTM3LCAgIC0zNywgICAtMzcs
ICAgIDE0LCAgIC0zNywKKyAgICAgIDE3LCAgICAyMCwgICAtMzcsICAgIDIxLCAgICAgOCwgICAt
MzcsICAgIDgxLCAgIC0zNywgICAgNDgsICAgLTM3LAorICAgICAtMzcsICAgLTM3LCAgIC0xNywg
ICAtMzcsICAgIDIyLCAgICAtNywgICAgIDgsICAgLTM3LCAgICAtNywgICAtMzcsCisgICAgICAy
MywgICAtMzcsICAgIC05LCAgICAgMSwgICAgNDUsICAgIDQ5LCAgICA1MiwgICAgMTAsICAgIDU0
LCAgIC0zNywKKyAgICAgLTM3LCAgICA1OSwgICAgODEsICAgLTM3LCAgICAtNywgICAtMzcsICAg
IDMxLCAgICAtNSwgICAgMzIsICAgIDMzLAorICAgICAtMTcsICAgIDM0LCAgIC0zNywgICAgIDgs
ICAgICA4LCAgICAtNywgICAgLTcsICAgLTM3LCAgIC0xNywgICAgLTcsCisgICAgIDEwMiwgICAg
IDgsICAgICA4LCAgICA4MSwgICAgODEsICAgIDgxLCAgICA4MSwgICAgODEsICAgIDgxLCAgICA4
MSwKKyAgICAgLTM3LCAgIC0zNywgICAtMTgsICAgLTM3LCAgICAzNSwgICAtMzcsICAgLTM3LCAg
ICAzNiwgICAtMzcsICAgLTM3LAorICAgICAtMzcsICAgLTM3LCAgIC0zNywgICAtMzcsICAgLTM3
LCAgIC0zNywgICAtMzcsICAgLTE3LCAgIC0xNywgICAgNDUsCisgICAgICA0OSwgICAgNTIsICAg
IDEwLCAgICA1NCwgICAgNTQsICAgLTM3LCAgIC0zNywgICAgODEsICAgLTM3LCAgIC0zNywKKyAg
ICAgLTM3Cit9OworCisvKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLworc3RhdGljIGNvbnN0IHl5
dHlwZV9pbnQ4IHl5cGdvdG9bXSA9Cit7CisgICAgIC0zNywgICAtMzcsICAgICAzLCAgIC0zNywg
ICAtMzcsICAgLTEyLCAgIC0yMiwgICAtMzcsICAgIDM4LCAgIC0yMCwKKyAgICAgIDYwLCAgIC0z
NiwgICAtMjEsICAgLTM3LCAgIC0zNywgICAtMzcsICAgLTM3LCAgIC0yNCwgICAtMzcsICAgIDMw
LAorICAgICAtMzcsICAgLTM3LCAgICAxOSwgICAgNDAsICAgIDQzLCAgICAyOSwgICAtMTYsICAg
IC0xCit9OworCisvKiBZWVRBQkxFW1lZUEFDVFtTVEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4g
c3RhdGUgU1RBVEUtTlVNLiAgSWYKKyAgIHBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYg
bmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVsZSB3aGljaAorICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0
ZS4gIElmIHplcm8sIGRvIHdoYXQgWVlERUZBQ1Qgc2F5cy4KKyAgIElmIFlZVEFCTEVfTklORiwg
c3ludGF4IGVycm9yLiAgKi8KKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xCitzdGF0aWMgY29uc3Qg
eXl0eXBlX3VpbnQ4IHl5dGFibGVbXSA9Cit7CisgICAgICA0MCwgICAgNTQsICAgIDUwLCAgICAx
OSwgICAgMTIsICAgIDU3LCAgICA3NywgICAgNTMsICAgIDc1LCAgICA5NiwKKyAgICAgIDYzLCAg
ICA2MiwgICAgMTIsICAgIDk3LCAgICA1OCwgICAgNjEsICAgIDY3LCAgICA2OCwgICAgNDEsICAg
IDUxLAorICAgICAgIDQsICAgIDQyLCAgICA3OCwgICAgNzUsICAgICA3LCAgICAgOCwgICAgIDks
ICAgIDEwLCAgICAxMSwgICAgNTQsCisgICAgICAxMywgICAgODIsICAgIDgzLCAgICAxNSwgICAg
NTUsICAgIDg0LCAgICA4NSwgICAgNTQsICAgIDE3LCAgICAgOCwKKyAgICAgIDQ2LCAgICAxMCwg
ICAgMTEsICAgIDQ3LCAgICAxMywgICAgNzQsICAgIDQ4LCAgICA0OSwgICAgNTIsICAgIDg3LAor
ICAgICAgODgsICAgIDkzLCAgICA5NCwgICAgNjQsICAgIDY1LCAgICA2MCwgICAgNjYsICAgIDY5
LCAgICA3NiwgICAgNzksCisgICAgICA4MCwgICAgODEsICAgIDU2LCAgICA5OSwgICAgOTgsICAg
ICAxLCAgICA1NCwgICAgNTQsICAgIDk1LCAgICAgMiwKKyAgICAgICAzLCAgICAgNCwgICAgIDUs
ICAgMTAwLCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAorICAgICAg
MTIsICAgIDEzLCAgICA4OSwgICAgMTQsICAgIDE1LCAgICAxNiwgICAgNzAsICAgICAxLCAgICA1
OSwgICAgMTcsCisgICAgICA4NiwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgIDkyLCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICA5MCwgICAgMTQsICAgIDE1LCAgICAxNiwgICAgOTEsICAgICAwLAorICAgICAgIDAsICAg
IDE3LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDAsICAgICA2LCAgICAgNywgICAg
IDgsCisgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgICAwLCAgICAxNCwg
ICAgMTUsICAgIDE2LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMTcKK307CisKK3N0YXRp
YyBjb25zdCB5eXR5cGVfaW50OCB5eWNoZWNrW10gPQoreworICAgICAgIDEsICAgIDIyLCAgICAx
NCwgICAgIDAsICAgIDIxLCAgICAyNSwgICAgMTEsICAgIDI0LCAgICA0NCwgICAgMjcsCisgICAg
ICAgOSwgICAgMzIsICAgIDIxLCAgICAzMSwgICAgMjYsICAgIDI0LCAgICAgNiwgICAgIDcsICAg
IDI2LCAgICAxNiwKKyAgICAgIDEyLCAgICAyOCwgICAgMjcsICAgIDU5LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDUwLAorICAgICAgMjIsICAgIDUzLCAgICA1NCwgICAg
MjUsICAgIDEyLCAgICA1NSwgICAgNTYsICAgIDU4LCAgICAzMCwgICAgMTcsCisgICAgICAyNiwg
ICAgMTksICAgIDIwLCAgICAyNiwgICAgMjIsICAgIDQyLCAgICAyNiwgICAgMjYsICAgICAwLCAg
ICA2MSwKKyAgICAgIDYyLCAgICA2NywgICAgNjgsICAgICA4LCAgICAgNSwgICAgMzIsICAgICA0
LCAgICAgMywgICAgMjcsICAgIDI3LAorICAgICAgMjcsICAgIDI3LCAgICAyNCwgICAgMjcsICAg
IDI5LCAgICAgNiwgICAgODcsICAgIDg4LCAgICA2OSwgICAgMTAsCisgICAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICA5NywgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwK
KyAgICAgIDIxLCAgICAyMiwgICAgNjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAg
NiwgICAgMjgsICAgIDMwLAorICAgICAgNjAsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICA2NiwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAxOSwgICAgMjAsICAgIDIx
LCAgICAyMiwgICAgNjQsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDY1LCAgICAtMSwKKyAgICAg
IC0xLCAgICAzMCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAxNSwgICAg
MTYsICAgIDE3LAorICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAtMSwg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDMwCit9Owor
CisvKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFj
Y2Vzc2luZworICAgc3ltYm9sIG9mIHN0YXRlIFNUQVRFLU5VTS4gICovCitzdGF0aWMgY29uc3Qg
eXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KK3sKKyAgICAgICAwLCAgICAgNiwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDMwLCAgICAzNCwgICAg
MzUsCisgICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAorICAgICAgNjAsICAgIDI2LCAg
ICAyOCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgMjYsICAgIDI2LCAgICAyNiwgICAgMjYsCisg
ICAgICAzOCwgICAgMzUsICAgICAwLCAgICAyNCwgICAgNDUsICAgIDEyLCAgICA0MSwgICAgNDIs
ICAgIDM4LCAgICA0MywKKyAgICAgIDMyLCAgICAyNCwgICAgNDUsICAgICA5LCAgICAgOCwgICAg
IDUsICAgICA0LCAgICAgNiwgICAgIDcsICAgICAzLAorICAgICAgMjcsICAgIDM1LCAgICA0OSwg
ICAgNTAsICAgIDM1LCAgICA0NCwgICAgMjcsICAgIDExLCAgICAyNywgICAgMjcsCisgICAgICAy
NywgICAgMjcsICAgIDM5LCAgICAzOSwgICAgNDIsICAgIDQyLCAgICA1MiwgICAgMzgsICAgIDM4
LCAgICA1NSwKKyAgICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA1OSwgICAgNjAsICAg
IDI3LCAgICAzMSwgICAgMjksICAgIDI3LAorICAgICAgNTAKK307CisKKyNkZWZpbmUgeXllcnJv
awkJKHl5ZXJyc3RhdHVzID0gMCkKKyNkZWZpbmUgeXljbGVhcmluCSh5eWNoYXIgPSBZWUVNUFRZ
KQorI2RlZmluZSBZWUVNUFRZCQkoLTIpCisjZGVmaW5lIFlZRU9GCQkwCisKKyNkZWZpbmUgWVlB
Q0NFUFQJZ290byB5eWFjY2VwdGxhYgorI2RlZmluZSBZWUFCT1JUCQlnb3RvIHl5YWJvcnRsYWIK
KyNkZWZpbmUgWVlFUlJPUgkJZ290byB5eWVycm9ybGFiCisKKworLyogTGlrZSBZWUVSUk9SIGV4
Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQorICAg
dG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9y
IEdDQy4KKyAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRo
aXMgY2FuIGdvLiAgKi8KKworI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJsYWIKKworI2RlZmlu
ZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCisKKyNkZWZpbmUgWVlCQUNLVVAoVG9r
ZW4sIFZhbHVlKQkJCQkJXAorZG8JCQkJCQkJCVwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZICYm
IHl5bGVuID09IDEpCQkJCVwKKyAgICB7CQkJCQkJCQlcCisgICAgICB5eWNoYXIgPSAoVG9rZW4p
OwkJCQkJCVwKKyAgICAgIHl5bHZhbCA9IChWYWx1ZSk7CQkJCQkJXAorICAgICAgeXl0b2tlbiA9
IFlZVFJBTlNMQVRFICh5eWNoYXIpOwkJCQlcCisgICAgICBZWVBPUFNUQUNLICgxKTsJCQkJCQlc
CisgICAgICBnb3RvIHl5YmFja3VwOwkJCQkJCVwKKyAgICB9CQkJCQkJCQlcCisgIGVsc2UJCQkJ
CQkJCVwKKyAgICB7CQkJCQkJCQlcCisgICAgICB5eWVycm9yIChwYXJzZXIsIFlZXygic3ludGF4
IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpKTsgXAorICAgICAgWVlFUlJPUjsJCQkJCQkJXAorICAg
IH0JCQkJCQkJCVwKK3doaWxlIChZWUlEICgwKSkKKworCisjZGVmaW5lIFlZVEVSUk9SCTEKKyNk
ZWZpbmUgWVlFUlJDT0RFCTI1NgorCisKKy8qIFlZTExPQ19ERUZBVUxUIC0tIFNldCBDVVJSRU5U
IHRvIHNwYW4gZnJvbSBSSFNbMV0gdG8gUkhTW05dLgorICAgSWYgTiBpcyAwLCB0aGVuIHNldCBD
VVJSRU5UIHRvIHRoZSBlbXB0eSBsb2NhdGlvbiB3aGljaCBlbmRzCisgICB0aGUgcHJldmlvdXMg
c3ltYm9sOiBSSFNbMF0gKGFsd2F5cyBkZWZpbmVkKS4gICovCisKKyNkZWZpbmUgWVlSSFNMT0Mo
UmhzLCBLKSAoKFJocylbS10pCisjaWZuZGVmIFlZTExPQ19ERUZBVUxUCisjIGRlZmluZSBZWUxM
T0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pCQkJCVwKKyAgICBkbwkJCQkJCQkJCVwKKyAgICAg
IGlmIChZWUlEIChOKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorCXsJCQkJCQkJCVwKKwkgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSBZWVJI
U0xPQyAoUmhzLCAxKS5maXJzdF9saW5lOwlcCisJICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0g
WVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29sdW1uOwlcCisJICAoQ3VycmVudCkubGFzdF9saW5l
ICAgID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9saW5lOwkJXAorCSAgKEN1cnJlbnQpLmxhc3Rf
Y29sdW1uICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfY29sdW1uOwlcCisJfQkJCQkJCQkJXAor
ICAgICAgZWxzZQkJCQkJCQkJXAorCXsJCQkJCQkJCVwKKwkgIChDdXJyZW50KS5maXJzdF9saW5l
ICAgPSAoQ3VycmVudCkubGFzdF9saW5lICAgPQkJXAorCSAgICBZWVJIU0xPQyAoUmhzLCAwKS5s
YXN0X2xpbmU7CQkJCVwKKwkgIChDdXJyZW50KS5maXJzdF9jb2x1bW4gPSAoQ3VycmVudCkubGFz
dF9jb2x1bW4gPQkJXAorCSAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2NvbHVtbjsJCQkJXAor
CX0JCQkJCQkJCVwKKyAgICB3aGlsZSAoWVlJRCAoMCkpCisjZW5kaWYKKworCisvKiBZWV9MT0NB
VElPTl9QUklOVCAtLSBQcmludCB0aGUgbG9jYXRpb24gb24gdGhlIHN0cmVhbS4KKyAgIFRoaXMg
bWFjcm8gd2FzIG5vdCBtYW5kYXRlZCBvcmlnaW5hbGx5OiBkZWZpbmUgb25seSBpZiB3ZSBrbm93
CisgICB3ZSB3b24ndCBicmVhayB1c2VyIGNvZGU6IHdoZW4gdGhlc2UgYXJlIHRoZSBsb2NhdGlv
bnMgd2Uga25vdy4gICovCisKKyNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKKyMgaWYgZGVmaW5l
ZCBZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlMVFlQRV9JU19UUklWSUFMCisjICBkZWZpbmUgWVlf
TE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKQkJCVwKKyAgICAgZnByaW50ZiAoRmlsZSwgIiVkLiVk
LSVkLiVkIiwJCQlcCisJICAgICAgKExvYykuZmlyc3RfbGluZSwgKExvYykuZmlyc3RfY29sdW1u
LAlcCisJICAgICAgKExvYykubGFzdF9saW5lLCAgKExvYykubGFzdF9jb2x1bW4pCisjIGVsc2UK
KyMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKKyMgZW5k
aWYKKyNlbmRpZgorCisKKy8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRoIHRoZSByaWdo
dCBhcmd1bWVudHMuICAqLworCisjaWZkZWYgWVlMRVhfUEFSQU0KKyMgZGVmaW5lIFlZTEVYIHl5
bGV4ICgmeXlsdmFsLCBZWUxFWF9QQVJBTSkKKyNlbHNlCisjIGRlZmluZSBZWUxFWCB5eWxleCAo
Jnl5bHZhbCwgcGFyc2VyKQorI2VuZGlmCisKKy8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVz
dGVkLiAgKi8KKyNpZiBZWURFQlVHCisKKyMgaWZuZGVmIFlZRlBSSU5URgorIyAgaW5jbHVkZSA8
c3RkaW8uaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgZGVmaW5lIFlZ
RlBSSU5URiBmcHJpbnRmCisjIGVuZGlmCisKKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQkJCVwK
K2RvIHsJCQkJCQlcCisgIGlmICh5eWRlYnVnKQkJCQkJXAorICAgIFlZRlBSSU5URiBBcmdzOwkJ
CQlcCit9IHdoaWxlIChZWUlEICgwKSkKKworIyBkZWZpbmUgWVlfU1lNQk9MX1BSSU5UKFRpdGxl
LCBUeXBlLCBWYWx1ZSwgTG9jYXRpb24pCQkJICBcCitkbyB7CQkJCQkJCQkJICBcCisgIGlmICh5
eWRlYnVnKQkJCQkJCQkJICBcCisgICAgewkJCQkJCQkJCSAgXAorICAgICAgWVlGUFJJTlRGIChz
dGRlcnIsICIlcyAiLCBUaXRsZSk7CQkJCQkgIFwKKyAgICAgIHl5X3N5bWJvbF9wcmludCAoc3Rk
ZXJyLAkJCQkJCSAgXAorCQkgIFR5cGUsIFZhbHVlLCBwYXJzZXIpOyBcCisgICAgICBZWUZQUklO
VEYgKHN0ZGVyciwgIlxuIik7CQkJCQkJICBcCisgICAgfQkJCQkJCQkJCSAgXAorfSB3aGlsZSAo
WVlJRCAoMCkpCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUHJp
bnQgdGhpcyBzeW1ib2wgb24gWVlPVVRQVVQuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLworCisvKkFSR1NVU0VEKi8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCitzdGF0aWMgdm9pZAoreXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5
eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwLCBQYXJz
ZXImIHBhcnNlcikKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5
eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgcGFyc2VyKQorICAgIEZJTEUgKnl5b3V0cHV0Owor
ICAgIGludCB5eXR5cGU7CisgICAgWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwOworICAg
IFBhcnNlciYgcGFyc2VyOworI2VuZGlmCit7CisgIGlmICgheXl2YWx1ZXApCisgICAgcmV0dXJu
OworICBZWVVTRSAocGFyc2VyKTsKKyMgaWZkZWYgWVlQUklOVAorICBpZiAoeXl0eXBlIDwgWVlO
VE9LRU5TKQorICAgIFlZUFJJTlQgKHl5b3V0cHV0LCB5eXRva251bVt5eXR5cGVdLCAqeXl2YWx1
ZXApOworIyBlbHNlCisgIFlZVVNFICh5eW91dHB1dCk7CisjIGVuZGlmCisgIHN3aXRjaCAoeXl0
eXBlKQorICAgIHsKKyAgICAgIGRlZmF1bHQ6CisJYnJlYWs7CisgICAgfQorfQorCisKKy8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFByaW50IHRoaXMgc3ltYm9sIG9uIFlZ
T1VUUFVULiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmIChk
ZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eV9zeW1i
b2xfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29u
c3QgeXl2YWx1ZXAsIFBhcnNlciYgcGFyc2VyKQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5eV9zeW1i
b2xfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBwYXJzZXIpCisgICAgRklMRSAq
eXlvdXRwdXQ7CisgICAgaW50IHl5dHlwZTsKKyAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2
YWx1ZXA7CisgICAgUGFyc2VyJiBwYXJzZXI7CisjZW5kaWYKK3sKKyAgaWYgKHl5dHlwZSA8IFlZ
TlRPS0VOUykKKyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAidG9rZW4gJXMgKCIsIHl5dG5hbWVb
eXl0eXBlXSk7CisgIGVsc2UKKyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAibnRlcm0gJXMgKCIs
IHl5dG5hbWVbeXl0eXBlXSk7CisKKyAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwg
eXl0eXBlLCB5eXZhbHVlcCwgcGFyc2VyKTsKKyAgWVlGUFJJTlRGICh5eW91dHB1dCwgIikiKTsK
K30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5X3N0YWNrX3ByaW50IC0tIFByaW50IHRoZSBzdGF0ZSBz
dGFjayBmcm9tIGl0cyBCT1RUT00gdXAgdG8gaXRzIHwKK3wgVE9QIChpbmNsdWRlZCkuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorYC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCisKKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAor
ICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMg
dm9pZAoreXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYg
KnRvcCkKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfc3RhY2tfcHJpbnQgKGJvdHRvbSwgdG9wKQor
ICAgIHl5dHlwZV9pbnQxNiAqYm90dG9tOworICAgIHl5dHlwZV9pbnQxNiAqdG9wOworI2VuZGlm
Cit7CisgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sgbm93Iik7CisgIGZvciAoOyBib3R0b20g
PD0gdG9wOyArK2JvdHRvbSkKKyAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsICpib3R0b20p
OworICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7Cit9CisKKyMgZGVmaW5lIFlZX1NUQUNLX1BS
SU5UKEJvdHRvbSwgVG9wKQkJCQlcCitkbyB7CQkJCQkJCQlcCisgIGlmICh5eWRlYnVnKQkJCQkJ
CQlcCisgICAgeXlfc3RhY2tfcHJpbnQgKChCb3R0b20pLCAoVG9wKSk7CQkJCVwKK30gd2hpbGUg
KFlZSUQgKDApKQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLgorfCBSZXBvcnQgdGhhdCB0aGUgWVlSVUxFIGlzIGdvaW5nIHRvIGJlIHJlZHVj
ZWQuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KKworI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisg
ICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2
b2lkCit5eV9yZWR1Y2VfcHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBpbnQgeXlydWxlLCBQYXJzZXIm
IHBhcnNlcikKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXly
dWxlLCBwYXJzZXIpCisgICAgWVlTVFlQRSAqeXl2c3A7CisgICAgaW50IHl5cnVsZTsKKyAgICBQ
YXJzZXImIHBhcnNlcjsKKyNlbmRpZgoreworICBpbnQgeXlucmhzID0geXlyMlt5eXJ1bGVdOwor
ICBpbnQgeXlpOworICB1bnNpZ25lZCBsb25nIGludCB5eWxubyA9IHl5cmxpbmVbeXlydWxlXTsK
KyAgWVlGUFJJTlRGIChzdGRlcnIsICJSZWR1Y2luZyBzdGFjayBieSBydWxlICVkIChsaW5lICVs
dSk6XG4iLAorCSAgICAgeXlydWxlIC0gMSwgeXlsbm8pOworICAvKiBUaGUgc3ltYm9scyBiZWlu
ZyByZWR1Y2VkLiAgKi8KKyAgZm9yICh5eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsrKQorICAg
IHsKKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOworICAgICAg
eXlfc3ltYm9sX3ByaW50IChzdGRlcnIsIHl5cmhzW3l5cHJoc1t5eXJ1bGVdICsgeXlpXSwKKwkJ
ICAgICAgICYoeXl2c3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQorCQkgICAgICAgCQkgICAgICAg
LCBwYXJzZXIpOworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKyAgICB9Cit9CisKKyMg
ZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQkJXAorZG8gewkJCQkJXAorICBpZiAoeXlkZWJ1
ZykJCQkJXAorICAgIHl5X3JlZHVjZV9wcmludCAoeXl2c3AsIFJ1bGUsIHBhcnNlcik7IFwKK30g
d2hpbGUgKFlZSUQgKDApKQorCisvKiBOb256ZXJvIG1lYW5zIHByaW50IHBhcnNlIHRyYWNlLiAg
SXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKKyAgIG11bHRpcGxlIHBhcnNlcnMgY2Fu
IGNvZXhpc3QuICAqLworaW50IHl5ZGVidWc7CisjZWxzZSAvKiAhWVlERUJVRyAqLworIyBkZWZp
bmUgWVlEUFJJTlRGKEFyZ3MpCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUsIFR5cGUs
IFZhbHVlLCBMb2NhdGlvbikKKyMgZGVmaW5lIFlZX1NUQUNLX1BSSU5UKEJvdHRvbSwgVG9wKQor
IyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCisjZW5kaWYgLyogIVlZREVCVUcgKi8KKwor
CisvKiBZWUlOSVRERVBUSCAtLSBpbml0aWFsIHNpemUgb2YgdGhlIHBhcnNlcidzIHN0YWNrcy4g
ICovCisjaWZuZGVmCVlZSU5JVERFUFRICisjIGRlZmluZSBZWUlOSVRERVBUSCAyMDAKKyNlbmRp
ZgorCisvKiBZWU1BWERFUFRIIC0tIG1heGltdW0gc2l6ZSB0aGUgc3RhY2tzIGNhbiBncm93IHRv
IChlZmZlY3RpdmUgb25seQorICAgaWYgdGhlIGJ1aWx0LWluIHN0YWNrIGV4dGVuc2lvbiBtZXRo
b2QgaXMgdXNlZCkuCisKKyAgIERvIG5vdCBtYWtlIHRoaXMgdmFsdWUgdG9vIGxhcmdlOyB0aGUg
cmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmCisgICBZWVNUQUNLX0FMTE9DX01BWElNVU0gPCBZWVNU
QUNLX0JZVEVTIChZWU1BWERFUFRIKQorICAgZXZhbHVhdGVkIHdpdGggaW5maW5pdGUtcHJlY2lz
aW9uIGludGVnZXIgYXJpdGhtZXRpYy4gICovCisKKyNpZm5kZWYgWVlNQVhERVBUSAorIyBkZWZp
bmUgWVlNQVhERVBUSCAxMDAwMAorI2VuZGlmCisKKwwKKworI2lmIFlZRVJST1JfVkVSQk9TRQor
CisjIGlmbmRlZiB5eXN0cmxlbgorIyAgaWYgZGVmaW5lZCBfX0dMSUJDX18gJiYgZGVmaW5lZCBf
U1RSSU5HX0gKKyMgICBkZWZpbmUgeXlzdHJsZW4gc3RybGVuCisjICBlbHNlCisvKiBSZXR1cm4g
dGhlIGxlbmd0aCBvZiBZWVNUUi4gICovCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5l
ZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVk
IF9NU0NfVkVSKQorc3RhdGljIFlZU0laRV9UCit5eXN0cmxlbiAoY29uc3QgY2hhciAqeXlzdHIp
CisjZWxzZQorc3RhdGljIFlZU0laRV9UCit5eXN0cmxlbiAoeXlzdHIpCisgICAgY29uc3QgY2hh
ciAqeXlzdHI7CisjZW5kaWYKK3sKKyAgWVlTSVpFX1QgeXlsZW47CisgIGZvciAoeXlsZW4gPSAw
OyB5eXN0clt5eWxlbl07IHl5bGVuKyspCisgICAgY29udGludWU7CisgIHJldHVybiB5eWxlbjsK
K30KKyMgIGVuZGlmCisjIGVuZGlmCisKKyMgaWZuZGVmIHl5c3RwY3B5CisjICBpZiBkZWZpbmVk
IF9fR0xJQkNfXyAmJiBkZWZpbmVkIF9TVFJJTkdfSCAmJiBkZWZpbmVkIF9HTlVfU09VUkNFCisj
ICAgZGVmaW5lIHl5c3RwY3B5IHN0cGNweQorIyAgZWxzZQorLyogQ29weSBZWVNSQyB0byBZWURF
U1QsIHJldHVybmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgdGVybWluYXRpbmcgJ1wwJyBpbgorICAg
WVlERVNULiAgKi8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5D
X18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitz
dGF0aWMgY2hhciAqCit5eXN0cGNweSAoY2hhciAqeXlkZXN0LCBjb25zdCBjaGFyICp5eXNyYykK
KyNlbHNlCitzdGF0aWMgY2hhciAqCit5eXN0cGNweSAoeXlkZXN0LCB5eXNyYykKKyAgICBjaGFy
ICp5eWRlc3Q7CisgICAgY29uc3QgY2hhciAqeXlzcmM7CisjZW5kaWYKK3sKKyAgY2hhciAqeXlk
ID0geXlkZXN0OworICBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsKKworICB3aGlsZSAoKCp5eWQr
KyA9ICp5eXMrKykgIT0gJ1wwJykKKyAgICBjb250aW51ZTsKKworICByZXR1cm4geXlkIC0gMTsK
K30KKyMgIGVuZGlmCisjIGVuZGlmCisKKyMgaWZuZGVmIHl5dG5hbWVycgorLyogQ29weSB0byBZ
WVJFUyB0aGUgY29udGVudHMgb2YgWVlTVFIgYWZ0ZXIgc3RyaXBwaW5nIGF3YXkgdW5uZWNlc3Nh
cnkKKyAgIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMsIHNvIHRoYXQgaXQncyBzdWl0YWJsZSBmb3Ig
eXllcnJvci4gIFRoZQorICAgaGV1cmlzdGljIGlzIHRoYXQgZG91YmxlLXF1b3RpbmcgaXMgdW5u
ZWNlc3NhcnkgdW5sZXNzIHRoZSBzdHJpbmcKKyAgIGNvbnRhaW5zIGFuIGFwb3N0cm9waGUsIGEg
Y29tbWEsIG9yIGJhY2tzbGFzaCAob3RoZXIgdGhhbgorICAgYmFja3NsYXNoLWJhY2tzbGFzaCku
ICBZWVNUUiBpcyB0YWtlbiBmcm9tIHl5dG5hbWUuICBJZiBZWVJFUyBpcworICAgbnVsbCwgZG8g
bm90IGNvcHk7IGluc3RlYWQsIHJldHVybiB0aGUgbGVuZ3RoIG9mIHdoYXQgdGhlIHJlc3VsdAor
ICAgd291bGQgaGF2ZSBiZWVuLiAgKi8KK3N0YXRpYyBZWVNJWkVfVAoreXl0bmFtZXJyIChjaGFy
ICp5eXJlcywgY29uc3QgY2hhciAqeXlzdHIpCit7CisgIGlmICgqeXlzdHIgPT0gJyInKQorICAg
IHsKKyAgICAgIFlZU0laRV9UIHl5biA9IDA7CisgICAgICBjaGFyIGNvbnN0ICp5eXAgPSB5eXN0
cjsKKworICAgICAgZm9yICg7OykKKwlzd2l0Y2ggKCorK3l5cCkKKwkgIHsKKwkgIGNhc2UgJ1wn
JzoKKwkgIGNhc2UgJywnOgorCSAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CisKKwkgIGNh
c2UgJ1xcJzoKKwkgICAgaWYgKCorK3l5cCAhPSAnXFwnKQorCSAgICAgIGdvdG8gZG9fbm90X3N0
cmlwX3F1b3RlczsKKwkgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKwkgIGRlZmF1bHQ6CisJICAg
IGlmICh5eXJlcykKKwkgICAgICB5eXJlc1t5eW5dID0gKnl5cDsKKwkgICAgeXluKys7CisJICAg
IGJyZWFrOworCisJICBjYXNlICciJzoKKwkgICAgaWYgKHl5cmVzKQorCSAgICAgIHl5cmVzW3l5
bl0gPSAnXDAnOworCSAgICByZXR1cm4geXluOworCSAgfQorICAgIGRvX25vdF9zdHJpcF9xdW90
ZXM6IDsKKyAgICB9CisKKyAgaWYgKCEgeXlyZXMpCisgICAgcmV0dXJuIHl5c3RybGVuICh5eXN0
cik7CisKKyAgcmV0dXJuIHl5c3RwY3B5ICh5eXJlcywgeXlzdHIpIC0geXlyZXM7Cit9CisjIGVu
ZGlmCisKKy8qIENvcHkgaW50byBZWVJFU1VMVCBhbiBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSB1
bmV4cGVjdGVkIHRva2VuCisgICBZWUNIQVIgd2hpbGUgaW4gc3RhdGUgWVlTVEFURS4gIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwKKyAgIGluY2x1ZGluZyB0aGUgdGVybWluYXRp
bmcgbnVsbCBieXRlLiAgSWYgWVlSRVNVTFQgaXMgbnVsbCwgZG8gbm90CisgICBjb3B5IGFueXRo
aW5nOyBqdXN0IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQgYmUKKyAgIGNv
cGllZC4gIEFzIGEgc3BlY2lhbCBjYXNlLCByZXR1cm4gMCBpZiBhbiBvcmRpbmFyeSAic3ludGF4
IGVycm9yIgorICAgbWVzc2FnZSB3aWxsIGRvLiAgUmV0dXJuIFlZU0laRV9NQVhJTVVNIGlmIG92
ZXJmbG93IG9jY3VycyBkdXJpbmcKKyAgIHNpemUgY2FsY3VsYXRpb24uICAqLworc3RhdGljIFlZ
U0laRV9UCit5eXN5bnRheF9lcnJvciAoY2hhciAqeXlyZXN1bHQsIGludCB5eXN0YXRlLCBpbnQg
eXljaGFyKQoreworICBpbnQgeXluID0geXlwYWN0W3l5c3RhdGVdOworCisgIGlmICghIChZWVBB
Q1RfTklORiA8IHl5biAmJiB5eW4gPD0gWVlMQVNUKSkKKyAgICByZXR1cm4gMDsKKyAgZWxzZQor
ICAgIHsKKyAgICAgIGludCB5eXR5cGUgPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIFlZ
U0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl0eXBlXSk7CisgICAgICBZ
WVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICAgICAgWVlTSVpFX1QgeXlzaXplMTsKKyAgICAg
IGludCB5eXNpemVfb3ZlcmZsb3cgPSAwOworICAgICAgZW51bSB7IFlZRVJST1JfVkVSQk9TRV9B
UkdTX01BWElNVU0gPSA1IH07CisgICAgICBjaGFyIGNvbnN0ICp5eWFyZ1tZWUVSUk9SX1ZFUkJP
U0VfQVJHU19NQVhJTVVNXTsKKyAgICAgIGludCB5eXg7CisKKyMgaWYgMAorICAgICAgLyogVGhp
cyBpcyBzbyB4Z2V0dGV4dCBzZWVzIHRoZSB0cmFuc2xhdGFibGUgZm9ybWF0cyB0aGF0IGFyZQor
CSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5LiAgKi8KKyAgICAgIFlZXygic3ludGF4IGVycm9yLCB1
bmV4cGVjdGVkICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywg
ZXhwZWN0aW5nICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywg
ZXhwZWN0aW5nICVzIG9yICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3Rl
ZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJv
ciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIG9yICVzIik7CisjIGVu
ZGlmCisgICAgICBjaGFyICp5eWZtdDsKKyAgICAgIGNoYXIgY29uc3QgKnl5ZjsKKyAgICAgIHN0
YXRpYyBjaGFyIGNvbnN0IHl5dW5leHBlY3RlZFtdID0gInN5bnRheCBlcnJvciwgdW5leHBlY3Rl
ZCAlcyI7CisgICAgICBzdGF0aWMgY2hhciBjb25zdCB5eWV4cGVjdGluZ1tdID0gIiwgZXhwZWN0
aW5nICVzIjsKKyAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHl5b3JbXSA9ICIgb3IgJXMiOworICAg
ICAgY2hhciB5eWZvcm1hdFtzaXplb2YgeXl1bmV4cGVjdGVkCisJCSAgICArIHNpemVvZiB5eWV4
cGVjdGluZyAtIDEKKwkJICAgICsgKChZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNIC0gMikK
KwkJICAgICAgICogKHNpemVvZiB5eW9yIC0gMSkpXTsKKyAgICAgIGNoYXIgY29uc3QgKnl5cHJl
Zml4ID0geXlleHBlY3Rpbmc7CisKKyAgICAgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0
aXZlIHRvIGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KKwkgWVlDSEVDSy4gICovCisgICAgICBp
bnQgeXl4YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7CisKKyAgICAgIC8qIFN0YXkgd2l0aGlu
IGJvdW5kcyBvZiBib3RoIHl5Y2hlY2sgYW5kIHl5dG5hbWUuICAqLworICAgICAgaW50IHl5Y2hl
Y2tsaW0gPSBZWUxBU1QgLSB5eW4gKyAxOworICAgICAgaW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0g
PCBZWU5UT0tFTlMgPyB5eWNoZWNrbGltIDogWVlOVE9LRU5TOworICAgICAgaW50IHl5Y291bnQg
PSAxOworCisgICAgICB5eWFyZ1swXSA9IHl5dG5hbWVbeXl0eXBlXTsKKyAgICAgIHl5Zm10ID0g
eXlzdHBjcHkgKHl5Zm9ybWF0LCB5eXVuZXhwZWN0ZWQpOworCisgICAgICBmb3IgKHl5eCA9IHl5
eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQorCWlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0g
eXl4ICYmIHl5eCAhPSBZWVRFUlJPUikKKwkgIHsKKwkgICAgaWYgKHl5Y291bnQgPT0gWVlFUlJP
Ul9WRVJCT1NFX0FSR1NfTUFYSU1VTSkKKwkgICAgICB7CisJCXl5Y291bnQgPSAxOworCQl5eXNp
emUgPSB5eXNpemUwOworCQl5eWZvcm1hdFtzaXplb2YgeXl1bmV4cGVjdGVkIC0gMV0gPSAnXDAn
OworCQlicmVhazsKKwkgICAgICB9CisJICAgIHl5YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5
eF07CisJICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl4XSk7
CisJICAgIHl5c2l6ZV9vdmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7CisJICAgIHl5c2l6
ZSA9IHl5c2l6ZTE7CisJICAgIHl5Zm10ID0geXlzdHBjcHkgKHl5Zm10LCB5eXByZWZpeCk7CisJ
ICAgIHl5cHJlZml4ID0geXlvcjsKKwkgIH0KKworICAgICAgeXlmID0gWVlfKHl5Zm9ybWF0KTsK
KyAgICAgIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXN0cmxlbiAoeXlmKTsKKyAgICAgIHl5c2l6ZV9v
dmVyZmxvdyB8PSAoeXlzaXplMSA8IHl5c2l6ZSk7CisgICAgICB5eXNpemUgPSB5eXNpemUxOwor
CisgICAgICBpZiAoeXlzaXplX292ZXJmbG93KQorCXJldHVybiBZWVNJWkVfTUFYSU1VTTsKKwor
ICAgICAgaWYgKHl5cmVzdWx0KQorCXsKKwkgIC8qIEF2b2lkIHNwcmludGYsIGFzIHRoYXQgaW5m
cmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFtZSBzcGFjZS4KKwkgICAgIERvbid0IGhhdmUgdW5kZWZp
bmVkIGJlaGF2aW9yIGV2ZW4gaWYgdGhlIHRyYW5zbGF0aW9uCisJICAgICBwcm9kdWNlZCBhIHN0
cmluZyB3aXRoIHRoZSB3cm9uZyBudW1iZXIgb2YgIiVzInMuICAqLworCSAgY2hhciAqeXlwID0g
eXlyZXN1bHQ7CisJICBpbnQgeXlpID0gMDsKKwkgIHdoaWxlICgoKnl5cCA9ICp5eWYpICE9ICdc
MCcpCisJICAgIHsKKwkgICAgICBpZiAoKnl5cCA9PSAnJScgJiYgeXlmWzFdID09ICdzJyAmJiB5
eWkgPCB5eWNvdW50KQorCQl7CisJCSAgeXlwICs9IHl5dG5hbWVyciAoeXlwLCB5eWFyZ1t5eWkr
K10pOworCQkgIHl5ZiArPSAyOworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgeXlwKys7CisJ
CSAgeXlmKys7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIHJldHVybiB5eXNpemU7CisgICAgfQor
fQorI2VuZGlmIC8qIFlZRVJST1JfVkVSQk9TRSAqLworDAorCisvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCBSZWxlYXNlIHRoZSBtZW1vcnkgYXNz
b2NpYXRlZCB0byB0aGlzIHN5bWJvbC4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qQVJHU1VTRUQqLworI2lmIChkZWZpbmVkIF9fU1RE
Q19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3Bs
dXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eWRlc3RydWN0IChjb25zdCBj
aGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQRSAqeXl2YWx1ZXAsIFBhcnNlciYgcGFyc2Vy
KQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5eWRlc3RydWN0ICh5eW1zZywgeXl0eXBlLCB5eXZhbHVl
cCwgcGFyc2VyKQorICAgIGNvbnN0IGNoYXIgKnl5bXNnOworICAgIGludCB5eXR5cGU7CisgICAg
WVlTVFlQRSAqeXl2YWx1ZXA7CisgICAgUGFyc2VyJiBwYXJzZXI7CisjZW5kaWYKK3sKKyAgWVlV
U0UgKHl5dmFsdWVwKTsKKyAgWVlVU0UgKHBhcnNlcik7CisKKyAgaWYgKCF5eW1zZykKKyAgICB5
eW1zZyA9ICJEZWxldGluZyI7CisgIFlZX1NZTUJPTF9QUklOVCAoeXltc2csIHl5dHlwZSwgeXl2
YWx1ZXAsIHl5bG9jYXRpb25wKTsKKworICBzd2l0Y2ggKHl5dHlwZSkKKyAgICB7CisgICAgICBj
YXNlIDEwOiAvKiAiRlVOQ1RJT05OQU1FIiAqLworI2xpbmUgODAgIldlYkNvcmUveG1sL1hQYXRo
R3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVwLT5zdHJpbmcp
LT5kZXJlZigpOyB9OworI2xpbmUgMTIwNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOwor
ICAgICAgY2FzZSAxMTogLyogIkxJVEVSQUwiICovCisjbGluZSA4MCAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJpbmcpKSAoeXl2YWx1ZXAtPnN0cmlu
ZyktPmRlcmVmKCk7IH07CisjbGluZSAxMjEwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7
CisgICAgICBjYXNlIDEyOiAvKiAiTkFNRVRFU1QiICovCisjbGluZSA4MCAiV2ViQ29yZS94bWwv
WFBhdGhHcmFtbWFyLnkiCisJeyBpZiAoKHl5dmFsdWVwLT5zdHJpbmcpKSAoeXl2YWx1ZXAtPnN0
cmluZyktPmRlcmVmKCk7IH07CisjbGluZSAxMjE1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJl
YWs7CisgICAgICBjYXNlIDEzOiAvKiAiTlVNQkVSIiAqLworI2xpbmUgODAgIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVwLT5z
dHJpbmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIyMCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJy
ZWFrOworICAgICAgY2FzZSAxNDogLyogIk5PREVUWVBFIiAqLworI2xpbmUgODAgIldlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5nKSkgKHl5dmFsdWVw
LT5zdHJpbmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIyNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgor
CWJyZWFrOworICAgICAgY2FzZSAxNTogLyogIlZBUklBQkxFUkVGRVJFTkNFIiAqLworI2xpbmUg
ODAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgaWYgKCh5eXZhbHVlcC0+c3RyaW5n
KSkgKHl5dmFsdWVwLT5zdHJpbmcpLT5kZXJlZigpOyB9OworI2xpbmUgMTIzMCAiLi9YUGF0aEdy
YW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSAzNTogLyogIkV4cHIiICovCisjbGluZSAx
MDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhw
cmVzc2lvbik7IH07CisjbGluZSAxMjM1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7Cisg
ICAgICBjYXNlIDM2OiAvKiAiTG9jYXRpb25QYXRoIiAqLworI2xpbmUgODggIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+bG9jYXRpb25QYXRoKTsgfTsK
KyNsaW5lIDEyNDAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgMzc6
IC8qICJBYnNvbHV0ZUxvY2F0aW9uUGF0aCIgKi8KKyNsaW5lIDg4ICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmxvY2F0aW9uUGF0aCk7IH07CisjbGlu
ZSAxMjQ1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDM4OiAvKiAi
UmVsYXRpdmVMb2NhdGlvblBhdGgiICovCisjbGluZSA4OCAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5sb2NhdGlvblBhdGgpOyB9OworI2xpbmUgMTI1
MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSAzOTogLyogIlN0ZXAi
ICovCisjbGluZSA5NyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5
dmFsdWVwLT5zdGVwKTsgfTsKKyNsaW5lIDEyNTUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVh
azsKKyAgICAgIGNhc2UgNDE6IC8qICJOb2RlVGVzdCIgKi8KKyNsaW5lIDkxICJXZWJDb3JlL3ht
bC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPm5vZGVUZXN0KTsgfTsKKyNs
aW5lIDEyNjAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDI6IC8q
ICJPcHRpb25hbFByZWRpY2F0ZUxpc3QiICovCisjbGluZSA5NCAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uVmVjdG9yKTsgfTsKKyNs
aW5lIDEyNjUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDM6IC8q
ICJQcmVkaWNhdGVMaXN0IiAqLworI2xpbmUgOTQgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55
IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvblZlY3Rvcik7IH07CisjbGluZSAxMjcw
ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDQ0OiAvKiAiUHJlZGlj
YXRlIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0
ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTI3NSAiLi9YUGF0aEdyYW1tYXIu
Y3BwIgorCWJyZWFrOworICAgICAgY2FzZSA0NTogLyogIkRlc2NlbmRhbnRPclNlbGYiICovCisj
bGluZSA5NyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVw
LT5zdGVwKTsgfTsKKyNsaW5lIDEyODAgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAg
ICAgIGNhc2UgNDY6IC8qICJBYmJyZXZpYXRlZFN0ZXAiICovCisjbGluZSA5NyAiV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLnkiCisJeyBkZWxldGUgKHl5dmFsdWVwLT5zdGVwKTsgfTsKKyNsaW5l
IDEyODUgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDc6IC8qICJQ
cmltYXJ5RXhwciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJ
eyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEyOTAgIi4vWFBhdGhH
cmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNDg6IC8qICJGdW5jdGlvbkNhbGwiICov
CisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZh
bHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMjk1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJ
YnJlYWs7CisgICAgICBjYXNlIDQ5OiAvKiAiQXJndW1lbnRMaXN0IiAqLworI2xpbmUgOTQgIldl
YkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lv
blZlY3Rvcik7IH07CisjbGluZSAxMzAwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7Cisg
ICAgICBjYXNlIDUwOiAvKiAiQXJndW1lbnQiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQ
YXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGlu
ZSAxMzA1ICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDUxOiAvKiAi
VW5pb25FeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7
IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTMxMCAiLi9YUGF0aEdy
YW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1MjogLyogIlBhdGhFeHByIiAqLworI2xp
bmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAt
PmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTMxNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFr
OworICAgICAgY2FzZSA1MzogLyogIkZpbHRlckV4cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUv
eG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07
CisjbGluZSAxMzIwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJlYWs7CisgICAgICBjYXNlIDU0
OiAvKiAiT3JFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIK
Kwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUgMTMyNSAiLi9YUGF0
aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1NTogLyogIkFuZEV4cHIiICovCisj
bGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRlICh5eXZhbHVl
cC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzMwICIuL1hQYXRoR3JhbW1hci5jcHAiCisJYnJl
YWs7CisgICAgICBjYXNlIDU2OiAvKiAiRXF1YWxpdHlFeHByIiAqLworI2xpbmUgMTAwICJXZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24p
OyB9OworI2xpbmUgMTMzNSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2Fz
ZSA1NzogLyogIlJlbGF0aW9uYWxFeHByIiAqLworI2xpbmUgMTAwICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJlc3Npb24pOyB9OworI2xpbmUg
MTM0MCAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworICAgICAgY2FzZSA1ODogLyogIkFk
ZGl0aXZlRXhwciIgKi8KKyNsaW5lIDEwMCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisJ
eyBkZWxldGUgKHl5dmFsdWVwLT5leHByZXNzaW9uKTsgfTsKKyNsaW5lIDEzNDUgIi4vWFBhdGhH
cmFtbWFyLmNwcCIKKwlicmVhazsKKyAgICAgIGNhc2UgNTk6IC8qICJNdWx0aXBsaWNhdGl2ZUV4
cHIiICovCisjbGluZSAxMDAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorCXsgZGVsZXRl
ICh5eXZhbHVlcC0+ZXhwcmVzc2lvbik7IH07CisjbGluZSAxMzUwICIuL1hQYXRoR3JhbW1hci5j
cHAiCisJYnJlYWs7CisgICAgICBjYXNlIDYwOiAvKiAiVW5hcnlFeHByIiAqLworI2xpbmUgMTAw
ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKwl7IGRlbGV0ZSAoeXl2YWx1ZXAtPmV4cHJl
c3Npb24pOyB9OworI2xpbmUgMTM1NSAiLi9YUGF0aEdyYW1tYXIuY3BwIgorCWJyZWFrOworCisg
ICAgICBkZWZhdWx0OgorCWJyZWFrOworICAgIH0KK30KKwwKKworLyogUHJldmVudCB3YXJuaW5n
cyBmcm9tIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KKworI2lmZGVmIFlZUEFSU0VfUEFSQU0K
KyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKK2ludCB5eXBhcnNl
ICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKKyNlbHNlCitpbnQgeXlwYXJzZSAoKTsKKyNlbmRpZgor
I2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCisjaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAoUGFyc2VyJiBwYXJzZXIpOworI2Vsc2UKK2lu
dCB5eXBhcnNlICgpOworI2VuZGlmCisjZW5kaWYgLyogISBZWVBBUlNFX1BBUkFNICovCisKKwor
CisKKworCisvKi0tLS0tLS0tLS0uCit8IHl5cGFyc2UuICB8CitgLS0tLS0tLS0tLSovCisKKyNp
ZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5
OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0Nf
VkVSKQoraW50Cit5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKQorI2Vsc2UKK2ludAoreXlw
YXJzZSAoWVlQQVJTRV9QQVJBTSkKKyAgICB2b2lkICpZWVBBUlNFX1BBUkFNOworI2VuZGlmCisj
ZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCitpbnQKK3l5cGFyc2UgKFBhcnNlciYgcGFyc2VyKQorI2Vsc2UKK2ludAor
eXlwYXJzZSAocGFyc2VyKQorICAgIFBhcnNlciYgcGFyc2VyOworI2VuZGlmCisjZW5kaWYKK3sK
KyAgLyogVGhlIGxvb2stYWhlYWQgc3ltYm9sLiAgKi8KK2ludCB5eWNoYXI7CisKKy8qIFRoZSBz
ZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworWVlTVFlQRSB5eWx2
YWw7CisKKy8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCitpbnQgeXluZXJy
czsKKworICBpbnQgeXlzdGF0ZTsKKyAgaW50IHl5bjsKKyAgaW50IHl5cmVzdWx0OworICAvKiBO
dW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAg
Ki8KKyAgaW50IHl5ZXJyc3RhdHVzOworICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFuIGludGVy
bmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLworICBpbnQgeXl0b2tlbiA9IDA7Cisj
aWYgWVlFUlJPUl9WRVJCT1NFCisgIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBp
dHMgYWxsb2NhdGVkIHNpemUuICAqLworICBjaGFyIHl5bXNnYnVmWzEyOF07CisgIGNoYXIgKnl5
bXNnID0geXltc2didWY7CisgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVm
OworI2VuZGlmCisKKyAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKKyAgICAgYHl5
c3MnOiByZWxhdGVkIHRvIHN0YXRlcywKKyAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGlj
IHZhbHVlcywKKyAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KKworICAgICBSZWZl
ciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZs
b3cKKyAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCisKKyAgLyogVGhlIHN0
YXRlIHN0YWNrLiAgKi8KKyAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgeXl0
eXBlX2ludDE2ICp5eXNzID0geXlzc2E7CisgIHl5dHlwZV9pbnQxNiAqeXlzc3A7CisKKyAgLyog
VGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KKyAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBU
SF07CisgIFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKKyAgWVlTVFlQRSAqeXl2c3A7CisKKworCisj
ZGVmaW5lIFlZUE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTikpCisKKyAg
WVlTSVpFX1QgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKKworICAvKiBUaGUgdmFyaWFibGVz
IHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQorICAg
ICBhY3Rpb24gcm91dGluZXMuICAqLworICBZWVNUWVBFIHl5dmFsOworCisKKyAgLyogVGhlIG51
bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4KKyAgICAgS2Vl
cCB0byB6ZXJvIHdoZW4gbm8gc3ltYm9sIHNob3VsZCBiZSBwb3BwZWQuICAqLworICBpbnQgeXls
ZW4gPSAwOworCisgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7CisK
KyAgeXlzdGF0ZSA9IDA7CisgIHl5ZXJyc3RhdHVzID0gMDsKKyAgeXluZXJycyA9IDA7CisgIHl5
Y2hhciA9IFlZRU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLworCisgIC8q
IEluaXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCisgICAgIFdhc3RlIG9uZSBlbGVtZW50IG9mIHZh
bHVlIGFuZCBsb2NhdGlvbiBzdGFjaworICAgICBzbyB0aGF0IHRoZXkgc3RheSBvbiB0aGUgc2Ft
ZSBsZXZlbCBhcyB0aGUgc3RhdGUgc3RhY2suCisgICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJl
IG5ldmVyIGluaXRpYWxpemVkLiAgKi8KKworICB5eXNzcCA9IHl5c3M7CisgIHl5dnNwID0geXl2
czsKKworICBnb3RvIHl5c2V0c3RhdGU7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eW5ld3N0YXRlIC0tIFB1c2gg
YSBuZXcgc3RhdGUsIHdoaWNoIGlzIGZvdW5kIGluIHl5c3RhdGUuICB8CitgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyB5eW5l
d3N0YXRlOgorICAvKiBJbiBhbGwgY2FzZXMsIHdoZW4geW91IGdldCBoZXJlLCB0aGUgdmFsdWUg
YW5kIGxvY2F0aW9uIHN0YWNrcworICAgICBoYXZlIGp1c3QgYmVlbiBwdXNoZWQuICBTbyBwdXNo
aW5nIGEgc3RhdGUgaGVyZSBldmVucyB0aGUgc3RhY2tzLiAgKi8KKyAgeXlzc3ArKzsKKworIHl5
c2V0c3RhdGU6CisgICp5eXNzcCA9IHl5c3RhdGU7CisKKyAgaWYgKHl5c3MgKyB5eXN0YWNrc2l6
ZSAtIDEgPD0geXlzc3ApCisgICAgeworICAgICAgLyogR2V0IHRoZSBjdXJyZW50IHVzZWQgc2l6
ZSBvZiB0aGUgdGhyZWUgc3RhY2tzLCBpbiBlbGVtZW50cy4gICovCisgICAgICBZWVNJWkVfVCB5
eXNpemUgPSB5eXNzcCAtIHl5c3MgKyAxOworCisjaWZkZWYgeXlvdmVyZmxvdworICAgICAgewor
CS8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byByZWFsbG9jYXRlIHRoZSBzdGFjay4gIFVzZSBjb3Bp
ZXMgb2YKKwkgICB0aGVzZSBzbyB0aGF0IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25l
cyBpbnRvCisJICAgbWVtb3J5LiAgKi8KKwlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CisJeXl0eXBl
X2ludDE2ICp5eXNzMSA9IHl5c3M7CisKKworCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNz
IGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQorCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQg
c3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKKwkgICBjb25kaXRpb25hbCBhcm91
bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0CisJICAgYmUgdW5kZWZp
bmVkIGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCisJeXlvdmVyZmxvdyAoWVlfKCJtZW1v
cnkgZXhoYXVzdGVkIiksCisJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwK
KwkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAorCisJCSAgICAmeXlzdGFj
a3NpemUpOworCisJeXlzcyA9IHl5c3MxOworCXl5dnMgPSB5eXZzMTsKKyAgICAgIH0KKyNlbHNl
IC8qIG5vIHl5b3ZlcmZsb3cgKi8KKyMgaWZuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKKyAgICAgIGdv
dG8geXlleGhhdXN0ZWRsYWI7CisjIGVsc2UKKyAgICAgIC8qIEV4dGVuZCB0aGUgc3RhY2sgb3Vy
IG93biB3YXkuICAqLworICAgICAgaWYgKFlZTUFYREVQVEggPD0geXlzdGFja3NpemUpCisJZ290
byB5eWV4aGF1c3RlZGxhYjsKKyAgICAgIHl5c3RhY2tzaXplICo9IDI7CisgICAgICBpZiAoWVlN
QVhERVBUSCA8IHl5c3RhY2tzaXplKQorCXl5c3RhY2tzaXplID0gWVlNQVhERVBUSDsKKworICAg
ICAgeworCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOworCXVuaW9uIHl5YWxsb2MgKnl5cHRy
ID0KKwkgICh1bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5
c3RhY2tzaXplKSk7CisJaWYgKCEgeXlwdHIpCisJICBnb3RvIHl5ZXhoYXVzdGVkbGFiOworCVlZ
U1RBQ0tfUkVMT0NBVEUgKHl5c3MpOworCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOworCisjICB1
bmRlZiBZWVNUQUNLX1JFTE9DQVRFCisJaWYgKHl5c3MxICE9IHl5c3NhKQorCSAgWVlTVEFDS19G
UkVFICh5eXNzMSk7CisgICAgICB9CisjIGVuZGlmCisjZW5kaWYgLyogbm8geXlvdmVyZmxvdyAq
LworCisgICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOworICAgICAgeXl2c3AgPSB5eXZz
ICsgeXlzaXplIC0gMTsKKworCisgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXpl
IGluY3JlYXNlZCB0byAlbHVcbiIsCisJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6
ZSkpOworCisgICAgICBpZiAoeXlzcyArIHl5c3RhY2tzaXplIC0gMSA8PSB5eXNzcCkKKwlZWUFC
T1JUOworICAgIH0KKworICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxu
IiwgeXlzdGF0ZSkpOworCisgIGdvdG8geXliYWNrdXA7CisKKy8qLS0tLS0tLS0tLS0uCit8IHl5
YmFja3VwLiAgfAorYC0tLS0tLS0tLS0tKi8KK3l5YmFja3VwOgorCisgIC8qIERvIGFwcHJvcHJp
YXRlIHByb2Nlc3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUuICBSZWFkIGEKKyAgICAgbG9v
ay1haGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4g
ICovCisKKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJl
bmNlIHRvIGxvb2stYWhlYWQgdG9rZW4uICAqLworICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Cisg
IGlmICh5eW4gPT0gWVlQQUNUX05JTkYpCisgICAgZ290byB5eWRlZmF1bHQ7CisKKyAgLyogTm90
IGtub3duID0+IGdldCBhIGxvb2stYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9u
ZS4gICovCisKKyAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFs
aWQgbG9vay1haGVhZCBzeW1ib2wuICAqLworICBpZiAoeXljaGFyID09IFlZRU1QVFkpCisgICAg
eworICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7CisgICAg
ICB5eWNoYXIgPSBZWUxFWDsKKyAgICB9CisKKyAgaWYgKHl5Y2hhciA8PSBZWUVPRikKKyAgICB7
CisgICAgICB5eWNoYXIgPSB5eXRva2VuID0gWVlFT0Y7CisgICAgICBZWURQUklOVEYgKChzdGRl
cnIsICJOb3cgYXQgZW5kIG9mIGlucHV0LlxuIikpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg
ICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIFlZX1NZTUJPTF9QUklO
VCAoIk5leHQgdG9rZW4gaXMiLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKKyAgICB9CisK
KyAgLyogSWYgdGhlIHByb3BlciBhY3Rpb24gb24gc2VlaW5nIHRva2VuIFlZVE9LRU4gaXMgdG8g
cmVkdWNlIG9yIHRvCisgICAgIGRldGVjdCBhbiBlcnJvciwgdGFrZSB0aGF0IGFjdGlvbi4gICov
CisgIHl5biArPSB5eXRva2VuOworICBpZiAoeXluIDwgMCB8fCBZWUxBU1QgPCB5eW4gfHwgeXlj
aGVja1t5eW5dICE9IHl5dG9rZW4pCisgICAgZ290byB5eWRlZmF1bHQ7CisgIHl5biA9IHl5dGFi
bGVbeXluXTsKKyAgaWYgKHl5biA8PSAwKQorICAgIHsKKyAgICAgIGlmICh5eW4gPT0gMCB8fCB5
eW4gPT0gWVlUQUJMRV9OSU5GKQorCWdvdG8geXllcnJsYWI7CisgICAgICB5eW4gPSAteXluOwor
ICAgICAgZ290byB5eXJlZHVjZTsKKyAgICB9CisKKyAgaWYgKHl5biA9PSBZWUZJTkFMKQorICAg
IFlZQUNDRVBUOworCisgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRl
ciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKKyAgICAgc3RhdHVzLiAgKi8KKyAgaWYgKHl5ZXJyc3Rh
dHVzKQorICAgIHl5ZXJyc3RhdHVzLS07CisKKyAgLyogU2hpZnQgdGhlIGxvb2stYWhlYWQgdG9r
ZW4uICAqLworICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5dG9rZW4sICZ5eWx2YWws
ICZ5eWxsb2MpOworCisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4gdW5sZXNzIGl0IGlz
IGVvZi4gICovCisgIGlmICh5eWNoYXIgIT0gWVlFT0YpCisgICAgeXljaGFyID0gWVlFTVBUWTsK
KworICB5eXN0YXRlID0geXluOworICAqKyt5eXZzcCA9IHl5bHZhbDsKKworICBnb3RvIHl5bmV3
c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlkZWZhdWx0IC0tIGRvIHRoZSBkZWZhdWx0IGFjdGlvbiBm
b3IgdGhlIGN1cnJlbnQgc3RhdGUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlkZWZhdWx0OgorICB5eW4gPSB5eWRl
ZmFjdFt5eXN0YXRlXTsKKyAgaWYgKHl5biA9PSAwKQorICAgIGdvdG8geXllcnJsYWI7CisgIGdv
dG8geXlyZWR1Y2U7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXly
ZWR1Y2UgLS0gRG8gYSByZWR1Y3Rpb24uICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLworeXlyZWR1Y2U6CisgIC8qIHl5biBpcyB0aGUgbnVtYmVyIG9mIGEgcnVsZSB0byByZWR1
Y2Ugd2l0aC4gICovCisgIHl5bGVuID0geXlyMlt5eW5dOworCisgIC8qIElmIFlZTEVOIGlzIG5v
bnplcm8sIGltcGxlbWVudCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgYWN0aW9uOgorICAgICBg
JCQgPSAkMScuCisKKyAgICAgT3RoZXJ3aXNlLCB0aGUgZm9sbG93aW5nIGxpbmUgc2V0cyBZWVZB
TCB0byBnYXJiYWdlLgorICAgICBUaGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1lbnRlZCBhbmQgQmlz
b24KKyAgICAgdXNlcnMgc2hvdWxkIG5vdCByZWx5IHVwb24gaXQuICBBc3NpZ25pbmcgdG8gWVlW
QUwKKyAgICAgdW5jb25kaXRpb25hbGx5IG1ha2VzIHRoZSBwYXJzZXIgYSBiaXQgc21hbGxlciwg
YW5kIGl0IGF2b2lkcyBhCisgICAgIEdDQyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQg
dW5pbml0aWFsaXplZC4gICovCisgIHl5dmFsID0geXl2c3BbMS15eWxlbl07CisKKworICBZWV9S
RURVQ0VfUFJJTlQgKHl5bik7CisgIHN3aXRjaCAoeXluKQorICAgIHsKKyAgICAgICAgY2FzZSAy
OgorI2xpbmUgMTE1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAg
IHBhcnNlci5zZXRQYXJzZVJlc3VsdChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNw
WygxKSAtICgxKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2Ug
NDoKKyNsaW5lIDEyNiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAg
ICAoeXl2YWwubG9jYXRpb25QYXRoKSA9ICh5eXZzcFsoMSkgLSAoMSldLmxvY2F0aW9uUGF0aCk7
CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpLT5zZXRBYnNvbHV0ZSgpOworICAgIDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSA2OgorI2xpbmUgMTM2ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1t
YXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5sb2NhdGlvblBhdGgpID0gbmV3IExvY2F0aW9u
UGF0aDsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNzoKKyNsaW5lIDE0MSAiV2ViQ29y
ZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRo
KSA9ICh5eXZzcFsoMikgLSAoMildLmxvY2F0aW9uUGF0aCk7CisgICAgO30KKyAgICBicmVhazsK
KworICBjYXNlIDg6CisjbGluZSAxNDYgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAg
IHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAoeXl2c3BbKDIpIC0gKDIpXS5sb2Nh
dGlvblBhdGgpOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+cHJlcGVuZFN0ZXAoc3Rk
Ojp1bmlxdWVfcHRyPFN0ZXA+KCh5eXZzcFsoMSkgLSAoMildLnN0ZXApKSk7CisgICAgO30KKyAg
ICBicmVhazsKKworICBjYXNlIDk6CisjbGluZSAxNTQgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1h
ci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSBuZXcgTG9jYXRpb25Q
YXRoOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+YXBwZW5kU3RlcChzdGQ6OnVuaXF1
ZV9wdHI8U3RlcD4oKHl5dnNwWygxKSAtICgxKV0uc3RlcCkpKTsKKyAgICA7fQorICAgIGJyZWFr
OworCisgIGNhc2UgMTA6CisjbGluZSAxNjAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55Igor
ICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAoeXl2c3BbKDEpIC0gKDMpXS5s
b2NhdGlvblBhdGgpOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+YXBwZW5kU3RlcChz
dGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygzKSAtICgzKV0uc3RlcCkpKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgMTE6CisjbGluZSAxNjYgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCkgPSAoeXl2c3BbKDEp
IC0gKDMpXS5sb2NhdGlvblBhdGgpOworICAgICAgICAoeXl2YWwubG9jYXRpb25QYXRoKS0+YXBw
ZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygyKSAtICgzKV0uc3RlcCkpKTsK
KyAgICAgICAgKHl5dmFsLmxvY2F0aW9uUGF0aCktPmFwcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRy
PFN0ZXA+KCh5eXZzcFsoMykgLSAoMyldLnN0ZXApKSk7CisgICAgO30KKyAgICBicmVhazsKKwor
ICBjYXNlIDEyOgorI2xpbmUgMTc1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGVwOjpOb2RlVGVzdD4gbm9kZVRlc3QoKHl5dnNw
WygxKSAtICgyKV0ubm9kZVRlc3QpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNhdGVMaXN0KCh5eXZzcFsoMikgLSAo
MildLmV4cHJlc3Npb25WZWN0b3IpKTsKKyAgICAgICAgaWYgKHByZWRpY2F0ZUxpc3QpCisgICAg
ICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpDaGlsZEF4aXMsIFdURk1vdmUo
Km5vZGVUZXN0KSwgV1RGTW92ZSgqcHJlZGljYXRlTGlzdCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChTdGVwOjpDaGlsZEF4aXMsIFdURk1vdmUo
Km5vZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDEzOgorI2xpbmUgMTg1
ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmluZyBuYW1l
dGVzdCA9IGFkb3B0UmVmKCh5eXZzcFsoMSkgLSAoMildLnN0cmluZykpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0
ZUxpc3QoKHl5dnNwWygyKSAtICgyKV0uZXhwcmVzc2lvblZlY3RvcikpOworCisgICAgICAgIFN0
cmluZyBsb2NhbE5hbWU7CisgICAgICAgIFN0cmluZyBuYW1lc3BhY2VVUkk7CisgICAgICAgIGlm
ICghcGFyc2VyLmV4cGFuZFF1YWxpZmllZE5hbWUobmFtZXRlc3QsIGxvY2FsTmFtZSwgbmFtZXNw
YWNlVVJJKSkgeworICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIFlZQUJPUlQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJlZGljYXRlTGlzdCkKKyAg
ICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKFN0ZXA6OkNoaWxkQXhpcywgU3RlcDo6
Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVS
SSksIFdURk1vdmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
KHl5dmFsLnN0ZXApID0gbmV3IFN0ZXAoU3RlcDo6Q2hpbGRBeGlzLCBTdGVwOjpOb2RlVGVzdChT
dGVwOjpOb2RlVGVzdDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSk7CisgICAg
O30KKyAgICBicmVhazsKKworICBjYXNlIDE0OgorI2xpbmUgMjAzICJXZWJDb3JlL3htbC9YUGF0
aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGVwOjpOb2RlVGVz
dD4gbm9kZVRlc3QoKHl5dnNwWygyKSAtICgzKV0ubm9kZVRlc3QpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNhdGVM
aXN0KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb25WZWN0b3IpKTsKKworICAgICAgICBpZiAo
cHJlZGljYXRlTGlzdCkKKyAgICAgICAgICAgICh5eXZhbC5zdGVwKSA9IG5ldyBTdGVwKCh5eXZz
cFsoMSkgLSAoMyldLmF4aXMpLCBXVEZNb3ZlKCpub2RlVGVzdCksIFdURk1vdmUoKnByZWRpY2F0
ZUxpc3QpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKHl5dmFsLnN0ZXApID0gbmV3IFN0
ZXAoKHl5dnNwWygxKSAtICgzKV0uYXhpcyksIFdURk1vdmUoKm5vZGVUZXN0KSk7CisgICAgO30K
KyAgICBicmVhazsKKworICBjYXNlIDE1OgorI2xpbmUgMjE0ICJXZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmluZyBuYW1ldGVzdCA9IGFkb3B0UmVmKCh5eXZz
cFsoMikgLSAoMyldLnN0cmluZykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0ZUxpc3QoKHl5dnNwWygzKSAtICgz
KV0uZXhwcmVzc2lvblZlY3RvcikpOworCisgICAgICAgIFN0cmluZyBsb2NhbE5hbWU7CisgICAg
ICAgIFN0cmluZyBuYW1lc3BhY2VVUkk7CisgICAgICAgIGlmICghcGFyc2VyLmV4cGFuZFF1YWxp
ZmllZE5hbWUobmFtZXRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSkgeworICAgICAgICAg
ICAgKHl5dmFsLnN0ZXApID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFlZQUJPUlQ7CisgICAgICAg
IH0KKworICAgICAgICBpZiAocHJlZGljYXRlTGlzdCkKKyAgICAgICAgICAgICh5eXZhbC5zdGVw
KSA9IG5ldyBTdGVwKCh5eXZzcFsoMSkgLSAoMyldLmF4aXMpLCBTdGVwOjpOb2RlVGVzdChTdGVw
OjpOb2RlVGVzdDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSwgV1RGTW92ZSgq
cHJlZGljYXRlTGlzdCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAoeXl2YWwuc3RlcCkg
PSBuZXcgU3RlcCgoeXl2c3BbKDEpIC0gKDMpXS5heGlzKSwgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6
Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOworICAgIDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSAxODoKKyNsaW5lIDIzOCAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuYXhpcykgPSBTdGVwOjpBdHRyaWJ1dGVBeGlz
OworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxOToKKyNsaW5lIDI0NSAiV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwubm9kZVRlc3QpID0gbmV3
IFN0ZXA6Ok5vZGVUZXN0KFN0ZXA6Ok5vZGVUZXN0OjpBbnlOb2RlVGVzdCk7CisgICAgO30KKyAg
ICBicmVhazsKKworICBjYXNlIDIwOgorI2xpbmUgMjUwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1t
YXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5ub2RlVGVzdCkgPSBuZXcgU3RlcDo6Tm9kZVRl
c3QoU3RlcDo6Tm9kZVRlc3Q6OlRleHROb2RlVGVzdCk7CisgICAgO30KKyAgICBicmVhazsKKwor
ICBjYXNlIDIxOgorI2xpbmUgMjU1ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7
CisgICAgICAgICh5eXZhbC5ub2RlVGVzdCkgPSBuZXcgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9k
ZVRlc3Q6OkNvbW1lbnROb2RlVGVzdCk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDIy
OgorI2xpbmUgMjYwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAg
ICh5eXZhbC5ub2RlVGVzdCkgPSBuZXcgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6OlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbk5vZGVUZXN0KTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNh
c2UgMjM6CisjbGluZSAyNjUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAg
ICAgICAgU3RyaW5nIGxpdGVyYWwgPSBhZG9wdFJlZigoeXl2c3BbKDMpIC0gKDQpXS5zdHJpbmcp
KTsKKyAgICAgICAgKHl5dmFsLm5vZGVUZXN0KSA9IG5ldyBTdGVwOjpOb2RlVGVzdChTdGVwOjpO
b2RlVGVzdDo6UHJvY2Vzc2luZ0luc3RydWN0aW9uTm9kZVRlc3QsIGxpdGVyYWwuc3RyaXBXaGl0
ZVNwYWNlKCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAyNDoKKyNsaW5lIDI3MyAi
V2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVz
c2lvblZlY3RvcikgPSBudWxscHRyOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAyNjoK
KyNsaW5lIDI4MiAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAo
eXl2YWwuZXhwcmVzc2lvblZlY3RvcikgPSBuZXcgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPj47CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uVmVjdG9yKS0+YXBwZW5kKHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDEpXS5leHByZXNzaW9uKSkpOwor
ICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAyNzoKKyNsaW5lIDI4OCAiV2ViQ29yZS94bWwv
WFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3Rvcikg
PSAoeXl2c3BbKDEpIC0gKDIpXS5leHByZXNzaW9uVmVjdG9yKTsKKyAgICAgICAgKHl5dmFsLmV4
cHJlc3Npb25WZWN0b3IpLT5hcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZz
cFsoMikgLSAoMildLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNl
IDI4OgorI2xpbmUgMjk2ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAg
ICAgICh5eXZhbC5leHByZXNzaW9uKSA9ICh5eXZzcFsoMikgLSAoMyldLmV4cHJlc3Npb24pOwor
ICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAyOToKKyNsaW5lIDMwMyAiV2ViQ29yZS94bWwv
WFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuc3RlcCkgPSBuZXcgU3RlcChT
dGVwOjpEZXNjZW5kYW50T3JTZWxmQXhpcywgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6
OkFueU5vZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDMwOgorI2xpbmUg
MzEwICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5z
dGVwKSA9IG5ldyBTdGVwKFN0ZXA6OlNlbGZBeGlzLCBTdGVwOjpOb2RlVGVzdChTdGVwOjpOb2Rl
VGVzdDo6QW55Tm9kZVRlc3QpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzE6Cisj
bGluZSAzMTUgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5
dmFsLnN0ZXApID0gbmV3IFN0ZXAoU3RlcDo6UGFyZW50QXhpcywgU3RlcDo6Tm9kZVRlc3QoU3Rl
cDo6Tm9kZVRlc3Q6OkFueU5vZGVUZXN0KSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNl
IDMyOgorI2xpbmUgMzIyICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAg
ICAgIFN0cmluZyBuYW1lID0gYWRvcHRSZWYoKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKSk7Cisg
ICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBWYXJpYWJsZVJlZmVyZW5jZShuYW1lKTsK
KyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzM6CisjbGluZSAzMjggIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gKHl5
dnNwWygyKSAtICgzKV0uZXhwcmVzc2lvbik7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNl
IDM0OgorI2xpbmUgMzMzICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAg
ICAgIFN0cmluZyBsaXRlcmFsID0gYWRvcHRSZWYoKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKSk7
CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBTdHJpbmdFeHByZXNzaW9uKFdURk1v
dmUobGl0ZXJhbCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAzNToKKyNsaW5lIDMz
OSAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICBTdHJpbmcgbnVt
ZXJhbCA9IGFkb3B0UmVmKCh5eXZzcFsoMSkgLSAoMSldLnN0cmluZykpOworICAgICAgICAoeXl2
YWwuZXhwcmVzc2lvbikgPSBuZXcgTnVtYmVyKG51bWVyYWwudG9Eb3VibGUoKSk7CisgICAgO30K
KyAgICBicmVhazsKKworICBjYXNlIDM3OgorI2xpbmUgMzQ5ICJXZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueSIKKyAgICB7CisgICAgICAgIFN0cmluZyBuYW1lID0gYWRvcHRSZWYoKHl5dnNwWygx
KSAtICgzKV0uc3RyaW5nKSk7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IFhQYXRoOjpG
dW5jdGlvbjo6Y3JlYXRlKG5hbWUpLnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKCEoeXl2YWwuZXhw
cmVzc2lvbikpCisgICAgICAgICAgICBZWUFCT1JUOworICAgIDt9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSAzODoKKyNsaW5lIDM1NyAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgewor
ICAgICAgICBTdHJpbmcgbmFtZSA9IGFkb3B0UmVmKCh5eXZzcFsoMSkgLSAoNCldLnN0cmluZykp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPj4+IGFyZ3VtZW50TGlzdCgoeXl2c3BbKDMpIC0gKDQpXS5leHByZXNzaW9uVmVjdG9yKSk7
CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IFhQYXRoOjpGdW5jdGlvbjo6Y3JlYXRlKG5h
bWUsIFdURk1vdmUoKmFyZ3VtZW50TGlzdCkpLnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKCEoeXl2
YWwuZXhwcmVzc2lvbikpCisgICAgICAgICAgICBZWUFCT1JUOworICAgIDt9CisgICAgYnJlYWs7
CisKKyAgY2FzZSAzOToKKyNsaW5lIDM2OCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisg
ICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvblZlY3RvcikgPSBuZXcgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPj47CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uVmVjdG9y
KS0+YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDEpXS5l
eHByZXNzaW9uKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA0MDoKKyNsaW5lIDM3
NCAiV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhw
cmVzc2lvblZlY3RvcikgPSAoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uVmVjdG9yKTsKKyAg
ICAgICAgKHl5dmFsLmV4cHJlc3Npb25WZWN0b3IpLT5hcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEV4
cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBi
cmVhazsKKworICBjYXNlIDQzOgorI2xpbmUgMzg4ICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBVbmlvbihzdGQ6OnVu
aXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsK
KyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNDQ6CisjbGluZSAzOTUgIldlYkNvcmUveG1s
L1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gKHl5
dnNwWygxKSAtICgxKV0ubG9jYXRpb25QYXRoKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNh
c2UgNDY6CisjbGluZSA0MDIgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAg
ICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUoKTsKKyAg
ICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJl
c3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVfcHRyPExv
Y2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAgIDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSA0NzoKKyNsaW5lIDQwOCAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisgICAgeworICAgICAgICAoeXl2c3BbKDMpIC0gKDMpXS5sb2NhdGlvblBhdGgpLT5w
cmVwZW5kU3RlcChzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4oKHl5dnNwWygyKSAtICgzKV0uc3RlcCkp
KTsKKyAgICAgICAgKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKS0+c2V0QWJzb2x1dGUo
KTsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IFBhdGgoc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVf
cHRyPExvY2F0aW9uUGF0aD4oKHl5dnNwWygzKSAtICgzKV0ubG9jYXRpb25QYXRoKSkpOworICAg
IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA0OToKKyNsaW5lIDQxOSAiV2ViQ29yZS94bWwvWFBh
dGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4+IHByZWRpY2F0ZUxpc3QoKHl5dnNwWygyKSAtICgyKV0u
ZXhwcmVzc2lvblZlY3RvcikpOworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgRmls
dGVyKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDIpXS5leHByZXNz
aW9uKSksIFdURk1vdmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisg
IGNhc2UgNTE6CisjbGluZSA0MjkgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsK
KyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IExvZ2ljYWxPcChMb2dpY2FsT3A6Ok9Q
X09yLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVz
c2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhw
cmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNTM6CisjbGluZSA0Mzgg
IldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJl
c3Npb24pID0gbmV3IExvZ2ljYWxPcChMb2dpY2FsT3A6Ok9QX0FuZCwgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24pKSwgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Npb24pKSk7CisgICAgO30K
KyAgICBicmVhazsKKworICBjYXNlIDU1OgorI2xpbmUgNDQ3ICJXZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9uKSA9IG5ldyBFcVRlc3RP
cCgoeXl2c3BbKDIpIC0gKDMpXS5lcXVhbGl0eVRlc3RPcGNvZGUpLCBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4oKHl5dnNwWygxKSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9w
dHI8RXhwcmVzc2lvbj4oKHl5dnNwWygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgNTc6CisjbGluZSA0NTYgIldlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IgorICAgIHsKKyAgICAgICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IEVxVGVzdE9w
KCh5eXZzcFsoMikgLSAoMyldLmVxdWFsaXR5VGVzdE9wY29kZSksIHN0ZDo6dW5pcXVlX3B0cjxF
eHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uKSkpOworICAgIDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSA1OToKKyNsaW5lIDQ2NSAiV2ViQ29yZS94bWwvWFBhdGhHcmFt
bWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBuZXcgTnVtZXJpY09w
KE51bWVyaWNPcDo6T1BfQWRkLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNwWygx
KSAtICgzKV0uZXhwcmVzc2lvbikpLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4oKHl5dnNw
WygzKSAtICgzKV0uZXhwcmVzc2lvbikpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2Ug
NjA6CisjbGluZSA0NzAgIldlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55IgorICAgIHsKKyAgICAg
ICAgKHl5dmFsLmV4cHJlc3Npb24pID0gbmV3IE51bWVyaWNPcChOdW1lcmljT3A6Ok9QX1N1Yiwg
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMSkgLSAoMyldLmV4cHJlc3Npb24p
KSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMykgLSAoMyldLmV4cHJlc3Np
b24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDYyOgorI2xpbmUgNDc5ICJXZWJD
b3JlL3htbC9YUGF0aEdyYW1tYXIueSIKKyAgICB7CisgICAgICAgICh5eXZhbC5leHByZXNzaW9u
KSA9IG5ldyBOdW1lcmljT3AoKHl5dnNwWygyKSAtICgzKV0ubnVtZXJpY09wY29kZSksIHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDEpIC0gKDMpXS5leHByZXNzaW9uKSksIHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigoeXl2c3BbKDMpIC0gKDMpXS5leHByZXNzaW9uKSkp
OworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA2NDoKKyNsaW5lIDQ4OCAiV2ViQ29yZS94
bWwvWFBhdGhHcmFtbWFyLnkiCisgICAgeworICAgICAgICAoeXl2YWwuZXhwcmVzc2lvbikgPSBu
ZXcgTmVnYXRpdmUoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+KCh5eXZzcFsoMikgLSAoMild
LmV4cHJlc3Npb24pKSk7CisgICAgO30KKyAgICBicmVhazsKKworCisvKiBMaW5lIDEyNjcgb2Yg
eWFjYy5jLiAgKi8KKyNsaW5lIDIwNDkgIi4vWFBhdGhHcmFtbWFyLmNwcCIKKyAgICAgIGRlZmF1
bHQ6IGJyZWFrOworICAgIH0KKyAgWVlfU1lNQk9MX1BSSU5UICgiLT4gJCQgPSIsIHl5cjFbeXlu
XSwgJnl5dmFsLCAmeXlsb2MpOworCisgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKKyAgeXlsZW4gPSAw
OworICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOworCisgICorK3l5dnNwID0geXl2YWw7
CisKKworICAvKiBOb3cgYHNoaWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRl
cm1pbmUgd2hhdCBzdGF0ZQorICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3
ZSBwb3BwZWQgYmFjayB0byBhbmQgdGhlIHJ1bGUKKyAgICAgbnVtYmVyIHJlZHVjZWQgYnkuICAq
LworCisgIHl5biA9IHl5cjFbeXluXTsKKworICB5eXN0YXRlID0geXlwZ290b1t5eW4gLSBZWU5U
T0tFTlNdICsgKnl5c3NwOworICBpZiAoMCA8PSB5eXN0YXRlICYmIHl5c3RhdGUgPD0gWVlMQVNU
ICYmIHl5Y2hlY2tbeXlzdGF0ZV0gPT0gKnl5c3NwKQorICAgIHl5c3RhdGUgPSB5eXRhYmxlW3l5
c3RhdGVdOworICBlbHNlCisgICAgeXlzdGF0ZSA9IHl5ZGVmZ290b1t5eW4gLSBZWU5UT0tFTlNd
OworCisgIGdvdG8geXluZXdzdGF0ZTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KK3wgeXllcnJsYWIgLS0gaGVyZSBvbiBkZXRlY3RpbmcgZXJyb3IgfAorYC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWVycmxhYjoKKyAgLyogSWYg
bm90IGFscmVhZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCByZXBvcnQgdGhpcyBlcnJvci4g
ICovCisgIGlmICgheXllcnJzdGF0dXMpCisgICAgeworICAgICAgKyt5eW5lcnJzOworI2lmICEg
WVlFUlJPUl9WRVJCT1NFCisgICAgICB5eWVycm9yIChwYXJzZXIsIFlZXygic3ludGF4IGVycm9y
IikpOworI2Vsc2UKKyAgICAgIHsKKwlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9lcnJvciAo
MCwgeXlzdGF0ZSwgeXljaGFyKTsKKwlpZiAoeXltc2dfYWxsb2MgPCB5eXNpemUgJiYgeXltc2df
YWxsb2MgPCBZWVNUQUNLX0FMTE9DX01BWElNVU0pCisJICB7CisJICAgIFlZU0laRV9UIHl5YWxs
b2MgPSAyICogeXlzaXplOworCSAgICBpZiAoISAoeXlzaXplIDw9IHl5YWxsb2MgJiYgeXlhbGxv
YyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQorCSAgICAgIHl5YWxsb2MgPSBZWVNUQUNLX0FM
TE9DX01BWElNVU07CisJICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKwkgICAgICBZWVNUQUNL
X0ZSRUUgKHl5bXNnKTsKKwkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eWFs
bG9jKTsKKwkgICAgaWYgKHl5bXNnKQorCSAgICAgIHl5bXNnX2FsbG9jID0geXlhbGxvYzsKKwkg
ICAgZWxzZQorCSAgICAgIHsKKwkJeXltc2cgPSB5eW1zZ2J1ZjsKKwkJeXltc2dfYWxsb2MgPSBz
aXplb2YgeXltc2didWY7CisJICAgICAgfQorCSAgfQorCisJaWYgKDAgPCB5eXNpemUgJiYgeXlz
aXplIDw9IHl5bXNnX2FsbG9jKQorCSAgeworCSAgICAodm9pZCkgeXlzeW50YXhfZXJyb3IgKHl5
bXNnLCB5eXN0YXRlLCB5eWNoYXIpOworCSAgICB5eWVycm9yIChwYXJzZXIsIHl5bXNnKTsKKwkg
IH0KKwllbHNlCisJICB7CisJICAgIHl5ZXJyb3IgKHBhcnNlciwgWVlfKCJzeW50YXggZXJyb3Ii
KSk7CisJICAgIGlmICh5eXNpemUgIT0gMCkKKwkgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwor
CSAgfQorICAgICAgfQorI2VuZGlmCisgICAgfQorCisKKworICBpZiAoeXllcnJzdGF0dXMgPT0g
MykKKyAgICB7CisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9v
ay1haGVhZCB0b2tlbiBhZnRlciBhbgorCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCisKKyAgICAg
IGlmICh5eWNoYXIgPD0gWVlFT0YpCisJeworCSAgLyogUmV0dXJuIGZhaWx1cmUgaWYgYXQgZW5k
IG9mIGlucHV0LiAgKi8KKwkgIGlmICh5eWNoYXIgPT0gWVlFT0YpCisJICAgIFlZQUJPUlQ7CisJ
fQorICAgICAgZWxzZQorCXsKKwkgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIsCisJ
CSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIHBhcnNlcik7CisJICB5eWNoYXIgPSBZWUVNUFRZOwor
CX0KKyAgICB9CisKKyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rLWFoZWFkIHRva2Vu
IGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgorICAgICB0b2tlbi4gICovCisgIGdvdG8geXllcnJs
YWIxOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLgorfCB5eWVycm9ybGFiIC0tIGVycm9yIHJhaXNlZCBleHBsaWNpdGx5IGJ5IFlZRVJS
T1IuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KK3l5ZXJyb3JsYWI6CisKKyAgLyogUGFjaWZ5IGNvbXBpbGVycyBsaWtlIEdDQyB3aGVu
IHRoZSB1c2VyIGNvZGUgbmV2ZXIgaW52b2tlcworICAgICBZWUVSUk9SIGFuZCB0aGUgbGFiZWwg
eXllcnJvcmxhYiB0aGVyZWZvcmUgbmV2ZXIgYXBwZWFycyBpbiB1c2VyCisgICAgIGNvZGUuICAq
LworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VucmVhY2hhYmxlLWNvZGUiCisjZW5k
aWYKKyAgaWYgKC8qQ09OU1RDT05EKi8gMCkKKyAgICAgZ290byB5eWVycm9ybGFiOworI2lmIENP
TVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyAg
LyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRy
aWdnZXJlZAorICAgICB0aGlzIFlZRVJST1IuICAqLworICBZWVBPUFNUQUNLICh5eWxlbik7Cisg
IHl5bGVuID0gMDsKKyAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKKyAgeXlzdGF0ZSA9
ICp5eXNzcDsKKyAgZ290byB5eWVycmxhYjE7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycmxhYjEgLS0g
Y29tbW9uIGNvZGUgZm9yIGJvdGggc3ludGF4IGVycm9yIGFuZCBZWUVSUk9SLiAgfAorYC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LworeXllcnJsYWIxOgorICB5eWVycnN0YXR1cyA9IDM7CS8qIEVhY2ggcmVhbCB0b2tlbiBzaGlm
dGVkIGRlY3JlbWVudHMgdGhpcy4gICovCisKKyAgZm9yICg7OykKKyAgICB7CisgICAgICB5eW4g
PSB5eXBhY3RbeXlzdGF0ZV07CisgICAgICBpZiAoeXluICE9IFlZUEFDVF9OSU5GKQorCXsKKwkg
IHl5biArPSBZWVRFUlJPUjsKKwkgIGlmICgwIDw9IHl5biAmJiB5eW4gPD0gWVlMQVNUICYmIHl5
Y2hlY2tbeXluXSA9PSBZWVRFUlJPUikKKwkgICAgeworCSAgICAgIHl5biA9IHl5dGFibGVbeXlu
XTsKKwkgICAgICBpZiAoMCA8IHl5bikKKwkJYnJlYWs7CisJICAgIH0KKwl9CisKKyAgICAgIC8q
IFBvcCB0aGUgY3VycmVudCBzdGF0ZSBiZWNhdXNlIGl0IGNhbm5vdCBoYW5kbGUgdGhlIGVycm9y
IHRva2VuLiAgKi8KKyAgICAgIGlmICh5eXNzcCA9PSB5eXNzKQorCVlZQUJPUlQ7CisKKworICAg
ICAgeXlkZXN0cnVjdCAoIkVycm9yOiBwb3BwaW5nIiwKKwkJICB5eXN0b3NbeXlzdGF0ZV0sIHl5
dnNwLCBwYXJzZXIpOworICAgICAgWVlQT1BTVEFDSyAoMSk7CisgICAgICB5eXN0YXRlID0gKnl5
c3NwOworICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKKyAgICB9CisKKyAgaWYg
KHl5biA9PSBZWUZJTkFMKQorICAgIFlZQUNDRVBUOworCisgICorK3l5dnNwID0geXlsdmFsOwor
CisKKyAgLyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8KKyAgWVlfU1lNQk9MX1BSSU5UICgi
U2hpZnRpbmciLCB5eXN0b3NbeXluXSwgeXl2c3AsIHl5bHNwKTsKKworICB5eXN0YXRlID0geXlu
OworICBnb3RvIHl5bmV3c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLgorfCB5eWFjY2VwdGxhYiAtLSBZWUFDQ0VQVCBjb21lcyBoZXJlLiAgfAorYC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlhY2NlcHRsYWI6CisgIHl5
cmVzdWx0ID0gMDsKKyAgZ290byB5eXJldHVybjsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS4KK3wgeXlhYm9ydGxhYiAtLSBZWUFCT1JUIGNvbWVzIGhlcmUuICB8Citg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlhYm9ydGxhYjoKKyAgeXly
ZXN1bHQgPSAxOworICBnb3RvIHl5cmV0dXJuOworCisjaWZuZGVmIHl5b3ZlcmZsb3cKKy8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlleGhh
dXN0ZWRsYWIgLS0gbWVtb3J5IGV4aGF1c3Rpb24gY29tZXMgaGVyZS4gIHwKK2AtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZXhoYXVzdGVkbGFi
OgorICB5eWVycm9yIChwYXJzZXIsIFlZXygibWVtb3J5IGV4aGF1c3RlZCIpKTsKKyAgeXlyZXN1
bHQgPSAyOworICAvKiBGYWxsIHRocm91Z2guICAqLworI2VuZGlmCisKK3l5cmV0dXJuOgorICBp
ZiAoeXljaGFyICE9IFlZRU9GICYmIHl5Y2hhciAhPSBZWUVNUFRZKQorICAgICB5eWRlc3RydWN0
ICgiQ2xlYW51cDogZGlzY2FyZGluZyBsb29rYWhlYWQiLAorCQkgeXl0b2tlbiwgJnl5bHZhbCwg
cGFyc2VyKTsKKyAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hp
Y2ggYWN0aW9uIHRyaWdnZXJlZAorICAgICB0aGlzIFlZQUJPUlQgb3IgWVlBQ0NFUFQuICAqLwor
ICBZWVBPUFNUQUNLICh5eWxlbik7CisgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7Cisg
IHdoaWxlICh5eXNzcCAhPSB5eXNzKQorICAgIHsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVw
OiBwb3BwaW5nIiwKKwkJICB5eXN0b3NbKnl5c3NwXSwgeXl2c3AsIHBhcnNlcik7CisgICAgICBZ
WVBPUFNUQUNLICgxKTsKKyAgICB9CisjaWZuZGVmIHl5b3ZlcmZsb3cKKyAgaWYgKHl5c3MgIT0g
eXlzc2EpCisgICAgWVlTVEFDS19GUkVFICh5eXNzKTsKKyNlbmRpZgorI2lmIFlZRVJST1JfVkVS
Qk9TRQorICBpZiAoeXltc2cgIT0geXltc2didWYpCisgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7
CisjZW5kaWYKKyAgLyogTWFrZSBzdXJlIFlZSUQgaXMgdXNlZC4gICovCisgIHJldHVybiBZWUlE
ICh5eXJlc3VsdCk7Cit9CisKKworI2xpbmUgNDkzICJXZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIu
eSIKKworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExNyBAQAorI2lmbmRlZiBDU1NHUkFNTUFSX0gKKyNkZWZpbmUgQ1NTR1JBTU1BUl9ICisv
KiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMi4zLiAgKi8KKworLyogU2tlbGV0
b24gaW50ZXJmYWNlIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKworICAgQ29w
eXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2CisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u
LCB5b3UgbWF5IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKKyAgIHBhcnQgb3Ig
YWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3Jr
CisgICB1bmRlciB0ZXJtcyBvZiB5b3VyIGNob2ljZSwgc28gbG9uZyBhcyB0aGF0IHdvcmsgaXNu
J3QgaXRzZWxmIGEKKyAgIHBhcnNlciBnZW5lcmF0b3IgdXNpbmcgdGhlIHNrZWxldG9uIG9yIGEg
bW9kaWZpZWQgdmVyc2lvbiB0aGVyZW9mCisgICBhcyBhIHBhcnNlciBza2VsZXRvbi4gIEFsdGVy
bmF0aXZlbHksIGlmIHlvdSBtb2RpZnkgb3IgcmVkaXN0cmlidXRlCisgICB0aGUgcGFyc2VyIHNr
ZWxldG9uIGl0c2VsZiwgeW91IG1heSAoYXQgeW91ciBvcHRpb24pIHJlbW92ZSB0aGlzCisgICBz
cGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSBy
ZXN1bHRpbmcKKyAgIEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUg
R05VIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2Vw
dGlvbi4KKworICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiBpbgorICAgdmVyc2lvbiAyLjIgb2YgQmlzb24uICAqLworCisv
KiBUb2tlbnMuICAqLworI2lmbmRlZiBZWVRPS0VOVFlQRQorIyBkZWZpbmUgWVlUT0tFTlRZUEUK
KyAgIC8qIFB1dCB0aGUgdG9rZW5zIGludG8gdGhlIHN5bWJvbCB0YWJsZSwgc28gdGhhdCBHREIg
YW5kIG90aGVyIGRlYnVnZ2VycworICAgICAga25vdyBhYm91dCB0aGVtLiAgKi8KKyAgIGVudW0g
eXl0b2tlbnR5cGUgeworICAgICBNVUxPUCA9IDI1OCwKKyAgICAgUkVMT1AgPSAyNTksCisgICAg
IEVRT1AgPSAyNjAsCisgICAgIE1JTlVTID0gMjYxLAorICAgICBQTFVTID0gMjYyLAorICAgICBB
TkQgPSAyNjMsCisgICAgIE9SID0gMjY0LAorICAgICBGVU5DVElPTk5BTUUgPSAyNjUsCisgICAg
IExJVEVSQUwgPSAyNjYsCisgICAgIE5BTUVURVNUID0gMjY3LAorICAgICBOVU1CRVIgPSAyNjgs
CisgICAgIE5PREVUWVBFID0gMjY5LAorICAgICBWQVJJQUJMRVJFRkVSRU5DRSA9IDI3MCwKKyAg
ICAgQVhJU05BTUUgPSAyNzEsCisgICAgIENPTU1FTlQgPSAyNzIsCisgICAgIERPVERPVCA9IDI3
MywKKyAgICAgUEkgPSAyNzQsCisgICAgIE5PREUgPSAyNzUsCisgICAgIFNMQVNIU0xBU0ggPSAy
NzYsCisgICAgIFRFWFRfID0gMjc3LAorICAgICBYUEFUSF9FUlJPUiA9IDI3OAorICAgfTsKKyNl
bmRpZgorLyogVG9rZW5zLiAgKi8KKyNkZWZpbmUgTVVMT1AgMjU4CisjZGVmaW5lIFJFTE9QIDI1
OQorI2RlZmluZSBFUU9QIDI2MAorI2RlZmluZSBNSU5VUyAyNjEKKyNkZWZpbmUgUExVUyAyNjIK
KyNkZWZpbmUgQU5EIDI2MworI2RlZmluZSBPUiAyNjQKKyNkZWZpbmUgRlVOQ1RJT05OQU1FIDI2
NQorI2RlZmluZSBMSVRFUkFMIDI2NgorI2RlZmluZSBOQU1FVEVTVCAyNjcKKyNkZWZpbmUgTlVN
QkVSIDI2OAorI2RlZmluZSBOT0RFVFlQRSAyNjkKKyNkZWZpbmUgVkFSSUFCTEVSRUZFUkVOQ0Ug
MjcwCisjZGVmaW5lIEFYSVNOQU1FIDI3MQorI2RlZmluZSBDT01NRU5UIDI3MgorI2RlZmluZSBE
T1RET1QgMjczCisjZGVmaW5lIFBJIDI3NAorI2RlZmluZSBOT0RFIDI3NQorI2RlZmluZSBTTEFT
SFNMQVNIIDI3NgorI2RlZmluZSBURVhUXyAyNzcKKyNkZWZpbmUgWFBBVEhfRVJST1IgMjc4CisK
KworCisKKyNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNM
QVJFRAordHlwZWRlZiB1bmlvbiBZWVNUWVBFCisjbGluZSA2MCAiV2ViQ29yZS94bWwvWFBhdGhH
cmFtbWFyLnkiCit7IAorICAgIE51bWVyaWNPcDo6T3Bjb2RlIG51bWVyaWNPcGNvZGU7IAorICAg
IEVxVGVzdE9wOjpPcGNvZGUgZXF1YWxpdHlUZXN0T3Bjb2RlOworICAgIFN0cmluZ0ltcGwqIHN0
cmluZzsKKyAgICBTdGVwOjpBeGlzIGF4aXM7CisgICAgTG9jYXRpb25QYXRoKiBsb2NhdGlvblBh
dGg7CisgICAgU3RlcDo6Tm9kZVRlc3QqIG5vZGVUZXN0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4+KiBleHByZXNzaW9uVmVjdG9yOworICAgIFN0ZXAqIHN0ZXA7Cisg
ICAgRXhwcmVzc2lvbiogZXhwcmVzc2lvbjsgCit9CisvKiBMaW5lIDE1Mjkgb2YgeWFjYy5jLiAg
Ki8KKyNsaW5lIDEwNyAiLi9YUGF0aEdyYW1tYXIuaHBwIgorCVlZU1RZUEU7CisjIGRlZmluZSB5
eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRl
ZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAx
CisjZW5kaWYKKworCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdyYW1tYXIueQko
cmV2aXNpb24gMjA5ODY5KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBYUGF0aDsKICV0
b2tlbiA8YXhpcz4gQVhJU05BTUUKICV0eXBlIDxheGlzPiBBeGlzU3BlY2lmaWVyCiAKLSV0b2tl
biBDT01NRU5UIERPVERPVCBQSSBOT0RFIFNMQVNIU0xBU0ggVEVYVCBYUEFUSF9FUlJPUgorJXRv
a2VuIENPTU1FTlQgRE9URE9UIFBJIE5PREUgU0xBU0hTTEFTSCBURVhUXyBYUEFUSF9FUlJPUgog
CiAldHlwZSA8bG9jYXRpb25QYXRoPiBMb2NhdGlvblBhdGggQWJzb2x1dGVMb2NhdGlvblBhdGgg
UmVsYXRpdmVMb2NhdGlvblBhdGgKICVkZXN0cnVjdG9yIHsgZGVsZXRlICQkOyB9IExvY2F0aW9u
UGF0aCBBYnNvbHV0ZUxvY2F0aW9uUGF0aCBSZWxhdGl2ZUxvY2F0aW9uUGF0aApAQCAtMjQ2LDcg
KzI0Niw3IEBAIE5vZGVUZXN0OgogICAgICAgICAkJCA9IG5ldyBTdGVwOjpOb2RlVGVzdChTdGVw
OjpOb2RlVGVzdDo6QW55Tm9kZVRlc3QpOwogICAgIH0KICAgICB8Ci0gICAgVEVYVCAnKCcgJykn
CisgICAgVEVYVF8gJygnICcpJwogICAgIHsKICAgICAgICAgJCQgPSBuZXcgU3RlcDo6Tm9kZVRl
c3QoU3RlcDo6Tm9kZVRlc3Q6OlRleHROb2RlVGVzdCk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDk4NjkpCisrKyBTb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgaW5s
aW5lIFBhcnNlcjo6VG9rZW4gUGFyc2VyOjpuZXh0VG9rZW5JbgogICAgICAgICBpZiAobmFtZSA9
PSAibm9kZSIpCiAgICAgICAgICAgICByZXR1cm4gVG9rZW4oTk9ERSk7CiAgICAgICAgIGlmIChu
YW1lID09ICJ0ZXh0IikKLSAgICAgICAgICAgIHJldHVybiBUb2tlbihURVhUKTsKKyAgICAgICAg
ICAgIHJldHVybiBUb2tlbihURVhUXyk7CiAgICAgICAgIGlmIChuYW1lID09ICJjb21tZW50IikK
ICAgICAgICAgICAgIHJldHVybiBUb2tlbihDT01NRU5UKTsKIApJbmRleDogU291cmNlL2NtYWtl
L1dlYktpdENvbW1vbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0Q29t
bW9uLmNtYWtlCShyZXZpc2lvbiAyMDk4NjkpCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0Q29tbW9u
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxMSArMTMsNiBAQCBpZiAoTk9UIEhBU19SVU5f
V0VCS0lUX0NPTU1PTikKICAgICAgICAgbGlzdChBUFBFTkQgQ01BS0VfUFJPR1JBTV9QQVRIICRF
TlZ7U3lzdGVtRHJpdmV9L2N5Z3dpbi9iaW4pCiAgICAgZW5kaWYgKCkKIAotICAgIGZpbmRfcGFj
a2FnZShCSVNPTiAyLjEgUkVRVUlSRUQpCi0gICAgaWYgKCFBUFBMRSkKLSAgICAgICAgZmluZF9w
YWNrYWdlKEZMRVggMi41LjM0IFJFUVVJUkVEKQotICAgIGVuZGlmICgpCi0KICAgICAjIFRPRE8g
RW5mb3JjZSB2ZXJzaW9uIHJlcXVpcmVtZW50IGZvciBncGVyZgogICAgIGZpbmRfcGFja2FnZShH
cGVyZiAzLjAuMSBSRVFVSVJFRCkKIApJbmRleDogU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCShyZXZp
c2lvbiAyMDk4NjkpCisrKyBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDMsMjEgKzI0Myw2IEBAIG1hY3JvKEdFTkVSQVRFX0RPTV9OQU1FUyBfbmFt
ZXNwYWNlIF9hdHQKICAgICAgICAgVkVSQkFUSU0pCiBlbmRtYWNybygpCiAKLQotbWFjcm8oR0VO
RVJBVEVfR1JBTU1BUiBfcHJlZml4IF9pbnB1dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0X3NvdXJj
ZSBfZmVhdHVyZXMpCi0gICAgIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Igd2luZmxleGJpc29u
LCB3aGljaCBkb2VzIG5vdCB3b3JrIGNvcnJldGx5IHdoZW4KLSAgICAjIHJ1biBpbiBhIGRpZmZl
cmVudCB3b3JraW5nIGRpcmVjdG9yeSB0aGFuIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5Lgot
ICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX3dvcmtpbmdfZGlyZWN0b3J5ICR7QklTT05fRVhF
Q1VUQUJMRX0gUEFUSCkKLQotICAgIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVU
ICR7X291dHB1dF9oZWFkZXJ9ICR7X291dHB1dF9zb3VyY2V9Ci0gICAgICAgIE1BSU5fREVQRU5E
RU5DWSAke19pbnB1dH0KLSAgICAgICAgREVQRU5EUyAke19pbnB1dH0KLSAgICAgICAgQ09NTUFO
RCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJDT1JFX0RJUn0vY3NzL21ha2VncmFtbWFyLnBsIC0t
b3V0cHV0RGlyICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSAtLWV4dHJhRGVmaW5lcyAi
JHtfZmVhdHVyZXN9IiAtLXByZXByb2Nlc3NvciAiJHtDT0RFX0dFTkVSQVRPUl9QUkVQUk9DRVNT
T1J9IiAtLWJpc29uICIke0JJU09OX0VYRUNVVEFCTEV9IiAtLXN5bWJvbHNQcmVmaXggJHtfcHJl
Zml4fSAke19pbnB1dH0KLSAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtfd29ya2luZ19kaXJl
Y3Rvcnl9Ci0gICAgICAgIFZFUkJBVElNKQotZW5kbWFjcm8oKQotCiBtYWNybyhNQUtFX0hBU0hf
VE9PTFMgX3NvdXJjZSkKICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9uYW1lICR7X3NvdXJj
ZX0gTkFNRV9XRSkKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>