<?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>4923</bug_id>
          
          <creation_ts>2005-09-10 14:47:23 -0700</creation_ts>
          <short_desc>stop using &lt;ostream&gt; in WebCore, eliminating the &lt;cmath&gt; troubles it causes</short_desc>
          <delta_ts>2005-12-19 11:51:21 -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>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>19306</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-10 14:47:23 -0700</bug_when>
    <thetext>For historical reasons, various WebCore classes have debug-only code that outputs them to a 
std::ostream.

This requires include the header &lt;ostream&gt;, which in turn includes &lt;cmath&gt;, which causes us to run 
afoul of some troubles because &lt;cmath&gt; undefines the macros from &lt;math.h&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19307</commentid>
    <comment_count>1</comment_count>
      <attachid>3850</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-10 14:48:03 -0700</bug_when>
    <thetext>Created attachment 3850
patch to remove the use of &lt;ostream&gt; and take out &lt;math.h&gt; workarounds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19322</commentid>
    <comment_count>2</comment_count>
      <attachid>3850</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-10 20:06:50 -0700</bug_when>
    <thetext>Comment on attachment 3850
patch to remove the use of &lt;ostream&gt; and take out &lt;math.h&gt; workarounds

The changes for everything but KWQDef.h look fine.  Removing qRound and the 64
bit types will break KDOM&apos;s build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19323</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-10 20:25:49 -0700</bug_when>
    <thetext>OK.

Eric, here&apos;s something to bring up with the KSVG folks: Going forward, is there a reason that KSVG needs 
to use Q types for 64-bit rather than standard C types? And is there a reason it can&apos;t just call the C 
standard lround instead of qRound?

I think a good rule is to use Qt stuff if there isn&apos;t a standard C alternative, but not if there is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19326</commentid>
    <comment_count>4</comment_count>
      <attachid>3850</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-10 21:16:53 -0700</bug_when>
    <thetext>Comment on attachment 3850
patch to remove the use of &lt;ostream&gt; and take out &lt;math.h&gt; workarounds

This breaks building under 4.0 (thus will break the opensource folks).	Also
please add back the 16 and 64 bit types, and qRound as otherwise WebCore+SVG
build will break when landing.	Otherwise the patch looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21809</commentid>
    <comment_count>5</comment_count>
      <attachid>4312</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-11 09:37:37 -0700</bug_when>
    <thetext>Created attachment 4312
new patch; needs testing on gcc 4, but otherwise ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22054</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-10-13 23:15:24 -0700</bug_when>
    <thetext>In general, r=me, but please test on gcc4. I am going to r- this until it works with gcc4, so it does not get 
accidentally committed; but please consider it an r+ and feel free to make it so once fixed on gcc4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26192</commentid>
    <comment_count>7</comment_count>
      <attachid>5154</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-19 10:54:54 -0800</bug_when>
    <thetext>Created attachment 5154
another pass -- this patch tested on both gcc 3 and gcc 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26193</commentid>
    <comment_count>8</comment_count>
      <attachid>5154</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-19 10:55:18 -0800</bug_when>
    <thetext>Comment on attachment 5154
another pass -- this patch tested on both gcc 3 and gcc 4

Last time the concerns were SVG and gcc 4. This patch compiles with SVG and
works with both gcc 3 and gcc 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26195</commentid>
    <comment_count>9</comment_count>
      <attachid>5154</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2005-12-19 11:06:35 -0800</bug_when>
    <thetext>Comment on attachment 5154
another pass -- this patch tested on both gcc 3 and gcc 4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26197</commentid>
    <comment_count>10</comment_count>
      <attachid>5154</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-19 11:15:41 -0800</bug_when>
    <thetext>Comment on attachment 5154
another pass -- this patch tested on both gcc 3 and gcc 4

Looks good.  r=me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3850</attachid>
            <date>2005-09-10 14:48:03 -0700</date>
            <delta_ts>2005-10-11 09:37:37 -0700</delta_ts>
            <desc>patch to remove the use of &lt;ostream&gt; and take out &lt;math.h&gt; workarounds</desc>
            <filename>IOStreamCMathPatch.txt</filename>
            <type>text/plain</type>
            <size>24559</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0Lmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL05QX2pzb2JqZWN0LmgKLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pz
b2JqZWN0LmgJMTcgSmFuIDIwMDUgMjI6NDE6MjIgLTAwMDAJMS42CisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCTEwIFNlcCAyMDA1IDE5OjUyOjExIC0wMDAwCkBAIC0y
MiwzMyArMjIsMjkgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KKwog
I2lmbmRlZiBfTlBfSlNPQkpFQ1RfSAogI2RlZmluZSBfTlBfSlNPQkpFQ1RfSAogCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lLmg+CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZV9vYmplY3QuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lX3Jvb3QuaD4KLSAKLSNpZmRlZiBfX2Nw
bHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKK25hbWVzcGFjZSBLSlMgeworICAgIGNsYXNz
IE9iamVjdEltcDsKKyAgICBuYW1lc3BhY2UgQmluZGluZ3MgeworICAgICAgICBjbGFzcyBSb290
T2JqZWN0OworICAgIH0KK30KIAogZXh0ZXJuIE5QQ2xhc3MgKk5QU2NyaXB0T2JqZWN0Q2xhc3M7
CiAKLXR5cGVkZWYgc3RydWN0CitzdHJ1Y3QgSmF2YVNjcmlwdE9iamVjdAogewogICAgIE5QT2Jq
ZWN0IG9iamVjdDsKICAgICBLSlM6Ok9iamVjdEltcCAqaW1wOwogICAgIGNvbnN0IEtKUzo6Qmlu
ZGluZ3M6OlJvb3RPYmplY3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY29uc3QgS0pT
OjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dDsKLX0gSmF2YVNjcmlwdE9i
amVjdDsKK307CiAKIE5QT2JqZWN0ICpfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoTlBQIG5wcCwg
S0pTOjpPYmplY3RJbXAgKmltcCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqb3Jp
Z2luRXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhl
Y3V0aW9uQ29udGV4dCk7CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KICNlbmRp
ZgpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9qc29iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5p
X2pzb2JqZWN0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfanNvYmplY3QuaAotLS0gSmF2YVNjcmlwdENv
cmUvYmluZGluZ3Mvam5pL2puaV9qc29iamVjdC5oCTggQXVnIDIwMDUgMDQ6MDc6MjQgLTAwMDAJ
MS40CisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX2pzb2JqZWN0LmgJMTAgU2Vw
IDIwMDUgMTk6NTI6MTEgLTAwMDAKQEAgLTI3LDkgKzI3LDYgQEAKIAogI2luY2x1ZGUgPENvcmVG
b3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL29iamVjdC5oPgotCiAjaW5j
bHVkZSA8SmF2YVZNL2puaS5oPgogCiAjZGVmaW5lIGpsb25nX3RvX3B0cihhKSAoKHZvaWQqKSh1
aW50cHRyX3QpKGEpKQpAQCAtMzgsNiArMzUsMTAgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK2Ns
YXNzIExpc3Q7CitjbGFzcyBPYmplY3RJbXA7CitjbGFzcyBWYWx1ZUltcDsKKwogbmFtZXNwYWNl
IEJpbmRpbmdzIHsKIAogY2xhc3MgUm9vdE9iamVjdDsKQEAgLTY3LDkgKzY4LDYgQEAgc3RydWN0
IEpTT2JqZWN0Q2FsbENvbnRleHQKICAgICBqdmFsdWUgcmVzdWx0OwogfTsKIAotCi10eXBlZGVm
IHN0cnVjdCBKU09iamVjdENhbGxDb250ZXh0IEpTT2JqZWN0Q2FsbENvbnRleHQ7Ci0KIGNsYXNz
IEpTT2JqZWN0CiB7CiBwdWJsaWM6CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvc2ltcGxlX251
bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMv
c2ltcGxlX251bWJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0CmRpZmYgLXAgLXUgLXIx
LjE0IEphdmFTY3JpcHRDb3JlL2tqcy9zaW1wbGVfbnVtYmVyLmgKLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9zaW1wbGVfbnVtYmVyLmgJMTAgU2VwIDIwMDUgMTk6MTA6MjQgLTAwMDAJMS4xNAorKysg
SmF2YVNjcmlwdENvcmUva2pzL3NpbXBsZV9udW1iZXIuaAkxMCBTZXAgMjAwNSAxOTo1MjoxMSAt
MDAwMApAQCAtMjYsMTYgKzI2LDYgQEAKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAKLS8vIFdvcmthcm91bmQgZm9yIGEgYnVnIGluIEdDQyBsaWJyYXJ5IGhlYWRlcnMu
Ci0vLyBXZSdkIHByZWZlciB0byBqdXN0IHVzZSBtYXRoLmguCi0jaWYgIVdJTjMyCi0jaW5jbHVk
ZSA8Y21hdGg+Ci11c2luZyBzdGQ6OmlzZmluaXRlOwotdXNpbmcgc3RkOjppc2luZjsKLXVzaW5n
IHN0ZDo6aXNuYW47Ci11c2luZyBzdGQ6OnNpZ25iaXQ7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEtK
UyB7CiAKICAgICBjbGFzcyBWYWx1ZUltcDsKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVByZWZpeC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL1dlYkNvcmVQcmVmaXguaCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNQpkaWZmIC1wIC11IC1yMS4xNSBXZWJDb3JlL1dlYkNv
cmVQcmVmaXguaAotLS0gV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJMTYgQXVnIDIwMDUgMTk6MDM6
MTEgLTAwMDAJMS4xNQorKysgV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJMTAgU2VwIDIwMDUgMTk6
NTI6MzEgLTAwMDAKQEAgLTI2LDEwICsyNiw2IEBACiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNs
dWRlIDxuZXc+CiAKLSNpZm5kZWYgTkRFQlVHCi0jaW5jbHVkZSA8b3N0cmVhbT4KLSNlbmRpZgot
CiAvLyBXb3JrIGFyb3VuZCBidWcgMzU1MzMwOSBieSByZS1pbmNsdWRpbmcgPGN0eXBlLmg+Lgog
I2luY2x1ZGUgPGNjdHlwZT4KICNkZWZpbmUgaXNhbG51bShjKSAgICAgIF9faXN0eXBlKChjKSwg
KF9DVFlQRV9BfF9DVFlQRV9EKSkKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9lY21hL2tq
c193aW5kb3cuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE3OApkaWZmIC1wIC11IC1yMS4x
NzggV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwCi0tLSBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX3dpbmRvdy5jcHAJNSBTZXAgMjAwNSAyMzoxMDoxOCAtMDAwMAkxLjE3OAorKysgV2Vi
Q29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwCTEwIFNlcCAyMDA1IDE5OjUyOjM0IC0wMDAw
CkBAIC03MSwxMiArNzEsNiBAQAogI2luY2x1ZGUgImNzcy9jc3Nfc3R5bGVzaGVldGltcGwuaCIK
ICNpbmNsdWRlICJtaXNjL3NoYXJlZC5oIgogCi0vLyBNdXN0IGluY2x1ZGUgPGNtYXRoPiBpbnN0
ZWFkIG9mIDxtYXRoLmg+IGJlY2F1c2Ugb2YgYSBidWcgaW4gdGhlCi0vLyBnY2MgMy4zIGxpYnJh
cnkgdmVyc2lvbiBvZiA8bWF0aC5oPiB3aGVyZSBpZiB5b3UgaW5jbHVkZSBib3RoCi0vLyA8Y21h
dGg+IGFuZCA8bWF0aC5oPiB0aGUgbWFjcm9zIG5lY2Vzc2FyeSBmb3IgZnVuY3Rpb25zIGxpa2UK
LS8vIGlzbmFuIGFyZSBub3QgZGVmaW5lZC4KLSNpbmNsdWRlIDxjbWF0aD4KLQogdXNpbmcgbmFt
ZXNwYWNlIERPTTo6RXZlbnROYW1lczsKIAogdXNpbmcgRE9NOjpBdG9taWNTdHJpbmc7CkBAIC05
Nyw4ICs5MSw2IEBAIHVzaW5nIEtQYXJ0czo6UmVhZE9ubHlQYXJ0OwogdXNpbmcgS1BhcnRzOjpV
UkxBcmdzOwogdXNpbmcgS1BhcnRzOjpXaW5kb3dBcmdzOwogCi11c2luZyBzdGQ6OmlzbmFuOwot
CiBuYW1lc3BhY2UgS0pTIHsKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBIaXN0b3J5IE9iamVj
dCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KSW5kZXg6IFdlYkNvcmUva2h0bWwvcmVuZGVyaW5n
L3JlbmRlcl9jYW52YXNpbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXNpbWFnZS5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMjAKZGlmZiAtcCAtdSAtcjEuMjAgV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcv
cmVuZGVyX2NhbnZhc2ltYWdlLmNwcAotLS0gV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVy
X2NhbnZhc2ltYWdlLmNwcAk1IFNlcCAyMDA1IDA0OjAxOjI0IC0wMDAwCTEuMjAKKysrIFdlYkNv
cmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXNpbWFnZS5jcHAJMTAgU2VwIDIwMDUgMTk6
NTI6MzQgLTAwMDAKQEAgLTQxLDEyICs0MSw2IEBACiAjaW5jbHVkZSAieG1sL2RvbTJfZXZlbnRz
aW1wbC5oIgogI2luY2x1ZGUgImh0bWwvaHRtbF9kb2N1bWVudGltcGwuaCIKIAotLy8gTXVzdCBp
bmNsdWRlIDxjbWF0aD4gaW5zdGVhZCBvZiA8bWF0aC5oPiBiZWNhdXNlIG9mIGEgYnVnIGluIHRo
ZQotLy8gZ2NjIDMuMyBsaWJyYXJ5IHZlcnNpb24gb2YgPG1hdGguaD4gd2hlcmUgaWYgeW91IGlu
Y2x1ZGUgYm90aAotLy8gPGNtYXRoPiBhbmQgPG1hdGguaD4gdGhlIG1hY3JvcyBuZWNlc3Nhcnkg
Zm9yIGZ1bmN0aW9ucyBsaWtlCi0vLyBpc25hbiBhcmUgbm90IGRlZmluZWQuCi0jaW5jbHVkZSA8
Y21hdGg+Ci0KIHVzaW5nIG5hbWVzcGFjZSBET007CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogdXNpbmcgbmFtZXNwYWNlIGtodG1sOwpJbmRleDogV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcv
cmVuZGVyX2ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9r
aHRtbC9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44
NgpkaWZmIC1wIC11IC1yMS44NiBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2Uu
Y3BwCi0tLSBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwCTMwIEF1ZyAy
MDA1IDA5OjMwOjIwIC0wMDAwCTEuODYKKysrIFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRl
cl9pbWFnZS5jcHAJMTAgU2VwIDIwMDUgMTk6NTI6MzUgLTAwMDAKQEAgLTQyLDEyICs0Miw2IEBA
CiAjaW5jbHVkZSAieG1sL2RvbTJfZXZlbnRzaW1wbC5oIgogI2luY2x1ZGUgImh0bWwvaHRtbF9k
b2N1bWVudGltcGwuaCIKIAotLy8gTXVzdCBpbmNsdWRlIDxjbWF0aD4gaW5zdGVhZCBvZiA8bWF0
aC5oPiBiZWNhdXNlIG9mIGEgYnVnIGluIHRoZQotLy8gZ2NjIDMuMyBsaWJyYXJ5IHZlcnNpb24g
b2YgPG1hdGguaD4gd2hlcmUgaWYgeW91IGluY2x1ZGUgYm90aAotLy8gPGNtYXRoPiBhbmQgPG1h
dGguaD4gdGhlIG1hY3JvcyBuZWNlc3NhcnkgZm9yIGZ1bmN0aW9ucyBsaWtlCi0vLyBpc25hbiBh
cmUgbm90IGRlZmluZWQuCi0jaW5jbHVkZSA8Y21hdGg+Ci0KIHVzaW5nIG5hbWVzcGFjZSBET007
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIGtodG1sOwpJbmRl
eDogV2ViQ29yZS9rd3EvS1dRQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJDb3JlL2t3cS9LV1FDU3RyaW5nLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjcKZGlm
ZiAtcCAtdSAtcjEuMjcgV2ViQ29yZS9rd3EvS1dRQ1N0cmluZy5oCi0tLSBXZWJDb3JlL2t3cS9L
V1FDU3RyaW5nLmgJMiBTZXAgMjAwNSAxMDowMzoxOSAtMDAwMAkxLjI3CisrKyBXZWJDb3JlL2t3
cS9LV1FDU3RyaW5nLmgJMTAgU2VwIDIwMDUgMTk6NTI6MzcgLTAwMDAKQEAgLTYwLDEwICs2MCw2
IEBAIHB1YmxpYzoKICAgICBRQ1N0cmluZyAmb3BlcmF0b3IrPShjb25zdCBjaGFyICpzKSB7IHJl
dHVybiBhcHBlbmQocyk7IH0KICAgICBRQ1N0cmluZyAmb3BlcmF0b3IrPShjaGFyIGMpIHsgcmV0
dXJuIGFwcGVuZChjKTsgfQogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSAgICBmcmllbmQgc3Rk
Ojpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBRQ1N0cmluZyAmKTsK
LSNlbmRpZgotCiBwcml2YXRlOgogICAgIGJvb2wgcmVzaXplKHVpbnQpOwogfTsKSW5kZXg6IFdl
YkNvcmUva3dxL0tXUUNTdHJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dl
YkNvcmUva3dxL0tXUUNTdHJpbmcubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcKZGlmZiAt
cCAtdSAtcjEuMTcgV2ViQ29yZS9rd3EvS1dRQ1N0cmluZy5tbQotLS0gV2ViQ29yZS9rd3EvS1dR
Q1N0cmluZy5tbQkxMCBNYXkgMjAwMyAwNTo0Njo1OSAtMDAwMAkxLjE3CisrKyBXZWJDb3JlL2t3
cS9LV1FDU3RyaW5nLm1tCTEwIFNlcCAyMDA1IDE5OjUyOjM3IC0wMDAwCkBAIC0zMDIsMTMgKzMw
MiwzIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRQ1N0cmluZyAmczEsIGNvbnMKICAgICB9CiAg
ICAgcmV0dXJuIChzdHJjbXAoczEsIHMyKSA9PSAwKTsKIH0KLQotI2lmZGVmIF9LV1FfSU9TVFJF
QU1fCi0KLW9zdHJlYW0gJm9wZXJhdG9yIDw8KG9zdHJlYW0gJm8sIGNvbnN0IFFDU3RyaW5nICZz
KQotewotICAgIGNvbnN0IGNoYXIgKmNocyA9IHM7Ci0gICAgcmV0dXJuIG8gPDwgY2hzOwotfQot
Ci0jZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUURhdGVUaW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUURhdGVUaW1lLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMjQKZGlmZiAtcCAtdSAtcjEuMjQgV2ViQ29yZS9rd3EvS1dRRGF0ZVRpbWUuaAot
LS0gV2ViQ29yZS9rd3EvS1dRRGF0ZVRpbWUuaAk1IEp1bCAyMDA1IDA4OjA0OjUwIC0wMDAwCTEu
MjQKKysrIFdlYkNvcmUva3dxL0tXUURhdGVUaW1lLmgJMTAgU2VwIDIwMDUgMTk6NTI6MzcgLTAw
MDAKQEAgLTI5LDEwICsyOSw2IEBACiAjaW5jbHVkZSAiS1dRRGVmLmgiCiAjaW5jbHVkZSA8Q29y
ZUZvdW5kYXRpb24vQ0ZEYXRlLmg+CiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotI2luY2x1ZGUg
PGlvc2Z3ZD4KLSNlbmRpZgotCiBjbGFzcyBRVGltZSB7CiBwdWJsaWM6CiAgICAgUVRpbWUoKSA6
IHRpbWVJblNlY29uZHMoMCkgeyB9CkBAIC01Miw5ICs0OCw2IEBAIHByaXZhdGU6CiAgICAgQ0ZB
YnNvbHV0ZVRpbWUgdGltZUluU2Vjb25kczsgCiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIFFEYXRl
VGltZTsKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0gJm9w
ZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBRVGltZSAmICk7Ci0jZW5kaWYKIH07CiAK
IGNsYXNzIFFEYXRlIHsKQEAgLTY3LDEwICs2MCw2IEBAIHByaXZhdGU6CiAgICAgaW50IGRheTsK
ICAgICAKICAgICBmcmllbmQgY2xhc3MgUURhdGVUaW1lOwotI2lmZGVmIF9LV1FfSU9TVFJFQU1f
Ci0gICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtICYsIGNv
bnN0IFFEYXRlICYgKTsKLSNlbmRpZgotCiB9OwogCiBjbGFzcyBRRGF0ZVRpbWUgewpAQCAtODYs
MTAgKzc1LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIENGQWJzb2x1dGVUaW1lIGRhdGVJ
blNlY29uZHM7Ci0KLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotICAgIGZyaWVuZCBzdGQ6Om9zdHJl
YW0gJm9wZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBRRGF0ZVRpbWUgJiApOwotI2Vu
ZGlmCiB9OwogCiBjbGFzcyBLV1FVSUV2ZW50VGltZSB7CkluZGV4OiBXZWJDb3JlL2t3cS9LV1FE
YXRlVGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dR
RGF0ZVRpbWUubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTMKZGlmZiAtcCAtdSAtcjEuMTMg
V2ViQ29yZS9rd3EvS1dRRGF0ZVRpbWUubW0KLS0tIFdlYkNvcmUva3dxL0tXUURhdGVUaW1lLm1t
CTUgSnVsIDIwMDUgMDg6MDQ6NTAgLTAwMDAJMS4xMworKysgV2ViQ29yZS9rd3EvS1dRRGF0ZVRp
bWUubW0JMTAgU2VwIDIwMDUgMTk6NTI6MzcgLTAwMDAKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNp
bXBvcnQgIktXUURhdGVUaW1lLmgiCisKICNpbXBvcnQgPHRpbWUuaD4KLSNpbXBvcnQgIldlYkNv
cmVHcmFwaGljc0JyaWRnZS5oIgogCiBzdGF0aWMgQ0ZUaW1lWm9uZVJlZiBzeXN0ZW1UaW1lWm9u
ZSgpCiB7CkBAIC0xMDIsNTUgKzEwMSwzIEBAIGJvb2wgS1dRVUlFdmVudFRpbWU6OnVpRXZlbnRQ
ZW5kaW5nKCkgY28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbk1vZGU6TlNFdmVudFRyYWNraW5nUnVuTG9vcE1vZGUgZGVxdWV1ZTpOT10gIT0gbmlsOwog
Ki8KIH0KLQotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0gJm8sIGNvbnN0IFFEYXRlICZkYXRlKQotewotICAgIHJldHVybiBvIDw8
Ci0gICAgICAgICJRRGF0ZTogW3l5L21tL2RkOiAiIDw8Ci0gICAgICAgIGRhdGUueWVhciA8PAot
ICAgICAgICAnLycgPDwKLSAgICAgICAgZGF0ZS5tb250aCA8PAotICAgICAgICAnLycgPDwKLSAg
ICAgICAgZGF0ZS5kYXkgPDwKLSAgICAgICAgJ10nOwotfQotCi1zdGQ6Om9zdHJlYW0gJm9wZXJh
dG9yPDwoc3RkOjpvc3RyZWFtICZvLCBjb25zdCBRVGltZSAmdGltZSkKLXsKLSAgICBDRkdyZWdv
cmlhbkRhdGUgZyA9IENGQWJzb2x1dGVUaW1lR2V0R3JlZ29yaWFuRGF0ZSh0aW1lLnRpbWVJblNl
Y29uZHMsIHN5c3RlbVRpbWVab25lKCkpOwotICAgIHJldHVybiBvIDw8Ci0gICAgICAgICJRVGlt
ZTogW2hoOm1tOnNzOm1zID0gIiA8PAotICAgICAgICAoaW50KWcuaG91ciA8PAotICAgICAgICAn
OicgPDwKLSAgICAgICAgKGludClnLm1pbnV0ZSA8PAotICAgICAgICAnOicgPDwKLSAgICAgICAg
KGludClnLnNlY29uZCA8PAotICAgICAgICAnOicgPDwKLSAgICAgICAgdGltZS5tc2VjKCkgPDwK
LSAgICAgICAgJ10nOwotfQotCi1zdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
ICZvLCBjb25zdCBRRGF0ZVRpbWUgJmRhdGVUaW1lKQotewotICAgIENGR3JlZ29yaWFuRGF0ZSBn
ID0gQ0ZBYnNvbHV0ZVRpbWVHZXRHcmVnb3JpYW5EYXRlKGRhdGVUaW1lLmRhdGVJblNlY29uZHMs
IHN5c3RlbVRpbWVab25lKCkpOwotICAgIHJldHVybiBvIDw8Ci0gICAgICAgICJRRGF0ZVRpbWU6
IFt5eS9tbS9kZCBoaDptbTpzczptcyA9ICIgPDwKLSAgICAgICAgKGludClnLnllYXIgPDwKLSAg
ICAgICAgJy8nIDw8Ci0gICAgICAgIChpbnQpZy5tb250aCA8PAotICAgICAgICAnLycgPDwKLSAg
ICAgICAgKGludClnLmRheSA8PAotICAgICAgICAnICcgPDwgCi0gICAgICAgIChpbnQpZy5ob3Vy
IDw8Ci0gICAgICAgICc6JyA8PAotICAgICAgICAoaW50KWcubWludXRlIDw8Ci0gICAgICAgICc6
JyA8PAotICAgICAgICAoaW50KWcuc2Vjb25kIDw8Ci0gICAgICAgICc6JyA8PAotICAgICAgICAo
KGludCkoZy5zZWNvbmQgKiAxMDAwKSAlIDEwMDApIDw8Ci0gICAgICAgICddJzsKLX0KLQotI2Vu
ZGlmIC8vIF9LV1FfSU9TVFJFQU1fCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FEZWYuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRRGVmLmgsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMTgKZGlmZiAtcCAtdSAtcjEuMTggV2ViQ29yZS9rd3EvS1dRRGVmLmgKLS0t
IFdlYkNvcmUva3dxL0tXUURlZi5oCTcgSnVsIDIwMDUgMTc6MDY6NTQgLTAwMDAJMS4xOAorKysg
V2ViQ29yZS9rd3EvS1dRRGVmLmgJMTAgU2VwIDIwMDUgMTk6NTI6MzcgLTAwMDAKQEAgLTI3LDcg
KzI3LDYgQEAKICNkZWZpbmUgS1dRREVGX0hfCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNp
bmNsdWRlIDxjbWF0aD4KIAogI2lmbmRlZiBLV1FfVU5TSUdORURfVFlQRVNfREVGSU5FRAogI2Rl
ZmluZSBLV1FfVU5TSUdORURfVFlQRVNfREVGSU5FRApAQCAtMzUsMTUgKzM0LDkgQEAgdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyIHVjaGFyOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwogI2Vu
ZGlmCiAKLXR5cGVkZWYgaW50NjRfdCBRX0lOVDY0OwotdHlwZWRlZiB1X2ludDY0X3QgUV9VSU5U
NjQ7Ci0KIHR5cGVkZWYgaW50IFFfSU5UMzI7CiB0eXBlZGVmIHVuc2lnbmVkIGludCBRX1VJTlQz
MjsKIAotdHlwZWRlZiBzaG9ydCBRX0lOVDE2OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBRX1VJ
TlQxNjsKLQogdGVtcGxhdGU8Y2xhc3MgVD4KIGlubGluZSBjb25zdCBUJiBrTWluICggY29uc3Qg
VCYgYSwgY29uc3QgVCYgYiApIHsgcmV0dXJuIGEgPCBiID8gYSA6IGI7IH0KIApAQCAtNTIsOCAr
NDUsNiBAQCBpbmxpbmUgY29uc3QgVCYga01heCAoIGNvbnN0IFQmIGEsIGNvbnN0CiAKICNkZWZp
bmUgUUFCUyhhKSAoKChhKSA+PSAwKSA/IChhKSA6IC0oYSkpCiAKLWlubGluZSBpbnQgcVJvdW5k
KGRvdWJsZSBhKSB7IHJldHVybiBscm91bmQoYSk7IH0KLQogI2lmbmRlZiBUUlVFCiAjZGVmaW5l
IFRSVUUgMQogI2VuZGlmCkBAIC03MCw4ICs2MSw0IEBAIHZvaWQgcVdhcm5pbmcoY29uc3QgY2hh
ciAqbXNnLCAuLi4pOwogCiAjZGVmaW5lIFFfQVNTRVJUKGFyZykgZG8ge30gd2hpbGUoMCkKIAot
I2lmbmRlZiBOREVCVUcKLSNkZWZpbmUgX0tXUV9JT1NUUkVBTV8KLSNlbmRpZgotCiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4yMjcKZGlmZiAtcCAtdSAtcjEuMjI3IFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5oCi0tLSBX
ZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaAkzMSBBdWcgMjAwNSAwNDozODo0MyAtMDAwMAkxLjIy
NworKysgV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmgJMTAgU2VwIDIwMDUgMTk6NTI6MzggLTAw
MDAKQEAgLTM2LDE3ICszNiwxMyBAQAogCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91
bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9qbmlfanNvYmplY3QuaD4KLSNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZS5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvTlBfanNvYmplY3QuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL3J1bnRpbWUuaD4KLQog
I2ltcG9ydCAiS1dRRGljdC5oIgogI2ltcG9ydCAiS1dRQ2xpcGJvYXJkLmgiCiAjaW1wb3J0ICJL
V1FTY3JvbGxCYXIuaCIKIAogY2xhc3MgS0hUTUxQYXJ0UHJpdmF0ZTsKIGNsYXNzIEtXUVdpbmRv
d1dpZGdldDsKK2NsYXNzIE5QT2JqZWN0OwogCiBuYW1lc3BhY2UgRE9NIHsKICAgICBjbGFzcyBE
b2N1bWVudEZyYWdtZW50SW1wbDsKQEAgLTY0LDYgKzYwLDEwIEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgIGNsYXNzIFNhdmVkUHJvcGVydGllczsKICAgICBjbGFzcyBTYXZlZEJ1aWx0aW5zOwogICAg
IGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsKKyAgICBuYW1lc3BhY2UgQmluZGluZ3MgeworICAgICAg
ICBjbGFzcyBJbnN0YW5jZTsKKyAgICAgICAgY2xhc3MgUm9vdE9iamVjdDsKKyAgICB9CiB9CiAK
ICNpZmRlZiBfX09CSkNfXwpAQCAtMjA0LDggKzIwNCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0
YXR1c2JhclZpc2libGUoKTsKICAgICBib29sIHRvb2xiYXJWaXNpYmxlKCk7CiAKLSAgICB2b2lk
IEtXUUtIVE1MUGFydDo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBRU3RyaW5nICZtZXNzYWdl
LCAgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcgJnNvdXJjZUlEKTsKLSAg
ICB1c2luZyBLSFRNTFBhcnQ6OnhtbERvY0ltcGw7CisgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25z
b2xlKGNvbnN0IFFTdHJpbmcgJm1lc3NhZ2UsICB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29u
c3QgUVN0cmluZyAmc291cmNlSUQpOwogICAgIGtodG1sOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVy
KCkgY29uc3Q7CiAgICAgdm9pZCBmb3JjZUxheW91dCgpOwogICAgIHZvaWQgZm9yY2VMYXlvdXRX
aXRoUGFnZVdpZHRoUmFuZ2UoZmxvYXQgbWluUGFnZVdpZHRoLCBmbG9hdCBtYXhQYWdlV2lkdGgp
OwpAQCAtMzUzLDcgKzM1Miw3IEBAIHB1YmxpYzoKICAgICBLSlM6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0ICpiaW5kaW5nUm9vdE9iamVjdCgpOwogICAgIAogICAgIFdlYlNjcmlwdE9iamVjdCAqd2lu
ZG93U2NyaXB0T2JqZWN0KCk7Ci0gICAgTlBPYmplY3QgKktXUUtIVE1MUGFydDo6d2luZG93U2Ny
aXB0TlBPYmplY3QoKTsKKyAgICBOUE9iamVjdCAqd2luZG93U2NyaXB0TlBPYmplY3QoKTsKICAg
ICAKICAgICB2b2lkIHBhcnRDbGVhcmVkSW5CZWdpbigpOwogICAgIApJbmRleDogV2ViQ29yZS9r
d3EvS1dRS0hUTUxQYXJ0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3Jl
L2t3cS9LV1FLSFRNTFBhcnQubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjcwCmRpZmYgLXAg
LXUgLXIxLjY3MCBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQubW0KLS0tIFdlYkNvcmUva3dxL0tX
UUtIVE1MUGFydC5tbQk5IFNlcCAyMDA1IDE4OjM0OjUxIC0wMDAwCTEuNjcwCisrKyBXZWJDb3Jl
L2t3cS9LV1FLSFRNTFBhcnQubW0JMTAgU2VwIDIwMDUgMTk6NTI6NDEgLTAwMDAKQEAgLTgwLDYg
KzgwLDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL3J1bnRpbWUuaD4KICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL3J1bnRpbWVfcm9vdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvTlBfanNvYmpl
Y3QuaD4KIAogI2lmIEFQUExFX0NIQU5HRVMKICNpbXBvcnQgIktXUUFjY09iamVjdENhY2hlLmgi
CkluZGV4OiBXZWJDb3JlL2t3cS9LV1FNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvV2ViQ29yZS9rd3EvS1dRTWFwLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjUKZGlmZiAt
cCAtdSAtcjEuMjUgV2ViQ29yZS9rd3EvS1dRTWFwLmgKLS0tIFdlYkNvcmUva3dxL0tXUU1hcC5o
CTIyIEphbiAyMDAzIDAwOjEyOjM1IC0wMDAwCTEuMjUKKysrIFdlYkNvcmUva3dxL0tXUU1hcC5o
CTEwIFNlcCAyMDA1IDE5OjUyOjQxIC0wMDAwCkBAIC0zMCwxMCArMzAsNiBAQAogCiAjaW5jbHVk
ZSAiS1dRTWFwSW1wbC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSNpbmNsdWRlIDxvc3Ry
ZWFtPgotI2VuZGlmCi0KIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBWPiBjbGFzcyBRTWFwOwog
dGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFY+IGNsYXNzIFFNYXBJdGVyYXRvcjsKIHRlbXBsYXRl
IDxjbGFzcyBLLCBjbGFzcyBWPiBjbGFzcyBRTWFwQ29uc3RJdGVyYXRvcjsKQEAgLTMwMCwyNyAr
Mjk2LDQgQEAgcHJvdGVjdGVkOgogCiB9OwogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotdGVt
cGxhdGU8Y2xhc3MgSywgY2xhc3MgVj4KLWlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwo
c3RkOjpvc3RyZWFtICZzdHJlYW0sIGNvbnN0IFFNYXA8SyxWPiAmbSkgCi17Ci0gICAgdWludCBj
b3VudCA9IG0uY291bnQoKTsKLSAgICBzdHJlYW0gPDwgIlFNYXA6IFtzaXplOiAiIDw8IGNvdW50
IDw8ICI7IGl0ZW1zOiAiOwotCi0gICAgUU1hcENvbnN0SXRlcmF0b3I8SyxWPiBpdGVyID0gbS5i
ZWdpbigpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykgewotCXN0cmVhbSA8PCAiKCIgPDwgaXRlci5rZXkoKSA8PCAiLCIgPDwgaXRlci5kYXRhKCkg
PDwgIikiOwotCWlmIChpICsgMSA8IGNvdW50KSB7Ci0JICAgIHN0cmVhbSA8PCAiLCAiOwotCX0K
LQkrK2l0ZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0cmVhbSA8PCAiXSI7Ci19Ci0KLSNlbmRp
ZgotCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUU1lbUFycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUU1lbUFycmF5LmgsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMjcKZGlmZiAtcCAtdSAtcjEuMjcgV2ViQ29yZS9rd3EvS1dRTWVtQXJyYXku
aAotLS0gV2ViQ29yZS9rd3EvS1dRTWVtQXJyYXkuaAkyIFNlcCAyMDA1IDEwOjAzOjE5IC0wMDAw
CTEuMjcKKysrIFdlYkNvcmUva3dxL0tXUU1lbUFycmF5LmgJMTAgU2VwIDIwMDUgMTk6NTI6NDEg
LTAwMDAKQEAgLTI5LDEwICsyOSw2IEBACiAjaW5jbHVkZSAiS1dRRGVmLmgiCiAjaW5jbHVkZSAi
S1dRQXJyYXlJbXBsLmgiCiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotI2luY2x1ZGUgPG9zdHJl
YW0+Ci0jZW5kaWYKLQogdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFFNZW1BcnJheSB7CiBwdWJs
aWM6CiAgICAgUU1lbUFycmF5KCkgOiBpbXBsKHNpemVvZihUKSkgeyB9CkBAIC02NCwyMyArNjAs
NCBAQCBwdWJsaWM6CiAKICNkZWZpbmUgUTNNZW1BcnJheSBRTWVtQXJyYXkKIAotI2lmZGVmIF9L
V1FfSU9TVFJFQU1fCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtICZv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmc3RyZWFtLCBjb25zdCBRTWVtQXJyYXk8VD4mYSkKLXsK
LSAgICBzdHJlYW0gPDwgIlFNZW1BcnJheTogW3NpemU6ICIgPDwgYS5zaXplKCkgPDwgIjsgaXRl
bXM6ICI7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGEuc2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgc3RyZWFtIDw8IGFbaV07Ci0JaWYgKGkgPCBhLnNpemUoKSAtIDEpIHsKLQkgICAgc3Ry
ZWFtIDw8ICIsICI7Ci0JfQotICAgIH0KLSAgICBzdHJlYW0gPDwgIl0iOwotCi0gICAgcmV0dXJu
IHN0cmVhbTsKLX0KLQotI2VuZGlmCi0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9rd3EvS1dRUG9p
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVBvaW50
Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCmRpZmYgLXAgLXUgLXIxLjEwIFdlYkNvcmUv
a3dxL0tXUVBvaW50Lm1tCi0tLSBXZWJDb3JlL2t3cS9LV1FQb2ludC5tbQk3IEp1bCAyMDA1IDA2
OjI1OjAyIC0wMDAwCTEuMTAKKysrIFdlYkNvcmUva3dxL0tXUVBvaW50Lm1tCTEwIFNlcCAyMDA1
IDE5OjUyOjQxIC0wMDAwCkBAIC02MSwxMCArNjEsMyBAQCBjb25zdCBRUG9pbnQgb3BlcmF0b3Iq
KGNvbnN0IFFQb2ludCAmcCwgCiB7CiAgICAgcmV0dXJuIFFQb2ludCgoaW50KShwLnhDb29yZCAq
IHMpLCAoaW50KShwLnlDb29yZCAqIHMpKTsKIH0KLQotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi1z
dGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvLCBjb25zdCBRUG9pbnQgJnAp
Ci17Ci0gICAgcmV0dXJuIG8gPDwgIlFQb2ludDogW3g6ICIgPDwgcC54KCkgPDwgIjsgaDogIiA8
PCBwLnkoKSA8PCAiXSI7Ci19Ci0jZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVBvaW50QXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRUG9pbnRB
cnJheS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI3CmRpZmYgLXAgLXUgLXIxLjI3IFdlYkNv
cmUva3dxL0tXUVBvaW50QXJyYXkuaAotLS0gV2ViQ29yZS9rd3EvS1dRUG9pbnRBcnJheS5oCTcg
SnVsIDIwMDUgMDY6MjU6MDIgLTAwMDAJMS4yNworKysgV2ViQ29yZS9rd3EvS1dRUG9pbnRBcnJh
eS5oCTEwIFNlcCAyMDA1IDE5OjUyOjQxIC0wMDAwCkBAIC0yOCwxMCArMjgsNiBAQAogCiAjaW5j
bHVkZSAiS1dRRGVmLmgiCiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotI2luY2x1ZGUgPGlvc2Z3
ZD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiS1dRTWVtQXJyYXkuaCIKIAogdHlwZWRlZiBzdHJ1Y3Qg
X05TUG9pbnQgTlNQb2ludDsKQEAgLTc5LDE4ICs3NSw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHBvaW50KHVpbnQsIGludCAqLCBpbnQgKik7CiAgICAgdm9pZCBzZXRQb2ludCh1aW50LCBp
bnQsIGludCk7Ci0jaWYgMAotICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIGZvciBSYWRhciAyOTIx
MDYxLgotICAgIGJvb2wgc2V0UG9pbnRzKGludCwgaW50LCBpbnQsIC4uLik7Ci0jZWxzZQogICAg
IGJvb2wgc2V0UG9pbnRzKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpOwotI2VuZGlmCiAgICAgYm9vbCBzZXRQb2ludHMoIGludCBuUG9pbnRzLCBjb25zdCBpbnQg
KnBvaW50cyApOwogICAgIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0gICAgZnJpZW5kIHN0ZDo6
b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJiwgY29uc3QgUVBvaW50ICYpOwotI2Vu
ZGlmCi0gICAgCiB9OwogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVB0ckxpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRUHRyTGlzdC5oLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjMwCmRpZmYgLXAgLXUgLXIxLjMwIFdlYkNvcmUva3dxL0tX
UVB0ckxpc3QuaAotLS0gV2ViQ29yZS9rd3EvS1dRUHRyTGlzdC5oCTIgU2VwIDIwMDUgMTA6MDM6
MTkgLTAwMDAJMS4zMAorKysgV2ViQ29yZS9rd3EvS1dRUHRyTGlzdC5oCTEwIFNlcCAyMDA1IDE5
OjUyOjQxIC0wMDAwCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUgIktXUUNvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJLV1FMaXN0SW1wbC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSNp
bmNsdWRlIDxvc3RyZWFtPgotI2VuZGlmCi0KIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBRUHRy
TGlzdEl0ZXJhdG9yOwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUVB0ckxpc3QgOiBwdWJs
aWMgUVB0ckNvbGxlY3Rpb24gewpAQCAtMTEyLDMzICsxMDgsNCBAQCBwcml2YXRlOgogI2RlZmlu
ZSBRM1B0ckxpc3QgUVB0ckxpc3QKICNkZWZpbmUgUTNQdHJMaXN0SXRlcmF0b3IgUVB0ckxpc3RJ
dGVyYXRvcgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlu
bGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzdHJlYW0sIGNvbnN0
IFFQdHJMaXN0PFQ+ICZsKQotewotICAgIFFQdHJMaXN0SXRlcmF0b3I8VD4gaXRlcihsKTsKLSAg
ICB1bnNpZ25lZCBjb3VudCA9IGwuY291bnQoKTsKLQotICAgIHN0cmVhbSA8PCAiUVB0ckxpc3Q6
IFtzaXplOiAiIDw8IGwuY291bnQoKSA8PCAiOyBpdGVtczogIjsKLQotICAgIC8vIHByaW50IGZp
cnN0Ci0gICAgaWYgKGNvdW50ICE9IDApIHsKLQlzdHJlYW0gPDwgKml0ZXIuY3VycmVudCgpOwot
CSsraXRlcjsKLQktLWNvdW50OwotICAgIH0KLSAgICAKLSAgICAvLyBwcmludCByZXN0Ci0gICAg
d2hpbGUgKGNvdW50ICE9IDApIHsKLQlzdHJlYW0gPDwgIiwgIiA8PCAqaXRlci5jdXJyZW50KCk7
Ci0JKytpdGVyOwotCS0tY291bnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0cmVhbSA8PCAiXSI7
Ci19Ci0KLSNlbmRpZgotCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVB0clN0YWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVB0clN0YWNrLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYKZGlmZiAtcCAtdSAtcjEuMTYgV2ViQ29yZS9rd3Ev
S1dRUHRyU3RhY2suaAotLS0gV2ViQ29yZS9rd3EvS1dRUHRyU3RhY2suaAkyIFNlcCAyMDA1IDEw
OjAzOjIwIC0wMDAwCTEuMTYKKysrIFdlYkNvcmUva3dxL0tXUVB0clN0YWNrLmgJMTAgU2VwIDIw
MDUgMTk6NTI6NDEgLTAwMDAKQEAgLTQ3LDI3ICs0Nyw0IEBAIHB1YmxpYzoKIAogI2RlZmluZSBR
M1B0clN0YWNrIFFQdHJTdGFjawogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotdGVtcGxhdGU8
Y2xhc3MgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZz
dHJlYW0sIGNvbnN0IFFQdHJTdGFjazxUPiZzKQotewotICAgIHN0cmVhbSA8PCAiUVB0clN0YWNr
OiBbc2l6ZTogIiA8PCBzLmNvdW50KCkgPDwgIjsgaXRlbXM6ICI7Ci0KLSAgICBRUHRyU3RhY2s8
VD4gdG1wKHMpOwotCi0gICAgd2hpbGUgKCF0bXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN0cmVh
bSA8PCAqdG1wLnBvcCgpOwotCWlmICh0bXAuY291bnQoKSA+IDApIHsKLQkgICAgc3RyZWFtIDw8
ICIsICI7Ci0JfQotICAgIH0KLQotICAgIHN0cmVhbSA8PCAiXSI7Ci0KLSAgICByZXR1cm4gc3Ry
ZWFtOwotfQotCi0jZW5kaWYKLQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FQdHJWZWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRUHRyVmVj
dG9yLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQKZGlmZiAtcCAtdSAtcjEuMjQgV2ViQ29y
ZS9rd3EvS1dRUHRyVmVjdG9yLmgKLS0tIFdlYkNvcmUva3dxL0tXUVB0clZlY3Rvci5oCTIwIE5v
diAyMDA0IDAyOjI0OjA4IC0wMDAwCTEuMjQKKysrIFdlYkNvcmUva3dxL0tXUVB0clZlY3Rvci5o
CTEwIFNlcCAyMDA1IDE5OjUyOjQxIC0wMDAwCkBAIC0zMSwxMCArMzEsNiBAQAogCiAjaW5jbHVk
ZSAiS1dRVmVjdG9ySW1wbC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSNpbmNsdWRlIDxv
c3RyZWFtPgotI2VuZGlmCi0KIGNsYXNzIFFHVmVjdG9yIDogcHVibGljIFFQdHJDb2xsZWN0aW9u
CiB7CiBwdWJsaWM6CkBAIC03MSwyNCArNjcsNCBAQCBwdWJsaWM6CiAgICAgS1dRVmVjdG9ySW1w
bCBpbXBsOwogfTsKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0KLXRlbXBsYXRlPGNsYXNzIFQ+
Ci1pbmxpbmUgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmc3RyZWFtLCBj
b25zdCBRUHRyVmVjdG9yPFQ+ICZ2KQotewotICAgIHVpbnQgaSA9IDA7Ci0gICAgdWludCBjb3Vu
dCA9IHYuY291bnQoKTsKLQotICAgIHN0cmVhbSA8PCAiUVB0clZlY3RvcjogW3NpemU6ICIgPDwg
Y291bnQgPDwgIjsgaXRlbXM6ICI7Ci0KLSAgICB3aGlsZShpIDwgY291bnQgKSB7Ci0Jc3RyZWFt
IDw8ICp2W2ldIDw8ICIsICI7Ci0JKytpOwotICAgIH0KLQotICAgIHJldHVybiBzdHJlYW0gPDwg
Il0iOwotfQotCi0jZW5kaWYKLQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FSZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVJlY3QuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4zMgpkaWZmIC1wIC11IC1yMS4zMiBXZWJDb3JlL2t3cS9LV1FS
ZWN0LmgKLS0tIFdlYkNvcmUva3dxL0tXUVJlY3QuaAkyNCBKdW4gMjAwNSAxODo1NzoyMiAtMDAw
MAkxLjMyCisrKyBXZWJDb3JlL2t3cS9LV1FSZWN0LmgJMTAgU2VwIDIwMDUgMTk6NTI6NDIgLTAw
MDAKQEAgLTg3LDEwICs4Nyw2IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBOU1JlY3QoKSBjb25z
dDsKICAgICBvcGVyYXRvciBDR1JlY3QoKSBjb25zdDsKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1f
Ci0gICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJiwgY29u
c3QgUVJlY3QgJik7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBpbnQgeHA7CiAgICAgaW50IHlw
OwpJbmRleDogV2ViQ29yZS9rd3EvS1dRUmVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViQ29yZS9rd3EvS1dRUmVjdC5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNQpk
aWZmIC1wIC11IC1yMS4xNSBXZWJDb3JlL2t3cS9LV1FSZWN0Lm1tCi0tLSBXZWJDb3JlL2t3cS9L
V1FSZWN0Lm1tCTI0IEp1biAyMDA1IDE4OjU3OjIyIC0wMDAwCTEuMTUKKysrIFdlYkNvcmUva3dx
L0tXUVJlY3QubW0JMTAgU2VwIDIwMDUgMTk6NTI6NDIgLTAwMDAKQEAgLTIwMywxMCArMjAzLDMg
QEAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFSZWN0ICZhLCBjb25zdCBRUgogewogICAgIHJldHVy
biAhKGEgPT0gYik7CiB9Ci0KLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotc3RkOjpvc3RyZWFtICZv
cGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmbywgY29uc3QgUVJlY3QgJnIpCi17Ci0gICAgcmV0dXJu
IG8gPDwgIlFSZWN0OiBbbGVmdDogIiA8PCByLmxlZnQgKCkgPDwgIjsgdG9wOiAiIDw8IHIudG9w
KCkgPDwgIjsgcmlnaHQ6ICIgPDwgci5yaWdodCgpIDw8ICI7IGJvdHRvbTogIiA8PCByLmJvdHRv
bSgpIDw8ICJdIjsKLX0KLSNlbmRpZgpJbmRleDogV2ViQ29yZS9rd3EvS1dRU2l6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FTaXplLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMjAKZGlmZiAtcCAtdSAtcjEuMjAgV2ViQ29yZS9rd3EvS1dRU2l6ZS5o
Ci0tLSBXZWJDb3JlL2t3cS9LV1FTaXplLmgJMSBKdWwgMjAwNSAxMDowMzowNCAtMDAwMAkxLjIw
CisrKyBXZWJDb3JlL2t3cS9LV1FTaXplLmgJMTAgU2VwIDIwMDUgMTk6NTI6NDIgLTAwMDAKQEAg
LTI4LDEwICsyOCw2IEBACiAKICNpbmNsdWRlICJLV1FEZWYuaCIKIAotI2lmZGVmIF9LV1FfSU9T
VFJFQU1fCi0jaW5jbHVkZSA8aW9zZndkPgotI2VuZGlmCi0KIHR5cGVkZWYgc3RydWN0IF9OU1Np
emUgTlNTaXplOwogdHlwZWRlZiBzdHJ1Y3QgQ0dTaXplIENHU2l6ZTsKIApAQCAtNTUsMTAgKzUx
LDYgQEAgcHVibGljOgogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgUVNpemUgJiwg
Y29uc3QgUVNpemUgJik7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRU2l6ZSAm
LCBjb25zdCBRU2l6ZSAmKTsKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0gICAgZnJpZW5kIHN0
ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJiwgY29uc3QgUVNpemUgJik7Ci0j
ZW5kaWYKLQogcHJpdmF0ZToKICAgICBpbnQgdzsKICAgICBpbnQgaDsKSW5kZXg6IFdlYkNvcmUv
a3dxL0tXUVNpemUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dx
L0tXUVNpemUubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IFdl
YkNvcmUva3dxL0tXUVNpemUubW0KLS0tIFdlYkNvcmUva3dxL0tXUVNpemUubW0JMSBKdWwgMjAw
NSAxMDowMzowNCAtMDAwMAkxLjkKKysrIFdlYkNvcmUva3dxL0tXUVNpemUubW0JMTAgU2VwIDIw
MDUgMTk6NTI6NDIgLTAwMDAKQEAgLTcxLDEwICs3MSwzIEBAIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBRU2l6ZSAmYSwgY29uc3QgUVMKIHsKICAgICByZXR1cm4gYS53ICE9IGIudyB8fCBhLmggIT0g
Yi5oOwogfQotCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0gJm8sIGNvbnN0IFFTaXplICZzKQotewotICAgIHJldHVybiBvIDw8ICJR
U2l6ZTogW3c6ICIgPDwgcy53aWR0aCgpIDw8ICI7IGg6ICIgPDwgcy5oZWlnaHQoKSA8PCAiXSI7
Ci19Ci0jZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVZhbHVlTGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FWYWx1ZUxpc3QuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4zNApkaWZmIC1wIC11IC1yMS4zNCBXZWJDb3JlL2t3cS9LV1FWYWx1ZUxp
c3QuaAotLS0gV2ViQ29yZS9rd3EvS1dRVmFsdWVMaXN0LmgJMiBTZXAgMjAwNSAxMDowMzoyMCAt
MDAwMAkxLjM0CisrKyBXZWJDb3JlL2t3cS9LV1FWYWx1ZUxpc3QuaAkxMCBTZXAgMjAwNSAxOTo1
Mjo0MiAtMDAwMApAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlICJLV1FEZWYuaCIKICNpbmNs
dWRlICJLV1FWYWx1ZUxpc3RJbXBsLmgiCiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotI2luY2x1
ZGUgPG9zdHJlYW0+Ci0jZW5kaWYKLQogdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFFWYWx1ZUxp
c3Q7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUVZhbHVlTGlzdENvbnN0SXRlcmF0b3I7CiAK
QEAgLTE0OSwyOCArMTQ1LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRVmFsdWVM
aXN0PAogICAgIHJldHVybiBhLmltcGwuaXNFcXVhbChiLmltcGwsIFFWYWx1ZUxpc3Q8VD46Om5v
ZGVzRXF1YWwpOwogfQogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotdGVtcGxhdGU8Y2xhc3Mg
VD4KLWlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvLCBjb25z
dCBRVmFsdWVMaXN0PFQ+JnApCi17Ci0gICAgbyA8PAotICAgICAgICAiUVZhbHVlTGlzdDogW3Np
emU6ICIgPDwKLSAgICAgICAgKFFfVUlOVDMyKXAuY291bnQoKSA8PAotICAgICAgICAiOyBpdGVt
czogIjsKLSAgICAgICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0b3I8VD4gaXQgPSBwLmJlZ2luKCk7
Ci0gICAgICAgIHdoaWxlIChpdCAhPSBwLmVuZCgpKSB7Ci0gICAgICAgICAgICBvIDw8ICppdDsK
LSAgICAgICAgICAgIGlmICgrK2l0ICE9IHAuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBvIDw8
ICIsICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbyA8PCAiXSI7Ci0gICAg
cmV0dXJuIG87Ci19Ci0KLSNlbmRpZgotCiAjZGVmaW5lIFEzVmFsdWVMaXN0IFFWYWx1ZUxpc3QK
ICNkZWZpbmUgUTNWYWx1ZUxpc3RJdGVyYXRvciBRVmFsdWVMaXN0SXRlcmF0b3IKICNkZWZpbmUg
UTNWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yCg==
</data>
<flag name="review"
          id="553"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4312</attachid>
            <date>2005-10-11 09:37:37 -0700</date>
            <delta_ts>2005-12-19 10:54:54 -0800</delta_ts>
            <desc>new patch; needs testing on gcc 4, but otherwise ready for review</desc>
            <filename>MathOStreamPatch.txt</filename>
            <type>text/plain</type>
            <size>27886</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0Lmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IEphdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL05QX2pzb2JqZWN0LmgKLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pz
b2JqZWN0LmgJMTcgSmFuIDIwMDUgMjI6NDE6MjIgLTAwMDAJMS42CisrKyBKYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9OUF9qc29iamVjdC5oCTExIE9jdCAyMDA1IDE2OjQwOjM5IC0wMDAwCkBAIC0y
MiwzMyArMjIsMjkgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KKwog
I2lmbmRlZiBfTlBfSlNPQkpFQ1RfSAogI2RlZmluZSBfTlBfSlNPQkpFQ1RfSAogCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvbnBydW50aW1lLmg+CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZV9vYmplY3QuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lX3Jvb3QuaD4KLSAKLSNpZmRlZiBfX2Nw
bHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKK25hbWVzcGFjZSBLSlMgeworICAgIGNsYXNz
IE9iamVjdEltcDsKKyAgICBuYW1lc3BhY2UgQmluZGluZ3MgeworICAgICAgICBjbGFzcyBSb290
T2JqZWN0OworICAgIH0KK30KIAogZXh0ZXJuIE5QQ2xhc3MgKk5QU2NyaXB0T2JqZWN0Q2xhc3M7
CiAKLXR5cGVkZWYgc3RydWN0CitzdHJ1Y3QgSmF2YVNjcmlwdE9iamVjdAogewogICAgIE5QT2Jq
ZWN0IG9iamVjdDsKICAgICBLSlM6Ok9iamVjdEltcCAqaW1wOwogICAgIGNvbnN0IEtKUzo6Qmlu
ZGluZ3M6OlJvb3RPYmplY3QgKm9yaWdpbkV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY29uc3QgS0pT
OjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dDsKLX0gSmF2YVNjcmlwdE9i
amVjdDsKK307CiAKIE5QT2JqZWN0ICpfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdCAoTlBQIG5wcCwg
S0pTOjpPYmplY3RJbXAgKmltcCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqb3Jp
Z2luRXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhl
Y3V0aW9uQ29udGV4dCk7CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KICNlbmRp
ZgpJbmRleDogSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9qc29iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5p
X2pzb2JqZWN0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IEph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL2puaS9qbmlfanNvYmplY3QuaAotLS0gSmF2YVNjcmlwdENv
cmUvYmluZGluZ3Mvam5pL2puaV9qc29iamVjdC5oCTggQXVnIDIwMDUgMDQ6MDc6MjQgLTAwMDAJ
MS40CisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX2pzb2JqZWN0LmgJMTEgT2N0
IDIwMDUgMTY6NDA6MzkgLTAwMDAKQEAgLTI3LDkgKzI3LDYgQEAKIAogI2luY2x1ZGUgPENvcmVG
b3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL29iamVjdC5oPgotCiAjaW5j
bHVkZSA8SmF2YVZNL2puaS5oPgogCiAjZGVmaW5lIGpsb25nX3RvX3B0cihhKSAoKHZvaWQqKSh1
aW50cHRyX3QpKGEpKQpAQCAtMzgsNiArMzUsMTAgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK2Ns
YXNzIExpc3Q7CitjbGFzcyBPYmplY3RJbXA7CitjbGFzcyBWYWx1ZUltcDsKKwogbmFtZXNwYWNl
IEJpbmRpbmdzIHsKIAogY2xhc3MgUm9vdE9iamVjdDsKQEAgLTY3LDkgKzY4LDYgQEAgc3RydWN0
IEpTT2JqZWN0Q2FsbENvbnRleHQKICAgICBqdmFsdWUgcmVzdWx0OwogfTsKIAotCi10eXBlZGVm
IHN0cnVjdCBKU09iamVjdENhbGxDb250ZXh0IEpTT2JqZWN0Q2FsbENvbnRleHQ7Ci0KIGNsYXNz
IEpTT2JqZWN0CiB7CiBwdWJsaWM6CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvc2ltcGxlX251
bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMv
c2ltcGxlX251bWJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE5CmRpZmYgLXAgLXUgLXIx
LjE5IEphdmFTY3JpcHRDb3JlL2tqcy9zaW1wbGVfbnVtYmVyLmgKLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9zaW1wbGVfbnVtYmVyLmgJNiBPY3QgMjAwNSAwMToxMzoxOCAtMDAwMAkxLjE5CisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvc2ltcGxlX251bWJlci5oCTExIE9jdCAyMDA1IDE2OjQwOjM5IC0w
MDAwCkBAIC0yMiwyMiArMjIsNiBAQAogI2lmbmRlZiBLSlNfU0lNUExFX05VTUJFUl9ICiAjZGVm
aW5lIEtKU19TSU1QTEVfTlVNQkVSX0gKIAotLy8gV2UgaW5jbHVkZSB0aGVzZSBoZWFkZXJzIGhl
cmUgYmVjYXVzZSBzaW1wbGVfbnVtYmVyLmggaXMgdGhlIG1vc3QgbG93LWxldmVsIGhlYWRlciB3
ZSBoYXZlLgotI2luY2x1ZGUgPGZsb2F0Lmg+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUg
PHN0ZGludC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0vLyBXb3JrYXJvdW5kIGZvciBhIGJ1
ZyBpbiBHQ0MgbGlicmFyeSBoZWFkZXJzLgotLy8gV2UnZCBwcmVmZXIgdG8ganVzdCB1c2UgbWF0
aC5oLgotI2lmICFXSU4zMgotI2luY2x1ZGUgPGNtYXRoPgotdXNpbmcgc3RkOjppc2Zpbml0ZTsK
LXVzaW5nIHN0ZDo6aXNpbmY7Ci11c2luZyBzdGQ6OmlzbmFuOwotdXNpbmcgc3RkOjpzaWduYml0
OwotI2VuZGlmCi0KICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPiAzKQogI2Rl
ZmluZSBBTFdBWVNfSU5MSU5FIF9fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKICNlbHNl
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmVQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYK
ZGlmZiAtcCAtdSAtcjEuMTYgV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgKLS0tIFdlYkNvcmUvV2Vi
Q29yZVByZWZpeC5oCTMgT2N0IDIwMDUgMjE6MTI6MDAgLTAwMDAJMS4xNgorKysgV2ViQ29yZS9X
ZWJDb3JlUHJlZml4LmgJMTEgT2N0IDIwMDUgMTY6NDA6NTMgLTAwMDAKQEAgLTI2LDEwICsyNiw2
IEBACiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxuZXc+CiAKLSNpZm5kZWYgTkRFQlVH
Ci0jaW5jbHVkZSA8b3N0cmVhbT4KLSNlbmRpZgotCiAvLyBXb3JrIGFyb3VuZCBidWcgMzU1MzMw
OSBieSByZS1pbmNsdWRpbmcgPGN0eXBlLmg+LgogI2luY2x1ZGUgPGNjdHlwZT4KICNkZWZpbmUg
aXNhbG51bShjKSAgICAgIF9faXN0eXBlKChjKSwgKF9DVFlQRV9BfF9DVFlQRV9EKSkKSW5kZXg6
IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9lY21hL2tqc193aW5kb3cuY3BwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjE4MwpkaWZmIC1wIC11IC1yMS4xODMgV2ViQ29yZS9raHRtbC9lY21hL2tqc193
aW5kb3cuY3BwCi0tLSBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJMTEgT2N0IDIw
MDUgMDY6NTU6MjkgLTAwMDAJMS4xODMKKysrIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93
LmNwcAkxMSBPY3QgMjAwNSAxNjo0MDo1NyAtMDAwMApAQCAtNzIsMTIgKzcyLDYgQEAKICNpbmNs
dWRlICJjc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmgiCiAjaW5jbHVkZSAibWlzYy9zaGFyZWQuaCIK
IAotLy8gTXVzdCBpbmNsdWRlIDxjbWF0aD4gaW5zdGVhZCBvZiA8bWF0aC5oPiBiZWNhdXNlIG9m
IGEgYnVnIGluIHRoZQotLy8gZ2NjIDMuMyBsaWJyYXJ5IHZlcnNpb24gb2YgPG1hdGguaD4gd2hl
cmUgaWYgeW91IGluY2x1ZGUgYm90aAotLy8gPGNtYXRoPiBhbmQgPG1hdGguaD4gdGhlIG1hY3Jv
cyBuZWNlc3NhcnkgZm9yIGZ1bmN0aW9ucyBsaWtlCi0vLyBpc25hbiBhcmUgbm90IGRlZmluZWQu
Ci0jaW5jbHVkZSA8Y21hdGg+Ci0KIHVzaW5nIG5hbWVzcGFjZSBET006OkV2ZW50TmFtZXM7CiAK
IHVzaW5nIERPTTo6QXRvbWljU3RyaW5nOwpAQCAtOTcsOCArOTEsNiBAQCB1c2luZyBLUGFydHM6
OlJlYWRPbmx5UGFydDsKIHVzaW5nIEtQYXJ0czo6VVJMQXJnczsKIHVzaW5nIEtQYXJ0czo6V2lu
ZG93QXJnczsKIAotdXNpbmcgc3RkOjppc25hbjsKLQogbmFtZXNwYWNlIEtKUyB7CiAKIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8gSGlzdG9yeSBPYmplY3QgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CkluZGV4OiBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfY2FudmFzaW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5k
ZXJfY2FudmFzaW1hZ2UuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIxCmRpZmYgLXAgLXUg
LXIxLjIxIFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXNpbWFnZS5jcHAKLS0t
IFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXNpbWFnZS5jcHAJMyBPY3QgMjAw
NSAyMToxMjozOCAtMDAwMAkxLjIxCisrKyBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJf
Y2FudmFzaW1hZ2UuY3BwCTExIE9jdCAyMDA1IDE2OjQwOjU3IC0wMDAwCkBAIC00MiwxMiArNDIs
NiBAQAogI2luY2x1ZGUgInhtbC9kb20yX2V2ZW50c2ltcGwuaCIKICNpbmNsdWRlICJodG1sL2h0
bWxfZG9jdW1lbnRpbXBsLmgiCiAKLS8vIE11c3QgaW5jbHVkZSA8Y21hdGg+IGluc3RlYWQgb2Yg
PG1hdGguaD4gYmVjYXVzZSBvZiBhIGJ1ZyBpbiB0aGUKLS8vIGdjYyAzLjMgbGlicmFyeSB2ZXJz
aW9uIG9mIDxtYXRoLmg+IHdoZXJlIGlmIHlvdSBpbmNsdWRlIGJvdGgKLS8vIDxjbWF0aD4gYW5k
IDxtYXRoLmg+IHRoZSBtYWNyb3MgbmVjZXNzYXJ5IGZvciBmdW5jdGlvbnMgbGlrZQotLy8gaXNu
YW4gYXJlIG5vdCBkZWZpbmVkLgotI2luY2x1ZGUgPGNtYXRoPgotCiB1c2luZyBuYW1lc3BhY2Ug
RE9NOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBraHRtbDsK
SW5kZXg6IFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9pbWFn
ZS5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuODcKZGlmZiAtcCAtdSAtcjEuODcgV2ViQ29y
ZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmNwcAotLS0gV2ViQ29yZS9raHRtbC9yZW5k
ZXJpbmcvcmVuZGVyX2ltYWdlLmNwcAkzIE9jdCAyMDA1IDIxOjEyOjM5IC0wMDAwCTEuODcKKysr
IFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5jcHAJMTEgT2N0IDIwMDUgMTY6
NDA6NTcgLTAwMDAKQEAgLTQzLDEyICs0Myw2IEBACiAjaW5jbHVkZSAieG1sL2RvbTJfZXZlbnRz
aW1wbC5oIgogI2luY2x1ZGUgImh0bWwvaHRtbF9kb2N1bWVudGltcGwuaCIKIAotLy8gTXVzdCBp
bmNsdWRlIDxjbWF0aD4gaW5zdGVhZCBvZiA8bWF0aC5oPiBiZWNhdXNlIG9mIGEgYnVnIGluIHRo
ZQotLy8gZ2NjIDMuMyBsaWJyYXJ5IHZlcnNpb24gb2YgPG1hdGguaD4gd2hlcmUgaWYgeW91IGlu
Y2x1ZGUgYm90aAotLy8gPGNtYXRoPiBhbmQgPG1hdGguaD4gdGhlIG1hY3JvcyBuZWNlc3Nhcnkg
Zm9yIGZ1bmN0aW9ucyBsaWtlCi0vLyBpc25hbiBhcmUgbm90IGRlZmluZWQuCi0jaW5jbHVkZSA8
Y21hdGg+Ci0KIHVzaW5nIG5hbWVzcGFjZSBET007CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogdXNpbmcgbmFtZXNwYWNlIGtodG1sOwpJbmRleDogV2ViQ29yZS9rd3EvS1dRQ1N0cmluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FDU3RyaW5nLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjcKZGlmZiAtcCAtdSAtcjEuMjcgV2ViQ29yZS9rd3Ev
S1dRQ1N0cmluZy5oCi0tLSBXZWJDb3JlL2t3cS9LV1FDU3RyaW5nLmgJMiBTZXAgMjAwNSAxMDow
MzoxOSAtMDAwMAkxLjI3CisrKyBXZWJDb3JlL2t3cS9LV1FDU3RyaW5nLmgJMTEgT2N0IDIwMDUg
MTY6NDA6NTcgLTAwMDAKQEAgLTYwLDEwICs2MCw2IEBAIHB1YmxpYzoKICAgICBRQ1N0cmluZyAm
b3BlcmF0b3IrPShjb25zdCBjaGFyICpzKSB7IHJldHVybiBhcHBlbmQocyk7IH0KICAgICBRQ1N0
cmluZyAmb3BlcmF0b3IrPShjaGFyIGMpIHsgcmV0dXJuIGFwcGVuZChjKTsgfQogCi0jaWZkZWYg
X0tXUV9JT1NUUkVBTV8KLSAgICBmcmllbmQgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6
b3N0cmVhbSAmLCBjb25zdCBRQ1N0cmluZyAmKTsKLSNlbmRpZgotCiBwcml2YXRlOgogICAgIGJv
b2wgcmVzaXplKHVpbnQpOwogfTsKSW5kZXg6IFdlYkNvcmUva3dxL0tXUUNTdHJpbmcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUUNTdHJpbmcubW0sdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTkKZGlmZiAtcCAtdSAtcjEuMTkgV2ViQ29yZS9rd3EvS1dR
Q1N0cmluZy5tbQotLS0gV2ViQ29yZS9rd3EvS1dRQ1N0cmluZy5tbQkzIE9jdCAyMDA1IDIxOjEz
OjAxIC0wMDAwCTEuMTkKKysrIFdlYkNvcmUva3dxL0tXUUNTdHJpbmcubW0JMTEgT2N0IDIwMDUg
MTY6NDA6NTcgLTAwMDAKQEAgLTMwMywxMyArMzAzLDMgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFFDU3RyaW5nICZzMSwgY29ucwogICAgIH0KICAgICByZXR1cm4gKHN0cmNtcChzMSwgczIpID09
IDApOwogfQotCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotb3N0cmVhbSAmb3BlcmF0b3IgPDwo
b3N0cmVhbSAmbywgY29uc3QgUUNTdHJpbmcgJnMpCi17Ci0gICAgY29uc3QgY2hhciAqY2hzID0g
czsKLSAgICByZXR1cm4gbyA8PCBjaHM7Ci19Ci0KLSNlbmRpZgpJbmRleDogV2ViQ29yZS9rd3Ev
S1dRRGF0ZVRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3Ev
S1dRRGF0ZVRpbWUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNApkaWZmIC1wIC11IC1yMS4y
NCBXZWJDb3JlL2t3cS9LV1FEYXRlVGltZS5oCi0tLSBXZWJDb3JlL2t3cS9LV1FEYXRlVGltZS5o
CTUgSnVsIDIwMDUgMDg6MDQ6NTAgLTAwMDAJMS4yNAorKysgV2ViQ29yZS9rd3EvS1dRRGF0ZVRp
bWUuaAkxMSBPY3QgMjAwNSAxNjo0MDo1NyAtMDAwMApAQCAtMjMsMTYgKzIzLDEyIEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFFEQVRFVElNRV9IXwotI2RlZmluZSBRREFURVRJ
TUVfSF8KKyNpZm5kZWYgUURBVEVUSU1FX0gKKyNkZWZpbmUgUURBVEVUSU1FX0gKIAogI2luY2x1
ZGUgIktXUURlZi5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGRGF0ZS5oPgogCi0jaWZk
ZWYgX0tXUV9JT1NUUkVBTV8KLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jZW5kaWYKLQogY2xhc3MgUVRp
bWUgewogcHVibGljOgogICAgIFFUaW1lKCkgOiB0aW1lSW5TZWNvbmRzKDApIHsgfQpAQCAtNTIs
OSArNDgsNiBAQCBwcml2YXRlOgogICAgIENGQWJzb2x1dGVUaW1lIHRpbWVJblNlY29uZHM7IAog
ICAgIAogICAgIGZyaWVuZCBjbGFzcyBRRGF0ZVRpbWU7Ci0jaWZkZWYgX0tXUV9JT1NUUkVBTV8K
LSAgICBmcmllbmQgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0gJiwgY29u
c3QgUVRpbWUgJiApOwotI2VuZGlmCiB9OwogCiBjbGFzcyBRRGF0ZSB7CkBAIC02NywxMCArNjAs
NiBAQCBwcml2YXRlOgogICAgIGludCBkYXk7CiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIFFEYXRl
VGltZTsKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0gJm9w
ZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBRRGF0ZSAmICk7Ci0jZW5kaWYKLQogfTsK
IAogY2xhc3MgUURhdGVUaW1lIHsKQEAgLTg2LDEwICs3NSw2IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBDRkFic29sdXRlVGltZSBkYXRlSW5TZWNvbmRzOwotCi0jaWZkZWYgX0tXUV9JT1NU
UkVBTV8KLSAgICBmcmllbmQgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0g
JiwgY29uc3QgUURhdGVUaW1lICYgKTsKLSNlbmRpZgogfTsKIAogY2xhc3MgS1dRVUlFdmVudFRp
bWUgewpAQCAtOTcsNSArODIsNCBAQCBwdWJsaWM6CiAgICAgYm9vbCB1aUV2ZW50UGVuZGluZygp
IGNvbnN0OwogfTsKIAotCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUURhdGVUaW1lLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FEYXRlVGltZS5t
bSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNApkaWZmIC1wIC11IC1yMS4xNCBXZWJDb3JlL2t3
cS9LV1FEYXRlVGltZS5tbQotLS0gV2ViQ29yZS9rd3EvS1dRRGF0ZVRpbWUubW0JMyBPY3QgMjAw
NSAyMToxMzowMiAtMDAwMAkxLjE0CisrKyBXZWJDb3JlL2t3cS9LV1FEYXRlVGltZS5tbQkxMSBP
Y3QgMjAwNSAxNjo0MDo1NyAtMDAwMApAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KKyNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiS1dRRGF0ZVRpbWUuaCIKKwor
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx0aW1lLmg+Ci0jaW1w
b3J0ICJXZWJDb3JlR3JhcGhpY3NCcmlkZ2UuaCIKIAogc3RhdGljIENGVGltZVpvbmVSZWYgc3lz
dGVtVGltZVpvbmUoKQogewpAQCAtMTAzLDU1ICsxMDMsMyBAQCBib29sIEtXUVVJRXZlbnRUaW1l
Ojp1aUV2ZW50UGVuZGluZygpIGNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5Nb2RlOk5TRXZlbnRUcmFja2luZ1J1bkxvb3BNb2RlIGRlcXVldWU6Tk9d
ICE9IG5pbDsKICovCiB9Ci0KLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotCi1zdGQ6Om9zdHJlYW0g
Jm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvLCBjb25zdCBRRGF0ZSAmZGF0ZSkKLXsKLSAgICBy
ZXR1cm4gbyA8PAotICAgICAgICAiUURhdGU6IFt5eS9tbS9kZDogIiA8PAotICAgICAgICBkYXRl
LnllYXIgPDwKLSAgICAgICAgJy8nIDw8Ci0gICAgICAgIGRhdGUubW9udGggPDwKLSAgICAgICAg
Jy8nIDw8Ci0gICAgICAgIGRhdGUuZGF5IDw8Ci0gICAgICAgICddJzsKLX0KLQotc3RkOjpvc3Ry
ZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmbywgY29uc3QgUVRpbWUgJnRpbWUpCi17Ci0g
ICAgQ0ZHcmVnb3JpYW5EYXRlIGcgPSBDRkFic29sdXRlVGltZUdldEdyZWdvcmlhbkRhdGUodGlt
ZS50aW1lSW5TZWNvbmRzLCBzeXN0ZW1UaW1lWm9uZSgpKTsKLSAgICByZXR1cm4gbyA8PAotICAg
ICAgICAiUVRpbWU6IFtoaDptbTpzczptcyA9ICIgPDwKLSAgICAgICAgKGludClnLmhvdXIgPDwK
LSAgICAgICAgJzonIDw8Ci0gICAgICAgIChpbnQpZy5taW51dGUgPDwKLSAgICAgICAgJzonIDw8
Ci0gICAgICAgIChpbnQpZy5zZWNvbmQgPDwKLSAgICAgICAgJzonIDw8Ci0gICAgICAgIHRpbWUu
bXNlYygpIDw8Ci0gICAgICAgICddJzsKLX0KLQotc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0
ZDo6b3N0cmVhbSAmbywgY29uc3QgUURhdGVUaW1lICZkYXRlVGltZSkKLXsKLSAgICBDRkdyZWdv
cmlhbkRhdGUgZyA9IENGQWJzb2x1dGVUaW1lR2V0R3JlZ29yaWFuRGF0ZShkYXRlVGltZS5kYXRl
SW5TZWNvbmRzLCBzeXN0ZW1UaW1lWm9uZSgpKTsKLSAgICByZXR1cm4gbyA8PAotICAgICAgICAi
UURhdGVUaW1lOiBbeXkvbW0vZGQgaGg6bW06c3M6bXMgPSAiIDw8Ci0gICAgICAgIChpbnQpZy55
ZWFyIDw8Ci0gICAgICAgICcvJyA8PAotICAgICAgICAoaW50KWcubW9udGggPDwKLSAgICAgICAg
Jy8nIDw8Ci0gICAgICAgIChpbnQpZy5kYXkgPDwKLSAgICAgICAgJyAnIDw8IAotICAgICAgICAo
aW50KWcuaG91ciA8PAotICAgICAgICAnOicgPDwKLSAgICAgICAgKGludClnLm1pbnV0ZSA8PAot
ICAgICAgICAnOicgPDwKLSAgICAgICAgKGludClnLnNlY29uZCA8PAotICAgICAgICAnOicgPDwK
LSAgICAgICAgKChpbnQpKGcuc2Vjb25kICogMTAwMCkgJSAxMDAwKSA8PAotICAgICAgICAnXSc7
Ci19Ci0KLSNlbmRpZiAvLyBfS1dRX0lPU1RSRUFNXwpJbmRleDogV2ViQ29yZS9rd3EvS1dRRGVm
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUURlZi5oLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjE4CmRpZmYgLXAgLXUgLXIxLjE4IFdlYkNvcmUva3dxL0tX
UURlZi5oCi0tLSBXZWJDb3JlL2t3cS9LV1FEZWYuaAk3IEp1bCAyMDA1IDE3OjA2OjU0IC0wMDAw
CTEuMTgKKysrIFdlYkNvcmUva3dxL0tXUURlZi5oCTExIE9jdCAyMDA1IDE2OjQwOjU3IC0wMDAw
CkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIEtXUURFRl9IXwogCiAjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+Ci0jaW5jbHVkZSA8Y21hdGg+CiAKICNpZm5kZWYgS1dRX1VOU0lHTkVEX1RZUEVTX0RF
RklORUQKICNkZWZpbmUgS1dRX1VOU0lHTkVEX1RZUEVTX0RFRklORUQKQEAgLTQxLDkgKzQwLDYg
QEAgdHlwZWRlZiB1X2ludDY0X3QgUV9VSU5UNjQ7CiB0eXBlZGVmIGludCBRX0lOVDMyOwogdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgUV9VSU5UMzI7CiAKLXR5cGVkZWYgc2hvcnQgUV9JTlQxNjsKLXR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgUV9VSU5UMTY7Ci0KIHRlbXBsYXRlPGNsYXNzIFQ+CiBpbmxp
bmUgY29uc3QgVCYga01pbiAoIGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIgKSB7IHJldHVybiBhIDwg
YiA/IGEgOiBiOyB9CiAKQEAgLTUyLDcgKzQ4LDcgQEAgaW5saW5lIGNvbnN0IFQmIGtNYXggKCBj
b25zdCBUJiBhLCBjb25zdAogCiAjZGVmaW5lIFFBQlMoYSkgKCgoYSkgPj0gMCkgPyAoYSkgOiAt
KGEpKQogCi1pbmxpbmUgaW50IHFSb3VuZChkb3VibGUgYSkgeyByZXR1cm4gbHJvdW5kKGEpOyB9
CisjZGVmaW5lIHFSb3VuZChhKSBscm91bmQoYSkKIAogI2lmbmRlZiBUUlVFCiAjZGVmaW5lIFRS
VUUgMQpAQCAtNzAsOCArNjYsNCBAQCB2b2lkIHFXYXJuaW5nKGNvbnN0IGNoYXIgKm1zZywgLi4u
KTsKIAogI2RlZmluZSBRX0FTU0VSVChhcmcpIGRvIHt9IHdoaWxlKDApCiAKLSNpZm5kZWYgTkRF
QlVHCi0jZGVmaW5lIF9LV1FfSU9TVFJFQU1fCi0jZW5kaWYKLQogI2VuZGlmCkluZGV4OiBXZWJD
b3JlL2t3cS9LV1FLSFRNTFBhcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
Q29yZS9rd3EvS1dRS0hUTUxQYXJ0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjI5CmRpZmYg
LXAgLXUgLXIxLjIyOSBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaAotLS0gV2ViQ29yZS9rd3Ev
S1dRS0hUTUxQYXJ0LmgJMjcgU2VwIDIwMDUgMjI6Mzc6MjggLTAwMDAJMS4yMjkKKysrIFdlYkNv
cmUva3dxL0tXUUtIVE1MUGFydC5oCTExIE9jdCAyMDA1IDE2OjQwOjU5IC0wMDAwCkBAIC0zNiwx
NyArMzYsMTMgQEAKIAogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
IAotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvam5pX2pzb2JqZWN0Lmg+Ci0jaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9ucHJ1bnRpbWUuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL05QX2pzb2Jq
ZWN0Lmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lLmg+Ci0KICNpbXBvcnQgIktX
UURpY3QuaCIKICNpbXBvcnQgIktXUUNsaXBib2FyZC5oIgogI2ltcG9ydCAiS1dRU2Nyb2xsQmFy
LmgiCiAKIGNsYXNzIEtIVE1MUGFydFByaXZhdGU7CiBjbGFzcyBLV1FXaW5kb3dXaWRnZXQ7Citj
bGFzcyBOUE9iamVjdDsKIAogbmFtZXNwYWNlIERPTSB7CiAgICAgY2xhc3MgRG9jdW1lbnRGcmFn
bWVudEltcGw7CkBAIC02NCw2ICs2MCwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBjbGFzcyBT
YXZlZFByb3BlcnRpZXM7CiAgICAgY2xhc3MgU2F2ZWRCdWlsdGluczsKICAgICBjbGFzcyBTY2hl
ZHVsZWRBY3Rpb247CisgICAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKKyAgICAgICAgY2xhc3MgSW5z
dGFuY2U7CisgICAgICAgIGNsYXNzIFJvb3RPYmplY3Q7CisgICAgfQogfQogCiAjaWZkZWYgX19P
QkpDX18KQEAgLTIwNCw4ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGF0dXNiYXJWaXNp
YmxlKCk7CiAgICAgYm9vbCB0b29sYmFyVmlzaWJsZSgpOwogCi0gICAgdm9pZCBLV1FLSFRNTFBh
cnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgUVN0cmluZyAmbWVzc2FnZSwgIHVuc2lnbmVk
IGludCBsaW5lTnVtYmVyLCBjb25zdCBRU3RyaW5nICZzb3VyY2VJRCk7Ci0gICAgdXNpbmcgS0hU
TUxQYXJ0Ojp4bWxEb2NJbXBsOworICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBR
U3RyaW5nICZtZXNzYWdlLCAgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcg
JnNvdXJjZUlEKTsKICAgICBraHRtbDo6UmVuZGVyT2JqZWN0ICpyZW5kZXJlcigpIGNvbnN0Owog
ICAgIHZvaWQgZm9yY2VMYXlvdXQoKTsKICAgICB2b2lkIGZvcmNlTGF5b3V0V2l0aFBhZ2VXaWR0
aFJhbmdlKGZsb2F0IG1pblBhZ2VXaWR0aCwgZmxvYXQgbWF4UGFnZVdpZHRoKTsKQEAgLTM1Myw3
ICszNTIsNyBAQCBwdWJsaWM6CiAgICAgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqYmluZGlu
Z1Jvb3RPYmplY3QoKTsKICAgICAKICAgICBXZWJTY3JpcHRPYmplY3QgKndpbmRvd1NjcmlwdE9i
amVjdCgpOwotICAgIE5QT2JqZWN0ICpLV1FLSFRNTFBhcnQ6OndpbmRvd1NjcmlwdE5QT2JqZWN0
KCk7CisgICAgTlBPYmplY3QgKndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAgICAgCiAgICAgdm9p
ZCBwYXJ0Q2xlYXJlZEluQmVnaW4oKTsKICAgICAKSW5kZXg6IFdlYkNvcmUva3dxL0tXUUtIVE1M
UGFydC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRS0hU
TUxQYXJ0Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY3NwpkaWZmIC1wIC11IC1yMS42Nzcg
V2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0Lm1tCi0tLSBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQu
bW0JNyBPY3QgMjAwNSAwMToyMTo0NyAtMDAwMAkxLjY3NworKysgV2ViQ29yZS9rd3EvS1dRS0hU
TUxQYXJ0Lm1tCTExIE9jdCAyMDA1IDE2OjQxOjAzIC0wMDAwCkBAIC04Miw2ICs4Miw3IEBACiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lX3Jvb3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1dlYlNjcmlwdE9iamVj
dFByaXZhdGUuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL05QX2pzb2JqZWN0Lmg+CiAKICNp
ZiBBUFBMRV9DSEFOR0VTCiAjaW1wb3J0ICJLV1FBY2NPYmplY3RDYWNoZS5oIgpJbmRleDogV2Vi
Q29yZS9rd3EvS1dRTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUv
a3dxL0tXUU1hcC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI1CmRpZmYgLXAgLXUgLXIxLjI1
IFdlYkNvcmUva3dxL0tXUU1hcC5oCi0tLSBXZWJDb3JlL2t3cS9LV1FNYXAuaAkyMiBKYW4gMjAw
MyAwMDoxMjozNSAtMDAwMAkxLjI1CisrKyBXZWJDb3JlL2t3cS9LV1FNYXAuaAkxMSBPY3QgMjAw
NSAxNjo0MTowMyAtMDAwMApAQCAtMzAsMTAgKzMwLDYgQEAKIAogI2luY2x1ZGUgIktXUU1hcElt
cGwuaCIKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0jaW5jbHVkZSA8b3N0cmVhbT4KLSNlbmRp
ZgotCiB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4gY2xhc3MgUU1hcDsKIHRlbXBsYXRlIDxj
bGFzcyBLLCBjbGFzcyBWPiBjbGFzcyBRTWFwSXRlcmF0b3I7CiB0ZW1wbGF0ZSA8Y2xhc3MgSywg
Y2xhc3MgVj4gY2xhc3MgUU1hcENvbnN0SXRlcmF0b3I7CkBAIC0zMDAsMjcgKzI5Niw0IEBAIHBy
b3RlY3RlZDoKIAogfTsKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0KLXRlbXBsYXRlPGNsYXNz
IEssIGNsYXNzIFY+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSAmc3RyZWFtLCBjb25zdCBRTWFwPEssVj4gJm0pIAotewotICAgIHVpbnQgY291bnQgPSBtLmNv
dW50KCk7Ci0gICAgc3RyZWFtIDw8ICJRTWFwOiBbc2l6ZTogIiA8PCBjb3VudCA8PCAiOyBpdGVt
czogIjsKLQotICAgIFFNYXBDb25zdEl0ZXJhdG9yPEssVj4gaXRlciA9IG0uYmVnaW4oKTsKLSAg
ICAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLQlzdHJl
YW0gPDwgIigiIDw8IGl0ZXIua2V5KCkgPDwgIiwiIDw8IGl0ZXIuZGF0YSgpIDw8ICIpIjsKLQlp
ZiAoaSArIDEgPCBjb3VudCkgewotCSAgICBzdHJlYW0gPDwgIiwgIjsKLQl9Ci0JKytpdGVyOwot
ICAgIH0KLQotICAgIHJldHVybiBzdHJlYW0gPDwgIl0iOwotfQotCi0jZW5kaWYKLQogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL2t3cS9LV1FNZW1BcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FNZW1BcnJheS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjI3CmRpZmYgLXAgLXUgLXIxLjI3IFdlYkNvcmUva3dxL0tXUU1lbUFycmF5LmgKLS0tIFdlYkNv
cmUva3dxL0tXUU1lbUFycmF5LmgJMiBTZXAgMjAwNSAxMDowMzoxOSAtMDAwMAkxLjI3CisrKyBX
ZWJDb3JlL2t3cS9LV1FNZW1BcnJheS5oCTExIE9jdCAyMDA1IDE2OjQxOjAzIC0wMDAwCkBAIC0y
OSwxMCArMjksNiBAQAogI2luY2x1ZGUgIktXUURlZi5oIgogI2luY2x1ZGUgIktXUUFycmF5SW1w
bC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSNpbmNsdWRlIDxvc3RyZWFtPgotI2VuZGlm
Ci0KIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBRTWVtQXJyYXkgewogcHVibGljOgogICAgIFFN
ZW1BcnJheSgpIDogaW1wbChzaXplb2YoVCkpIHsgfQpAQCAtNjQsMjMgKzYwLDQgQEAgcHVibGlj
OgogCiAjZGVmaW5lIFEzTWVtQXJyYXkgUU1lbUFycmF5CiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFN
XwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0gJnN0cmVhbSwgY29uc3QgUU1lbUFycmF5PFQ+JmEpCi17Ci0gICAgc3RyZWFt
IDw8ICJRTWVtQXJyYXk6IFtzaXplOiAiIDw8IGEuc2l6ZSgpIDw8ICI7IGl0ZW1zOiAiOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHN0cmVh
bSA8PCBhW2ldOwotCWlmIChpIDwgYS5zaXplKCkgLSAxKSB7Ci0JICAgIHN0cmVhbSA8PCAiLCAi
OwotCX0KLSAgICB9Ci0gICAgc3RyZWFtIDw8ICJdIjsKLQotICAgIHJldHVybiBzdHJlYW07Ci19
Ci0KLSNlbmRpZgotCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVBvaW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FQb2ludC5tbSx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4xMgpkaWZmIC1wIC11IC1yMS4xMiBXZWJDb3JlL2t3cS9LV1FQb2lu
dC5tbQotLS0gV2ViQ29yZS9rd3EvS1dRUG9pbnQubW0JMyBPY3QgMjAwNSAyMToxMzowNyAtMDAw
MAkxLjEyCisrKyBXZWJDb3JlL2t3cS9LV1FQb2ludC5tbQkxMSBPY3QgMjAwNSAxNjo0MTowMyAt
MDAwMApAQCAtNzAsMTAgKzcwLDMgQEAgY29uc3QgUVBvaW50IG9wZXJhdG9yKihjb25zdCBRUG9p
bnQgJnAsIAogewogICAgIHJldHVybiBRUG9pbnQoKGludCkocC54Q29vcmQgKiBzKSwgKGludCko
cC55Q29vcmQgKiBzKSk7CiB9Ci0KLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotc3RkOjpvc3RyZWFt
ICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmbywgY29uc3QgUVBvaW50ICZwKQotewotICAgIHJl
dHVybiBvIDw8ICJRUG9pbnQ6IFt4OiAiIDw8IHAueCgpIDw8ICI7IGg6ICIgPDwgcC55KCkgPDwg
Il0iOwotfQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FQb2ludEFycmF5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVBvaW50QXJyYXkuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4yOApkaWZmIC1wIC11IC1yMS4yOCBXZWJDb3JlL2t3cS9LV1FQ
b2ludEFycmF5LmgKLS0tIFdlYkNvcmUva3dxL0tXUVBvaW50QXJyYXkuaAkzMCBTZXAgMjAwNSAw
NDowNDo1NyAtMDAwMAkxLjI4CisrKyBXZWJDb3JlL2t3cS9LV1FQb2ludEFycmF5LmgJMTEgT2N0
IDIwMDUgMTY6NDE6MDMgLTAwMDAKQEAgLTI4LDEwICsyOCw2IEBACiAKICNpbmNsdWRlICJLV1FE
ZWYuaCIKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0jaW5jbHVkZSA8aW9zZndkPgotI2VuZGlm
Ci0KICNpbmNsdWRlICJLV1FNZW1BcnJheS5oIgogCiAjaWZkZWYgTlNHRU9NRVRSWV9UWVBFU19T
QU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKQEAgLTg4LDE4ICs4NCw5IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIHBvaW50KHVpbnQsIGludCAqLCBpbnQgKik7CiAgICAgdm9pZCBzZXRQb2ludCh1
aW50LCBpbnQsIGludCk7Ci0jaWYgMAotICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIGZvciBSYWRh
ciAyOTIxMDYxLgotICAgIGJvb2wgc2V0UG9pbnRzKGludCwgaW50LCBpbnQsIC4uLik7Ci0jZWxz
ZQogICAgIGJvb2wgc2V0UG9pbnRzKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpOwotI2VuZGlmCiAgICAgYm9vbCBzZXRQb2ludHMoIGludCBuUG9pbnRzLCBjb25z
dCBpbnQgKnBvaW50cyApOwogICAgIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0gICAgZnJpZW5k
IHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJiwgY29uc3QgUVBvaW50ICYp
OwotI2VuZGlmCi0gICAgCiB9OwogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVB0ckxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRUHRyTGlz
dC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMwCmRpZmYgLXAgLXUgLXIxLjMwIFdlYkNvcmUv
a3dxL0tXUVB0ckxpc3QuaAotLS0gV2ViQ29yZS9rd3EvS1dRUHRyTGlzdC5oCTIgU2VwIDIwMDUg
MTA6MDM6MTkgLTAwMDAJMS4zMAorKysgV2ViQ29yZS9rd3EvS1dRUHRyTGlzdC5oCTExIE9jdCAy
MDA1IDE2OjQxOjAzIC0wMDAwCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUgIktXUUNvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJLV1FMaXN0SW1wbC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVB
TV8KLSNpbmNsdWRlIDxvc3RyZWFtPgotI2VuZGlmCi0KIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFz
cyBRUHRyTGlzdEl0ZXJhdG9yOwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUVB0ckxpc3Qg
OiBwdWJsaWMgUVB0ckNvbGxlY3Rpb24gewpAQCAtMTEyLDMzICsxMDgsNCBAQCBwcml2YXRlOgog
I2RlZmluZSBRM1B0ckxpc3QgUVB0ckxpc3QKICNkZWZpbmUgUTNQdHJMaXN0SXRlcmF0b3IgUVB0
ckxpc3RJdGVyYXRvcgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotdGVtcGxhdGU8Y2xhc3Mg
VD4KLWlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzdHJlYW0s
IGNvbnN0IFFQdHJMaXN0PFQ+ICZsKQotewotICAgIFFQdHJMaXN0SXRlcmF0b3I8VD4gaXRlcihs
KTsKLSAgICB1bnNpZ25lZCBjb3VudCA9IGwuY291bnQoKTsKLQotICAgIHN0cmVhbSA8PCAiUVB0
ckxpc3Q6IFtzaXplOiAiIDw8IGwuY291bnQoKSA8PCAiOyBpdGVtczogIjsKLQotICAgIC8vIHBy
aW50IGZpcnN0Ci0gICAgaWYgKGNvdW50ICE9IDApIHsKLQlzdHJlYW0gPDwgKml0ZXIuY3VycmVu
dCgpOwotCSsraXRlcjsKLQktLWNvdW50OwotICAgIH0KLSAgICAKLSAgICAvLyBwcmludCByZXN0
Ci0gICAgd2hpbGUgKGNvdW50ICE9IDApIHsKLQlzdHJlYW0gPDwgIiwgIiA8PCAqaXRlci5jdXJy
ZW50KCk7Ci0JKytpdGVyOwotCS0tY291bnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0cmVhbSA8
PCAiXSI7Ci19Ci0KLSNlbmRpZgotCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVB0clN0
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVB0clN0
YWNrLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYKZGlmZiAtcCAtdSAtcjEuMTYgV2ViQ29y
ZS9rd3EvS1dRUHRyU3RhY2suaAotLS0gV2ViQ29yZS9rd3EvS1dRUHRyU3RhY2suaAkyIFNlcCAy
MDA1IDEwOjAzOjIwIC0wMDAwCTEuMTYKKysrIFdlYkNvcmUva3dxL0tXUVB0clN0YWNrLmgJMTEg
T2N0IDIwMDUgMTY6NDE6MDMgLTAwMDAKQEAgLTQ3LDI3ICs0Nyw0IEBAIHB1YmxpYzoKIAogI2Rl
ZmluZSBRM1B0clN0YWNrIFFQdHJTdGFjawogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotdGVt
cGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtICZzdHJlYW0sIGNvbnN0IFFQdHJTdGFjazxUPiZzKQotewotICAgIHN0cmVhbSA8PCAiUVB0
clN0YWNrOiBbc2l6ZTogIiA8PCBzLmNvdW50KCkgPDwgIjsgaXRlbXM6ICI7Ci0KLSAgICBRUHRy
U3RhY2s8VD4gdG1wKHMpOwotCi0gICAgd2hpbGUgKCF0bXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHN0cmVhbSA8PCAqdG1wLnBvcCgpOwotCWlmICh0bXAuY291bnQoKSA+IDApIHsKLQkgICAgc3Ry
ZWFtIDw8ICIsICI7Ci0JfQotICAgIH0KLQotICAgIHN0cmVhbSA8PCAiXSI7Ci0KLSAgICByZXR1
cm4gc3RyZWFtOwotfQotCi0jZW5kaWYKLQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FQ
dHJWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dR
UHRyVmVjdG9yLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQKZGlmZiAtcCAtdSAtcjEuMjQg
V2ViQ29yZS9rd3EvS1dRUHRyVmVjdG9yLmgKLS0tIFdlYkNvcmUva3dxL0tXUVB0clZlY3Rvci5o
CTIwIE5vdiAyMDA0IDAyOjI0OjA4IC0wMDAwCTEuMjQKKysrIFdlYkNvcmUva3dxL0tXUVB0clZl
Y3Rvci5oCTExIE9jdCAyMDA1IDE2OjQxOjAzIC0wMDAwCkBAIC0zMSwxMCArMzEsNiBAQAogCiAj
aW5jbHVkZSAiS1dRVmVjdG9ySW1wbC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSNpbmNs
dWRlIDxvc3RyZWFtPgotI2VuZGlmCi0KIGNsYXNzIFFHVmVjdG9yIDogcHVibGljIFFQdHJDb2xs
ZWN0aW9uCiB7CiBwdWJsaWM6CkBAIC03MSwyNCArNjcsNCBAQCBwdWJsaWM6CiAgICAgS1dRVmVj
dG9ySW1wbCBpbXBsOwogfTsKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0KLXRlbXBsYXRlPGNs
YXNzIFQ+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmc3Ry
ZWFtLCBjb25zdCBRUHRyVmVjdG9yPFQ+ICZ2KQotewotICAgIHVpbnQgaSA9IDA7Ci0gICAgdWlu
dCBjb3VudCA9IHYuY291bnQoKTsKLQotICAgIHN0cmVhbSA8PCAiUVB0clZlY3RvcjogW3NpemU6
ICIgPDwgY291bnQgPDwgIjsgaXRlbXM6ICI7Ci0KLSAgICB3aGlsZShpIDwgY291bnQgKSB7Ci0J
c3RyZWFtIDw8ICp2W2ldIDw8ICIsICI7Ci0JKytpOwotICAgIH0KLQotICAgIHJldHVybiBzdHJl
YW0gPDwgIl0iOwotfQotCi0jZW5kaWYKLQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FS
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVJlY3Qu
aCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMwpkaWZmIC1wIC11IC1yMS4zMyBXZWJDb3JlL2t3
cS9LV1FSZWN0LmgKLS0tIFdlYkNvcmUva3dxL0tXUVJlY3QuaAkzMCBTZXAgMjAwNSAwNDowNDo1
NyAtMDAwMAkxLjMzCisrKyBXZWJDb3JlL2t3cS9LV1FSZWN0LmgJMTEgT2N0IDIwMDUgMTY6NDE6
MDMgLTAwMDAKQEAgLTk1LDEwICs5NSw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIG9wZXJhdG9y
IENHUmVjdCgpIGNvbnN0OwogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSAgICBmcmllbmQgc3Rk
Ojpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBRUmVjdCAmKTsKLSNl
bmRpZgotCiBwcml2YXRlOgogICAgIGludCB4cDsKICAgICBpbnQgeXA7CkluZGV4OiBXZWJDb3Jl
L2t3cS9LV1FSZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3
cS9LV1FSZWN0Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE3CmRpZmYgLXAgLXUgLXIxLjE3
IFdlYkNvcmUva3dxL0tXUVJlY3QubW0KLS0tIFdlYkNvcmUva3dxL0tXUVJlY3QubW0JMyBPY3Qg
MjAwNSAyMToxMzowOCAtMDAwMAkxLjE3CisrKyBXZWJDb3JlL2t3cS9LV1FSZWN0Lm1tCTExIE9j
dCAyMDA1IDE2OjQxOjAzIC0wMDAwCkBAIC0yMDgsMTAgKzIwOCwzIEBAIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBRUmVjdCAmYSwgY29uc3QgUVIKIHsKICAgICByZXR1cm4gIShhID09IGIpOwogfQot
Ci0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0gJm8sIGNvbnN0IFFSZWN0ICZyKQotewotICAgIHJldHVybiBvIDw8ICJRUmVjdDogW2xl
ZnQ6ICIgPDwgci5sZWZ0ICgpIDw8ICI7IHRvcDogIiA8PCByLnRvcCgpIDw8ICI7IHJpZ2h0OiAi
IDw8IHIucmlnaHQoKSA8PCAiOyBib3R0b206ICIgPDwgci5ib3R0b20oKSA8PCAiXSI7Ci19Ci0j
ZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRU2l6ZS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIx
CmRpZmYgLXAgLXUgLXIxLjIxIFdlYkNvcmUva3dxL0tXUVNpemUuaAotLS0gV2ViQ29yZS9rd3Ev
S1dRU2l6ZS5oCTMwIFNlcCAyMDA1IDA0OjA0OjU3IC0wMDAwCTEuMjEKKysrIFdlYkNvcmUva3dx
L0tXUVNpemUuaAkxMSBPY3QgMjAwNSAxNjo0MTowNCAtMDAwMApAQCAtMjMsNDkgKzIzLDM0IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFFTSVpFX0hfCi0jZGVmaW5lIFFTSVpF
X0hfCisjaWZuZGVmIFFTSVpFX0gKKyNkZWZpbmUgUVNJWkVfSAogCiAjaW5jbHVkZSAiS1dRRGVm
LmgiCiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNlbmRpZgot
Ci0jaWZkZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKLXR5cGVk
ZWYgc3RydWN0IENHU2l6ZSBOU1NpemU7Ci0jZWxzZQordHlwZWRlZiBzdHJ1Y3QgQ0dTaXplIENH
U2l6ZTsKKyNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMK
IHR5cGVkZWYgc3RydWN0IF9OU1NpemUgTlNTaXplOwogI2VuZGlmCi10eXBlZGVmIHN0cnVjdCBD
R1NpemUgQ0dTaXplOwogCiBjbGFzcyBRU2l6ZSB7CiBwdWJsaWM6Ci0gICAgUVNpemUoKTsKLSAg
ICBRU2l6ZShpbnQsaW50KTsKLSNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VP
TUVUUllfVFlQRVMKLSAgICBleHBsaWNpdCBRU2l6ZShjb25zdCBOU1NpemUgJik7Ci0jZW5kaWYK
LSAgICBleHBsaWNpdCBRU2l6ZShjb25zdCBDR1NpemUgJik7CisgICAgUVNpemUoKSA6IHcoLTEp
LCBoKC0xKSB7IH0KKyAgICBRU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIDogdyh3aWR0aCks
IGgoaGVpZ2h0KSB7IH0KIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIHcgPj0gMCAmJiBoID49IDA7IH0KICAgICBpbnQgd2lkdGgo
KSBjb25zdCB7IHJldHVybiB3OyB9CiAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGg7
IH0KICAgICB2b2lkIHNldFdpZHRoKGludCB3aWR0aCkgeyB3ID0gd2lkdGg7IH0KICAgICB2b2lk
IHNldEhlaWdodChpbnQgaGVpZ2h0KSB7IGggPSBoZWlnaHQ7IH0KICAgICBRU2l6ZSBleHBhbmRl
ZFRvKGNvbnN0IFFTaXplICYpIGNvbnN0OwogICAgIAotI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVT
X1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwotICAgIG9wZXJhdG9yIE5TU2l6ZSgpIGNvbnN0Owot
I2VuZGlmCisgICAgZXhwbGljaXQgUVNpemUoY29uc3QgQ0dTaXplICYpOwogICAgIG9wZXJhdG9y
IENHU2l6ZSgpIGNvbnN0OwogCi0gICAgZnJpZW5kIFFTaXplIG9wZXJhdG9yKyhjb25zdCBRU2l6
ZSAmLCBjb25zdCBRU2l6ZSAmKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFT
aXplICYsIGNvbnN0IFFTaXplICYpOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UVNpemUgJiwgY29uc3QgUVNpemUgJik7Ci0KLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotICAgIGZy
aWVuZCBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICYsIGNvbnN0IFFTaXpl
ICYpOworI2lmbmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwor
ICAgIGV4cGxpY2l0IFFTaXplKGNvbnN0IE5TU2l6ZSAmKTsKKyAgICBvcGVyYXRvciBOU1NpemUo
KSBjb25zdDsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNzMsNCArNTgsMTkgQEAgcHJpdmF0ZToK
ICAgICBpbnQgaDsKIH07CiAKK2lubGluZSBRU2l6ZSBvcGVyYXRvcisoY29uc3QgUVNpemUgJmEs
IGNvbnN0IFFTaXplICZiKQoreworICAgIHJldHVybiBRU2l6ZShhLndpZHRoKCkgKyBiLndpZHRo
KCksIGEuaGVpZ2h0KCkgKyBiLmhlaWdodCgpKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBRU2l6ZSAmYSwgY29uc3QgUVNpemUgJmIpCit7CisgICAgcmV0dXJuIGEud2lkdGgo
KSA9PSBiLndpZHRoKCkgJiYgYS5oZWlnaHQoKSA9PSBiLmhlaWdodCgpOworfQorCitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFFTaXplICZhLCBjb25zdCBRU2l6ZSAmYikKK3sKKyAgICBy
ZXR1cm4gYS53aWR0aCgpICE9IGIud2lkdGgoKSB8fCBhLmhlaWdodCgpICE9IGIuaGVpZ2h0KCk7
Cit9CisKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rd3EvS1dRU2l6ZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRU2l6ZS5tbSx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4xMQpkaWZmIC1wIC11IC1yMS4xMSBXZWJDb3JlL2t3cS9LV1FTaXplLm1tCi0tLSBX
ZWJDb3JlL2t3cS9LV1FTaXplLm1tCTMgT2N0IDIwMDUgMjE6MTM6MDkgLTAwMDAJMS4xMQorKysg
V2ViQ29yZS9rd3EvS1dRU2l6ZS5tbQkxMSBPY3QgMjAwNSAxNjo0MTowNCAtMDAwMApAQCAtMjYs
NjQgKzI2LDI5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW1wb3J0ICJLV1FTaXplLmgiCiAK
LVFTaXplOjpRU2l6ZSgpIDogdygtMSksIGgoLTEpCi17Ci19Ci0KLVFTaXplOjpRU2l6ZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpIDogdyh3aWR0aCksIGgoaGVpZ2h0KQotewotfQotCi0jaWZuZGVm
IE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCi1RU2l6ZTo6UVNpemUo
Y29uc3QgTlNTaXplICZzKSA6IHcoKGludClzLndpZHRoKSwgaCgoaW50KXMuaGVpZ2h0KQotewot
fQotI2VuZGlmCi0KLVFTaXplOjpRU2l6ZShjb25zdCBDR1NpemUgJnMpIDogdygoaW50KXMud2lk
dGgpLCBoKChpbnQpcy5oZWlnaHQpCi17Ci19Ci0KLWJvb2wgUVNpemU6OmlzVmFsaWQoKSBjb25z
dAotewotICAgIHJldHVybiB3ID49IDAgJiYgaCA+PSAwOwotfQotCiBRU2l6ZSBRU2l6ZTo6ZXhw
YW5kZWRUbyhjb25zdCBRU2l6ZSAmbykgY29uc3QKIHsKICAgICByZXR1cm4gUVNpemUodyA+IG8u
dyA/IHcgOiBvLncsIGggPiBvLmggPyBoIDogby5oKTsKIH0KIAotI2lmbmRlZiBOU0dFT01FVFJZ
X1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwotUVNpemU6Om9wZXJhdG9yIE5TU2l6ZSgp
IGNvbnN0CitRU2l6ZTo6UVNpemUoY29uc3QgQ0dTaXplICZzKSA6IHcoKGludClzLndpZHRoKSwg
aCgoaW50KXMuaGVpZ2h0KQogewotICAgIHJldHVybiBOU01ha2VTaXplKHcsIGgpOwogfQotI2Vu
ZGlmCiAKIFFTaXplOjpvcGVyYXRvciBDR1NpemUoKSBjb25zdAogewogICAgIHJldHVybiBDR1Np
emVNYWtlKHcsIGgpOwogfQogCi1RU2l6ZSBvcGVyYXRvcisoY29uc3QgUVNpemUgJmEsIGNvbnN0
IFFTaXplICZiKQotewotICAgIHJldHVybiBRU2l6ZShhLncgKyBiLncsIGEuaCArIGIuaCk7Ci19
CisjaWZuZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiAKLWJv
b2wgb3BlcmF0b3I9PShjb25zdCBRU2l6ZSAmYSwgY29uc3QgUVNpemUgJmIpCitRU2l6ZTo6UVNp
emUoY29uc3QgTlNTaXplICZzKSA6IHcoKGludClzLndpZHRoKSwgaCgoaW50KXMuaGVpZ2h0KQog
ewotICAgIHJldHVybiBhLncgPT0gYi53ICYmIGEuaCA9PSBiLmg7CiB9CiAKLWJvb2wgb3BlcmF0
b3IhPShjb25zdCBRU2l6ZSAmYSwgY29uc3QgUVNpemUgJmIpCitRU2l6ZTo6b3BlcmF0b3IgTlNT
aXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYS53ICE9IGIudyB8fCBhLmggIT0gYi5oOworICAg
IHJldHVybiBOU01ha2VTaXplKHcsIGgpOwogfQogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLXN0
ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm8sIGNvbnN0IFFTaXplICZzKQot
ewotICAgIHJldHVybiBvIDw8ICJRU2l6ZTogW3c6ICIgPDwgcy53aWR0aCgpIDw8ICI7IGg6ICIg
PDwgcy5oZWlnaHQoKSA8PCAiXSI7Ci19CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVZh
bHVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FW
YWx1ZUxpc3QuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNApkaWZmIC1wIC11IC1yMS4zNCBX
ZWJDb3JlL2t3cS9LV1FWYWx1ZUxpc3QuaAotLS0gV2ViQ29yZS9rd3EvS1dRVmFsdWVMaXN0LmgJ
MiBTZXAgMjAwNSAxMDowMzoyMCAtMDAwMAkxLjM0CisrKyBXZWJDb3JlL2t3cS9LV1FWYWx1ZUxp
c3QuaAkxMSBPY3QgMjAwNSAxNjo0MTowNCAtMDAwMApAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNs
dWRlICJLV1FEZWYuaCIKICNpbmNsdWRlICJLV1FWYWx1ZUxpc3RJbXBsLmgiCiAKLSNpZmRlZiBf
S1dRX0lPU1RSRUFNXwotI2luY2x1ZGUgPG9zdHJlYW0+Ci0jZW5kaWYKLQogdGVtcGxhdGUgPGNs
YXNzIFQ+IGNsYXNzIFFWYWx1ZUxpc3Q7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUVZhbHVl
TGlzdENvbnN0SXRlcmF0b3I7CiAKQEAgLTE0OSwyOCArMTQ1LDYgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBRVmFsdWVMaXN0PAogICAgIHJldHVybiBhLmltcGwuaXNFcXVhbChiLmlt
cGwsIFFWYWx1ZUxpc3Q8VD46Om5vZGVzRXF1YWwpOwogfQogCi0jaWZkZWYgX0tXUV9JT1NUUkVB
TV8KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwo
c3RkOjpvc3RyZWFtICZvLCBjb25zdCBRVmFsdWVMaXN0PFQ+JnApCi17Ci0gICAgbyA8PAotICAg
ICAgICAiUVZhbHVlTGlzdDogW3NpemU6ICIgPDwKLSAgICAgICAgKFFfVUlOVDMyKXAuY291bnQo
KSA8PAotICAgICAgICAiOyBpdGVtczogIjsKLSAgICAgICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0
b3I8VD4gaXQgPSBwLmJlZ2luKCk7Ci0gICAgICAgIHdoaWxlIChpdCAhPSBwLmVuZCgpKSB7Ci0g
ICAgICAgICAgICBvIDw8ICppdDsKLSAgICAgICAgICAgIGlmICgrK2l0ICE9IHAuZW5kKCkpIHsK
LSAgICAgICAgICAgICAgICBvIDw8ICIsICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgbyA8PCAiXSI7Ci0gICAgcmV0dXJuIG87Ci19Ci0KLSNlbmRpZgotCiAjZGVmaW5lIFEz
VmFsdWVMaXN0IFFWYWx1ZUxpc3QKICNkZWZpbmUgUTNWYWx1ZUxpc3RJdGVyYXRvciBRVmFsdWVM
aXN0SXRlcmF0b3IKICNkZWZpbmUgUTNWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yIFFWYWx1ZUxpc3RD
b25zdEl0ZXJhdG9yCg==
</data>
<flag name="review"
          id="733"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5154</attachid>
            <date>2005-12-19 10:54:54 -0800</date>
            <delta_ts>2005-12-19 11:06:35 -0800</delta_ts>
            <desc>another pass -- this patch tested on both gcc 3 and gcc 4</desc>
            <filename>OStreamMathCleanupPatch.txt</filename>
            <type>text/plain</type>
            <size>62745</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvbG9j
YWwvaG9tZS9jdnMvTGFieXJpbnRoL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZyx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4yNApkaWZmIC1wIC11IC1yMS4yNCBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VM
b2cKLS0tIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkyMDA1LzEyLzE2IDA4OjA0OjU4CTEuMjQK
KysrIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkyMDA1LzEyLzE5IDE4OjQ5OjE2CkBAIC0xLDMg
KzEsMTIgQEAKKzIwMDUtMTItMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6
Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyMworICAgICAgICAg
IHN0b3AgdXNpbmcgPG9zdHJlYW0+IGluIFdlYkNvcmUsIGVsaW1pbmF0aW5nIHRoZSA8Y21hdGg+
IHRyb3VibGVzIGl0IGNhdXNlcworCisgICAgICAgICoga3htbGNvcmUvQWx3YXlzSW5saW5lLmg6
IEFkZGVkLgorCiAyMDA1LTEyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9reG1sY29y
ZS9BbHdheXNJbmxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBBbHdheXNJbmxpbmUuaApkaWZm
IC1OIEphdmFTY3JpcHRHbHVlL2t4bWxjb3JlL0Fsd2F5c0lubGluZS5oCi0tLSBKYXZhU2NyaXB0
R2x1ZS9reG1sY29yZS9BbHdheXNJbmxpbmUuaAlUaHUgQXByIDExIDA3OjI1OjE1IDIwMDIKKysr
IEphdmFTY3JpcHRHbHVlL2t4bWxjb3JlL0Fsd2F5c0lubGluZS5oCU1vbiBEZWMgMTkgMTA6NDk6
MTYgMjAwNQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQWx3YXlzSW5s
aW5lLmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS45MTEKZGlmZiAtcCAtdSAtcjEuOTExIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwotLS0g
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCTE5IERlYyAyMDA1IDEwOjM4OjA2IC0wMDAwCTEuOTEx
CisrKyBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJMTkgRGVjIDIwMDUgMTg6NTE6MDUgLTAwMDAK
QEAgLTEsMyArMSwyOSBAQAorMjAwNS0xMi0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBm
aXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD00OTIzCisg
ICAgICAgICAgc3RvcCB1c2luZyA8b3N0cmVhbT4gaW4gV2ViQ29yZSwgZWxpbWluYXRpbmcgdGhl
IDxjbWF0aD4gdHJvdWJsZXMgaXQgY2F1c2VzCisKKyAgICAgICAgKiBranMvc2ltcGxlX251bWJl
ci5oOiBSZW1vdmVkIG1hbnkgdW5uZWNlc3NhcnkgaW5jbHVkZXMsIGluY2x1ZGluZworICAgICAg
ICB0aGUgPGNtYXRoPiBvbmUgdG8gd29yayBhcm91bmQgR0NDIGxpYnJhcnkgaGVhZGVyIGJ1Z3Mu
IFdlIG1heSBoYXZlIHRvCisgICAgICAgIGFkZCBzb21lIGluY2x1ZGVzIGVsc2V3aGVyZSBmb3Ig
cGxhdGZvcm1zIG90aGVyIHRoYW4gT1MgWCwgc2luY2Ugb3VyCisgICAgICAgIHByZWZpeCBoZWFk
ZXIgdGFrZXMgY2FyZSBvZiBzb21lIHRoaW5ncy4KKworICAgICAgICAqIGt4bWxjb3JlL0Fsd2F5
c0lubGluZS5oOiBBZGRlZC4gTm93IGNsaWVudHMgdGhhdCBkb24ndCBpbmNsdWRlCisgICAgICAg
IHNpbXBsZV9udW1iZXIuaCBjYW4gc3RpbGwgZ2V0IHRoZSBBTFdBWVNfSU5MSU5FIG1hY3JvLgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVk
IEFsd2F5c0lubGluZS5oLgorCisgICAgICAgICogYmluZGluZ3MvTlBfanNvYmplY3QuaDogUmVt
b3ZlZCBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBpbmNsdWRlcworICAgICAgICBhbmQgcmVtb3ZlZCBD
LXNwZWNpZmljIHN0dWZmIGZyb20gdGhpcyBDKystb25seSBoZWFkZXIuCisgICAgICAgICogYmlu
ZGluZ3Mvam5pL2puaV9qc29iamVjdC5oOiBSZW1vdmVkIGEgbG90IG9mIHVubmVjZXNzYXJ5IGlu
Y2x1ZGVzCisgICAgICAgIGFuZCBkaWQgc29tZSByZWZvcm1hdHRpbmcuCisgICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9vYmpjX3J1bnRpbWUuaDogIFJlbW92ZWQgYW4gdW5uZWNlc3NhcnkgaW5jbHVk
ZS4KKyAgICAgICAgKiBiaW5kaW5ncy9ydW50aW1lLmg6IFJlbW92ZWQgc29tZSB1bm5lZWRlZCBp
bmNsdWRlcy4gUmVmb3JtYXR0ZWQuCisgICAgICAgICogYmluZGluZ3MvcnVudGltZS5jcHA6IFVw
ZGF0ZWQgdG8gY29tcGlsZSB3aXRoIGhlYWRlciBjaGFuZ2VzLAorICAgICAgICBpbmNsdWRpbmcg
YSBsb3Qgb2YgcmVmb3JtYXR0aW5nLgorICAgICAgICAqIGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0
Lmg6IFJlbW92ZWQgYW4gdW5uZWNlc3NhcnkgaW5jbHVkZS4KKwogMjAwNS0xMi0xMyAgTWFjaWVq
IFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
IGFuZCBBZGVsZQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaix2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4yOApkaWZmIC1wIC11IC1yMS4yOCBKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCi0tLSBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTEzIERlYyAyMDA1IDExOjA2OjAz
IC0wMDAwCTEuMjgKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJMTkgRGVjIDIwMDUgMTg6NTE6MDggLTAwMDAKQEAgLTE4Niw2ICsxODYs
NyBAQAogCQk5MzJGNUJFQTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMy
RjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsK
IAkJOTMyRkMxMUQwODI0QTZBMzAwNUIzQzc1IC8qIGNyZWF0ZV9oYXNoX3RhYmxlIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY5MkE4NTQwMjU1NTk3RDAx
RkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzNUY2OUZFMDgyNDUwNTcwMDNEMUE0NSAvKiBkZnRhYmxl
cy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0MTcy
MEUwMzlFMDhCOTAwNThCRkVCIC8qIGRmdGFibGVzLmMgKi87IH07CisJCTkzQUE0Rjc4MDk1NzI1
MUYwMDg0QjNBNyAvKiBBbHdheXNJbmxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUE0Rjc3MDk1NzI1MUYwMDg0QjNBNyAvKiBBbHdheXNJbmxp
bmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
M0RFM0U0MjA4NjhEQ0FCMDBCODg5N0MgLyogZ3JhbW1hci55IGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzQTM0OTkwMzhBRTdDNjAwODYzNUNFIC8qIGdy
YW1tYXIueSAqLzsgfTsKIAkJOTNFMjZCQ0EwOEIxNTExOTAwRjg1MjI2IC8qIHBjcmVfb3JkMnV0
ZjguYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTI2
QkM5MDhCMTUxMTkwMEY4NTIyNiAvKiBwY3JlX29yZDJ1dGY4LmMgKi87IH07CiAJCTkzRTI2QkNF
MDhCMTUxMjYwMEY4NTIyNiAvKiBwY3JlX3VjcF9maW5kY2hhci5jIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjZCQ0QwOEIxNTEyNjAwRjg1MjI2IC8q
IHBjcmVfdWNwX2ZpbmRjaGFyLmMgKi87IH07CkBAIC0zODMsNiArMzg0LDcgQEAKIAkJOTM3NEQz
QTcwMzhEOUQ3NDAwODYzNUNFIC8qIHNjb3BlX2NoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IHNjb3BlX2NoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzNzREM0E4MDM4RDlENzQwMDg2MzVDRSAvKiBzY29wZV9jaGFpbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzY29wZV9jaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzODc3MkU1MDM4QkZFMTkwMDg2MzVDRSAvKiBhcnJheV9pbnN0YW5j
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBhcnJheV9pbnN0YW5jZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0FBNEY3NzA5NTcyNTFGMDA4NEIzQTcgLyog
QWx3YXlzSW5saW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsd2F5c0lu
bGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0UyNkJDOTA4QjE1MTE5MDBG
ODUyMjYgLyogcGNyZV9vcmQydXRmOC5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1l
ID0gcGNyZV9vcmQydXRmOC5jOyBwYXRoID0gcGNyZS9wY3JlX29yZDJ1dGY4LmM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTI2QkNEMDhCMTUxMjYwMEY4NTIyNiAvKiBwY3JlX3Vj
cF9maW5kY2hhci5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gcGNyZV91Y3Bf
ZmluZGNoYXIuYzsgcGF0aCA9IHBjcmUvcGNyZV91Y3BfZmluZGNoYXIuYzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNFMjZCRDAwOEIxNTEzODAwRjg1MjI2IC8qIHBjcmVfdHJ5X2Zs
aXBwZWQuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHBjcmVfdHJ5X2ZsaXBw
ZWQuYzsgcGF0aCA9IHBjcmUvcGNyZV90cnlfZmxpcHBlZC5jOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjc5LDYgKzY4MSw3IEBACiAJCQkJNjVFMjE3QjgwOEU3RUVDQzAwMjNFNUY2
IC8qIEFzc2VydGlvbnMubW0gKi8sCiAJCQkJNjVFMjE3QjkwOEU3RUVDQzAwMjNFNUY2IC8qIEZh
c3RNYWxsb2MuY3BwICovLAogCQkJCTY1RTIxN0JBMDhFN0VFQ0MwMDIzRTVGNiAvKiBGYXN0TWFs
bG9jLmggKi8sCisJCQkJOTNBQTRGNzcwOTU3MjUxRjAwODRCM0E3IC8qIEFsd2F5c0lubGluZS5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBreG1sY29yZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC04NDgsNiArODUxLDcgQEAKIAkJCQk2NUM2NDdCNDA5M0VGOEQ2MDAyMkMzODAgLyog
UmVmUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTgwRjc5NjA5NDA3MDU2MDA4MkMyMTkgLyog
UGFzc1JlZlB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU3RUVCQzAwOTRFNDQ1RTAwOEM5QzdC
IC8qIEhhc2hDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0FBNEY3ODA5NTcyNTFG
MDA4NEIzQTcgLyogQWx3YXlzSW5saW5lLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNwpkaWZmIC1wIC11IC1yMS43IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pz
b2JqZWN0LmgKLS0tIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmgJMTEgRGVj
IDIwMDUgMDI6MDU6MzEgLTAwMDAJMS43CisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9OUF9q
c29iamVjdC5oCTE5IERlYyAyMDA1IDE4OjUxOjA4IC0wMDAwCkBAIC0yMiwzMyArMjIsMjkgQEAK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KKwogI2lmbmRlZiBfTlBfSlNP
QkpFQ1RfSAogI2RlZmluZSBfTlBfSlNPQkpFQ1RfSAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvbnBydW50aW1lLmg+CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZV9vYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9ydW50aW1lX3Jvb3QuaD4KLSAKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJu
ICJDIiB7Ci0jZW5kaWYKK25hbWVzcGFjZSBLSlMgeworICAgIGNsYXNzIEpTT2JqZWN0OworICAg
IG5hbWVzcGFjZSBCaW5kaW5ncyB7CisgICAgICAgIGNsYXNzIFJvb3RPYmplY3Q7CisgICAgfQor
fQogCiBleHRlcm4gTlBDbGFzcyAqTlBTY3JpcHRPYmplY3RDbGFzczsKIAotdHlwZWRlZiBzdHJ1
Y3QKK3N0cnVjdCBKYXZhU2NyaXB0T2JqZWN0CiB7CiAgICAgTlBPYmplY3Qgb2JqZWN0OwogICAg
IEtKUzo6SlNPYmplY3QgKmltcDsKICAgICBjb25zdCBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0
ICpvcmlnaW5FeGVjdXRpb25Db250ZXh0OwogICAgIGNvbnN0IEtKUzo6QmluZGluZ3M6OlJvb3RP
YmplY3QgKmV4ZWN1dGlvbkNvbnRleHQ7Ci19IEphdmFTY3JpcHRPYmplY3Q7Cit9OwogCiBOUE9i
amVjdCAqX05QTl9DcmVhdGVTY3JpcHRPYmplY3QgKE5QUCBucHAsIEtKUzo6SlNPYmplY3QgKmlt
cCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqb3JpZ2luRXhlY3V0aW9uQ29udGV4
dCwgY29uc3QgS0pTOjpCaW5kaW5nczo6Um9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCk7CiAK
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KICNlbmRpZgpJbmRleDogSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvcnVudGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjIzCmRpZmYgLXAgLXUgLXIxLjIzIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUu
Y3BwCi0tLSBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNwcAkxMSBEZWMgMjAwNSAw
MjowNTozMSAtMDAwMAkxLjIzCisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lLmNw
cAkxOSBEZWMgMjAwNSAxODo1MTowOCAtMDAwMApAQCAtMjIsMjYgKzIyLDI0IEBACiAgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSA8dmFsdWUuaD4KLSNpbmNsdWRlIDxpbnRlcnByZXRlci5oPgogCi0jaW5jbHVkZSA8cnVu
dGltZV9vYmplY3QuaD4KLSNpbmNsdWRlIDxqbmlfaW5zdGFuY2UuaD4KLSNpbmNsdWRlIDxvYmpj
X2luc3RhbmNlLmg+Ci0jaW5jbHVkZSA8Y19pbnN0YW5jZS5oPgotI2luY2x1ZGUgPE5QX2pzb2Jq
ZWN0Lmg+Ci0jaW5jbHVkZSA8am5pX2pzb2JqZWN0Lmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAicnVudGltZS5oIgogCi11c2luZyBuYW1lc3BhY2UgS0pTOwotdXNpbmcgbmFtZXNw
YWNlIEtKUzo6QmluZGluZ3M7CisjaW5jbHVkZSAiSlNMb2NrLmgiCisjaW5jbHVkZSAiTlBfanNv
YmplY3QuaCIKKyNpbmNsdWRlICJjX2luc3RhbmNlLmgiCisjaW5jbHVkZSAiam5pX2luc3RhbmNl
LmgiCisjaW5jbHVkZSAib2JqY19pbnN0YW5jZS5oIgorI2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0
LmgiCiAKK25hbWVzcGFjZSBLSlMgeyBuYW1lc3BhY2UgQmluZGluZ3MgewogICAgIAotdm9pZCBN
ZXRob2RMaXN0OjphZGRNZXRob2QgKE1ldGhvZCAqYU1ldGhvZCkKK3ZvaWQgTWV0aG9kTGlzdDo6
YWRkTWV0aG9kKE1ldGhvZCAqYU1ldGhvZCkKIHsKICAgICBNZXRob2QgKipfbmV3TWV0aG9kcyA9
IG5ldyBNZXRob2QgKltfbGVuZ3RoICsgMV07CiAgICAgaWYgKF9sZW5ndGggPiAwKSB7Ci0gICAg
ICAgIG1lbWNweSAoX25ld01ldGhvZHMsIF9tZXRob2RzLCBzaXplb2YoTWV0aG9kICopICogX2xl
bmd0aCk7CisgICAgICAgIG1lbWNweShfbmV3TWV0aG9kcywgX21ldGhvZHMsIHNpemVvZihNZXRo
b2QgKikgKiBfbGVuZ3RoKTsKICAgICAgICAgZGVsZXRlIFtdIF9tZXRob2RzOwogICAgIH0KICAg
ICBfbWV0aG9kcyA9IF9uZXdNZXRob2RzOwpAQCAtNTMsOSArNTEsOSBAQCB1bnNpZ25lZCBpbnQg
TWV0aG9kTGlzdDo6bGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gX2xlbmd0aDsKIH0KIAotTWV0
aG9kICpNZXRob2RMaXN0OjptZXRob2RBdCAodW5zaWduZWQgaW50IGluZGV4KSBjb25zdAorTWV0
aG9kICpNZXRob2RMaXN0OjptZXRob2RBdCh1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0CiB7Ci0g
ICAgYXNzZXJ0IChpbmRleCA8IF9sZW5ndGgpOworICAgIGFzc2VydChpbmRleCA8IF9sZW5ndGgp
OwogICAgIHJldHVybiBfbWV0aG9kc1tpbmRleF07CiB9CiAgICAgCkBAIC02NCw3ICs2Miw4IEBA
IE1ldGhvZExpc3Q6On5NZXRob2RMaXN0KCkKICAgICBkZWxldGUgW10gX21ldGhvZHM7CiB9CiAK
LU1ldGhvZExpc3Q6Ok1ldGhvZExpc3QgKGNvbnN0IE1ldGhvZExpc3QgJm90aGVyKSB7CitNZXRo
b2RMaXN0OjpNZXRob2RMaXN0KGNvbnN0IE1ldGhvZExpc3QgJm90aGVyKQorewogICAgIF9sZW5n
dGggPSBvdGhlci5fbGVuZ3RoOwogICAgIF9tZXRob2RzID0gbmV3IE1ldGhvZCAqW19sZW5ndGhd
OwogICAgIGlmIChfbGVuZ3RoID4gMCkKQEAgLTgxLDcgKzgwLDcgQEAgTWV0aG9kTGlzdCAmTWV0
aG9kTGlzdDo6b3BlcmF0b3I9KGNvbnN0IAogICAgIF9sZW5ndGggPSBvdGhlci5fbGVuZ3RoOwog
ICAgIF9tZXRob2RzID0gbmV3IE1ldGhvZCAqW19sZW5ndGhdOwogICAgIGlmIChfbGVuZ3RoID4g
MCkKLSAgICAgICAgbWVtY3B5IChfbWV0aG9kcywgb3RoZXIuX21ldGhvZHMsIHNpemVvZihNZXRo
b2QgKikgKiBfbGVuZ3RoKTsKKyAgICAgICAgbWVtY3B5KF9tZXRob2RzLCBvdGhlci5fbWV0aG9k
cywgc2l6ZW9mKE1ldGhvZCAqKSAqIF9sZW5ndGgpOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpA
QCAtODksMzIgKzg4LDM0IEBAIE1ldGhvZExpc3QgJk1ldGhvZExpc3Q6Om9wZXJhdG9yPShjb25z
dCAKIAogc3RhdGljIEtKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBfRGlkRXhlY3V0ZUZ1bmN0aW9u
OwogCi12b2lkIEluc3RhbmNlOjpzZXREaWRFeGVjdXRlRnVuY3Rpb24gKEtKU0RpZEV4ZWN1dGVG
dW5jdGlvblB0ciBmdW5jKSB7IF9EaWRFeGVjdXRlRnVuY3Rpb24gPSBmdW5jOyB9Ci1LSlNEaWRF
eGVjdXRlRnVuY3Rpb25QdHIgSW5zdGFuY2U6OmRpZEV4ZWN1dGVGdW5jdGlvbiAoKSB7IHJldHVy
biBfRGlkRXhlY3V0ZUZ1bmN0aW9uOyB9Cit2b2lkIEluc3RhbmNlOjpzZXREaWRFeGVjdXRlRnVu
Y3Rpb24oS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGZ1bmMpIHsgX0RpZEV4ZWN1dGVGdW5jdGlv
biA9IGZ1bmM7IH0KK0tKU0RpZEV4ZWN1dGVGdW5jdGlvblB0ciBJbnN0YW5jZTo6ZGlkRXhlY3V0
ZUZ1bmN0aW9uKCkgeyByZXR1cm4gX0RpZEV4ZWN1dGVGdW5jdGlvbjsgfQogCi1KU1ZhbHVlICpJ
bnN0YW5jZTo6Z2V0VmFsdWVPZkZpZWxkIChLSlM6OkV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRmll
bGQgKmFGaWVsZCkgY29uc3QgeyAgCi0gICAgcmV0dXJuIGFGaWVsZC0+dmFsdWVGcm9tSW5zdGFu
Y2UgKGV4ZWMsIHRoaXMpOworSlNWYWx1ZSAqSW5zdGFuY2U6OmdldFZhbHVlT2ZGaWVsZChFeGVj
U3RhdGUgKmV4ZWMsIGNvbnN0IEZpZWxkICphRmllbGQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFG
aWVsZC0+dmFsdWVGcm9tSW5zdGFuY2UoZXhlYywgdGhpcyk7CiB9CiAKLXZvaWQgSW5zdGFuY2U6
OnNldFZhbHVlT2ZGaWVsZCAoS0pTOjpFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IEZpZWxkICphRmll
bGQsIEpTVmFsdWUgKmFWYWx1ZSkgY29uc3QgeyAgCi0gICAgYUZpZWxkLT5zZXRWYWx1ZVRvSW5z
dGFuY2UgKGV4ZWMsIHRoaXMsIGFWYWx1ZSk7Cit2b2lkIEluc3RhbmNlOjpzZXRWYWx1ZU9mRmll
bGQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBGaWVsZCAqYUZpZWxkLCBKU1ZhbHVlICphVmFsdWUp
IGNvbnN0Cit7CisgICAgYUZpZWxkLT5zZXRWYWx1ZVRvSW5zdGFuY2UoZXhlYywgdGhpcywgYVZh
bHVlKTsKIH0KIAotSW5zdGFuY2UgKkluc3RhbmNlOjpjcmVhdGVCaW5kaW5nRm9yTGFuZ3VhZ2VJ
bnN0YW5jZSAoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0YW5jZSwg
Y29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4dCkKK0luc3RhbmNlICpJbnN0YW5jZTo6
Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdl
LCB2b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4
dCkKIHsKICAgICBJbnN0YW5jZSAqbmV3SW5zdGFuY2UgPSAwOwogICAgIAogICAgIHN3aXRjaCAo
bGFuZ3VhZ2UpIHsKIAljYXNlIEluc3RhbmNlOjpKYXZhTGFuZ3VhZ2U6IHsKLQkgICAgbmV3SW5z
dGFuY2UgPSBuZXcgQmluZGluZ3M6OkphdmFJbnN0YW5jZSAoKGpvYmplY3QpbmF0aXZlSW5zdGFu
Y2UsIGV4ZWN1dGlvbkNvbnRleHQpOworCSAgICBuZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6
SmF2YUluc3RhbmNlKChqb2JqZWN0KW5hdGl2ZUluc3RhbmNlLCBleGVjdXRpb25Db250ZXh0KTsK
IAkgICAgYnJlYWs7CiAJfQogCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogewot
CSAgICBuZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6T2JqY0luc3RhbmNlICgoc3RydWN0IG9i
amNfb2JqZWN0ICopbmF0aXZlSW5zdGFuY2UpOworCSAgICBuZXdJbnN0YW5jZSA9IG5ldyBCaW5k
aW5nczo6T2JqY0luc3RhbmNlKChzdHJ1Y3Qgb2JqY19vYmplY3QgKiluYXRpdmVJbnN0YW5jZSk7
CiAJICAgIGJyZWFrOwogCX0KIAljYXNlIEluc3RhbmNlOjpDTGFuZ3VhZ2U6IHsKLQkgICAgbmV3
SW5zdGFuY2UgPSBuZXcgQmluZGluZ3M6OkNJbnN0YW5jZSAoKE5QT2JqZWN0ICopbmF0aXZlSW5z
dGFuY2UpOworCSAgICBuZXdJbnN0YW5jZSA9IG5ldyBCaW5kaW5nczo6Q0luc3RhbmNlKChOUE9i
amVjdCAqKW5hdGl2ZUluc3RhbmNlKTsKIAkgICAgYnJlYWs7CiAJfQogCWRlZmF1bHQ6CkBAIC0x
MjIsMjAgKzEyMywyMCBAQCBJbnN0YW5jZSAqSW5zdGFuY2U6OmNyZWF0ZUJpbmRpbmdGb3JMYW5n
CiAgICAgfQogCiAgICAgaWYgKG5ld0luc3RhbmNlKQotCW5ld0luc3RhbmNlLT5zZXRFeGVjdXRp
b25Db250ZXh0IChleGVjdXRpb25Db250ZXh0KTsKKwluZXdJbnN0YW5jZS0+c2V0RXhlY3V0aW9u
Q29udGV4dChleGVjdXRpb25Db250ZXh0KTsKIAkKICAgICByZXR1cm4gbmV3SW5zdGFuY2U7CiB9
CiAKLUpTT2JqZWN0ICpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdCAoQmluZGluZ0xhbmd1
YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqZXhl
Y3V0aW9uQ29udGV4dCkKK0pTT2JqZWN0ICpJbnN0YW5jZTo6Y3JlYXRlUnVudGltZU9iamVjdChC
aW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIHZvaWQgKm5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290
T2JqZWN0ICpleGVjdXRpb25Db250ZXh0KQogewogICAgIEluc3RhbmNlICppbnRlcmZhY2VPYmpl
Y3QgPSBJbnN0YW5jZTo6Y3JlYXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UobGFuZ3VhZ2Us
ICh2b2lkICopbmF0aXZlSW5zdGFuY2UsIGV4ZWN1dGlvbkNvbnRleHQpOwogICAgIAogICAgIEpT
TG9jayBsb2NrOwotICAgIHJldHVybiBuZXcgUnVudGltZU9iamVjdEltcChpbnRlcmZhY2VPYmpl
Y3QsdHJ1ZSk7CisgICAgcmV0dXJuIG5ldyBSdW50aW1lT2JqZWN0SW1wKGludGVyZmFjZU9iamVj
dCwgdHJ1ZSk7CiB9CiAKLXZvaWQgKkluc3RhbmNlOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9y
VmFsdWUgKEV4ZWNTdGF0ZSAqZXhlYywgQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCBKU09iamVj
dCAqdmFsdWUsIGNvbnN0IFJvb3RPYmplY3QgKm9yaWdpbiwgY29uc3QgUm9vdE9iamVjdCAqY3Vy
cmVudCkKK3ZvaWQgKkluc3RhbmNlOjpjcmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUoRXhl
Y1N0YXRlICpleGVjLCBCaW5kaW5nTGFuZ3VhZ2UgbGFuZ3VhZ2UsIEpTT2JqZWN0ICp2YWx1ZSwg
Y29uc3QgUm9vdE9iamVjdCAqb3JpZ2luLCBjb25zdCBSb290T2JqZWN0ICpjdXJyZW50KQogewog
ICAgIHZvaWQgKnJlc3VsdCA9IDA7CiAgICAgCkBAIC0xNDYsMTEgKzE0NywxMSBAQCB2b2lkICpJ
bnN0YW5jZTo6Y3JlYXRlTGFuZ3VhZ2VJbnN0YW5jZUZvCiAgICAgCiAgICAgc3dpdGNoIChsYW5n
dWFnZSkgewogCWNhc2UgSW5zdGFuY2U6Ok9iamVjdGl2ZUNMYW5ndWFnZTogewotCSAgICByZXN1
bHQgPSBjcmVhdGVPYmpjSW5zdGFuY2VGb3JWYWx1ZSAodmFsdWUsIG9yaWdpbiwgY3VycmVudCk7
CisJICAgIHJlc3VsdCA9IGNyZWF0ZU9iamNJbnN0YW5jZUZvclZhbHVlKHZhbHVlLCBvcmlnaW4s
IGN1cnJlbnQpOwogCSAgICBicmVhazsKIAl9CiAJY2FzZSBJbnN0YW5jZTo6Q0xhbmd1YWdlOiB7
Ci0JICAgIHJlc3VsdCA9IF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0ICgwLCBpbXAsIG9yaWdpbiwg
Y3VycmVudCk7CisJICAgIHJlc3VsdCA9IF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0KDAsIGltcCwg
b3JpZ2luLCBjdXJyZW50KTsKIAkgICAgYnJlYWs7CiAJfQogCWNhc2UgSW5zdGFuY2U6OkphdmFM
YW5ndWFnZTogewpAQCAtMTY1LDE3ICsxNjYsMTkgQEAgdm9pZCAqSW5zdGFuY2U6OmNyZWF0ZUxh
bmd1YWdlSW5zdGFuY2VGbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUluc3RhbmNlOjpJbnN0
YW5jZSAoY29uc3QgSW5zdGFuY2UgJm90aGVyKSAKK0luc3RhbmNlOjpJbnN0YW5jZShjb25zdCBJ
bnN0YW5jZSAmb3RoZXIpIAogewotICAgIHNldEV4ZWN1dGlvbkNvbnRleHQgKG90aGVyLmV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci19OworICAgIHNldEV4ZWN1dGlvbkNvbnRleHQob3RoZXIuZXhlY3V0
aW9uQ29udGV4dCgpKTsKK30KIAogSW5zdGFuY2UgJkluc3RhbmNlOjpvcGVyYXRvcj0oY29uc3Qg
SW5zdGFuY2UgJm90aGVyKQogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0
dXJuICp0aGlzOwogCi0gICAgc2V0RXhlY3V0aW9uQ29udGV4dCAob3RoZXIuZXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICBzZXRFeGVjdXRpb25Db250ZXh0KG90aGVyLmV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgCiAgICAgcmV0dXJuICp0aGlzOwogfQorCit9IH0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM0
CmRpZmYgLXAgLXUgLXIxLjM0IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuaAotLS0g
SmF2YVNjcmlwdENvcmUvYmluZGluZ3MvcnVudGltZS5oCTExIERlYyAyMDA1IDAyOjA1OjMxIC0w
MDAwCTEuMzQKKysrIEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWUuaAkxOSBEZWMgMjAw
NSAxODo1MTowOCAtMDAwMApAQCAtMjIsMTQgKzIyLDE3IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCi0jaWZuZGVmIF9SVU5USU1FX0hfCi0jZGVmaW5lIF9SVU5USU1F
X0hfCiAKLSNpbmNsdWRlICJsaXN0LmgiCi0jaW5jbHVkZSAib2JqZWN0LmgiCisjaWZuZGVmIEpB
VkFTQ1JJUFRDT1JFX0JJTkRJTkdTX1JVTlRJTUVfSAorI2RlZmluZSBKQVZBU0NSSVBUQ09SRV9C
SU5ESU5HU19SVU5USU1FX0gKKwogI2luY2x1ZGUgInZhbHVlLmgiCiAKIG5hbWVzcGFjZSBLSlMg
IHsKKworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIExpc3Q7CisKIG5hbWVzcGFjZSBCaW5kaW5n
cyB7CiAKIGNsYXNzIEluc3RhbmNlOwpAQCAtNTMsNyArNTYsNyBAQCBwdWJsaWM6CiBjbGFzcyBD
b25zdHJ1Y3RvcgogewogcHVibGljOgotICAgIHZpcnR1YWwgUGFyYW1ldGVyICpwYXJhbWV0ZXJB
dChpbnQgaSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUGFyYW1ldGVyKiBwYXJhbWV0ZXJBdChp
bnQgaSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIH5Db25zdHJ1Y3RvcigpIHt9CkBAIC02MiwzNiArNjUsMzQgQEAg
cHVibGljOgogY2xhc3MgRmllbGQKIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIg
Km5hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUnVudGltZVR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAotICAgIHZp
cnR1YWwgSlNWYWx1ZSAqdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlICosIGNvbnN0IEluc3Rh
bmNlICopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVUb0luc3RhbmNlKEV4
ZWNTdGF0ZSAqLCBjb25zdCBJbnN0YW5jZSAqLCBKU1ZhbHVlICopIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIEpTVmFsdWUqIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3Rh
bmNlKikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhl
Y1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKikgY29uc3QgPSAwOwogCiAgICAgdmly
dHVhbCB+RmllbGQoKSB7fQogfTsKIAotCiBjbGFzcyBNZXRob2RMaXN0CiB7CiBwdWJsaWM6CiAg
ICAgTWV0aG9kTGlzdCgpIDogX21ldGhvZHMoMCksIF9sZW5ndGgoMCkge30KICAgICAKLSAgICB2
b2lkIGFkZE1ldGhvZChNZXRob2QgKmFNZXRob2QpOworICAgIHZvaWQgYWRkTWV0aG9kKE1ldGhv
ZCopOwogICAgIHVuc2lnbmVkIGludCBsZW5ndGgoKSBjb25zdDsKLSAgICBNZXRob2QgKm1ldGhv
ZEF0KHVuc2lnbmVkIGludCBpbmRleCkgY29uc3Q7CisgICAgTWV0aG9kKiBtZXRob2RBdCh1bnNp
Z25lZCBpbnQgaW5kZXgpIGNvbnN0OwogICAgIAogICAgIH5NZXRob2RMaXN0KCk7CiAgICAgCi0g
ICAgTWV0aG9kTGlzdChjb25zdCBNZXRob2RMaXN0ICZvdGhlcik7Ci0gICAgTWV0aG9kTGlzdCAm
b3BlcmF0b3I9KGNvbnN0IE1ldGhvZExpc3QgJm90aGVyKTsKKyAgICBNZXRob2RMaXN0KGNvbnN0
IE1ldGhvZExpc3QmKTsKKyAgICBNZXRob2RMaXN0JiBvcGVyYXRvcj0oY29uc3QgTWV0aG9kTGlz
dCYpOwogCiBwcml2YXRlOgogICAgIE1ldGhvZCAqKl9tZXRob2RzOwogICAgIHVuc2lnbmVkIGlu
dCBfbGVuZ3RoOwogfTsKIAotCiBjbGFzcyBNZXRob2QKIHsKIHB1YmxpYzoKQEAgLTEwNywxOSAr
MTA4LDE5IEBAIGNsYXNzIENsYXNzCiBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyICpu
YW1lKCkgY29uc3QgPSAwOwogICAgIAotICAgIHZpcnR1YWwgTWV0aG9kTGlzdCBtZXRob2RzTmFt
ZWQoY29uc3QgY2hhciAqbmFtZSwgSW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBNZXRob2RMaXN0IG1ldGhvZHNOYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5j
ZSopIGNvbnN0ID0gMDsKICAgICAKICAgICB2aXJ0dWFsIENvbnN0cnVjdG9yICpjb25zdHJ1Y3Rv
ckF0KGludCBpKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQgbnVtQ29uc3RydWN0b3JzKCkg
Y29uc3QgPSAwOwogICAgIAotICAgIHZpcnR1YWwgRmllbGQgKmZpZWxkTmFtZWQoY29uc3QgY2hh
ciAqbmFtZSwgSW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGaWVs
ZCAqZmllbGROYW1lZChjb25zdCBjaGFyICpuYW1lLCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKIAot
ICAgIHZpcnR1YWwgSlNWYWx1ZSAqZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlICosIEluc3RhbmNl
ICosIGNvbnN0IElkZW50aWZpZXIgJikgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQorICAgIHZp
cnR1YWwgSlNWYWx1ZSogZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiwgSW5zdGFuY2UqLCBjb25z
dCBJZGVudGlmaWVyJikgeyByZXR1cm4ganNVbmRlZmluZWQoKTsgfQogICAgIAogICAgIHZpcnR1
YWwgfkNsYXNzKCkge30KIH07CiAKLXR5cGVkZWYgdm9pZCAoKktKU0RpZEV4ZWN1dGVGdW5jdGlv
blB0cikoRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCAqcm9vdE9iamVjdCk7Cit0eXBlZGVmIHZv
aWQgKCpLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiByb290
T2JqZWN0KTsKIAogY2xhc3MgSW5zdGFuY2UKIHsKQEAgLTEzMyw5ICsxMzQsOSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgc2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKEtKU0RpZEV4ZWN1dGVGdW5j
dGlvblB0ciBmdW5jKTsKICAgICBzdGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGRpZEV4
ZWN1dGVGdW5jdGlvbigpOwogICAgIAotICAgIHN0YXRpYyBJbnN0YW5jZSAqY3JlYXRlQmluZGlu
Z0Zvckxhbmd1YWdlSW5zdGFuY2UoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRp
dmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOwotICAgIHN0YXRpYyB2b2lkICpj
cmVhdGVMYW5ndWFnZUluc3RhbmNlRm9yVmFsdWUoRXhlY1N0YXRlICpleGVjLCBCaW5kaW5nTGFu
Z3VhZ2UgbGFuZ3VhZ2UsIEpTT2JqZWN0ICp2YWx1ZSwgY29uc3QgUm9vdE9iamVjdCAqb3JpZ2lu
LCBjb25zdCBSb290T2JqZWN0ICpjdXJyZW50KTsKLSAgICBzdGF0aWMgSlNPYmplY3QgKmNyZWF0
ZVJ1bnRpbWVPYmplY3QoQmluZGluZ0xhbmd1YWdlIGxhbmd1YWdlLCB2b2lkICpuYXRpdmVJbnN0
YW5jZSwgY29uc3QgUm9vdE9iamVjdCAqciA9IDApOworICAgIHN0YXRpYyBJbnN0YW5jZSogY3Jl
YXRlQmluZGluZ0Zvckxhbmd1YWdlSW5zdGFuY2UoQmluZGluZ0xhbmd1YWdlLCB2b2lkKiBuYXRp
dmVJbnN0YW5jZSwgY29uc3QgUm9vdE9iamVjdCogPSAwKTsKKyAgICBzdGF0aWMgdm9pZCogY3Jl
YXRlTGFuZ3VhZ2VJbnN0YW5jZUZvclZhbHVlKEV4ZWNTdGF0ZSosIEJpbmRpbmdMYW5ndWFnZSwg
SlNPYmplY3QqIHZhbHVlLCBjb25zdCBSb290T2JqZWN0KiBvcmlnaW4sIGNvbnN0IFJvb3RPYmpl
Y3QqIGN1cnJlbnQpOworICAgIHN0YXRpYyBKU09iamVjdCogY3JlYXRlUnVudGltZU9iamVjdChC
aW5kaW5nTGFuZ3VhZ2UsIHZvaWQqIG5hdGl2ZUluc3RhbmNlLCBjb25zdCBSb290T2JqZWN0KiA9
IDApOwogCiAgICAgSW5zdGFuY2UoKSA6IF9leGVjdXRpb25Db250ZXh0KDApIHt9CiAgICAgCkBA
IC0xNTEsMTggKzE1MiwxOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBDbGFzcyAqZ2V0
Q2xhc3MoKSBjb25zdCA9IDA7CiAgICAgCi0gICAgdmlydHVhbCBKU1ZhbHVlICpnZXRWYWx1ZU9m
RmllbGQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBGaWVsZCAqYUZpZWxkKSBjb25zdDsKLSAgICB2
aXJ0dWFsIEpTVmFsdWUgKmdldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUgKmV4ZWMs
IGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5LCBUeXBlIGhpbnQpIGNvbnN0IHsgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVPZkZpZWxkKEV4ZWNTdGF0
ZSAqZXhlYywgY29uc3QgRmllbGQgKmFGaWVsZCwgSlNWYWx1ZSAqYVZhbHVlKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEpTVmFsdWUqIGdldFZhbHVlT2ZGaWVsZChFeGVjU3RhdGUqLCBjb25zdCBGaWVs
ZCopIGNvbnN0OworICAgIHZpcnR1YWwgSlNWYWx1ZSogZ2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxk
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBUeXBlIGhpbnQpIGNvbnN0
IHsgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVPZkZp
ZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IEZpZWxkKiwgSlNWYWx1ZSopIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1NldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUg
KmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5LCBKU1ZhbHVlICphVmFsdWUpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlT2ZVbmRlZmluZWRGaWVsZChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgSlNWYWx1ZSopIHt9CiAgICAgCi0gICAgdmlydHVhbCBK
U1ZhbHVlICppbnZva2VNZXRob2QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBNZXRob2RMaXN0ICZt
ZXRob2QsIGNvbnN0IExpc3QgJmFyZ3MpID0gMDsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgKmludm9r
ZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBMaXN0ICZhcmdzKSA9IDA7Cisg
ICAgdmlydHVhbCBKU1ZhbHVlKiBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgY29uc3QgTWV0aG9k
TGlzdCYsIGNvbnN0IExpc3QmIGFyZ3MpID0gMDsKKyAgICB2aXJ0dWFsIEpTVmFsdWUqIGludm9r
ZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiwgY29uc3QgTGlzdCYgYXJncykgPSAwOwogICAgIAot
ICAgIHZpcnR1YWwgSlNWYWx1ZSAqZGVmYXVsdFZhbHVlKFR5cGUgaGludCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSlNWYWx1ZSogZGVmYXVsdFZhbHVlKFR5cGUgaGludCkgY29uc3QgPSAwOwog
ICAgIAotICAgIHZpcnR1YWwgSlNWYWx1ZSAqdmFsdWVPZigpIGNvbnN0IHsgcmV0dXJuIGpzU3Ry
aW5nKGdldENsYXNzKCktPm5hbWUoKSk7IH0KKyAgICB2aXJ0dWFsIEpTVmFsdWUqIHZhbHVlT2Yo
KSBjb25zdCB7IHJldHVybiBqc1N0cmluZyhnZXRDbGFzcygpLT5uYW1lKCkpOyB9CiAgICAgCiAg
ICAgdm9pZCBzZXRFeGVjdXRpb25Db250ZXh0KGNvbnN0IFJvb3RPYmplY3QgKnIpIHsgX2V4ZWN1
dGlvbkNvbnRleHQgPSByOyB9CiAgICAgY29uc3QgUm9vdE9iamVjdCAqZXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIF9leGVjdXRpb25Db250ZXh0OyB9CkBAIC0xNzAsMTkgKzE3MSwx
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zdGFuY2UoKSB7fQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgY29uc3QgUm9vdE9iamVjdCAqX2V4ZWN1dGlvbkNvbnRleHQ7CisgICAgY29uc3QgUm9vdE9i
amVjdCogX2V4ZWN1dGlvbkNvbnRleHQ7CiB9OwogCiBjbGFzcyBBcnJheQogewogcHVibGljOgot
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbmRleCwg
SlNWYWx1ZSAqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBKU1ZhbHVlICp2YWx1ZUF0KEV4ZWNT
dGF0ZSAqLCB1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWx1ZUF0KEV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSopIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIEpTVmFsdWUqIHZhbHVlQXQoRXhlY1N0YXRlICosIHVuc2lnbmVkIGluZGV4
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0TGVuZ3RoKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgfkFycmF5KCkge30KIH07CiAKLWNvbnN0IGNoYXIgKnNpZ25hdHVy
ZUZvclBhcmFtZXRlcnMoY29uc3QgTGlzdCAmYUxpc3QpOworY29uc3QgY2hhciAqc2lnbmF0dXJl
Rm9yUGFyYW1ldGVycyhjb25zdCBMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCiAK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL3J1bnRpbWVfb2Jq
ZWN0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTkKZGlmZiAtcCAtdSAtcjEuMTkgSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvcnVudGltZV9vYmplY3QuaAotLS0gSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvcnVudGltZV9vYmplY3QuaAkxMyBEZWMgMjAwNSAyMToyNDo0OCAtMDAwMAkxLjE5Cisr
KyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9ydW50aW1lX29iamVjdC5oCTE5IERlYyAyMDA1IDE4
OjUxOjA4IC0wMDAwCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEtKU19SVU5USU1FX09CSkVD
VF9ICiAKICNpbmNsdWRlICJydW50aW1lLmgiCisjaW5jbHVkZSAib2JqZWN0LmgiCiAKIG5hbWVz
cGFjZSBLSlMgewogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX2pzb2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2JpbmRp
bmdzL2puaS9qbmlfanNvYmplY3QuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAg
LXUgLXIxLjUgSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvam5pL2puaV9qc29iamVjdC5oCi0tLSBK
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX2pzb2JqZWN0LmgJMTEgRGVjIDIwMDUgMDI6
MDU6MzYgLTAwMDAJMS41CisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9qbmkvam5pX2pzb2Jq
ZWN0LmgJMTkgRGVjIDIwMDUgMTg6NTE6MDggLTAwMDAKQEAgLTIyLDEzICsyMiwxMSBAQAogICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwotI2lmbmRlZiBfSk5JX0pTT0JKRUNU
X0hfCi0jZGVmaW5lIF9KTklfSlNPQkpFQ1RfSF8KIAotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CisjaWZuZGVmIEpBVkFTQ1JJUFRDT1JFX0JJTkRJTkdTX0pOSV9K
U09CSkVDVF9ICisjZGVmaW5lIEpBVkFTQ1JJUFRDT1JFX0JJTkRJTkdTX0pOSV9KU09CSkVDVF9I
CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL29iamVjdC5oPgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAKICNpbmNsdWRlIDxKYXZhVk0vam5pLmg+CiAKQEAgLTM4LDYgKzM2LDEwIEBA
CiAKIG5hbWVzcGFjZSBLSlMgewogCitjbGFzcyBMaXN0OworY2xhc3MgSlNPYmplY3Q7CitjbGFz
cyBKU1ZhbHVlOworCiBuYW1lc3BhY2UgQmluZGluZ3MgewogCiBjbGFzcyBSb290T2JqZWN0OwpA
QCAtNjcsOSArNjksNiBAQCBzdHJ1Y3QgSlNPYmplY3RDYWxsQ29udGV4dAogICAgIGp2YWx1ZSBy
ZXN1bHQ7CiB9OwogCi0KLXR5cGVkZWYgc3RydWN0IEpTT2JqZWN0Q2FsbENvbnRleHQgSlNPYmpl
Y3RDYWxsQ29udGV4dDsKLQogY2xhc3MgSmF2YUpTT2JqZWN0CiB7CiBwdWJsaWM6CkBAIC04Niwx
MSArODUsMTEgQEAgcHVibGljOgogICAgIGpzdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICB2
b2lkIGZpbmFsaXplKCkgY29uc3Q7CiAgICAgCi0gICAgc3RhdGljIGp2YWx1ZSBpbnZva2UgKEpT
T2JqZWN0Q2FsbENvbnRleHQgKmNvbnRleHQpOworICAgIHN0YXRpYyBqdmFsdWUgaW52b2tlKEpT
T2JqZWN0Q2FsbENvbnRleHQqKTsKIAotICAgIGpvYmplY3QgY29udmVydFZhbHVlVG9KT2JqZWN0
IChKU1ZhbHVlICp2YWx1ZSkgY29uc3Q7Ci0gICAgSlNWYWx1ZSAqY29udmVydEpPYmplY3RUb1Zh
bHVlIChqb2JqZWN0IHRoZU9iamVjdCkgY29uc3Q7Ci0gICAgTGlzdCBsaXN0RnJvbUpBcnJheShq
b2JqZWN0QXJyYXkgakFycmF5KSBjb25zdDsKKyAgICBqb2JqZWN0IGNvbnZlcnRWYWx1ZVRvSk9i
amVjdChKU1ZhbHVlKikgY29uc3Q7CisgICAgSlNWYWx1ZSogY29udmVydEpPYmplY3RUb1ZhbHVl
KGpvYmplY3QpIGNvbnN0OworICAgIExpc3QgbGlzdEZyb21KQXJyYXkoam9iamVjdEFycmF5KSBj
b25zdDsKICAgICAKIHByaXZhdGU6CiAgICAgY29uc3QgUm9vdE9iamVjdCAqX3Jvb3Q7CkBAIC0x
MDUsMTcgKzEwNCwxNyBAQCBwcml2YXRlOgogZXh0ZXJuICJDIiB7CiAKIC8vIEZ1bmN0aW9ucyBj
YWxsZWQgZnJvbSB0aGUgSmF2YSBWTSB3aGVuIG1ha2luZyBjYWxscyB0byB0aGUgSmF2YUpTT2Jq
ZWN0IGNsYXNzLgotamxvbmcgS0pTX0pTQ3JlYXRlTmF0aXZlSlNPYmplY3QgKEpOSUVudiAqZW52
LCBqY2xhc3MgY2xhenosIGpzdHJpbmcganVybCwgamxvbmcgbmF0aXZlSGFuZGxlLCBqYm9vbGVh
biBjdHgpOwotdm9pZCBLSlNfSlNPYmplY3RfSlNGaW5hbGl6ZSAoSk5JRW52ICplbnYsIGpjbGFz
cyBqc0NsYXNzLCBqbG9uZyBuYXRpdmVKU09iamVjdCk7Ci1qb2JqZWN0IEtKU19KU09iamVjdF9K
U09iamVjdENhbGwgKEpOSUVudiAqZW52LCBqY2xhc3MganNDbGFzcywgamxvbmcgbmF0aXZlSlNP
YmplY3QsIGpzdHJpbmcganVybCwganN0cmluZyBtZXRob2ROYW1lLCBqb2JqZWN0QXJyYXkgYXJn
cywgamJvb2xlYW4gY3R4KTsKLWpvYmplY3QgS0pTX0pTT2JqZWN0X0pTT2JqZWN0RXZhbCAoSk5J
RW52ICplbnYsIGpjbGFzcyBqc0NsYXNzLCBqbG9uZyBuYXRpdmVKU09iamVjdCwganN0cmluZyBq
dXJsLCBqc3RyaW5nIGpzY3JpcHQsIGpib29sZWFuIGN0eCk7Ci1qb2JqZWN0IEtKU19KU09iamVj
dF9KU09iamVjdEdldE1lbWJlciAoSk5JRW52ICplbnYsIGpjbGFzcyBqc0NsYXNzLCBqbG9uZyBu
YXRpdmVKU09iamVjdCwganN0cmluZyBqdXJsLCBqc3RyaW5nIGpuYW1lLCBqYm9vbGVhbiBjdHgp
Owotdm9pZCBLSlNfSlNPYmplY3RfSlNPYmplY3RTZXRNZW1iZXIgKEpOSUVudiAqZW52LCBqY2xh
c3MganNDbGFzcywgamxvbmcgbmF0aXZlSlNPYmplY3QsIGpzdHJpbmcganVybCwganN0cmluZyBq
bmFtZSwgam9iamVjdCB2YWx1ZSwgamJvb2xlYW4gY3R4KTsKLXZvaWQgS0pTX0pTT2JqZWN0X0pT
T2JqZWN0UmVtb3ZlTWVtYmVyIChKTklFbnYgKmVudiwgamNsYXNzIGpzQ2xhc3MsIGpsb25nIG5h
dGl2ZUpTT2JqZWN0LCBqc3RyaW5nIGp1cmwsIGpzdHJpbmcgam5hbWUsIGpib29sZWFuIGN0eCk7
Ci1qb2JqZWN0IEtKU19KU09iamVjdF9KU09iamVjdEdldFNsb3QgKEpOSUVudiAqZW52LCBqY2xh
c3MganNDbGFzcywgamxvbmcgbmF0aXZlSlNPYmplY3QsIGpzdHJpbmcganVybCwgamludCBqaW5k
ZXgsIGpib29sZWFuIGN0eCk7Ci12b2lkIEtKU19KU09iamVjdF9KU09iamVjdFNldFNsb3QgKEpO
SUVudiAqZW52LCBqY2xhc3MganNDbGFzcywgamxvbmcgbmF0aXZlSlNPYmplY3QsIGpzdHJpbmcg
anVybCwgamludCBqaW5kZXgsIGpvYmplY3QgdmFsdWUsIGpib29sZWFuIGN0eCk7Ci1qc3RyaW5n
IEtKU19KU09iamVjdF9KU09iamVjdFRvU3RyaW5nIChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6
LCBqbG9uZyBuYXRpdmVKU09iamVjdCk7CitqbG9uZyBLSlNfSlNDcmVhdGVOYXRpdmVKU09iamVj
dChKTklFbnYqLCBqY2xhc3MsIGpzdHJpbmcganVybCwgamxvbmcgbmF0aXZlSGFuZGxlLCBqYm9v
bGVhbiBjdHgpOwordm9pZCBLSlNfSlNPYmplY3RfSlNGaW5hbGl6ZShKTklFbnYqLCBqY2xhc3Ms
IGpsb25nIG5hdGl2ZUpTT2JqZWN0KTsKK2pvYmplY3QgS0pTX0pTT2JqZWN0X0pTT2JqZWN0Q2Fs
bChKTklFbnYqLCBqY2xhc3MsIGpsb25nIG5hdGl2ZUpTT2JqZWN0LCBqc3RyaW5nIGp1cmwsIGpz
dHJpbmcgbWV0aG9kTmFtZSwgam9iamVjdEFycmF5IGFyZ3MsIGpib29sZWFuIGN0eCk7Citqb2Jq
ZWN0IEtKU19KU09iamVjdF9KU09iamVjdEV2YWwoSk5JRW52KiwgamNsYXNzLCBqbG9uZyBuYXRp
dmVKU09iamVjdCwganN0cmluZyBqdXJsLCBqc3RyaW5nIGpzY3JpcHQsIGpib29sZWFuIGN0eCk7
Citqb2JqZWN0IEtKU19KU09iamVjdF9KU09iamVjdEdldE1lbWJlcihKTklFbnYqLCBqY2xhc3Ms
IGpsb25nIG5hdGl2ZUpTT2JqZWN0LCBqc3RyaW5nIGp1cmwsIGpzdHJpbmcgam5hbWUsIGpib29s
ZWFuIGN0eCk7Cit2b2lkIEtKU19KU09iamVjdF9KU09iamVjdFNldE1lbWJlcihKTklFbnYqLCBq
Y2xhc3MsIGpsb25nIG5hdGl2ZUpTT2JqZWN0LCBqc3RyaW5nIGp1cmwsIGpzdHJpbmcgam5hbWUs
IGpvYmplY3QgdmFsdWUsIGpib29sZWFuIGN0eCk7Cit2b2lkIEtKU19KU09iamVjdF9KU09iamVj
dFJlbW92ZU1lbWJlcihKTklFbnYqLCBqY2xhc3MsIGpsb25nIG5hdGl2ZUpTT2JqZWN0LCBqc3Ry
aW5nIGp1cmwsIGpzdHJpbmcgam5hbWUsIGpib29sZWFuIGN0eCk7Citqb2JqZWN0IEtKU19KU09i
amVjdF9KU09iamVjdEdldFNsb3QoSk5JRW52KiwgamNsYXNzLCBqbG9uZyBuYXRpdmVKU09iamVj
dCwganN0cmluZyBqdXJsLCBqaW50IGppbmRleCwgamJvb2xlYW4gY3R4KTsKK3ZvaWQgS0pTX0pT
T2JqZWN0X0pTT2JqZWN0U2V0U2xvdChKTklFbnYqLCBqY2xhc3MsIGpsb25nIG5hdGl2ZUpTT2Jq
ZWN0LCBqc3RyaW5nIGp1cmwsIGppbnQgamluZGV4LCBqb2JqZWN0IHZhbHVlLCBqYm9vbGVhbiBj
dHgpOworanN0cmluZyBLSlNfSlNPYmplY3RfSlNPYmplY3RUb1N0cmluZyhKTklFbnYqLCBqY2xh
c3MsIGpsb25nIG5hdGl2ZUpTT2JqZWN0KTsKIAogfQogCi0jZW5kaWYKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCisjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2JpbmRpbmdzL29iamMv
b2JqY19ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL29iamMvb2JqY19ydW50aW1lLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MTYKZGlmZiAtcCAtdSAtcjEuMTYgSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvb2JqYy9vYmpjX3J1
bnRpbWUuaAotLS0gSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvb2JqYy9vYmpjX3J1bnRpbWUuaAkx
MSBEZWMgMjAwNSAwMjowNTozOSAtMDAwMAkxLjE2CisrKyBKYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9vYmpjL29iamNfcnVudGltZS5oCTE5IERlYyAyMDA1IDE4OjUxOjA4IC0wMDAwCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KIAog
I2luY2x1ZGUgInJ1bnRpbWUuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCisjaW5jbHVkZSAib2Jq
ZWN0LmgiCiAKICNpbmNsdWRlICJvYmpjX2hlYWRlci5oIgogCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvc2ltcGxlX251bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZh
U2NyaXB0Q29yZS9ranMvc2ltcGxlX251bWJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIx
CmRpZmYgLXAgLXUgLXIxLjIxIEphdmFTY3JpcHRDb3JlL2tqcy9zaW1wbGVfbnVtYmVyLmgKLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9zaW1wbGVfbnVtYmVyLmgJMTEgRGVjIDIwMDUgMDI6MDU6NDgg
LTAwMDAJMS4yMQorKysgSmF2YVNjcmlwdENvcmUva2pzL3NpbXBsZV9udW1iZXIuaAkxOSBEZWMg
MjAwNSAxODo1MTowOCAtMDAwMApAQCAtMjIsMjcgKzIyLDggQEAKICNpZm5kZWYgS0pTX1NJTVBM
RV9OVU1CRVJfSAogI2RlZmluZSBLSlNfU0lNUExFX05VTUJFUl9ICiAKLS8vIFdlIGluY2x1ZGUg
dGhlc2UgaGVhZGVycyBoZXJlIGJlY2F1c2Ugc2ltcGxlX251bWJlci5oIGlzIHRoZSBtb3N0IGxv
dy1sZXZlbCBoZWFkZXIgd2UgaGF2ZS4KLSNpbmNsdWRlIDxmbG9hdC5oPgotI2luY2x1ZGUgPG1h
dGguaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotLy8gV29y
a2Fyb3VuZCBmb3IgYSBidWcgaW4gR0NDIGxpYnJhcnkgaGVhZGVycy4KLS8vIFdlJ2QgcHJlZmVy
IHRvIGp1c3QgdXNlIG1hdGguaC4KLSNpZiAhV0lOMzIKLSNpbmNsdWRlIDxjbWF0aD4KLXVzaW5n
IHN0ZDo6aXNmaW5pdGU7Ci11c2luZyBzdGQ6OmlzaW5mOwotdXNpbmcgc3RkOjppc25hbjsKLXVz
aW5nIHN0ZDo6c2lnbmJpdDsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9f
R05VQ19fID4gMykKLSNkZWZpbmUgQUxXQVlTX0lOTElORSBfX2F0dHJpYnV0ZV9fICgoYWx3YXlz
X2lubGluZSkpCi0jZWxzZQotI2RlZmluZSBBTFdBWVNfSU5MSU5FIGlubGluZQotI2VuZGlmCisj
aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSAia3htbGNvcmUvQWx3YXlzSW5saW5lLmgiCiAK
IG5hbWVzcGFjZSBLSlMgewogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9BbHdheXNJ
bmxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9BbHdh
eXNJbmxpbmUuaApkaWZmIC1OIEphdmFTY3JpcHRDb3JlL2t4bWxjb3JlL0Fsd2F5c0lubGluZS5o
Ci0tLSBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9BbHdheXNJbmxpbmUuaAkxIEphbiAxOTcwIDAw
OjAwOjAwIC0wMDAwCisrKyBKYXZhU2NyaXB0Q29yZS9reG1sY29yZS9BbHdheXNJbmxpbmUuaAkx
OSBEZWMgMjAwNSAxODo1MTowOSAtMDAwMApAQCAtMCwwICsxLDI4IEBACisvKgorICogIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzCisgKiAgQ29weXJpZ2h0IChDKSAyMDA1
IEFwcGxlIENvbXB1dGVyLCBJbmMKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0ZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBBTFdBWVNfSU5MSU5F
CisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID4gMykKKyNkZWZpbmUgQUxXQVlT
X0lOTElORSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKQorI2Vsc2UKKyNkZWZp
bmUgQUxXQVlTX0lOTElORSBpbmxpbmUKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9DaGFuZ2VMb2cs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTY1CmRpZmYgLXAgLXUgLXIxLjU2NSBXZWJDb3JlL0No
YW5nZUxvZwotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJMTkgRGVjIDIwMDUgMTA6MzE6NTcgLTAwMDAJ
MS41NjUKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCTE5IERlYyAyMDA1IDE4OjUyOjE0IC0wMDAwCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMDUtMTItMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4
IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyMworICAg
ICAgICAgIHN0b3AgdXNpbmcgPG9zdHJlYW0+IGluIFdlYkNvcmUsIGVsaW1pbmF0aW5nIHRoZSA8
Y21hdGg+IHRyb3VibGVzIGl0IGNhdXNlcworCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMv
a3htbGNvcmUvQWx3YXlzSW5saW5lLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVQcmVmaXgu
aDogUmVtb3ZlZCB0aGUgdXNlIG9mIDxvc3RyZWFtPi4KKworICAgICAgICAqIGt3cS9LV1FEZWYu
aDogUmVtb3ZlZCBub3ctdW51c2VkIFFfSU5UNjQsIFFfSU5UMTYsIFFfVUlOVDE2LCBxUm91bmQs
IGFuZCBfS1dRX0lPU1RSRUFNXy4KKworICAgICAgICAqIGt3cS9LV1FLSFRNTFBhcnQuaDogUmVt
b3ZlZCBzb21lIHVubmVlZGVkIGhlYWRlcnMgYW5kIGFkZGVkIGZvcndhcmQtZGVjbGFyYXRpb25z
IG9mIGNsYXNzZXMKKyAgICAgICAgaW5zdGVhZC4gQ29ycmVjdGVkIHNvbWUgaW5jb3JyZWN0IG1l
bWJlciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgICAgICAgICoga3dxL0tXUUtIVE1MUGFydC5t
bTogQWRkZWQgYSBub3ctbmVlZGVkIGhlYWRlci4KKworICAgICAgICAqIGtodG1sL2VjbWEva2pz
X3dpbmRvdy5jcHA6IFJlbW92ZWQgdGhlIDxjbWF0aD4gd29ya2Fyb3VuZC4KKyAgICAgICAgKiBr
aHRtbC9yZW5kZXJpbmcvYmlkaS5jcHA6IEFkZGVkIGluY2x1ZGUgb2YgQWx3YXlzSW5saW5lLmgg
YW5kIHJlbW92ZWQgYQorICAgICAgICBsb3Qgb2YgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCisgICAg
ICAgICoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXNpbWFnZS5jcHA6IFJlbW92ZWQgdGhl
IDxjbWF0aD4gd29ya2Fyb3VuZC4KKyAgICAgICAgKiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2lt
YWdlLmNwcDogUmVtb3ZlZCB0aGUgPGNtYXRoPiB3b3JrYXJvdW5kLgorICAgICAgICAqIGtodG1s
L3JlbmRlcmluZy9yZW5kZXJfdGV4dC5jcHA6IEFkZGVkIGluY2x1ZGUgb2YgQWx3YXlzSW5saW5l
LmggYW5kIHJlbW92ZWQgYQorICAgICAgICBsb3Qgb2YgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCisK
KyAgICAgICAgKiBrc3ZnMi9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHA6IChLRE9NOjpDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVNWR1Byb3BlcnR5KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
QW5pbWF0ZUNvbG9yRWxlbWVudEltcGwuY3BwOiAoU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGw6
OmNhbGN1bGF0ZUNvbG9yKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnRJbXBsLmNwcDogKFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50SW1wbDo6aGFuZGxl
VGltZXJFdmVudCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnRJbXBs
LmNwcDogKFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsOjpjbG9zZVJlbmRlcmVyKToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50SW1wbC5jcHA6IChTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnRJbXBsOjpidWlsZEdyYWRpZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNwcDogKFNWR1BhdHRlcm5FbGVtZW50SW1wbDo6bm90aWZ5
QXR0cmlidXRlQ2hhbmdlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50SW1wbC5jcHA6IChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnRJbXBsOjpidWlsZEdyYWRp
ZW50KToKKyAgICAgICAgUmVwbGFjZWQgdXNlIG9mIHFSb3VuZCB3aXRoIHVzZSBvZiBscm91bmRm
IG9yIGxyb3VuZCBhcyBhcHByb3ByaWF0ZS4KKworICAgICAgICAqIGt3cS9LV1FDU3RyaW5nLmg6
CisgICAgICAgICoga3dxL0tXUUNTdHJpbmcubW06CisgICAgICAgICoga3dxL0tXUURhdGVUaW1l
Lmg6CisgICAgICAgICoga3dxL0tXUURhdGVUaW1lLm1tOgorICAgICAgICAqIGt3cS9LV1FNYXAu
aDoKKyAgICAgICAgKiBrd3EvS1dRTWVtQXJyYXkuaDoKKyAgICAgICAgKiBrd3EvS1dRUG9pbnQu
bW06CisgICAgICAgICoga3dxL0tXUVBvaW50QXJyYXkuaDoKKyAgICAgICAgKiBrd3EvS1dRUHRy
TGlzdC5oOgorICAgICAgICAqIGt3cS9LV1FQdHJTdGFjay5oOgorICAgICAgICAqIGt3cS9LV1FQ
dHJWZWN0b3IuaDoKKyAgICAgICAgKiBrd3EvS1dRUmVjdC5oOgorICAgICAgICAqIGt3cS9LV1FS
ZWN0Lm1tOgorICAgICAgICAqIGt3cS9LV1FTaXplLmg6CisgICAgICAgICoga3dxL0tXUVNpemUu
bW06CisgICAgICAgICoga3dxL0tXUVZhbHVlTGlzdC5oOgorICAgICAgICBSZW1vdmVkIF9LV1Ff
SU9TVFJFQU1fIGNvZGUgdGhhdCB3YXMgdXNlZCBhdCBvbmUgdGltZSBmb3IgdW5pdCB0ZXN0cywg
YnV0IGlzIG5vdyB1bm5lZWRlZCwKKyAgICAgICAgYW5kIHJlcXVpcmVzIDxvc3RyZWFtPi4KKwog
MjAwNS0xMi0xNyAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAg
IFJ1YmJlciBzdGFtcGVkIGJ5IEVyaWMuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmVQcmVmaXguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9XZWJDb3JlUHJlZml4Lmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcKZGlmZiAtcCAtdSAtcjEuMTcgV2ViQ29yZS9XZWJDb3Jl
UHJlZml4LmgKLS0tIFdlYkNvcmUvV2ViQ29yZVByZWZpeC5oCTIxIE5vdiAyMDA1IDA0OjAxOjQ4
IC0wMDAwCTEuMTcKKysrIFdlYkNvcmUvV2ViQ29yZVByZWZpeC5oCTE5IERlYyAyMDA1IDE4OjUy
OjE0IC0wMDAwCkBAIC0yNiwxMCArMjYsNiBAQAogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVk
ZSA8bmV3PgogCi0jaWZuZGVmIE5ERUJVRwotI2luY2x1ZGUgPG9zdHJlYW0+Ci0jZW5kaWYKLQog
Ly8gV29yayBhcm91bmQgYnVnIDM1NTMzMDkgYnkgcmUtaW5jbHVkaW5nIDxjdHlwZS5oPi4KICNp
bmNsdWRlIDxjY3R5cGU+CiAjZGVmaW5lIGlzYWxudW0oYykgICAgICBfX2lzdHlwZSgoYyksIChf
Q1RZUEVfQXxfQ1RZUEVfRCkpCkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2t4bWxj
b3JlL0Fsd2F5c0lubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFdlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMva3htbGNvcmUvQWx3YXlzSW5saW5lLmgKZGlmZiAtTiBXZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL2t4bWxjb3JlL0Fsd2F5c0lubGluZS5oCi0tLSBXZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2t4bWxjb3JlL0Fsd2F5c0lubGluZS5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAK
KysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva3htbGNvcmUvQWx3YXlzSW5saW5lLmgJMTkg
RGVjIDIwMDUgMTg6NTI6MTQgLTAwMDAKQEAgLTAsMCArMSBAQAorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvQWx3YXlzSW5saW5lLmg+CkluZGV4OiBXZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRv
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvZWNtYS9r
anNfd2luZG93LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMDIKZGlmZiAtcCAtdSAtcjEu
MjAyIFdlYkNvcmUva2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAotLS0gV2ViQ29yZS9raHRtbC9l
Y21hL2tqc193aW5kb3cuY3BwCTE2IERlYyAyMDA1IDIxOjIxOjI3IC0wMDAwCTEuMjAyCisrKyBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJMTkgRGVjIDIwMDUgMTg6NTI6MTYgLTAw
MDAKQEAgLTcxLDEzICs3MSw2IEBACiAjaW5jbHVkZSAiY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5o
IgogI2luY2x1ZGUgIm1pc2Mvc2hhcmVkLmgiCiAKLS8vIE11c3QgaW5jbHVkZSA8Y21hdGg+IGlu
c3RlYWQgb2YgPG1hdGguaD4gYmVjYXVzZSBvZiBhIGJ1ZyBpbiB0aGUKLS8vIGdjYyAzLjMgbGli
cmFyeSB2ZXJzaW9uIG9mIDxtYXRoLmg+IHdoZXJlIGlmIHlvdSBpbmNsdWRlIGJvdGgKLS8vIDxj
bWF0aD4gYW5kIDxtYXRoLmg+IHRoZSBtYWNyb3MgbmVjZXNzYXJ5IGZvciBmdW5jdGlvbnMgbGlr
ZQotLy8gaXNuYW4gYXJlIG5vdCBkZWZpbmVkLgotI2luY2x1ZGUgPGNtYXRoPgotdXNpbmcgc3Rk
Ojppc25hbjsKLQogdXNpbmcgbmFtZXNwYWNlIERPTTsKIHVzaW5nIG5hbWVzcGFjZSBFdmVudE5h
bWVzOwogCkluZGV4OiBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9iaWRpLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvYmlkaS5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYzCmRpZmYgLXAgLXUgLXIxLjE2MyBXZWJDb3JlL2todG1s
L3JlbmRlcmluZy9iaWRpLmNwcAotLS0gV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvYmlkaS5jcHAJ
MTggRGVjIDIwMDUgMjI6NTU6MzQgLTAwMDAJMS4xNjMKKysrIFdlYkNvcmUva2h0bWwvcmVuZGVy
aW5nL2JpZGkuY3BwCTE5IERlYyAyMDA1IDE4OjUyOjE5IC0wMDAwCkBAIC0yMCwyMiArMjAsMTkg
QEAKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICoKICAqLworCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiYmlkaS5oIgorCiAjaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIK
LSNpbmNsdWRlICJyZW5kZXJfYmxvY2suaCIKLSNpbmNsdWRlICJyZW5kZXJfdGV4dC5oIgorI2lu
Y2x1ZGUgImtodG1sdmlldy5oIgorI2luY2x1ZGUgImt4bWxjb3JlL0Fsd2F5c0lubGluZS5oIgog
I2luY2x1ZGUgInJlbmRlcl9hcmVuYS5oIgorI2luY2x1ZGUgInJlbmRlcl9ibG9jay5oIgogI2lu
Y2x1ZGUgInJlbmRlcl9jYW52YXMuaCIKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKLSNpbmNsdWRl
ICJ4bWwvZG9tX2RvY2ltcGwuaCIKLSNpbmNsdWRlICJtaXNjL3NoYXJlZC5oIgotCi0jaW5jbHVk
ZSAia2RlYnVnLmgiCi0jaW5jbHVkZSAicWRhdGV0aW1lLmgiCi0jaW5jbHVkZSAicWZvbnRtZXRy
aWNzLmgiCisjaW5jbHVkZSAicmVuZGVyX3RleHQuaCIKIAotdXNpbmcgRE9NOjpBdG9taWNTdHJp
bmc7Cit1c2luZyBuYW1lc3BhY2UgRE9NOwogCiBuYW1lc3BhY2Uga2h0bWwgewogCkluZGV4OiBX
ZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfY2FudmFzaW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfY2FudmFz
aW1hZ2UuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIyCmRpZmYgLXAgLXUgLXIxLjIyIFdl
YkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXNpbWFnZS5jcHAKLS0tIFdlYkNvcmUv
a2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52YXNpbWFnZS5jcHAJMTYgRGVjIDIwMDUgMDA6MDg6
MzEgLTAwMDAJMS4yMgorKysgV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX2NhbnZhc2lt
YWdlLmNwcAkxOSBEZWMgMjAwNSAxODo1MjoxOSAtMDAwMApAQCAtMzgsMTIgKzM4LDYgQEAKICNp
bmNsdWRlICJ4bWwvZG9tMl9ldmVudHNpbXBsLmgiCiAjaW5jbHVkZSAiaHRtbC9odG1sX2RvY3Vt
ZW50aW1wbC5oIgogCi0vLyBNdXN0IGluY2x1ZGUgPGNtYXRoPiBpbnN0ZWFkIG9mIDxtYXRoLmg+
IGJlY2F1c2Ugb2YgYSBidWcgaW4gdGhlCi0vLyBnY2MgMy4zIGxpYnJhcnkgdmVyc2lvbiBvZiA8
bWF0aC5oPiB3aGVyZSBpZiB5b3UgaW5jbHVkZSBib3RoCi0vLyA8Y21hdGg+IGFuZCA8bWF0aC5o
PiB0aGUgbWFjcm9zIG5lY2Vzc2FyeSBmb3IgZnVuY3Rpb25zIGxpa2UKLS8vIGlzbmFuIGFyZSBu
b3QgZGVmaW5lZC4KLSNpbmNsdWRlIDxjbWF0aD4KLQogdXNpbmcgbmFtZXNwYWNlIERPTTsKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2Uga2h0bWw7CkluZGV4OiBX
ZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjkwCmRpZmYgLXAgLXUgLXIxLjkwIFdlYkNvcmUva2h0bWwv
cmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5jcHAKLS0tIFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3Jl
bmRlcl9pbWFnZS5jcHAJMTYgRGVjIDIwMDUgMDA6MDg6MzIgLTAwMDAJMS45MAorKysgV2ViQ29y
ZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmNwcAkxOSBEZWMgMjAwNSAxODo1MjoyMCAt
MDAwMApAQCAtMzksMTIgKzM5LDYgQEAKICNpbmNsdWRlICJ4bWwvZG9tMl9ldmVudHNpbXBsLmgi
CiAjaW5jbHVkZSAiaHRtbC9odG1sX2RvY3VtZW50aW1wbC5oIgogCi0vLyBNdXN0IGluY2x1ZGUg
PGNtYXRoPiBpbnN0ZWFkIG9mIDxtYXRoLmg+IGJlY2F1c2Ugb2YgYSBidWcgaW4gdGhlCi0vLyBn
Y2MgMy4zIGxpYnJhcnkgdmVyc2lvbiBvZiA8bWF0aC5oPiB3aGVyZSBpZiB5b3UgaW5jbHVkZSBi
b3RoCi0vLyA8Y21hdGg+IGFuZCA8bWF0aC5oPiB0aGUgbWFjcm9zIG5lY2Vzc2FyeSBmb3IgZnVu
Y3Rpb25zIGxpa2UKLS8vIGlzbmFuIGFyZSBub3QgZGVmaW5lZC4KLSNpbmNsdWRlIDxjbWF0aD4K
LQogdXNpbmcgbmFtZXNwYWNlIERPTTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2lu
ZyBuYW1lc3BhY2Uga2h0bWw7CkluZGV4OiBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJf
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvcmVu
ZGVyaW5nL3JlbmRlcl90ZXh0LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMTIKZGlmZiAt
cCAtdSAtcjEuMjEyIFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl90ZXh0LmNwcAotLS0g
V2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX3RleHQuY3BwCTE3IERlYyAyMDA1IDE4OjEw
OjI2IC0wMDAwCTEuMjEyCisrKyBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfdGV4dC5j
cHAJMTkgRGVjIDIwMDUgMTg6NTI6MjEgLTAwMDAKQEAgLTIzLDM2ICsyMywyMiBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJyZW5kZXJpbmcvcmVuZGVyX3RleHQuaCIK
KyNpbmNsdWRlICJyZW5kZXJfdGV4dC5oIgogCi0jaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9j
YW52YXMuaCIKLSNpbmNsdWRlICJyZW5kZXJpbmcvcmVuZGVyX29iamVjdC5oIgotI2luY2x1ZGUg
InJlbmRlcmluZy9icmVha19saW5lcy5oIgotI2luY2x1ZGUgInhtbC9kb20yX3JhbmdlaW1wbC5o
IgotI2luY2x1ZGUgInhtbC9kb21fbm9kZWltcGwuaCIKLSNpbmNsdWRlICJ4bWwvZG9tX2RvY2lt
cGwuaCIKLSNpbmNsdWRlICJ4bWwvZG9tX3Bvc2l0aW9uLmgiCisjaW5jbHVkZSAiYnJlYWtfbGlu
ZXMuaCIKKyNpbmNsdWRlICJreG1sY29yZS9BbHdheXNJbmxpbmUuaCIKICNpbmNsdWRlICJyZW5k
ZXJfYXJlbmEuaCIKLQotI2luY2x1ZGUgIm1pc2MvbG9hZGVyLmgiCi0KLSNpbmNsdWRlICJraHRt
bF9wYXJ0LmgiCi0KLSNpbmNsdWRlIDxxcGFpbnRlci5oPgorI2luY2x1ZGUgInJlbmRlcl9ibG9j
ay5oIgorI2luY2x1ZGUgInhtbC9kb20yX3JhbmdlaW1wbC5oIgogI2luY2x1ZGUgPHFwZW4uaD4K
LSNpbmNsdWRlIDxrZGVidWcuaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLQogI2luY2x1ZGUgPHVu
aWNvZGUvdWJyay5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgotI2luY2x1ZGUgPHVuaWNv
ZGUvdXR5cGVzLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS9wYXJzZWVyci5oPgogCiAvLyNkZWZpbmUg
REVCVUdfTEFZT1VUCiAKLXVzaW5nIG5hbWVzcGFjZSBraHRtbDsKIHVzaW5nIG5hbWVzcGFjZSBE
T007CiAKK25hbWVzcGFjZSBraHRtbCB7CisKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBp
bklubGluZVRleHRCb3hEZXRhY2g7CiAjZW5kaWYKQEAgLTE4NzYsMyArMTg2Miw1IEBAIFJlZlB0
cjxET01TdHJpbmdJbXBsPiBSZW5kZXJUZXh0RnJhZ21lbnQKICAgICAgICAgcmVzdWx0ID0gcmVz
dWx0LT5zdWJzdHJpbmcoc3RhcnQoKSwgZW5kKCkpOwogICAgIHJldHVybiBSZWZQdHI8RE9NU3Ry
aW5nSW1wbD4ocmVzdWx0KTsKIH0KKworfQpJbmRleDogV2ViQ29yZS9rc3ZnMi9jc3MvU1ZHQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUv
a3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjEyCmRpZmYgLXAgLXUgLXIxLjEyIFdlYkNvcmUva3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0
b3IuY3BwCi0tLSBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAkxNiBE
ZWMgMjAwNSAwMjozMDoxMiAtMDAwMAkxLjEyCisrKyBXZWJDb3JlL2tzdmcyL2Nzcy9TVkdDU1NT
dHlsZVNlbGVjdG9yLmNwcAkxOSBEZWMgMjAwNSAxODo1MjoyMiAtMDAwMApAQCAtNTYzLDcgKzU2
Myw3IEBAIHZvaWQgS0RPTTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlTVkdQcm8KICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN2Z3N0eWxl
LT5zZXRTdHJva2VNaXRlckxpbWl0KHFSb3VuZChmKSk7CisgICAgICAgICAgICBzdmdzdHlsZS0+
c2V0U3Ryb2tlTWl0ZXJMaW1pdChscm91bmRmKGYpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgU1ZHQ1NTX1BST1BfRklMVEVSOgpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9XZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50SW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnRJbXBsLmNwcAotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGwuY3BwCTIgRGVjIDIwMDUgMjI6NDQ6Mjcg
LTAwMDAJMS45CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50SW1w
bC5jcHAJMTkgRGVjIDIwMDUgMTg6NTI6MjIgLTAwMDAKQEAgLTI2Miw5ICsyNjIsOSBAQCBRQ29s
b3IgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGw6OmNsYW1wCiAKIHZvaWQgU1ZHQW5pbWF0ZUNv
bG9yRWxlbWVudEltcGw6OmNhbGN1bGF0ZUNvbG9yKGRvdWJsZSB0aW1lLCBpbnQgJnIsIGludCAm
ZywgaW50ICZiKSBjb25zdAogewotICAgIHIgPSBxUm91bmQobV9yZWREaWZmICogdGltZSkgKyBt
X2Zyb21Db2xvci0+Y29sb3IoKS5yZWQoKTsKLSAgICBnID0gcVJvdW5kKG1fZ3JlZW5EaWZmICog
dGltZSkgKyBtX2Zyb21Db2xvci0+Y29sb3IoKS5ncmVlbigpOwotICAgIGIgPSBxUm91bmQobV9i
bHVlRGlmZiAqIHRpbWUpICsgbV9mcm9tQ29sb3ItPmNvbG9yKCkuYmx1ZSgpOworICAgIHIgPSBs
cm91bmQobV9yZWREaWZmICogdGltZSkgKyBtX2Zyb21Db2xvci0+Y29sb3IoKS5yZWQoKTsKKyAg
ICBnID0gbHJvdW5kKG1fZ3JlZW5EaWZmICogdGltZSkgKyBtX2Zyb21Db2xvci0+Y29sb3IoKS5n
cmVlbigpOworICAgIGIgPSBscm91bmQobV9ibHVlRGlmZiAqIHRpbWUpICsgbV9mcm9tQ29sb3It
PmNvbG9yKCkuYmx1ZSgpOwogfQogCiBRQ29sb3IgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGw6
OmNvbG9yKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50SW1wbC5jcHAKLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50SW1wbC5jcHAJMiBEZWMgMjAwNSAyMjo0NDoyNyAtMDAwMAkxLjkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50SW1wbC5jcHAJ
MTkgRGVjIDIwMDUgMTg6NTI6MjMgLTAwMDAKQEAgLTI2NywxNyArMjY3LDE1IEBAIHZvaWQgU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnRJbXBsOjpoYW4KICAgICAgICAgICAgIGNhbGN1bGF0ZVJv
dGF0aW9uRnJvbU1hdHJpeChxVG9NYXRyaXgsIHRvQW5nbGUsIHRvQ3gsIHRvQ3kpOwogICAgICAg
ICAgICAgY2FsY3VsYXRlUm90YXRpb25Gcm9tTWF0cml4KHFGcm9tTWF0cml4LCBmcm9tQW5nbGUs
IGZyb21DeCwgZnJvbUN5KTsKIAotICAgICAgICAgICAgaWYobV90b1JvdGF0ZVNwZWNpYWxDYXNl
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKHFSb3VuZCh0b0FuZ2xlKSA9PSAx
KQorICAgICAgICAgICAgaWYgKG1fdG9Sb3RhdGVTcGVjaWFsQ2FzZSkgeworICAgICAgICAgICAg
ICAgIGlmIChscm91bmQodG9BbmdsZSkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgdG9Bbmds
ZSA9IDAuMDsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHRvQW5n
bGUgPSAzNjAuMDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYobV9mcm9tUm90YXRl
U3BlY2lhbENhc2UpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYocVJvdW5kKGZy
b21BbmdsZSkgPT0gMSkKKyAgICAgICAgICAgIGlmIChtX2Zyb21Sb3RhdGVTcGVjaWFsQ2FzZSkg
eworICAgICAgICAgICAgICAgIGlmIChscm91bmQoZnJvbUFuZ2xlKSA9PSAxKQogICAgICAgICAg
ICAgICAgICAgICBmcm9tQW5nbGUgPSAwLjA7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBmcm9tQW5nbGUgPSAzNjAuMDsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjE0CmRpZmYgLXAgLXUgLXIxLjE0IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0FuaW1hdGlvbkVsZW1lbnRJbXBsLmNwcAotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudEltcGwuY3BwCTYgRGVjIDIwMDUgMDE6NTM6MTUgLTAwMDAJMS4xNAorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuY3BwCTE5IERlYyAyMDA1IDE4
OjUyOjIzIC0wMDAwCkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50
SW1wbDo6Y2xvc2VSZW5kZQogICAgIGlmKCFvd25lclNWRykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgb3duZXJTVkctPnRpbWVTY2hlZHVsZXIoKS0+YWRkVGltZXIodGhpcywgcVJvdW5kKGdldFN0
YXJ0VGltZSgpKSk7CisgICAgb3duZXJTVkctPnRpbWVTY2hlZHVsZXIoKS0+YWRkVGltZXIodGhp
cywgbHJvdW5kKGdldFN0YXJ0VGltZSgpKSk7CiB9CiAKIEtET006OkRPTVN0cmluZyBTVkdBbmlt
YXRpb25FbGVtZW50SW1wbDo6dGFyZ2V0QXR0cmlidXRlKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45CmRpZmYgLXAgLXUgLXIxLjkgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50SW1wbC5jcHAKLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudEltcGwuY3BwCTI2IE5vdiAyMDA1
IDIyOjE5OjEyIC0wMDAwCTEuOQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50SW1wbC5jcHAJMTkgRGVjIDIwMDUgMTg6NTI6MjQgLTAwMDAKQEAgLTE5MCw4ICsx
OTAsOCBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudEltcGw6OmJ1aWxkCiAKICAgICBn
cmFkLT5zZXRHcmFkaWVudFRyYW5zZm9ybShtYXQpOwogICAgIGdyYWQtPnNldEJvdW5kaW5nQm94
TW9kZShiYm94KTsKLSAgICBncmFkLT5zZXRHcmFkaWVudFN0YXJ0KFFQb2ludChxUm91bmQoX3gx
KSwgcVJvdW5kKF95MSkpKTsKLSAgICBncmFkLT5zZXRHcmFkaWVudEVuZChRUG9pbnQocVJvdW5k
KF94MiksIHFSb3VuZChfeTIpKSk7CisgICAgZ3JhZC0+c2V0R3JhZGllbnRTdGFydChRUG9pbnQo
bHJvdW5kZihfeDEpLCBscm91bmRmKF95MSkpKTsKKyAgICBncmFkLT5zZXRHcmFkaWVudEVuZChR
UG9pbnQobHJvdW5kZihfeDIpLCBscm91bmRmKF95MikpKTsKIH0KIAogLy8gdmltOnRzPTQ6bm9l
dApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNQpkaWZmIC1wIC11IC1yMS4x
NSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudEltcGwuY3BwCi0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudEltcGwuY3BwCTIgRGVjIDIwMDUgMjI6NDQ6Mjcg
LTAwMDAJMS4xNQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNw
cAkxOSBEZWMgMjAwNSAxODo1MjoyNCAtMDAwMApAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgU1ZH
UGF0dGVybkVsZW1lbnRJbXBsOjpub3RpZnlBdHRyaWIKICAgICBpZighbV9wYWludFNlcnZlciB8
fCAhbV9wYWludFNlcnZlci0+YWN0aXZlQ2xpZW50KCkgfHwgbV9pZ25vcmVBdHRyaWJ1dGVDaGFu
Z2VzKQogICAgICAgICByZXR1cm47CiAKLSAgICBRU2l6ZSBuZXdTaXplID0gUVNpemUocVJvdW5k
KHdpZHRoKCktPmJhc2VWYWwoKS0+dmFsdWUoKSksIHFSb3VuZChoZWlnaHQoKS0+YmFzZVZhbCgp
LT52YWx1ZSgpKSk7CisgICAgUVNpemUgbmV3U2l6ZSA9IFFTaXplKGxyb3VuZGYod2lkdGgoKS0+
YmFzZVZhbCgpLT52YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQoKS0+YmFzZVZhbCgpLT52YWx1ZSgp
KSk7CiAgICAgaWYobV90aWxlICYmIChtX3RpbGUtPnNpemUoKSA9PSBuZXdTaXplKSB8fCBuZXdT
aXplLndpZHRoKCkgPCAxIHx8IG5ld1NpemUuaGVpZ2h0KCkgPCAxKQogICAgICAgICByZXR1cm47
CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudEltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2tzdmcyL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRp
ZmYgLXAgLXUgLXIxLjggV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
SW1wbC5jcHAKLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudElt
cGwuY3BwCTI2IE5vdiAyMDA1IDIyOjE5OjE0IC0wMDAwCTEuOAorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50SW1wbC5jcHAJMTkgRGVjIDIwMDUgMTg6NTI6MjQg
LTAwMDAKQEAgLTIxNSw4ICsyMTUsOCBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudElt
cGw6OmJ1aWxkCiAKICAgICBncmFkLT5zZXRHcmFkaWVudFRyYW5zZm9ybShtYXQpOwogICAgIGdy
YWQtPnNldEJvdW5kaW5nQm94TW9kZShiYm94KTsKLSAgICBncmFkLT5zZXRHcmFkaWVudENlbnRl
cihRUG9pbnQocVJvdW5kKF9jeCksIHFSb3VuZChfY3kpKSk7Ci0gICAgZ3JhZC0+c2V0R3JhZGll
bnRGb2NhbChRUG9pbnQocVJvdW5kKF9meCksIHFSb3VuZChfZnkpKSk7CisgICAgZ3JhZC0+c2V0
R3JhZGllbnRDZW50ZXIoUVBvaW50KGxyb3VuZGYoX2N4KSwgbHJvdW5kZihfY3kpKSk7CisgICAg
Z3JhZC0+c2V0R3JhZGllbnRGb2NhbChRUG9pbnQobHJvdW5kZihfZngpLCBscm91bmRmKF9meSkp
KTsKICAgICBncmFkLT5zZXRHcmFkaWVudFJhZGl1cyhfcik7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
a3dxL0tXUUNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9r
d3EvS1dRQ1N0cmluZy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI3CmRpZmYgLXAgLXUgLXIx
LjI3IFdlYkNvcmUva3dxL0tXUUNTdHJpbmcuaAotLS0gV2ViQ29yZS9rd3EvS1dRQ1N0cmluZy5o
CTIgU2VwIDIwMDUgMTA6MDM6MTkgLTAwMDAJMS4yNworKysgV2ViQ29yZS9rd3EvS1dRQ1N0cmlu
Zy5oCTE5IERlYyAyMDA1IDE4OjUyOjI1IC0wMDAwCkBAIC02MCwxMCArNjAsNiBAQCBwdWJsaWM6
CiAgICAgUUNTdHJpbmcgJm9wZXJhdG9yKz0oY29uc3QgY2hhciAqcykgeyByZXR1cm4gYXBwZW5k
KHMpOyB9CiAgICAgUUNTdHJpbmcgJm9wZXJhdG9yKz0oY2hhciBjKSB7IHJldHVybiBhcHBlbmQo
Yyk7IH0KIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0gICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSAm
b3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJiwgY29uc3QgUUNTdHJpbmcgJik7Ci0jZW5kaWYKLQog
cHJpdmF0ZToKICAgICBib29sIHJlc2l6ZSh1aW50KTsKIH07CkluZGV4OiBXZWJDb3JlL2t3cS9L
V1FDU3RyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9L
V1FDU3RyaW5nLm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE5CmRpZmYgLXAgLXUgLXIxLjE5
IFdlYkNvcmUva3dxL0tXUUNTdHJpbmcubW0KLS0tIFdlYkNvcmUva3dxL0tXUUNTdHJpbmcubW0J
MyBPY3QgMjAwNSAyMToxMzowMSAtMDAwMAkxLjE5CisrKyBXZWJDb3JlL2t3cS9LV1FDU3RyaW5n
Lm1tCTE5IERlYyAyMDA1IDE4OjUyOjI1IC0wMDAwCkBAIC0zMDMsMTMgKzMwMywzIEBAIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBRQ1N0cmluZyAmczEsIGNvbnMKICAgICB9CiAgICAgcmV0dXJuIChz
dHJjbXAoczEsIHMyKSA9PSAwKTsKIH0KLQotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0KLW9zdHJl
YW0gJm9wZXJhdG9yIDw8KG9zdHJlYW0gJm8sIGNvbnN0IFFDU3RyaW5nICZzKQotewotICAgIGNv
bnN0IGNoYXIgKmNocyA9IHM7Ci0gICAgcmV0dXJuIG8gPDwgY2hzOwotfQotCi0jZW5kaWYKSW5k
ZXg6IFdlYkNvcmUva3dxL0tXUURhdGVUaW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva3dxL0tXUURhdGVUaW1lLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQK
ZGlmZiAtcCAtdSAtcjEuMjQgV2ViQ29yZS9rd3EvS1dRRGF0ZVRpbWUuaAotLS0gV2ViQ29yZS9r
d3EvS1dRRGF0ZVRpbWUuaAk1IEp1bCAyMDA1IDA4OjA0OjUwIC0wMDAwCTEuMjQKKysrIFdlYkNv
cmUva3dxL0tXUURhdGVUaW1lLmgJMTkgRGVjIDIwMDUgMTg6NTI6MjUgLTAwMDAKQEAgLTI5LDEw
ICsyOSw2IEBACiAjaW5jbHVkZSAiS1dRRGVmLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q0ZEYXRlLmg+CiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNl
bmRpZgotCiBjbGFzcyBRVGltZSB7CiBwdWJsaWM6CiAgICAgUVRpbWUoKSA6IHRpbWVJblNlY29u
ZHMoMCkgeyB9CkBAIC01Miw5ICs0OCw2IEBAIHByaXZhdGU6CiAgICAgQ0ZBYnNvbHV0ZVRpbWUg
dGltZUluU2Vjb25kczsgCiAgICAgCiAgICAgZnJpZW5kIGNsYXNzIFFEYXRlVGltZTsKLSNpZmRl
ZiBfS1dRX0lPU1RSRUFNXwotICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoIHN0
ZDo6b3N0cmVhbSAmLCBjb25zdCBRVGltZSAmICk7Ci0jZW5kaWYKIH07CiAKIGNsYXNzIFFEYXRl
IHsKQEAgLTY3LDEwICs2MCw2IEBAIHByaXZhdGU6CiAgICAgaW50IGRheTsKICAgICAKICAgICBm
cmllbmQgY2xhc3MgUURhdGVUaW1lOwotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0gICAgZnJpZW5k
IHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtICYsIGNvbnN0IFFEYXRlICYg
KTsKLSNlbmRpZgotCiB9OwogCiBjbGFzcyBRRGF0ZVRpbWUgewpAQCAtODYsMTAgKzc1LDYgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIENGQWJzb2x1dGVUaW1lIGRhdGVJblNlY29uZHM7Ci0K
LSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9y
PDwoIHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBRRGF0ZVRpbWUgJiApOwotI2VuZGlmCiB9OwogCiBj
bGFzcyBLV1FVSUV2ZW50VGltZSB7CkluZGV4OiBXZWJDb3JlL2t3cS9LV1FEYXRlVGltZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRRGF0ZVRpbWUubW0s
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTUKZGlmZiAtcCAtdSAtcjEuMTUgV2ViQ29yZS9rd3Ev
S1dRRGF0ZVRpbWUubW0KLS0tIFdlYkNvcmUva3dxL0tXUURhdGVUaW1lLm1tCTI5IE5vdiAyMDA1
IDE3OjE3OjMxIC0wMDAwCTEuMTUKKysrIFdlYkNvcmUva3dxL0tXUURhdGVUaW1lLm1tCTE5IERl
YyAyMDA1IDE4OjUyOjI1IC0wMDAwCkBAIC0yNCwxMCArMjQsOSBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCAi
S1dRRGF0ZVRpbWUuaCIKKwogI2ltcG9ydCA8dGltZS5oPgotI2ltcG9ydCAiV2ViQ29yZUdyYXBo
aWNzQnJpZGdlLmgiCiAKIHN0YXRpYyBDRlRpbWVab25lUmVmIHN5c3RlbVRpbWVab25lKCkKIHsK
QEAgLTEwMiw1NSArMTAxLDMgQEAgYm9vbCBLV1FVSUV2ZW50VGltZTo6dWlFdmVudFBlbmRpbmco
KSBjbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluTW9k
ZTpOU0V2ZW50VHJhY2tpbmdSdW5Mb29wTW9kZSBkZXF1ZXVlOk5PXSAhPSBuaWw7CiAqLwogfQot
Ci0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6
b3N0cmVhbSAmbywgY29uc3QgUURhdGUgJmRhdGUpCi17Ci0gICAgcmV0dXJuIG8gPDwKLSAgICAg
ICAgIlFEYXRlOiBbeXkvbW0vZGQ6ICIgPDwKLSAgICAgICAgZGF0ZS55ZWFyIDw8Ci0gICAgICAg
ICcvJyA8PAotICAgICAgICBkYXRlLm1vbnRoIDw8Ci0gICAgICAgICcvJyA8PAotICAgICAgICBk
YXRlLmRheSA8PAotICAgICAgICAnXSc7Ci19Ci0KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0gJm8sIGNvbnN0IFFUaW1lICZ0aW1lKQotewotICAgIENGR3JlZ29yaWFuRGF0
ZSBnID0gQ0ZBYnNvbHV0ZVRpbWVHZXRHcmVnb3JpYW5EYXRlKHRpbWUudGltZUluU2Vjb25kcywg
c3lzdGVtVGltZVpvbmUoKSk7Ci0gICAgcmV0dXJuIG8gPDwKLSAgICAgICAgIlFUaW1lOiBbaGg6
bW06c3M6bXMgPSAiIDw8Ci0gICAgICAgIChpbnQpZy5ob3VyIDw8Ci0gICAgICAgICc6JyA8PAot
ICAgICAgICAoaW50KWcubWludXRlIDw8Ci0gICAgICAgICc6JyA8PAotICAgICAgICAoaW50KWcu
c2Vjb25kIDw8Ci0gICAgICAgICc6JyA8PAotICAgICAgICB0aW1lLm1zZWMoKSA8PAotICAgICAg
ICAnXSc7Ci19Ci0KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm8sIGNv
bnN0IFFEYXRlVGltZSAmZGF0ZVRpbWUpCi17Ci0gICAgQ0ZHcmVnb3JpYW5EYXRlIGcgPSBDRkFi
c29sdXRlVGltZUdldEdyZWdvcmlhbkRhdGUoZGF0ZVRpbWUuZGF0ZUluU2Vjb25kcywgc3lzdGVt
VGltZVpvbmUoKSk7Ci0gICAgcmV0dXJuIG8gPDwKLSAgICAgICAgIlFEYXRlVGltZTogW3l5L21t
L2RkIGhoOm1tOnNzOm1zID0gIiA8PAotICAgICAgICAoaW50KWcueWVhciA8PAotICAgICAgICAn
LycgPDwKLSAgICAgICAgKGludClnLm1vbnRoIDw8Ci0gICAgICAgICcvJyA8PAotICAgICAgICAo
aW50KWcuZGF5IDw8Ci0gICAgICAgICcgJyA8PCAKLSAgICAgICAgKGludClnLmhvdXIgPDwKLSAg
ICAgICAgJzonIDw8Ci0gICAgICAgIChpbnQpZy5taW51dGUgPDwKLSAgICAgICAgJzonIDw8Ci0g
ICAgICAgIChpbnQpZy5zZWNvbmQgPDwKLSAgICAgICAgJzonIDw8Ci0gICAgICAgICgoaW50KShn
LnNlY29uZCAqIDEwMDApICUgMTAwMCkgPDwKLSAgICAgICAgJ10nOwotfQotCi0jZW5kaWYgLy8g
X0tXUV9JT1NUUkVBTV8KSW5kZXg6IFdlYkNvcmUva3dxL0tXUURlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FEZWYuaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xOApkaWZmIC1wIC11IC1yMS4xOCBXZWJDb3JlL2t3cS9LV1FEZWYuaAotLS0gV2ViQ29y
ZS9rd3EvS1dRRGVmLmgJNyBKdWwgMjAwNSAxNzowNjo1NCAtMDAwMAkxLjE4CisrKyBXZWJDb3Jl
L2t3cS9LV1FEZWYuaAkxOSBEZWMgMjAwNSAxODo1MjoyNSAtMDAwMApAQCAtMjcsNyArMjcsNiBA
QAogI2RlZmluZSBLV1FERUZfSF8KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUg
PGNtYXRoPgogCiAjaWZuZGVmIEtXUV9VTlNJR05FRF9UWVBFU19ERUZJTkVECiAjZGVmaW5lIEtX
UV9VTlNJR05FRF9UWVBFU19ERUZJTkVECkBAIC0zNSwxNSArMzQsMTEgQEAgdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIHVjaGFyOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwogI2VuZGlmCiAK
LXR5cGVkZWYgaW50NjRfdCBRX0lOVDY0OwotdHlwZWRlZiB1X2ludDY0X3QgUV9VSU5UNjQ7Cit0
eXBlZGVmIHVpbnQ2NF90IFFfVUlOVDY0OwogCiB0eXBlZGVmIGludCBRX0lOVDMyOwogdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgUV9VSU5UMzI7CiAKLXR5cGVkZWYgc2hvcnQgUV9JTlQxNjsKLXR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgUV9VSU5UMTY7Ci0KIHRlbXBsYXRlPGNsYXNzIFQ+CiBpbmxpbmUg
Y29uc3QgVCYga01pbiAoIGNvbnN0IFQmIGEsIGNvbnN0IFQmIGIgKSB7IHJldHVybiBhIDwgYiA/
IGEgOiBiOyB9CiAKQEAgLTUyLDggKzQ3LDYgQEAgaW5saW5lIGNvbnN0IFQmIGtNYXggKCBjb25z
dCBUJiBhLCBjb25zdAogCiAjZGVmaW5lIFFBQlMoYSkgKCgoYSkgPj0gMCkgPyAoYSkgOiAtKGEp
KQogCi1pbmxpbmUgaW50IHFSb3VuZChkb3VibGUgYSkgeyByZXR1cm4gbHJvdW5kKGEpOyB9Ci0K
ICNpZm5kZWYgVFJVRQogI2RlZmluZSBUUlVFIDEKICNlbmRpZgpAQCAtNzAsOCArNjMsNCBAQCB2
b2lkIHFXYXJuaW5nKGNvbnN0IGNoYXIgKm1zZywgLi4uKTsKIAogI2RlZmluZSBRX0FTU0VSVChh
cmcpIGRvIHt9IHdoaWxlKDApCiAKLSNpZm5kZWYgTkRFQlVHCi0jZGVmaW5lIF9LV1FfSU9TVFJF
QU1fCi0jZW5kaWYKLQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0Lmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjM3CmRpZmYgLXAgLXUgLXIxLjIzNyBXZWJDb3JlL2t3
cS9LV1FLSFRNTFBhcnQuaAotLS0gV2ViQ29yZS9rd3EvS1dRS0hUTUxQYXJ0LmgJMTAgRGVjIDIw
MDUgMTc6MTQ6MzcgLTAwMDAJMS4yMzcKKysrIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFydC5oCTE5
IERlYyAyMDA1IDE4OjUyOjI1IC0wMDAwCkBAIC0zNiwxNyArMzYsMTMgQEAKIAogI2ltcG9ydCA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvam5pX2pzb2JqZWN0Lmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9ucHJ1bnRpbWUuaD4K
LSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL05QX2pzb2JqZWN0Lmg+Ci0jaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lLmg+Ci0KICNpbXBvcnQgIktXUURpY3QuaCIKICNpbXBvcnQgIktXUUNs
aXBib2FyZC5oIgogI2ltcG9ydCAiS1dRU2Nyb2xsQmFyLmgiCiAKIGNsYXNzIEtIVE1MUGFydFBy
aXZhdGU7CiBjbGFzcyBLV1FXaW5kb3dXaWRnZXQ7CitjbGFzcyBOUE9iamVjdDsKIAogbmFtZXNw
YWNlIERPTSB7CiAgICAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudEltcGw7CkBAIC02NSw2ICs2MSwx
MCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBjbGFzcyBTYXZlZFByb3BlcnRpZXM7CiAgICAgY2xh
c3MgU2F2ZWRCdWlsdGluczsKICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247CisgICAgbmFtZXNw
YWNlIEJpbmRpbmdzIHsKKyAgICAgICAgY2xhc3MgSW5zdGFuY2U7CisgICAgICAgIGNsYXNzIFJv
b3RPYmplY3Q7CisgICAgfQogfQogCiAjaWZkZWYgX19PQkpDX18KQEAgLTIwNiw4ICsyMDYsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZENsb3NlKCk7CiAKLSAgICB2b2lkIEtXUUtIVE1M
UGFydDo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBRU3RyaW5nICZtZXNzYWdlLCAgdW5zaWdu
ZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcgJnNvdXJjZUlEKTsKLSAgICB1c2luZyBL
SFRNTFBhcnQ6OnhtbERvY0ltcGw7CisgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0
IFFTdHJpbmcgJm1lc3NhZ2UsICB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgUVN0cmlu
ZyAmc291cmNlSUQpOwogICAgIGtodG1sOjpSZW5kZXJPYmplY3QgKnJlbmRlcmVyKCkgY29uc3Q7
CiAgICAgdm9pZCBmb3JjZUxheW91dCgpOwogICAgIHZvaWQgZm9yY2VMYXlvdXRXaXRoUGFnZVdp
ZHRoUmFuZ2UoZmxvYXQgbWluUGFnZVdpZHRoLCBmbG9hdCBtYXhQYWdlV2lkdGgpOwpAQCAtMzU5
LDcgKzM1OCw3IEBAIHB1YmxpYzoKICAgICBLSlM6OkJpbmRpbmdzOjpSb290T2JqZWN0ICpiaW5k
aW5nUm9vdE9iamVjdCgpOwogICAgIAogICAgIFdlYlNjcmlwdE9iamVjdCAqd2luZG93U2NyaXB0
T2JqZWN0KCk7Ci0gICAgTlBPYmplY3QgKktXUUtIVE1MUGFydDo6d2luZG93U2NyaXB0TlBPYmpl
Y3QoKTsKKyAgICBOUE9iamVjdCAqd2luZG93U2NyaXB0TlBPYmplY3QoKTsKICAgICAKICAgICB2
b2lkIHBhcnRDbGVhcmVkSW5CZWdpbigpOwogICAgIApJbmRleDogV2ViQ29yZS9rd3EvS1dRS0hU
TUxQYXJ0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FL
SFRNTFBhcnQubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNzA1CmRpZmYgLXAgLXUgLXIxLjcw
NSBXZWJDb3JlL2t3cS9LV1FLSFRNTFBhcnQubW0KLS0tIFdlYkNvcmUva3dxL0tXUUtIVE1MUGFy
dC5tbQkxOCBEZWMgMjAwNSAyMjoxMzoyMCAtMDAwMAkxLjcwNQorKysgV2ViQ29yZS9rd3EvS1dR
S0hUTUxQYXJ0Lm1tCTE5IERlYyAyMDA1IDE4OjUyOjI5IC0wMDAwCkBAIC04MSw2ICs4MSw3IEBA
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9ydW50aW1lLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9ydW50aW1lX3Jvb3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1dlYlNjcmlwdE9i
amVjdFByaXZhdGUuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL05QX2pzb2JqZWN0Lmg+CiAK
ICNpZiBBUFBMRV9DSEFOR0VTCiAjaW1wb3J0ICJLV1FBY2NPYmplY3RDYWNoZS5oIgpJbmRleDog
V2ViQ29yZS9rd3EvS1dRTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva3dxL0tXUU1hcC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI1CmRpZmYgLXAgLXUgLXIx
LjI1IFdlYkNvcmUva3dxL0tXUU1hcC5oCi0tLSBXZWJDb3JlL2t3cS9LV1FNYXAuaAkyMiBKYW4g
MjAwMyAwMDoxMjozNSAtMDAwMAkxLjI1CisrKyBXZWJDb3JlL2t3cS9LV1FNYXAuaAkxOSBEZWMg
MjAwNSAxODo1MjoyOSAtMDAwMApAQCAtMzAsMTAgKzMwLDYgQEAKIAogI2luY2x1ZGUgIktXUU1h
cEltcGwuaCIKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0jaW5jbHVkZSA8b3N0cmVhbT4KLSNl
bmRpZgotCiB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVj4gY2xhc3MgUU1hcDsKIHRlbXBsYXRl
IDxjbGFzcyBLLCBjbGFzcyBWPiBjbGFzcyBRTWFwSXRlcmF0b3I7CiB0ZW1wbGF0ZSA8Y2xhc3Mg
SywgY2xhc3MgVj4gY2xhc3MgUU1hcENvbnN0SXRlcmF0b3I7CkBAIC0zMDAsMjcgKzI5Niw0IEBA
IHByb3RlY3RlZDoKIAogfTsKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0KLXRlbXBsYXRlPGNs
YXNzIEssIGNsYXNzIFY+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSAmc3RyZWFtLCBjb25zdCBRTWFwPEssVj4gJm0pIAotewotICAgIHVpbnQgY291bnQgPSBt
LmNvdW50KCk7Ci0gICAgc3RyZWFtIDw8ICJRTWFwOiBbc2l6ZTogIiA8PCBjb3VudCA8PCAiOyBp
dGVtczogIjsKLQotICAgIFFNYXBDb25zdEl0ZXJhdG9yPEssVj4gaXRlciA9IG0uYmVnaW4oKTsK
LSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLQlz
dHJlYW0gPDwgIigiIDw8IGl0ZXIua2V5KCkgPDwgIiwiIDw8IGl0ZXIuZGF0YSgpIDw8ICIpIjsK
LQlpZiAoaSArIDEgPCBjb3VudCkgewotCSAgICBzdHJlYW0gPDwgIiwgIjsKLQl9Ci0JKytpdGVy
OwotICAgIH0KLQotICAgIHJldHVybiBzdHJlYW0gPDwgIl0iOwotfQotCi0jZW5kaWYKLQogI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FNZW1BcnJheS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FNZW1BcnJheS5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjI3CmRpZmYgLXAgLXUgLXIxLjI3IFdlYkNvcmUva3dxL0tXUU1lbUFycmF5LmgKLS0tIFdl
YkNvcmUva3dxL0tXUU1lbUFycmF5LmgJMiBTZXAgMjAwNSAxMDowMzoxOSAtMDAwMAkxLjI3Cisr
KyBXZWJDb3JlL2t3cS9LV1FNZW1BcnJheS5oCTE5IERlYyAyMDA1IDE4OjUyOjI5IC0wMDAwCkBA
IC0yOSwxMCArMjksNiBAQAogI2luY2x1ZGUgIktXUURlZi5oIgogI2luY2x1ZGUgIktXUUFycmF5
SW1wbC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSNpbmNsdWRlIDxvc3RyZWFtPgotI2Vu
ZGlmCi0KIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBRTWVtQXJyYXkgewogcHVibGljOgogICAg
IFFNZW1BcnJheSgpIDogaW1wbChzaXplb2YoVCkpIHsgfQpAQCAtNjQsMjMgKzYwLDQgQEAgcHVi
bGljOgogCiAjZGVmaW5lIFEzTWVtQXJyYXkgUU1lbUFycmF5CiAKLSNpZmRlZiBfS1dRX0lPU1RS
RUFNXwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0gJnN0cmVhbSwgY29uc3QgUU1lbUFycmF5PFQ+JmEpCi17Ci0gICAgc3Ry
ZWFtIDw8ICJRTWVtQXJyYXk6IFtzaXplOiAiIDw8IGEuc2l6ZSgpIDw8ICI7IGl0ZW1zOiAiOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHN0
cmVhbSA8PCBhW2ldOwotCWlmIChpIDwgYS5zaXplKCkgLSAxKSB7Ci0JICAgIHN0cmVhbSA8PCAi
LCAiOwotCX0KLSAgICB9Ci0gICAgc3RyZWFtIDw8ICJdIjsKLQotICAgIHJldHVybiBzdHJlYW07
Ci19Ci0KLSNlbmRpZgotCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVBvaW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FQb2ludC5tbSx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4xMgpkaWZmIC1wIC11IC1yMS4xMiBXZWJDb3JlL2t3cS9LV1FQ
b2ludC5tbQotLS0gV2ViQ29yZS9rd3EvS1dRUG9pbnQubW0JMyBPY3QgMjAwNSAyMToxMzowNyAt
MDAwMAkxLjEyCisrKyBXZWJDb3JlL2t3cS9LV1FQb2ludC5tbQkxOSBEZWMgMjAwNSAxODo1Mjoy
OSAtMDAwMApAQCAtNzAsMTAgKzcwLDMgQEAgY29uc3QgUVBvaW50IG9wZXJhdG9yKihjb25zdCBR
UG9pbnQgJnAsIAogewogICAgIHJldHVybiBRUG9pbnQoKGludCkocC54Q29vcmQgKiBzKSwgKGlu
dCkocC55Q29vcmQgKiBzKSk7CiB9Ci0KLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotc3RkOjpvc3Ry
ZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmbywgY29uc3QgUVBvaW50ICZwKQotewotICAg
IHJldHVybiBvIDw8ICJRUG9pbnQ6IFt4OiAiIDw8IHAueCgpIDw8ICI7IGg6ICIgPDwgcC55KCkg
PDwgIl0iOwotfQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FQb2ludEFycmF5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVBvaW50QXJyYXkuaCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMApkaWZmIC1wIC11IC1yMS4zMCBXZWJDb3JlL2t3cS9L
V1FQb2ludEFycmF5LmgKLS0tIFdlYkNvcmUva3dxL0tXUVBvaW50QXJyYXkuaAk0IERlYyAyMDA1
IDExOjM1OjA5IC0wMDAwCTEuMzAKKysrIFdlYkNvcmUva3dxL0tXUVBvaW50QXJyYXkuaAkxOSBE
ZWMgMjAwNSAxODo1MjoyOSAtMDAwMApAQCAtMjgsMTAgKzI4LDYgQEAKIAogI2luY2x1ZGUgIktX
UURlZi5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jZW5k
aWYKLQogI2luY2x1ZGUgIktXUU1lbUFycmF5LmgiCiAKIC8vIHdvcmthcm91bmQgZm9yIDxyZGFy
Oi8vcHJvYmxlbS80Mjk0NjI1PgpAQCAtOTQsMTIgKzkwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cG9pbnQodWludCwgaW50ICosIGludCAqKTsKICAgICB2b2lkIHNldFBvaW50KHVpbnQsIGludCwg
aW50KTsKICAgICBib29sIHNldFBvaW50cyhpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KTsKLSAgICBib29sIHNldFBvaW50cyggaW50IG5Qb2ludHMsIGNvbnN0IGlu
dCAqcG9pbnRzICk7Ci0gICAgCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSAgICBmcmllbmQgc3Rk
Ojpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBRUG9pbnQgJik7Ci0j
ZW5kaWYKLSAgICAKKyAgICBib29sIHNldFBvaW50cyhpbnQgblBvaW50cywgY29uc3QgaW50ICpw
b2ludHMpOyAgICAKIH07CiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9rd3EvS1dRUHRyTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FQdHJMaXN0Lmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzEKZGlmZiAtcCAtdSAtcjEuMzEgV2ViQ29yZS9rd3Ev
S1dRUHRyTGlzdC5oCi0tLSBXZWJDb3JlL2t3cS9LV1FQdHJMaXN0LmgJMTAgRGVjIDIwMDUgMjA6
MzQ6NDMgLTAwMDAJMS4zMQorKysgV2ViQ29yZS9rd3EvS1dRUHRyTGlzdC5oCTE5IERlYyAyMDA1
IDE4OjUyOjMwIC0wMDAwCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUgIktXUUNvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJLV1FMaXN0SW1wbC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8K
LSNpbmNsdWRlIDxvc3RyZWFtPgotI2VuZGlmCi0KIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBR
UHRyTGlzdEl0ZXJhdG9yOwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUVB0ckxpc3QgOiBw
dWJsaWMgUVB0ckNvbGxlY3Rpb24gewpAQCAtMTE0LDMzICsxMTAsNCBAQCBwcml2YXRlOgogI2Rl
ZmluZSBRM1B0ckxpc3QgUVB0ckxpc3QKICNkZWZpbmUgUTNQdHJMaXN0SXRlcmF0b3IgUVB0ckxp
c3RJdGVyYXRvcgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotdGVtcGxhdGU8Y2xhc3MgVD4K
LWlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzdHJlYW0sIGNv
bnN0IFFQdHJMaXN0PFQ+ICZsKQotewotICAgIFFQdHJMaXN0SXRlcmF0b3I8VD4gaXRlcihsKTsK
LSAgICB1bnNpZ25lZCBjb3VudCA9IGwuY291bnQoKTsKLQotICAgIHN0cmVhbSA8PCAiUVB0ckxp
c3Q6IFtzaXplOiAiIDw8IGwuY291bnQoKSA8PCAiOyBpdGVtczogIjsKLQotICAgIC8vIHByaW50
IGZpcnN0Ci0gICAgaWYgKGNvdW50ICE9IDApIHsKLQlzdHJlYW0gPDwgKml0ZXIuY3VycmVudCgp
OwotCSsraXRlcjsKLQktLWNvdW50OwotICAgIH0KLSAgICAKLSAgICAvLyBwcmludCByZXN0Ci0g
ICAgd2hpbGUgKGNvdW50ICE9IDApIHsKLQlzdHJlYW0gPDwgIiwgIiA8PCAqaXRlci5jdXJyZW50
KCk7Ci0JKytpdGVyOwotCS0tY291bnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0cmVhbSA8PCAi
XSI7Ci19Ci0KLSNlbmRpZgotCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUva3dxL0tXUVB0clN0YWNr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVB0clN0YWNr
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYKZGlmZiAtcCAtdSAtcjEuMTYgV2ViQ29yZS9r
d3EvS1dRUHRyU3RhY2suaAotLS0gV2ViQ29yZS9rd3EvS1dRUHRyU3RhY2suaAkyIFNlcCAyMDA1
IDEwOjAzOjIwIC0wMDAwCTEuMTYKKysrIFdlYkNvcmUva3dxL0tXUVB0clN0YWNrLmgJMTkgRGVj
IDIwMDUgMTg6NTI6MzAgLTAwMDAKQEAgLTQ3LDI3ICs0Nyw0IEBAIHB1YmxpYzoKIAogI2RlZmlu
ZSBRM1B0clN0YWNrIFFQdHJTdGFjawogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLQotdGVtcGxh
dGU8Y2xhc3MgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
ICZzdHJlYW0sIGNvbnN0IFFQdHJTdGFjazxUPiZzKQotewotICAgIHN0cmVhbSA8PCAiUVB0clN0
YWNrOiBbc2l6ZTogIiA8PCBzLmNvdW50KCkgPDwgIjsgaXRlbXM6ICI7Ci0KLSAgICBRUHRyU3Rh
Y2s8VD4gdG1wKHMpOwotCi0gICAgd2hpbGUgKCF0bXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN0
cmVhbSA8PCAqdG1wLnBvcCgpOwotCWlmICh0bXAuY291bnQoKSA+IDApIHsKLQkgICAgc3RyZWFt
IDw8ICIsICI7Ci0JfQotICAgIH0KLQotICAgIHN0cmVhbSA8PCAiXSI7Ci0KLSAgICByZXR1cm4g
c3RyZWFtOwotfQotCi0jZW5kaWYKLQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FQdHJW
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRUHRy
VmVjdG9yLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQKZGlmZiAtcCAtdSAtcjEuMjQgV2Vi
Q29yZS9rd3EvS1dRUHRyVmVjdG9yLmgKLS0tIFdlYkNvcmUva3dxL0tXUVB0clZlY3Rvci5oCTIw
IE5vdiAyMDA0IDAyOjI0OjA4IC0wMDAwCTEuMjQKKysrIFdlYkNvcmUva3dxL0tXUVB0clZlY3Rv
ci5oCTE5IERlYyAyMDA1IDE4OjUyOjMwIC0wMDAwCkBAIC0zMSwxMCArMzEsNiBAQAogCiAjaW5j
bHVkZSAiS1dRVmVjdG9ySW1wbC5oIgogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSNpbmNsdWRl
IDxvc3RyZWFtPgotI2VuZGlmCi0KIGNsYXNzIFFHVmVjdG9yIDogcHVibGljIFFQdHJDb2xsZWN0
aW9uCiB7CiBwdWJsaWM6CkBAIC03MSwyNCArNjcsNCBAQCBwdWJsaWM6CiAgICAgS1dRVmVjdG9y
SW1wbCBpbXBsOwogfTsKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0KLXRlbXBsYXRlPGNsYXNz
IFQ+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmc3RyZWFt
LCBjb25zdCBRUHRyVmVjdG9yPFQ+ICZ2KQotewotICAgIHVpbnQgaSA9IDA7Ci0gICAgdWludCBj
b3VudCA9IHYuY291bnQoKTsKLQotICAgIHN0cmVhbSA8PCAiUVB0clZlY3RvcjogW3NpemU6ICIg
PDwgY291bnQgPDwgIjsgaXRlbXM6ICI7Ci0KLSAgICB3aGlsZShpIDwgY291bnQgKSB7Ci0Jc3Ry
ZWFtIDw8ICp2W2ldIDw8ICIsICI7Ci0JKytpOwotICAgIH0KLQotICAgIHJldHVybiBzdHJlYW0g
PDwgIl0iOwotfQotCi0jZW5kaWYKLQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2t3cS9LV1FSZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVJlY3QuaCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNApkaWZmIC1wIC11IC1yMS4zNCBXZWJDb3JlL2t3cS9L
V1FSZWN0LmgKLS0tIFdlYkNvcmUva3dxL0tXUVJlY3QuaAkxIE5vdiAyMDA1IDE5OjA0OjIzIC0w
MDAwCTEuMzQKKysrIFdlYkNvcmUva3dxL0tXUVJlY3QuaAkxOSBEZWMgMjAwNSAxODo1MjozMCAt
MDAwMApAQCAtOTcsMTAgKzk3LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgb3BlcmF0b3IgQ0dS
ZWN0KCkgY29uc3Q7CiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotICAgIGZyaWVuZCBzdGQ6Om9z
dHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICYsIGNvbnN0IFFSZWN0ICYpOwotI2VuZGlm
Ci0KIHByaXZhdGU6CiAgICAgaW50IHhwOwogICAgIGludCB5cDsKSW5kZXg6IFdlYkNvcmUva3dx
L0tXUVJlY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tX
UVJlY3QubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcKZGlmZiAtcCAtdSAtcjEuMTcgV2Vi
Q29yZS9rd3EvS1dRUmVjdC5tbQotLS0gV2ViQ29yZS9rd3EvS1dRUmVjdC5tbQkzIE9jdCAyMDA1
IDIxOjEzOjA4IC0wMDAwCTEuMTcKKysrIFdlYkNvcmUva3dxL0tXUVJlY3QubW0JMTkgRGVjIDIw
MDUgMTg6NTI6MzAgLTAwMDAKQEAgLTIwOCwxMCArMjA4LDMgQEAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFFSZWN0ICZhLCBjb25zdCBRUgogewogICAgIHJldHVybiAhKGEgPT0gYik7CiB9Ci0KLSNp
ZmRlZiBfS1dRX0lPU1RSRUFNXwotc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSAmbywgY29uc3QgUVJlY3QgJnIpCi17Ci0gICAgcmV0dXJuIG8gPDwgIlFSZWN0OiBbbGVmdDog
IiA8PCByLmxlZnQgKCkgPDwgIjsgdG9wOiAiIDw8IHIudG9wKCkgPDwgIjsgcmlnaHQ6ICIgPDwg
ci5yaWdodCgpIDw8ICI7IGJvdHRvbTogIiA8PCByLmJvdHRvbSgpIDw8ICJdIjsKLX0KLSNlbmRp
ZgpJbmRleDogV2ViQ29yZS9rd3EvS1dRU2l6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJDb3JlL2t3cS9LV1FTaXplLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjIKZGlm
ZiAtcCAtdSAtcjEuMjIgV2ViQ29yZS9rd3EvS1dRU2l6ZS5oCi0tLSBXZWJDb3JlL2t3cS9LV1FT
aXplLmgJMTIgT2N0IDIwMDUgMDA6NDQ6NTMgLTAwMDAJMS4yMgorKysgV2ViQ29yZS9rd3EvS1dR
U2l6ZS5oCTE5IERlYyAyMDA1IDE4OjUyOjMwIC0wMDAwCkBAIC0yOCwxMCArMjgsNiBAQAogCiAj
aW5jbHVkZSAiS1dRRGVmLmgiCiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotI2luY2x1ZGUgPGlv
c2Z3ZD4KLSNlbmRpZgotCiAvLyB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNDI5NDYy
NT4KICNpZiAhIF9fTFA2NF9fICYmICEgTlNfQlVJTERfMzJfTElLRV82NAogI3VuZGVmIE5TR0VP
TUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCkBAIC02OSwxMCArNjUsNiBAQCBw
dWJsaWM6CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRU2l6ZSAmLCBjb25zdCBR
U2l6ZSAmKTsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFTaXplICYsIGNvbnN0
IFFTaXplICYpOwogCi0jaWZkZWYgX0tXUV9JT1NUUkVBTV8KLSAgICBmcmllbmQgc3RkOjpvc3Ry
ZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBRU2l6ZSAmKTsKLSNlbmRpZgot
CiBwcml2YXRlOgogICAgIGludCB3OwogICAgIGludCBoOwpJbmRleDogV2ViQ29yZS9rd3EvS1dR
U2l6ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRU2l6
ZS5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMQpkaWZmIC1wIC11IC1yMS4xMSBXZWJDb3Jl
L2t3cS9LV1FTaXplLm1tCi0tLSBXZWJDb3JlL2t3cS9LV1FTaXplLm1tCTMgT2N0IDIwMDUgMjE6
MTM6MDkgLTAwMDAJMS4xMQorKysgV2ViQ29yZS9rd3EvS1dRU2l6ZS5tbQkxOSBEZWMgMjAwNSAx
ODo1MjozMCAtMDAwMApAQCAtODAsMTAgKzgwLDMgQEAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFT
aXplICZhLCBjb25zdCBRUwogewogICAgIHJldHVybiBhLncgIT0gYi53IHx8IGEuaCAhPSBiLmg7
CiB9Ci0KLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0
ZDo6b3N0cmVhbSAmbywgY29uc3QgUVNpemUgJnMpCi17Ci0gICAgcmV0dXJuIG8gPDwgIlFTaXpl
OiBbdzogIiA8PCBzLndpZHRoKCkgPDwgIjsgaDogIiA8PCBzLmhlaWdodCgpIDw8ICJdIjsKLX0K
LSNlbmRpZgpJbmRleDogV2ViQ29yZS9rd3EvS1dRVmFsdWVMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVZhbHVlTGlzdC5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjM0CmRpZmYgLXAgLXUgLXIxLjM0IFdlYkNvcmUva3dxL0tXUVZhbHVlTGlzdC5o
Ci0tLSBXZWJDb3JlL2t3cS9LV1FWYWx1ZUxpc3QuaAkyIFNlcCAyMDA1IDEwOjAzOjIwIC0wMDAw
CTEuMzQKKysrIFdlYkNvcmUva3dxL0tXUVZhbHVlTGlzdC5oCTE5IERlYyAyMDA1IDE4OjUyOjMw
IC0wMDAwCkBAIC0yOSwxMCArMjksNiBAQAogI2luY2x1ZGUgIktXUURlZi5oIgogI2luY2x1ZGUg
IktXUVZhbHVlTGlzdEltcGwuaCIKIAotI2lmZGVmIF9LV1FfSU9TVFJFQU1fCi0jaW5jbHVkZSA8
b3N0cmVhbT4KLSNlbmRpZgotCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUVZhbHVlTGlzdDsK
IHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjsKIApAQCAt
MTQ5LDI4ICsxNDUsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFWYWx1ZUxpc3Q8
CiAgICAgcmV0dXJuIGEuaW1wbC5pc0VxdWFsKGIuaW1wbCwgUVZhbHVlTGlzdDxUPjo6bm9kZXNF
cXVhbCk7CiB9CiAKLSNpZmRlZiBfS1dRX0lPU1RSRUFNXwotCi10ZW1wbGF0ZTxjbGFzcyBUPgot
aW5saW5lIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm8sIGNvbnN0IFFW
YWx1ZUxpc3Q8VD4mcCkKLXsKLSAgICBvIDw8Ci0gICAgICAgICJRVmFsdWVMaXN0OiBbc2l6ZTog
IiA8PAotICAgICAgICAoUV9VSU5UMzIpcC5jb3VudCgpIDw8Ci0gICAgICAgICI7IGl0ZW1zOiAi
OwotICAgICAgICBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxUPiBpdCA9IHAuYmVnaW4oKTsKLSAg
ICAgICAgd2hpbGUgKGl0ICE9IHAuZW5kKCkpIHsKLSAgICAgICAgICAgIG8gPDwgKml0OwotICAg
ICAgICAgICAgaWYgKCsraXQgIT0gcC5lbmQoKSkgewotICAgICAgICAgICAgICAgIG8gPDwgIiwg
IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBvIDw8ICJdIjsKLSAgICByZXR1
cm4gbzsKLX0KLQotI2VuZGlmCi0KICNkZWZpbmUgUTNWYWx1ZUxpc3QgUVZhbHVlTGlzdAogI2Rl
ZmluZSBRM1ZhbHVlTGlzdEl0ZXJhdG9yIFFWYWx1ZUxpc3RJdGVyYXRvcgogI2RlZmluZSBRM1Zh
bHVlTGlzdENvbnN0SXRlcmF0b3IgUVZhbHVlTGlzdENvbnN0SXRlcmF0b3IK
</data>
<flag name="review"
          id="1042"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>